diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1b5604b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.sass-cache/ +node_modules/ diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..855728c --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,67 @@ +module.exports = function(grunt) { + + // Project configuration. + grunt.initConfig({ + pkg : grunt.file.readJSON('package.json'), + uglify : { + options : { + banner : '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' + }, + build : { + src : 'dist/<%= pkg.name %>.js', + dest : 'dist/<%= pkg.name %>.min.js' + } + }, + jshint : { + all : ['Gruntfile.js', 'src/*.js'] + }, + requirejs : { + compile : { + options : { + almond : true, + wrap : { + startFile : 'build/start.frag', + endFile : 'build/end.frag' + }, + "baseUrl" : "src", + "name" : "quagga", + "out" : "dist/quagga.js", + "include" : ['quagga'], + "optimize" : "none", + "findNestedDependencies" : true, + "skipSemiColonInsertion" : true, + + "shim" : { + "typedefs" : { + "deps" : [], + "exports" : "typedefs" + }, + "glMatrix" : { + "deps" : ["typedefs"], + "exports" : "glMatrix" + }, + "glMatrixAddon" : { + "deps" : ["glMatrix"], + "exports" : "glMatrixAddon" + } + }, + + "paths" : { + "typedefs" : "typedefs", + "glMatrix" : "vendor/glMatrix", + "glMatrixAddon" : "glMatrixAddon" + } + } + } + } + }); + + // Load the plugin that provides the "uglify" task. + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + + grunt.loadNpmTasks('grunt-requirejs'); + // Default task(s). + grunt.registerTask('default', ['jshint', 'requirejs', 'uglify']); + +}; \ No newline at end of file diff --git a/README.md b/README.md index a55452a..69413f2 100644 --- a/README.md +++ b/README.md @@ -17,12 +17,10 @@ In order to take full advantage of quaggaJS, the browser needs to support the `g In cases where real-time decoding is not needed, or the platform does not support `getUserMedia` QuaggaJS is also capable of decoding image-files. -## Installation - -Just clone the repository and include `quagga.min.js` in your project. The code uses [requirejs][requirejs] for dependency management. - ## Usage +Just download the pre-built version `quagga.min.js` from the `dist` folder and include in your project. + The library exposes the following API ### quagga.init(config, callback) @@ -59,6 +57,10 @@ quagga.decodeSingle({ }); ``` +## Build it yourself + +In case you want to build the library directly from the source code, just run `npm install` follewed by the `grunt` task. This places two files in the `dist` folder, of which `quagga.min.js` is the minified version. + [zxing_github]: https://github.com/zxing/zxing [teaser_left]: https://github.com/serratus/quaggaJS/blob/master/doc/img/mobile-located.png [teaser_right]: https://github.com/serratus/quaggaJS/blob/master/doc/img/mobile-detected.png diff --git a/build/end.frag b/build/end.frag new file mode 100644 index 0000000..c1167bb --- /dev/null +++ b/build/end.frag @@ -0,0 +1,2 @@ + return require('quagga'); +})); \ No newline at end of file diff --git a/build/start.frag b/build/start.frag new file mode 100644 index 0000000..eaf2a21 --- /dev/null +++ b/build/start.frag @@ -0,0 +1,13 @@ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + //Allow using this built library as an AMD module + //in another project. That other project will only + //see this AMD call, not the internal modules in + //the closure below. + define([], factory); + } else { + //Browser globals case. Just assign the + //result to a property on the global. + root.Quagga = factory(); + } +}(this, function () { \ No newline at end of file diff --git a/config.rb b/config.rb new file mode 100644 index 0000000..e803c3e --- /dev/null +++ b/config.rb @@ -0,0 +1,27 @@ + +# Require any additional compass plugins here. + + +# Set this to the root of your project when deployed: +http_path = "/" +css_dir = "css" +sass_dir = "sass" +images_dir = "img" +javascripts_dir = "js" +fonts_dir="fonts" + +# You can select your preferred output style here (can be overridden via the command line): +# output_style = :expanded or :nested or :compact or :compressed + +# To enable relative paths to assets via compass helper functions. Uncomment: +# relative_assets = true + +# To disable debugging comments that display the original location of your selectors. Uncomment: +# line_comments = false + + +# If you prefer the indented syntax, you might want to regenerate this +# project again passing --syntax sass, or you can uncomment this: +# preferred_syntax = :sass +# and then run: +# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass diff --git a/dist/quagga.js b/dist/quagga.js new file mode 100644 index 0000000..571c115 --- /dev/null +++ b/dist/quagga.js @@ -0,0 +1,7203 @@ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + //Allow using this built library as an AMD module + //in another project. That other project will only + //see this AMD call, not the internal modules in + //the closure below. + define([], factory); + } else { + //Browser globals case. Just assign the + //result to a property on the global. + root.Quagga = factory(); + } +}(this, function () {/** + * @license almond 0.2.9 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/almond for details + */ +//Going sloppy to avoid 'use strict' string cost, but strict practices should +//be followed. +/*jslint sloppy: true */ +/*global setTimeout: false */ + +var requirejs, require, define; +(function (undef) { + var main, req, makeMap, handlers, + defined = {}, + waiting = {}, + config = {}, + defining = {}, + hasOwn = Object.prototype.hasOwnProperty, + aps = [].slice, + jsSuffixRegExp = /\.js$/; + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @returns {String} normalized name + */ + function normalize(name, baseName) { + var nameParts, nameSegment, mapValue, foundMap, lastIndex, + foundI, foundStarMap, starI, i, j, part, + baseParts = baseName && baseName.split("/"), + map = config.map, + starMap = (map && map['*']) || {}; + + //Adjust any relative paths. + if (name && name.charAt(0) === ".") { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + //Convert baseName to array, and lop off the last part, + //so that . matches that "directory" and not name of the baseName's + //module. For instance, baseName of "one/two/three", maps to + //"one/two/three.js", but we want the directory, "one/two" for + //this normalization. + baseParts = baseParts.slice(0, baseParts.length - 1); + name = name.split('/'); + lastIndex = name.length - 1; + + // Node .js allowance: + if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { + name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); + } + + name = baseParts.concat(name); + + //start trimDots + for (i = 0; i < name.length; i += 1) { + part = name[i]; + if (part === ".") { + name.splice(i, 1); + i -= 1; + } else if (part === "..") { + if (i === 1 && (name[2] === '..' || name[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + name.splice(i - 1, 2); + i -= 2; + } + } + } + //end trimDots + + name = name.join("/"); + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if ((baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join("/"); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = map[baseParts.slice(0, j).join('/')]; + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = mapValue[nameSegment]; + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && starMap[nameSegment]) { + foundStarMap = starMap[nameSegment]; + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function makeRequire(relName, forceSync) { + return function () { + //A version of a require function that passes a moduleName + //value for items that may need to + //look up paths relative to the moduleName + return req.apply(undef, aps.call(arguments, 0).concat([relName, forceSync])); + }; + } + + function makeNormalize(relName) { + return function (name) { + return normalize(name, relName); + }; + } + + function makeLoad(depName) { + return function (value) { + defined[depName] = value; + }; + } + + function callDep(name) { + if (hasProp(waiting, name)) { + var args = waiting[name]; + delete waiting[name]; + defining[name] = true; + main.apply(undef, args); + } + + if (!hasProp(defined, name) && !hasProp(defining, name)) { + throw new Error('No ' + name); + } + return defined[name]; + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Makes a name map, normalizing the name, and using a plugin + * for normalization if necessary. Grabs a ref to plugin + * too, as an optimization. + */ + makeMap = function (name, relName) { + var plugin, + parts = splitPrefix(name), + prefix = parts[0]; + + name = parts[1]; + + if (prefix) { + prefix = normalize(prefix, relName); + plugin = callDep(prefix); + } + + //Normalize according + if (prefix) { + if (plugin && plugin.normalize) { + name = plugin.normalize(name, makeNormalize(relName)); + } else { + name = normalize(name, relName); + } + } else { + name = normalize(name, relName); + parts = splitPrefix(name); + prefix = parts[0]; + name = parts[1]; + if (prefix) { + plugin = callDep(prefix); + } + } + + //Using ridiculous property names for space reasons + return { + f: prefix ? prefix + '!' + name : name, //fullName + n: name, + pr: prefix, + p: plugin + }; + }; + + function makeConfig(name) { + return function () { + return (config && config.config && config.config[name]) || {}; + }; + } + + handlers = { + require: function (name) { + return makeRequire(name); + }, + exports: function (name) { + var e = defined[name]; + if (typeof e !== 'undefined') { + return e; + } else { + return (defined[name] = {}); + } + }, + module: function (name) { + return { + id: name, + uri: '', + exports: defined[name], + config: makeConfig(name) + }; + } + }; + + main = function (name, deps, callback, relName) { + var cjsModule, depName, ret, map, i, + args = [], + callbackType = typeof callback, + usingExports; + + //Use name if no relName + relName = relName || name; + + //Call the callback to define the module, if necessary. + if (callbackType === 'undefined' || callbackType === 'function') { + //Pull out the defined dependencies and pass the ordered + //values to the callback. + //Default to [require, exports, module] if no deps + deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; + for (i = 0; i < deps.length; i += 1) { + map = makeMap(deps[i], relName); + depName = map.f; + + //Fast path CommonJS standard dependencies. + if (depName === "require") { + args[i] = handlers.require(name); + } else if (depName === "exports") { + //CommonJS module spec 1.1 + args[i] = handlers.exports(name); + usingExports = true; + } else if (depName === "module") { + //CommonJS module spec 1.1 + cjsModule = args[i] = handlers.module(name); + } else if (hasProp(defined, depName) || + hasProp(waiting, depName) || + hasProp(defining, depName)) { + args[i] = callDep(depName); + } else if (map.p) { + map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); + args[i] = defined[depName]; + } else { + throw new Error(name + ' missing ' + depName); + } + } + + ret = callback ? callback.apply(defined[name], args) : undefined; + + if (name) { + //If setting exports via "module" is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + if (cjsModule && cjsModule.exports !== undef && + cjsModule.exports !== defined[name]) { + defined[name] = cjsModule.exports; + } else if (ret !== undef || !usingExports) { + //Use the return value from the function. + defined[name] = ret; + } + } + } else if (name) { + //May just be an object definition for the module. Only + //worry about defining if have a module name. + defined[name] = callback; + } + }; + + requirejs = require = req = function (deps, callback, relName, forceSync, alt) { + if (typeof deps === "string") { + if (handlers[deps]) { + //callback in this case is really relName + return handlers[deps](callback); + } + //Just return the module wanted. In this scenario, the + //deps arg is the module name, and second arg (if passed) + //is just the relName. + //Normalize module name, if it contains . or .. + return callDep(makeMap(deps, callback).f); + } else if (!deps.splice) { + //deps is a config object, not an array. + config = deps; + if (config.deps) { + req(config.deps, config.callback); + } + if (!callback) { + return; + } + + if (callback.splice) { + //callback is an array, which means it is a dependency list. + //Adjust args if there are dependencies + deps = callback; + callback = relName; + relName = null; + } else { + deps = undef; + } + } + + //Support require(['a']) + callback = callback || function () {}; + + //If relName is a function, it is an errback handler, + //so remove it. + if (typeof relName === 'function') { + relName = forceSync; + forceSync = alt; + } + + //Simulate async callback; + if (forceSync) { + main(undef, deps, callback, relName); + } else { + //Using a non-zero value because of concern for what old browsers + //do, and latest browsers "upgrade" to 4 if lower value is used: + //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: + //If want a value immediately, use require('id') instead -- something + //that works in almond on the global level, but not guaranteed and + //unlikely to work in other AMD implementations. + setTimeout(function () { + main(undef, deps, callback, relName); + }, 4); + } + + return req; + }; + + /** + * Just drops the config on the floor, but returns req in case + * the config return value is used. + */ + req.config = function (cfg) { + return req(cfg); + }; + + /** + * Expose module registry for debugging and tooling + */ + requirejs._defined = defined; + + define = function (name, deps, callback) { + + //This module may not have dependencies + if (!deps.splice) { + //deps is not an array, so probably means + //an object literal or factory function for + //the value. Adjust args. + callback = deps; + deps = []; + } + + if (!hasProp(defined, name) && !hasProp(waiting, name)) { + waiting[name] = [name, deps, callback]; + } + }; + + define.amd = { + jQuery: true + }; +}()); + +define("almond", function(){}); + +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define( + 'barcode_reader',[],function() { + + + function BarcodeReader() { + this._row = []; + return this; + } + + BarcodeReader.prototype._nextUnset = function(line, start) { + var i; + + if (start === undefined) { + start = 0; + } + for (i = start; i < line.length; i++) { + if (!line[i]) { + return i; + } + } + return line.length; + }; + + BarcodeReader.prototype._matchPattern = function(counter, code) { + var i, + error = 0; + + for (i = 0; i < counter.length; i++) { + error += Math.abs(code[i] - counter[i]); + } + return error; + }; + + BarcodeReader.prototype._nextSet = function(line) { + var i; + + for (i = 0; i < line.length; i++) { + if (line[i]) { + return i; + } + } + return line.length; + }; + + BarcodeReader.prototype._normalize = function(counter, modulo) { + var i, + self = this, + sum = 0, + ratio, + numOnes = 0, + normalized = [], + norm = 0; + + if (!modulo) { + modulo = self.MODULO; + } + for (i = 0; i < counter.length; i++) { + if (counter[i] === 1) { + numOnes++; + } else { + sum += counter[i]; + } + } + ratio = sum / (modulo - numOnes); + for (i = 0; i < counter.length; i++) { + norm = counter[i] === 1 ? counter[i] : counter[i] / ratio; + normalized.push(norm); + } + return normalized; + }; + + BarcodeReader.prototype._matchTrace = function(cmpCounter, epsilon) { + var counter = [], + i, + self = this, + offset = self._nextSet(self._row), + isWhite = !self._row[offset], + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : 0 + }, + error; + + if (cmpCounter) { + for ( i = 0; i < cmpCounter.length; i++) { + counter.push(0); + } + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + error = self._matchPattern(counter, cmpCounter); + + if (error < epsilon) { + bestMatch.start = i - offset; + bestMatch.end = i; + bestMatch.counter = counter; + return bestMatch; + } else { + return null; + } + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + } else { + counter.push(0); + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + counterPos++; + counter.push(0); + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + } + + // if cmpCounter was not given + bestMatch.start = offset; + bestMatch.end = self._row.length - 1; + bestMatch.counter = counter; + return bestMatch; + }; + + BarcodeReader.prototype.decodePattern = function(pattern) { + var self = this, + result; + + self._row = pattern; + result = self._decode(); + if (result === null) { + self._row.reverse(); + result = self._decode(); + if (result) { + result.direction = BarcodeReader.DIRECTION.REVERSE; + result.start = self._row.length - result.start; + result.end = self._row.length - result.end; + } + } else { + result.direction = BarcodeReader.DIRECTION.FORWARD; + } + return result; + }; + + BarcodeReader.DIRECTION = { + FORWARD : 1, + REVERSE : -1 + }; + + BarcodeReader.Exception = { + StartNotFoundException : "Start-Info was not found!", + CodeNotFoundException : "Code could not be found!", + PatternNotFoundException : "Pattern could not be found!" + }; + + return (BarcodeReader); + } +); + +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define( + 'code_128_reader',[ + "./barcode_reader" + ], + function(BarcodeReader) { + + + function Code128Reader() { + BarcodeReader.call(this); + } + + var properties = { + CODE_SHIFT : {value: 98}, + CODE_C : {value: 99}, + CODE_B : {value: 100}, + CODE_A : {value: 101}, + START_CODE_A : {value: 103}, + START_CODE_B : {value: 104}, + START_CODE_C : {value: 105}, + STOP_CODE : {value: 106}, + MODULO : {value: 11}, + CODE_PATTERN : {value: [ + [2, 1, 2, 2, 2, 2], + [2, 2, 2, 1, 2, 2], + [2, 2, 2, 2, 2, 1], + [1, 2, 1, 2, 2, 3], + [1, 2, 1, 3, 2, 2], + [1, 3, 1, 2, 2, 2], + [1, 2, 2, 2, 1, 3], + [1, 2, 2, 3, 1, 2], + [1, 3, 2, 2, 1, 2], + [2, 2, 1, 2, 1, 3], + [2, 2, 1, 3, 1, 2], + [2, 3, 1, 2, 1, 2], + [1, 1, 2, 2, 3, 2], + [1, 2, 2, 1, 3, 2], + [1, 2, 2, 2, 3, 1], + [1, 1, 3, 2, 2, 2], + [1, 2, 3, 1, 2, 2], + [1, 2, 3, 2, 2, 1], + [2, 2, 3, 2, 1, 1], + [2, 2, 1, 1, 3, 2], + [2, 2, 1, 2, 3, 1], + [2, 1, 3, 2, 1, 2], + [2, 2, 3, 1, 1, 2], + [3, 1, 2, 1, 3, 1], + [3, 1, 1, 2, 2, 2], + [3, 2, 1, 1, 2, 2], + [3, 2, 1, 2, 2, 1], + [3, 1, 2, 2, 1, 2], + [3, 2, 2, 1, 1, 2], + [3, 2, 2, 2, 1, 1], + [2, 1, 2, 1, 2, 3], + [2, 1, 2, 3, 2, 1], + [2, 3, 2, 1, 2, 1], + [1, 1, 1, 3, 2, 3], + [1, 3, 1, 1, 2, 3], + [1, 3, 1, 3, 2, 1], + [1, 1, 2, 3, 1, 3], + [1, 3, 2, 1, 1, 3], + [1, 3, 2, 3, 1, 1], + [2, 1, 1, 3, 1, 3], + [2, 3, 1, 1, 1, 3], + [2, 3, 1, 3, 1, 1], + [1, 1, 2, 1, 3, 3], + [1, 1, 2, 3, 3, 1], + [1, 3, 2, 1, 3, 1], + [1, 1, 3, 1, 2, 3], + [1, 1, 3, 3, 2, 1], + [1, 3, 3, 1, 2, 1], + [3, 1, 3, 1, 2, 1], + [2, 1, 1, 3, 3, 1], + [2, 3, 1, 1, 3, 1], + [2, 1, 3, 1, 1, 3], + [2, 1, 3, 3, 1, 1], + [2, 1, 3, 1, 3, 1], + [3, 1, 1, 1, 2, 3], + [3, 1, 1, 3, 2, 1], + [3, 3, 1, 1, 2, 1], + [3, 1, 2, 1, 1, 3], + [3, 1, 2, 3, 1, 1], + [3, 3, 2, 1, 1, 1], + [3, 1, 4, 1, 1, 1], + [2, 2, 1, 4, 1, 1], + [4, 3, 1, 1, 1, 1], + [1, 1, 1, 2, 2, 4], + [1, 1, 1, 4, 2, 2], + [1, 2, 1, 1, 2, 4], + [1, 2, 1, 4, 2, 1], + [1, 4, 1, 1, 2, 2], + [1, 4, 1, 2, 2, 1], + [1, 1, 2, 2, 1, 4], + [1, 1, 2, 4, 1, 2], + [1, 2, 2, 1, 1, 4], + [1, 2, 2, 4, 1, 1], + [1, 4, 2, 1, 1, 2], + [1, 4, 2, 2, 1, 1], + [2, 4, 1, 2, 1, 1], + [2, 2, 1, 1, 1, 4], + [4, 1, 3, 1, 1, 1], + [2, 4, 1, 1, 1, 2], + [1, 3, 4, 1, 1, 1], + [1, 1, 1, 2, 4, 2], + [1, 2, 1, 1, 4, 2], + [1, 2, 1, 2, 4, 1], + [1, 1, 4, 2, 1, 2], + [1, 2, 4, 1, 1, 2], + [1, 2, 4, 2, 1, 1], + [4, 1, 1, 2, 1, 2], + [4, 2, 1, 1, 1, 2], + [4, 2, 1, 2, 1, 1], + [2, 1, 2, 1, 4, 1], + [2, 1, 4, 1, 2, 1], + [4, 1, 2, 1, 2, 1], + [1, 1, 1, 1, 4, 3], + [1, 1, 1, 3, 4, 1], + [1, 3, 1, 1, 4, 1], + [1, 1, 4, 1, 1, 3], + [1, 1, 4, 3, 1, 1], + [4, 1, 1, 1, 1, 3], + [4, 1, 1, 3, 1, 1], + [1, 1, 3, 1, 4, 1], + [1, 1, 4, 1, 3, 1], + [3, 1, 1, 1, 4, 1], + [4, 1, 1, 1, 3, 1], + [2, 1, 1, 4, 1, 2], + [2, 1, 1, 2, 1, 4], + [2, 1, 1, 2, 3, 2], + [2, 3, 3, 1, 1, 1, 2] + ]} + }; + + Code128Reader.prototype = Object.create(BarcodeReader.prototype, properties); + Code128Reader.prototype.constructor = Code128Reader; + + Code128Reader.prototype._decodeCode = function(start) { + var counter = [0, 0, 0, 0, 0, 0], + i, + self = this, + offset = start, + isWhite = !self._row[offset], + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : start, + end : start + }, + code, + error, + normalized; + + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + normalized = self._normalize(counter); + for ( code = 0; code < self.CODE_PATTERN.length; code++) { + error = self._matchPattern(normalized, self.CODE_PATTERN[code]); + if (error < bestMatch.error) { + bestMatch.code = code; + bestMatch.error = error; + } + } + bestMatch.end = i; + return bestMatch; + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + return null; + }; + + Code128Reader.prototype._findEnd = function() { + var counter = [0, 0, 0, 0, 0, 0, 0], + i, + self = this, + offset = self._nextSet(self._row), + isWhite = !self._row[offset], + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : 0, + end : 0 + }, + error, + j, + sum, + normalized; + + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + sum = 0; + for ( j = 0; j < counter.length; j++) { + sum += counter[j]; + } + normalized = self._normalize(counter, 13); + error = self._matchPattern(normalized, self.CODE_PATTERN[self.STOP_CODE]); + if (error < 3) { + bestMatch.error = error; + bestMatch.start = i - sum; + bestMatch.end = i; + return bestMatch; + } + + for ( j = 0; j < 5; j++) { + counter[j] = counter[j + 2]; + } + counter[5] = 0; + counter[6] = 0; + counterPos--; + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + return null; + }; + + Code128Reader.prototype._findStart = function() { + var counter = [0, 0, 0, 0, 0, 0], + i, + self = this, + offset = self._nextSet(self._row), + isWhite = false, + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : 0, + end : 0 + }, + code, + error, + j, + sum, + normalized; + + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + sum = 0; + for ( j = 0; j < counter.length; j++) { + sum += counter[j]; + } + normalized = self._normalize(counter); + for ( code = self.START_CODE_A; code <= self.START_CODE_C; code++) { + error = self._matchPattern(normalized, self.CODE_PATTERN[code]); + if (error < bestMatch.error) { + bestMatch.code = code; + bestMatch.error = error; + } + } + if (bestMatch.error < 3) { + bestMatch.start = i - sum; + bestMatch.end = i; + return bestMatch; + } + + for ( j = 0; j < 4; j++) { + counter[j] = counter[j + 2]; + } + counter[4] = 0; + counter[5] = 0; + counterPos--; + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + return null; + }; + + Code128Reader.prototype._decode = function() { + var self = this, + startInfo = self._findStart(), + code = null, + done = false, + result = [], + multiplier = 0, + checksum = 0, + codeset, + rawResult = [], + decodedCodes = [], + shiftNext = false, + unshift, + lastCharacterWasPrintable; + + if (startInfo === null) { + return null; + } + code = { + code : startInfo.code, + start : startInfo.start, + end : startInfo.end + }; + decodedCodes.push(code); + checksum = code.code; + switch(code.code) { + case self.START_CODE_A: + codeset = self.CODE_A; + break; + case self.START_CODE_B: + codeset = self.CODE_B; + break; + case self.START_CODE_C: + codeset = self.CODE_C; + break; + default: + return null; + } + + while (!done) { + unshift = shiftNext; + shiftNext = false; + code = self._decodeCode(code.end); + if (code !== null) { + if (code.code !== self.STOP_CODE) { + rawResult.push(code.code); + multiplier++; + checksum += multiplier * code.code; + } + decodedCodes.push(code); + + switch(codeset) { + case self.CODE_A: + if (code.code < 64) { + result.push(String.fromCharCode(32 + code.code)); + } else if (code.code < 96) { + result.push(String.fromCharCode(code.code - 64)); + } else { + switch (code.code) { + case self.CODE_SHIFT: + shiftNext = true; + codeset = self.CODE_B; + break; + case self.CODE_B: + codeset = self.CODE_B; + break; + case self.CODE_C: + codeset = self.CODE_C; + break; + case self.STOP_CODE: + done = true; + break; + } + } + break; + case self.CODE_B: + if (code.code < 96) { + result.push(String.fromCharCode(32 + code.code)); + } else { + if (code.code != self.STOP_CODE) { + lastCharacterWasPrintable = false; + } + switch (code.code) { + case self.CODE_SHIFT: + shiftNext = true; + codeset = self.CODE_A; + break; + case self.CODE_A: + codeset = self.CODE_A; + break; + case self.CODE_C: + codeset = self.CODE_C; + break; + case self.STOP_CODE: + done = true; + break; + } + } + break; + case self.CODE_C: + if (code.code < 100) { + result.push(code.code < 10 ? "0" + code.code : code.code); + } + switch (code.code) { + case self.CODE_A: + codeset = self.CODE_A; + break; + case self.CODE_B: + codeset = self.CODE_B; + break; + case self.STOP_CODE: + done = true; + break; + } + break; + } + } else { + done = true; + } + if (unshift) { + codeset = codeset == self.CODE_A ? self.CODE_B : self.CODE_A; + } + } + + if (code === null) { + return null; + } + + // find end bar + code.end = self._nextUnset(self._row, code.end); + if (code.end === self._row.length) { + return null; + } + + // checksum + // Does not work correctly yet!!! startcode - endcode? + checksum -= multiplier * rawResult[rawResult.length - 1]; + if (checksum % 103 != rawResult[rawResult.length - 1]) { + return null; + } + + // remove last code from result (checksum) + result.splice(result.length - 1, 1); + + return { + code : result.join(""), + start : startInfo.start, + end : code.end, + codeset : codeset, + startInfo : startInfo, + decodedCodes : decodedCodes, + endInfo : code + }; + }; + + return (Code128Reader); + } +); +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define( + 'ean_reader',[ + "./barcode_reader" + ], + function(BarcodeReader) { + + + function EANReader() { + BarcodeReader.call(this); + } + + var properties = { + CODE_L_START : {value: 0}, + MODULO : {value: 7}, + CODE_G_START : {value: 10}, + START_PATTERN : {value: [1 / 3 * 7, 1 / 3 * 7, 1 / 3 * 7]}, + STOP_PATTERN : {value: [1 / 3 * 7, 1 / 3 * 7, 1 / 3 * 7]}, + MIDDLE_PATTERN : {value: [1 / 5 * 7, 1 / 5 * 7, 1 / 5 * 7, 1 / 5 * 7, 1 / 5 * 7]}, + CODE_PATTERN : {value: [ + [3, 2, 1, 1], + [2, 2, 2, 1], + [2, 1, 2, 2], + [1, 4, 1, 1], + [1, 1, 3, 2], + [1, 2, 3, 1], + [1, 1, 1, 4], + [1, 3, 1, 2], + [1, 2, 1, 3], + [3, 1, 1, 2], + [1, 1, 2, 3], + [1, 2, 2, 2], + [2, 2, 1, 2], + [1, 1, 4, 1], + [2, 3, 1, 1], + [1, 3, 2, 1], + [4, 1, 1, 1], + [2, 1, 3, 1], + [3, 1, 2, 1], + [2, 1, 1, 3] + ]}, + CODE_FREQUENCY : {value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26]} + }; + + EANReader.prototype = Object.create(BarcodeReader.prototype, properties); + EANReader.prototype.constructor = EANReader; + + EANReader.prototype._decodeCode = function(start, coderange) { + var counter = [0, 0, 0, 0], + i, + self = this, + offset = start, + isWhite = !self._row[offset], + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : start, + end : start + }, + code, + error, + normalized; + + if (!coderange) { + coderange = self.CODE_PATTERN.length; + } + + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + normalized = self._normalize(counter); + for ( code = 0; code < coderange; code++) { + error = self._matchPattern(normalized, self.CODE_PATTERN[code]); + if (error < bestMatch.error) { + bestMatch.code = code; + bestMatch.error = error; + } + } + bestMatch.end = i; + return bestMatch; + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + throw BarcodeReader.CodeNotFoundException; + }; + + EANReader.prototype._findPattern = function(pattern, offset, isWhite, tryHarder, epsilon) { + var counter = [], + self = this, + i, + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : 0, + end : 0 + }, + error, + j, + sum, + normalized; + + if (!offset) { + offset = self._nextSet(self._row); + } + + if (isWhite === undefined) { + isWhite = false; + } + + if (tryHarder === undefined) { + tryHarder = true; + } + + if ( epsilon === undefined) { + epsilon = 2; + } + + for ( i = 0; i < pattern.length; i++) { + counter[i] = 0; + } + + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + sum = 0; + for ( j = 0; j < counter.length; j++) { + sum += counter[j]; + } + normalized = self._normalize(counter); + error = self._matchPattern(normalized, pattern); + + if (error < epsilon) { + bestMatch.error = error; + bestMatch.start = i - sum; + bestMatch.end = i; + return bestMatch; + } + if (tryHarder) { + for ( j = 0; j < counter.length - 2; j++) { + counter[j] = counter[j + 2]; + } + counter[counter.length - 2] = 0; + counter[counter.length - 1] = 0; + counterPos--; + } else { + throw BarcodeReader.PatternNotFoundException; + } + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + throw BarcodeReader.PatternNotFoundException; + }; + + EANReader.prototype._decode = function() { + var startInfo, + self = this, + code = null, + result = [], + i, + codeFrequency = 0x0, + decodedCodes = []; + + try { + startInfo = self._findPattern(self.START_PATTERN); + code = { + code : startInfo.code, + start : startInfo.start, + end : startInfo.end + }; + decodedCodes.push(code); + for ( i = 0; i < 6; i++) { + code = self._decodeCode(code.end); + if (code.code >= self.CODE_G_START) { + code.code = code.code - self.CODE_G_START; + codeFrequency |= 1 << (5 - i); + } else { + codeFrequency |= 0 << (5 - i); + } + result.push(code.code); + decodedCodes.push(code); + } + + for ( i = 0; i < self.CODE_FREQUENCY.length; i++) { + if (codeFrequency === self.CODE_FREQUENCY[i]) { + result.unshift(i); + break; + } + } + + code = self._findPattern(self.MIDDLE_PATTERN, code.end, true); + if (code === null) { + return null; + } + decodedCodes.push(code); + + for ( i = 0; i < 6; i++) { + code = self._decodeCode(code.end, self.CODE_G_START); + decodedCodes.push(code); + result.push(code.code); + } + + code = self._findPattern(self.STOP_PATTERN, code.end); + decodedCodes.push(code); + + // Checksum + if (!self._checksum(result)) { + return null; + } + } catch (exc) { + return null; + } + + return { + code : result.join(""), + start : startInfo.start, + end : code.end, + codeset : "", + startInfo : startInfo, + decodedCodes : decodedCodes + }; + }; + + EANReader.prototype._checksum = function(result) { + var sum = 0, i; + + for ( i = result.length - 2; i >= 0; i -= 2) { + sum += result[i]; + } + sum *= 3; + for ( i = result.length - 1; i >= 0; i -= 2) { + sum += result[i]; + } + return sum % 10 === 0; + }; + + return (EANReader); + } +); +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define('image_loader',[],function() { + + + var ImageLoader = {}; + ImageLoader.load = function(directory, callback, offset, size, sequence) { + var htmlImagesSrcArray = new Array(size), + htmlImagesArray = new Array(htmlImagesSrcArray.length), + i, + img, + num; + + if (sequence === false) { + htmlImagesSrcArray[0] = directory; + } else { + for ( i = 0; i < htmlImagesSrcArray.length; i++) { + num = (offset + i); + htmlImagesSrcArray[i] = directory + "image-" + ("00" + num).slice(-3) + ".jpg"; + } + } + htmlImagesArray.notLoaded = []; + htmlImagesArray.addImage = function(img) { + htmlImagesArray.notLoaded.push(img); + }; + htmlImagesArray.loaded = function(loadedImg) { + var notloadedImgs = htmlImagesArray.notLoaded; + for (var x = 0; x < notloadedImgs.length; x++) { + if (notloadedImgs[x] == loadedImg) { + notloadedImgs.splice(x, 1); + for (var y = 0; y < htmlImagesSrcArray.length; y++) { + var imgName = htmlImagesSrcArray[y].substr(htmlImagesSrcArray[y].lastIndexOf("/")); + if (loadedImg.src.lastIndexOf(imgName) != -1) { + htmlImagesArray[y] = loadedImg; + break; + } + } + break; + } + } + if (notloadedImgs.length === 0) { + console.log("Images loaded"); + callback.apply(null, [htmlImagesArray]); + } + }; + + for ( i = 0; i < htmlImagesSrcArray.length; i++) { + img = new Image(); + htmlImagesArray.addImage(img); + addOnloadHandler(img, htmlImagesArray); + img.src = htmlImagesSrcArray[i]; + } + }; + + function addOnloadHandler(img, htmlImagesArray) { + img.onload = function() { + htmlImagesArray.loaded(this); + }; + } + + return (ImageLoader); +}); + +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define('input_stream',["image_loader"], function(ImageLoader) { + + + var InputStream = {}; + InputStream.createVideoStream = function(video) { + var that = {}, + _config = null, + _eventNames = ['canrecord', 'ended'], + _eventHandlers = {}; + + that.getRealWidth = function() { + return video.videoWidth; + }; + + that.getRealHeight = function() { + return video.videoHeight; + }; + + that.getWidth = function() { + return _config.halfSample ? video.videoWidth / 2 : video.videoWidth; + }; + + that.getHeight = function() { + return _config.halfSample ? video.videoHeight / 2 : video.videoHeight; + }; + + that.setInputStream = function(config) { + _config = config; + video.src = config.src; + }; + + that.ended = function() { + return video.ended; + }; + + that.getConfig = function() { + return _config; + }; + + that.setAttribute = function(name, value) { + video.setAttribute(name, value); + }; + + that.pause = function() { + video.pause(); + }; + + that.play = function() { + video.play(); + }; + + that.setCurrentTime = function(time) { + if (_config.type !== "LiveStream") + video.currentTime = time; + }; + + that.addEventListener = function(event, f, bool) { + if (_eventNames.indexOf(event) !== -1) { + if (!_eventHandlers[event]) { + _eventHandlers[event] = []; + } + _eventHandlers[event].push(f); + } else { + video.addEventListener(event, f, bool); + } + }; + + that.trigger = function(eventName, args) { + var j, + handlers = _eventHandlers[eventName]; + + if (handlers && handlers.length > 0) { + for ( j = 0; j < handlers.length; j++) { + handlers[j].apply(that, args); + } + } + }; + + that.getFrame = function() { + return video; + }; + + return that; + }; + + InputStream.createLiveStream = function(video) { + video.setAttribute("autoplay", true); + var that = InputStream.createVideoStream(video); + + that.ended = function() { + return false; + }; + + that.getWidth = function() { + return this.getConfig().halfSample ? video.videoWidth / 2 : video.videoWidth; + }; + + that.getHeight = function() { + return this.getConfig().halfSample ? video.videoHeight / 2 : video.videoHeight; + }; + + return that; + }; + + InputStream.createImageStream = function() { + var that = {}; + var _config = null; + + var width = 0, + height = 0, + frameIdx = 0, + paused = true, + loaded = false, + imgArray = null, + size = 0, + offset = 1, + baseUrl = null, + ended = false, + _eventNames = ['canrecord', 'ended'], + _eventHandlers = {}; + + function loadImages() { + loaded = false; + ImageLoader.load(baseUrl, function(imgs) { + imgArray = imgs; + width = imgs[0].width; + height = imgs[0].height; + loaded = true; + frameIdx = 0; + setTimeout(function() { + publishEvent("canrecord", []); + }, 0); + }, offset, size, _config.sequence); + } + + function publishEvent(eventName, args) { + var j, + handlers = _eventHandlers[eventName]; + + if (handlers && handlers.length > 0) { + for ( j = 0; j < handlers.length; j++) { + handlers[j].apply(that, args); + } + } + } + + + that.trigger = publishEvent; + + that.getWidth = function() { + return _config.size ? width/height > 1 ? _config.size : (width/height) * _config.size : width; + }; + + that.getHeight = function() { + return _config.size ? width/height > 1 ? (height/width) * _config.size : _config.size : height; + }; + + that.getRealWidth = function() { + return width; + }; + + that.getRealHeight = function() { + return height; + }; + + that.setInputStream = function(stream) { + _config = stream; + if (stream.sequence === false) { + baseUrl = stream.src; + size = 1; + } else { + baseUrl = stream.src; + size = stream.length; + } + loadImages(); + }; + + that.ended = function() { + return ended; + }; + + that.setAttribute = function() {}; + + that.getConfig = function() { + return _config; + }; + + that.pause = function() { + paused = true; + }; + + that.play = function() { + paused = false; + }; + + that.setCurrentTime = function(time) { + frameIdx = time; + }; + + that.addEventListener = function(event, f) { + if (_eventNames.indexOf(event) !== -1) { + if (!_eventHandlers[event]) { + _eventHandlers[event] = []; + } + _eventHandlers[event].push(f); + } + }; + + that.getFrame = function() { + var frame; + + if (!loaded){ + return null; + } + if (!paused) { + frame = imgArray[frameIdx]; + if (frameIdx < (size - 1)) { + frameIdx++; + } else { + setTimeout(function() { + ended = true; + publishEvent("ended", []); + }, 0); + } + } + return frame; + }; + + return that; + }; + + return (InputStream); +}); + +/* + * typedefs.js + * Normalizes browser-specific prefixes + */ + +glMatrixArrayType = Float32Array; + +window.requestAnimFrame = (function() { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(/* function FrameRequestCallback */ callback, /* DOMElement Element */ element) { + window.setTimeout(callback, 1000/60); + }; +})(); + + +navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; +window.URL = window.URL || window.webkitURL || window.mozURL || window.msURL; +define("typedefs", (function (global) { + return function () { + var ret, fn; + return ret || global.typedefs; + }; +}(this))); + +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define('subImage',["typedefs"], function() { + + + /** + * Construct representing a part of another {ImageWrapper}. Shares data + * between the parent and the child. + * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner) + * @param size {ImageRef} The size of the resulting image + * @param I {ImageWrapper} The {ImageWrapper} to share from + * @returns {SubImage} A shared part of the original image + */ + function SubImage(from, size, I) { + if (!I) { + I = { + data : null, + size : size + }; + } + this.data = I.data; + this.originalSize = I.size; + this.I = I; + + this.from = from; + this.size = size; + } + + /** + * Displays the {SubImage} in a given canvas + * @param canvas {Canvas} The canvas element to write to + * @param scale {Number} Scale which is applied to each pixel-value + */ + SubImage.prototype.show = function(canvas, scale) { + var ctx, + frame, + data, + current, + y, + x, + pixel; + + if (!scale) { + scale = 1.0; + } + ctx = canvas.getContext('2d'); + canvas.width = this.size.x; + canvas.height = this.size.y; + frame = ctx.getImageData(0, 0, canvas.width, canvas.height); + data = frame.data; + current = 0; + for (y = 0; y < this.size.y; y++) { + for (x = 0; x < this.size.x; x++) { + pixel = y * this.size.x + x; + current = this.get(x, y) * scale; + data[pixel * 4 + 0] = current; + data[pixel * 4 + 1] = current; + data[pixel * 4 + 2] = current; + data[pixel * 4 + 3] = 255; + } + } + frame.data = data; + ctx.putImageData(frame, 0, 0); + }; + + /** + * Retrieves a given pixel position from the {SubImage} + * @param x {Number} The x-position + * @param y {Number} The y-position + * @returns {Number} The grayscale value at the pixel-position + */ + SubImage.prototype.get = function(x, y) { + return this.data[(this.from.y + y) * this.originalSize.x + this.from.x + x]; + }; + + /** + * Updates the underlying data from a given {ImageWrapper} + * @param image {ImageWrapper} The updated image + */ + SubImage.prototype.updateData = function(image) { + this.originalSize = image.size; + this.data = image.data; + }; + + /** + * Updates the position of the shared area + * @param from {x,y} The new location + * @returns {SubImage} returns {this} for possible chaining + */ + SubImage.prototype.updateFrom = function(from) { + this.from = from; + return this; + }; + + return (SubImage); +}); +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, vec2 */ + +define('cluster',[],function() { + + + /** + * Creates a cluster for grouping similar orientations of datapoints + */ + var Cluster = { + create : function(point, threshold) { + var points = [], center = { + rad : 0, + vec : vec2.create([0, 0]) + }, pointMap = {}; + + function init() { + add(point); + updateCenter(); + } + + function add(point) { + pointMap[point.id] = point; + points.push(point); + } + + function updateCenter() { + var i, sum = 0; + for ( i = 0; i < points.length; i++) { + sum += points[i].rad; + } + center.rad = sum / points.length; + center.vec = vec2.create([Math.cos(center.rad), Math.sin(center.rad)]); + } + + init(); + + return { + add : function(point) { + if (!pointMap[point.id]) { + add(point); + updateCenter(); + } + }, + fits : function(point) { + // check cosine similarity to center-angle + var similarity = Math.abs(vec2.dot(point.point.vec, center.vec)); + if (similarity > threshold) { + return true; + } + return false; + }, + getPoints : function() { + return points; + }, + getCenter : function() { + return center; + } + }; + }, + createPoint : function(point, id, property) { + return { + rad : point[property], + point : point, + id : id + }; + } + }; + + return (Cluster); +}); + +/* + * glMatrix.js - High performance matrix and vector operations for WebGL + * version 0.9.6 + */ + +/* + * Copyright (c) 2011 Brandon Jones + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not + * be misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + */ + + + +/* + * vec3 - 3 Dimensional Vector + */ +var vec3 = {}; + +/* + * vec3.create + * Creates a new instance of a vec3 using the default array type + * Any javascript array containing at least 3 numeric elements can serve as a vec3 + * + * Params: + * vec - Optional, vec3 containing values to initialize with + * + * Returns: + * New vec3 + */ +vec3.create = function(vec) { + var dest; + if(vec) { + dest = new glMatrixArrayType(3); + dest[0] = vec[0]; + dest[1] = vec[1]; + dest[2] = vec[2]; + } else { + if(glMatrixArrayType === Array) + dest = new glMatrixArrayType([0,0,0]); + else + dest = new glMatrixArrayType(3); + } + + return dest; +}; + +/* + * vec3.set + * Copies the values of one vec3 to another + * + * Params: + * vec - vec3 containing values to copy + * dest - vec3 receiving copied values + * + * Returns: + * dest + */ +vec3.set = function(vec, dest) { + dest[0] = vec[0]; + dest[1] = vec[1]; + dest[2] = vec[2]; + + return dest; +}; + +/* + * vec3.add + * Performs a vector addition + * + * Params: + * vec - vec3, first operand + * vec2 - vec3, second operand + * dest - Optional, vec3 receiving operation result. If not specified result is written to vec + * + * Returns: + * dest if specified, vec otherwise + */ +vec3.add = function(vec, vec2, dest) { + if(!dest || vec == dest) { + vec[0] += vec2[0]; + vec[1] += vec2[1]; + vec[2] += vec2[2]; + return vec; + } + + dest[0] = vec[0] + vec2[0]; + dest[1] = vec[1] + vec2[1]; + dest[2] = vec[2] + vec2[2]; + return dest; +}; + +/* + * vec3.subtract + * Performs a vector subtraction + * + * Params: + * vec - vec3, first operand + * vec2 - vec3, second operand + * dest - Optional, vec3 receiving operation result. If not specified result is written to vec + * + * Returns: + * dest if specified, vec otherwise + */ +vec3.subtract = function(vec, vec2, dest) { + if(!dest || vec == dest) { + vec[0] -= vec2[0]; + vec[1] -= vec2[1]; + vec[2] -= vec2[2]; + return vec; + } + + dest[0] = vec[0] - vec2[0]; + dest[1] = vec[1] - vec2[1]; + dest[2] = vec[2] - vec2[2]; + return dest; +}; + +/* + * vec3.negate + * Negates the components of a vec3 + * + * Params: + * vec - vec3 to negate + * dest - Optional, vec3 receiving operation result. If not specified result is written to vec + * + * Returns: + * dest if specified, vec otherwise + */ +vec3.negate = function(vec, dest) { + if(!dest) { dest = vec; } + + dest[0] = -vec[0]; + dest[1] = -vec[1]; + dest[2] = -vec[2]; + return dest; +}; + +/* + * vec3.scale + * Multiplies the components of a vec3 by a scalar value + * + * Params: + * vec - vec3 to scale + * val - Numeric value to scale by + * dest - Optional, vec3 receiving operation result. If not specified result is written to vec + * + * Returns: + * dest if specified, vec otherwise + */ +vec3.scale = function(vec, val, dest) { + if(!dest || vec == dest) { + vec[0] *= val; + vec[1] *= val; + vec[2] *= val; + return vec; + } + + dest[0] = vec[0]*val; + dest[1] = vec[1]*val; + dest[2] = vec[2]*val; + return dest; +}; + +/* + * vec3.normalize + * Generates a unit vector of the same direction as the provided vec3 + * If vector length is 0, returns [0, 0, 0] + * + * Params: + * vec - vec3 to normalize + * dest - Optional, vec3 receiving operation result. If not specified result is written to vec + * + * Returns: + * dest if specified, vec otherwise + */ +vec3.normalize = function(vec, dest) { + if(!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2]; + var len = Math.sqrt(x*x + y*y + z*z); + + if (!len) { + dest[0] = 0; + dest[1] = 0; + dest[2] = 0; + return dest; + } else if (len == 1) { + dest[0] = x; + dest[1] = y; + dest[2] = z; + return dest; + } + + len = 1 / len; + dest[0] = x*len; + dest[1] = y*len; + dest[2] = z*len; + return dest; +}; + +/* + * vec3.cross + * Generates the cross product of two vec3s + * + * Params: + * vec - vec3, first operand + * vec2 - vec3, second operand + * dest - Optional, vec3 receiving operation result. If not specified result is written to vec + * + * Returns: + * dest if specified, vec otherwise + */ +vec3.cross = function(vec, vec2, dest){ + if(!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2]; + var x2 = vec2[0], y2 = vec2[1], z2 = vec2[2]; + + dest[0] = y*z2 - z*y2; + dest[1] = z*x2 - x*z2; + dest[2] = x*y2 - y*x2; + return dest; +}; + +/* + * vec3.length + * Caclulates the length of a vec3 + * + * Params: + * vec - vec3 to calculate length of + * + * Returns: + * Length of vec + */ +vec3.length = function(vec){ + var x = vec[0], y = vec[1], z = vec[2]; + return Math.sqrt(x*x + y*y + z*z); +}; + +/* + * vec3.dot + * Caclulates the dot product of two vec3s + * + * Params: + * vec - vec3, first operand + * vec2 - vec3, second operand + * + * Returns: + * Dot product of vec and vec2 + */ +vec3.dot = function(vec, vec2){ + return vec[0]*vec2[0] + vec[1]*vec2[1] + vec[2]*vec2[2]; +}; + +/* + * vec3.direction + * Generates a unit vector pointing from one vector to another + * + * Params: + * vec - origin vec3 + * vec2 - vec3 to point to + * dest - Optional, vec3 receiving operation result. If not specified result is written to vec + * + * Returns: + * dest if specified, vec otherwise + */ +vec3.direction = function(vec, vec2, dest) { + if(!dest) { dest = vec; } + + var x = vec[0] - vec2[0]; + var y = vec[1] - vec2[1]; + var z = vec[2] - vec2[2]; + + var len = Math.sqrt(x*x + y*y + z*z); + if (!len) { + dest[0] = 0; + dest[1] = 0; + dest[2] = 0; + return dest; + } + + len = 1 / len; + dest[0] = x * len; + dest[1] = y * len; + dest[2] = z * len; + return dest; +}; + +/* + * vec3.lerp + * Performs a linear interpolation between two vec3 + * + * Params: + * vec - vec3, first vector + * vec2 - vec3, second vector + * lerp - interpolation amount between the two inputs + * dest - Optional, vec3 receiving operation result. If not specified result is written to vec + * + * Returns: + * dest if specified, vec otherwise + */ +vec3.lerp = function(vec, vec2, lerp, dest){ + if(!dest) { dest = vec; } + + dest[0] = vec[0] + lerp * (vec2[0] - vec[0]); + dest[1] = vec[1] + lerp * (vec2[1] - vec[1]); + dest[2] = vec[2] + lerp * (vec2[2] - vec[2]); + + return dest; +}; + +/* + * vec3.str + * Returns a string representation of a vector + * + * Params: + * vec - vec3 to represent as a string + * + * Returns: + * string representation of vec + */ +vec3.str = function(vec) { + return '[' + vec[0] + ', ' + vec[1] + ', ' + vec[2] + ']'; +}; + +/* + * mat3 - 3x3 Matrix + */ +var mat3 = {}; + +/* + * mat3.create + * Creates a new instance of a mat3 using the default array type + * Any javascript array containing at least 9 numeric elements can serve as a mat3 + * + * Params: + * mat - Optional, mat3 containing values to initialize with + * + * Returns: + * New mat3 + */ +mat3.create = function(mat) { + var dest; + + if(mat) { + dest = new glMatrixArrayType(9); + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + dest[8] = mat[8]; + } else { + if(glMatrixArrayType === Array) + dest = new glMatrixArrayType([0,0,0,0,0,0,0,0,0]); + else + dest = new glMatrixArrayType(9); + } + + return dest; +}; + +/* + * mat3.set + * Copies the values of one mat3 to another + * + * Params: + * mat - mat3 containing values to copy + * dest - mat3 receiving copied values + * + * Returns: + * dest + */ +mat3.set = function(mat, dest) { + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + dest[8] = mat[8]; + return dest; +}; + +/* + * mat3.identity + * Sets a mat3 to an identity matrix + * + * Params: + * dest - mat3 to set + * + * Returns: + * dest + */ +mat3.identity = function(dest) { + dest[0] = 1; + dest[1] = 0; + dest[2] = 0; + dest[3] = 0; + dest[4] = 1; + dest[5] = 0; + dest[6] = 0; + dest[7] = 0; + dest[8] = 1; + return dest; +}; + +/* + * mat4.transpose + * Transposes a mat3 (flips the values over the diagonal) + * + * Params: + * mat - mat3 to transpose + * dest - Optional, mat3 receiving transposed values. If not specified result is written to mat + * + * Returns: + * dest is specified, mat otherwise + */ +mat3.transpose = function(mat, dest) { + // If we are transposing ourselves we can skip a few steps but have to cache some values + if(!dest || mat == dest) { + var a01 = mat[1], a02 = mat[2]; + var a12 = mat[5]; + + mat[1] = mat[3]; + mat[2] = mat[6]; + mat[3] = a01; + mat[5] = mat[7]; + mat[6] = a02; + mat[7] = a12; + return mat; + } + + dest[0] = mat[0]; + dest[1] = mat[3]; + dest[2] = mat[6]; + dest[3] = mat[1]; + dest[4] = mat[4]; + dest[5] = mat[7]; + dest[6] = mat[2]; + dest[7] = mat[5]; + dest[8] = mat[8]; + return dest; +}; + +/* + * mat3.toMat4 + * Copies the elements of a mat3 into the upper 3x3 elements of a mat4 + * + * Params: + * mat - mat3 containing values to copy + * dest - Optional, mat4 receiving copied values + * + * Returns: + * dest if specified, a new mat4 otherwise + */ +mat3.toMat4 = function(mat, dest) { + if(!dest) { dest = mat4.create(); } + + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = 0; + + dest[4] = mat[3]; + dest[5] = mat[4]; + dest[6] = mat[5]; + dest[7] = 0; + + dest[8] = mat[6]; + dest[9] = mat[7]; + dest[10] = mat[8]; + dest[11] = 0; + + dest[12] = 0; + dest[13] = 0; + dest[14] = 0; + dest[15] = 1; + + return dest; +}; + +/* + * mat3.str + * Returns a string representation of a mat3 + * + * Params: + * mat - mat3 to represent as a string + * + * Returns: + * string representation of mat + */ +mat3.str = function(mat) { + return '[' + mat[0] + ', ' + mat[1] + ', ' + mat[2] + + ', ' + mat[3] + ', '+ mat[4] + ', ' + mat[5] + + ', ' + mat[6] + ', ' + mat[7] + ', '+ mat[8] + ']'; +}; + +/* + * mat4 - 4x4 Matrix + */ +var mat4 = {}; + +/* + * mat4.create + * Creates a new instance of a mat4 using the default array type + * Any javascript array containing at least 16 numeric elements can serve as a mat4 + * + * Params: + * mat - Optional, mat4 containing values to initialize with + * + * Returns: + * New mat4 + */ +mat4.create = function(mat) { + var dest; + + if(mat) { + dest = new glMatrixArrayType(16); + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + dest[8] = mat[8]; + dest[9] = mat[9]; + dest[10] = mat[10]; + dest[11] = mat[11]; + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + } else { + if(glMatrixArrayType === Array) + dest = new glMatrixArrayType([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]); + else + dest = new glMatrixArrayType(16); + } + + return dest; +}; + +/* + * mat4.set + * Copies the values of one mat4 to another + * + * Params: + * mat - mat4 containing values to copy + * dest - mat4 receiving copied values + * + * Returns: + * dest + */ +mat4.set = function(mat, dest) { + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + dest[8] = mat[8]; + dest[9] = mat[9]; + dest[10] = mat[10]; + dest[11] = mat[11]; + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + return dest; +}; + +/* + * mat4.identity + * Sets a mat4 to an identity matrix + * + * Params: + * dest - mat4 to set + * + * Returns: + * dest + */ +mat4.identity = function(dest) { + dest[0] = 1; + dest[1] = 0; + dest[2] = 0; + dest[3] = 0; + dest[4] = 0; + dest[5] = 1; + dest[6] = 0; + dest[7] = 0; + dest[8] = 0; + dest[9] = 0; + dest[10] = 1; + dest[11] = 0; + dest[12] = 0; + dest[13] = 0; + dest[14] = 0; + dest[15] = 1; + return dest; +}; + +/* + * mat4.transpose + * Transposes a mat4 (flips the values over the diagonal) + * + * Params: + * mat - mat4 to transpose + * dest - Optional, mat4 receiving transposed values. If not specified result is written to mat + * + * Returns: + * dest is specified, mat otherwise + */ +mat4.transpose = function(mat, dest) { + // If we are transposing ourselves we can skip a few steps but have to cache some values + if(!dest || mat == dest) { + var a01 = mat[1], a02 = mat[2], a03 = mat[3]; + var a12 = mat[6], a13 = mat[7]; + var a23 = mat[11]; + + mat[1] = mat[4]; + mat[2] = mat[8]; + mat[3] = mat[12]; + mat[4] = a01; + mat[6] = mat[9]; + mat[7] = mat[13]; + mat[8] = a02; + mat[9] = a12; + mat[11] = mat[14]; + mat[12] = a03; + mat[13] = a13; + mat[14] = a23; + return mat; + } + + dest[0] = mat[0]; + dest[1] = mat[4]; + dest[2] = mat[8]; + dest[3] = mat[12]; + dest[4] = mat[1]; + dest[5] = mat[5]; + dest[6] = mat[9]; + dest[7] = mat[13]; + dest[8] = mat[2]; + dest[9] = mat[6]; + dest[10] = mat[10]; + dest[11] = mat[14]; + dest[12] = mat[3]; + dest[13] = mat[7]; + dest[14] = mat[11]; + dest[15] = mat[15]; + return dest; +}; + +/* + * mat4.determinant + * Calculates the determinant of a mat4 + * + * Params: + * mat - mat4 to calculate determinant of + * + * Returns: + * determinant of mat + */ +mat4.determinant = function(mat) { + // Cache the matrix values (makes for huge speed increases!) + var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3]; + var a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7]; + var a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11]; + var a30 = mat[12], a31 = mat[13], a32 = mat[14], a33 = mat[15]; + + return a30*a21*a12*a03 - a20*a31*a12*a03 - a30*a11*a22*a03 + a10*a31*a22*a03 + + a20*a11*a32*a03 - a10*a21*a32*a03 - a30*a21*a02*a13 + a20*a31*a02*a13 + + a30*a01*a22*a13 - a00*a31*a22*a13 - a20*a01*a32*a13 + a00*a21*a32*a13 + + a30*a11*a02*a23 - a10*a31*a02*a23 - a30*a01*a12*a23 + a00*a31*a12*a23 + + a10*a01*a32*a23 - a00*a11*a32*a23 - a20*a11*a02*a33 + a10*a21*a02*a33 + + a20*a01*a12*a33 - a00*a21*a12*a33 - a10*a01*a22*a33 + a00*a11*a22*a33; +}; + +/* + * mat4.inverse + * Calculates the inverse matrix of a mat4 + * + * Params: + * mat - mat4 to calculate inverse of + * dest - Optional, mat4 receiving inverse matrix. If not specified result is written to mat + * + * Returns: + * dest is specified, mat otherwise + */ +mat4.inverse = function(mat, dest) { + if(!dest) { dest = mat; } + + // Cache the matrix values (makes for huge speed increases!) + var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3]; + var a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7]; + var a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11]; + var a30 = mat[12], a31 = mat[13], a32 = mat[14], a33 = mat[15]; + + var b00 = a00*a11 - a01*a10; + var b01 = a00*a12 - a02*a10; + var b02 = a00*a13 - a03*a10; + var b03 = a01*a12 - a02*a11; + var b04 = a01*a13 - a03*a11; + var b05 = a02*a13 - a03*a12; + var b06 = a20*a31 - a21*a30; + var b07 = a20*a32 - a22*a30; + var b08 = a20*a33 - a23*a30; + var b09 = a21*a32 - a22*a31; + var b10 = a21*a33 - a23*a31; + var b11 = a22*a33 - a23*a32; + + // Calculate the determinant (inlined to avoid double-caching) + var invDet = 1/(b00*b11 - b01*b10 + b02*b09 + b03*b08 - b04*b07 + b05*b06); + + dest[0] = (a11*b11 - a12*b10 + a13*b09)*invDet; + dest[1] = (-a01*b11 + a02*b10 - a03*b09)*invDet; + dest[2] = (a31*b05 - a32*b04 + a33*b03)*invDet; + dest[3] = (-a21*b05 + a22*b04 - a23*b03)*invDet; + dest[4] = (-a10*b11 + a12*b08 - a13*b07)*invDet; + dest[5] = (a00*b11 - a02*b08 + a03*b07)*invDet; + dest[6] = (-a30*b05 + a32*b02 - a33*b01)*invDet; + dest[7] = (a20*b05 - a22*b02 + a23*b01)*invDet; + dest[8] = (a10*b10 - a11*b08 + a13*b06)*invDet; + dest[9] = (-a00*b10 + a01*b08 - a03*b06)*invDet; + dest[10] = (a30*b04 - a31*b02 + a33*b00)*invDet; + dest[11] = (-a20*b04 + a21*b02 - a23*b00)*invDet; + dest[12] = (-a10*b09 + a11*b07 - a12*b06)*invDet; + dest[13] = (a00*b09 - a01*b07 + a02*b06)*invDet; + dest[14] = (-a30*b03 + a31*b01 - a32*b00)*invDet; + dest[15] = (a20*b03 - a21*b01 + a22*b00)*invDet; + + return dest; +}; + +/* + * mat4.toRotationMat + * Copies the upper 3x3 elements of a mat4 into another mat4 + * + * Params: + * mat - mat4 containing values to copy + * dest - Optional, mat4 receiving copied values + * + * Returns: + * dest is specified, a new mat4 otherwise + */ +mat4.toRotationMat = function(mat, dest) { + if(!dest) { dest = mat4.create(); } + + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + dest[8] = mat[8]; + dest[9] = mat[9]; + dest[10] = mat[10]; + dest[11] = mat[11]; + dest[12] = 0; + dest[13] = 0; + dest[14] = 0; + dest[15] = 1; + + return dest; +}; + +/* + * mat4.toMat3 + * Copies the upper 3x3 elements of a mat4 into a mat3 + * + * Params: + * mat - mat4 containing values to copy + * dest - Optional, mat3 receiving copied values + * + * Returns: + * dest is specified, a new mat3 otherwise + */ +mat4.toMat3 = function(mat, dest) { + if(!dest) { dest = mat3.create(); } + + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[4]; + dest[4] = mat[5]; + dest[5] = mat[6]; + dest[6] = mat[8]; + dest[7] = mat[9]; + dest[8] = mat[10]; + + return dest; +}; + +/* + * mat4.toInverseMat3 + * Calculates the inverse of the upper 3x3 elements of a mat4 and copies the result into a mat3 + * The resulting matrix is useful for calculating transformed normals + * + * Params: + * mat - mat4 containing values to invert and copy + * dest - Optional, mat3 receiving values + * + * Returns: + * dest is specified, a new mat3 otherwise + */ +mat4.toInverseMat3 = function(mat, dest) { + // Cache the matrix values (makes for huge speed increases!) + var a00 = mat[0], a01 = mat[1], a02 = mat[2]; + var a10 = mat[4], a11 = mat[5], a12 = mat[6]; + var a20 = mat[8], a21 = mat[9], a22 = mat[10]; + + var b01 = a22*a11-a12*a21; + var b11 = -a22*a10+a12*a20; + var b21 = a21*a10-a11*a20; + + var d = a00*b01 + a01*b11 + a02*b21; + if (!d) { return null; } + var id = 1/d; + + if(!dest) { dest = mat3.create(); } + + dest[0] = b01*id; + dest[1] = (-a22*a01 + a02*a21)*id; + dest[2] = (a12*a01 - a02*a11)*id; + dest[3] = b11*id; + dest[4] = (a22*a00 - a02*a20)*id; + dest[5] = (-a12*a00 + a02*a10)*id; + dest[6] = b21*id; + dest[7] = (-a21*a00 + a01*a20)*id; + dest[8] = (a11*a00 - a01*a10)*id; + + return dest; +}; + +/* + * mat4.multiply + * Performs a matrix multiplication + * + * Params: + * mat - mat4, first operand + * mat2 - mat4, second operand + * dest - Optional, mat4 receiving operation result. If not specified result is written to mat + * + * Returns: + * dest if specified, mat otherwise + */ +mat4.multiply = function(mat, mat2, dest) { + if(!dest) { dest = mat; } + + // Cache the matrix values (makes for huge speed increases!) + var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3]; + var a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7]; + var a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11]; + var a30 = mat[12], a31 = mat[13], a32 = mat[14], a33 = mat[15]; + + var b00 = mat2[0], b01 = mat2[1], b02 = mat2[2], b03 = mat2[3]; + var b10 = mat2[4], b11 = mat2[5], b12 = mat2[6], b13 = mat2[7]; + var b20 = mat2[8], b21 = mat2[9], b22 = mat2[10], b23 = mat2[11]; + var b30 = mat2[12], b31 = mat2[13], b32 = mat2[14], b33 = mat2[15]; + + dest[0] = b00*a00 + b01*a10 + b02*a20 + b03*a30; + dest[1] = b00*a01 + b01*a11 + b02*a21 + b03*a31; + dest[2] = b00*a02 + b01*a12 + b02*a22 + b03*a32; + dest[3] = b00*a03 + b01*a13 + b02*a23 + b03*a33; + dest[4] = b10*a00 + b11*a10 + b12*a20 + b13*a30; + dest[5] = b10*a01 + b11*a11 + b12*a21 + b13*a31; + dest[6] = b10*a02 + b11*a12 + b12*a22 + b13*a32; + dest[7] = b10*a03 + b11*a13 + b12*a23 + b13*a33; + dest[8] = b20*a00 + b21*a10 + b22*a20 + b23*a30; + dest[9] = b20*a01 + b21*a11 + b22*a21 + b23*a31; + dest[10] = b20*a02 + b21*a12 + b22*a22 + b23*a32; + dest[11] = b20*a03 + b21*a13 + b22*a23 + b23*a33; + dest[12] = b30*a00 + b31*a10 + b32*a20 + b33*a30; + dest[13] = b30*a01 + b31*a11 + b32*a21 + b33*a31; + dest[14] = b30*a02 + b31*a12 + b32*a22 + b33*a32; + dest[15] = b30*a03 + b31*a13 + b32*a23 + b33*a33; + + return dest; +}; + +/* + * mat4.multiplyVec3 + * Transforms a vec3 with the given matrix + * 4th vector component is implicitly '1' + * + * Params: + * mat - mat4 to transform the vector with + * vec - vec3 to transform + * dest - Optional, vec3 receiving operation result. If not specified result is written to vec + * + * Returns: + * dest if specified, vec otherwise + */ +mat4.multiplyVec3 = function(mat, vec, dest) { + if(!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2]; + + dest[0] = mat[0]*x + mat[4]*y + mat[8]*z + mat[12]; + dest[1] = mat[1]*x + mat[5]*y + mat[9]*z + mat[13]; + dest[2] = mat[2]*x + mat[6]*y + mat[10]*z + mat[14]; + + return dest; +}; + +/* + * mat4.multiplyVec4 + * Transforms a vec4 with the given matrix + * + * Params: + * mat - mat4 to transform the vector with + * vec - vec4 to transform + * dest - Optional, vec4 receiving operation result. If not specified result is written to vec + * + * Returns: + * dest if specified, vec otherwise + */ +mat4.multiplyVec4 = function(mat, vec, dest) { + if(!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2], w = vec[3]; + + dest[0] = mat[0]*x + mat[4]*y + mat[8]*z + mat[12]*w; + dest[1] = mat[1]*x + mat[5]*y + mat[9]*z + mat[13]*w; + dest[2] = mat[2]*x + mat[6]*y + mat[10]*z + mat[14]*w; + dest[3] = mat[3]*x + mat[7]*y + mat[11]*z + mat[15]*w; + + return dest; +}; + +/* + * mat4.translate + * Translates a matrix by the given vector + * + * Params: + * mat - mat4 to translate + * vec - vec3 specifying the translation + * dest - Optional, mat4 receiving operation result. If not specified result is written to mat + * + * Returns: + * dest if specified, mat otherwise + */ +mat4.translate = function(mat, vec, dest) { + var x = vec[0], y = vec[1], z = vec[2]; + + if(!dest || mat == dest) { + mat[12] = mat[0]*x + mat[4]*y + mat[8]*z + mat[12]; + mat[13] = mat[1]*x + mat[5]*y + mat[9]*z + mat[13]; + mat[14] = mat[2]*x + mat[6]*y + mat[10]*z + mat[14]; + mat[15] = mat[3]*x + mat[7]*y + mat[11]*z + mat[15]; + return mat; + } + + var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3]; + var a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7]; + var a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11]; + + dest[0] = a00; + dest[1] = a01; + dest[2] = a02; + dest[3] = a03; + dest[4] = a10; + dest[5] = a11; + dest[6] = a12; + dest[7] = a13; + dest[8] = a20; + dest[9] = a21; + dest[10] = a22; + dest[11] = a23; + + dest[12] = a00*x + a10*y + a20*z + mat[12]; + dest[13] = a01*x + a11*y + a21*z + mat[13]; + dest[14] = a02*x + a12*y + a22*z + mat[14]; + dest[15] = a03*x + a13*y + a23*z + mat[15]; + return dest; +}; + +/* + * mat4.scale + * Scales a matrix by the given vector + * + * Params: + * mat - mat4 to scale + * vec - vec3 specifying the scale for each axis + * dest - Optional, mat4 receiving operation result. If not specified result is written to mat + * + * Returns: + * dest if specified, mat otherwise + */ +mat4.scale = function(mat, vec, dest) { + var x = vec[0], y = vec[1], z = vec[2]; + + if(!dest || mat == dest) { + mat[0] *= x; + mat[1] *= x; + mat[2] *= x; + mat[3] *= x; + mat[4] *= y; + mat[5] *= y; + mat[6] *= y; + mat[7] *= y; + mat[8] *= z; + mat[9] *= z; + mat[10] *= z; + mat[11] *= z; + return mat; + } + + dest[0] = mat[0]*x; + dest[1] = mat[1]*x; + dest[2] = mat[2]*x; + dest[3] = mat[3]*x; + dest[4] = mat[4]*y; + dest[5] = mat[5]*y; + dest[6] = mat[6]*y; + dest[7] = mat[7]*y; + dest[8] = mat[8]*z; + dest[9] = mat[9]*z; + dest[10] = mat[10]*z; + dest[11] = mat[11]*z; + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + return dest; +}; + +/* + * mat4.rotate + * Rotates a matrix by the given angle around the specified axis + * If rotating around a primary axis (X,Y,Z) one of the specialized rotation functions should be used instead for performance + * + * Params: + * mat - mat4 to rotate + * angle - angle (in radians) to rotate + * axis - vec3 representing the axis to rotate around + * dest - Optional, mat4 receiving operation result. If not specified result is written to mat + * + * Returns: + * dest if specified, mat otherwise + */ +mat4.rotate = function(mat, angle, axis, dest) { + var x = axis[0], y = axis[1], z = axis[2]; + var len = Math.sqrt(x*x + y*y + z*z); + if (!len) { return null; } + if (len != 1) { + len = 1 / len; + x *= len; + y *= len; + z *= len; + } + + var s = Math.sin(angle); + var c = Math.cos(angle); + var t = 1-c; + + // Cache the matrix values (makes for huge speed increases!) + var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3]; + var a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7]; + var a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11]; + + // Construct the elements of the rotation matrix + var b00 = x*x*t + c, b01 = y*x*t + z*s, b02 = z*x*t - y*s; + var b10 = x*y*t - z*s, b11 = y*y*t + c, b12 = z*y*t + x*s; + var b20 = x*z*t + y*s, b21 = y*z*t - x*s, b22 = z*z*t + c; + + if(!dest) { + dest = mat; + } else if(mat != dest) { // If the source and destination differ, copy the unchanged last row + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + } + + // Perform rotation-specific matrix multiplication + dest[0] = a00*b00 + a10*b01 + a20*b02; + dest[1] = a01*b00 + a11*b01 + a21*b02; + dest[2] = a02*b00 + a12*b01 + a22*b02; + dest[3] = a03*b00 + a13*b01 + a23*b02; + + dest[4] = a00*b10 + a10*b11 + a20*b12; + dest[5] = a01*b10 + a11*b11 + a21*b12; + dest[6] = a02*b10 + a12*b11 + a22*b12; + dest[7] = a03*b10 + a13*b11 + a23*b12; + + dest[8] = a00*b20 + a10*b21 + a20*b22; + dest[9] = a01*b20 + a11*b21 + a21*b22; + dest[10] = a02*b20 + a12*b21 + a22*b22; + dest[11] = a03*b20 + a13*b21 + a23*b22; + return dest; +}; + +/* + * mat4.rotateX + * Rotates a matrix by the given angle around the X axis + * + * Params: + * mat - mat4 to rotate + * angle - angle (in radians) to rotate + * dest - Optional, mat4 receiving operation result. If not specified result is written to mat + * + * Returns: + * dest if specified, mat otherwise + */ +mat4.rotateX = function(mat, angle, dest) { + var s = Math.sin(angle); + var c = Math.cos(angle); + + // Cache the matrix values (makes for huge speed increases!) + var a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7]; + var a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11]; + + if(!dest) { + dest = mat; + } else if(mat != dest) { // If the source and destination differ, copy the unchanged rows + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + } + + // Perform axis-specific matrix multiplication + dest[4] = a10*c + a20*s; + dest[5] = a11*c + a21*s; + dest[6] = a12*c + a22*s; + dest[7] = a13*c + a23*s; + + dest[8] = a10*-s + a20*c; + dest[9] = a11*-s + a21*c; + dest[10] = a12*-s + a22*c; + dest[11] = a13*-s + a23*c; + return dest; +}; + +/* + * mat4.rotateY + * Rotates a matrix by the given angle around the Y axis + * + * Params: + * mat - mat4 to rotate + * angle - angle (in radians) to rotate + * dest - Optional, mat4 receiving operation result. If not specified result is written to mat + * + * Returns: + * dest if specified, mat otherwise + */ +mat4.rotateY = function(mat, angle, dest) { + var s = Math.sin(angle); + var c = Math.cos(angle); + + // Cache the matrix values (makes for huge speed increases!) + var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3]; + var a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11]; + + if(!dest) { + dest = mat; + } else if(mat != dest) { // If the source and destination differ, copy the unchanged rows + dest[4] = mat[4]; + dest[5] = mat[5]; + dest[6] = mat[6]; + dest[7] = mat[7]; + + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + } + + // Perform axis-specific matrix multiplication + dest[0] = a00*c + a20*-s; + dest[1] = a01*c + a21*-s; + dest[2] = a02*c + a22*-s; + dest[3] = a03*c + a23*-s; + + dest[8] = a00*s + a20*c; + dest[9] = a01*s + a21*c; + dest[10] = a02*s + a22*c; + dest[11] = a03*s + a23*c; + return dest; +}; + +/* + * mat4.rotateZ + * Rotates a matrix by the given angle around the Z axis + * + * Params: + * mat - mat4 to rotate + * angle - angle (in radians) to rotate + * dest - Optional, mat4 receiving operation result. If not specified result is written to mat + * + * Returns: + * dest if specified, mat otherwise + */ +mat4.rotateZ = function(mat, angle, dest) { + var s = Math.sin(angle); + var c = Math.cos(angle); + + // Cache the matrix values (makes for huge speed increases!) + var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3]; + var a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7]; + + if(!dest) { + dest = mat; + } else if(mat != dest) { // If the source and destination differ, copy the unchanged last row + dest[8] = mat[8]; + dest[9] = mat[9]; + dest[10] = mat[10]; + dest[11] = mat[11]; + + dest[12] = mat[12]; + dest[13] = mat[13]; + dest[14] = mat[14]; + dest[15] = mat[15]; + } + + // Perform axis-specific matrix multiplication + dest[0] = a00*c + a10*s; + dest[1] = a01*c + a11*s; + dest[2] = a02*c + a12*s; + dest[3] = a03*c + a13*s; + + dest[4] = a00*-s + a10*c; + dest[5] = a01*-s + a11*c; + dest[6] = a02*-s + a12*c; + dest[7] = a03*-s + a13*c; + + return dest; +}; + +/* + * mat4.frustum + * Generates a frustum matrix with the given bounds + * + * Params: + * left, right - scalar, left and right bounds of the frustum + * bottom, top - scalar, bottom and top bounds of the frustum + * near, far - scalar, near and far bounds of the frustum + * dest - Optional, mat4 frustum matrix will be written into + * + * Returns: + * dest if specified, a new mat4 otherwise + */ +mat4.frustum = function(left, right, bottom, top, near, far, dest) { + if(!dest) { dest = mat4.create(); } + var rl = (right - left); + var tb = (top - bottom); + var fn = (far - near); + dest[0] = (near*2) / rl; + dest[1] = 0; + dest[2] = 0; + dest[3] = 0; + dest[4] = 0; + dest[5] = (near*2) / tb; + dest[6] = 0; + dest[7] = 0; + dest[8] = (right + left) / rl; + dest[9] = (top + bottom) / tb; + dest[10] = -(far + near) / fn; + dest[11] = -1; + dest[12] = 0; + dest[13] = 0; + dest[14] = -(far*near*2) / fn; + dest[15] = 0; + return dest; +}; + +/* + * mat4.perspective + * Generates a perspective projection matrix with the given bounds + * + * Params: + * fovy - scalar, vertical field of view + * aspect - scalar, aspect ratio. typically viewport width/height + * near, far - scalar, near and far bounds of the frustum + * dest - Optional, mat4 frustum matrix will be written into + * + * Returns: + * dest if specified, a new mat4 otherwise + */ +mat4.perspective = function(fovy, aspect, near, far, dest) { + var top = near*Math.tan(fovy*Math.PI / 360.0); + var right = top*aspect; + return mat4.frustum(-right, right, -top, top, near, far, dest); +}; + +/* + * mat4.ortho + * Generates a orthogonal projection matrix with the given bounds + * + * Params: + * left, right - scalar, left and right bounds of the frustum + * bottom, top - scalar, bottom and top bounds of the frustum + * near, far - scalar, near and far bounds of the frustum + * dest - Optional, mat4 frustum matrix will be written into + * + * Returns: + * dest if specified, a new mat4 otherwise + */ +mat4.ortho = function(left, right, bottom, top, near, far, dest) { + if(!dest) { dest = mat4.create(); } + var rl = (right - left); + var tb = (top - bottom); + var fn = (far - near); + dest[0] = 2 / rl; + dest[1] = 0; + dest[2] = 0; + dest[3] = 0; + dest[4] = 0; + dest[5] = 2 / tb; + dest[6] = 0; + dest[7] = 0; + dest[8] = 0; + dest[9] = 0; + dest[10] = -2 / fn; + dest[11] = 0; + dest[12] = -(left + right) / rl; + dest[13] = -(top + bottom) / tb; + dest[14] = -(far + near) / fn; + dest[15] = 1; + return dest; +}; + +/* + * mat4.ortho + * Generates a look-at matrix with the given eye position, focal point, and up axis + * + * Params: + * eye - vec3, position of the viewer + * center - vec3, point the viewer is looking at + * up - vec3 pointing "up" + * dest - Optional, mat4 frustum matrix will be written into + * + * Returns: + * dest if specified, a new mat4 otherwise + */ +mat4.lookAt = function(eye, center, up, dest) { + if(!dest) { dest = mat4.create(); } + + var eyex = eye[0], + eyey = eye[1], + eyez = eye[2], + upx = up[0], + upy = up[1], + upz = up[2], + centerx = center[0], + centery = center[1], + centerz = center[2]; + + if (eyex == centerx && eyey == centery && eyez == centerz) { + return mat4.identity(dest); + } + + var z0,z1,z2,x0,x1,x2,y0,y1,y2,len; + + //vec3.direction(eye, center, z); + z0 = eyex - center[0]; + z1 = eyey - center[1]; + z2 = eyez - center[2]; + + // normalize (no check needed for 0 because of early return) + len = 1/Math.sqrt(z0*z0 + z1*z1 + z2*z2); + z0 *= len; + z1 *= len; + z2 *= len; + + //vec3.normalize(vec3.cross(up, z, x)); + x0 = upy*z2 - upz*z1; + x1 = upz*z0 - upx*z2; + x2 = upx*z1 - upy*z0; + len = Math.sqrt(x0*x0 + x1*x1 + x2*x2); + if (!len) { + x0 = 0; + x1 = 0; + x2 = 0; + } else { + len = 1/len; + x0 *= len; + x1 *= len; + x2 *= len; + }; + + //vec3.normalize(vec3.cross(z, x, y)); + y0 = z1*x2 - z2*x1; + y1 = z2*x0 - z0*x2; + y2 = z0*x1 - z1*x0; + + len = Math.sqrt(y0*y0 + y1*y1 + y2*y2); + if (!len) { + y0 = 0; + y1 = 0; + y2 = 0; + } else { + len = 1/len; + y0 *= len; + y1 *= len; + y2 *= len; + } + + dest[0] = x0; + dest[1] = y0; + dest[2] = z0; + dest[3] = 0; + dest[4] = x1; + dest[5] = y1; + dest[6] = z1; + dest[7] = 0; + dest[8] = x2; + dest[9] = y2; + dest[10] = z2; + dest[11] = 0; + dest[12] = -(x0*eyex + x1*eyey + x2*eyez); + dest[13] = -(y0*eyex + y1*eyey + y2*eyez); + dest[14] = -(z0*eyex + z1*eyey + z2*eyez); + dest[15] = 1; + + return dest; +}; + +/* + * mat4.str + * Returns a string representation of a mat4 + * + * Params: + * mat - mat4 to represent as a string + * + * Returns: + * string representation of mat + */ +mat4.str = function(mat) { + return '[' + mat[0] + ', ' + mat[1] + ', ' + mat[2] + ', ' + mat[3] + + ',\n '+ mat[4] + ', ' + mat[5] + ', ' + mat[6] + ', ' + mat[7] + + ',\n '+ mat[8] + ', ' + mat[9] + ', ' + mat[10] + ', ' + mat[11] + + ',\n '+ mat[12] + ', ' + mat[13] + ', ' + mat[14] + ', ' + mat[15] + ']'; +}; + +/* + * quat4 - Quaternions + */ +quat4 = {}; + +/* + * quat4.create + * Creates a new instance of a quat4 using the default array type + * Any javascript array containing at least 4 numeric elements can serve as a quat4 + * + * Params: + * quat - Optional, quat4 containing values to initialize with + * + * Returns: + * New quat4 + */ +quat4.create = function(quat) { + var dest; + + if(quat) { + dest = new glMatrixArrayType(4); + dest[0] = quat[0]; + dest[1] = quat[1]; + dest[2] = quat[2]; + dest[3] = quat[3]; + } else { + if(glMatrixArrayType === Array) + dest = new glMatrixArrayType([0,0,0,0]); + else + dest = new glMatrixArrayType(4); + } + + return dest; +}; + +/* + * quat4.set + * Copies the values of one quat4 to another + * + * Params: + * quat - quat4 containing values to copy + * dest - quat4 receiving copied values + * + * Returns: + * dest + */ +quat4.set = function(quat, dest) { + dest[0] = quat[0]; + dest[1] = quat[1]; + dest[2] = quat[2]; + dest[3] = quat[3]; + + return dest; +}; + +/* + * quat4.calculateW + * Calculates the W component of a quat4 from the X, Y, and Z components. + * Assumes that quaternion is 1 unit in length. + * Any existing W component will be ignored. + * + * Params: + * quat - quat4 to calculate W component of + * dest - Optional, quat4 receiving calculated values. If not specified result is written to quat + * + * Returns: + * dest if specified, quat otherwise + */ +quat4.calculateW = function(quat, dest) { + var x = quat[0], y = quat[1], z = quat[2]; + + if(!dest || quat == dest) { + quat[3] = -Math.sqrt(Math.abs(1.0 - x*x - y*y - z*z)); + return quat; + } + dest[0] = x; + dest[1] = y; + dest[2] = z; + dest[3] = -Math.sqrt(Math.abs(1.0 - x*x - y*y - z*z)); + return dest; +}; + +/* + * quat4.inverse + * Calculates the inverse of a quat4 + * + * Params: + * quat - quat4 to calculate inverse of + * dest - Optional, quat4 receiving inverse values. If not specified result is written to quat + * + * Returns: + * dest if specified, quat otherwise + */ +quat4.inverse = function(quat, dest) { + if(!dest || quat == dest) { + quat[0] *= -1; + quat[1] *= -1; + quat[2] *= -1; + return quat; + } + dest[0] = -quat[0]; + dest[1] = -quat[1]; + dest[2] = -quat[2]; + dest[3] = quat[3]; + return dest; +}; + +/* + * quat4.length + * Calculates the length of a quat4 + * + * Params: + * quat - quat4 to calculate length of + * + * Returns: + * Length of quat + */ +quat4.length = function(quat) { + var x = quat[0], y = quat[1], z = quat[2], w = quat[3]; + return Math.sqrt(x*x + y*y + z*z + w*w); +}; + +/* + * quat4.normalize + * Generates a unit quaternion of the same direction as the provided quat4 + * If quaternion length is 0, returns [0, 0, 0, 0] + * + * Params: + * quat - quat4 to normalize + * dest - Optional, quat4 receiving operation result. If not specified result is written to quat + * + * Returns: + * dest if specified, quat otherwise + */ +quat4.normalize = function(quat, dest) { + if(!dest) { dest = quat; } + + var x = quat[0], y = quat[1], z = quat[2], w = quat[3]; + var len = Math.sqrt(x*x + y*y + z*z + w*w); + if(len == 0) { + dest[0] = 0; + dest[1] = 0; + dest[2] = 0; + dest[3] = 0; + return dest; + } + len = 1/len; + dest[0] = x * len; + dest[1] = y * len; + dest[2] = z * len; + dest[3] = w * len; + + return dest; +}; + +/* + * quat4.multiply + * Performs a quaternion multiplication + * + * Params: + * quat - quat4, first operand + * quat2 - quat4, second operand + * dest - Optional, quat4 receiving operation result. If not specified result is written to quat + * + * Returns: + * dest if specified, quat otherwise + */ +quat4.multiply = function(quat, quat2, dest) { + if(!dest) { dest = quat; } + + var qax = quat[0], qay = quat[1], qaz = quat[2], qaw = quat[3]; + var qbx = quat2[0], qby = quat2[1], qbz = quat2[2], qbw = quat2[3]; + + dest[0] = qax*qbw + qaw*qbx + qay*qbz - qaz*qby; + dest[1] = qay*qbw + qaw*qby + qaz*qbx - qax*qbz; + dest[2] = qaz*qbw + qaw*qbz + qax*qby - qay*qbx; + dest[3] = qaw*qbw - qax*qbx - qay*qby - qaz*qbz; + + return dest; +}; + +/* + * quat4.multiplyVec3 + * Transforms a vec3 with the given quaternion + * + * Params: + * quat - quat4 to transform the vector with + * vec - vec3 to transform + * dest - Optional, vec3 receiving operation result. If not specified result is written to vec + * + * Returns: + * dest if specified, vec otherwise + */ +quat4.multiplyVec3 = function(quat, vec, dest) { + if(!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2]; + var qx = quat[0], qy = quat[1], qz = quat[2], qw = quat[3]; + + // calculate quat * vec + var ix = qw*x + qy*z - qz*y; + var iy = qw*y + qz*x - qx*z; + var iz = qw*z + qx*y - qy*x; + var iw = -qx*x - qy*y - qz*z; + + // calculate result * inverse quat + dest[0] = ix*qw + iw*-qx + iy*-qz - iz*-qy; + dest[1] = iy*qw + iw*-qy + iz*-qx - ix*-qz; + dest[2] = iz*qw + iw*-qz + ix*-qy - iy*-qx; + + return dest; +}; + +/* + * quat4.toMat3 + * Calculates a 3x3 matrix from the given quat4 + * + * Params: + * quat - quat4 to create matrix from + * dest - Optional, mat3 receiving operation result + * + * Returns: + * dest if specified, a new mat3 otherwise + */ +quat4.toMat3 = function(quat, dest) { + if(!dest) { dest = mat3.create(); } + + var x = quat[0], y = quat[1], z = quat[2], w = quat[3]; + + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + + var xx = x*x2; + var xy = x*y2; + var xz = x*z2; + + var yy = y*y2; + var yz = y*z2; + var zz = z*z2; + + var wx = w*x2; + var wy = w*y2; + var wz = w*z2; + + dest[0] = 1 - (yy + zz); + dest[1] = xy - wz; + dest[2] = xz + wy; + + dest[3] = xy + wz; + dest[4] = 1 - (xx + zz); + dest[5] = yz - wx; + + dest[6] = xz - wy; + dest[7] = yz + wx; + dest[8] = 1 - (xx + yy); + + return dest; +}; + +/* + * quat4.toMat4 + * Calculates a 4x4 matrix from the given quat4 + * + * Params: + * quat - quat4 to create matrix from + * dest - Optional, mat4 receiving operation result + * + * Returns: + * dest if specified, a new mat4 otherwise + */ +quat4.toMat4 = function(quat, dest) { + if(!dest) { dest = mat4.create(); } + + var x = quat[0], y = quat[1], z = quat[2], w = quat[3]; + + var x2 = x + x; + var y2 = y + y; + var z2 = z + z; + + var xx = x*x2; + var xy = x*y2; + var xz = x*z2; + + var yy = y*y2; + var yz = y*z2; + var zz = z*z2; + + var wx = w*x2; + var wy = w*y2; + var wz = w*z2; + + dest[0] = 1 - (yy + zz); + dest[1] = xy - wz; + dest[2] = xz + wy; + dest[3] = 0; + + dest[4] = xy + wz; + dest[5] = 1 - (xx + zz); + dest[6] = yz - wx; + dest[7] = 0; + + dest[8] = xz - wy; + dest[9] = yz + wx; + dest[10] = 1 - (xx + yy); + dest[11] = 0; + + dest[12] = 0; + dest[13] = 0; + dest[14] = 0; + dest[15] = 1; + + return dest; +}; + +/* + * quat4.slerp + * Performs a spherical linear interpolation between two quat4 + * + * Params: + * quat - quat4, first quaternion + * quat2 - quat4, second quaternion + * slerp - interpolation amount between the two inputs + * dest - Optional, quat4 receiving operation result. If not specified result is written to quat + * + * Returns: + * dest if specified, quat otherwise + */ +quat4.slerp = function(quat, quat2, slerp, dest) { + if(!dest) { dest = quat; } + + var cosHalfTheta = quat[0]*quat2[0] + quat[1]*quat2[1] + quat[2]*quat2[2] + quat[3]*quat2[3]; + + if (Math.abs(cosHalfTheta) >= 1.0){ + if(dest != quat) { + dest[0] = quat[0]; + dest[1] = quat[1]; + dest[2] = quat[2]; + dest[3] = quat[3]; + } + return dest; + } + + var halfTheta = Math.acos(cosHalfTheta); + var sinHalfTheta = Math.sqrt(1.0 - cosHalfTheta*cosHalfTheta); + + if (Math.abs(sinHalfTheta) < 0.001){ + dest[0] = (quat[0]*0.5 + quat2[0]*0.5); + dest[1] = (quat[1]*0.5 + quat2[1]*0.5); + dest[2] = (quat[2]*0.5 + quat2[2]*0.5); + dest[3] = (quat[3]*0.5 + quat2[3]*0.5); + return dest; + } + + var ratioA = Math.sin((1 - slerp)*halfTheta) / sinHalfTheta; + var ratioB = Math.sin(slerp*halfTheta) / sinHalfTheta; + + dest[0] = (quat[0]*ratioA + quat2[0]*ratioB); + dest[1] = (quat[1]*ratioA + quat2[1]*ratioB); + dest[2] = (quat[2]*ratioA + quat2[2]*ratioB); + dest[3] = (quat[3]*ratioA + quat2[3]*ratioB); + + return dest; +}; + + +/* + * quat4.str + * Returns a string representation of a quaternion + * + * Params: + * quat - quat4 to represent as a string + * + * Returns: + * string representation of quat + */ +quat4.str = function(quat) { + return '[' + quat[0] + ', ' + quat[1] + ', ' + quat[2] + ', ' + quat[3] + ']'; +}; + + +define("glMatrix", ["typedefs"], (function (global) { + return function () { + var ret, fn; + return ret || global.glMatrix; + }; +}(this))); + +/* + +Copyright (C) 2011 + - Christoph Oberhofer (ar.oberhofer@gmail.com) + - Jens Grubert (jg@jensgrubert.de) + - Gerhard Reitmayr (reitmayr@icg.tugraz.at) +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + + +/* + * glMatrixAddon.js + * Extension to the glMatrix library. The original glMatrix library + * was created by Brandon Jones. + */ + + +mat4.xVec4 = function(mat, vec, dest){ + if(!dest) { dest = vec; } + var x = vec[0], y = vec[1], z = vec[2], w = vec[3]; + + dest[0] = mat[0]*x + mat[1]*y + mat[2]*z + mat[3]*w; + dest[1] = mat[4]*x + mat[5]*y + mat[6]*z + mat[7]*w; + dest[2] = mat[8]*x + mat[9]*y + mat[10]*z + mat[11]*w; + dest[3] = mat[12]*x + mat[13]*y + mat[14]*z + mat[15]*w; + + return dest; +}; + +mat3.scale = function(mat, scalar, dest){ + if(!dest || mat == dest) { + mat[0] *= scalar; + mat[1] *= scalar; + mat[2] *= scalar; + mat[3] *= scalar; + mat[4] *= scalar; + mat[5] *= scalar; + mat[6] *= scalar; + mat[7] *= scalar; + mat[8] *= scalar; + return mat; + } + dest = mat3.create(); + dest[0] = mat[0]*scalar; + dest[1] = mat[1]*scalar; + dest[2] = mat[2]*scalar; + dest[3] = mat[3]*scalar; + dest[4] = mat[4]*scalar; + dest[5] = mat[5]*scalar; + dest[6] = mat[6]*scalar; + dest[7] = mat[7]*scalar; + dest[8] = mat[8]*scalar; + return dest; +}; + +mat3.inverse = function(mat, dest){ + if(!dest) { dest = mat; } + + var ha00 = mat[0], ha01 = mat[1], ha02 = mat[2]; + var ha10 = mat[3], ha11 = mat[4], ha12 = mat[5]; + var ha20 = mat[6], ha21 = mat[7], ha22 = mat[8]; + + var invDetA = 1/(ha00*ha11*ha22 + ha01*ha12*ha20 + ha02*ha10*ha21 - ha02*ha11*ha20 - ha01*ha10*ha22 - ha00*ha12*ha21); + dest[0] = (ha11*ha22 - ha12*ha21)*invDetA; + dest[1] = (ha02*ha21 - ha01*ha22)*invDetA; + dest[2] = (ha01*ha12 - ha02*ha11)*invDetA; + dest[3] = (ha12*ha20 - ha10*ha22)*invDetA; + dest[4] = (ha00*ha22 - ha02*ha20)*invDetA; + dest[5] = (ha02*ha10 - ha00*ha12)*invDetA; + dest[6] = (ha10*ha21 - ha11*ha20)*invDetA; + dest[7] = (ha01*ha20 - ha00*ha21)*invDetA; + dest[8] = (ha00*ha11 - ha01*ha10)*invDetA; + return dest; +}; + +mat3.multiply = function(mat, mat2, dest) { + if(!dest) { dest = mat; } + + var ha00 = mat[0], ha01 = mat[1], ha02 = mat[2]; + var ha10 = mat[3], ha11 = mat[4], ha12 = mat[5]; + var ha20 = mat[6], ha21 = mat[7], ha22 = mat[8]; + + var hb00 = mat2[0], hb01 = mat2[1], hb02 = mat2[2]; + var hb10 = mat2[3], hb11 = mat2[4], hb12 = mat2[5]; + var hb20 = mat2[6], hb21 = mat2[7], hb22 = mat2[8]; + + dest[0] = ha00*hb00 + ha01*hb10 + ha02*hb20; + dest[1] = ha00*hb01 + ha01*hb11 + ha02*hb21; + dest[2] = ha00*hb02 + ha01*hb12 + ha02*hb22; + + dest[3] = ha10*hb00 + ha11*hb10 + ha12*hb20; + dest[4] = ha10*hb01 + ha11*hb11 + ha12*hb21; + dest[5] = ha10*hb02 + ha11*hb12 + ha12*hb22; + + dest[6] = ha20*hb00 + ha21*hb10 + ha22*hb20; + dest[7] = ha20*hb01 + ha21*hb11 + ha22*hb21; + dest[8] = ha20*hb02 + ha21*hb12 + ha22*hb22; + return dest; +}; + +mat3.xVec3 = function(mat, vec, dest){ + if(!dest) { dest = vec; } + var x = vec[0], y = vec[1], z = vec[2]; + + dest[0] = mat[0]*x + mat[1]*y + mat[2]*z; + dest[1] = mat[3]*x + mat[4]*y + mat[5]*z; + dest[2] = mat[6]*x + mat[7]*y + mat[8]*z; + + return dest; +}; + +var vec4={}; + +vec4.create = function(vec){ + var dest; + + if(vec) { + dest = new glMatrixArrayType(4); + dest[0] = vec[0]; + dest[1] = vec[1]; + dest[2] = vec[2]; + dest[3] = vec[3]; + } else { + if(glMatrixArrayType === Array) + dest = new glMatrixArrayType([0,0,0,0]); + else + dest = new glMatrixArrayType(4); + } + + return dest; +}; + +vec4.project = function(vec, dest){ + if(!dest) { dest = vec; } + + dest[0] = vec[0]/vec[3]; + dest[1] = vec[1]/vec[3]; + dest[2] = vec[2]/vec[3]; + return dest; +}; + +vec4.scale = function(vec, val, dest){ + if(!dest || vec == dest) { + vec[0] *= val; + vec[1] *= val; + vec[2] *= val; + vec[4] *= val; + return vec; + } + + dest[0] = vec[0]*val; + dest[1] = vec[1]*val; + dest[2] = vec[2]*val; + dest[3] = vec[3]*val; + return dest; +}; + +vec4.xMat4 = function(vec, mat, dest){ + if(!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2], w = vec[3]; + + dest[0] = mat[0]*x + mat[4]*y + mat[8]*z + mat[12]*w; + dest[1] = mat[1]*x + mat[5]*y + mat[9]*z + mat[13]*w; + dest[2] = mat[2]*x + mat[6]*y + mat[10]*z + mat[14]*w; + dest[3] = mat[3]*x + mat[7]*y + mat[11]*z + mat[15]*w; + + return dest; +}; + + +var mat2 = {}; + +mat2.create = function(mat){ + var dest; + + if(mat) { + dest = new glMatrixArrayType(4); + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + } else { + if(glMatrixArrayType === Array) + dest = new glMatrixArrayType([0,0,0,0]); + else + dest = new glMatrixArrayType(4); + } + + return dest; +}; + +mat2.xVec2 = function(mat, vec, dest){ + if(!dest) { dest = vec; } + var x = vec[0], y = vec[1]; + + dest[0] = mat[0]*x + mat[1]*y; + dest[1] = mat[2]*x + mat[3]*y; + + return dest; +}; + +mat2.scale = function(mat, scale, dest){ + if(!dest || mat == dest) { + mat[0] *= scale; + mat[1] *= scale; + mat[2] *= scale; + mat[3] *= scale; + return mat; + } + + dest[0] = mat[0]*scale; + dest[1] = mat[1]*scale; + dest[2] = mat[2]*scale; + dest[3] = mat[3]*scale; + return dest; +}; + +mat2.determinant = function(mat){ + return mat[0]*mat[3] - mat[1]*mat[2]; +}; + +mat2.inverse = function(mat){ + var scale = 1/(mat2.determinant(mat)); + var a = mat[3]*scale, + b = -mat[1]*scale, + c = -mat[2]*scale, + d = mat[0]; + mat[0] = a; + mat[1] = b; + mat[2] = c; + mat[3] = d; + return mat; +}; + +var vec2 = {}; +vec2.create = function(vec){ + var dest; + + if(vec) { + dest = new glMatrixArrayType(2); + dest[0] = vec[0]; + dest[1] = vec[1]; + } else { + if(glMatrixArrayType === Array) + dest = new glMatrixArrayType([0,0]); + else + dest = new glMatrixArrayType(2); + } + + return dest; +}; + +vec2.subtract = function(vec, vec2, dest) { + if(!dest || vec == dest) { + vec[0] -= vec2[0]; + vec[1] -= vec2[1]; + return vec; + } + + dest[0] = vec[0] - vec2[0]; + dest[1] = vec[1] - vec2[1]; + return dest; +}; + +vec2.add = function(vec, vec2, dest) { + if(!dest || vec == dest) { + vec[0] += vec2[0]; + vec[1] += vec2[1]; + return vec; + } + + dest[0] = vec[0] + vec2[0]; + dest[1] = vec[1] + vec2[1]; + return dest; +}; + +vec2.scale = function(vec, val, dest) { + if(!dest || vec == dest) { + vec[0] *= val; + vec[1] *= val; + return vec; + } + + dest[0] = vec[0]*val; + dest[1] = vec[1]*val; + return dest; +}; + +vec2.normalize = function(vec, dest) { + if(!dest) { dest = vec; } + + var x = vec[0], y = vec[1]; + var len = Math.sqrt(x*x + y*y); + + if (!len) { + dest[0] = 0; + dest[1] = 0; + return dest; + } else if (len == 1) { + dest[0] = x; + dest[1] = y; + return dest; + } + + len = 1 / len; + dest[0] = x*len; + dest[1] = y*len; + return dest; +}; + +vec2.dot = function(vec, vec2){ + return vec[0]*vec2[0] + vec[1]*vec2[1]; +}; + +vec2.multiply = function(vec, vec2, dest){ + if(!dest) { dest = vec; } + + dest[0] = vec[0]*vec2[0]; + dest[1] = vec[1]*vec2[1]; + return dest; +}; + +/** + * @param vec vec2 to be unprojected [x,y] -> [x,y,1] + * @returns vec3 unprojected vector + */ +vec2.unproject = function(vec){ + return vec3.create([vec[0], vec[1], 1]); +}; + +vec2.length = function(vec){ + return Math.sqrt(vec[0]*vec[0] + vec[1]*vec[1]); +}; + +vec2.perspectiveProject = function(vec){ + var result = vec2.create(vec); + return vec2.scale(result, 1/vec[2]); +}; + +/** + * @param vec vec3 to be projected [x,y,z] -> [x/z,y/z] + * @returns vec2 projected vector + */ +vec3.project = function(vec){ + return vec2.scale(vec2.create(vec), 1/vec[2]); +}; + +var vec6 = {}; +vec6.scale = function(vec, val, dest){ + if(!dest || vec == dest) { + vec[0] *= val; + vec[1] *= val; + vec[2] *= val; + vec[3] *= val; + vec[4] *= val; + vec[5] *= val; + return vec; + } + + dest[0] = vec[0]*val; + dest[1] = vec[1]*val; + dest[2] = vec[2]*val; + dest[3] = vec[3]*val; + dest[4] = vec[4]*val; + dest[5] = vec[5]*val; + return dest; +}; + +vec6.subtract = function(vec, vec2, dest){ + if(!dest || vec == dest) { + vec[0] -= vec2[0]; + vec[1] -= vec2[1]; + vec[2] -= vec2[2]; + vec[3] -= vec2[3]; + vec[4] -= vec2[4]; + vec[5] -= vec2[5]; + return vec; + } + + dest[0] = vec[0] - vec2[0]; + dest[1] = vec[1] - vec2[1]; + dest[2] = vec[2] - vec2[2]; + dest[3] = vec[3] - vec2[3]; + dest[4] = vec[4] - vec2[4]; + dest[5] = vec[5] - vec2[5]; + return dest; +}; + +vec6.dot = function(vec, vec2){ + return vec[0]*vec2[0] + vec[1]*vec2[1] + vec[2]*vec2[2] + vec[3]*vec2[3] + vec[4]*vec2[4] + vec[5]*vec2[5]; +}; + +var mat6 = {}; +mat6.xVec6 = function(mat, vec, dest){ + if(!dest) { dest = vec; } + var x = vec[0], y = vec[1], z = vec[2], u = vec[3], w = vec[4], v = vec[5]; + + dest[0] = mat[0]*x + mat[1]*y + mat[2]*z + mat[3]*u + mat[4]*w + mat[5]*v; + dest[1] = mat[6]*x + mat[7]*y + mat[8]*z + mat[9]*u + mat[10]*w + mat[11]*v; + dest[2] = mat[12]*x + mat[13]*y + mat[14]*z + mat[15]*u + mat[16]*w + mat[17]*v; + dest[3] = mat[18]*x + mat[19]*y + mat[20]*z + mat[21]*u + mat[22]*w + mat[23]*v; + dest[4] = mat[24]*x + mat[25]*y + mat[26]*z + mat[27]*u + mat[28]*w + mat[29]*v; + dest[5] = mat[30]*x + mat[31]*y + mat[32]*z + mat[33]*u + mat[34]*w + mat[35]*v; + + return dest; +}; + +mat3.xVec3 = function(mat, vec, dest){ + if(!dest) { dest = vec; } + var x = vec[0], y = vec[1], z = vec[2]; + + dest[0] = mat[0]*x + mat[1]*y + mat[2]*z; + dest[1] = mat[3]*x + mat[4]*y + mat[5]*z; + dest[2] = mat[6]*x + mat[7]*y + mat[8]*z; + + return dest; +}; +define("glMatrixAddon", ["glMatrix"], (function (global) { + return function () { + var ret, fn; + return ret || global.glMatrixAddon; + }; +}(this))); + +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define('array_helper',[],function() { + + + return { + init : function(arr, val) { + var l = arr.length; + while (l--) { + arr[l] = val; + } + }, + + /** + * Shuffles the content of an array + * @return {Array} the array itself shuffled + */ + shuffle : function(arr) { + var i = arr.length - 1, j, x; + for (i; i >= 0; i--) { + j = Math.floor(Math.random() * i); + x = arr[i]; + arr[i] = arr[j]; + arr[j] = x; + } + return arr; + }, + + toPointList : function(arr) { + var i, j, row = [], rows = []; + for ( i = 0; i < arr.length; i++) { + row = []; + for ( j = 0; j < arr[i].length; j++) { + row[j] = arr[i][j]; + } + rows[i] = "[" + row.join(",") + "]"; + } + return "[" + rows.join(",\r\n") + "]"; + }, + + /** + * returns the elements which's score is bigger than the threshold + * @return {Array} the reduced array + */ + threshold : function(arr, threshold, scoreFunc) { + var i, queue = []; + for ( i = 0; i < arr.length; i++) { + if (scoreFunc.apply(arr, [arr[i]]) >= threshold) { + queue.push(arr[i]); + } + } + return queue; + }, + + maxIndex : function(arr) { + var i, max = 0; + for ( i = 0; i < arr.length; i++) { + if (arr[i] > arr[max]) { + max = i; + } + } + return max; + }, + + max : function(arr) { + var i, max = 0; + for ( i = 0; i < arr.length; i++) { + if (arr[i] > max) { + max = arr[i]; + } + } + return max; + } + }; +}); +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, vec2, vec3 */ + +define('cv_utils',['cluster', 'glMatrixAddon', "array_helper"], function(Cluster2, glMatrixAddon, ArrayHelper) { + + + /* + * cv_utils.js + * Collection of CV functions and libraries + */ + + /** + * Namespace for various CV alorithms + * @class Represents a collection of useful CV algorithms/functions + */ + + var CVUtils = {}; + + /** + * @param x x-coordinate + * @param y y-coordinate + * @return ImageReference {x,y} Coordinate + */ + CVUtils.imageRef = function(x, y) { + var that = { + x : x, + y : y, + toVec2 : function() { + return vec2.create([this.x, this.y]); + }, + toVec3 : function() { + return vec3.create([this.x, this.y, 1]); + }, + round : function() { + this.x = this.x > 0.0 ? Math.floor(this.x + 0.5) : Math.floor(this.x - 0.5); + this.y = this.y > 0.0 ? Math.floor(this.y + 0.5) : Math.floor(this.y - 0.5); + return this; + } + }; + return that; + }; + + /** + * Computes an integral image of a given grayscale image. + * @param imageDataContainer {ImageDataContainer} the image to be integrated + */ + CVUtils.computeIntegralImage2 = function(imageWrapper, integralWrapper) { + var imageData = imageWrapper.data; + var width = imageWrapper.size.x; + var height = imageWrapper.size.y; + var integralImageData = integralWrapper.data; + var sum = 0, posA = 0, posB = 0, posC = 0, posD = 0, x, y; + + // sum up first column + posB = width; + sum = 0; + for ( y = 1; y < height; y++) { + sum += imageData[posA]; + integralImageData[posB] += sum; + posA += width; + posB += width; + } + + posA = 0; + posB = 1; + sum = 0; + for ( x = 1; x < width; x++) { + sum += imageData[posA]; + integralImageData[posB] += sum; + posA++; + posB++; + } + + for ( y = 1; y < height; y++) { + posA = y * width + 1; + posB = (y - 1) * width + 1; + posC = y * width; + posD = (y - 1) * width; + for ( x = 1; x < width; x++) { + integralImageData[posA] += imageData[posA] + integralImageData[posB] + integralImageData[posC] - integralImageData[posD]; + posA++; + posB++; + posC++; + posD++; + } + } + }; + + CVUtils.computeIntegralImage = function(imageWrapper, integralWrapper) { + var imageData = imageWrapper.data; + var width = imageWrapper.size.x; + var height = imageWrapper.size.y; + var integralImageData = integralWrapper.data; + var sum = 0; + + // sum up first row + for (var i = 0; i < width; i++) { + sum += imageData[i]; + integralImageData[i] = sum; + } + + for (var v = 1; v < height; v++) { + sum = 0; + for (var u = 0; u < width; u++) { + sum += imageData[v * width + u]; + integralImageData[((v) * width) + u] = sum + integralImageData[(v - 1) * width + u]; + } + } + }; + + CVUtils.thresholdImage = function(imageWrapper, threshold, targetWrapper) { + if (!targetWrapper) { + targetWrapper = imageWrapper; + } + var imageData = imageWrapper.data, length = imageData.length, targetData = targetWrapper.data; + + while (length--) { + targetData[length] = imageData[length] < threshold ? 0 : 1; + } + }; + + CVUtils.computeHistogram = function(imageWrapper) { + var imageData = imageWrapper.data, length = imageData.length, i, hist = new Int32Array(256); + + // init histogram + for ( i = 0; i < 256; i++) { + hist[i] = 0; + } + + while (length--) { + hist[imageData[length]]++; + } + return hist; + }; + + CVUtils.otsuThreshold = function(imageWrapper, targetWrapper) { + var hist, threshold; + + function px(init, end) { + var sum = 0, i; + for ( i = init; i <= end; i++) { + sum += hist[i]; + } + return sum; + } + + function mx(init, end) { + var i, sum = 0; + + for ( i = init; i <= end; i++) { + sum += i * hist[i]; + } + + return sum; + } + + function determineThreshold() { + var vet = [0], p1, p2, p12, k, m1, m2, m12; + + hist = CVUtils.computeHistogram(imageWrapper); + for ( k = 1; k < 255; k++) { + p1 = px(0, k); + p2 = px(k + 1, 255); + p12 = p1 * p2; + if (p12 === 0) { + p12 = 1; + } + m1 = mx(0, k) * p2; + m2 = mx(k + 1, 255) * p1; + m12 = m1 - m2; + vet[k] = m12 * m12 / p12; + } + return ArrayHelper.maxIndex(vet); + } + + threshold = determineThreshold(); + CVUtils.thresholdImage(imageWrapper, threshold, targetWrapper); + return threshold; + }; + + // local thresholding + CVUtils.computeBinaryImage = function(imageWrapper, integralWrapper, targetWrapper) { + CVUtils.computeIntegralImage(imageWrapper, integralWrapper); + + if (!targetWrapper) { + targetWrapper = imageWrapper; + } + var imageData = imageWrapper.data; + var targetData = targetWrapper.data; + var width = imageWrapper.size.x; + var height = imageWrapper.size.y; + var integralImageData = integralWrapper.data; + var sum = 0, v, u, kernel = 3, A, B, C, D, avg, size = (kernel * 2 + 1) * (kernel * 2 + 1); + + // clear out top & bottom-border + for ( v = 0; v <= kernel; v++) { + for ( u = 0; u < width; u++) { + targetData[((v) * width) + u] = 0; + targetData[(((height - 1) - v) * width) + u] = 0; + } + } + + // clear out left & right border + for ( v = kernel; v < height - kernel; v++) { + for ( u = 0; u <= kernel; u++) { + targetData[((v) * width) + u] = 0; + targetData[((v) * width) + (width - 1 - u)] = 0; + } + } + + for ( v = kernel + 1; v < height - kernel - 1; v++) { + for ( u = kernel + 1; u < width - kernel; u++) { + A = integralImageData[(v - kernel - 1) * width + (u - kernel - 1)]; + B = integralImageData[(v - kernel - 1) * width + (u + kernel)]; + C = integralImageData[(v + kernel) * width + (u - kernel - 1)]; + D = integralImageData[(v + kernel) * width + (u + kernel)]; + sum = D - C - B + A; + avg = sum / (size); + targetData[v * width + u] = imageData[v * width + u] > (avg + 5) ? 0 : 1; + } + } + }; + + CVUtils.cluster = function(points, threshold, property) { + var i, k, cluster, point, clusters = []; + + if (!property) { + property = "rad"; + } + + function addToCluster(point) { + var found = false; + for ( k = 0; k < clusters.length; k++) { + cluster = clusters[k]; + if (cluster.fits(point)) { + cluster.add(point); + found = true; + } + } + return found; + } + + // iterate over each cloud + for ( i = 0; i < points.length; i++) { + point = Cluster2.createPoint(points[i], i, property); + if (!addToCluster(point)) { + clusters.push(Cluster2.create(point, threshold)); + } + } + + return clusters; + + }; + + CVUtils.Tracer = { + trace : function(points, vec) { + var iteration, maxIterations = 10, top = [], result = [], centerPos = 0, currentPos = 0; + + function trace(idx, forward) { + var from, to, toIdx, predictedPos, thresholdX = 1, thresholdY = Math.abs(vec[1] / 10), found = false; + + function match(pos, predicted) { + if (pos.x > (predicted.x - thresholdX) && pos.x < (predicted.x + thresholdX) && pos.y > (predicted.y - thresholdY) && pos.y < (predicted.y + thresholdY)) { + return true; + } else { + return false; + } + } + + // check if the next index is within the vec specifications + // if not, check as long as the threshold is met + + from = points[idx]; + if (forward) { + predictedPos = { + x : from.x + vec[0], + y : from.y + vec[1] + }; + } else { + predictedPos = { + x : from.x - vec[0], + y : from.y - vec[1] + }; + } + + toIdx = forward ? idx + 1 : idx - 1; + to = points[toIdx]; + while (to && ( found = match(to, predictedPos)) !== true && (Math.abs(to.y - from.y) < vec[1])) { + toIdx = forward ? toIdx + 1 : toIdx - 1; + to = points[toIdx]; + } + + return found ? toIdx : null; + } + + for ( iteration = 0; iteration < maxIterations; iteration++) { + // randomly select point to start with + centerPos = Math.floor(Math.random() * points.length); + + // trace forward + top = []; + currentPos = centerPos; + top.push(points[currentPos]); + while (( currentPos = trace(currentPos, true)) !== null) { + top.push(points[currentPos]); + } + if (centerPos > 0) { + currentPos = centerPos; + while (( currentPos = trace(currentPos, false)) !== null) { + top.push(points[currentPos]); + } + } + + if (top.length > result.length) { + result = top; + } + } + + return result; + + } + }; + + CVUtils.DILATE = 1; + CVUtils.ERODE = 2; + + CVUtils.dilate = function(inImageWrapper, outImageWrapper) { + var v, u, inImageData = inImageWrapper.data, outImageData = outImageWrapper.data, height = inImageWrapper.size.y, width = inImageWrapper.size.x, sum, yStart1, yStart2, xStart1, xStart2; + + for ( v = 1; v < height - 1; v++) { + for ( u = 1; u < width - 1; u++) { + yStart1 = v - 1; + yStart2 = v + 1; + xStart1 = u - 1; + xStart2 = u + 1; + sum = inImageData[yStart1 * width + xStart1]/* + inImageData[yStart1*width+u] */ + inImageData[yStart1 * width + xStart2] + + /* inImageData[v*width+xStart1] + */ + inImageData[v * width + u] + /* inImageData[v*width+xStart2] +*/ + inImageData[yStart2 * width + xStart1]/* + inImageData[yStart2*width+u]*/ + inImageData[yStart2 * width + xStart2]; + outImageData[v * width + u] = sum > 0 ? 1 : 0; + } + } + }; + + CVUtils.erode = function(inImageWrapper, outImageWrapper) { + var v, u, inImageData = inImageWrapper.data, outImageData = outImageWrapper.data, height = inImageWrapper.size.y, width = inImageWrapper.size.x, sum, yStart1, yStart2, xStart1, xStart2; + + for ( v = 1; v < height - 1; v++) { + for ( u = 1; u < width - 1; u++) { + yStart1 = v - 1; + yStart2 = v + 1; + xStart1 = u - 1; + xStart2 = u + 1; + sum = inImageData[yStart1 * width + xStart1]/* + inImageData[yStart1*width+u] */ + inImageData[yStart1 * width + xStart2] + + /* inImageData[v*width+xStart1] + */ + inImageData[v * width + u] + /* inImageData[v*width+xStart2] +*/ + inImageData[yStart2 * width + xStart1]/* + inImageData[yStart2*width+u]*/ + inImageData[yStart2 * width + xStart2]; + outImageData[v * width + u] = sum === 5 ? 1 : 0; + } + } + }; + + CVUtils.subtract = function(aImageWrapper, bImageWrapper, resultImageWrapper) { + if (!resultImageWrapper) { + resultImageWrapper = aImageWrapper; + } + var length = aImageWrapper.data.length, aImageData = aImageWrapper.data, bImageData = bImageWrapper.data, cImageData = resultImageWrapper.data; + + while (length--) { + cImageData[length] = aImageData[length] - bImageData[length]; + } + }; + + CVUtils.bitwiseOr = function(aImageWrapper, bImageWrapper, resultImageWrapper) { + if (!resultImageWrapper) { + resultImageWrapper = aImageWrapper; + } + var length = aImageWrapper.data.length, aImageData = aImageWrapper.data, bImageData = bImageWrapper.data, cImageData = resultImageWrapper.data; + + while (length--) { + cImageData[length] = aImageData[length] || bImageData[length]; + } + }; + + CVUtils.countNonZero = function(imageWrapper) { + var length = imageWrapper.data.length, data = imageWrapper.data, sum = 0; + + while (length--) { + sum += data[length]; + } + return sum; + }; + + CVUtils.topGeneric = function(list, top, scoreFunc) { + var i, minIdx = 0, min = 0, queue = [], score, hit, pos; + + for ( i = 0; i < top; i++) { + queue[i] = { + score : 0, + item : null + }; + } + + for ( i = 0; i < list.length; i++) { + score = scoreFunc.apply(this, [list[i]]); + if (score > min) { + hit = queue[minIdx]; + hit.score = score; + hit.item = list[i]; + min = Number.MAX_VALUE; + for ( pos = 0; pos < top; pos++) { + if (queue[pos].score < min) { + min = queue[pos].score; + minIdx = pos; + } + } + } + } + + return queue; + }; + + CVUtils.grayArrayFromImage = function(htmlImage, offsetX, ctx, array) { + ctx.drawImage(htmlImage, offsetX, 0, htmlImage.width, htmlImage.height); + var ctxData = ctx.getImageData(offsetX, 0, htmlImage.width, htmlImage.height).data; + CVUtils.computeGray(ctxData, array); + }; + + CVUtils.grayArrayFromContext = function(ctx, size, offset, array) { + var ctxData = ctx.getImageData(offset.x, offset.y, size.x, size.y).data; + CVUtils.computeGray(ctxData, array); + }; + + CVUtils.grayAndHalfSampleFromCanvasData = function(canvasData, size, outArray) { + var topRowIdx = 0; + var bottomRowIdx = size.x; + var endIdx = Math.floor(canvasData.length / 4); + var outWidth = size.x / 2; + var outImgIdx = 0; + var inWidth = size.x; + var i; + + while (bottomRowIdx < endIdx) { + for ( i = 0; i < outWidth; i++) { + outArray[outImgIdx] = Math.floor(((0.299 * canvasData[topRowIdx * 4 + 0] + 0.587 * canvasData[topRowIdx * 4 + 1] + 0.114 * canvasData[topRowIdx * 4 + 2]) + (0.299 * canvasData[(topRowIdx + 1) * 4 + 0] + 0.587 * canvasData[(topRowIdx + 1) * 4 + 1] + 0.114 * canvasData[(topRowIdx + 1) * 4 + 2]) + (0.299 * canvasData[(bottomRowIdx) * 4 + 0] + 0.587 * canvasData[(bottomRowIdx) * 4 + 1] + 0.114 * canvasData[(bottomRowIdx) * 4 + 2]) + (0.299 * canvasData[(bottomRowIdx + 1) * 4 + 0] + 0.587 * canvasData[(bottomRowIdx + 1) * 4 + 1] + 0.114 * canvasData[(bottomRowIdx + 1) * 4 + 2])) / 4); + outImgIdx++; + topRowIdx = topRowIdx + 2; + bottomRowIdx = bottomRowIdx + 2; + } + topRowIdx = topRowIdx + inWidth; + bottomRowIdx = bottomRowIdx + inWidth; + } + + }; + + CVUtils.computeGray = function(imageData, outArray) { + var l = imageData.length / 4; + var i = 0; + for ( i = 0; i < l; i++) { + //outArray[i] = (0.299*imageData[i*4+0] + 0.587*imageData[i*4+1] + 0.114*imageData[i*4+2]); + + outArray[i] = Math.floor(0.299 * imageData[i * 4 + 0] + 0.587 * imageData[i * 4 + 1] + 0.114 * imageData[i * 4 + 2]); + } + }; + + CVUtils.loadImageArray = function(src, callback, canvas) { + if (!canvas) + canvas = document.createElement('canvas'); + var img = new Image(); + img.callback = callback; + img.onload = function() { + canvas.width = this.width; + canvas.height = this.height; + var ctx = canvas.getContext('2d'); + ctx.drawImage(this, 0, 0); + var array = new Uint8Array(this.width * this.height); + ctx.drawImage(this, 0, 0); + var data = ctx.getImageData(0, 0, this.width, this.height).data; + CVUtils.computeGray(data, array); + this.callback(array, { + x : this.width, + y : this.height + }, this); + }; + img.src = src; + }; + + /** + * @param inImg {ImageWrapper} input image to be sampled + * @param outImg {ImageWrapper} to be stored in + */ + CVUtils.halfSample = function(inImgWrapper, outImgWrapper) { + var inImg = inImgWrapper.data; + var inWidth = inImgWrapper.size.x; + var outImg = outImgWrapper.data; + var topRowIdx = 0; + var bottomRowIdx = inWidth; + var endIdx = inImg.length; + var outWidth = inWidth / 2; + var outImgIdx = 0; + while (bottomRowIdx < endIdx) { + for (var i = 0; i < outWidth; i++) { + outImg[outImgIdx] = Math.floor((inImg[topRowIdx] + inImg[topRowIdx + 1] + inImg[bottomRowIdx] + inImg[bottomRowIdx + 1]) / 4); + outImgIdx++; + topRowIdx = topRowIdx + 2; + bottomRowIdx = bottomRowIdx + 2; + } + topRowIdx = topRowIdx + inWidth; + bottomRowIdx = bottomRowIdx + inWidth; + } + }; + + CVUtils.hsv2rgb = function(hsv, rgb) { + var h = hsv[0], s = hsv[1], v = hsv[2], c = v * s, x = c * (1 - Math.abs((h / 60) % 2 - 1)), m = v - c, r = 0, g = 0, b = 0; + rgb = rgb || [0, 0, 0]; + + if (h < 60) { + r = c; + g = x; + } else if (h < 120) { + r = x; + g = c; + } else if (h < 180) { + g = c; + b = x; + } else if (h < 240) { + g = x; + b = c; + } else if (h < 300) { + r = x; + b = c; + } else if (h < 360) { + r = c; + b = x; + } + rgb[0] = ((r + m) * 255) | 0; + rgb[1] = ((g + m) * 255) | 0; + rgb[2] = ((b + m) * 255) | 0; + return rgb; + }; + + return (CVUtils); +}); + + +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, vec2, mat2 */ + +define('image_wrapper',[ + "subImage", + "cv_utils", + "array_helper" + ], + function(SubImage, CVUtils, ArrayHelper) { + + + + /** + * Represents a basic image combining the data and size. + * In addition, some methods for manipulation are contained. + * @param size {x,y} The size of the image in pixel + * @param data {Array} If given, a flat array containing the pixel data + * @param ArrayType {Type} If given, the desired DataType of the Array (may be typed/non-typed) + * @param initialize {Boolean} Indicating if the array should be initialized on creation. + * @returns {ImageWrapper} + */ + function ImageWrapper(size, data, ArrayType, initialize) { + if (!data) { + if (ArrayType) { + this.data = new ArrayType(size.x * size.y); + if (ArrayType === Array && initialize) { + ArrayHelper.init(this.data, 0); + } + } else { + this.data = new Uint8Array(size.x * size.y); + if (Uint8Array === Array && initialize) { + ArrayHelper.init(this.data, 0); + } + } + + } else { + this.data = data; + } + this.size = size; + } + + /** + * tests if a position is within the image with a given offset + * @param imgRef {x, y} The location to test + * @param border Number the padding value in pixel + * @returns {Boolean} true if location inside the image's border, false otherwise + * @see cvd/image.h + */ + ImageWrapper.prototype.inImageWithBorder = function(imgRef, border) { + return (imgRef.x >= border) && (imgRef.y >= border) && (imgRef.x < (this.size.x - border)) && (imgRef.y < (this.size.y - border)); + }; + + /** + * Transforms an image according to the given affine-transformation matrix. + * @param inImg ImageWrapper a image containing the information to be extracted. + * @param outImg ImageWrapper the image to be filled. The whole image out image is filled by the in image. + * @param M mat2 the matrix used to map point in the out matrix to those in the in matrix + * @param inOrig vec2 origin in the in image + * @param outOrig vec2 origin in the out image + * @returns Number the number of pixels not in the in image + * @see cvd/vision.h + */ + ImageWrapper.transform = function(inImg, outImg, M, inOrig, outOrig) { + var w = outImg.size.x, h = outImg.size.y, iw = inImg.size.x, ih = inImg.size.y; + var across = vec2.create([M[0], M[2]]); + var down = vec2.create([M[1], M[3]]); + var defaultValue = 0; + + var p0 = vec2.subtract(inOrig, mat2.xVec2(M, outOrig, vec2.create()), vec2.create()); + + var min_x = p0[0], min_y = p0[1]; + var max_x = min_x, max_y = min_y; + var p, i, j; + + var sampleFunc = ImageWrapper.sample; + + if (across[0] < 0) + min_x += w * across[0]; + else + max_x += w * across[0]; + + if (down[0] < 0) + min_x += h * down[0]; + else + max_x += h * down[0]; + + if (across[1] < 0) + min_y += w * across[1]; + else + max_y += w * across[1]; + + if (down[1] < 0) + min_y += h * down[1]; + else + max_y += h * down[1]; + + var carrigeReturn = vec2.subtract(down, vec2.scale(across, w, vec2.create()), vec2.create()); + + if (min_x >= 0 && min_y >= 0 && max_x < iw - 1 && max_y < ih - 1) { + p = p0; + for ( i = 0; i < h; ++i, vec2.add(p, carrigeReturn)) + for ( j = 0; j < w; ++j, vec2.add(p, across)) + outImg.set(j, i, sampleFunc(inImg, p[0], p[1])); + return 0; + } else { + var x_bound = iw - 1; + var y_bound = ih - 1; + var count = 0; + p = p0; + for ( i = 0; i < h; ++i, vec2.add(p, carrigeReturn)) { + for ( j = 0; j < w; ++j, vec2.add(p, across)) { + if (0 <= p[0] && 0 <= p[1] && p[0] < x_bound && p[1] < y_bound) { + outImg.set(j, i, sampleFunc(inImg, p[0], p[1])); + } else { + outImg.set(j, i, defaultValue); ++count; + } + } + } + return count; + } + }; + + /** + * Performs bilinear sampling + * @param inImg Image to extract sample from + * @param x the x-coordinate + * @param y the y-coordinate + * @returns the sampled value + * @see cvd/vision.h + */ + ImageWrapper.sample = function(inImg, x, y) { + var lx = Math.floor(x); + var ly = Math.floor(y); + var w = inImg.size.x; + var base = ly * inImg.size.x + lx; + var a = inImg.data[base + 0]; + var b = inImg.data[base + 1]; + var c = inImg.data[base + w]; + var d = inImg.data[base + w + 1]; + var e = a - b; + x -= lx; + y -= ly; + + var result = Math.floor(x * (y * (e - c + d) - e) + y * (c - a) + a); + return result; + }; + + /** + * Initializes a given array. Sets each element to zero. + * @param array {Array} The array to initialize + */ + ImageWrapper.clearArray = function(array) { + var l = array.length; + while (l--) { + array[l] = 0; + } + }; + + /** + * Creates a {SubImage} from the current image ({this}). + * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner) + * @param size {ImageRef} The size of the resulting image + * @returns {SubImage} A shared part of the original image + */ + ImageWrapper.prototype.subImage = function(from, size) { + return new SubImage(from, size, this); + }; + + /** + * Creates an {ImageWrapper) and copies the needed underlying image-data area + * @param imageWrapper {ImageWrapper} The target {ImageWrapper} where the data should be copied + * @param from {ImageRef} The location where to copy from (top-left location) + */ + ImageWrapper.prototype.subImageAsCopy = function(imageWrapper, from) { + var sizeY = imageWrapper.size.y, sizeX = imageWrapper.size.x; + var x, y; + for ( x = 0; x < sizeX; x++) { + for ( y = 0; y < sizeY; y++) { + imageWrapper.data[y * sizeX + x] = this.data[(from.y + y) * this.size.x + from.x + x]; + } + } + }; + + ImageWrapper.prototype.copyTo = function(imageWrapper) { + var length = this.data.length, srcData = this.data, dstData = imageWrapper.data; + + while (length--) { + dstData[length] = srcData[length]; + } + }; + + /** + * Retrieves a given pixel position from the image + * @param x {Number} The x-position + * @param y {Number} The y-position + * @returns {Number} The grayscale value at the pixel-position + */ + ImageWrapper.prototype.get = function(x, y) { + return this.data[y * this.size.x + x]; + }; + + /** + * Retrieves a given pixel position from the image + * @param x {Number} The x-position + * @param y {Number} The y-position + * @returns {Number} The grayscale value at the pixel-position + */ + ImageWrapper.prototype.getSafe = function(x, y) { + var i; + + if (!this.indexMapping) { + this.indexMapping = { + x : [], + y : [] + }; + for (i = 0; i < this.size.x; i++) { + this.indexMapping.x[i] = i; + this.indexMapping.x[i + this.size.x] = i; + } + for (i = 0; i < this.size.y; i++) { + this.indexMapping.y[i] = i; + this.indexMapping.y[i + this.size.y] = i; + } + } + return this.data[(this.indexMapping.y[y + this.size.y]) * this.size.x + this.indexMapping.x[x + this.size.x]]; + }; + + /** + * Sets a given pixel position in the image + * @param x {Number} The x-position + * @param y {Number} The y-position + * @param value {Number} The grayscale value to set + * @returns {ImageWrapper} The Image itself (for possible chaining) + */ + ImageWrapper.prototype.set = function(x, y, value) { + this.data[y * this.size.x + x] = value; + return this; + }; + + /** + * Sets the border of the image (1 pixel) to zero + */ + ImageWrapper.prototype.zeroBorder = function() { + var i, width = this.size.x, height = this.size.y, data = this.data; + for ( i = 0; i < width; i++) { + data[i] = data[(height - 1) * width + i] = 0; + } + for ( i = 1; i < height - 1; i++) { + data[i * width] = data[i * width + (width - 1)] = 0; + } + }; + + /** + * Inverts a binary image in place + */ + ImageWrapper.prototype.invert = function() { + var data = this.data, length = data.length; + + while (length--) { + data[length] = data[length] ? 0 : 1; + } + + }; + + ImageWrapper.prototype.convolve = function(kernel) { + var x, y, kx, ky, kSize = (kernel.length / 2) | 0, accu = 0; + for ( y = 0; y < this.size.y; y++) { + for ( x = 0; x < this.size.x; x++) { + accu = 0; + for ( ky = -kSize; ky <= kSize; ky++) { + for ( kx = -kSize; kx <= kSize; kx++) { + accu += kernel[ky+kSize][kx + kSize] * this.getSafe(x + kx, y + ky); + } + } + this.data[y * this.size.x + x] = accu; + } + } + }; + + ImageWrapper.prototype.moments = function(labelcount) { + var data = this.data, + x, + y, + height = this.size.y, + width = this.size.x, + val, + ysq, + labelsum = [], + i, + label, + mu11, + mu02, + mu20, + x_, + y_, + tmp, + result = [], + PI = Math.PI, + PI_4 = PI / 4; + + if (labelcount <= 0) { + return result; + } + + for ( i = 0; i < labelcount; i++) { + labelsum[i] = { + m00 : 0, + m01 : 0, + m10 : 0, + m11 : 0, + m02 : 0, + m20 : 0, + theta : 0, + rad : 0 + }; + } + + for ( y = 0; y < height; y++) { + ysq = y * y; + for ( x = 0; x < width; x++) { + val = data[y * width + x]; + if (val > 0) { + label = labelsum[val - 1]; + label.m00 += 1; + label.m01 += y; + label.m10 += x; + label.m11 += x * y; + label.m02 += ysq; + label.m20 += x * x; + } + } + } + + for ( i = 0; i < labelcount; i++) { + label = labelsum[i]; + if (!isNaN(label.m00) && label.m00 !== 0) { + x_ = label.m10 / label.m00; + y_ = label.m01 / label.m00; + mu11 = label.m11 / label.m00 - x_ * y_; + mu02 = label.m02 / label.m00 - y_ * y_; + mu20 = label.m20 / label.m00 - x_ * x_; + tmp = (mu02 - mu20) / (2 * mu11); + tmp = 0.5 * Math.atan(tmp) + (mu11 >= 0 ? PI_4 : -PI_4 ) + PI; + label.theta = (tmp * 180 / PI + 90) % 180 - 90; + if (label.theta < 0) { + label.theta += 180; + } + label.rad = tmp > PI ? tmp - PI : tmp; + label.vec = vec2.create([Math.cos(tmp), Math.sin(tmp)]); + result.push(label); + } + } + + return result; + }; + + /** + * Displays the {ImageWrapper} in a given canvas + * @param canvas {Canvas} The canvas element to write to + * @param scale {Number} Scale which is applied to each pixel-value + */ + ImageWrapper.prototype.show = function(canvas, scale) { + var ctx, + frame, + data, + current, + pixel, + x, + y; + + if (!scale) { + scale = 1.0; + } + ctx = canvas.getContext('2d'); + canvas.width = this.size.x; + canvas.height = this.size.y; + frame = ctx.getImageData(0, 0, canvas.width, canvas.height); + data = frame.data; + current = 0; + for (y = 0; y < this.size.y; y++) { + for (x = 0; x < this.size.x; x++) { + pixel = y * this.size.x + x; + current = this.get(x, y) * scale; + data[pixel * 4 + 0] = current; + data[pixel * 4 + 1] = current; + data[pixel * 4 + 2] = current; + data[pixel * 4 + 3] = 255; + } + } + //frame.data = data; + ctx.putImageData(frame, 0, 0); + }; + + /** + * Displays the {SubImage} in a given canvas + * @param canvas {Canvas} The canvas element to write to + * @param scale {Number} Scale which is applied to each pixel-value + */ + ImageWrapper.prototype.overlay = function(canvas, scale, from) { + if (!scale || scale < 0 || scale > 360) { + scale = 360; + } + var hsv = [0, 1, 1]; + var rgb = [0, 0, 0]; + var whiteRgb = [255, 255, 255]; + var blackRgb = [0, 0, 0]; + var result = []; + var ctx = canvas.getContext('2d'); + var frame = ctx.getImageData(from.x, from.y, this.size.x, this.size.y); + var data = frame.data; + var length = this.data.length; + while (length--) { + hsv[0] = this.data[length] * scale; + result = hsv[0] <= 0 ? whiteRgb : hsv[0] >= 360 ? blackRgb : CVUtils.hsv2rgb(hsv, rgb); + data[length * 4 + 0] = result[0]; + data[length * 4 + 1] = result[1]; + data[length * 4 + 2] = result[2]; + data[length * 4 + 3] = 255; + } + ctx.putImageData(frame, from.x, from.y); + }; + + return (ImageWrapper); +}); +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +/** + * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization + */ +define('tracer',[],function() { + + + var Tracer = { + searchDirections : [[0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [-1, -1], [-1, 0], [-1, 1]], + create : function(imageWrapper, labelWrapper) { + var imageData = imageWrapper.data, + labelData = labelWrapper.data, + searchDirections = this.searchDirections, + width = imageWrapper.size.x, + pos; + + function trace(current, color, label, edgelabel) { + var i, + y, + x; + + for ( i = 0; i < 7; i++) { + y = current.cy + searchDirections[current.dir][0]; + x = current.cx + searchDirections[current.dir][1]; + pos = y * width + x; + if ((imageData[pos] === color) && ((labelData[pos] === 0) || (labelData[pos] === label))) { + labelData[pos] = label; + current.cy = y; + current.cx = x; + return true; + } else { + if (labelData[pos] === 0) { + labelData[pos] = edgelabel; + } + current.dir = (current.dir + 1) % 8; + } + } + return false; + } + + function vertex2D(x, y, dir) { + return { + dir : dir, + x : x, + y : y, + next : null, + prev : null + }; + } + + function contourTracing(sy, sx, label, color, edgelabel) { + var Fv = null, + Cv, + P, + ldir, + current = { + cx : sx, + cy : sy, + dir : 0 + }; + + if (trace(current, color, label, edgelabel)) { + Fv = vertex2D(sx, sy, current.dir); + Cv = Fv; + ldir = current.dir; + P = vertex2D(current.cx, current.cy, 0); + P.prev = Cv; + Cv.next = P; + P.next = null; + Cv = P; + do { + current.dir = (current.dir + 6) % 8; + trace(current, color, label, edgelabel); + if (ldir != current.dir) { + Cv.dir = current.dir; + P = vertex2D(current.cx, current.cy, 0); + P.prev = Cv; + Cv.next = P; + P.next = null; + Cv = P; + } else { + Cv.dir = ldir; + Cv.x = current.cx; + Cv.y = current.cy; + } + ldir = current.dir; + } while(current.cx != sx || current.cy != sy); + Fv.prev = Cv.prev; + Cv.prev.next = Fv; + } + return Fv; + } + + return { + trace : function(current, color, label, edgelabel) { + return trace(current, color, label, edgelabel); + }, + contourTracing : function(sy, sx, label, color, edgelabel) { + return contourTracing(sy, sx, label, color, edgelabel); + } + }; + } + }; + + return (Tracer); +}); + +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +/** + * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization + */ +define('rasterizer',["tracer"], function(Tracer) { + + + var Rasterizer = { + createContour2D : function() { + return { + dir : null, + index : null, + firstVertex : null, + insideContours : null, + nextpeer : null, + prevpeer : null + }; + }, + CONTOUR_DIR : { + CW_DIR : 0, + CCW_DIR : 1, + UNKNOWN_DIR : 2 + }, + DIR : { + OUTSIDE_EDGE : -32767, + INSIDE_EDGE : -32766 + }, + create : function(imageWrapper, labelWrapper) { + var imageData = imageWrapper.data, + labelData = labelWrapper.data, + width = imageWrapper.size.x, + height = imageWrapper.size.y, + tracer = Tracer.create(imageWrapper, labelWrapper); + + return { + rasterize : function(depthlabel) { + var color, + bc, + lc, + labelindex, + cx, + cy, + colorMap = [], + vertex, + p, + cc, + sc, + pos, + connectedCount = 0, + i; + + for ( i = 0; i < 400; i++) { + colorMap[i] = 0; + } + + colorMap[0] = imageData[0]; + cc = null; + for ( cy = 1; cy < height - 1; cy++) { + labelindex = 0; + bc = colorMap[0]; + for ( cx = 1; cx < width - 1; cx++) { + pos = cy * width + cx; + if (labelData[pos] === 0) { + color = imageData[pos]; + if (color !== bc) { + if (labelindex === 0) { + lc = connectedCount + 1; + colorMap[lc] = color; + bc = color; + vertex = tracer.contourTracing(cy, cx, lc, color, Rasterizer.DIR.OUTSIDE_EDGE); + if (vertex !== null) { + connectedCount++; + labelindex = lc; + p = Rasterizer.createContour2D(); + p.dir = Rasterizer.CONTOUR_DIR.CW_DIR; + p.index = labelindex; + p.firstVertex = vertex; + p.nextpeer = cc; + p.insideContours = null; + if (cc !== null) { + cc.prevpeer = p; + } + cc = p; + } + } else { + vertex = tracer.contourTracing(cy, cx, Rasterizer.DIR.INSIDE_EDGE, color, labelindex); + if (vertex !== null) { + p = Rasterizer.createContour2D(); + p.firstVertex = vertex; + p.insideContours = null; + if (depthlabel === 0) { + p.dir = Rasterizer.CONTOUR_DIR.CCW_DIR; + } else { + p.dir = Rasterizer.CONTOUR_DIR.CW_DIR; + } + p.index = depthlabel; + sc = cc; + while ((sc !== null) && sc.index !== labelindex) { + sc = sc.nextpeer; + } + if (sc !== null) { + p.nextpeer = sc.insideContours; + if (sc.insideContours !== null) { + sc.insideContours.prevpeer = p; + } + sc.insideContours = p; + } + } + } + } else { + labelData[pos] = labelindex; + } + } else if (labelData[pos] === Rasterizer.DIR.OUTSIDE_EDGE || labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) { + labelindex = 0; + if (labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) { + bc = imageData[pos]; + } else { + bc = colorMap[0]; + } + } else { + labelindex = labelData[pos]; + bc = colorMap[labelindex]; + } + } + } + sc = cc; + while (sc !== null) { + sc.index = depthlabel; + sc = sc.nextpeer; + } + return { + cc : cc, + count : connectedCount + }; + }, + debug: { + drawContour : function(canvas, firstContour) { + var ctx = canvas.getContext("2d"), + pq = firstContour, + iq, + q, + p; + + ctx.strokeStyle = "red"; + ctx.fillStyle = "red"; + ctx.lineWidth = 1; + + if (pq !== null) { + iq = pq.insideContours; + } else { + iq = null; + } + + while (pq !== null) { + if (iq !== null) { + q = iq; + iq = iq.nextpeer; + } else { + q = pq; + pq = pq.nextpeer; + if (pq !== null) { + iq = pq.insideContours; + } else { + iq = null; + } + } + + switch(q.dir) { + case Rasterizer.CONTOUR_DIR.CW_DIR: + ctx.strokeStyle = "red"; + break; + case Rasterizer.CONTOUR_DIR.CCW_DIR: + ctx.strokeStyle = "blue"; + break; + case Rasterizer.CONTOUR_DIR.UNKNOWN_DIR: + ctx.strokeStyle = "green"; + break; + } + + p = q.firstVertex; + ctx.beginPath(); + ctx.moveTo(p.x, p.y); + do { + p = p.next; + ctx.lineTo(p.x, p.y); + } while(p !== q.firstVertex); + ctx.stroke(); + } + } + } + }; + } + }; + + return (Rasterizer); +}); + +/* jshint undef: true, unused: true, browser:true, devel: true, -W041: false */ +/* global define */ + +define('skeletonizer',[],function() { + + + function Skeletonizer(stdlib, foreign, buffer) { + "use asm"; + + var images = new stdlib.Uint8Array(buffer), + size = foreign.size | 0, + imul = stdlib.Math.imul; + + function erode(inImagePtr, outImagePtr) { + inImagePtr = inImagePtr | 0; + outImagePtr = outImagePtr | 0; + + var v = 0, + u = 0, + sum = 0, + yStart1 = 0, + yStart2 = 0, + xStart1 = 0, + xStart2 = 0, + offset = 0; + + for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) { + offset = (offset + size) | 0; + for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) { + yStart1 = (offset - size) | 0; + yStart2 = (offset + size) | 0; + xStart1 = (u - 1) | 0; + xStart2 = (u + 1) | 0; + sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0) + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0) + (images[(inImagePtr + offset + u) | 0] | 0) + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0) + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0; + if ((sum | 0) == (5 | 0)) { + images[(outImagePtr + offset + u) | 0] = 1; + } else { + images[(outImagePtr + offset + u) | 0] = 0; + } + } + } + return; + } + + function subtract(aImagePtr, bImagePtr, outImagePtr) { + aImagePtr = aImagePtr | 0; + bImagePtr = bImagePtr | 0; + outImagePtr = outImagePtr | 0; + + var length = 0; + + length = imul(size, size) | 0; + + while ((length | 0) > 0) { + length = (length - 1) | 0; + images[(outImagePtr + length) | 0] = ((images[(aImagePtr + length) | 0] | 0) - (images[(bImagePtr + length) | 0] | 0)) | 0; + } + } + + function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) { + aImagePtr = aImagePtr | 0; + bImagePtr = bImagePtr | 0; + outImagePtr = outImagePtr | 0; + + var length = 0; + + length = imul(size, size) | 0; + + while ((length | 0) > 0) { + length = (length - 1) | 0; + images[(outImagePtr + length) | 0] = ((images[(aImagePtr + length) | 0] | 0) | (images[(bImagePtr + length) | 0] | 0)) | 0; + } + } + + function countNonZero(imagePtr) { + imagePtr = imagePtr | 0; + + var sum = 0, + length = 0; + + length = imul(size, size) | 0; + + while ((length | 0) > 0) { + length = (length - 1) | 0; + sum = ((sum | 0) + (images[(imagePtr + length) | 0] | 0)) | 0; + } + + return (sum | 0); + } + + function init(imagePtr, value) { + imagePtr = imagePtr | 0; + value = value | 0; + + var length = 0; + + length = imul(size, size) | 0; + + while ((length | 0) > 0) { + length = (length - 1) | 0; + images[(imagePtr + length) | 0] = value; + } + } + + function dilate(inImagePtr, outImagePtr) { + inImagePtr = inImagePtr | 0; + outImagePtr = outImagePtr | 0; + + var v = 0, + u = 0, + sum = 0, + yStart1 = 0, + yStart2 = 0, + xStart1 = 0, + xStart2 = 0, + offset = 0; + + for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) { + offset = (offset + size) | 0; + for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) { + yStart1 = (offset - size) | 0; + yStart2 = (offset + size) | 0; + xStart1 = (u - 1) | 0; + xStart2 = (u + 1) | 0; + sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0) + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0) + (images[(inImagePtr + offset + u) | 0] | 0) + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0) + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0; + if ((sum | 0) > (0 | 0)) { + images[(outImagePtr + offset + u) | 0] = 1; + } else { + images[(outImagePtr + offset + u) | 0] = 0; + } + } + } + return; + } + + function memcpy(srcImagePtr, dstImagePtr) { + srcImagePtr = srcImagePtr | 0; + dstImagePtr = dstImagePtr | 0; + + var length = 0; + + length = imul(size, size) | 0; + + while ((length | 0) > 0) { + length = (length - 1) | 0; + images[(dstImagePtr + length) | 0] = (images[(srcImagePtr + length) | 0] | 0); + } + } + + function zeroBorder(imagePtr) { + imagePtr = imagePtr | 0; + + var x = 0, + y = 0; + + for ( x = 0; (x | 0) < ((size - 1) | 0); x = (x + 1) | 0) { + images[(imagePtr + x) | 0] = 0; + images[(imagePtr + y) | 0] = 0; + y = ((y + size) - 1) | 0; + images[(imagePtr + y) | 0] = 0; + y = (y + 1) | 0; + } + for ( x = 0; (x | 0) < (size | 0); x = (x + 1) | 0) { + images[(imagePtr + y) | 0] = 0; + y = (y + 1) | 0; + } + } + + function skeletonize() { + var subImagePtr = 0, + erodedImagePtr = 0, + tempImagePtr = 0, + skelImagePtr = 0, + sum = 0, + done = 0; + + erodedImagePtr = imul(size, size) | 0; + tempImagePtr = (erodedImagePtr + erodedImagePtr) | 0; + skelImagePtr = (tempImagePtr + erodedImagePtr) | 0; + + // init skel-image + init(skelImagePtr, 0); + zeroBorder(subImagePtr); + + do { + erode(subImagePtr, erodedImagePtr); + dilate(erodedImagePtr, tempImagePtr); + subtract(subImagePtr, tempImagePtr, tempImagePtr); + bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr); + memcpy(erodedImagePtr, subImagePtr); + sum = countNonZero(subImagePtr) | 0; + done = ((sum | 0) == 0 | 0); + } while(!done); + } + + return { + skeletonize : skeletonize + }; + } + + return Skeletonizer; +}); + +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define('image_debug',[],function() { + + + return { + drawRect: function(pos, size, ctx, style){ + ctx.strokeStyle = style.color; + ctx.fillStyle = style.color; + ctx.lineWidth = 1; + ctx.beginPath(); + ctx.strokeRect(pos.x, pos.y, size.x, size.y); + }, + drawPath: function(path, def, ctx, style) { + ctx.strokeStyle = style.color; + ctx.fillStyle = style.color; + ctx.lineWidth = style.lineWidth; + ctx.beginPath(); + ctx.moveTo(path[0][def.x], path[0][def.y]); + for (var j = 1; j < path.length; j++) { + ctx.lineTo(path[j][def.x], path[j][def.y]); + } + ctx.closePath(); + ctx.stroke(); + } + }; + +}); + +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, mat2, vec2 */ + +define('barcode_locator',["image_wrapper", "cv_utils", "rasterizer", "tracer", "skeletonizer", "array_helper", "image_debug"], +function(ImageWrapper, CVUtils, Rasterizer, Tracer, skeletonizer, ArrayHelper, ImageDebug) { + + + var _config, + _currentImageWrapper, + _skelImageWrapper, + _subImageWrapper, + _labelImageWrapper, + _patchGrid, + _patchLabelGrid, + _imageToPatchGrid, + _binaryImageWrapper, + _halfSample = true, + _patchSize, + _canvasContainer = { + ctx : { + binary : null + }, + dom : { + binary : null + } + }, + _numPatches = {x: 0, y: 0}, + _inputImageWrapper, + _skeletonizer; + + function initBuffers() { + var skeletonImageData; + + if (_halfSample) { + _currentImageWrapper = new ImageWrapper({ + x : _inputImageWrapper.size.x / 2 | 0, + y : _inputImageWrapper.size.y / 2 | 0 + }); + } else { + _currentImageWrapper = _inputImageWrapper; + } + + _patchSize = { + x : 16 * ( _halfSample ? 1 : 2), + y : 16 * ( _halfSample ? 1 : 2) + }; + + _numPatches.x = _currentImageWrapper.size.x / _patchSize.x | 0; + _numPatches.y = _currentImageWrapper.size.y / _patchSize.y | 0; + + _binaryImageWrapper = new ImageWrapper(_currentImageWrapper.size, undefined, Uint8Array, false); + + _labelImageWrapper = new ImageWrapper(_patchSize, undefined, Array, true); + + skeletonImageData = new ArrayBuffer(_patchSize.x * _patchSize.y * 16); + _subImageWrapper = new ImageWrapper(_patchSize, new Uint8Array(skeletonImageData, 0, _patchSize.x * _patchSize.y)); + _skelImageWrapper = new ImageWrapper(_patchSize, new Uint8Array(skeletonImageData, _patchSize.x * _patchSize.y * 3, _patchSize.x * _patchSize.y), undefined, true); + _skeletonizer = skeletonizer(window, { + size : _patchSize.x + }, skeletonImageData); + + _imageToPatchGrid = new ImageWrapper({ + x : (_currentImageWrapper.size.x / _subImageWrapper.size.x) | 0, + y : (_currentImageWrapper.size.y / _subImageWrapper.size.y) | 0 + }, undefined, Array, true); + _patchGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, undefined, true); + _patchLabelGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, Int32Array, true); + } + + function initCanvas() { + _canvasContainer.dom.binary = document.createElement("canvas"); + _canvasContainer.dom.binary.className = "binaryBuffer"; + if (_config.showCanvas === true) { + document.querySelector("#debug").appendChild(_canvasContainer.dom.binary); + } + _canvasContainer.ctx.binary = _canvasContainer.dom.binary.getContext("2d"); + _canvasContainer.dom.binary.width = _binaryImageWrapper.size.x; + _canvasContainer.dom.binary.height = _binaryImageWrapper.size.y; + } + + /** + * Creates a bounding box which encloses all the given patches + * @returns {Array} The minimal bounding box + */ + function boxFromPatches(patches) { + var overAvg, i, j, patch, transMat, minx = _binaryImageWrapper.size.x, miny = _binaryImageWrapper.size.y, maxx = -_binaryImageWrapper.size.x, maxy = -_binaryImageWrapper.size.y, box, scale; + + // draw all patches which are to be taken into consideration + overAvg = 0; + for ( i = 0; i < patches.length; i++) { + patch = patches[i]; + overAvg += patch.rad; + if (_config.showPatches) { + ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: "red"}); + } + } + + overAvg /= patches.length; + overAvg = (overAvg * 180 / Math.PI + 90) % 180 - 90; + if (overAvg < 0) { + overAvg += 180; + } + + //console.log(overAvg); + overAvg = (180 - overAvg) * Math.PI / 180; + transMat = mat2.create([Math.cos(overAvg), -Math.sin(overAvg), Math.sin(overAvg), Math.cos(overAvg)]); + + // iterate over patches and rotate by angle + for ( i = 0; i < patches.length; i++) { + patch = patches[i]; + for ( j = 0; j < 4; j++) { + mat2.xVec2(transMat, patch.box[j]); + } + + if (_config.boxFromPatches.showTransformed) { + ImageDebug.drawPath(patch.box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#99ff00', lineWidth: 2}); + } + } + + // find bounding box + for ( i = 0; i < patches.length; i++) { + patch = patches[i]; + for ( j = 0; j < 4; j++) { + if (patch.box[j][0] < minx) { + minx = patch.box[j][0]; + } + if (patch.box[j][0] > maxx) { + maxx = patch.box[j][0]; + } + if (patch.box[j][1] < miny) { + miny = patch.box[j][1]; + } + if (patch.box[j][1] > maxy) { + maxy = patch.box[j][1]; + } + } + } + + box = [[minx, miny], [maxx, miny], [maxx, maxy], [minx, maxy]]; + + if (_config.boxFromPatches.showTransformedBox) { + ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2}); + } + + scale = _halfSample ? 2 : 1; + // reverse rotation; + transMat = mat2.inverse(transMat); + for ( j = 0; j < 4; j++) { + mat2.xVec2(transMat, box[j]); + } + + if (_config.boxFromPatches.showBB) { + ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2}); + } + + for ( j = 0; j < 4; j++) { + vec2.scale(box[j], scale); + } + + return box; + } + + /** + * Creates a binary image of the current image + */ + function binarizeImage() { + CVUtils.otsuThreshold(_currentImageWrapper, _binaryImageWrapper); + _binaryImageWrapper.zeroBorder(); + if (_config.showCanvas) { + _binaryImageWrapper.show(_canvasContainer.dom.binary, 255); + } + } + + /** + * Iterate over the entire image + * extract patches + */ + function findPatches() { + var i, + j, + x, + y, + moments, + patchesFound = [], + rasterizer, + rasterResult, + patch; + for ( i = 0; i < _numPatches.x; i++) { + for ( j = 0; j < _numPatches.y; j++) { + + x = _subImageWrapper.size.x * i; + y = _subImageWrapper.size.y * j; + + // seperate parts + skeletonize(x, y); + + // Rasterize, find individual bars + _skelImageWrapper.zeroBorder(); + ArrayHelper.init(_labelImageWrapper.data, 0); + rasterizer = Rasterizer.create(_skelImageWrapper, _labelImageWrapper); + rasterResult = rasterizer.rasterize(0); + + if (_config.showLabels) { + _labelImageWrapper.overlay(_canvasContainer.dom.binary, Math.floor(360 / rasterResult.count), {x : x, y : y}); + } + + // calculate moments from the skeletonized patch + moments = _labelImageWrapper.moments(rasterResult.count); + + // extract eligible patches + patchesFound = patchesFound.concat(describePatch(moments, [i, j], x, y)); + } + } + + if (_config.showFoundPatches) { + for ( i = 0; i < patchesFound.length; i++) { + patch = patchesFound[i]; + ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: "99ff00", lineWidth: 2}); + } + } + + return patchesFound; + } + + /** + * Finds those connected areas which contain at least 6 patches + * and returns them ordered DESC by the number of contained patches + * @param {Number} maxLabel + */ + function findBiggestConnectedAreas(maxLabel){ + var i, + sum, + labelHist = [], + topLabels = []; + + for ( i = 0; i < maxLabel; i++) { + labelHist.push(0); + } + sum = _patchLabelGrid.data.length; + while (sum--) { + if (_patchLabelGrid.data[sum] > 0) { + labelHist[_patchLabelGrid.data[sum] - 1]++; + } + } + + labelHist = labelHist.map(function(val, idx) { + return { + val : val, + label : idx + 1 + }; + }); + + labelHist.sort(function(a, b) { + return b.val - a.val; + }); + + // extract top areas with at least 6 patches present + topLabels = labelHist.filter(function(el) { + return el.val >= 5; + }); + + return topLabels; + } + + /** + * + */ + function findBoxes(topLabels, maxLabel) { + var i, + j, + sum, + patches = [], + patch, + box, + boxes = [], + hsv = [0, 1, 1], + rgb = [0, 0, 0]; + + for ( i = 0; i < topLabels.length; i++) { + sum = _patchLabelGrid.data.length; + patches.length = 0; + while (sum--) { + if (_patchLabelGrid.data[sum] === topLabels[i].label) { + patch = _imageToPatchGrid.data[sum]; + patches.push(patch); + } + } + box = boxFromPatches(patches); + if (box) { + boxes.push(box); + + // draw patch-labels if requested + if (_config.showRemainingPatchLabels) { + for ( j = 0; j < patches.length; j++) { + patch = patches[j]; + hsv[0] = (topLabels[i].label / (maxLabel + 1)) * 360; + CVUtils.hsv2rgb(hsv, rgb); + ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: "rgb(" + rgb.join(",") + ")", lineWidth: 2}); + } + } + } + } + return boxes; + } + + /** + * Find similar moments (via cluster) + * @param {Object} moments + */ + function similarMoments(moments) { + var clusters = CVUtils.cluster(moments, 0.90); + var topCluster = CVUtils.topGeneric(clusters, 1, function(e) { + return e.getPoints().length; + }); + var points = [], result = []; + if (topCluster.length === 1) { + points = topCluster[0].item.getPoints(); + for (var i = 0; i < points.length; i++) { + result.push(points[i].point); + } + } + return result; + } + + function skeletonize(x, y) { + _binaryImageWrapper.subImageAsCopy(_subImageWrapper, CVUtils.imageRef(x, y)); + _skeletonizer.skeletonize(); + + // Show skeleton if requested + if (_config.showSkeleton) { + _skelImageWrapper.overlay(_canvasContainer.dom.binary, 360, CVUtils.imageRef(x, y)); + } + } + + /** + * Extracts and describes those patches which seem to contain a barcode pattern + * @param {Array} moments + * @param {Object} patchPos, + * @param {Number} x + * @param {Number} y + * @returns {Array} list of patches + */ + function describePatch(moments, patchPos, x, y) { + var k, avg, sum = 0, eligibleMoments = [], matchingMoments, patch, patchesFound = []; + if (moments.length >= 2) { + // only collect moments which's area covers at least 6 pixels. + for ( k = 0; k < moments.length; k++) { + if (moments[k].m00 > 6) { + eligibleMoments.push(moments[k]); + } + } + + // if at least 2 moments are found which have 6pixels covered + if (eligibleMoments.length >= 2) { + sum = eligibleMoments.length; + matchingMoments = similarMoments(eligibleMoments); + avg = 0; + // determine the similarity of the moments + for ( k = 0; k < matchingMoments.length; k++) { + avg += matchingMoments[k].rad; + } + + // Only two of the moments are allowed not to fit into the equation + // add the patch to the set + if (matchingMoments.length > 1 && matchingMoments.length >= (eligibleMoments.length / 4) * 3 && matchingMoments.length > moments.length / 4) { + avg /= matchingMoments.length; + patch = { + index : patchPos[1] * _numPatches.x + patchPos[0], + pos : { + x : x, + y : y + }, + box : [vec2.create([x, y]), vec2.create([x + _subImageWrapper.size.x, y]), vec2.create([x + _subImageWrapper.size.x, y + _subImageWrapper.size.y]), vec2.create([x, y + _subImageWrapper.size.y])], + moments : matchingMoments, + rad : avg, + vec : vec2.create([Math.cos(avg), Math.sin(avg)]) + }; + patchesFound.push(patch); + } + } + } + return patchesFound; + } + + /** + * finds patches which are connected and share the same orientation + * @param {Object} patchesFound + */ + function rasterizeAngularSimilarity(patchesFound) { + var label = 0, + threshold = 0.95, + currIdx = 0, + j, + patch, + hsv = [0, 1, 1], + rgb = [0, 0, 0]; + + function notYetProcessed() { + var i; + for ( i = 0; i < _patchLabelGrid.data.length; i++) { + if (_patchLabelGrid.data[i] === 0 && _patchGrid.data[i] === 1) { + return i; + } + } + return _patchLabelGrid.length; + } + + function trace(currentIdx) { + var x, y, currentPatch, patch, idx, dir, current = { + x : currentIdx % _patchLabelGrid.size.x, + y : (currentIdx / _patchLabelGrid.size.x) | 0 + }, similarity; + + if (currentIdx < _patchLabelGrid.data.length) { + currentPatch = _imageToPatchGrid.data[currentIdx]; + // assign label + _patchLabelGrid.data[currentIdx] = label; + for ( dir = 0; dir < Tracer.searchDirections.length; dir++) { + y = current.y + Tracer.searchDirections[dir][0]; + x = current.x + Tracer.searchDirections[dir][1]; + idx = y * _patchLabelGrid.size.x + x; + + // continue if patch empty + if (_patchGrid.data[idx] === 0) { + _patchLabelGrid.data[idx] = Number.MAX_VALUE; + continue; + } + + patch = _imageToPatchGrid.data[idx]; + if (_patchLabelGrid.data[idx] === 0) { + similarity = Math.abs(vec2.dot(patch.vec, currentPatch.vec)); + if (similarity > threshold) { + trace(idx); + } + } + } + } + } + + // prepare for finding the right patches + ArrayHelper.init(_patchGrid.data, 0); + ArrayHelper.init(_patchLabelGrid.data, 0); + ArrayHelper.init(_imageToPatchGrid.data, null); + + for ( j = 0; j < patchesFound.length; j++) { + patch = patchesFound[j]; + _imageToPatchGrid.data[patch.index] = patch; + _patchGrid.data[patch.index] = 1; + } + + // rasterize the patches found to determine area + _patchGrid.zeroBorder(); + + while (( currIdx = notYetProcessed()) < _patchLabelGrid.data.length) { + label++; + trace(currIdx); + } + + // draw patch-labels if requested + if (_config.showPatchLabels) { + for ( j = 0; j < _patchLabelGrid.data.length; j++) { + if (_patchLabelGrid.data[j] > 0 && _patchLabelGrid.data[j] <= label) { + patch = _imageToPatchGrid.data[j]; + hsv[0] = (_patchLabelGrid.data[j] / (label + 1)) * 360; + CVUtils.hsv2rgb(hsv, rgb); + ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: "rgb(" + rgb.join(",") + ")", lineWidth: 2}); + } + } + } + + return label; + } + + return { + init : function(config, data) { + _config = config; + _inputImageWrapper = data.inputImageWrapper; + initBuffers(); + initCanvas(); + }, + locate : function() { + var patchesFound, + topLabels = [], + boxes = []; + + if (_halfSample) { + CVUtils.halfSample(_inputImageWrapper, _currentImageWrapper); + } + + binarizeImage(); + patchesFound = findPatches(); + // return unless 5% or more patches are found + if (patchesFound.length < _numPatches.x * _numPatches.y * 0.05) { + return; + } + + // rasterrize area by comparing angular similarity; + var maxLabel = rasterizeAngularSimilarity(patchesFound); + if (maxLabel <= 1) { + return null; + } + + // search for area with the most patches (biggest connected area) + topLabels = findBiggestConnectedAreas(maxLabel); + if (topLabels.length === 0) { + return null; + } + + boxes = findBoxes(topLabels, maxLabel); + + return boxes; + } + }; +}); + + +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define('bresenham',[],function() { + + var Bresenham = {}; + + var Slope = { + DIR : { + UP : 1, + DOWN : -1 + } + }; + /** + * Scans a line of the given image from point p1 to p2 and returns a result object containing + * gray-scale values (0-255) of the underlying pixels in addition to the min + * and max values. + * @param {Object} imageWrapper + * @param {Object} p1 The start point {x,y} + * @param {Object} p2 The end point {x,y} + * @returns {line, min, max} + */ + Bresenham.getBarcodeLine = function(imageWrapper, p1, p2) { + var x0 = p1.x | 0, + y0 = p1.y | 0, + x1 = p2.x | 0, + y1 = p2.y | 0, + steep = Math.abs(y1 - y0) > Math.abs(x1 - x0), + deltax, + deltay, + error, + ystep, + y, + tmp, + x, + line = [], + imageData = imageWrapper.data, + width = imageWrapper.size.x, + sum = 0, + val, + min = 255, + max = 0; + + function read(a, b) { + val = imageData[b * width + a]; + sum += val; + min = val < min ? val : min; + max = val > max ? val : max; + line.push(val); + } + + if (steep) { + tmp = x0; + x0 = y0; + y0 = tmp; + + tmp = x1; + x1 = y1; + y1 = tmp; + } + if (x0 > x1) { + tmp = x0; + x0 = x1; + x1 = tmp; + + tmp = y0; + y0 = y1; + y1 = tmp; + } + deltax = x1 - x0; + deltay = Math.abs(y1 - y0); + error = (deltax / 2) | 0; + y = y0; + ystep = y0 < y1 ? 1 : -1; + for ( x = x0; x < x1; x++) { + if(steep){ + read(y, x); + } else { + read(x, y); + } + error = error - deltay; + if (error < 0) { + y = y + ystep; + error = error + deltax; + } + } + + return { + line : line, + min : min, + max : max + }; + }; + + /** + * Converts the result from getBarcodeLine into a binary representation + * also considering the frequency and slope of the signal for more robust results + * @param {Object} result {line, min, max} + */ + Bresenham.toBinaryLine = function(result) { + + var min = result.min, + max = result.max, + line = result.line, + slope, + center = min + (max - min) / 2, + extrema = [], + currentDir, + dir, + threshold = (max - min) / 8, + rThreshold = -threshold, + i, + j; + + // 1. find extrema + currentDir = line[0] > center ? Slope.DIR.DOWN : Slope.DIR.UP; + extrema.push({ + pos : 0, + val : line[0] + }); + for ( i = 0; i < line.length - 1; i++) { + slope = (line[i + 1] - line[i]); + if (slope < rThreshold) { + dir = Slope.DIR.UP; + } else if (slope > threshold) { + dir = Slope.DIR.DOWN; + } else { + dir = currentDir; + } + + if (currentDir !== dir) { + extrema.push({ + pos : i, + val : line[i] + }); + currentDir = dir; + } + } + extrema.push({ + pos : line.length, + val : line[line.length - 1] + }); + + for ( j = extrema[0].pos; j < extrema[1].pos; j++) { + line[j] = line[j] > center ? 0 : 1; + } + + // iterate over extrema and convert to binary based on avg between minmax + for ( i = 1; i < extrema.length - 1; i++) { + if (extrema[i + 1].val > extrema[i].val) { + threshold = (extrema[i].val + (extrema[i + 1].val - extrema[i].val) / 2) | 0; + } else { + threshold = (extrema[i + 1].val + (extrema[i].val - extrema[i + 1].val) / 2) | 0; + } + + for ( j = extrema[i].pos; j < extrema[i + 1].pos; j++) { + line[j] = line[j] > threshold ? 0 : 1; + } + } + + return { + line : line, + threshold : threshold + }; + }; + + /** + * Used for development only + */ + Bresenham.debug = { + printFrequency: function(line, canvas) { + var i, + ctx = canvas.getContext("2d"); + canvas.width = line.length; + canvas.height = 256; + + ctx.beginPath(); + ctx.strokeStyle = "blue"; + for ( i = 0; i < line.length; i++) { + ctx.moveTo(i, 255); + ctx.lineTo(i, 255 - line[i]); + } + ctx.stroke(); + ctx.closePath(); + }, + + printPattern: function(line, canvas) { + var ctx = canvas.getContext("2d"), i; + + canvas.width = line.length; + ctx.fillColor = "black"; + for ( i = 0; i < line.length; i++) { + if (line[i] === 1) { + ctx.fillRect(i, 0, 1, 100); + } + } + } + }; + + return (Bresenham); +}); +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define('barcode_decoder',["bresenham", "image_debug", 'code_128_reader', 'ean_reader'], function(Bresenham, ImageDebug, Code128Reader, EANReader) { + + + var readers = { + code_128_reader: Code128Reader, + ean_reader: EANReader + }; + var BarcodeDecoder = { + create : function(config, inputImageWrapper) { + var _canvas = { + ctx : { + frequency : null, + pattern : null, + overlay : null + }, + dom : { + frequency : null, + pattern : null, + overlay : null + } + }, + _barcodeReaders = [], + _barcodeReader = null; + + initCanvas(); + initReaders(); + initConfig(); + + function initCanvas() { + var $debug = document.querySelector("#debug.detection"); + _canvas.dom.frequency = document.querySelector("canvas.frequency"); + if (!_canvas.dom.frequency) { + _canvas.dom.frequency = document.createElement("canvas"); + _canvas.dom.frequency.className = "frequency"; + if($debug) { + $debug.appendChild(_canvas.dom.frequency); + } + } + _canvas.ctx.frequency = _canvas.dom.frequency.getContext("2d"); + + _canvas.dom.pattern = document.querySelector("canvas.patternBuffer"); + if (!_canvas.dom.pattern) { + _canvas.dom.pattern = document.createElement("canvas"); + _canvas.dom.pattern.className = "patternBuffer"; + if($debug) { + $debug.appendChild(_canvas.dom.pattern); + } + } + _canvas.ctx.pattern = _canvas.dom.pattern.getContext("2d"); + + _canvas.dom.overlay = document.querySelector("canvas.drawingBuffer"); + if (_canvas.dom.overlay) { + _canvas.ctx.overlay = _canvas.dom.overlay.getContext("2d"); + } + } + + function initReaders() { + var i; + for ( i = 0; i < config.readers.length; i++) { + console.log(config.readers[i]); + _barcodeReaders.push(new readers[config.readers[i]]()); + } + } + + function initConfig() { + var i, + vis = [{ + node : _canvas.dom.frequency, + prop : config.showFrequency + }, { + node : _canvas.dom.pattern, + prop : config.showPattern + }]; + + for (i = 0; i < vis.length; i++) { + if (vis[i].prop === true) { + vis[i].node.style.display = "block"; + } else { + vis[i].node.style.display = "none"; + } + } + } + + /** + * extend the line on both ends + * @param {Array} line + * @param {Number} angle + */ + function getExtendedLine(line, angle, ext) { + var extension = { + y : ext * Math.sin(angle), + x : ext * Math.cos(angle) + }; + + line[0].y -= extension.y; + line[0].x -= extension.x; + line[1].y += extension.y; + line[1].x += extension.x; + + // check if inside image + if (!inputImageWrapper.inImageWithBorder(line[0], 0) || !inputImageWrapper.inImageWithBorder(line[1], 0)) { + return null; + } + return line; + } + + function getLine(box) { + return [{ + x : (box[1][0] - box[0][0]) / 2 + box[0][0], + y : (box[1][1] - box[0][1]) / 2 + box[0][1] + }, { + x : (box[3][0] - box[2][0]) / 2 + box[2][0], + y : (box[3][1] - box[2][1]) / 2 + box[2][1] + }]; + } + + function tryDecode(line) { + var result = null, + i, + barcodeLine = Bresenham.getBarcodeLine(inputImageWrapper, line[0], line[1]); + + if (config.showFrequency) { + ImageDebug.drawPath(line, {x: 'x', y: 'y'}, _canvas.ctx.overlay, {color: 'red', lineWidth: 3}); + Bresenham.debug.printFrequency(barcodeLine.line, _canvas.dom.frequency); + } + Bresenham.toBinaryLine(barcodeLine); + if (config.showPattern) { + Bresenham.debug.printPattern(barcodeLine.line, _canvas.dom.pattern); + } + + for ( i = 0; i < _barcodeReaders.length && result === null; i++) { + result = _barcodeReaders[i].decodePattern(barcodeLine.line); + if (result !== null) { + _barcodeReader = _barcodeReaders[i]; + } + } + if(result === null){ + return null; + } + return { + codeResult: result, + barcodeLine: barcodeLine + }; + + } + + /** + * This method slices the given area apart and tries to detect a barcode-pattern + * for each slice. It returns the decoded barcode, or null if nothing was found + * @param {Array} box + * @param {Array} line + * @param {Number} lineAngle + */ + function tryDecodeBruteForce(box, line, lineAngle) { + var sideLength = Math.sqrt(Math.pow(box[1][0] - box[0][0], 2) + Math.pow((box[1][1] - box[0][1]), 2)), + i, + slices = 16, + result = null, + dir, + extension, + xdir = Math.sin(lineAngle), + ydir = Math.cos(lineAngle); + + for ( i = 1; i < slices && result === null; i++) { + // move line perpendicular to angle + dir = sideLength / slices * i * (i % 2 === 0 ? -1 : 1); + extension = { + y : dir * xdir, + x : dir * ydir + }; + line[0].y += extension.x; + line[0].x -= extension.y; + line[1].y += extension.x; + line[1].x -= extension.y; + + result = tryDecode(line); + } + return result; + } + + /** + * With the help of the configured readers (Code128 or EAN) this function tries to detect a + * valid barcode pattern within the given area. + * @param {Object} box The area to search in + * @returns {Object} the result {codeResult, line, angle, pattern, threshold} + */ + function decodeFromBoundingBox(box) { + var line, + lineAngle, + ctx = _canvas.ctx.overlay, + result; + + if (config.drawBoundingBox && ctx) { + ImageDebug.drawPath(box, {x: 0, y: 1}, ctx, {color: "blue", lineWidth: 2}); + } + + line = getLine(box); + lineAngle = Math.atan2(line[1].y - line[0].y, line[1].x - line[0].x); + line = getExtendedLine(line, lineAngle, 10); + if(line === null){ + return null; + } + + result = tryDecode(line); + if(result === null) { + result = tryDecodeBruteForce(box, line, lineAngle); + } + + if(result === null) { + return null; + } + + if (result && config.drawScanline && ctx) { + ImageDebug.drawPath(line, {x: 'x', y: 'y'}, ctx, {color: 'red', lineWidth: 3}); + } + + return { + codeResult : result.codeResult, + line : line, + angle : lineAngle, + pattern : result.barcodeLine.line, + threshold : result.barcodeLine.threshold + }; + } + + return { + decodeFromBoundingBox : function(box) { + return decodeFromBoundingBox(box); + }, + decodeFromBoundingBoxes : function(boxes) { + var i, result; + for ( i = 0; i < boxes.length; i++) { + result = decodeFromBoundingBox(boxes[i]); + if (result && result.codeResult) { + return result; + } + } + } + }; + } + }; + + return (BarcodeDecoder); +}); +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define('frame_grabber',["cv_utils"], function(CVUtils) { + + + var FrameGrabber = {}; + + FrameGrabber.create = function(inputStream, canvas) { + var _that = {}, + _streamConfig = inputStream.getConfig(), + _video_size = CVUtils.imageRef(inputStream.getRealWidth(), inputStream.getRealHeight()), + _size =_streamConfig.size ? CVUtils.imageRef(_streamConfig.size, _streamConfig.size) : _video_size, + _sx = 0, + _sy = 0, + _dx = 0, + _dy = 0, + _sWidth, + _dWidth, + _sHeight, + _dHeight, + _canvas = null, + _ctx = null, + _data = null; + + // Check if size is given + if (_streamConfig.size) { + if (_video_size.x/_video_size.y > 1) { + _size.x = _streamConfig.size; + _size.y = (_video_size.y/_video_size.x)*_streamConfig.size; + } else { + _size.y = _streamConfig.size; + _size.x = (_video_size.x/_video_size.y)*_streamConfig.size; + } + } + + _sWidth = _video_size.x; + _dWidth = _size.x; + _sHeight = _video_size.y; + _dHeight = _size.y; + + _canvas = canvas ? canvas : document.createElement("canvas"); + _canvas.width = _size.x; + _canvas.height = _size.y; + _ctx = _canvas.getContext("2d"); + _data = new Uint8Array(_size.x * _size.y); + + /** + * Uses the given array as frame-buffer + */ + _that.attachData = function(data) { + _data = data; + }; + + /** + * Returns the used frame-buffer + */ + _that.getData = function() { + return _data; + }; + + /** + * Fetches a frame from the input-stream and puts into the frame-buffer. + * The image-data is converted to gray-scale and then half-sampled if configured. + */ + _that.grab = function() { + var doHalfSample = _streamConfig.halfSample, + frame = inputStream.getFrame(), + ctxData; + if (frame) { + _ctx.drawImage(frame, _sx, _sy, _sWidth, _sHeight, _dx, _dy, _dWidth, _dHeight); + ctxData = _ctx.getImageData(0, 0, _size.x, _size.y).data; + if(doHalfSample){ + CVUtils.grayAndHalfSampleFromCanvasData(ctxData, _size, _data); + } else { + CVUtils.computeGray(ctxData, _data); + } + return true; + } else { + return false; + } + }; + + _that.getSize = function() { + return _size; + }; + + return _that; + }; + + return (FrameGrabber); +}); + +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define('html_utils',[], function() { + + + function createNode(htmlStr) { + var temp = document.createElement('div'); + + temp.innerHTML = htmlStr; + while (temp.firstChild) { + return temp.firstChild; + } + } + + function mergeObjects(obj1, obj2) { + for (var p in obj2) { + try { + if (obj2[p].constructor == Object) { + obj1[p] = mergeObjects(obj1[p], obj2[p]); + } else { + obj1[p] = obj2[p]; + } + } catch(e) { + obj1[p] = obj2[p]; + } + } + + return obj1; + } + + return { + createNode : function(htmlStr) { + return createNode(htmlStr); + }, + mergeObjects : function(obj1, obj2) { + return mergeObjects(obj1, obj2); + } + }; +}); +/** + * The basic configuration + */ + +define('config',[],function(){ + var config = { + inputStream: { name: "Live", + type: "LiveStream" + }, + tracking: false, + debug: false, + controls: false, + locate: true, + visual: { + show: true + }, + decoder:{ + drawBoundingBox: true, + showFrequency: false, + drawScanline: true, + showPattern: false, + readers: [ + 'code_128_reader' + ] + }, + locator: { + showCanvas: false, + showPatches: false, + showFoundPatches: false, + showSkeleton: false, + showLabels: false, + showPatchLabels: false, + showRemainingPatchLabels: false, + boxFromPatches: { + showTransformed: false, + showTransformedBox: false, + showBB: false + } + } + }; + + return config; +}); +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define('events',[],function() { + + + var _events = function() { + var events = {}; + + function getEvent(eventName) { + if (!events[eventName]) { + events[eventName] = { + subscribers : [] + }; + } + return events[eventName]; + } + + function publishSubscription(subscription, data) { + if (subscription.async) { + setTimeout(function() { + subscription.callback.call(null, data); + }, 4); + } else { + subscription.callback.call(null, data); + } + } + + return { + subscribe : function(event, callback, async) { + var subscription; + + if ( typeof callback === "function") { + subscription = { + callback : callback, + async : async + }; + } else { + subscription = callback; + if (!subscription.callback) { + throw "Callback was not specified on options"; + } + } + + getEvent(event).subscribers.push(subscription); + }, + publish : function(eventName, data) { + var subscribers = getEvent(eventName).subscribers, i; + for ( i = 0; i < subscribers.length; i++) { + publishSubscription(subscribers[i], data); + } + } + }; + }(); + + return _events; +}); +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, MediaStreamTrack */ + +define('camera_access',[],function() { + + + /** + * Wraps browser-specific getUserMedia + * @param {Object} constraints + * @param {Object} success Callback + * @param {Object} failure Callback + */ + function getUserMedia(constraints, success, failure) { + navigator.getUserMedia(constraints, function(stream) { + var videoSrc = (window.URL && window.URL.createObjectURL(stream)) || stream; + success.apply(null, [videoSrc]); + }, failure); + } + + /** + * Tries to attach the camer-stream to a given video-element + * and calls the callback function when the content is ready + * @param {Object} constraints + * @param {Object} video + * @param {Object} callback + */ + function initCamera(constraints, video, callback) { + getUserMedia(constraints, function(src) { + video.src = src; + video.addEventListener('loadeddata', function() { + var attempts = 10; + + function checkVideo() { + if (attempts > 0) { + if (video.videoWidth > 0 && video.videoHeight > 0) { + console.log(video.videoWidth + "px x " + video.videoHeight + "px"); + callback(); + } else { + window.setTimeout(checkVideo, 500); + } + } else { + callback('Unable to play video stream. Is webcam working?'); + } + attempts--; + } + + checkVideo(); + }, false); + video.play(); + }, function(e) { + console.log(e); + }); + } + + /** + * Requests the back-facing camera of the user. The callback is called + * whenever the stream is ready to be consumed, or if an error occures. + * @param {Object} video + * @param {Object} callback + */ + function request(video, callback) { + if ( typeof MediaStreamTrack.getSources !== 'undefined') { + MediaStreamTrack.getSources(function(sourceInfos) { + var videoSourceId; + for (var i = 0; i != sourceInfos.length; ++i) { + var sourceInfo = sourceInfos[i]; + if (sourceInfo.kind == "video" && sourceInfo.facing == "environment") { + videoSourceId = sourceInfo.id; + } + } + var constraints = { + audio : false, + video : { + optional : [{ + sourceId : videoSourceId + }] + } + }; + initCamera(constraints, video, callback); + }); + } else { + initCamera({ + video : true, + audio : false + }, video, callback); + } + } + + return { + request : function(video, callback) { + request(video, callback); + } + }; +}); +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, vec2 */ + +define('quagga',["code_128_reader", "ean_reader", "input_stream", "image_wrapper", "barcode_locator", "barcode_decoder", "frame_grabber", "html_utils", "config", "events", "camera_access"], +function(Code128Reader, EANReader, InputStream, ImageWrapper, BarcodeLocator, BarcodeDecoder, FrameGrabber, HtmlUtils, _config, Events, CameraAccess) { + + + var _inputStream, + _framegrabber, + _stopped, + _canvasContainer = { + ctx : { + image : null, + overlay : null + }, + dom : { + image : null, + overlay : null + } + }, + _inputImageWrapper, + _boxSize, + _decoder, + _initialized = false; + + function initialize(config) { + _config = HtmlUtils.mergeObjects(_config, config); + initInputStream(); + } + + function initConfig() { + var vis = [{ + node : document.querySelector("div[data-controls]"), + prop : _config.controls + }, { + node : _canvasContainer.dom.overlay, + prop : _config.visual.show + }]; + + for (var i = 0; i < vis.length; i++) { + if (vis[i].node) { + if (vis[i].prop === true) { + vis[i].node.style.display = "block"; + } else { + vis[i].node.style.display = "none"; + } + } + } + } + + function initInputStream() { + var video; + if (_config.inputStream.type == "VideoStream") { + video = document.createElement("video"); + _inputStream = InputStream.createVideoStream(video); + } else if (_config.inputStream.type == "ImageStream") { + _inputStream = InputStream.createImageStream(); + } else if (_config.inputStream.type == "LiveStream") { + video = document.createElement("video"); + var $viewport = document.querySelector("#interactive.viewport"); + if($viewport) { + $viewport.appendChild(video); + } + _inputStream = InputStream.createLiveStream(video); + CameraAccess.request(video, function(err) { + if (!err) { + _inputStream.trigger("canrecord"); + } else { + console.log(err); + } + }); + } + + _inputStream.setAttribute("preload", "auto"); + _inputStream.setAttribute("autoplay", true); + _inputStream.setInputStream(_config.inputStream); + _inputStream.addEventListener("canrecord", canRecord); + } + + function canRecord() { + initBuffers(); + initCanvas(); + _decoder = BarcodeDecoder.create(_config.decoder, _inputImageWrapper); + _framegrabber = FrameGrabber.create(_inputStream, _canvasContainer.dom.image); + _framegrabber.attachData(_inputImageWrapper.data); + + initConfig(); + _inputStream.play(); + _initialized = true; + if (_config.readyFunc) { + _config.readyFunc.apply(); + } + } + + function initCanvas() { + var $viewport = document.querySelector("#interactive.viewport"); + _canvasContainer.dom.image = document.querySelector("canvas.imgBuffer"); + if (!_canvasContainer.dom.image) { + _canvasContainer.dom.image = document.createElement("canvas"); + _canvasContainer.dom.image.className = "imgBuffer"; + if($viewport && _config.inputStream.type == "ImageStream") { + $viewport.appendChild(_canvasContainer.dom.image); + } + } + _canvasContainer.ctx.image = _canvasContainer.dom.image.getContext("2d"); + _canvasContainer.dom.image.width = _inputImageWrapper.size.x; + _canvasContainer.dom.image.height = _inputImageWrapper.size.y; + + _canvasContainer.dom.overlay = document.querySelector("canvas.drawingBuffer"); + if (!_canvasContainer.dom.overlay) { + _canvasContainer.dom.overlay = document.createElement("canvas"); + _canvasContainer.dom.overlay.className = "drawingBuffer"; + if($viewport) { + $viewport.appendChild(_canvasContainer.dom.overlay); + } + var clearFix = document.createElement("br"); + clearFix.setAttribute("clear", "all"); + if($viewport) { + $viewport.appendChild(clearFix); + } + } + _canvasContainer.ctx.overlay = _canvasContainer.dom.overlay.getContext("2d"); + _canvasContainer.dom.overlay.width = _inputImageWrapper.size.x; + _canvasContainer.dom.overlay.height = _inputImageWrapper.size.y; + } + + function initBuffers() { + _inputImageWrapper = new ImageWrapper({ + x : _inputStream.getWidth(), + y : _inputStream.getHeight() + }); + console.log(_inputStream.getWidth()); + console.log(_inputStream.getHeight()); + _boxSize = [ + vec2.create([20, _inputStream.getHeight() / 2 - 100]), + vec2.create([20, _inputStream.getHeight() / 2 + 100]), + vec2.create([_inputStream.getWidth() - 20, _inputStream.getHeight() / 2 + 100]), + vec2.create([_inputStream.getWidth() - 20, _inputStream.getHeight() / 2 - 100]) + ]; + BarcodeLocator.init(_config.locator, { + inputImageWrapper : _inputImageWrapper + }); + } + + function getBoundingBoxes() { + var boxes; + + if (_config.locate) { + boxes = BarcodeLocator.locate(); + } else { + boxes = [_boxSize]; + } + return boxes; + } + + function update() { + var result, + boxes; + + if (_framegrabber.grab()) { + _canvasContainer.ctx.overlay.clearRect(0, 0, _inputImageWrapper.size.x, _inputImageWrapper.size.y); + boxes = getBoundingBoxes(); + if (boxes) { + result = _decoder.decodeFromBoundingBoxes(boxes); + if (result && result.codeResult) { + Events.publish("detected", result.codeResult.code); + } + } + } + } + + function start() { + _stopped = false; + ( function frame() { + if (!_stopped) { + if (_config.inputStream.type == "LiveStream") { + window.requestAnimFrame(frame); + } + update(); + } + }()); + } + + return { + init : function(config, callback) { + initialize(config, callback); + }, + start : function() { + console.log("Start!"); + start(); + }, + stop : function() { + _stopped = true; + }, + onDetected : function(callback) { + Events.subscribe("detected", callback, true); + }, + isInitialized : function() { + return _initialized; + }, + canvas : _canvasContainer, + decodeSingle : function(config, resultCallback) { + config.inputStream = { + type : "ImageStream", + src : config.src, + sequence : false, + size: 800 + }; + config.readyFunc = function() { + Events.subscribe("detected", function(result) { + _stopped = true; + resultCallback.call(null, result); + }, true); + start(); + }; + initialize(config); + }, + Reader: { + EANReader : EANReader, + Code128Reader : Code128Reader + } + }; +}); + + return require('quagga'); +})); \ No newline at end of file diff --git a/dist/quagga.min.js b/dist/quagga.min.js new file mode 100644 index 0000000..6bab900 --- /dev/null +++ b/dist/quagga.min.js @@ -0,0 +1,3 @@ +/*! quagga 2014-11-01 */ +!function(a,b){"function"==typeof define&&define.amd?define([],b):a.Quagga=b()}(this,function(){var a,b,c;!function(d){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(n=n.slice(0,n.length-1),a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.concat(a),k=0;k0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,b){return function(){return n.apply(d,v.call(arguments,0).concat([a,b]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var b=r[a];delete r[a],t[a]=!0,m.apply(d,b)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,b,c,f){var h,k,l,m,n,s,u=[],v=typeof c;if(f=f||a,"undefined"===v||"function"===v){for(b=!b.length&&c.length?["require","exports","module"]:b,n=0;nd?(j.start=c-g,j.end=c,j.counter=e,j):null;i++,e[i]=1,h=!h}}else for(e.push(0),c=g;cb)return k.error=b,k.start=a-d,k.end=a,k;for(c=0;5>c;c++)f[c]=f[c+2];f[5]=0,f[6]=0,j--}else j++;f[j]=1,i=!i}return null},b.prototype._findStart=function(){var a,b,c,d,e,f,g=[0,0,0,0,0,0],h=this,i=h._nextSet(h._row),j=!1,k=0,l={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(a=i;ad;d++)g[d]=g[d+2];g[4]=0,g[5]=0,k--}else k++;g[k]=1,j=!j}return null},b.prototype._decode=function(){var a,b,c,d=this,e=d._findStart(),f=null,g=!1,h=[],i=0,j=0,k=[],l=[],m=!1;if(null===e)return null;switch(f={code:e.code,start:e.start,end:e.end},l.push(f),j=f.code,f.code){case d.START_CODE_A:a=d.CODE_A;break;case d.START_CODE_B:a=d.CODE_B;break;case d.START_CODE_C:a=d.CODE_C;break;default:return null}for(;!g;){if(b=m,m=!1,f=d._decodeCode(f.end),null!==f)switch(f.code!==d.STOP_CODE&&(k.push(f.code),i++,j+=i*f.code),l.push(f),a){case d.CODE_A:if(f.code<64)h.push(String.fromCharCode(32+f.code));else if(f.code<96)h.push(String.fromCharCode(f.code-64));else switch(f.code){case d.CODE_SHIFT:m=!0,a=d.CODE_B;break;case d.CODE_B:a=d.CODE_B;break;case d.CODE_C:a=d.CODE_C;break;case d.STOP_CODE:g=!0}break;case d.CODE_B:if(f.code<96)h.push(String.fromCharCode(32+f.code));else switch(f.code!=d.STOP_CODE&&(c=!1),f.code){case d.CODE_SHIFT:m=!0,a=d.CODE_A;break;case d.CODE_A:a=d.CODE_A;break;case d.CODE_C:a=d.CODE_C;break;case d.STOP_CODE:g=!0}break;case d.CODE_C:switch(f.code<100&&h.push(f.code<10?"0"+f.code:f.code),f.code){case d.CODE_A:a=d.CODE_A;break;case d.CODE_B:a=d.CODE_B;break;case d.STOP_CODE:g=!0}}else g=!0;b&&(a=a==d.CODE_A?d.CODE_B:d.CODE_A)}return null===f?null:(f.end=d._nextUnset(d._row,f.end),f.end===d._row.length?null:(j-=i*k[k.length-1],j%103!=k[k.length-1]?null:(h.splice(h.length-1,1),{code:h.join(""),start:e.start,end:f.end,codeset:a,startInfo:e,decodedCodes:l,endInfo:f})))},b}),c("ean_reader",["./barcode_reader"],function(a){function b(){a.call(this)}var c={CODE_L_START:{value:0},MODULO:{value:7},CODE_G_START:{value:10},START_PATTERN:{value:[1/3*7,1/3*7,1/3*7]},STOP_PATTERN:{value:[1/3*7,1/3*7,1/3*7]},MIDDLE_PATTERN:{value:[.2*7,.2*7,.2*7,.2*7,.2*7]},CODE_PATTERN:{value:[[3,2,1,1],[2,2,2,1],[2,1,2,2],[1,4,1,1],[1,1,3,2],[1,2,3,1],[1,1,1,4],[1,3,1,2],[1,2,1,3],[3,1,1,2],[1,1,2,3],[1,2,2,2],[2,2,1,2],[1,1,4,1],[2,3,1,1],[1,3,2,1],[4,1,1,1],[2,1,3,1],[3,1,2,1],[2,1,1,3]]},CODE_FREQUENCY:{value:[0,11,13,14,19,25,28,21,22,26]}};return b.prototype=Object.create(a.prototype,c),b.prototype.constructor=b,b.prototype._decodeCode=function(b,c){var d,e,f,g,h=[0,0,0,0],i=this,j=b,k=!i._row[j],l=0,m={error:Number.MAX_VALUE,code:-1,start:b,end:b};for(c||(c=i.CODE_PATTERN.length),d=j;de;e++)f=i._matchPattern(g,i.CODE_PATTERN[e]),fh)return o.error=h,o.start=g-j,o.end=g,o;if(!e)throw a.PatternNotFoundException;for(i=0;ib;b++)d=c._decodeCode(d.end),d.code>=c.CODE_G_START?(d.code=d.code-c.CODE_G_START,f|=1<<5-b):f|=0<<5-b,e.push(d.code),g.push(d);for(b=0;bb;b++)d=c._decodeCode(d.end,c.CODE_G_START),g.push(d),e.push(d.code);if(d=c._findPattern(c.STOP_PATTERN,d.end),g.push(d),!c._checksum(e))return null}catch(h){return null}return{code:e.join(""),start:a.start,end:d.end,codeset:"",startInfo:a,decodedCodes:g}},b.prototype._checksum=function(a){var b,c=0;for(b=a.length-2;b>=0;b-=2)c+=a[b];for(c*=3,b=a.length-1;b>=0;b-=2)c+=a[b];return c%10===0},b}),c("image_loader",[],function(){function a(a,b){a.onload=function(){b.loaded(this)}}var b={};return b.load=function(b,c,d,e,f){var g,h,i,j=new Array(e),k=new Array(j.length);if(f===!1)j[0]=b;else for(g=0;g0)for(d=0;d0)for(c=0;c1?e.size:f/g*e.size:f},d.getHeight=function(){return e.size?f/g>1?g/f*e.size:e.size:g},d.getRealWidth=function(){return f},d.getRealHeight=function(){return g},d.setInputStream=function(a){e=a,a.sequence===!1?(n=a.src,l=1):(n=a.src,l=a.length),b()},d.ended=function(){return o},d.setAttribute=function(){},d.getConfig=function(){return e},d.pause=function(){i=!0},d.play=function(){i=!1},d.setCurrentTime=function(a){h=a},d.addEventListener=function(a,b){-1!==p.indexOf(a)&&(q[a]||(q[a]=[]),q[a].push(b))},d.getFrame=function(){var a;return j?(i||(a=k[h],l-1>h?h++:setTimeout(function(){o=!0,c("ended",[])},0)),a):null},d},b}),glMatrixArrayType=Float32Array,window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1e3/60)}}(),navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia,window.URL=window.URL||window.webkitURL||window.mozURL||window.msURL,c("typedefs",function(a){return function(){var b;return b||a.typedefs}}(this)),c("subImage",["typedefs"],function(){function a(a,b,c){c||(c={data:null,size:b}),this.data=c.data,this.originalSize=c.size,this.I=c,this.from=a,this.size=b}return a.prototype.show=function(a,b){var c,d,e,f,g,h,i;for(b||(b=1),c=a.getContext("2d"),a.width=this.size.x,a.height=this.size.y,d=c.getImageData(0,0,a.width,a.height),e=d.data,f=0,g=0;gb?!0:!1},getPoints:function(){return f},getCenter:function(){return g}}},createPoint:function(a,b,c){return{rad:a[c],point:a,id:b}}};return a});var d={};d.create=function(a){var b;return a?(b=new glMatrixArrayType(3),b[0]=a[0],b[1]=a[1],b[2]=a[2]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0]:3),b},d.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b},d.add=function(a,b,c){return c&&a!=c?(c[0]=a[0]+b[0],c[1]=a[1]+b[1],c[2]=a[2]+b[2],c):(a[0]+=b[0],a[1]+=b[1],a[2]+=b[2],a)},d.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c[2]=a[2]-b[2],c):(a[0]-=b[0],a[1]-=b[1],a[2]-=b[2],a)},d.negate=function(a,b){return b||(b=a),b[0]=-a[0],b[1]=-a[1],b[2]=-a[2],b},d.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a)},d.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=Math.sqrt(c*c+d*d+e*e);return f?1==f?(b[0]=c,b[1]=d,b[2]=e,b):(f=1/f,b[0]=c*f,b[1]=d*f,b[2]=e*f,b):(b[0]=0,b[1]=0,b[2]=0,b)},d.cross=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=b[0],h=b[1],i=b[2];return c[0]=e*i-f*h,c[1]=f*g-d*i,c[2]=d*h-e*g,c},d.length=function(a){var b=a[0],c=a[1],d=a[2];return Math.sqrt(b*b+c*c+d*d)},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]},d.direction=function(a,b,c){c||(c=a);var d=a[0]-b[0],e=a[1]-b[1],f=a[2]-b[2],g=Math.sqrt(d*d+e*e+f*f);return g?(g=1/g,c[0]=d*g,c[1]=e*g,c[2]=f*g,c):(c[0]=0,c[1]=0,c[2]=0,c)},d.lerp=function(a,b,c,d){return d||(d=a),d[0]=a[0]+c*(b[0]-a[0]),d[1]=a[1]+c*(b[1]-a[1]),d[2]=a[2]+c*(b[2]-a[2]),d},d.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var e={};e.create=function(a){var b;return a?(b=new glMatrixArrayType(9),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0,0,0,0,0,0]:9),b},e.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b},e.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},e.transpose=function(a,b){if(!b||a==b){var c=a[1],d=a[2],e=a[5];return a[1]=a[3],a[2]=a[6],a[3]=c,a[5]=a[7],a[6]=d,a[7]=e,a}return b[0]=a[0],b[1]=a[3],b[2]=a[6],b[3]=a[1],b[4]=a[4],b[5]=a[7],b[6]=a[2],b[7]=a[5],b[8]=a[8],b},e.toMat4=function(a,b){return b||(b=f.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=0,b[4]=a[3],b[5]=a[4],b[6]=a[5],b[7]=0,b[8]=a[6],b[9]=a[7],b[10]=a[8],b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},e.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+"]"};var f={};f.create=function(a){var b;return a?(b=new glMatrixArrayType(16),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]:16),b},f.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15],b},f.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},f.transpose=function(a,b){if(!b||a==b){var c=a[1],d=a[2],e=a[3],f=a[6],g=a[7],h=a[11];return a[1]=a[4],a[2]=a[8],a[3]=a[12],a[4]=c,a[6]=a[9],a[7]=a[13],a[8]=d,a[9]=f,a[11]=a[14],a[12]=e,a[13]=g,a[14]=h,a}return b[0]=a[0],b[1]=a[4],b[2]=a[8],b[3]=a[12],b[4]=a[1],b[5]=a[5],b[6]=a[9],b[7]=a[13],b[8]=a[2],b[9]=a[6],b[10]=a[10],b[11]=a[14],b[12]=a[3],b[13]=a[7],b[14]=a[11],b[15]=a[15],b},f.determinant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],m=a[11],n=a[12],o=a[13],p=a[14],q=a[15];return n*k*h*e-j*o*h*e-n*g*l*e+f*o*l*e+j*g*p*e-f*k*p*e-n*k*d*i+j*o*d*i+n*c*l*i-b*o*l*i-j*c*p*i+b*k*p*i+n*g*d*m-f*o*d*m-n*c*h*m+b*o*h*m+f*c*p*m-b*g*p*m-j*g*d*q+f*k*d*q+j*c*h*q-b*k*h*q-f*c*l*q+b*g*l*q},f.inverse=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],i=a[6],j=a[7],k=a[8],l=a[9],m=a[10],n=a[11],o=a[12],p=a[13],q=a[14],r=a[15],s=c*h-d*g,t=c*i-e*g,u=c*j-f*g,v=d*i-e*h,w=d*j-f*h,x=e*j-f*i,y=k*p-l*o,z=k*q-m*o,A=k*r-n*o,B=l*q-m*p,C=l*r-n*p,D=m*r-n*q,E=1/(s*D-t*C+u*B+v*A-w*z+x*y);return b[0]=(h*D-i*C+j*B)*E,b[1]=(-d*D+e*C-f*B)*E,b[2]=(p*x-q*w+r*v)*E,b[3]=(-l*x+m*w-n*v)*E,b[4]=(-g*D+i*A-j*z)*E,b[5]=(c*D-e*A+f*z)*E,b[6]=(-o*x+q*u-r*t)*E,b[7]=(k*x-m*u+n*t)*E,b[8]=(g*C-h*A+j*y)*E,b[9]=(-c*C+d*A-f*y)*E,b[10]=(o*w-p*u+r*s)*E,b[11]=(-k*w+l*u-n*s)*E,b[12]=(-g*B+h*z-i*y)*E,b[13]=(c*B-d*z+e*y)*E,b[14]=(-o*v+p*t-q*s)*E,b[15]=(k*v-l*t+m*s)*E,b},f.toRotationMat=function(a,b){return b||(b=f.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},f.toMat3=function(a,b){return b||(b=e.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[4],b[4]=a[5],b[5]=a[6],b[6]=a[8],b[7]=a[9],b[8]=a[10],b},f.toInverseMat3=function(a,b){var c=a[0],d=a[1],f=a[2],g=a[4],h=a[5],i=a[6],j=a[8],k=a[9],l=a[10],m=l*h-i*k,n=-l*g+i*j,o=k*g-h*j,p=c*m+d*n+f*o;if(!p)return null;var q=1/p;return b||(b=e.create()),b[0]=m*q,b[1]=(-l*d+f*k)*q,b[2]=(i*d-f*h)*q,b[3]=n*q,b[4]=(l*c-f*j)*q,b[5]=(-i*c+f*g)*q,b[6]=o*q,b[7]=(-k*c+d*j)*q,b[8]=(h*c-d*g)*q,b},f.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],m=a[9],n=a[10],o=a[11],p=a[12],q=a[13],r=a[14],s=a[15],t=b[0],u=b[1],v=b[2],w=b[3],x=b[4],y=b[5],z=b[6],A=b[7],B=b[8],C=b[9],D=b[10],E=b[11],F=b[12],G=b[13],H=b[14],I=b[15];return c[0]=t*d+u*h+v*l+w*p,c[1]=t*e+u*i+v*m+w*q,c[2]=t*f+u*j+v*n+w*r,c[3]=t*g+u*k+v*o+w*s,c[4]=x*d+y*h+z*l+A*p,c[5]=x*e+y*i+z*m+A*q,c[6]=x*f+y*j+z*n+A*r,c[7]=x*g+y*k+z*o+A*s,c[8]=B*d+C*h+D*l+E*p,c[9]=B*e+C*i+D*m+E*q,c[10]=B*f+C*j+D*n+E*r,c[11]=B*g+C*k+D*o+E*s,c[12]=F*d+G*h+H*l+I*p,c[13]=F*e+G*i+H*m+I*q,c[14]=F*f+G*j+H*n+I*r,c[15]=F*g+G*k+H*o+I*s,c},f.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[4]*e+a[8]*f+a[12],c[1]=a[1]*d+a[5]*e+a[9]*f+a[13],c[2]=a[2]*d+a[6]*e+a[10]*f+a[14],c},f.multiplyVec4=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3];return c[0]=a[0]*d+a[4]*e+a[8]*f+a[12]*g,c[1]=a[1]*d+a[5]*e+a[9]*f+a[13]*g,c[2]=a[2]*d+a[6]*e+a[10]*f+a[14]*g,c[3]=a[3]*d+a[7]*e+a[11]*f+a[15]*g,c},f.translate=function(a,b,c){var d=b[0],e=b[1],f=b[2];if(!c||a==c)return a[12]=a[0]*d+a[4]*e+a[8]*f+a[12],a[13]=a[1]*d+a[5]*e+a[9]*f+a[13],a[14]=a[2]*d+a[6]*e+a[10]*f+a[14],a[15]=a[3]*d+a[7]*e+a[11]*f+a[15],a;var g=a[0],h=a[1],i=a[2],j=a[3],k=a[4],l=a[5],m=a[6],n=a[7],o=a[8],p=a[9],q=a[10],r=a[11];return c[0]=g,c[1]=h,c[2]=i,c[3]=j,c[4]=k,c[5]=l,c[6]=m,c[7]=n,c[8]=o,c[9]=p,c[10]=q,c[11]=r,c[12]=g*d+k*e+o*f+a[12],c[13]=h*d+l*e+p*f+a[13],c[14]=i*d+m*e+q*f+a[14],c[15]=j*d+n*e+r*f+a[15],c},f.scale=function(a,b,c){var d=b[0],e=b[1],f=b[2];return c&&a!=c?(c[0]=a[0]*d,c[1]=a[1]*d,c[2]=a[2]*d,c[3]=a[3]*d,c[4]=a[4]*e,c[5]=a[5]*e,c[6]=a[6]*e,c[7]=a[7]*e,c[8]=a[8]*f,c[9]=a[9]*f,c[10]=a[10]*f,c[11]=a[11]*f,c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15],c):(a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=f,a[9]*=f,a[10]*=f,a[11]*=f,a)},f.rotate=function(a,b,c,d){var e=c[0],f=c[1],g=c[2],h=Math.sqrt(e*e+f*f+g*g);if(!h)return null;1!=h&&(h=1/h,e*=h,f*=h,g*=h);var i=Math.sin(b),j=Math.cos(b),k=1-j,l=a[0],m=a[1],n=a[2],o=a[3],p=a[4],q=a[5],r=a[6],s=a[7],t=a[8],u=a[9],v=a[10],w=a[11],x=e*e*k+j,y=f*e*k+g*i,z=g*e*k-f*i,A=e*f*k-g*i,B=f*f*k+j,C=g*f*k+e*i,D=e*g*k+f*i,E=f*g*k-e*i,F=g*g*k+j;return d?a!=d&&(d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]):d=a,d[0]=l*x+p*y+t*z,d[1]=m*x+q*y+u*z,d[2]=n*x+r*y+v*z,d[3]=o*x+s*y+w*z,d[4]=l*A+p*B+t*C,d[5]=m*A+q*B+u*C,d[6]=n*A+r*B+v*C,d[7]=o*A+s*B+w*C,d[8]=l*D+p*E+t*F,d[9]=m*D+q*E+u*F,d[10]=n*D+r*E+v*F,d[11]=o*D+s*E+w*F,d},f.rotateX=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[4],g=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],m=a[11];return c?a!=c&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[4]=f*e+j*d,c[5]=g*e+k*d,c[6]=h*e+l*d,c[7]=i*e+m*d,c[8]=f*-d+j*e,c[9]=g*-d+k*e,c[10]=h*-d+l*e,c[11]=i*-d+m*e,c},f.rotateY=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[0],g=a[1],h=a[2],i=a[3],j=a[8],k=a[9],l=a[10],m=a[11];return c?a!=c&&(c[4]=a[4],c[5]=a[5],c[6]=a[6],c[7]=a[7],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[0]=f*e+j*-d,c[1]=g*e+k*-d,c[2]=h*e+l*-d,c[3]=i*e+m*-d,c[8]=f*d+j*e,c[9]=g*d+k*e,c[10]=h*d+l*e,c[11]=i*d+m*e,c},f.rotateZ=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[0],g=a[1],h=a[2],i=a[3],j=a[4],k=a[5],l=a[6],m=a[7];return c?a!=c&&(c[8]=a[8],c[9]=a[9],c[10]=a[10],c[11]=a[11],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[0]=f*e+j*d,c[1]=g*e+k*d,c[2]=h*e+l*d,c[3]=i*e+m*d,c[4]=f*-d+j*e,c[5]=g*-d+k*e,c[6]=h*-d+l*e,c[7]=i*-d+m*e,c},f.frustum=function(a,b,c,d,e,g,h){h||(h=f.create());var i=b-a,j=d-c,k=g-e;return h[0]=2*e/i,h[1]=0,h[2]=0,h[3]=0,h[4]=0,h[5]=2*e/j,h[6]=0,h[7]=0,h[8]=(b+a)/i,h[9]=(d+c)/j,h[10]=-(g+e)/k,h[11]=-1,h[12]=0,h[13]=0,h[14]=-(g*e*2)/k,h[15]=0,h},f.perspective=function(a,b,c,d,e){var g=c*Math.tan(a*Math.PI/360),h=g*b;return f.frustum(-h,h,-g,g,c,d,e)},f.ortho=function(a,b,c,d,e,g,h){h||(h=f.create());var i=b-a,j=d-c,k=g-e;return h[0]=2/i,h[1]=0,h[2]=0,h[3]=0,h[4]=0,h[5]=2/j,h[6]=0,h[7]=0,h[8]=0,h[9]=0,h[10]=-2/k,h[11]=0,h[12]=-(a+b)/i,h[13]=-(d+c)/j,h[14]=-(g+e)/k,h[15]=1,h},f.lookAt=function(a,b,c,d){d||(d=f.create());var e=a[0],g=a[1],h=a[2],i=c[0],j=c[1],k=c[2],l=b[0],m=b[1],n=b[2];if(e==l&&g==m&&h==n)return f.identity(d);var o,p,q,r,s,t,u,v,w,x;return o=e-b[0],p=g-b[1],q=h-b[2],x=1/Math.sqrt(o*o+p*p+q*q),o*=x,p*=x,q*=x,r=j*q-k*p,s=k*o-i*q,t=i*p-j*o,x=Math.sqrt(r*r+s*s+t*t),x?(x=1/x,r*=x,s*=x,t*=x):(r=0,s=0,t=0),u=p*t-q*s,v=q*r-o*t,w=o*s-p*r,x=Math.sqrt(u*u+v*v+w*w),x?(x=1/x,u*=x,v*=x,w*=x):(u=0,v=0,w=0),d[0]=r,d[1]=u,d[2]=o,d[3]=0,d[4]=s,d[5]=v,d[6]=p,d[7]=0,d[8]=t,d[9]=w,d[10]=q,d[11]=0,d[12]=-(r*e+s*g+t*h),d[13]=-(u*e+v*g+w*h),d[14]=-(o*e+p*g+q*h),d[15]=1,d},f.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+",\n "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+",\n "+a[8]+", "+a[9]+", "+a[10]+", "+a[11]+",\n "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"},quat4={},quat4.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},quat4.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b},quat4.calculateW=function(a,b){var c=a[0],d=a[1],e=a[2];return b&&a!=b?(b[0]=c,b[1]=d,b[2]=e,b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e)),b):(a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e)),a)},quat4.inverse=function(a,b){return b&&a!=b?(b[0]=-a[0],b[1]=-a[1],b[2]=-a[2],b[3]=a[3],b):(a[0]*=-1,a[1]*=-1,a[2]*=-1,a)},quat4.length=function(a){var b=a[0],c=a[1],d=a[2],e=a[3];return Math.sqrt(b*b+c*c+d*d+e*e)},quat4.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=Math.sqrt(c*c+d*d+e*e+f*f);return 0==g?(b[0]=0,b[1]=0,b[2]=0,b[3]=0,b):(g=1/g,b[0]=c*g,b[1]=d*g,b[2]=e*g,b[3]=f*g,b)},quat4.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=b[0],i=b[1],j=b[2],k=b[3];return c[0]=d*k+g*h+e*j-f*i,c[1]=e*k+g*i+f*h-d*j,c[2]=f*k+g*j+d*i-e*h,c[3]=g*k-d*h-e*i-f*j,c},quat4.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=a[0],h=a[1],i=a[2],j=a[3],k=j*d+h*f-i*e,l=j*e+i*d-g*f,m=j*f+g*e-h*d,n=-g*d-h*e-i*f;return c[0]=k*j+n*-g+l*-i-m*-h,c[1]=l*j+n*-h+m*-g-k*-i,c[2]=m*j+n*-i+k*-h-l*-g,c},quat4.toMat3=function(a,b){b||(b=e.create());var c=a[0],d=a[1],f=a[2],g=a[3],h=c+c,i=d+d,j=f+f,k=c*h,l=c*i,m=c*j,n=d*i,o=d*j,p=f*j,q=g*h,r=g*i,s=g*j;return b[0]=1-(n+p),b[1]=l-s,b[2]=m+r,b[3]=l+s,b[4]=1-(k+p),b[5]=o-q,b[6]=m-r,b[7]=o+q,b[8]=1-(k+n),b},quat4.toMat4=function(a,b){b||(b=f.create());var c=a[0],d=a[1],e=a[2],g=a[3],h=c+c,i=d+d,j=e+e,k=c*h,l=c*i,m=c*j,n=d*i,o=d*j,p=e*j,q=g*h,r=g*i,s=g*j;return b[0]=1-(n+p),b[1]=l-s,b[2]=m+r,b[3]=0,b[4]=l+s,b[5]=1-(k+p),b[6]=o-q,b[7]=0,b[8]=m-r,b[9]=o+q,b[10]=1-(k+n),b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},quat4.slerp=function(a,b,c,d){d||(d=a);var e=a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3];if(Math.abs(e)>=1)return d!=a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]),d;var f=Math.acos(e),g=Math.sqrt(1-e*e);if(Math.abs(g)<.001)return d[0]=.5*a[0]+.5*b[0],d[1]=.5*a[1]+.5*b[1],d[2]=.5*a[2]+.5*b[2],d[3]=.5*a[3]+.5*b[3],d;var h=Math.sin((1-c)*f)/g,i=Math.sin(c*f)/g;return d[0]=a[0]*h+b[0]*i,d[1]=a[1]*h+b[1]*i,d[2]=a[2]*h+b[2]*i,d[3]=a[3]*h+b[3]*i,d},quat4.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"},c("glMatrix",["typedefs"],function(a){return function(){var b;return b||a.glMatrix}}(this)),f.xVec4=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3];return c[0]=a[0]*d+a[1]*e+a[2]*f+a[3]*g,c[1]=a[4]*d+a[5]*e+a[6]*f+a[7]*g,c[2]=a[8]*d+a[9]*e+a[10]*f+a[11]*g,c[3]=a[12]*d+a[13]*e+a[14]*f+a[15]*g,c},e.scale=function(a,b,c){return c&&a!=c?(c=e.create(),c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c[4]=a[4]*b,c[5]=a[5]*b,c[6]=a[6]*b,c[7]=a[7]*b,c[8]=a[8]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a[4]*=b,a[5]*=b,a[6]*=b,a[7]*=b,a[8]*=b,a)},e.inverse=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],i=a[6],j=a[7],k=a[8],l=1/(c*g*k+d*h*i+e*f*j-e*g*i-d*f*k-c*h*j);return b[0]=(g*k-h*j)*l,b[1]=(e*j-d*k)*l,b[2]=(d*h-e*g)*l,b[3]=(h*i-f*k)*l,b[4]=(c*k-e*i)*l,b[5]=(e*f-c*h)*l,b[6]=(f*j-g*i)*l,b[7]=(d*i-c*j)*l,b[8]=(c*g-d*f)*l,b},e.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],m=b[0],n=b[1],o=b[2],p=b[3],q=b[4],r=b[5],s=b[6],t=b[7],u=b[8];return c[0]=d*m+e*p+f*s,c[1]=d*n+e*q+f*t,c[2]=d*o+e*r+f*u,c[3]=g*m+h*p+i*s,c[4]=g*n+h*q+i*t,c[5]=g*o+h*r+i*u,c[6]=j*m+k*p+l*s,c[7]=j*n+k*q+l*t,c[8]=j*o+k*r+l*u,c},e.xVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[1]*e+a[2]*f,c[1]=a[3]*d+a[4]*e+a[5]*f,c[2]=a[6]*d+a[7]*e+a[8]*f,c};var g={};g.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},g.project=function(a,b){return b||(b=a),b[0]=a[0]/a[3],b[1]=a[1]/a[3],b[2]=a[2]/a[3],b},g.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[4]*=b,a)},g.xMat4=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3];return c[0]=b[0]*d+b[4]*e+b[8]*f+b[12]*g,c[1]=b[1]*d+b[5]*e+b[9]*f+b[13]*g,c[2]=b[2]*d+b[6]*e+b[10]*f+b[14]*g,c[3]=b[3]*d+b[7]*e+b[11]*f+b[15]*g,c};var h={};h.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},h.xVec2=function(a,b,c){c||(c=b);var d=b[0],e=b[1];return c[0]=a[0]*d+a[1]*e,c[1]=a[2]*d+a[3]*e,c},h.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a)},h.determinant=function(a){return a[0]*a[3]-a[1]*a[2]},h.inverse=function(a){var b=1/h.determinant(a),c=a[3]*b,d=-a[1]*b,e=-a[2]*b,f=a[0];return a[0]=c,a[1]=d,a[2]=e,a[3]=f,a};var i={};i.create=function(a){var b;return a?(b=new glMatrixArrayType(2),b[0]=a[0],b[1]=a[1]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0]:2),b},i.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c):(a[0]-=b[0],a[1]-=b[1],a)},i.add=function(a,b,c){return c&&a!=c?(c[0]=a[0]+b[0],c[1]=a[1]+b[1],c):(a[0]+=b[0],a[1]+=b[1],a)},i.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c):(a[0]*=b,a[1]*=b,a)},i.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=Math.sqrt(c*c+d*d);return e?1==e?(b[0]=c,b[1]=d,b):(e=1/e,b[0]=c*e,b[1]=d*e,b):(b[0]=0,b[1]=0,b)},i.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},i.multiply=function(a,b,c){return c||(c=a),c[0]=a[0]*b[0],c[1]=a[1]*b[1],c +},i.unproject=function(a){return d.create([a[0],a[1],1])},i.length=function(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1])},i.perspectiveProject=function(a){var b=i.create(a);return i.scale(b,1/a[2])},d.project=function(a){return i.scale(i.create(a),1/a[2])};var j={};j.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c[4]=a[4]*b,c[5]=a[5]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a[4]*=b,a[5]*=b,a)},j.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c[2]=a[2]-b[2],c[3]=a[3]-b[3],c[4]=a[4]-b[4],c[5]=a[5]-b[5],c):(a[0]-=b[0],a[1]-=b[1],a[2]-=b[2],a[3]-=b[3],a[4]-=b[4],a[5]-=b[5],a)},j.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]+a[4]*b[4]+a[5]*b[5]};var k={};return k.xVec6=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5];return c[0]=a[0]*d+a[1]*e+a[2]*f+a[3]*g+a[4]*h+a[5]*i,c[1]=a[6]*d+a[7]*e+a[8]*f+a[9]*g+a[10]*h+a[11]*i,c[2]=a[12]*d+a[13]*e+a[14]*f+a[15]*g+a[16]*h+a[17]*i,c[3]=a[18]*d+a[19]*e+a[20]*f+a[21]*g+a[22]*h+a[23]*i,c[4]=a[24]*d+a[25]*e+a[26]*f+a[27]*g+a[28]*h+a[29]*i,c[5]=a[30]*d+a[31]*e+a[32]*f+a[33]*g+a[34]*h+a[35]*i,c},e.xVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[1]*e+a[2]*f,c[1]=a[3]*d+a[4]*e+a[5]*f,c[2]=a[6]*d+a[7]*e+a[8]*f,c},c("glMatrixAddon",["glMatrix"],function(a){return function(){var b;return b||a.glMatrixAddon}}(this)),c("array_helper",[],function(){return{init:function(a,b){for(var c=a.length;c--;)a[c]=b},shuffle:function(a){var b,c,d=a.length-1;for(d;d>=0;d--)b=Math.floor(Math.random()*d),c=a[d],a[d]=a[b],a[b]=c;return a},toPointList:function(a){var b,c,d=[],e=[];for(b=0;b=b&&e.push(a[d]);return e},maxIndex:function(a){var b,c=0;for(b=0;ba[c]&&(c=b);return c},max:function(a){var b,c=0;for(b=0;bc&&(c=a[b]);return c}}}),c("cv_utils",["cluster","glMatrixAddon","array_helper"],function(a,b,c){var e={};return e.imageRef=function(a,b){var c={x:a,y:b,toVec2:function(){return i.create([this.x,this.y])},toVec3:function(){return d.create([this.x,this.y,1])},round:function(){return this.x=Math.floor(this.x>0?this.x+.5:this.x-.5),this.y=Math.floor(this.y>0?this.y+.5:this.y-.5),this}};return c},e.computeIntegralImage2=function(a,b){var c,d,e=a.data,f=a.size.x,g=a.size.y,h=b.data,i=0,j=0,k=0,l=0,m=0;for(k=f,i=0,d=1;g>d;d++)i+=e[j],h[k]+=i,j+=f,k+=f;for(j=0,k=1,i=0,c=1;f>c;c++)i+=e[j],h[k]+=i,j++,k++;for(d=1;g>d;d++)for(j=d*f+1,k=(d-1)*f+1,l=d*f,m=(d-1)*f,c=1;f>c;c++)h[j]+=e[j]+h[k]+h[l]-h[m],j++,k++,l++,m++},e.computeIntegralImage=function(a,b){for(var c=a.data,d=a.size.x,e=a.size.y,f=b.data,g=0,h=0;d>h;h++)g+=c[h],f[h]=g;for(var i=1;e>i;i++){g=0;for(var j=0;d>j;j++)g+=c[i*d+j],f[i*d+j]=g+f[(i-1)*d+j]}},e.thresholdImage=function(a,b,c){c||(c=a);for(var d=a.data,e=d.length,f=c.data;e--;)f[e]=d[e]b;b++)e[b]=0;for(;d--;)e[c[d]]++;return e},e.otsuThreshold=function(a,b){function d(a,b){var c,d=0;for(c=a;b>=c;c++)d+=h[c];return d}function f(a,b){var c,d=0;for(c=a;b>=c;c++)d+=c*h[c];return d}function g(){var b,g,i,j,k,l,m,n=[0];for(h=e.computeHistogram(a),j=1;255>j;j++)b=d(0,j),g=d(j+1,255),i=b*g,0===i&&(i=1),k=f(0,j)*g,l=f(j+1,255)*b,m=k-l,n[j]=m*m/i;return c.maxIndex(n)}var h,i;return i=g(),e.thresholdImage(a,i,b),i},e.computeBinaryImage=function(a,b,c){e.computeIntegralImage(a,b),c||(c=a);var d,f,g,h,i,j,k,l=a.data,m=c.data,n=a.size.x,o=a.size.y,p=b.data,q=0,r=3,s=(2*r+1)*(2*r+1);for(d=0;r>=d;d++)for(f=0;n>f;f++)m[d*n+f]=0,m[(o-1-d)*n+f]=0;for(d=r;o-r>d;d++)for(f=0;r>=f;f++)m[d*n+f]=0,m[d*n+(n-1-f)]=0;for(d=r+1;o-r-1>d;d++)for(f=r+1;n-r>f;f++)g=p[(d-r-1)*n+(f-r-1)],h=p[(d-r-1)*n+(f+r)],i=p[(d+r)*n+(f-r-1)],j=p[(d+r)*n+(f+r)],q=j-i-h+g,k=q/s,m[d*n+f]=l[d*n+f]>k+5?0:1},e.cluster=function(b,c,d){function e(a){var b=!1;for(g=0;gb.x-j&&a.xb.y-k&&a.yd;d++){for(h=Math.floor(Math.random()*a.length),f=[],i=h,f.push(a[i]);null!==(i=c(i,!0));)f.push(a[i]);if(h>0)for(i=h;null!==(i=c(i,!1));)f.push(a[i]);f.length>g.length&&(g=f)}return g}},e.DILATE=1,e.ERODE=2,e.dilate=function(a,b){var c,d,e,f,g,h,i,j=a.data,k=b.data,l=a.size.y,m=a.size.x;for(c=1;l-1>c;c++)for(d=1;m-1>d;d++)f=c-1,g=c+1,h=d-1,i=d+1,e=j[f*m+h]+j[f*m+i]+j[c*m+d]+j[g*m+h]+j[g*m+i],k[c*m+d]=e>0?1:0},e.erode=function(a,b){var c,d,e,f,g,h,i,j=a.data,k=b.data,l=a.size.y,m=a.size.x;for(c=1;l-1>c;c++)for(d=1;m-1>d;d++)f=c-1,g=c+1,h=d-1,i=d+1,e=j[f*m+h]+j[f*m+i]+j[c*m+d]+j[g*m+h]+j[g*m+i],k[c*m+d]=5===e?1:0},e.subtract=function(a,b,c){c||(c=a);for(var d=a.data.length,e=a.data,f=b.data,g=c.data;d--;)g[d]=e[d]-f[d]},e.bitwiseOr=function(a,b,c){c||(c=a);for(var d=a.data.length,e=a.data,f=b.data,g=c.data;d--;)g[d]=e[d]||f[d]},e.countNonZero=function(a){for(var b=a.data.length,c=a.data,d=0;b--;)d+=c[b];return d},e.topGeneric=function(a,b,c){var d,e,f,g,h=0,i=0,j=[];for(d=0;b>d;d++)j[d]={score:0,item:null};for(d=0;di)for(f=j[h],f.score=e,f.item=a[d],i=Number.MAX_VALUE,g=0;b>g;g++)j[g].scoref;){for(d=0;h>d;d++)c[i]=Math.floor((.299*a[4*e+0]+.587*a[4*e+1]+.114*a[4*e+2]+(.299*a[4*(e+1)+0]+.587*a[4*(e+1)+1]+.114*a[4*(e+1)+2])+(.299*a[4*f+0]+.587*a[4*f+1]+.114*a[4*f+2])+(.299*a[4*(f+1)+0]+.587*a[4*(f+1)+1]+.114*a[4*(f+1)+2]))/4),i++,e+=2,f+=2;e+=j,f+=j}},e.computeGray=function(a,b){var c=a.length/4,d=0;for(d=0;c>d;d++)b[d]=Math.floor(.299*a[4*d+0]+.587*a[4*d+1]+.114*a[4*d+2])},e.loadImageArray=function(a,b,c){c||(c=document.createElement("canvas"));var d=new Image;d.callback=b,d.onload=function(){c.width=this.width,c.height=this.height;var a=c.getContext("2d");a.drawImage(this,0,0);var b=new Uint8Array(this.width*this.height);a.drawImage(this,0,0);var d=a.getImageData(0,0,this.width,this.height).data;e.computeGray(d,b),this.callback(b,{x:this.width,y:this.height},this)},d.src=a},e.halfSample=function(a,b){for(var c=a.data,d=a.size.x,e=b.data,f=0,g=d,h=c.length,i=d/2,j=0;h>g;){for(var k=0;i>k;k++)e[j]=Math.floor((c[f]+c[f+1]+c[g]+c[g+1])/4),j++,f+=2,g+=2;f+=d,g+=d}},e.hsv2rgb=function(a,b){var c=a[0],d=a[1],e=a[2],f=e*d,g=f*(1-Math.abs(c/60%2-1)),h=e-f,i=0,j=0,k=0;return b=b||[0,0,0],60>c?(i=f,j=g):120>c?(i=g,j=f):180>c?(j=f,k=g):240>c?(j=g,k=f):300>c?(i=g,k=f):360>c&&(i=f,k=g),b[0]=255*(i+h)|0,b[1]=255*(j+h)|0,b[2]=255*(k+h)|0,b},e}),c("image_wrapper",["subImage","cv_utils","array_helper"],function(a,b,c){function d(a,b,d,e){b?this.data=b:d?(this.data=new d(a.x*a.y),d===Array&&e&&c.init(this.data,0)):(this.data=new Uint8Array(a.x*a.y),Uint8Array===Array&&e&&c.init(this.data,0)),this.size=a}return d.prototype.inImageWithBorder=function(a,b){return a.x>=b&&a.y>=b&&a.x=0&&u>=0&&n-1>v&&o-1>w){for(g=s,j=0;m>j;++j,i.add(g,y))for(k=0;l>k;++k,i.add(g,p))b.set(k,j,x(a,g[0],g[1]));return 0}var z=n-1,A=o-1,B=0;for(g=s,j=0;m>j;++j,i.add(g,y))for(k=0;l>k;++k,i.add(g,p))0<=g[0]&&0<=g[1]&&g[0]c;c++)for(d=0;e>d;d++)a.data[d*f+c]=this.data[(b.y+d)*this.size.x+b.x+c]},d.prototype.copyTo=function(a){for(var b=this.data.length,c=this.data,d=a.data;b--;)d[b]=c[b]},d.prototype.get=function(a,b){return this.data[b*this.size.x+a]},d.prototype.getSafe=function(a,b){var c;if(!this.indexMapping){for(this.indexMapping={x:[],y:[]},c=0;ca;a++)d[a]=d[(c-1)*b+a]=0;for(a=1;c-1>a;a++)d[a*b]=d[a*b+(b-1)]=0},d.prototype.invert=function(){for(var a=this.data,b=a.length;b--;)a[b]=a[b]?0:1},d.prototype.convolve=function(a){var b,c,d,e,f=a.length/2|0,g=0;for(c=0;c=e;e++)for(d=-f;f>=d;d++)g+=a[e+f][d+f]*this.getSafe(b+d,c+e);this.data[c*this.size.x+b]=g}},d.prototype.moments=function(a){var b,c,d,e,f,g,h,j,k,l,m,n,o=this.data,p=this.size.y,q=this.size.x,r=[],s=[],t=Math.PI,u=t/4;if(0>=a)return s;for(f=0;a>f;f++)r[f]={m00:0,m01:0,m10:0,m11:0,m02:0,m20:0,theta:0,rad:0};for(c=0;p>c;c++)for(e=c*c,b=0;q>b;b++)d=o[c*q+b],d>0&&(g=r[d-1],g.m00+=1,g.m01+=c,g.m10+=b,g.m11+=b*c,g.m02+=e,g.m20+=b*b);for(f=0;a>f;f++)g=r[f],isNaN(g.m00)||0===g.m00||(l=g.m10/g.m00,m=g.m01/g.m00,h=g.m11/g.m00-l*m,j=g.m02/g.m00-m*m,k=g.m20/g.m00-l*l,n=(j-k)/(2*h),n=.5*Math.atan(n)+(h>=0?u:-u)+t,g.theta=(180*n/t+90)%180-90,g.theta<0&&(g.theta+=180),g.rad=n>t?n-t:n,g.vec=i.create([Math.cos(n),Math.sin(n)]),s.push(g));return s},d.prototype.show=function(a,b){var c,d,e,f,g,h,i;for(b||(b=1),c=a.getContext("2d"),a.width=this.size.x,a.height=this.size.y,d=c.getImageData(0,0,a.width,a.height),e=d.data,f=0,i=0;ic||c>360)&&(c=360);for(var e=[0,1,1],f=[0,0,0],g=[255,255,255],h=[0,0,0],i=[],j=a.getContext("2d"),k=j.getImageData(d.x,d.y,this.size.x,this.size.y),l=k.data,m=this.data.length;m--;)e[0]=this.data[m]*c,i=e[0]<=0?g:e[0]>=360?h:b.hsv2rgb(e,f),l[4*m+0]=i[0],l[4*m+1]=i[1],l[4*m+2]=i[2],l[4*m+3]=255;j.putImageData(k,d.x,d.y)},d}),c("tracer",[],function(){var a={searchDirections:[[0,1],[1,1],[1,0],[1,-1],[0,-1],[-1,-1],[-1,0],[-1,1]],create:function(a,b){function c(a,b,c,d){var e,k,l;for(e=0;7>e;e++){if(k=a.cy+i[a.dir][0],l=a.cx+i[a.dir][1],f=k*j+l,g[f]===b&&(0===h[f]||h[f]===c))return h[f]=c,a.cy=k,a.cx=l,!0;0===h[f]&&(h[f]=d),a.dir=(a.dir+1)%8}return!1}function d(a,b,c){return{dir:c,x:a,y:b,next:null,prev:null}}function e(a,b,e,f,g){var h,i,j,k=null,l={cx:b,cy:a,dir:0};if(c(l,f,e,g)){k=d(b,a,l.dir),h=k,j=l.dir,i=d(l.cx,l.cy,0),i.prev=h,h.next=i,i.next=null,h=i;do l.dir=(l.dir+6)%8,c(l,f,e,g),j!=l.dir?(h.dir=l.dir,i=d(l.cx,l.cy,0),i.prev=h,h.next=i,i.next=null,h=i):(h.dir=j,h.x=l.cx,h.y=l.cy),j=l.dir;while(l.cx!=b||l.cy!=a);k.prev=h.prev,h.prev.next=k}return k}var f,g=a.data,h=b.data,i=this.searchDirections,j=a.size.x;return{trace:function(a,b,d,e){return c(a,b,d,e)},contourTracing:function(a,b,c,d,f){return e(a,b,c,d,f)}}}};return a}),c("rasterizer",["tracer"],function(a){var b={createContour2D:function(){return{dir:null,index:null,firstVertex:null,insideContours:null,nextpeer:null,prevpeer:null}},CONTOUR_DIR:{CW_DIR:0,CCW_DIR:1,UNKNOWN_DIR:2},DIR:{OUTSIDE_EDGE:-32767,INSIDE_EDGE:-32766},create:function(c,d){var e=c.data,f=d.data,g=c.size.x,h=c.size.y,i=a.create(c,d);return{rasterize:function(a){var c,d,j,k,l,m,n,o,p,q,r,s,t=[],u=0;for(s=0;400>s;s++)t[s]=0;for(t[0]=e[0],p=null,m=1;h-1>m;m++)for(k=0,d=t[0],l=1;g-1>l;l++)if(r=m*g+l,0===f[r])if(c=e[r],c!==d){if(0===k)j=u+1,t[j]=c,d=c,n=i.contourTracing(m,l,j,c,b.DIR.OUTSIDE_EDGE),null!==n&&(u++,k=j,o=b.createContour2D(),o.dir=b.CONTOUR_DIR.CW_DIR,o.index=k,o.firstVertex=n,o.nextpeer=p,o.insideContours=null,null!==p&&(p.prevpeer=o),p=o);else if(n=i.contourTracing(m,l,b.DIR.INSIDE_EDGE,c,k),null!==n){for(o=b.createContour2D(),o.firstVertex=n,o.insideContours=null,o.dir=0===a?b.CONTOUR_DIR.CCW_DIR:b.CONTOUR_DIR.CW_DIR,o.index=a,q=p;null!==q&&q.index!==k;)q=q.nextpeer;null!==q&&(o.nextpeer=q.insideContours,null!==q.insideContours&&(q.insideContours.prevpeer=o),q.insideContours=o)}}else f[r]=k;else f[r]===b.DIR.OUTSIDE_EDGE||f[r]===b.DIR.INSIDE_EDGE?(k=0,d=f[r]===b.DIR.INSIDE_EDGE?e[r]:t[0]):(k=f[r],d=t[k]);for(q=p;null!==q;)q.index=a,q=q.nextpeer;return{cc:p,count:u}},debug:{drawContour:function(a,c){var d,e,f,g=a.getContext("2d"),h=c;for(g.strokeStyle="red",g.fillStyle="red",g.lineWidth=1,d=null!==h?h.insideContours:null;null!==h;){switch(null!==d?(e=d,d=d.nextpeer):(e=h,h=h.nextpeer,d=null!==h?h.insideContours:null),e.dir){case b.CONTOUR_DIR.CW_DIR:g.strokeStyle="red";break;case b.CONTOUR_DIR.CCW_DIR:g.strokeStyle="blue";break;case b.CONTOUR_DIR.UNKNOWN_DIR:g.strokeStyle="green"}f=e.firstVertex,g.beginPath(),g.moveTo(f.x,f.y);do f=f.next,g.lineTo(f.x,f.y);while(f!==e.firstVertex);g.stroke()}}}}}};return b}),c("skeletonizer",[],function(){function a(a,b,c){"use asm";function d(a,b){a|=0,b|=0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;for(c=1;(c|0)<(n-1|0);c=c+1|0)for(j=j+n|0,d=1;(d|0)<(n-1|0);d=d+1|0)f=j-n|0,g=j+n|0,h=d-1|0,i=d+1|0,e=(m[a+f+h|0]|0)+(m[a+f+i|0]|0)+(m[a+j+d|0]|0)+(m[a+g+h|0]|0)+(m[a+g+i|0]|0)|0,m[b+j+d|0]=(e|0)==5?1:0}function e(a,b,c){a|=0,b|=0,c|=0;var d=0;for(d=o(n,n)|0;(d|0)>0;)d=d-1|0,m[c+d|0]=(m[a+d|0]|0)-(m[b+d|0]|0)|0}function f(a,b,c){a|=0,b|=0,c|=0;var d=0;for(d=o(n,n)|0;(d|0)>0;)d=d-1|0,m[c+d|0]=m[a+d|0]|0|(m[b+d|0]|0)|0}function g(a){a|=0;var b=0,c=0;for(c=o(n,n)|0;(c|0)>0;)c=c-1|0,b=(b|0)+(m[a+c|0]|0)|0;return b|0}function h(a,b){a|=0,b|=0;var c=0;for(c=o(n,n)|0;(c|0)>0;)c=c-1|0,m[a+c|0]=b}function i(a,b){a|=0,b|=0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;for(c=1;(c|0)<(n-1|0);c=c+1|0)for(j=j+n|0,d=1;(d|0)<(n-1|0);d=d+1|0)f=j-n|0,g=j+n|0,h=d-1|0,i=d+1|0,e=(m[a+f+h|0]|0)+(m[a+f+i|0]|0)+(m[a+j+d|0]|0)+(m[a+g+h|0]|0)+(m[a+g+i|0]|0)|0,m[b+j+d|0]=(e|0)>0?1:0}function j(a,b){a|=0,b|=0;var c=0;for(c=o(n,n)|0;(c|0)>0;)c=c-1|0,m[b+c|0]=m[a+c|0]|0}function k(a){a|=0;var b=0,c=0;for(b=0;(b|0)<(n-1|0);b=b+1|0)m[a+b|0]=0,m[a+c|0]=0,c=c+n-1|0,m[a+c|0]=0,c=c+1|0;for(b=0;(b|0)<(n|0);b=b+1|0)m[a+c|0]=0,c=c+1|0}function l(){var a=0,b=0,c=0,l=0,m=0,p=0;b=o(n,n)|0,c=b+b|0,l=c+b|0,h(l,0),k(a);do d(a,b),i(b,c),e(a,c,c),f(l,c,l),j(b,a),m=g(a)|0,p=(m|0)==0|0;while(!p)}var m=new a.Uint8Array(c),n=b.size|0,o=a.Math.imul;return{skeletonize:l}}return a}),c("image_debug",[],function(){return{drawRect:function(a,b,c,d){c.strokeStyle=d.color,c.fillStyle=d.color,c.lineWidth=1,c.beginPath(),c.strokeRect(a.x,a.y,b.x,b.y)},drawPath:function(a,b,c,d){c.strokeStyle=d.color,c.fillStyle=d.color,c.lineWidth=d.lineWidth,c.beginPath(),c.moveTo(a[0][b.x],a[0][b.y]);for(var e=1;eb&&(b+=180),b=(180-b)*Math.PI/180,f=h.create([Math.cos(b),-Math.sin(b),Math.sin(b),Math.cos(b)]),c=0;cd;d++)h.xVec2(f,e.box[d]);u.boxFromPatches.showTransformed&&g.drawPath(e.box,{x:0,y:1},H.ctx.binary,{color:"#99ff00",lineWidth:2})}for(c=0;cd;d++)e.box[d][0]n&&(n=e.box[d][0]),e.box[d][1]o&&(o=e.box[d][1]);for(j=[[l,m],[n,m],[n,o],[l,o]],u.boxFromPatches.showTransformedBox&&g.drawPath(j,{x:0,y:1},H.ctx.binary,{color:"#ff0000",lineWidth:2}),k=G?2:1,f=h.inverse(f),d=0;4>d;d++)h.xVec2(f,j[d]);for(u.boxFromPatches.showBB&&g.drawPath(j,{x:0,y:1},H.ctx.binary,{color:"#ff0000",lineWidth:2}),d=0;4>d;d++)i.scale(j[d],k);return j}function m(){b.otsuThreshold(v,C),C.zeroBorder(),u.showCanvas&&C.show(H.dom.binary,255)}function n(){var a,b,d,e,h,i,j,k,l=[];for(a=0;ab;b++)d.push(0);for(c=A.data.length;c--;)A.data[c]>0&&d[A.data[c]-1]++;return d=d.map(function(a,b){return{val:a,label:b+1}}),d.sort(function(a,b){return b.val-a.val}),e=d.filter(function(a){return a.val>=5})}function p(a,c){var d,e,f,h,i,j=[],k=[],m=[0,1,1],n=[0,0,0];for(d=0;d=2){for(e=0;e6&&k.push(a[e]);if(k.length>=2){for(j=k.length,g=q(k),f=0,e=0;e1&&g.length>=k.length/4*3&&g.length>a.length/4&&(f/=g.length,h={index:b[1]*I.x+b[0],pos:{x:c,y:d},box:[i.create([c,d]),i.create([c+x.size.x,d]),i.create([c+x.size.x,d+x.size.y]),i.create([c,d+x.size.y])],moments:g,rad:f,vec:i.create([Math.cos(f),Math.sin(f)])},l.push(h))}}return l}function t(a){function c(){var a;for(a=0;al&&e(h))):A.data[h]=Number.MAX_VALUE}var h,j,k=0,l=.95,m=0,n=[0,1,1],o=[0,0,0];for(f.init(z.data,0),f.init(A.data,0),f.init(B.data,null),h=0;h0&&A.data[h]<=k&&(j=B.data[h],n[0]=A.data[h]/(k+1)*360,b.hsv2rgb(n,o),g.drawRect(j.pos,x.size,H.ctx.binary,{color:"rgb("+o.join(",")+")",lineWidth:2}));return k}var u,v,w,x,y,z,A,B,C,D,E,F,G=!0,H={ctx:{binary:null},dom:{binary:null}},I={x:0,y:0};return{init:function(a,b){u=a,E=b.inputImageWrapper,j(),k()},locate:function(){var a,c=[],d=[];if(G&&b.halfSample(E,v),m(),a=n(),!(a.length=e?null:(c=o(e),0===c.length?null:d=p(c,e))}}}}),c("bresenham",[],function(){var a={},b={DIR:{UP:1,DOWN:-1}};return a.getBarcodeLine=function(a,b,c){function d(a,b){l=s[b*t+a],u+=l,v=v>l?l:v,w=l>w?l:w,r.push(l)}var e,f,g,h,i,j,k,l,m=0|b.x,n=0|b.y,o=0|c.x,p=0|c.y,q=Math.abs(p-n)>Math.abs(o-m),r=[],s=a.data,t=a.size.x,u=0,v=255,w=0;for(q&&(j=m,m=n,n=j,j=o,o=p,p=j),m>o&&(j=m,m=o,o=j,j=n,n=p,p=j),e=o-m,f=Math.abs(p-n),g=e/2|0,i=n,h=p>n?1:-1,k=m;o>k;k++)q?d(i,k):d(k,i),g-=f,0>g&&(i+=h,g+=e);return{line:r,min:v,max:w}},a.toBinaryLine=function(a){var c,d,e,f,g,h=a.min,i=a.max,j=a.line,k=h+(i-h)/2,l=[],m=(i-h)/8,n=-m;for(d=j[0]>k?b.DIR.DOWN:b.DIR.UP,l.push({pos:0,val:j[0]}),f=0;fc?b.DIR.UP:c>m?b.DIR.DOWN:d,d!==e&&(l.push({pos:f,val:j[f]}),d=e);for(l.push({pos:j.length,val:j[j.length-1]}),g=l[0].pos;gk?0:1;for(f=1;fl[f].val?l[f].val+(l[f+1].val-l[f].val)/2|0:l[f+1].val+(l[f].val-l[f+1].val)/2|0,g=l[f].pos;gm?0:1;return{line:j,threshold:m}},a.debug={printFrequency:function(a,b){var c,d=b.getContext("2d");for(b.width=a.length,b.height=256,d.beginPath(),d.strokeStyle="blue",c=0;cd&&null===i;d++)e=g/h*d*(d%2===0?-1:1),f={y:e*j,x:e*l},b[0].y+=f.x,b[0].x-=f.y,b[1].y+=f.x,b[1].x-=f.y,i=k(b);return i}function m(a){var d,e,f,g=n.ctx.overlay;return c.drawBoundingBox&&g&&b.drawPath(a,{x:0,y:1},g,{color:"blue",lineWidth:2}),d=j(a),e=Math.atan2(d[1].y-d[0].y,d[1].x-d[0].x),d=i(d,e,10),null===d?null:(f=k(d),null===f&&(f=l(a,d,e)),null===f?null:(f&&c.drawScanline&&g&&b.drawPath(d,{x:"x",y:"y"},g,{color:"red",lineWidth:3}),{codeResult:f.codeResult,line:d,angle:e,pattern:f.barcodeLine.line,threshold:f.barcodeLine.threshold}))}var n={ctx:{frequency:null,pattern:null,overlay:null},dom:{frequency:null,pattern:null,overlay:null}},o=[],p=null;return f(),g(),h(),{decodeFromBoundingBox:function(a){return m(a)},decodeFromBoundingBoxes:function(a){var b,c;for(b=0;b1?(k.x=i.size,k.y=j.y/j.x*i.size):(k.y=i.size,k.x=j.x/j.y*i.size)),d=j.x,e=k.x,f=j.y,g=k.y,p=c?c:document.createElement("canvas"),p.width=k.x,p.height=k.y,q=p.getContext("2d"),r=new Uint8Array(k.x*k.y),h.attachData=function(a){r=a},h.getData=function(){return r},h.grab=function(){var c,h=i.halfSample,j=b.getFrame();return j?(q.drawImage(j,l,m,d,f,n,o,e,g),c=q.getImageData(0,0,k.x,k.y).data,h?a.grayAndHalfSampleFromCanvasData(c,k,r):a.computeGray(c,r),!0):!1},h.getSize=function(){return k},h},b}),c("html_utils",[],function(){function a(a){var b=document.createElement("div");for(b.innerHTML=a;b.firstChild;)return b.firstChild}function b(a,c){for(var d in c)try{a[d]=c[d].constructor==Object?b(a[d],c[d]):c[d]}catch(e){a[d]=c[d]}return a}return{createNode:function(b){return a(b)},mergeObjects:function(a,c){return b(a,c)}}}),c("config",[],function(){var a={inputStream:{name:"Live",type:"LiveStream"},tracking:!1,debug:!1,controls:!1,locate:!0,visual:{show:!0},decoder:{drawBoundingBox:!0,showFrequency:!1,drawScanline:!0,showPattern:!1,readers:["code_128_reader"]},locator:{showCanvas:!1,showPatches:!1,showFoundPatches:!1,showSkeleton:!1,showLabels:!1,showPatchLabels:!1,showRemainingPatchLabels:!1,boxFromPatches:{showTransformed:!1,showTransformedBox:!1,showBB:!1}}};return a}),c("events",[],function(){var a=function(){function a(a){return c[a]||(c[a]={subscribers:[]}),c[a]}function b(a,b){a.async?setTimeout(function(){a.callback.call(null,b)},4):a.callback.call(null,b)}var c={};return{subscribe:function(b,c,d){var e;if("function"==typeof c)e={callback:c,async:d};else if(e=c,!e.callback)throw"Callback was not specified on options";a(b).subscribers.push(e)},publish:function(c,d){var e,f=a(c).subscribers;for(e=0;e0?c.videoWidth>0&&c.videoHeight>0?(console.log(c.videoWidth+"px x "+c.videoHeight+"px"),d()):window.setTimeout(a,500):d("Unable to play video stream. Is webcam working?"),b--}var b=10;a()},!1),c.play()},function(a){console.log(a)})}function c(a,c){"undefined"!=typeof MediaStreamTrack.getSources?MediaStreamTrack.getSources(function(d){for(var e,f=0;f!=d.length;++f){var g=d[f];"video"==g.kind&&"environment"==g.facing&&(e=g.id)}var h={audio:!1,video:{optional:[{sourceId:e}]}};b(h,a,c)}):b({video:!0,audio:!1},a,c)}return{request:function(a,b){c(a,b)}}}),c("quagga",["code_128_reader","ean_reader","input_stream","image_wrapper","barcode_locator","barcode_decoder","frame_grabber","html_utils","config","events","camera_access"],function(a,b,c,d,e,f,g,h,j,k,l){function m(a){j=h.mergeObjects(j,a),o()}function n(){for(var a=[{node:document.querySelector("div[data-controls]"),prop:j.controls},{node:B.dom.overlay,prop:j.visual.show}],b=0;b resource://gre/modules/devtools/toolkit/webconsole/utils.js:1162)", + "line": 1164 + } + ], + "responsiveness": 1.006602168083191, + "time": 26402706 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0456559658050537, + "time": 26402708 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "html5::RunFlushLoop", + "line": 341 + }, + { + "location": "JS::EvaluateString", + "line": 199 + }, + { + "location": "js::RunScript" + }, + { + "location": "chrome://browser/content/devtools/profiler/cleopatra/js/parser.js:1", + "line": 1 + } + ], + "responsiveness": 5.028069496154785, + "time": 26402710 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "html5::RunFlushLoop", + "line": 341 + }, + { + "location": "JS::EvaluateString", + "line": 199 + } + ], + "responsiveness": 7.011622905731201, + "time": 26402712 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "html5::RunFlushLoop", + "line": 341 + }, + { + "location": "JS::EvaluateString", + "line": 199 + } + ], + "responsiveness": 9.01456356048584, + "time": 26402714 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "onLoad (resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///C:/Users/Christoph/AppData/Roaming/Mozilla/Firefox/Profiles/hrdbs1rb.default/extensions/firebug@software.joehewitt.com.xpi!/bootstrap.js:128)", + "line": 132 + } + ], + "responsiveness": 0.004561641253530979, + "time": 26402716 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0082626342773438, + "time": 26402718 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.080388069152832, + "time": 26402720 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.080388069152832, + "time": 26402722 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.080388069152832, + "time": 26402724 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.080388069152832, + "time": 26402724 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.080388069152832, + "time": 26402726 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.02166779711842537, + "time": 26402728 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2118760347366333, + "time": 26402730 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2118760347366333, + "time": 26402732 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 5.12424373626709, + "time": 26402734 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 7.126044273376465, + "time": 26402736 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + } + ], + "responsiveness": 9.111498832702637, + "time": 26402738 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 0.006082188803702593, + "time": 26402740 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 2.0645229816436768, + "time": 26402742 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 4.074686050415039, + "time": 26402744 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 5.273637771606445, + "time": 26402744 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 369 + } + ], + "responsiveness": 7.437756538391113, + "time": 26402746 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.424731254577637, + "time": 26402748 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0187666416168213, + "time": 26402750 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.954423189163208, + "time": 26402752 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.954423189163208, + "time": 26402754 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.954423189163208, + "time": 26402756 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.954423189163208, + "time": 26402758 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.954423189163208, + "time": 26402758 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.954423189163208, + "time": 26402760 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0424749851226807, + "time": 26402762 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0424749851226807, + "time": 26402764 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0424749851226807, + "time": 26402766 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.056478977203369, + "time": 26402768 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.056478977203369, + "time": 26402770 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.1125204861164093, + "time": 26402772 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.1125204861164093, + "time": 26402774 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.1125204861164093, + "time": 26402774 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.1125204861164093, + "time": 26402776 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.322815418243408, + "time": 26402778 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.322815418243408, + "time": 26402780 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.322815418243408, + "time": 26402782 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.322815418243408, + "time": 26402782 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0841500759124756, + "time": 26402784 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.2857625484466553, + "time": 26402786 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.2857625484466553, + "time": 26402786 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.2857625484466553, + "time": 26402788 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.2857625484466553, + "time": 26402790 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.2857625484466553, + "time": 26402792 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.2857625484466553, + "time": 26402794 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.983933925628662, + "time": 26402796 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.983933925628662, + "time": 26402796 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.983933925628662, + "time": 26402798 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.983933925628662, + "time": 26402800 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.212474822998047, + "time": 26402802 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.212474822998047, + "time": 26402804 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26402806 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26402808 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26402808 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26402810 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26402812 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26402814 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.029270533472299576, + "time": 26402816 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1154611110687256, + "time": 26402818 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1154611110687256, + "time": 26402820 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1154611110687256, + "time": 26402822 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1154611110687256, + "time": 26402822 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1154611110687256, + "time": 26402826 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1154611110687256, + "time": 26402826 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0949337482452393, + "time": 26402830 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0949337482452393, + "time": 26402832 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.0966339111328125, + "time": 26402834 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.0966339111328125, + "time": 26402834 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.0966339111328125, + "time": 26402836 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.0966339111328125, + "time": 26402838 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.109999418258667, + "time": 26402840 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.109999418258667, + "time": 26402842 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.109999418258667, + "time": 26402844 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.109999418258667, + "time": 26402844 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.109999418258667, + "time": 26402846 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.109999418258667, + "time": 26402846 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.006462325341999531, + "time": 26402848 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9778517484664917, + "time": 26402850 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.019566535949707, + "time": 26402852 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.019566535949707, + "time": 26402854 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.019566535949707, + "time": 26402856 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.019566535949707, + "time": 26402858 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1126604080200195, + "time": 26402860 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1126604080200195, + "time": 26402862 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 5.030730247497559, + "time": 26402864 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 7.027588844299316, + "time": 26402866 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 9.029389381408691, + "time": 26402868 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 0.014825334772467613, + "time": 26402870 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.073646068572998, + "time": 26402872 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.073646068572998, + "time": 26402874 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.073646068572998, + "time": 26402876 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.073646068572998, + "time": 26402876 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.073646068572998, + "time": 26402878 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.073646068572998, + "time": 26402880 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0716055631637573, + "time": 26402882 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0716055631637573, + "time": 26402884 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0716055631637573, + "time": 26402886 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0716055631637573, + "time": 26402888 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0716055631637573, + "time": 26402890 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0716055631637573, + "time": 26402892 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26402894 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26402896 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26402896 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26402898 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.335119247436523, + "time": 26402900 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.335119247436523, + "time": 26402902 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.335119247436523, + "time": 26402904 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0978350639343262, + "time": 26402906 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.123584032058716, + "time": 26402908 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.123584032058716, + "time": 26402910 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.123584032058716, + "time": 26402910 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.123584032058716, + "time": 26402912 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.123584032058716, + "time": 26402914 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9653072357177734, + "time": 26402916 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9653072357177734, + "time": 26402918 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9653072357177734, + "time": 26402920 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9653072357177734, + "time": 26402922 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9653072357177734, + "time": 26402924 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9653072357177734, + "time": 26402924 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.056400179862976, + "time": 26402926 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.056400179862976, + "time": 26402928 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.056400179862976, + "time": 26402930 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.168859958648682, + "time": 26402932 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.168859958648682, + "time": 26402934 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.168859958648682, + "time": 26402936 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0940337181091309, + "time": 26402938 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0940337181091309, + "time": 26402940 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0940337181091309, + "time": 26402942 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0940337181091309, + "time": 26402944 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0940337181091309, + "time": 26402946 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0940337181091309, + "time": 26402946 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1252049207687378, + "time": 26402948 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1252049207687378, + "time": 26402950 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.114980697631836, + "time": 26402952 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.114980697631836, + "time": 26402954 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.114980697631836, + "time": 26402956 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.114980697631836, + "time": 26402958 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.114980697631836, + "time": 26402958 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.098975419998169, + "time": 26402960 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.098975419998169, + "time": 26402962 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.098975419998169, + "time": 26402964 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.229681491851807, + "time": 26402966 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.229681491851807, + "time": 26402968 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.229681491851807, + "time": 26402968 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.937797486782074, + "time": 26402970 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 2.925532817840576, + "time": 26402972 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.028449535369873, + "time": 26402974 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.028449535369873, + "time": 26402976 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.028449535369873, + "time": 26402976 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.028449535369873, + "time": 26402978 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.028449535369873, + "time": 26402980 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.028449535369873, + "time": 26402980 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1008760929107666, + "time": 26402982 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1041970252990723, + "time": 26402984 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1041970252990723, + "time": 26402986 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1041970252990723, + "time": 26402988 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1041970252990723, + "time": 26402990 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1041970252990723, + "time": 26402992 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1164617538452148, + "time": 26402994 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1164617538452148, + "time": 26402996 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1164617538452148, + "time": 26402998 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.134407043457031, + "time": 26403000 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.134407043457031, + "time": 26403002 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0465165376663208, + "time": 26403004 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0465165376663208, + "time": 26403006 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0465165376663208, + "time": 26403008 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0465165376663208, + "time": 26403010 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0465165376663208, + "time": 26403012 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0465165376663208, + "time": 26403012 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0297905206680298, + "time": 26403014 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0304505825042725, + "time": 26403016 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0304505825042725, + "time": 26403018 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0304505825042725, + "time": 26403020 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0304505825042725, + "time": 26403022 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0304505825042725, + "time": 26403024 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.043095350265503, + "time": 26403026 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.043095350265503, + "time": 26403028 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.043095350265503, + "time": 26403028 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.043095350265503, + "time": 26403030 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.043095350265503, + "time": 26403032 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.39874267578125, + "time": 26403034 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.39874267578125, + "time": 26403036 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1271055936813354, + "time": 26403038 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1271055936813354, + "time": 26403038 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1271055936813354, + "time": 26403040 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1271055936813354, + "time": 26403042 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1271055936813354, + "time": 26403044 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1271055936813354, + "time": 26403044 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1271055936813354, + "time": 26403046 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.001420259475708, + "time": 26403048 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.001420259475708, + "time": 26403050 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.001420259475708, + "time": 26403052 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.019225597381592, + "time": 26403054 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.019225597381592, + "time": 26403056 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.019225597381592, + "time": 26403058 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.07578706741333, + "time": 26403058 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.07578706741333, + "time": 26403060 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.07578706741333, + "time": 26403062 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.07578706741333, + "time": 26403064 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.302567481994629, + "time": 26403066 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.302567481994629, + "time": 26403068 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0392940044403076, + "time": 26403070 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0392940044403076, + "time": 26403072 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0392940044403076, + "time": 26403074 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0392940044403076, + "time": 26403076 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0392940044403076, + "time": 26403078 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0392940044403076, + "time": 26403080 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0727460384368896, + "time": 26403082 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1076183319091797, + "time": 26403084 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1076183319091797, + "time": 26403086 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1076183319091797, + "time": 26403086 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1076183319091797, + "time": 26403088 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1076183319091797, + "time": 26403090 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.02280820719897747, + "time": 26403092 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1860268115997314, + "time": 26403092 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1860268115997314, + "time": 26403094 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1860268115997314, + "time": 26403096 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1860268115997314, + "time": 26403098 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.262272834777832, + "time": 26403100 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.262272834777832, + "time": 26403102 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1160815954208374, + "time": 26403104 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1160815954208374, + "time": 26403106 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.107137680053711, + "time": 26403108 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.214235782623291, + "time": 26403110 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.214235782623291, + "time": 26403112 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.028890395537018776, + "time": 26403114 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.096834421157837, + "time": 26403116 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.096834421157837, + "time": 26403118 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.096834421157837, + "time": 26403118 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.096834421157837, + "time": 26403120 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.096834421157837, + "time": 26403122 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.096834421157837, + "time": 26403124 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9774715900421143, + "time": 26403126 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9774715900421143, + "time": 26403128 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9774715900421143, + "time": 26403128 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9774715900421143, + "time": 26403130 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.132025718688965, + "time": 26403132 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.03345203772187233, + "time": 26403134 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2069343328475952, + "time": 26403136 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2069343328475952, + "time": 26403138 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2069343328475952, + "time": 26403140 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2069343328475952, + "time": 26403142 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2069343328475952, + "time": 26403144 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2069343328475952, + "time": 26403146 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1084789037704468, + "time": 26403148 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.093933343887329, + "time": 26403150 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.093933343887329, + "time": 26403150 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.115780353546143, + "time": 26403154 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.115780353546143, + "time": 26403154 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.115780353546143, + "time": 26403156 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1107597351074219, + "time": 26403158 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1107597351074219, + "time": 26403160 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1107597351074219, + "time": 26403162 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1107597351074219, + "time": 26403162 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1107597351074219, + "time": 26403164 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.3021879196167, + "time": 26403166 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.3021879196167, + "time": 26403168 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0282700061798096, + "time": 26403170 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0282700061798096, + "time": 26403172 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0282700061798096, + "time": 26403172 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0282700061798096, + "time": 26403174 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0282700061798096, + "time": 26403176 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0282700061798096, + "time": 26403178 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0282700061798096, + "time": 26403180 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0712255239486694, + "time": 26403180 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1148407459259033, + "time": 26403182 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1148407459259033, + "time": 26403184 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1148407459259033, + "time": 26403184 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1148407459259033, + "time": 26403186 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1148407459259033, + "time": 26403188 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1148407459259033, + "time": 26403190 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.113040566444397, + "time": 26403190 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.113040566444397, + "time": 26403192 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.113040566444397, + "time": 26403194 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.113040566444397, + "time": 26403196 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.113040566444397, + "time": 26403198 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.358967781066895, + "time": 26403200 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.358967781066895, + "time": 26403202 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1126604080200195, + "time": 26403202 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1126604080200195, + "time": 26403204 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1126604080200195, + "time": 26403206 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1126604080200195, + "time": 26403206 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1126604080200195, + "time": 26403208 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1126604080200195, + "time": 26403210 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0415748357772827, + "time": 26403212 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0415748357772827, + "time": 26403214 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.269696235656738, + "time": 26403216 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.269696235656738, + "time": 26403218 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.269696235656738, + "time": 26403218 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.269696235656738, + "time": 26403220 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.269696235656738, + "time": 26403222 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.269696235656738, + "time": 26403224 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26403224 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26403226 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26403228 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26403230 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26403230 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.400782585144043, + "time": 26403232 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.961746096611023, + "time": 26403234 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.961746096611023, + "time": 26403236 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.961746096611023, + "time": 26403238 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.961746096611023, + "time": 26403240 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.961746096611023, + "time": 26403242 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.0551198348402977, + "time": 26403244 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2514103651046753, + "time": 26403246 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2514103651046753, + "time": 26403248 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.204452991485596, + "time": 26403250 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.204452991485596, + "time": 26403252 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.282179832458496, + "time": 26403254 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.282179832458496, + "time": 26403256 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.078968048095703, + "time": 26403258 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.078968048095703, + "time": 26403260 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.078968048095703, + "time": 26403262 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.078968048095703, + "time": 26403264 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.189046859741211, + "time": 26403266 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.189046859741211, + "time": 26403266 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26403270 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26403272 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26403274 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26403274 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26403276 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26403276 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0180063247680664, + "time": 26403278 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0180063247680664, + "time": 26403280 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.951281547546387, + "time": 26403282 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.951281547546387, + "time": 26403284 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.951281547546387, + "time": 26403284 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.951281547546387, + "time": 26403286 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.951281547546387, + "time": 26403286 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.951281547546387, + "time": 26403288 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.056920051574707, + "time": 26403290 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.056920051574707, + "time": 26403292 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.056920051574707, + "time": 26403294 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.056920051574707, + "time": 26403296 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.056920051574707, + "time": 26403298 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.28650188446045, + "time": 26403300 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0358726978302002, + "time": 26403302 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0358726978302002, + "time": 26403304 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0358726978302002, + "time": 26403306 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0358726978302002, + "time": 26403308 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0358726978302002, + "time": 26403310 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0358726978302002, + "time": 26403312 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0998756885528564, + "time": 26403314 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.10205602645874, + "time": 26403316 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.319774150848389, + "time": 26403318 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.319774150848389, + "time": 26403320 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.319774150848389, + "time": 26403320 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9883556365966797, + "time": 26403322 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9883556365966797, + "time": 26403324 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9883556365966797, + "time": 26403326 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9883556365966797, + "time": 26403328 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9883556365966797, + "time": 26403330 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.12684440612793, + "time": 26403332 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0974549055099487, + "time": 26403334 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.115601062774658, + "time": 26403336 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.115601062774658, + "time": 26403338 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.115601062774658, + "time": 26403338 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.115601062774658, + "time": 26403340 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.357827186584473, + "time": 26403342 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.357827186584473, + "time": 26403344 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0839099884033203, + "time": 26403346 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0839099884033203, + "time": 26403348 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.171520709991455, + "time": 26403350 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.116681098937988, + "time": 26403352 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.192227363586426, + "time": 26403354 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26403356 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26403358 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26403360 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + } + ], + "responsiveness": 6.127805233001709, + "time": 26403362 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.186245918273926, + "time": 26403364 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.186245918273926, + "time": 26403366 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.095554232597351, + "time": 26403368 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.095554232597351, + "time": 26403368 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.26019287109375, + "time": 26403370 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.2540106773376465, + "time": 26403372 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.2540106773376465, + "time": 26403374 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.2540106773376465, + "time": 26403376 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9845542907714844, + "time": 26403378 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9845542907714844, + "time": 26403380 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "layout::Flush (Flush_InterruptibleLayout)", + "line": 3969 + }, + { + "location": "CSS::ProcessRestyles", + "line": 137 + }, + { + "location": "CSS::ComputeStyleChangeFor", + "line": 2902 + } + ], + "responsiveness": 4.926572799682617, + "time": 26403382 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.993376731872559, + "time": 26403384 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.993376731872559, + "time": 26403386 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.993376731872559, + "time": 26403388 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0158653259277344, + "time": 26403390 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "layout::Flush (Flush_InterruptibleLayout)", + "line": 3969 + }, + { + "location": "CSS::ProcessRestyles", + "line": 137 + }, + { + "location": "CSS::ComputeStyleChangeFor", + "line": 2902 + }, + { + "location": "nsStyleSet::FileRules", + "line": 943 + } + ], + "responsiveness": 3.995997905731201, + "time": 26403392 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.015664577484131, + "time": 26403394 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.074865341186523, + "time": 26403396 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.074865341186523, + "time": 26403396 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.04409586638212204, + "time": 26403398 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + } + ], + "responsiveness": 2.0261290073394775, + "time": 26403400 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.109658718109131, + "time": 26403402 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.109658718109131, + "time": 26403404 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.109658718109131, + "time": 26403406 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.109658718109131, + "time": 26403406 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.109658718109131, + "time": 26403408 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.109658718109131, + "time": 26403410 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 1.0035611391067505, + "time": 26403412 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0483169555664062, + "time": 26403414 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "layout::Flush (Flush_Style)", + "line": 3969 + }, + { + "location": "CSS::ProcessRestyles", + "line": 137 + }, + { + "location": "CSS::ComputeStyleChangeFor", + "line": 2902 + }, + { + "location": "nsStyleSet::FileRules", + "line": 943 + } + ], + "responsiveness": 5.096113681793213, + "time": 26403416 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.159876346588135, + "time": 26403418 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.159876346588135, + "time": 26403418 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 0.006842462345957756, + "time": 26403420 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.092272996902466, + "time": 26403422 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.092272996902466, + "time": 26403424 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.092272996902466, + "time": 26403426 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.092272996902466, + "time": 26403428 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.092272996902466, + "time": 26403428 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 10.287641525268555, + "time": 26403430 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0754070281982422, + "time": 26403432 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0754070281982422, + "time": 26403434 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0754070281982422, + "time": 26403436 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0754070281982422, + "time": 26403438 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0754070281982422, + "time": 26403440 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.333118438720703, + "time": 26403442 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.333118438720703, + "time": 26403444 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0818692445755005, + "time": 26403444 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0818692445755005, + "time": 26403446 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0818692445755005, + "time": 26403448 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + } + ], + "responsiveness": 7.003260135650635, + "time": 26403450 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.063220977783203, + "time": 26403452 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.02090752311050892, + "time": 26403454 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0546393394470215, + "time": 26403456 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0546393394470215, + "time": 26403458 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0546393394470215, + "time": 26403460 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.11920166015625, + "time": 26403462 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.11920166015625, + "time": 26403464 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.03421230986714363, + "time": 26403466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2251808643341064, + "time": 26403466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2251808643341064, + "time": 26403468 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2251808643341064, + "time": 26403468 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 5.47396993637085, + "time": 26403470 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.564722061157227, + "time": 26403472 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.564722061157227, + "time": 26403474 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.564722061157227, + "time": 26403476 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.987975537776947, + "time": 26403478 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.987975537776947, + "time": 26403478 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 4.235104084014893, + "time": 26403480 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.333838939666748, + "time": 26403482 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.333838939666748, + "time": 26403484 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.333838939666748, + "time": 26403486 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0052216053009033, + "time": 26403488 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 3.9222514629364014, + "time": 26403490 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.0126237869262695, + "time": 26403492 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.0126237869262695, + "time": 26403494 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.0126237869262695, + "time": 26403494 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.0126237869262695, + "time": 26403496 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1031569242477417, + "time": 26403498 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.043755292892456, + "time": 26403500 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.043755292892456, + "time": 26403502 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.043755292892456, + "time": 26403504 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.043755292892456, + "time": 26403506 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.043755292892456, + "time": 26403508 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::nsCycleCollector_forgetSkippable", + "line": 3817 + } + ], + "responsiveness": 2.0033209323883057, + "time": 26403510 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.100155353546143, + "time": 26403512 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.100155353546143, + "time": 26403514 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.109457969665527, + "time": 26403516 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.109457969665527, + "time": 26403518 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.029270533472299576, + "time": 26403520 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113560438156128, + "time": 26403522 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113560438156128, + "time": 26403524 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113560438156128, + "time": 26403526 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113560438156128, + "time": 26403528 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113560438156128, + "time": 26403530 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.01064383052289486, + "time": 26403532 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1120400428771973, + "time": 26403534 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1120400428771973, + "time": 26403534 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1120400428771973, + "time": 26403536 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1120400428771973, + "time": 26403538 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 8.359587669372559, + "time": 26403540 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.012544513680040836, + "time": 26403542 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2065541744232178, + "time": 26403542 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2065541744232178, + "time": 26403544 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2065541744232178, + "time": 26403546 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2065541744232178, + "time": 26403548 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "layout::Flush (Flush_Style)", + "line": 3969 + }, + { + "location": "CSS::ProcessRestyles", + "line": 137 + } + ], + "responsiveness": 8.359208106994629, + "time": 26403550 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.448439598083496, + "time": 26403552 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0871912240982056, + "time": 26403554 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0871912240982056, + "time": 26403556 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0871912240982056, + "time": 26403558 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "MousePosTracker.handleEvent (chrome://browser/content/browser.js:16678)", + "line": 16689 + }, + { + "location": "forEach (self-hosted:5343)", + "line": 5346 + }, + { + "location": "IsObject (self-hosted:636)", + "line": 641 + } + ], + "responsiveness": 7.140109062194824, + "time": 26403560 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.211854934692383, + "time": 26403562 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.211854934692383, + "time": 26403564 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1120400428771973, + "time": 26403566 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1120400428771973, + "time": 26403568 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 5.350805282592773, + "time": 26403570 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.4419379234313965, + "time": 26403572 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.4419379234313965, + "time": 26403574 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0518385171890259, + "time": 26403576 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0518385171890259, + "time": 26403578 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + } + ], + "responsiveness": 4.962305545806885, + "time": 26403580 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.057619571685791, + "time": 26403582 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.057619571685791, + "time": 26403584 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.057619571685791, + "time": 26403586 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 1.9915366172790527, + "time": 26403588 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.00398063659668, + "time": 26403590 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.00398063659668, + "time": 26403592 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.00398063659668, + "time": 26403594 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.00398063659668, + "time": 26403594 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.19995194673538208, + "time": 26403596 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.034111976623535, + "time": 26403598 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.034111976623535, + "time": 26403600 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.034111976623535, + "time": 26403602 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.034111976623535, + "time": 26403604 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 10.01052188873291, + "time": 26403606 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0332118272781372, + "time": 26403608 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0332118272781372, + "time": 26403610 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0332118272781372, + "time": 26403612 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0332118272781372, + "time": 26403614 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 9.02216625213623, + "time": 26403616 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.012924650683999062, + "time": 26403618 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0493173599243164, + "time": 26403620 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0493173599243164, + "time": 26403622 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0493173599243164, + "time": 26403624 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 8.019365310668945, + "time": 26403626 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.04891586303711, + "time": 26403628 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0183864831924438, + "time": 26403630 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0186662673950195, + "time": 26403632 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0186662673950195, + "time": 26403634 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "MousePosTracker.handleEvent (chrome://browser/content/browser.js:16678)", + "line": 16679 + } + ], + "responsiveness": 7.0211262702941895, + "time": 26403636 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.047636032104492, + "time": 26403638 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.047636032104492, + "time": 26403640 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.034111976623535, + "time": 26403642 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.034111976623535, + "time": 26403644 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.044555187225342, + "time": 26403646 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.045214653015137, + "time": 26403648 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.045214653015137, + "time": 26403650 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0278898477554321, + "time": 26403652 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0289299488067627, + "time": 26403654 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0289299488067627, + "time": 26403656 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0289299488067627, + "time": 26403658 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0289299488067627, + "time": 26403660 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0289299488067627, + "time": 26403662 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0282700061798096, + "time": 26403664 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 3.011823892593384, + "time": 26403666 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.033771514892578, + "time": 26403668 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.033771514892578, + "time": 26403670 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + } + ], + "responsiveness": 9.015323638916016, + "time": 26403672 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 0.007222598884254694, + "time": 26403674 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 2.006742000579834, + "time": 26403676 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + } + ], + "responsiveness": 4.029829978942871, + "time": 26403678 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 6.016805171966553, + "time": 26403680 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 8.00796127319336, + "time": 26403682 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.06412124633789, + "time": 26403684 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0290303230285645, + "time": 26403686 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0290303230285645, + "time": 26403688 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0290303230285645, + "time": 26403690 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0290303230285645, + "time": 26403690 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0290303230285645, + "time": 26403692 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0290303230285645, + "time": 26403694 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0290303230285645, + "time": 26403696 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0811090469360352, + "time": 26403696 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0811090469360352, + "time": 26403698 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.106757640838623, + "time": 26403700 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.106757640838623, + "time": 26403702 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.106757640838623, + "time": 26403704 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.106757640838623, + "time": 26403706 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0651432275772095, + "time": 26403708 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0570600032806396, + "time": 26403710 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0570600032806396, + "time": 26403712 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0570600032806396, + "time": 26403714 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.1687593460083, + "time": 26403716 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.1687593460083, + "time": 26403718 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.126725435256958, + "time": 26403720 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.126725435256958, + "time": 26403720 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.126725435256958, + "time": 26403722 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.126725435256958, + "time": 26403722 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.126725435256958, + "time": 26403724 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.126725435256958, + "time": 26403724 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.126725435256958, + "time": 26403726 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.126725435256958, + "time": 26403728 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9579446911811829, + "time": 26403730 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9579446911811829, + "time": 26403732 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.053918838500977, + "time": 26403734 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.053918838500977, + "time": 26403736 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.053918838500977, + "time": 26403738 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.053918838500977, + "time": 26403738 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.053918838500977, + "time": 26403740 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1263452768325806, + "time": 26403742 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1263452768325806, + "time": 26403744 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1263452768325806, + "time": 26403746 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1263452768325806, + "time": 26403748 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.312451362609863, + "time": 26403748 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.312451362609863, + "time": 26403750 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0016604661941528, + "time": 26403752 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0016604661941528, + "time": 26403752 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.21571683883667, + "time": 26403754 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.21571683883667, + "time": 26403756 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.21571683883667, + "time": 26403758 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.21571683883667, + "time": 26403760 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0278898477554321, + "time": 26403762 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0278898477554321, + "time": 26403764 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.0197062492370605, + "time": 26403766 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.0197062492370605, + "time": 26403770 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.0197062492370605, + "time": 26403770 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.0197062492370605, + "time": 26403772 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1217836141586304, + "time": 26403774 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1217836141586304, + "time": 26403776 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1217836141586304, + "time": 26403776 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.437476634979248, + "time": 26403778 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.437476634979248, + "time": 26403780 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.487454414367676, + "time": 26403782 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9222118258476257, + "time": 26403784 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9222118258476257, + "time": 26403786 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9222118258476257, + "time": 26403788 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9222118258476257, + "time": 26403790 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9222118258476257, + "time": 26403792 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9222118258476257, + "time": 26403792 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9222118258476257, + "time": 26403794 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.073126196861267, + "time": 26403796 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.073126196861267, + "time": 26403798 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.12676477432251, + "time": 26403798 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.12676477432251, + "time": 26403800 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.12676477432251, + "time": 26403802 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.12676477432251, + "time": 26403804 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.12676477432251, + "time": 26403806 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.022707939147949, + "time": 26403808 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.022707939147949, + "time": 26403810 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.022707939147949, + "time": 26403812 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.022707939147949, + "time": 26403814 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.067543029785156, + "time": 26403816 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0149651765823364, + "time": 26403818 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0149651765823364, + "time": 26403820 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0149651765823364, + "time": 26403822 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0149651765823364, + "time": 26403824 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0149651765823364, + "time": 26403826 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0, + "time": 26403828 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.047036647796631, + "time": 26403830 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.050357341766357, + "time": 26403832 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.050357341766357, + "time": 26403834 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.050357341766357, + "time": 26403836 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.11658000946045, + "time": 26403838 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0613418817520142, + "time": 26403840 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0613418817520142, + "time": 26403842 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0613418817520142, + "time": 26403844 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0613418817520142, + "time": 26403846 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0613418817520142, + "time": 26403846 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.307649612426758, + "time": 26403848 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.307649612426758, + "time": 26403850 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1198829412460327, + "time": 26403852 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1198829412460327, + "time": 26403854 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.38045597076416, + "time": 26403856 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.54723596572876, + "time": 26403858 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.54723596572876, + "time": 26403860 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0130645036697388, + "time": 26403862 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0130645036697388, + "time": 26403864 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.155795097351074, + "time": 26403866 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 7.104376316070557, + "time": 26403868 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.170419692993164, + "time": 26403870 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.170419692993164, + "time": 26403872 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0983550548553467, + "time": 26403874 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0983550548553467, + "time": 26403876 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.1125993728637695, + "time": 26403878 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.119341850280762, + "time": 26403880 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.185765266418457, + "time": 26403882 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0799685716629028, + "time": 26403884 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0799685716629028, + "time": 26403886 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 4.220278739929199, + "time": 26403888 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.219038009643555, + "time": 26403890 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.219038009643555, + "time": 26403892 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.219038009643555, + "time": 26403894 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0411946773529053, + "time": 26403896 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "MousePosTracker.handleEvent (chrome://browser/content/browser.js:16678)", + "line": 16679 + } + ], + "responsiveness": 3.0141046047210693, + "time": 26403898 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.113980293273926, + "time": 26403900 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.113980293273926, + "time": 26403900 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.113980293273926, + "time": 26403902 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.113980293273926, + "time": 26403902 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.113980293273926, + "time": 26403904 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0218076705932617, + "time": 26403906 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1825051307678223, + "time": 26403908 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1825051307678223, + "time": 26403910 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1825051307678223, + "time": 26403912 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::nsCycleCollector_forgetSkippable", + "line": 3817 + } + ], + "responsiveness": 9.1985502243042, + "time": 26403914 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.009503419511020184, + "time": 26403916 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.148153066635132, + "time": 26403918 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.148153066635132, + "time": 26403920 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.148153066635132, + "time": 26403922 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.148153066635132, + "time": 26403924 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.148153066635132, + "time": 26403926 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.009503419511020184, + "time": 26403928 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0763070583343506, + "time": 26403930 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0763070583343506, + "time": 26403932 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.071544647216797, + "time": 26403934 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.071544647216797, + "time": 26403936 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.071544647216797, + "time": 26403936 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.012164377607405186, + "time": 26403938 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0770673751831055, + "time": 26403940 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0770673751831055, + "time": 26403942 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0770673751831055, + "time": 26403944 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0770673751831055, + "time": 26403946 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 9.122142791748047, + "time": 26403948 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0769275426864624, + "time": 26403950 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0769275426864624, + "time": 26403950 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0769275426864624, + "time": 26403952 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0769275426864624, + "time": 26403954 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.349564552307129, + "time": 26403956 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.301186561584473, + "time": 26403958 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.301186561584473, + "time": 26403960 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1158413887023926, + "time": 26403962 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1158413887023926, + "time": 26403964 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.110318660736084, + "time": 26403966 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.034951210021973, + "time": 26403968 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.034951210021973, + "time": 26403970 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0552597045898438, + "time": 26403972 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0552597045898438, + "time": 26403974 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0552597045898438, + "time": 26403974 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0552597045898438, + "time": 26403976 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + } + ], + "responsiveness": 6.495397090911865, + "time": 26403978 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.592612266540527, + "time": 26403980 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.592612266540527, + "time": 26403982 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.07882821559906, + "time": 26403984 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.07882821559906, + "time": 26403986 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.161497116088867, + "time": 26403988 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.161497116088867, + "time": 26403990 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.161497116088867, + "time": 26403990 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.161497116088867, + "time": 26403992 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0109236240386963, + "time": 26403994 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.93479585647583, + "time": 26403996 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.021746635437012, + "time": 26403998 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.021746635437012, + "time": 26404000 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.021746635437012, + "time": 26404002 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.021746635437012, + "time": 26404004 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.999139428138733, + "time": 26404006 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "MousePosTracker.handleEvent (chrome://browser/content/browser.js:16678)", + "line": 16679 + } + ], + "responsiveness": 3.9830732345581055, + "time": 26404008 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.9848737716674805, + "time": 26404010 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.9848737716674805, + "time": 26404012 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.9848737716674805, + "time": 26404014 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 0.9959583878517151, + "time": 26404016 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 2.9779915809631348, + "time": 26404018 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 4.985113620758057, + "time": 26404020 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 7.046215534210205, + "time": 26404022 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 9.011902809143066, + "time": 26404024 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 10.121142387390137, + "time": 26404024 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 12.232421875, + "time": 26404028 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 14.233081817626953, + "time": 26404030 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowOuter::Paint", + "line": 2856 + } + ], + "responsiveness": 16.23069953918457, + "time": 26404032 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 18.2435245513916, + "time": 26404034 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayText::Paint", + "line": 4537 + } + ], + "responsiveness": 20.237342834472656, + "time": 26404036 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 22.226598739624023, + "time": 26404038 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 0.2250409722328186, + "time": 26404040 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 2.231022834777832, + "time": 26404042 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 4.232442855834961, + "time": 26404044 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 358 + } + ], + "responsiveness": 6.3596882820129395, + "time": 26404046 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "MousePosTracker.handleEvent (chrome://browser/content/browser.js:16678)", + "line": 16679 + } + ], + "responsiveness": 8.200691223144531, + "time": 26404048 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.012164377607405186, + "time": 26404050 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.058440685272217, + "time": 26404052 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.058440685272217, + "time": 26404052 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.058440685272217, + "time": 26404054 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.188006401062012, + "time": 26404056 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.290543556213379, + "time": 26404058 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.290543556213379, + "time": 26404060 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1169817447662354, + "time": 26404062 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1169817447662354, + "time": 26404064 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.142630577087402, + "time": 26404066 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.142630577087402, + "time": 26404068 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.142630577087402, + "time": 26404070 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.006361961364746, + "time": 26404072 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.006361961364746, + "time": 26404074 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.006361961364746, + "time": 26404076 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.006361961364746, + "time": 26404078 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.006361961364746, + "time": 26404080 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.006361961364746, + "time": 26404082 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9603654146194458, + "time": 26404084 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9603654146194458, + "time": 26404086 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9603654146194458, + "time": 26404088 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.003780364990234, + "time": 26404090 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.003780364990234, + "time": 26404090 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.003780364990234, + "time": 26404092 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0888516902923584, + "time": 26404094 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.010443210601807, + "time": 26404096 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.010443210601807, + "time": 26404098 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.010443210601807, + "time": 26404100 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.010443210601807, + "time": 26404100 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.010443210601807, + "time": 26404102 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0503180027008057, + "time": 26404104 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033111333847046, + "time": 26404106 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033111333847046, + "time": 26404108 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033111333847046, + "time": 26404110 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033111333847046, + "time": 26404112 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033111333847046, + "time": 26404114 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + } + ], + "responsiveness": 1.0073624849319458, + "time": 26404116 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0696046352386475, + "time": 26404118 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0696046352386475, + "time": 26404120 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.100194931030273, + "time": 26404122 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.100194931030273, + "time": 26404124 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.100194931030273, + "time": 26404126 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0561599731445312, + "time": 26404128 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0561599731445312, + "time": 26404130 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0561599731445312, + "time": 26404132 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0561599731445312, + "time": 26404134 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0561599731445312, + "time": 26404136 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1096192598342896, + "time": 26404138 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1096192598342896, + "time": 26404140 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1096192598342896, + "time": 26404142 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1096192598342896, + "time": 26404144 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1096192598342896, + "time": 26404146 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1096192598342896, + "time": 26404148 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.11874258518219, + "time": 26404150 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.11874258518219, + "time": 26404150 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.11874258518219, + "time": 26404152 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.455723285675049, + "time": 26404154 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 7.603116035461426, + "time": 26404156 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.690827369689941, + "time": 26404158 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03739333152771, + "time": 26404160 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03739333152771, + "time": 26404162 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03739333152771, + "time": 26404162 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03739333152771, + "time": 26404164 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 7.36629056930542, + "time": 26404166 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.42701244354248, + "time": 26404168 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.013304787687957287, + "time": 26404170 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0820090770721436, + "time": 26404172 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0820090770721436, + "time": 26404174 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.133507251739502, + "time": 26404176 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.133507251739502, + "time": 26404178 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.133507251739502, + "time": 26404180 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.117982268333435, + "time": 26404182 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.117982268333435, + "time": 26404184 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + } + ], + "responsiveness": 4.262093544006348, + "time": 26404186 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.316732883453369, + "time": 26404188 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.316732883453369, + "time": 26404190 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.316732883453369, + "time": 26404190 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0073624849319458, + "time": 26404192 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0073624849319458, + "time": 26404194 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.989675521850586, + "time": 26404196 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.989675521850586, + "time": 26404198 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.989675521850586, + "time": 26404200 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.989675521850586, + "time": 26404202 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1023967266082764, + "time": 26404204 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 3.2376251220703125, + "time": 26404206 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.3344597816467285, + "time": 26404208 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.3344597816467285, + "time": 26404210 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.3344597816467285, + "time": 26404212 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.3344597816467285, + "time": 26404214 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0328316688537598, + "time": 26404216 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1125600337982178, + "time": 26404218 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1125600337982178, + "time": 26404220 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.089550971984863, + "time": 26404222 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.089550971984863, + "time": 26404222 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.089550971984863, + "time": 26404224 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 0.014445197768509388, + "time": 26404226 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1097590923309326, + "time": 26404228 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1097590923309326, + "time": 26404228 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1097590923309326, + "time": 26404230 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1097590923309326, + "time": 26404232 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1097590923309326, + "time": 26404234 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + } + ], + "responsiveness": 0.025849301367998123, + "time": 26404236 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0945537090301514, + "time": 26404238 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0945537090301514, + "time": 26404240 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0945537090301514, + "time": 26404242 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0945537090301514, + "time": 26404244 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0945537090301514, + "time": 26404244 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.344282150268555, + "time": 26404246 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0571603775024414, + "time": 26404248 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0571603775024414, + "time": 26404250 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0571603775024414, + "time": 26404250 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0571603775024414, + "time": 26404252 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.29710578918457, + "time": 26404254 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.288642883300781, + "time": 26404256 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.029410481452942, + "time": 26404258 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.029410481452942, + "time": 26404260 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.029410481452942, + "time": 26404262 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.029410481452942, + "time": 26404264 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.173320770263672, + "time": 26404266 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.269394874572754, + "time": 26404268 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26404270 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1209230422973633, + "time": 26404272 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1209230422973633, + "time": 26404274 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.045074939727783, + "time": 26404276 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.045074939727783, + "time": 26404278 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.045074939727783, + "time": 26404280 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.084290027618408, + "time": 26404282 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.084290027618408, + "time": 26404282 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 5.3226752281188965, + "time": 26404284 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.421030521392822, + "time": 26404288 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.421030521392822, + "time": 26404288 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.421030521392822, + "time": 26404290 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1134206056594849, + "time": 26404292 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1134206056594849, + "time": 26404294 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.27083683013916, + "time": 26404296 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.27083683013916, + "time": 26404298 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.27083683013916, + "time": 26404300 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0, + "time": 26404302 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9615057706832886, + "time": 26404304 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.9093267917633057, + "time": 26404306 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.9093267917633057, + "time": 26404308 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.9093267917633057, + "time": 26404308 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.9093267917633057, + "time": 26404310 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.9093267917633057, + "time": 26404312 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0214275121688843, + "time": 26404314 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::nsCycleCollector_forgetSkippable", + "line": 3817 + } + ], + "responsiveness": 2.998138904571533, + "time": 26404316 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.086230278015137, + "time": 26404318 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.095633506774902, + "time": 26404320 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.095633506774902, + "time": 26404322 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.03231162577867508, + "time": 26404324 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0310709476470947, + "time": 26404326 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0310709476470947, + "time": 26404328 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0310709476470947, + "time": 26404330 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0310709476470947, + "time": 26404332 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0310709476470947, + "time": 26404332 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.02356848120689392, + "time": 26404334 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1204030513763428, + "time": 26404336 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1204030513763428, + "time": 26404338 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1204030513763428, + "time": 26404340 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1204030513763428, + "time": 26404342 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1204030513763428, + "time": 26404344 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.414227485656738, + "time": 26404346 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0936535596847534, + "time": 26404348 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0936535596847534, + "time": 26404348 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0936535596847534, + "time": 26404350 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0936535596847534, + "time": 26404350 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0936535596847534, + "time": 26404352 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + } + ], + "responsiveness": 8.447779655456543, + "time": 26404354 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": -0.02128766104578972, + "time": 26404356 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9979989528656006, + "time": 26404358 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9979989528656006, + "time": 26404360 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9979989528656006, + "time": 26404362 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + } + ], + "responsiveness": 7.204732418060303, + "time": 26404364 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.228960990905762, + "time": 26404366 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.228960990905762, + "time": 26404368 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0496976375579834, + "time": 26404370 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0496976375579834, + "time": 26404372 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0496976375579834, + "time": 26404374 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.1222429275512695, + "time": 26404376 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.1222429275512695, + "time": 26404378 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.1222429275512695, + "time": 26404380 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0379133224487305, + "time": 26404382 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0379133224487305, + "time": 26404384 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0379133224487305, + "time": 26404386 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.09045124053955, + "time": 26404388 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.09045124053955, + "time": 26404390 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.043095350265503, + "time": 26404392 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.016385316848755, + "time": 26404394 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.028449535369873, + "time": 26404396 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.028449535369873, + "time": 26404398 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.028449535369873, + "time": 26404400 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.028449535369873, + "time": 26404402 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051218032836914, + "time": 26404404 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051218032836914, + "time": 26404406 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051218032836914, + "time": 26404406 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051218032836914, + "time": 26404408 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051218032836914, + "time": 26404408 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051218032836914, + "time": 26404410 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051218032836914, + "time": 26404410 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0195268392562866, + "time": 26404412 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0195268392562866, + "time": 26404414 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0195268392562866, + "time": 26404416 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0195268392562866, + "time": 26404418 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.997077941894531, + "time": 26404420 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.997077941894531, + "time": 26404422 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0325913429260254, + "time": 26404424 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0325913429260254, + "time": 26404426 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0325913429260254, + "time": 26404428 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0325913429260254, + "time": 26404430 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0325913429260254, + "time": 26404430 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0325913429260254, + "time": 26404432 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + } + ], + "responsiveness": 0.017106154933571815, + "time": 26404434 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1006360054016113, + "time": 26404436 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26404438 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26404440 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26404440 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.391900062561035, + "time": 26404442 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 10.336679458618164, + "time": 26404444 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "SessionRecorder.prototype<.observe (resource://gre/components/DataReportingService.js:1944)", + "line": 1951 + }, + { + "location": "SessionRecorder.prototype<.onActivity (resource://gre/components/DataReportingService.js:1851)", + "line": 1858 + }, + { + "location": "SessionRecorder.prototype<.incrementActiveTicks (resource://gre/components/DataReportingService.js:1677)", + "line": 1678 + }, + { + "location": "js::RunScript" + }, + { + "location": "Preferences.prototype.set (resource://gre/modules/Preferences.jsm:98)", + "line": 105 + }, + { + "location": "Preferences.prototype._set (resource://gre/modules/Preferences.jsm:108)", + "line": 133 + } + ], + "responsiveness": 1.0438556671142578, + "time": 26404446 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1140806674957275, + "time": 26404448 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1140806674957275, + "time": 26404450 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1140806674957275, + "time": 26404452 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 8.267595291137695, + "time": 26404454 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 10.284220695495605, + "time": 26404456 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 1.0525987148284912, + "time": 26404458 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 3.0570600032806396, + "time": 26404460 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 5.052778244018555, + "time": 26404462 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 7.038232803344727, + "time": 26404464 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 9.056379318237305, + "time": 26404466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowOuter::Paint", + "line": 2856 + } + ], + "responsiveness": 11.196168899536133, + "time": 26404468 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + } + ], + "responsiveness": 13.204812049865723, + "time": 26404470 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + } + ], + "responsiveness": 15.207752227783203, + "time": 26404472 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + } + ], + "responsiveness": 17.179141998291016, + "time": 26404474 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + } + ], + "responsiveness": 19.179040908813477, + "time": 26404476 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 0.6158215999603271, + "time": 26404478 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 2.6313068866729736, + "time": 26404480 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 4.634627819061279, + "time": 26404482 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 6.629965782165527, + "time": 26404484 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.662557601928711, + "time": 26404486 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.649911880493164, + "time": 26404488 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9636467695236206, + "time": 26404490 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9636467695236206, + "time": 26404492 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9636467695236206, + "time": 26404494 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9636467695236206, + "time": 26404496 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9636467695236206, + "time": 26404498 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9636467695236206, + "time": 26404498 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0871912240982056, + "time": 26404500 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0593409538269043, + "time": 26404502 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0593409538269043, + "time": 26404504 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0593409538269043, + "time": 26404506 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0593409538269043, + "time": 26404508 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0593409538269043, + "time": 26404510 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0811090469360352, + "time": 26404512 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0811090469360352, + "time": 26404514 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0811090469360352, + "time": 26404516 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0811090469360352, + "time": 26404518 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0811090469360352, + "time": 26404520 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0811090469360352, + "time": 26404522 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "MousePosTracker.handleEvent (chrome://browser/content/browser.js:16678)", + "line": 16679 + } + ], + "responsiveness": 2.017765998840332, + "time": 26404524 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.090271949768066, + "time": 26404526 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.090271949768066, + "time": 26404528 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.090271949768066, + "time": 26404528 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.090271949768066, + "time": 26404532 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.090271949768066, + "time": 26404532 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.106718063354492, + "time": 26404536 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.106718063354492, + "time": 26404536 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.106718063354492, + "time": 26404538 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.106718063354492, + "time": 26404538 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.513023376464844, + "time": 26404540 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.463885307312012, + "time": 26404542 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.018246565014123917, + "time": 26404544 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1108996868133545, + "time": 26404546 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1108996868133545, + "time": 26404548 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1108996868133545, + "time": 26404550 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1108996868133545, + "time": 26404552 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1108996868133545, + "time": 26404554 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.025609016418457, + "time": 26404556 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033491611480713, + "time": 26404558 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033491611480713, + "time": 26404560 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033491611480713, + "time": 26404560 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + } + ], + "responsiveness": 8.052437782287598, + "time": 26404562 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.107457160949707, + "time": 26404564 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0780678987503052, + "time": 26404566 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0780678987503052, + "time": 26404568 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.084329605102539, + "time": 26404570 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.084329605102539, + "time": 26404572 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.084329605102539, + "time": 26404574 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.084329605102539, + "time": 26404576 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0785880088806152, + "time": 26404578 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0785880088806152, + "time": 26404580 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.994377136230469, + "time": 26404582 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.055098533630371, + "time": 26404584 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.058419227600098, + "time": 26404586 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0860507488250732, + "time": 26404588 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0860507488250732, + "time": 26404590 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0860507488250732, + "time": 26404592 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0860507488250732, + "time": 26404594 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0860507488250732, + "time": 26404596 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0860507488250732, + "time": 26404598 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0860507488250732, + "time": 26404600 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0827693939208984, + "time": 26404602 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + } + ], + "responsiveness": 4.221038818359375, + "time": 26404604 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.313311576843262, + "time": 26404606 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.313311576843262, + "time": 26404608 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.313311576843262, + "time": 26404608 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0362528562545776, + "time": 26404610 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0362528562545776, + "time": 26404612 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.197470188140869, + "time": 26404614 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.197470188140869, + "time": 26404616 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.197470188140869, + "time": 26404618 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.197470188140869, + "time": 26404620 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.059061050415039, + "time": 26404622 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.014864921569824, + "time": 26404624 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.014864921569824, + "time": 26404626 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.014864921569824, + "time": 26404628 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.014864921569824, + "time": 26404628 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.014864921569824, + "time": 26404630 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + } + ], + "responsiveness": 1.040054202079773, + "time": 26404632 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.111419677734375, + "time": 26404634 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.080148220062256, + "time": 26404636 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.080148220062256, + "time": 26404638 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.080148220062256, + "time": 26404640 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + } + ], + "responsiveness": 0.018626702949404716, + "time": 26404642 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.114320755004883, + "time": 26404644 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.114320755004883, + "time": 26404646 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.114320755004883, + "time": 26404648 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.114320755004883, + "time": 26404650 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.114320755004883, + "time": 26404652 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.381916046142578, + "time": 26404654 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26404656 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26404656 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26404658 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26404660 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 8.334118843078613, + "time": 26404662 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": -0.031171217560768127, + "time": 26404664 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.99039626121521, + "time": 26404666 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.99039626121521, + "time": 26404668 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.021746635437012, + "time": 26404670 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "MousePosTracker.handleEvent (chrome://browser/content/browser.js:16678)", + "line": 16679 + } + ], + "responsiveness": 7.935735702514648, + "time": 26404672 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.040172576904297, + "time": 26404674 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1023967266082764, + "time": 26404676 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1023967266082764, + "time": 26404678 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1023967266082764, + "time": 26404680 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1023967266082764, + "time": 26404680 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.246927738189697, + "time": 26404682 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.246927738189697, + "time": 26404684 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "f (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:815)", + "line": 821 + }, + { + "location": "Z (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:915)", + "line": 929 + }, + { + "location": "js::RunScript" + }, + { + "location": "G (https://ssl.gstatic.com/accounts/o/682094929-postmessagerelay.js:6)", + "line": 6 + }, + { + "location": "E (https://ssl.gstatic.com/accounts/o/682094929-postmessagerelay.js:6)", + "line": 6 + }, + { + "location": "EnterJIT" + }, + { + "location": "D.prototype.evaluate (https://ssl.gstatic.com/accounts/o/682094929-postmessagerelay.js:4)", + "line": 5 + }, + { + "location": "C (https://ssl.gstatic.com/accounts/o/682094929-postmessagerelay.js:3)", + "line": 3 + }, + { + "location": "c (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:1219)", + "line": 1219 + }, + { + "location": "k (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:1203)", + "line": 1206 + }, + { + "location": "f (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:1185)", + "line": 1199 + }, + { + "location": "a (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:1150)", + "line": 1174 + } + ], + "responsiveness": 0.02280820719897747, + "time": 26404686 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "c (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:109)", + "line": 110 + }, + { + "location": "g (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:118)", + "line": 119 + }, + { + "location": "js::RunScript" + }, + { + "location": "_.T resource://gre/modules/devtools/toolkit/webconsole/utils.js:1343)", + "line": 1345 + } + ], + "responsiveness": 9.211854934692383, + "time": 26405316 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 138.26905822753906, + "time": 26405456 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 140.31646728515625, + "time": 26405458 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 142.31370544433594, + "time": 26405460 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 144.3147430419922, + "time": 26405462 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 146.34088134765625, + "time": 26405464 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 148.35826110839844, + "time": 26405466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 150.4033966064453, + "time": 26405468 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 152.40406799316406, + "time": 26405470 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2096 + }, + { + "location": "WCF__outputMessageFromQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2195)", + "line": 2200 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF_reportPageError (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:1342)", + "line": 1370 + }, + { + "location": "WCF_createMessageNode (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2442)", + "line": 2526 + }, + { + "location": "js::RunScript" + }, + { + "location": "indexOf (self-hosted:755)", + "line": 755 + } + ], + "responsiveness": 1.1506741046905518, + "time": 26405568 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2096 + }, + { + "location": "WCF__outputMessageFromQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2195)", + "line": 2213 + }, + { + "location": "WCF__filterRepeatedMessage (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:1099)", + "line": 1119 + } + ], + "responsiveness": 3.2589128017425537, + "time": 26405570 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 5.223079681396484, + "time": 26405572 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 7.2286810874938965, + "time": 26405574 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 534 + } + ], + "responsiveness": 9.216796875, + "time": 26405576 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 0.0038013679441064596, + "time": 26405578 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 2.0219476222991943, + "time": 26405580 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 4.004361152648926, + "time": 26405582 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 6.024407863616943, + "time": 26405584 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 8.009861946105957, + "time": 26405586 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 10.05955982208252, + "time": 26405588 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 12.029048919677734, + "time": 26405590 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 14.875513076782227, + "time": 26405592 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::nsCycleCollector_forgetSkippable", + "line": 3817 + } + ], + "responsiveness": 0.9963385462760925, + "time": 26405594 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 2.998518943786621, + "time": 26405596 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 4.997278213500977, + "time": 26405598 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "image::imgFrame::Draw", + "line": 486 + }, + { + "location": "gfxUtils::DrawPixelSnapped", + "line": 511 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 7.003260135650635, + "time": 26405600 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "image::imgFrame::Draw", + "line": 486 + }, + { + "location": "gfxUtils::DrawPixelSnapped", + "line": 511 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 9.004300117492676, + "time": 26405602 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 0.004941778257489204, + "time": 26405604 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.036012649536133, + "time": 26405606 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.032110691070557, + "time": 26405608 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.059760570526123, + "time": 26405610 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + } + ], + "responsiveness": 8.025067329406738, + "time": 26405612 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 10.024967193603516, + "time": 26405614 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 0.9967186450958252, + "time": 26405616 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "image::imgFrame::Draw", + "line": 486 + }, + { + "location": "gfxUtils::DrawPixelSnapped", + "line": 511 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 3.0361526012420654, + "time": 26405618 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "image::imgFrame::Draw", + "line": 486 + }, + { + "location": "gfxUtils::DrawPixelSnapped", + "line": 511 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 5.129185676574707, + "time": 26405620 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + } + ], + "responsiveness": 7.046975612640381, + "time": 26405622 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 8.989094734191895, + "time": 26405624 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 0.014445197768509388, + "time": 26405626 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.045516014099121, + "time": 26405628 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.045516014099121, + "time": 26405630 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.073825836181641, + "time": 26405632 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.073825836181641, + "time": 26405634 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.073825836181641, + "time": 26405636 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0297905206680298, + "time": 26405638 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 2.9836935997009277, + "time": 26405640 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 4.987014293670654, + "time": 26405642 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "image::imgFrame::Draw", + "line": 486 + }, + { + "location": "gfxUtils::DrawPixelSnapped", + "line": 511 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 6.030869960784912, + "time": 26405644 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 8.062701225280762, + "time": 26405646 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.186905860900879, + "time": 26405648 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0856707096099854, + "time": 26405650 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0856707096099854, + "time": 26405652 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0856707096099854, + "time": 26405654 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.375033855438232, + "time": 26405656 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.375033855438232, + "time": 26405658 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.016865849494934, + "time": 26405660 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.016865849494934, + "time": 26405660 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.016865849494934, + "time": 26405662 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.016865849494934, + "time": 26405664 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.016865849494934, + "time": 26405666 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.016865849494934, + "time": 26405666 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.016865849494934, + "time": 26405670 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0544995069503784, + "time": 26405672 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0426149368286133, + "time": 26405674 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0426149368286133, + "time": 26405674 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.200791358947754, + "time": 26405676 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.200791358947754, + "time": 26405678 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.200791358947754, + "time": 26405680 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0335919857025146, + "time": 26405682 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + } + ], + "responsiveness": 3.0296902656555176, + "time": 26405684 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 5.023507595062256, + "time": 26405686 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + } + ], + "responsiveness": 7.069784164428711, + "time": 26405688 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.137727737426758, + "time": 26405690 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.137727737426758, + "time": 26405692 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.035252332687378, + "time": 26405694 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.035252332687378, + "time": 26405696 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.035252332687378, + "time": 26405698 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.035252332687378, + "time": 26405700 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.035252332687378, + "time": 26405702 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.035252332687378, + "time": 26405704 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1207830905914307, + "time": 26405706 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.3661112785339355, + "time": 26405706 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.3661112785339355, + "time": 26405708 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.3661112785339355, + "time": 26405710 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.539532661437988, + "time": 26405712 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0712255239486694, + "time": 26405714 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0712255239486694, + "time": 26405716 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0712255239486694, + "time": 26405718 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0712255239486694, + "time": 26405718 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0712255239486694, + "time": 26405720 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0712255239486694, + "time": 26405722 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.54371452331543, + "time": 26405724 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.04485614225268364, + "time": 26405726 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26405728 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26405728 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26405730 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26405732 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26405734 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0324515104293823, + "time": 26405736 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0324515104293823, + "time": 26405738 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0324515104293823, + "time": 26405740 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0324515104293823, + "time": 26405742 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0324515104293823, + "time": 26405744 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0324515104293823, + "time": 26405744 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0324515104293823, + "time": 26405746 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.091132402420044, + "time": 26405748 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.091132402420044, + "time": 26405750 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.091132402420044, + "time": 26405752 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.354366779327393, + "time": 26405754 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.354366779327393, + "time": 26405756 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.354366779327393, + "time": 26405758 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0522186756134033, + "time": 26405760 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0522186756134033, + "time": 26405762 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0522186756134033, + "time": 26405764 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0522186756134033, + "time": 26405766 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0522186756134033, + "time": 26405768 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0522186756134033, + "time": 26405770 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.002560615539551, + "time": 26405772 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.002560615539551, + "time": 26405774 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.002560615539551, + "time": 26405776 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.14709186553955, + "time": 26405778 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.14709186553955, + "time": 26405780 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1023967266082764, + "time": 26405782 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1023967266082764, + "time": 26405784 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1023967266082764, + "time": 26405786 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 7.0321502685546875, + "time": 26405788 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 8.143670082092285, + "time": 26405788 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 9.251008987426758, + "time": 26405790 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 1.0123043060302734, + "time": 26405792 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 3.0068819522857666, + "time": 26405794 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 5.005641460418701, + "time": 26405796 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 7.116540908813477, + "time": 26405798 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.15711498260498, + "time": 26405800 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.15711498260498, + "time": 26405802 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.11318039894104, + "time": 26405804 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.11318039894104, + "time": 26405806 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.11318039894104, + "time": 26405806 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.11318039894104, + "time": 26405808 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.11318039894104, + "time": 26405810 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.11318039894104, + "time": 26405810 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.11318039894104, + "time": 26405812 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.107718586921692, + "time": 26405814 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.107718586921692, + "time": 26405816 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.107718586921692, + "time": 26405818 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.107718586921692, + "time": 26405818 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.382636547088623, + "time": 26405820 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.382636547088623, + "time": 26405822 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26405824 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26405826 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26405828 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26405830 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26405830 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26405832 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.015205471776425838, + "time": 26405834 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080868721008301, + "time": 26405836 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080868721008301, + "time": 26405838 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080868721008301, + "time": 26405840 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080868721008301, + "time": 26405842 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080868721008301, + "time": 26405842 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080868721008301, + "time": 26405844 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080868721008301, + "time": 26405846 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1032967567443848, + "time": 26405848 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1032967567443848, + "time": 26405850 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1032967567443848, + "time": 26405852 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.226020336151123, + "time": 26405854 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.226020336151123, + "time": 26405854 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.226020336151123, + "time": 26405856 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0347323417663574, + "time": 26405858 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0347323417663574, + "time": 26405858 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0347323417663574, + "time": 26405860 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0347323417663574, + "time": 26405862 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0347323417663574, + "time": 26405864 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0347323417663574, + "time": 26405866 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0347323417663574, + "time": 26405868 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26405870 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26405872 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26405874 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26405876 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.191327095031738, + "time": 26405878 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.191327095031738, + "time": 26405878 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0896120071411133, + "time": 26405880 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0896120071411133, + "time": 26405882 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0896120071411133, + "time": 26405886 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.013283729553223, + "time": 26405886 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.013283729553223, + "time": 26405888 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26405890 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26405892 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26405894 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26405896 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26405898 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26405900 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26405902 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.091512680053711, + "time": 26405904 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.098634719848633, + "time": 26405906 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.098634719848633, + "time": 26405906 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.098634719848633, + "time": 26405908 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.098634719848633, + "time": 26405908 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.098634719848633, + "time": 26405910 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.098634719848633, + "time": 26405910 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9974789619445801, + "time": 26405912 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9974789619445801, + "time": 26405914 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9974789619445801, + "time": 26405916 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9974789619445801, + "time": 26405916 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9974789619445801, + "time": 26405918 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.122902870178223, + "time": 26405920 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.122902870178223, + "time": 26405922 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0812489986419678, + "time": 26405924 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0812489986419678, + "time": 26405926 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0812489986419678, + "time": 26405928 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0812489986419678, + "time": 26405930 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0812489986419678, + "time": 26405932 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0812489986419678, + "time": 26405932 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0812489986419678, + "time": 26405934 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.106718063354492, + "time": 26405936 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.106718063354492, + "time": 26405938 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.106718063354492, + "time": 26405940 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.106718063354492, + "time": 26405942 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.106718063354492, + "time": 26405944 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0191466808319092, + "time": 26405946 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0191466808319092, + "time": 26405948 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0191466808319092, + "time": 26405948 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0191466808319092, + "time": 26405950 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0191466808319092, + "time": 26405952 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.17080020904541, + "time": 26405954 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.17080020904541, + "time": 26405956 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1059577465057373, + "time": 26405958 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1059577465057373, + "time": 26405958 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1059577465057373, + "time": 26405960 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1059577465057373, + "time": 26405962 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1059577465057373, + "time": 26405964 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1059577465057373, + "time": 26405964 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1059577465057373, + "time": 26405966 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.07578706741333, + "time": 26405968 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1095190048217773, + "time": 26405970 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1095190048217773, + "time": 26405972 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1095190048217773, + "time": 26405972 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1095190048217773, + "time": 26405974 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1095190048217773, + "time": 26405974 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1095190048217773, + "time": 26405976 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": -0.03307190164923668, + "time": 26405978 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9660674333572388, + "time": 26405980 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9660674333572388, + "time": 26405982 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9660674333572388, + "time": 26405982 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9660674333572388, + "time": 26405984 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 9.047636032104492, + "time": 26405986 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 0.01178424060344696, + "time": 26405988 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 2.0493173599243164, + "time": 26405990 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 4.046175956726074, + "time": 26405992 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 6.041513919830322, + "time": 26405994 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 8.021265983581543, + "time": 26405996 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 10.098713874816895, + "time": 26405998 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::nsCycleCollector_forgetSkippable", + "line": 3817 + } + ], + "responsiveness": 0.39610254764556885, + "time": 26406000 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.4343960285186768, + "time": 26406004 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.4343960285186768, + "time": 26406006 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.4343960285186768, + "time": 26406008 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.4343960285186768, + "time": 26406010 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.4343960285186768, + "time": 26406010 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0107836723327637, + "time": 26406012 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0107836723327637, + "time": 26406014 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0107836723327637, + "time": 26406016 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0107836723327637, + "time": 26406018 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.044974327087402, + "time": 26406020 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.044974327087402, + "time": 26406022 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0389138460159302, + "time": 26406024 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0389138460159302, + "time": 26406026 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0389138460159302, + "time": 26406028 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0389138460159302, + "time": 26406028 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0389138460159302, + "time": 26406030 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0389138460159302, + "time": 26406032 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0389138460159302, + "time": 26406032 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0389138460159302, + "time": 26406034 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0489373207092285, + "time": 26406036 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0489373207092285, + "time": 26406038 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0489373207092285, + "time": 26406040 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0489373207092285, + "time": 26406042 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0489373207092285, + "time": 26406044 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0489373207092285, + "time": 26406046 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.108238697052002, + "time": 26406048 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.108238697052002, + "time": 26406050 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.108238697052002, + "time": 26406052 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.099574089050293, + "time": 26406054 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.099574089050293, + "time": 26406054 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.003941297531128, + "time": 26406056 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.003941297531128, + "time": 26406058 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.003941297531128, + "time": 26406060 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.003941297531128, + "time": 26406062 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.003941297531128, + "time": 26406062 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.003941297531128, + "time": 26406064 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.003941297531128, + "time": 26406066 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.003941297531128, + "time": 26406068 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0493173599243164, + "time": 26406070 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.080768585205078, + "time": 26406072 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.080768585205078, + "time": 26406074 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.080768585205078, + "time": 26406074 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.080768585205078, + "time": 26406076 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.04713696241378784, + "time": 26406078 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1101393699645996, + "time": 26406080 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1101393699645996, + "time": 26406082 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1101393699645996, + "time": 26406084 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1101393699645996, + "time": 26406084 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.429533004760742, + "time": 26406086 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.429533004760742, + "time": 26406088 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0020406246185303, + "time": 26406090 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0020406246185303, + "time": 26406092 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0020406246185303, + "time": 26406092 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0020406246185303, + "time": 26406094 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0020406246185303, + "time": 26406094 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0020406246185303, + "time": 26406096 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0020406246185303, + "time": 26406096 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0020406246185303, + "time": 26406098 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0020406246185303, + "time": 26406098 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9693487882614136, + "time": 26406100 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 2.953662872314453, + "time": 26406102 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.006401538848877, + "time": 26406104 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.006401538848877, + "time": 26406108 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.006401538848877, + "time": 26406108 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.006401538848877, + "time": 26406110 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0926530361175537, + "time": 26406114 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0926530361175537, + "time": 26406116 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0926530361175537, + "time": 26406118 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0926530361175537, + "time": 26406118 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.296625137329102, + "time": 26406120 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.296625137329102, + "time": 26406122 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0835297107696533, + "time": 26406124 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0835297107696533, + "time": 26406126 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0835297107696533, + "time": 26406128 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0835297107696533, + "time": 26406130 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0835297107696533, + "time": 26406132 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0835297107696533, + "time": 26406132 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0139646530151367, + "time": 26406134 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.010443210601807, + "time": 26406136 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.010443210601807, + "time": 26406138 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.010443210601807, + "time": 26406140 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.010443210601807, + "time": 26406142 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.010443210601807, + "time": 26406144 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1138007640838623, + "time": 26406146 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1138007640838623, + "time": 26406146 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1138007640838623, + "time": 26406148 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1138007640838623, + "time": 26406150 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.248208045959473, + "time": 26406152 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.248208045959473, + "time": 26406154 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9124681949615479, + "time": 26406156 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9124681949615479, + "time": 26406158 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9124681949615479, + "time": 26406160 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9124681949615479, + "time": 26406162 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9124681949615479, + "time": 26406164 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0005199909210205, + "time": 26406166 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0005199909210205, + "time": 26406168 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.022367477416992, + "time": 26406170 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.022367477416992, + "time": 26406172 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.022367477416992, + "time": 26406174 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.022367477416992, + "time": 26406176 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.022367477416992, + "time": 26406176 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26406180 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26406182 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26406184 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26406184 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26406186 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.016345882788300514, + "time": 26406188 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.052358627319336, + "time": 26406190 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.052358627319336, + "time": 26406192 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.052358627319336, + "time": 26406192 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.052358627319336, + "time": 26406194 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.052358627319336, + "time": 26406196 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.052358627319336, + "time": 26406198 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0153453350067139, + "time": 26406200 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0153453350067139, + "time": 26406202 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.98891544342041, + "time": 26406204 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.98891544342041, + "time": 26406206 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.98891544342041, + "time": 26406206 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.98891544342041, + "time": 26406208 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1233042478561401, + "time": 26406210 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1233042478561401, + "time": 26406212 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1233042478561401, + "time": 26406214 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1233042478561401, + "time": 26406214 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1233042478561401, + "time": 26406216 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1233042478561401, + "time": 26406218 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.433614730834961, + "time": 26406220 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26406222 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26406224 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26406226 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26406226 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26406228 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26406228 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26406230 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26406232 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.101016044616699, + "time": 26406234 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.10205602645874, + "time": 26406236 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.10205602645874, + "time": 26406238 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.10205602645874, + "time": 26406240 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.10205602645874, + "time": 26406240 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.10205602645874, + "time": 26406242 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0265092849731445, + "time": 26406244 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0265092849731445, + "time": 26406246 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0265092849731445, + "time": 26406248 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0265092849731445, + "time": 26406250 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0265092849731445, + "time": 26406252 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.039914362132549286, + "time": 26406254 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1561357975006104, + "time": 26406256 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1561357975006104, + "time": 26406258 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1561357975006104, + "time": 26406258 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1561357975006104, + "time": 26406260 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1561357975006104, + "time": 26406262 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1561357975006104, + "time": 26406264 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0465165376663208, + "time": 26406266 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0465165376663208, + "time": 26406268 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.107137680053711, + "time": 26406270 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.107137680053711, + "time": 26406272 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.107137680053711, + "time": 26406274 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.107137680053711, + "time": 26406276 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0504579544067383, + "time": 26406278 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.073545932769775, + "time": 26406280 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.073545932769775, + "time": 26406282 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.073545932769775, + "time": 26406284 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.264833450317383, + "time": 26406286 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.048797369003296, + "time": 26406288 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.048797369003296, + "time": 26406290 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.048797369003296, + "time": 26406290 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.048797369003296, + "time": 26406292 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.048797369003296, + "time": 26406294 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.048797369003296, + "time": 26406296 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.048797369003296, + "time": 26406298 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0689446926116943, + "time": 26406300 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0578203201293945, + "time": 26406302 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0578203201293945, + "time": 26406304 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.0998148918151855, + "time": 26406306 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.0998148918151855, + "time": 26406308 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9739104509353638, + "time": 26406310 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9739104509353638, + "time": 26406312 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.023507595062256, + "time": 26406314 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.023507595062256, + "time": 26406314 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.023507595062256, + "time": 26406316 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + } + ], + "responsiveness": 10.615699768066406, + "time": 26406320 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0427151918411255, + "time": 26406320 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0427151918411255, + "time": 26406322 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0427151918411255, + "time": 26406324 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0427151918411255, + "time": 26406326 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0427151918411255, + "time": 26406328 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0427151918411255, + "time": 26406330 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1050575971603394, + "time": 26406332 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1050575971603394, + "time": 26406334 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1050575971603394, + "time": 26406336 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.110458850860596, + "time": 26406338 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.110458850860596, + "time": 26406340 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.110458850860596, + "time": 26406342 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26406342 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26406344 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26406346 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26406348 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26406348 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26406350 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26406352 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0890918970108032, + "time": 26406352 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1088590621948242, + "time": 26406354 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1088590621948242, + "time": 26406356 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1088590621948242, + "time": 26406358 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1088590621948242, + "time": 26406360 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1088590621948242, + "time": 26406362 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9773316979408264, + "time": 26406364 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9773316979408264, + "time": 26406366 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9773316979408264, + "time": 26406368 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + } + ], + "responsiveness": 6.116400718688965, + "time": 26406370 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 8.144050598144531, + "time": 26406372 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.204011917114258, + "time": 26406374 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1080987453460693, + "time": 26406376 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1080987453460693, + "time": 26406378 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1080987453460693, + "time": 26406380 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.061420917510986, + "time": 26406382 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.061420917510986, + "time": 26406384 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.061420917510986, + "time": 26406386 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "layout::Flush (Flush_InterruptibleLayout)", + "line": 3969 + } + ], + "responsiveness": 2.051978349685669, + "time": 26406388 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 4.016905307769775, + "time": 26406390 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 6.020606517791748, + "time": 26406392 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 8.01822566986084, + "time": 26406394 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 10.016984939575195, + "time": 26406396 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 1.046136498451233, + "time": 26406398 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 3.015244960784912, + "time": 26406400 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 5.0485968589782715, + "time": 26406402 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowOuter::Paint", + "line": 2856 + } + ], + "responsiveness": 7.03937292098999, + "time": 26406404 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsCSSRendering::PaintBackground", + "line": 1350 + } + ], + "responsiveness": 9.06778335571289, + "time": 26406406 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 0.6287462711334229, + "time": 26406408 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 2.8331594467163086, + "time": 26406410 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 365 + }, + { + "location": "PreviewController.prototype.onTabPaint (resource://app/modules/WindowsPreviewPerTab.jsm:261)", + "line": 262 + } + ], + "responsiveness": 4.647932529449463, + "time": 26406412 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + } + ], + "responsiveness": 6.644791126251221, + "time": 26406414 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::nsCycleCollector_forgetSkippable", + "line": 3817 + } + ], + "responsiveness": 8.622262954711914, + "time": 26406416 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.04789723455905914, + "time": 26406418 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0443756580352783, + "time": 26406420 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26406422 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26406422 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26406424 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26406426 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26406428 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.042335033416748, + "time": 26406430 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.042335033416748, + "time": 26406432 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.042335033416748, + "time": 26406434 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.042335033416748, + "time": 26406436 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.054098129272461, + "time": 26406438 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.054098129272461, + "time": 26406440 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1035370826721191, + "time": 26406442 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1035370826721191, + "time": 26406442 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1035370826721191, + "time": 26406446 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1035370826721191, + "time": 26406446 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1035370826721191, + "time": 26406448 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.013304787687957287, + "time": 26406450 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2308828830718994, + "time": 26406452 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2308828830718994, + "time": 26406454 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2308828830718994, + "time": 26406456 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2308828830718994, + "time": 26406458 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2308828830718994, + "time": 26406460 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2308828830718994, + "time": 26406462 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1073384284973145, + "time": 26406464 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1073384284973145, + "time": 26406466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.321915149688721, + "time": 26406468 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.321915149688721, + "time": 26406470 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.321915149688721, + "time": 26406470 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.321915149688721, + "time": 26406472 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9921570420265198, + "time": 26406474 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9921570420265198, + "time": 26406474 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9921570420265198, + "time": 26406476 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9921570420265198, + "time": 26406478 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9921570420265198, + "time": 26406478 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9921570420265198, + "time": 26406480 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.54371452331543, + "time": 26406482 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.08971228450536728, + "time": 26406484 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.08971228450536728, + "time": 26406486 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.08971228450536728, + "time": 26406488 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.08971228450536728, + "time": 26406490 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.08971228450536728, + "time": 26406490 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.185105323791504, + "time": 26406492 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.185105323791504, + "time": 26406494 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0484172105789185, + "time": 26406496 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0484172105789185, + "time": 26406498 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0484172105789185, + "time": 26406500 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.093732833862305, + "time": 26406502 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.093732833862305, + "time": 26406504 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.093732833862305, + "time": 26406506 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9637866020202637, + "time": 26406508 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-004.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 3.911607503890991, + "time": 26406510 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-004.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 5.912267684936523, + "time": 26406512 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-004.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 7.914447784423828, + "time": 26406514 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-004.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 9.916248321533203, + "time": 26406516 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-004.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 0.9818933010101318, + "time": 26406518 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-004.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 2.998138904571533, + "time": 26406520 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + } + ], + "responsiveness": 5.0311102867126465, + "time": 26406522 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + } + ], + "responsiveness": 7.024927616119385, + "time": 26406524 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 53 + } + ], + "responsiveness": 9.086790084838867, + "time": 26406526 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 53 + } + ], + "responsiveness": 11.20111083984375, + "time": 26406528 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 54 + }, + { + "location": "EnterJIT" + }, + { + "location": "CVUtils.computeGray (http://barcode.oberhofer.dev/js/cv_utils.js:657)", + "line": 663 + } + ], + "responsiveness": 13.197209358215332, + "time": 26406530 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 210 + }, + { + "location": "initArray (http://barcode.oberhofer.dev/js/typedefs.js:186)", + "line": 187 + } + ], + "responsiveness": 15.182662963867188, + "time": 26406532 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 212 + }, + { + "location": "Rasterizer.create/<.rasterize (http://barcode.oberhofer.dev/js/rasterizer.js:32)", + "line": 70 + } + ], + "responsiveness": 17.184083938598633, + "time": 26406534 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "skeletonize (http://barcode.oberhofer.dev/js/barcode_locator.js:342)", + "line": 344 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 19.19690704345703, + "time": 26406536 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 212 + }, + { + "location": "Rasterizer.create/<.rasterize (http://barcode.oberhofer.dev/js/rasterizer.js:32)" + } + ], + "responsiveness": 20.239622116088867, + "time": 26406536 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "skeletonize (http://barcode.oberhofer.dev/js/barcode_locator.js:342)", + "line": 344 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 22.24028205871582, + "time": 26406538 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "skeletonize (http://barcode.oberhofer.dev/js/barcode_locator.js:342)", + "line": 344 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 24.28656005859375, + "time": 26406540 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "skeletonize (http://barcode.oberhofer.dev/js/barcode_locator.js:342)", + "line": 344 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 26.28683853149414, + "time": 26406542 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 212 + }, + { + "location": "Rasterizer.create/<.rasterize (http://barcode.oberhofer.dev/js/rasterizer.js:32)" + } + ], + "responsiveness": 28.28445816040039, + "time": 26406544 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "skeletonize (http://barcode.oberhofer.dev/js/barcode_locator.js:342)", + "line": 344 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 30.271053314208984, + "time": 26406546 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "skeletonize (http://barcode.oberhofer.dev/js/barcode_locator.js:342)", + "line": 344 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 32.271331787109375, + "time": 26406548 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "skeletonize (http://barcode.oberhofer.dev/js/barcode_locator.js:342)", + "line": 344 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 34.27275085449219, + "time": 26406550 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 36.28671646118164, + "time": 26406552 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 219 + }, + { + "location": "ImageWrapper.prototype.moments (http://barcode.oberhofer.dev/js/image_wrapper.js:279)", + "line": 280 + } + ], + "responsiveness": 38.2930793762207, + "time": 26406554 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 40.277774810791016, + "time": 26406556 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 42.295921325683594, + "time": 26406558 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "ImageWrapper.prototype.subImageAsCopy (http://barcode.oberhofer.dev/js/image_wrapper.js:167)" + } + ], + "responsiveness": 44.34333801269531, + "time": 26406560 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 46.34437561035156, + "time": 26406562 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 48.436649322509766, + "time": 26406564 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 50.464298248291016, + "time": 26406566 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 52.482444763183594, + "time": 26406570 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 54.528343200683594, + "time": 26406572 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 56.52748107910156, + "time": 26406574 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "ImageWrapper.prototype.subImageAsCopy (http://barcode.oberhofer.dev/js/image_wrapper.js:167)" + } + ], + "responsiveness": 58.57109451293945, + "time": 26406576 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 222 + }, + { + "location": "extractPatches (http://barcode.oberhofer.dev/js/barcode_locator.js:367)", + "line": 379 + } + ], + "responsiveness": 60.55768966674805, + "time": 26406578 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 219 + }, + { + "location": "ImageWrapper.prototype.moments (http://barcode.oberhofer.dev/js/image_wrapper.js:279)" + } + ], + "responsiveness": 62.57697677612305, + "time": 26406580 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 64.57535552978516, + "time": 26406582 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 219 + }, + { + "location": "ImageWrapper.prototype.moments (http://barcode.oberhofer.dev/js/image_wrapper.js:279)" + } + ], + "responsiveness": 66.57563781738281, + "time": 26406584 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 68.57819366455078, + "time": 26406586 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 70.62105560302734, + "time": 26406588 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 72.66694641113281, + "time": 26406590 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 74.6679916381836, + "time": 26406592 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 76.66712951660156, + "time": 26406594 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 78.7099838256836, + "time": 26406596 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 268 + }, + { + "location": "BarcodeDecoder.create/<.decodeFromBoundingBoxes (http://barcode.oberhofer.dev/js/barcode_decoder.js:166)", + "line": 170 + }, + { + "location": "decodeFromBoundingBox (http://barcode.oberhofer.dev/js/barcode_decoder.js:55)", + "line": 56 + }, + { + "location": "layout::Flush (Flush_Style)", + "line": 3969 + }, + { + "location": "CSS::ProcessRestyles", + "line": 137 + }, + { + "location": "CSS::ComputeStyleChangeFor", + "line": 2902 + }, + { + "location": "nsStyleSet::FileRules", + "line": 943 + } + ], + "responsiveness": 80.75360107421875, + "time": 26406598 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 268 + }, + { + "location": "BarcodeDecoder.create/<.decodeFromBoundingBoxes (http://barcode.oberhofer.dev/js/barcode_decoder.js:166)", + "line": 170 + }, + { + "location": "decodeFromBoundingBox (http://barcode.oberhofer.dev/js/barcode_decoder.js:55)", + "line": 138 + }, + { + "location": "EnterJIT" + }, + { + "location": "decodeFromBoundingBox (http://barcode.oberhofer.dev/js/barcode_decoder.js:55)", + "line": 138 + }, + { + "location": "js::RunScript" + }, + { + "location": "BarcodeReader.create/that.decodePattern (http://barcode.oberhofer.dev/js/barcode_reader.js:123)", + "line": 128 + }, + { + "location": "EnterJIT" + }, + { + "location": "Code128Reader.create/that.decode (http://barcode.oberhofer.dev/js/code_128_reader.js:139)", + "line": 175 + }, + { + "location": "Code128Reader.create/that.decodeCode (http://barcode.oberhofer.dev/js/code_128_reader.js:6)", + "line": 24 + }, + { + "location": "BarcodeReader.create/that.matchPattern (http://barcode.oberhofer.dev/js/barcode_reader.js:20)", + "line": 21 + } + ], + "responsiveness": 82.7839126586914, + "time": 26406600 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 84.78646850585938, + "time": 26406602 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 86.79739379882812, + "time": 26406604 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 88.8451919555664, + "time": 26406606 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + } + ], + "responsiveness": 90.89260864257812, + "time": 26406608 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 358 + }, + { + "location": "js::RunScript" + } + ], + "responsiveness": 1.536512851715088, + "time": 26406610 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.6401898860931396, + "time": 26406612 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.6401898860931396, + "time": 26406614 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.711834907531738, + "time": 26406616 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.711834907531738, + "time": 26406618 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26406620 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26406620 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26406622 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26406624 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26406626 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26406626 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26406628 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26406630 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0936535596847534, + "time": 26406630 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0936535596847534, + "time": 26406634 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0936535596847534, + "time": 26406636 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0936535596847534, + "time": 26406638 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0936535596847534, + "time": 26406640 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0936535596847534, + "time": 26406640 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0697048902511597, + "time": 26406642 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0697048902511597, + "time": 26406644 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0697048902511597, + "time": 26406644 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0697048902511597, + "time": 26406646 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.339301109313965, + "time": 26406648 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.339301109313965, + "time": 26406650 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.339301109313965, + "time": 26406652 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0909925699234009, + "time": 26406654 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0909925699234009, + "time": 26406656 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.079007625579834, + "time": 26406658 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.079007625579834, + "time": 26406658 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.079007625579834, + "time": 26406660 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.079007625579834, + "time": 26406662 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 0.9982392191886902, + "time": 26406664 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2146 + } + ], + "responsiveness": 2.9969985485076904, + "time": 26406666 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.066843032836914, + "time": 26406668 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.066843032836914, + "time": 26406670 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.066843032836914, + "time": 26406672 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 0.002660957630723715, + "time": 26406674 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 1.0491775274276733, + "time": 26406674 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 2.091512680053711, + "time": 26406676 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.182645320892334, + "time": 26406678 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.182645320892334, + "time": 26406678 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.182645320892334, + "time": 26406680 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.182645320892334, + "time": 26406682 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.182645320892334, + "time": 26406684 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2084548473358154, + "time": 26406686 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2084548473358154, + "time": 26406688 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "f (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:815)", + "line": 821 + }, + { + "location": "Z (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:915)", + "line": 930 + }, + { + "location": "gadgets.rpc resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 148.21267700195312, + "time": 26408072 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 150.2110595703125, + "time": 26408074 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 152.25619506835938, + "time": 26408078 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 154.30133056640625, + "time": 26408080 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 156.30616760253906, + "time": 26408082 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 158.3072052001953, + "time": 26408084 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 160.3998565673828, + "time": 26408086 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 162.40318298339844, + "time": 26408088 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 164.44717407226562, + "time": 26408090 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2096 + }, + { + "location": "WCF__outputMessageFromQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2195)", + "line": 2200 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF_logConsoleAPIMessage (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:1181)", + "line": 1208 + }, + { + "location": "js::RunScript" + }, + { + "location": "Messages.ConsoleGeneric.prototype<.render (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/console-output.js:1272)", + "line": 1324 + }, + { + "location": "js::RunScript" + }, + { + "location": "Messages.Simple.prototype<.render (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/console-output.js:804)", + "line": 810 + }, + { + "location": "Widgets.MessageTimestamp.prototype<.render (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/console-output.js:1745)", + "line": 1747 + }, + { + "location": "js::RunScript" + }, + { + "location": "Widgets.BaseWidget.prototype.document (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/console-output.js:1637)", + "line": 1638 + }, + { + "location": "js::RunScript" + }, + { + "location": "Messages.BaseMessage.prototype.document (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/console-output.js:402)", + "line": 403 + }, + { + "location": "js::RunScript" + } + ], + "responsiveness": 6.981212139129639, + "time": 26408284 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 8.992515563964844, + "time": 26408286 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2146 + } + ], + "responsiveness": 11.054377555847168, + "time": 26408290 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 1.0240885019302368, + "time": 26408290 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 3.0087826251983643, + "time": 26408292 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 4.997278213500977, + "time": 26408294 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "image::imgFrame::Draw", + "line": 486 + }, + { + "location": "gfxUtils::DrawPixelSnapped", + "line": 511 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 6.998318195343018, + "time": 26408296 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "image::imgFrame::Draw", + "line": 486 + }, + { + "location": "gfxUtils::DrawPixelSnapped", + "line": 511 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 9.012283325195312, + "time": 26408298 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 358 + } + ], + "responsiveness": 0.6021366715431213, + "time": 26408300 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.6103992462158203, + "time": 26408302 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.6452717781066895, + "time": 26408304 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.6452717781066895, + "time": 26408308 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.699049949645996, + "time": 26408310 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": ".doPingThings (https://slack.global.ssl.fastly.net/24420/js/rollup-secondary_required_1409187464.https.gz.js:3854)", + "line": 3855 + } + ], + "responsiveness": 0.003421231172978878, + "time": 26408310 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": ".doPingThings (https://slack.global.ssl.fastly.net/24420/js/rollup-secondary_required_1409187464.https.gz.js:3854)", + "line": 3855 + } + ], + "responsiveness": 2.005601644515991, + "time": 26408312 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": ".doPingThings (https://slack.global.ssl.fastly.net/24420/js/rollup-secondary_required_1409187464.https.gz.js:3854)", + "line": 3855 + } + ], + "responsiveness": 4.007021903991699, + "time": 26408314 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.028209209442139, + "time": 26408316 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.028209209442139, + "time": 26408320 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.028209209442139, + "time": 26408322 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.11874258518219, + "time": 26408324 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 3.010303258895874, + "time": 26408324 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 5.028069496154785, + "time": 26408326 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowOuter::Paint", + "line": 2856 + } + ], + "responsiveness": 7.024547576904297, + "time": 26408328 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.042313575744629, + "time": 26408332 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "autoSave/autoInterval< (http://localhost:4504/js/dillinger.js:489)", + "line": 491 + }, + { + "location": "saveFile (http://localhost:4504/js/dillinger.js:472)", + "line": 474 + }, + { + "location": "this.toString (http://localhost:4504/js/ace.js:1)", + "line": 1 + }, + { + "location": "this.getValue (http://localhost:4504/js/ace.js:1)", + "line": 1 + }, + { + "location": "this.getAllLines (http://localhost:4504/js/ace.js:1)", + "line": 1 + } + ], + "responsiveness": 0.008743146434426308, + "time": 26408332 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "autoSave/autoInterval< (http://localhost:4504/js/dillinger.js:489)", + "line": 491 + }, + { + "location": "saveFile (http://localhost:4504/js/dillinger.js:472)", + "line": 474 + }, + { + "location": "updateUserProfile (http://localhost:4504/js/dillinger.js:155)", + "line": 157 + }, + { + "location": "v.fn.extend (http://localhost:4504/js/jquery.min.js:2)", + "line": 2 + } + ], + "responsiveness": 2.0949337482452393, + "time": 26408336 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "autoSave/autoInterval< (http://localhost:4504/js/dillinger.js:489)", + "line": 492 + }, + { + "location": "LocalFiles resource://gre/modules/devtools/toolkit/webconsole/utils.js:1343)", + "line": 1358 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCA_onConsoleAPICall (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/webconsole.js:1167)", + "line": 1172 + }, + { + "location": "WCA_prepareConsoleMessageForRemote (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/webconsole.js:1316)", + "line": 1318 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCU_cloneObject (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/utils.js:81)", + "line": 101 + } + ], + "responsiveness": 2.7936253547668457, + "time": 26408968 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 155.9427490234375, + "time": 26409130 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 157.94911193847656, + "time": 26409132 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 159.9965362548828, + "time": 26409136 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 161.9960479736328, + "time": 26409138 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 163.9818878173828, + "time": 26409140 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 166.0011749267578, + "time": 26409142 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 168.094970703125, + "time": 26409144 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2096 + }, + { + "location": "WCF__outputMessageFromQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2195)", + "line": 2200 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF_logConsoleAPIMessage (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:1181)", + "line": 1208 + }, + { + "location": "js::RunScript" + }, + { + "location": "Messages.ConsoleGeneric.prototype<.render (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/console-output.js:1272)", + "line": 1280 + }, + { + "location": "js::RunScript" + }, + { + "location": "Messages.Simple.prototype<._renderLocation (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/console-output.js:918)", + "line": 931 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF_createLocationNode (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2582)", + "line": 2644 + } + ], + "responsiveness": 7.0161848068237305, + "time": 26409368 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 9.031290054321289, + "time": 26409370 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 0.006842462345957756, + "time": 26409372 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 2.0592010021209717, + "time": 26409374 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 4.030590534210205, + "time": 26409376 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 6.019845962524414, + "time": 26409378 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 8.03381061553955, + "time": 26409380 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 10.024967193603516, + "time": 26409382 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowOuter::Paint", + "line": 2856 + } + ], + "responsiveness": 1.0145851373672485, + "time": 26409384 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "image::imgFrame::Draw", + "line": 486 + }, + { + "location": "gfxUtils::DrawPixelSnapped", + "line": 511 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 3.0365326404571533, + "time": 26409386 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "image::imgFrame::Draw", + "line": 486 + }, + { + "location": "gfxUtils::DrawPixelSnapped", + "line": 511 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 5.83928108215332, + "time": 26409388 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "image::imgFrame::Draw", + "line": 486 + }, + { + "location": "gfxUtils::DrawPixelSnapped", + "line": 511 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 7.041653633117676, + "time": 26409390 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 358 + } + ], + "responsiveness": 9.019505500793457, + "time": 26409392 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "js::RunScript" + }, + { + "location": "mTabProgressListener/<.onStateChange (chrome://browser/content/tabbrowser.xml:577)", + "line": 684 + }, + { + "location": "mTabProgressListener/<._callProgressListeners (chrome://browser/content/tabbrowser.xml:528)", + "line": 530 + }, + { + "location": "js::RunScript" + }, + { + "location": "_callProgressListeners (chrome://browser/content/tabbrowser.xml:459)", + "line": 467 + }, + { + "location": "js::RunScript" + }, + { + "location": "forEach (self-hosted:948)", + "line": 958 + } + ], + "responsiveness": -0.016345882788300514, + "time": 26409394 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9941976070404053, + "time": 26409396 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9941976070404053, + "time": 26409398 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9941976070404053, + "time": 26409400 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9941976070404053, + "time": 26409402 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.061460494995117, + "time": 26409404 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.067804217338562, + "time": 26409406 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.067804217338562, + "time": 26409408 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.067804217338562, + "time": 26409408 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 5.080528259277344, + "time": 26409410 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 6.154034614562988, + "time": 26409410 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 8.238704681396484, + "time": 26409412 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 10.239364624023438, + "time": 26409414 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + } + ], + "responsiveness": 1.0297905206680298, + "time": 26409416 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 358 + } + ], + "responsiveness": 3.0395736694335938, + "time": 26409418 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.053158283233643, + "time": 26409420 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.053158283233643, + "time": 26409422 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.053158283233643, + "time": 26409424 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.29448413848877, + "time": 26409426 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0237083435058594, + "time": 26409428 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0237083435058594, + "time": 26409430 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0237083435058594, + "time": 26409432 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0237083435058594, + "time": 26409432 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0237083435058594, + "time": 26409434 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0237083435058594, + "time": 26409436 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0237083435058594, + "time": 26409436 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9910166263580322, + "time": 26409438 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9910166263580322, + "time": 26409440 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.073685646057129, + "time": 26409442 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.073685646057129, + "time": 26409444 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.073685646057129, + "time": 26409446 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.009883556514978409, + "time": 26409448 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080868721008301, + "time": 26409450 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080868721008301, + "time": 26409452 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080868721008301, + "time": 26409454 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080868721008301, + "time": 26409456 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.323995590209961, + "time": 26409458 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.323995590209961, + "time": 26409460 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.073506236076355, + "time": 26409462 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.073506236076355, + "time": 26409464 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.073506236076355, + "time": 26409466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.073506236076355, + "time": 26409466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.073506236076355, + "time": 26409468 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.073506236076355, + "time": 26409470 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.073506236076355, + "time": 26409472 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.095554232597351, + "time": 26409472 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1041970252990723, + "time": 26409474 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1041970252990723, + "time": 26409476 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1041970252990723, + "time": 26409476 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1041970252990723, + "time": 26409478 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1041970252990723, + "time": 26409480 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1041970252990723, + "time": 26409482 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0158653259277344, + "time": 26409484 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0158653259277344, + "time": 26409486 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0158653259277344, + "time": 26409486 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0158653259277344, + "time": 26409488 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0158653259277344, + "time": 26409490 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.222258567810059, + "time": 26409492 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0438556671142578, + "time": 26409494 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.071885347366333, + "time": 26409496 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.071885347366333, + "time": 26409498 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.071885347366333, + "time": 26409500 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.071885347366333, + "time": 26409502 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.071885347366333, + "time": 26409504 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.065523386001587, + "time": 26409506 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.065523386001587, + "time": 26409508 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.096874237060547, + "time": 26409510 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.096874237060547, + "time": 26409512 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.096874237060547, + "time": 26409514 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.096874237060547, + "time": 26409514 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0985952615737915, + "time": 26409516 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0985952615737915, + "time": 26409518 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0985952615737915, + "time": 26409520 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0985952615737915, + "time": 26409522 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.116440773010254, + "time": 26409524 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.116440773010254, + "time": 26409526 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1054377555847168, + "time": 26409528 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1054377555847168, + "time": 26409530 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1054377555847168, + "time": 26409532 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1054377555847168, + "time": 26409534 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1054377555847168, + "time": 26409534 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1054377555847168, + "time": 26409536 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1054377555847168, + "time": 26409538 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0706050395965576, + "time": 26409540 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.109278678894043, + "time": 26409542 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.109278678894043, + "time": 26409544 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.109278678894043, + "time": 26409544 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.109278678894043, + "time": 26409546 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.109278678894043, + "time": 26409548 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.044755697250366, + "time": 26409550 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.044755697250366, + "time": 26409552 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.044755697250366, + "time": 26409554 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.198650360107422, + "time": 26409556 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.198650360107422, + "time": 26409556 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.198650360107422, + "time": 26409558 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9913967251777649, + "time": 26409560 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9913967251777649, + "time": 26409562 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9913967251777649, + "time": 26409562 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9913967251777649, + "time": 26409564 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9913967251777649, + "time": 26409566 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9913967251777649, + "time": 26409568 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9913967251777649, + "time": 26409570 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9921570420265198, + "time": 26409572 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0874710083007812, + "time": 26409574 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0874710083007812, + "time": 26409574 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0874710083007812, + "time": 26409576 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0874710083007812, + "time": 26409578 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0874710083007812, + "time": 26409580 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.041054774075746536, + "time": 26409582 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26409584 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26409586 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080108404159546, + "time": 26409588 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.044454574584961, + "time": 26409590 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.044454574584961, + "time": 26409592 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0029406547546387, + "time": 26409594 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0029406547546387, + "time": 26409596 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.011483192443848, + "time": 26409598 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.011483192443848, + "time": 26409598 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.011483192443848, + "time": 26409600 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.011483192443848, + "time": 26409602 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1158413887023926, + "time": 26409604 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 4.040093898773193, + "time": 26409606 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 6.027068614959717, + "time": 26409608 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 8.05091667175293, + "time": 26409610 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 10.057278633117676, + "time": 26409612 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 1.045376181602478, + "time": 26409614 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 3.0293099880218506, + "time": 26409616 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 5.04441499710083, + "time": 26409618 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.119962215423584, + "time": 26409620 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.082988739013672, + "time": 26409622 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.082988739013672, + "time": 26409624 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.062622308731079, + "time": 26409626 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.062622308731079, + "time": 26409628 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.062622308731079, + "time": 26409630 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.062622308731079, + "time": 26409632 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.062622308731079, + "time": 26409634 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.020667314529419, + "time": 26409636 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.020667314529419, + "time": 26409638 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.091552257537842, + "time": 26409640 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.091552257537842, + "time": 26409642 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.091552257537842, + "time": 26409646 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.091552257537842, + "time": 26409646 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26409650 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26409650 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26409652 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26409652 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.113940715789795, + "time": 26409654 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.618461608886719, + "time": 26409656 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.004561641253530979, + "time": 26409658 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0652830600738525, + "time": 26409660 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0652830600738525, + "time": 26409660 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0652830600738525, + "time": 26409662 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0652830600738525, + "time": 26409664 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0652830600738525, + "time": 26409666 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (http://barcode.oberhofer.dev/)", + "line": 8360 + } + ], + "responsiveness": 10.417268753051758, + "time": 26409668 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0814892053604126, + "time": 26409670 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + } + ], + "responsiveness": 3.0562996864318848, + "time": 26409672 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 5.044795513153076, + "time": 26409674 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 6.1525139808654785, + "time": 26409676 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 8.139108657836914, + "time": 26409678 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 10.138628005981445, + "time": 26409680 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 1.0465165376663208, + "time": 26409682 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 3.049077272415161, + "time": 26409684 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 5.050497531890869, + "time": 26409686 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 7.029869556427002, + "time": 26409688 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsCSSRendering::PaintBackground", + "line": 1350 + } + ], + "responsiveness": 9.053717613220215, + "time": 26409690 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + } + ], + "responsiveness": 11.056658744812012, + "time": 26409692 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 1.5110437870025635, + "time": 26409694 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 358 + } + ], + "responsiveness": 3.504100799560547, + "time": 26409696 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.508182048797607, + "time": 26409698 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.5479960441589355, + "time": 26409700 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.5479960441589355, + "time": 26409702 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.5479960441589355, + "time": 26409704 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::nsCycleCollector_forgetSkippable", + "line": 3817 + } + ], + "responsiveness": 1.9580845832824707, + "time": 26409706 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::nsCycleCollector_forgetSkippable", + "line": 3817 + } + ], + "responsiveness": 3.9325151443481445, + "time": 26409708 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.025548458099365, + "time": 26409710 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.025548458099365, + "time": 26409710 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.025548458099365, + "time": 26409712 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.025548458099365, + "time": 26409714 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0382933616638184, + "time": 26409716 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0382933616638184, + "time": 26409718 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0382933616638184, + "time": 26409720 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0382933616638184, + "time": 26409720 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.279378890991211, + "time": 26409722 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.279378890991211, + "time": 26409724 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9554235935211182, + "time": 26409726 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9554235935211182, + "time": 26409728 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9554235935211182, + "time": 26409730 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9554235935211182, + "time": 26409732 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.034470558166504, + "time": 26409734 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + } + ], + "responsiveness": 1.0377734899520874, + "time": 26409736 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + } + ], + "responsiveness": 3.0467963218688965, + "time": 26409738 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 5.191908359527588, + "time": 26409740 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 7.159876346588135, + "time": 26409742 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 9.257091522216797, + "time": 26409744 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "za (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 11.245206832885742, + "time": 26409746 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 13.25613021850586, + "time": 26409748 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "za (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 15.252608299255371, + "time": 26409750 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + } + ], + "responsiveness": 17.248327255249023, + "time": 26409752 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + } + ], + "responsiveness": 19.464523315429688, + "time": 26409754 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "za (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 21.253828048706055, + "time": 26409756 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "za (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 23.25600814819336, + "time": 26409758 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 25.287839889526367, + "time": 26409760 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)" + } + ], + "responsiveness": 27.28241729736328, + "time": 26409762 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "be/<.callback (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "_.dx (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=auth/exm=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_1:132)", + "line": 132 + }, + { + "location": "_.Xw (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=auth/exm=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_1:128)", + "line": 128 + }, + { + "location": "_.dx/< (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=auth/exm=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_1:132)", + "line": 132 + }, + { + "location": "_.T jar:file:///C:/Users/Christoph/AppData/Roaming/Mozilla/Firefox/Profiles/hrdbs1rb.default/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D.xpi!/bootstrap.js -> jar:file:///C:/Users/Christoph/AppData/Roaming/Mozilla/Firefox/Profiles/hrdbs1rb.default/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D.xpi!/lib/ui.js:887)", + "line": 889 + } + ], + "responsiveness": 8.009861946105957, + "time": 26409806 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-007.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 10.011662483215332, + "time": 26409808 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + } + ], + "responsiveness": 1.0172460079193115, + "time": 26409810 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + } + ], + "responsiveness": 3.050217628479004, + "time": 26409812 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 53 + } + ], + "responsiveness": 5.052017688751221, + "time": 26409814 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 54 + }, + { + "location": "EnterJIT" + }, + { + "location": "CVUtils.computeGray (http://barcode.oberhofer.dev/js/cv_utils.js:657)" + } + ], + "responsiveness": 7.147712230682373, + "time": 26409816 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 186 + }, + { + "location": "js::RunScript" + }, + { + "location": "CVUtils.otsuThreshold (http://barcode.oberhofer.dev/js/cv_utils.js:144)", + "line": 195 + }, + { + "location": "EnterJIT" + }, + { + "location": "determineThreshold (http://barcode.oberhofer.dev/js/cv_utils.js:168)", + "line": 187 + }, + { + "location": "mx (http://barcode.oberhofer.dev/js/cv_utils.js:157)" + } + ], + "responsiveness": 9.12822437286377, + "time": 26409818 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 11.142950057983398, + "time": 26409820 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 13.146270751953125, + "time": 26409822 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 212 + }, + { + "location": "Rasterizer.create/<.rasterize (http://barcode.oberhofer.dev/js/rasterizer.js:32)" + } + ], + "responsiveness": 15.167078018188477, + "time": 26409824 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 17.14834976196289, + "time": 26409826 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 19.191205978393555, + "time": 26409828 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 21.19908905029297, + "time": 26409830 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 23.197467803955078, + "time": 26409832 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 25.182540893554688, + "time": 26409834 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 219 + }, + { + "location": "ImageWrapper.prototype.moments (http://barcode.oberhofer.dev/js/image_wrapper.js:279)", + "line": 344 + }, + { + "location": "vec2.create (http://barcode.oberhofer.dev/js/glMatrixAddon.js:248)", + "line": 252 + } + ], + "responsiveness": 27.199928283691406, + "time": 26409836 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 29.20058822631836, + "time": 26409838 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "ImageWrapper.prototype.subImageAsCopy (http://barcode.oberhofer.dev/js/image_wrapper.js:167)" + } + ], + "responsiveness": 31.20086669921875, + "time": 26409840 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 212 + }, + { + "location": "Rasterizer.create/<.rasterize (http://barcode.oberhofer.dev/js/rasterizer.js:32)" + } + ], + "responsiveness": 33.201908111572266, + "time": 26409842 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 212 + }, + { + "location": "Rasterizer.create/<.rasterize (http://barcode.oberhofer.dev/js/rasterizer.js:32)" + } + ], + "responsiveness": 35.2310791015625, + "time": 26409844 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 37.24922561645508, + "time": 26409846 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 39.24684143066406, + "time": 26409848 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 41.24978256225586, + "time": 26409850 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 43.29263687133789, + "time": 26409852 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 45.321807861328125, + "time": 26409854 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 47.3369140625, + "time": 26409856 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 49.38166809082031, + "time": 26409858 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 51.37016677856445, + "time": 26409860 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 53.38679122924805, + "time": 26409862 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 55.36958312988281, + "time": 26409864 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsCSSRendering::PaintBackground", + "line": 1350 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 57.38621139526367, + "time": 26409866 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 1.4616259336471558, + "time": 26409868 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 153.41294860839844, + "time": 26410030 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 155.44781494140625, + "time": 26410032 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 157.46368408203125, + "time": 26410034 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 159.4613037109375, + "time": 26410036 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 161.46310424804688, + "time": 26410038 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 163.52001953125, + "time": 26410042 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 165.49179077148438, + "time": 26410042 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1396)", + "line": 1403 + }, + { + "location": "CPL__checkFileActivity (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/network-monitor.js:1418)", + "line": 1426 + } + ], + "responsiveness": 167.6897430419922, + "time": 26410046 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "_events resource://gre/modules/devtools/DevToolsUtils.js:82)", + "line": 84 + }, + { + "location": "js::RunScript" + }, + { + "location": "LDT_send/< (resource://gre/modules/devtools/dbg-client.jsm -> resource://gre/modules/devtools/server/transport.js:273)", + "line": 279 + }, + { + "location": "js::RunScript" + }, + { + "location": "DebuggerClient.prototype.onPacket (resource://gre/modules/devtools/dbg-client.jsm:675)", + "line": 680 + } + ], + "responsiveness": 0.09275337308645248, + "time": 26410132 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 534 + } + ], + "responsiveness": 2.288043260574341, + "time": 26410134 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 3.336460590362549, + "time": 26410136 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 5.372093200683594, + "time": 26410138 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 7.463985919952393, + "time": 26410140 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 9.467686653137207, + "time": 26410142 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 1.0191466808319092, + "time": 26410144 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 3.0258889198303223, + "time": 26410146 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 4.067083358764648, + "time": 26410146 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 6.072305202484131, + "time": 26410148 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Input::nsInputStreamPump::OnInputStreamReady", + "line": 403 + }, + { + "location": "Input::nsInputStreamPump::OnStateTransfer", + "line": 677 + } + ], + "responsiveness": 8.099954605102539, + "time": 26410150 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::RunCycleCollectorSlice", + "line": 1952 + }, + { + "location": "CC::nsCycleCollector_collectSlice", + "line": 3872 + } + ], + "responsiveness": 10.647631645202637, + "time": 26410152 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::RunCycleCollectorSlice", + "line": 1952 + }, + { + "location": "CC::nsCycleCollector_collectSlice", + "line": 3872 + } + ], + "responsiveness": 1.0183864831924438, + "time": 26410154 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::RunCycleCollectorSlice", + "line": 1952 + }, + { + "location": "CC::nsCycleCollector_collectSlice", + "line": 3872 + } + ], + "responsiveness": 3.010303258895874, + "time": 26410156 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::RunCycleCollectorSlice", + "line": 1952 + }, + { + "location": "CC::nsCycleCollector_collectSlice", + "line": 3872 + } + ], + "responsiveness": 5.012483596801758, + "time": 26410158 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::RunCycleCollectorSlice", + "line": 1952 + }, + { + "location": "CC::nsCycleCollector_collectSlice", + "line": 3872 + } + ], + "responsiveness": 7.013904094696045, + "time": 26410160 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.025967597961426, + "time": 26410162 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.004561641253530979, + "time": 26410164 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + } + ], + "responsiveness": 2.0105435848236084, + "time": 26410166 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 4.05605936050415, + "time": 26410168 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 6.150233268737793, + "time": 26410170 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 8.136828422546387, + "time": 26410172 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowOuter::Paint", + "line": 2856 + } + ], + "responsiveness": -0.0030410944018512964, + "time": 26410174 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowOuter::Paint", + "line": 2856 + } + ], + "responsiveness": 1.9979989528656006, + "time": 26410176 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowOuter::Paint", + "line": 2856 + } + ], + "responsiveness": 4.012343883514404, + "time": 26410178 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowOuter::Paint", + "line": 2856 + } + ], + "responsiveness": 5.999318599700928, + "time": 26410180 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowInner::Paint", + "line": 2942 + } + ], + "responsiveness": 9.000879287719727, + "time": 26410184 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowInner::Paint", + "line": 2942 + } + ], + "responsiveness": 11.018264770507812, + "time": 26410186 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayBoxShadowInner::Paint", + "line": 2942 + } + ], + "responsiveness": 13.020065307617188, + "time": 26410188 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "image::imgFrame::Draw", + "line": 486 + }, + { + "location": "gfxUtils::DrawPixelSnapped", + "line": 511 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 16.021625518798828, + "time": 26410190 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsCSSRendering::PaintBackground", + "line": 1350 + }, + { + "location": "gfxContext::Fill", + "line": 357 + } + ], + "responsiveness": 19.0235652923584, + "time": 26410194 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + } + ], + "responsiveness": 21.266752243041992, + "time": 26410196 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + } + ], + "responsiveness": 23.02716636657715, + "time": 26410198 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + } + ], + "responsiveness": 25.039230346679688, + "time": 26410200 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + } + ], + "responsiveness": 27.03190803527832, + "time": 26410202 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 1.3722938299179077, + "time": 26410204 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 3.357368230819702, + "time": 26410206 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 5.374373912811279, + "time": 26410208 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 358 + } + ], + "responsiveness": 7.3404412269592285, + "time": 26410210 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + } + ], + "responsiveness": 9.400022506713867, + "time": 26410212 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2096 + }, + { + "location": "WCF__outputMessageFromQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2195)", + "line": 2200 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF_logConsoleAPIMessage (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:1181)", + "line": 1208 + }, + { + "location": "js::RunScript" + }, + { + "location": "Messages.ConsoleGeneric.prototype<.render (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/console-output.js:1272)", + "line": 1324 + }, + { + "location": "js::RunScript" + }, + { + "location": "Messages.Simple.prototype<.render (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/console-output.js:804)", + "line": 818 + } + ], + "responsiveness": 1.0054618120193481, + "time": 26410214 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 3.0144846439361572, + "time": 26410216 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 4.05910062789917, + "time": 26410216 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 6.10005521774292, + "time": 26410218 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 7.142770290374756, + "time": 26410220 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 8.1889066696167, + "time": 26410220 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + } + ], + "responsiveness": 10.190707206726074, + "time": 26410222 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 358 + } + ], + "responsiveness": 1.0575405359268188, + "time": 26410224 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.173762083053589, + "time": 26410226 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.173762083053589, + "time": 26410228 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.230201721191406, + "time": 26410230 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.230201721191406, + "time": 26410234 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.02166779711842537, + "time": 26410236 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0934133529663086, + "time": 26410238 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0934133529663086, + "time": 26410238 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0934133529663086, + "time": 26410240 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0934133529663086, + "time": 26410242 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.28484058380127, + "time": 26410244 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.28484058380127, + "time": 26410246 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26410248 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26410248 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26410250 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26410252 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26410254 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26410254 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0894720554351807, + "time": 26410256 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.992677092552185, + "time": 26410258 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.037432670593262, + "time": 26410260 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.037432670593262, + "time": 26410262 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.037432670593262, + "time": 26410264 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.037432670593262, + "time": 26410266 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.059821367263794, + "time": 26410268 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.059821367263794, + "time": 26410270 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.059821367263794, + "time": 26410272 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.059821367263794, + "time": 26410274 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.25352954864502, + "time": 26410276 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.25352954864502, + "time": 26410278 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0928932428359985, + "time": 26410280 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0928932428359985, + "time": 26410282 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0928932428359985, + "time": 26410284 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0928932428359985, + "time": 26410286 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0928932428359985, + "time": 26410286 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0928932428359985, + "time": 26410288 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0928932428359985, + "time": 26410290 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26410292 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0566799640655518, + "time": 26410294 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0566799640655518, + "time": 26410296 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0566799640655518, + "time": 26410296 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0566799640655518, + "time": 26410298 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.013684924691915512, + "time": 26410300 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9679681062698364, + "time": 26410302 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9679681062698364, + "time": 26410304 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9679681062698364, + "time": 26410306 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9679681062698364, + "time": 26410308 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.022686958312988, + "time": 26410310 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0305508375167847, + "time": 26410312 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.133467435836792, + "time": 26410314 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.133467435836792, + "time": 26410316 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.2910237312316895, + "time": 26410318 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.2910237312316895, + "time": 26410320 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.2910237312316895, + "time": 26410322 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1073384284973145, + "time": 26410324 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.3393619060516357, + "time": 26410326 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.3393619060516357, + "time": 26410328 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.3393619060516357, + "time": 26410328 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.3393619060516357, + "time": 26410332 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.3393619060516357, + "time": 26410332 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0837700366973877, + "time": 26410334 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.111799716949463, + "time": 26410338 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.111799716949463, + "time": 26410338 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.103236198425293, + "time": 26410342 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.103236198425293, + "time": 26410342 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "g.Pb (https://s.ytimg.com/yts/jsbin/www-embed-player-vflOf2voo/www-embed-player.js:284)", + "line": 284 + } + ], + "responsiveness": 0.011404103599488735, + "time": 26410344 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "g.Pb (https://s.ytimg.com/yts/jsbin/www-embed-player-vflOf2voo/www-embed-player.js:284)", + "line": 284 + } + ], + "responsiveness": 2.013204336166382, + "time": 26410346 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "g.Pb (https://s.ytimg.com/yts/jsbin/www-embed-player-vflOf2voo/www-embed-player.js:284)", + "line": 284 + } + ], + "responsiveness": 4.007781982421875, + "time": 26410348 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "g.Ob (https://s.ytimg.com/yts/jsbin/www-embed-player-vflB0IoHq/www-embed-player.js:284)", + "line": 284 + } + ], + "responsiveness": 6.0232672691345215, + "time": 26410350 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "g.Ob (https://s.ytimg.com/yts/jsbin/www-embed-player-vflB0IoHq/www-embed-player.js:284)", + "line": 284 + } + ], + "responsiveness": 8.034951210021973, + "time": 26410352 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "g.Ob (https://s.ytimg.com/yts/jsbin/www-embed-player-vflB0IoHq/www-embed-player.js:284)", + "line": 284 + } + ], + "responsiveness": 10.014703750610352, + "time": 26410354 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "g.Ob (https://s.ytimg.com/yts/jsbin/www-embed-player-vflB0IoHq/www-embed-player.js:284)", + "line": 284 + }, + { + "location": "Fk (https://s.ytimg.com/yts/jsbin/www-embed-player-vflB0IoHq/www-embed-player.js:205)", + "line": 205 + }, + { + "location": "yk (https://s.ytimg.com/yts/jsbin/www-embed-player-vflB0IoHq/www-embed-player.js:202)", + "line": 202 + }, + { + "location": "fj (https://s.ytimg.com/yts/jsbin/www-embed-player-vflB0IoHq/www-embed-player.js:149)", + "line": 149 + }, + { + "location": "V (https://s.ytimg.com/yts/jsbin/www-embed-player-vflB0IoHq/www-embed-player.js:87)", + "line": 87 + } + ], + "responsiveness": 1.0138248205184937, + "time": 26410356 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0908923149108887, + "time": 26410360 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0908923149108887, + "time": 26410360 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0908923149108887, + "time": 26410362 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0908923149108887, + "time": 26410364 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0908923149108887, + "time": 26410366 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0908923149108887, + "time": 26410368 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1138007640838623, + "time": 26410368 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1138007640838623, + "time": 26410370 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1138007640838623, + "time": 26410372 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.3771748542785645, + "time": 26410374 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.379734992980957, + "time": 26410376 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.379734992980957, + "time": 26410378 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.940218210220337, + "time": 26410380 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.940218210220337, + "time": 26410382 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.940218210220337, + "time": 26410384 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.940218210220337, + "time": 26410386 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.940218210220337, + "time": 26410388 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9678282737731934, + "time": 26410390 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9678282737731934, + "time": 26410392 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9678282737731934, + "time": 26410394 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.069784164428711, + "time": 26410396 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.069784164428711, + "time": 26410398 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.069784164428711, + "time": 26410400 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03435218334198, + "time": 26410402 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03435218334198, + "time": 26410404 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03435218334198, + "time": 26410404 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03435218334198, + "time": 26410406 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.189146995544434, + "time": 26410408 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.189146995544434, + "time": 26410410 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.189146995544434, + "time": 26410412 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0538790225982666, + "time": 26410414 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0538790225982666, + "time": 26410416 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0538790225982666, + "time": 26410418 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0538790225982666, + "time": 26410420 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0538790225982666, + "time": 26410422 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.07882821559906, + "time": 26410424 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0851900577545166, + "time": 26410426 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0851900577545166, + "time": 26410426 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0851900577545166, + "time": 26410428 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0851900577545166, + "time": 26410430 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0851900577545166, + "time": 26410432 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0073624849319458, + "time": 26410434 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0073624849319458, + "time": 26410434 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.219518184661865, + "time": 26410436 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.219518184661865, + "time": 26410438 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 8.179783821105957, + "time": 26410440 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 10.179682731628418, + "time": 26410442 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 1.0503180027008057, + "time": 26410444 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 3.0570600032806396, + "time": 26410446 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 5.052398204803467, + "time": 26410448 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 7.046595573425293, + "time": 26410450 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 9.169659614562988, + "time": 26410452 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.3132327198982239, + "time": 26410456 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.3522863388061523, + "time": 26410458 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.3522863388061523, + "time": 26410458 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.3522863388061523, + "time": 26410460 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.3522863388061523, + "time": 26410462 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.3522863388061523, + "time": 26410462 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.3522863388061523, + "time": 26410464 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26410466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26410466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26410468 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26410470 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26410472 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0012803077697754, + "time": 26410474 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.454522132873535, + "time": 26410476 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410478 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410480 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410482 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410484 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410486 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410488 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1063380241394043, + "time": 26410490 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26410492 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26410492 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26410494 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26410494 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26410496 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.110038757324219, + "time": 26410498 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0827693939208984, + "time": 26410500 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0827693939208984, + "time": 26410502 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0827693939208984, + "time": 26410504 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0827693939208984, + "time": 26410506 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.113919258117676, + "time": 26410508 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26410510 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26410512 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26410514 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26410516 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26410518 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26410520 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9998996257781982, + "time": 26410522 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9998996257781982, + "time": 26410524 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.002359867095947, + "time": 26410526 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.002359867095947, + "time": 26410528 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.002359867095947, + "time": 26410528 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.002359867095947, + "time": 26410530 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.049797918647527695, + "time": 26410532 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.056920051574707, + "time": 26410534 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.056920051574707, + "time": 26410536 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.116400718688965, + "time": 26410538 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.116400718688965, + "time": 26410538 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.36276912689209, + "time": 26410540 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9358967542648315, + "time": 26410542 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9358967542648315, + "time": 26410544 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9358967542648315, + "time": 26410546 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9358967542648315, + "time": 26410548 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9358967542648315, + "time": 26410550 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9358967542648315, + "time": 26410552 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0313111543655396, + "time": 26410554 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0313111543655396, + "time": 26410556 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.0820488929748535, + "time": 26410558 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.287082195281982, + "time": 26410558 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.287082195281982, + "time": 26410560 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::nsCycleCollector_forgetSkippable", + "line": 3817 + } + ], + "responsiveness": 10.208573341369629, + "time": 26410562 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26410564 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26410566 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26410568 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26410568 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26410570 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26410572 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.040054202079773, + "time": 26410572 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.619881629943848, + "time": 26410574 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1084789037704468, + "time": 26410576 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1084789037704468, + "time": 26410578 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1084789037704468, + "time": 26410580 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1084789037704468, + "time": 26410582 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1084789037704468, + "time": 26410584 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1084789037704468, + "time": 26410586 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0721256732940674, + "time": 26410588 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.03591251373291, + "time": 26410590 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.03591251373291, + "time": 26410592 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.03591251373291, + "time": 26410594 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.03591251373291, + "time": 26410596 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0221878290176392, + "time": 26410598 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0221878290176392, + "time": 26410598 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0221878290176392, + "time": 26410600 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0221878290176392, + "time": 26410602 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0221878290176392, + "time": 26410604 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.335538864135742, + "time": 26410606 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0837700366973877, + "time": 26410608 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0837700366973877, + "time": 26410610 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0837700366973877, + "time": 26410612 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0837700366973877, + "time": 26410614 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0837700366973877, + "time": 26410616 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0837700366973877, + "time": 26410618 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0727460384368896, + "time": 26410620 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0727460384368896, + "time": 26410622 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.1204423904418945, + "time": 26410624 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.1204423904418945, + "time": 26410626 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.1204423904418945, + "time": 26410628 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.1204423904418945, + "time": 26410628 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.1204423904418945, + "time": 26410630 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.044755697250366, + "time": 26410632 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.044755697250366, + "time": 26410634 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.044755697250366, + "time": 26410636 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.219177722930908, + "time": 26410638 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.219177722930908, + "time": 26410638 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0, + "time": 26410640 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.040194034576416, + "time": 26410642 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.040194034576416, + "time": 26410644 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.040194034576416, + "time": 26410644 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.040194034576416, + "time": 26410646 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.040194034576416, + "time": 26410648 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "nsLayoutUtils::GetFrameForPoint", + "line": 2422 + }, + { + "location": "nsLayoutUtils::GetFramesForArea", + "line": 2435 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 9.368090629577637, + "time": 26410650 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (http://barcode.oberhofer.dev/)", + "line": 8360 + } + ], + "responsiveness": 0.015965744853019714, + "time": 26410652 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2293623685836792, + "time": 26410654 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2293623685836792, + "time": 26410654 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2293623685836792, + "time": 26410656 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + } + ], + "responsiveness": 5.497158050537109, + "time": 26410658 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 6.610198497772217, + "time": 26410658 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 8.697149276733398, + "time": 26410660 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 0.0038013679441064596, + "time": 26410662 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 1.9964784383773804, + "time": 26410664 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 4.116501331329346, + "time": 26410666 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 5.26071310043335, + "time": 26410668 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 7.349184513092041, + "time": 26410670 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + } + ], + "responsiveness": 9.382535934448242, + "time": 26410672 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsDisplayText::Paint", + "line": 4537 + } + ], + "responsiveness": 11.382055282592773, + "time": 26410674 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + } + ], + "responsiveness": 13.386137008666992, + "time": 26410676 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 1.5015403032302856, + "time": 26410678 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 358 + } + ], + "responsiveness": 3.465327024459839, + "time": 26410680 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + } + ], + "responsiveness": 5.460664749145508, + "time": 26410682 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.478811264038086, + "time": 26410684 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.478811264038086, + "time": 26410686 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0814892053604126, + "time": 26410688 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.02170729637146, + "time": 26410690 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.02170729637146, + "time": 26410692 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.02170729637146, + "time": 26410694 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.02170729637146, + "time": 26410694 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.02170729637146, + "time": 26410696 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.02170729637146, + "time": 26410698 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0544995069503784, + "time": 26410700 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0544995069503784, + "time": 26410702 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0544995069503784, + "time": 26410704 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0544995069503784, + "time": 26410706 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.113779067993164, + "time": 26410708 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.113779067993164, + "time": 26410710 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.028409957885742, + "time": 26410712 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.028409957885742, + "time": 26410714 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.028409957885742, + "time": 26410714 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.028409957885742, + "time": 26410716 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.028409957885742, + "time": 26410718 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.000900149345398, + "time": 26410720 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.000900149345398, + "time": 26410722 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.000900149345398, + "time": 26410724 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.000900149345398, + "time": 26410726 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.000900149345398, + "time": 26410726 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.000900149345398, + "time": 26410728 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.000900149345398, + "time": 26410730 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1073384284973145, + "time": 26410732 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1073384284973145, + "time": 26410734 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1073384284973145, + "time": 26410736 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.200791358947754, + "time": 26410738 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.398602485656738, + "time": 26410738 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.398602485656738, + "time": 26410740 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.398602485656738, + "time": 26410742 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26410744 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26410746 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26410748 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26410748 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26410750 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.084530234336853, + "time": 26410752 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.050938330590724945, + "time": 26410754 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0546393394470215, + "time": 26410756 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0546393394470215, + "time": 26410756 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0546393394470215, + "time": 26410758 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0546393394470215, + "time": 26410760 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0546393394470215, + "time": 26410762 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0546393394470215, + "time": 26410764 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0556398630142212, + "time": 26410766 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "f (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:815)", + "line": 821 + }, + { + "location": "Z (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:915)", + "line": 929 + }, + { + "location": "js::RunScript" + }, + { + "location": "G (https://ssl.gstatic.com/accounts/o/682094929-postmessagerelay.js:6)", + "line": 6 + }, + { + "location": "E (https://ssl.gstatic.com/accounts/o/682094929-postmessagerelay.js:6)", + "line": 6 + }, + { + "location": "D.prototype.evaluate (https://ssl.gstatic.com/accounts/o/682094929-postmessagerelay.js:4)", + "line": 4 + }, + { + "location": "EnterJIT" + }, + { + "location": "D.prototype.evaluate (https://ssl.gstatic.com/accounts/o/682094929-postmessagerelay.js:4)", + "line": 5 + }, + { + "location": "js::RunScript" + }, + { + "location": "C (https://ssl.gstatic.com/accounts/o/682094929-postmessagerelay.js:3)", + "line": 3 + } + ], + "responsiveness": 3.015625238418579, + "time": 26410768 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "c (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:109)", + "line": 109 + }, + { + "location": "af (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:30)", + "line": 30 + } + ], + "responsiveness": 4.992336273193359, + "time": 26410770 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "c (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:109)", + "line": 110 + }, + { + "location": "g (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:118)", + "line": 119 + }, + { + "location": "js::RunScript" + }, + { + "location": "_.T resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2095 + }, + { + "location": "EnterJIT" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 2.0204269886016846, + "time": 26410952 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.06974458694458, + "time": 26410954 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.06974458694458, + "time": 26410956 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.06974458694458, + "time": 26410956 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.06974458694458, + "time": 26410958 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 10.2515287399292, + "time": 26410960 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 1.003180980682373, + "time": 26410962 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1083784103393555, + "time": 26410964 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.241946220397949, + "time": 26410966 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.241946220397949, + "time": 26410966 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.241946220397949, + "time": 26410968 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.241946220397949, + "time": 26410970 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9615057706832886, + "time": 26410972 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9615057706832886, + "time": 26410974 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.033911228179932, + "time": 26410976 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.033911228179932, + "time": 26410978 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.033911228179932, + "time": 26410980 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410982 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410984 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410984 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410986 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410988 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410990 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1027767658233643, + "time": 26410992 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.059821367263794, + "time": 26410994 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.059821367263794, + "time": 26410996 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.059821367263794, + "time": 26410998 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.065982818603516, + "time": 26411000 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.114540100097656, + "time": 26411002 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.114540100097656, + "time": 26411004 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0500776767730713, + "time": 26411006 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0500776767730713, + "time": 26411008 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0500776767730713, + "time": 26411010 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0500776767730713, + "time": 26411012 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0500776767730713, + "time": 26411014 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9982392191886902, + "time": 26411016 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9982392191886902, + "time": 26411018 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9982392191886902, + "time": 26411020 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9982392191886902, + "time": 26411022 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9982392191886902, + "time": 26411022 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.019265174865723, + "time": 26411024 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0301706790924072, + "time": 26411026 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0301706790924072, + "time": 26411028 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0301706790924072, + "time": 26411030 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0301706790924072, + "time": 26411032 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0301706790924072, + "time": 26411034 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0301706790924072, + "time": 26411034 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0301706790924072, + "time": 26411036 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0301706790924072, + "time": 26411038 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.069464683532715, + "time": 26411040 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.1012959480285645, + "time": 26411042 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.1012959480285645, + "time": 26411044 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.1012959480285645, + "time": 26411046 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.1012959480285645, + "time": 26411048 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1160815954208374, + "time": 26411050 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1160815954208374, + "time": 26411050 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1160815954208374, + "time": 26411052 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1160815954208374, + "time": 26411054 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1160815954208374, + "time": 26411056 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.323995590209961, + "time": 26411058 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0674240589141846, + "time": 26411060 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0674240589141846, + "time": 26411062 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.067983627319336, + "time": 26411064 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.067983627319336, + "time": 26411066 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.067983627319336, + "time": 26411068 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.067983627319336, + "time": 26411070 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0811090469360352, + "time": 26411070 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.093933343887329, + "time": 26411072 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.093933343887329, + "time": 26411074 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.093933343887329, + "time": 26411076 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.093933343887329, + "time": 26411076 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.093933343887329, + "time": 26411078 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.093933343887329, + "time": 26411080 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0647631883621216, + "time": 26411082 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0647631883621216, + "time": 26411084 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0647631883621216, + "time": 26411086 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0647631883621216, + "time": 26411088 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0647631883621216, + "time": 26411090 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.3081693649292, + "time": 26411092 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.082249402999878, + "time": 26411094 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.082249402999878, + "time": 26411094 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.082249402999878, + "time": 26411096 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.082249402999878, + "time": 26411096 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.082249402999878, + "time": 26411098 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.082249402999878, + "time": 26411100 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.02432875521481037, + "time": 26411102 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2411465644836426, + "time": 26411104 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2411465644836426, + "time": 26411106 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.407686233520508, + "time": 26411108 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.407686233520508, + "time": 26411110 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.407686233520508, + "time": 26411112 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.407686233520508, + "time": 26411114 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.11874258518219, + "time": 26411116 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.11874258518219, + "time": 26411118 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.11874258518219, + "time": 26411120 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.11874258518219, + "time": 26411122 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.320954322814941, + "time": 26411124 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9670680165290833, + "time": 26411126 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9670680165290833, + "time": 26411128 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9670680165290833, + "time": 26411128 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9670680165290833, + "time": 26411130 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9670680165290833, + "time": 26411132 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9670680165290833, + "time": 26411134 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9670680165290833, + "time": 26411136 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.097975015640259, + "time": 26411138 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.104336738586426, + "time": 26411140 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.104336738586426, + "time": 26411140 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.104336738586426, + "time": 26411142 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.104336738586426, + "time": 26411144 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.104336738586426, + "time": 26411146 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0457563400268555, + "time": 26411148 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0457563400268555, + "time": 26411150 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0457563400268555, + "time": 26411152 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0457563400268555, + "time": 26411152 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0457563400268555, + "time": 26411154 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.247207641601562, + "time": 26411156 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.247207641601562, + "time": 26411158 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0921330451965332, + "time": 26411160 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0921330451965332, + "time": 26411160 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0921330451965332, + "time": 26411162 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0921330451965332, + "time": 26411164 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0921330451965332, + "time": 26411164 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0921330451965332, + "time": 26411166 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0921330451965332, + "time": 26411168 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9811330437660217, + "time": 26411170 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9811330437660217, + "time": 26411172 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.983973503112793, + "time": 26411174 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.983973503112793, + "time": 26411176 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.983973503112793, + "time": 26411178 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.983973503112793, + "time": 26411178 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.104297399520874, + "time": 26411180 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.104297399520874, + "time": 26411182 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.104297399520874, + "time": 26411184 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.104297399520874, + "time": 26411184 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.104297399520874, + "time": 26411186 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.104297399520874, + "time": 26411188 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.04675682634115219, + "time": 26411190 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.074406385421753, + "time": 26411192 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.074406385421753, + "time": 26411196 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.074406385421753, + "time": 26411196 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.074406385421753, + "time": 26411200 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.074406385421753, + "time": 26411200 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.016345882788300514, + "time": 26411202 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0485570430755615, + "time": 26411204 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 3.996758222579956, + "time": 26411206 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 6.013383865356445, + "time": 26411208 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 8.149372100830078, + "time": 26411210 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 10.138248443603516, + "time": 26411212 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 1.0506980419158936, + "time": 26411214 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 3.031970977783203, + "time": 26411216 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 5.0478363037109375, + "time": 26411218 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 6.156695365905762, + "time": 26411220 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.232622146606445, + "time": 26411222 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.22986125946045, + "time": 26411224 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0723658800125122, + "time": 26411226 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0723658800125122, + "time": 26411228 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0723658800125122, + "time": 26411228 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0723658800125122, + "time": 26411230 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0723658800125122, + "time": 26411232 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0723658800125122, + "time": 26411234 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0723658800125122, + "time": 26411236 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.036012649536133, + "time": 26411238 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.107758045196533, + "time": 26411240 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.107758045196533, + "time": 26411240 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.107758045196533, + "time": 26411242 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.107758045196533, + "time": 26411244 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.107758045196533, + "time": 26411244 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0100234746932983, + "time": 26411246 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0100234746932983, + "time": 26411248 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0100234746932983, + "time": 26411250 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0100234746932983, + "time": 26411252 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0100234746932983, + "time": 26411254 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.027369849383831024, + "time": 26411256 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.086190700531006, + "time": 26411258 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.086190700531006, + "time": 26411260 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.086190700531006, + "time": 26411262 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.086190700531006, + "time": 26411264 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.086190700531006, + "time": 26411266 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.086190700531006, + "time": 26411268 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.089852213859558, + "time": 26411270 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.089852213859558, + "time": 26411270 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.089852213859558, + "time": 26411272 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.323575496673584, + "time": 26411274 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.323575496673584, + "time": 26411276 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.323575496673584, + "time": 26411278 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0385336875915527, + "time": 26411280 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0385336875915527, + "time": 26411282 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0385336875915527, + "time": 26411282 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0385336875915527, + "time": 26411284 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0385336875915527, + "time": 26411286 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0385336875915527, + "time": 26411288 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.013304787687957287, + "time": 26411290 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080488681793213, + "time": 26411292 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080488681793213, + "time": 26411294 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080488681793213, + "time": 26411296 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080488681793213, + "time": 26411296 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.080488681793213, + "time": 26411298 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.190707206726074, + "time": 26411300 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0959343910217285, + "time": 26411302 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0460360050201416, + "time": 26411304 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0460360050201416, + "time": 26411306 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.077006816864014, + "time": 26411308 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.022546768188477, + "time": 26411310 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.04333559423685074, + "time": 26411312 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1108996868133545, + "time": 26411314 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1108996868133545, + "time": 26411316 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1108996868133545, + "time": 26411318 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1108996868133545, + "time": 26411320 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1108996868133545, + "time": 26411322 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.04561641439795494, + "time": 26411324 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.224800705909729, + "time": 26411324 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.224800705909729, + "time": 26411326 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.224800705909729, + "time": 26411328 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.224800705909729, + "time": 26411330 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "autoSave/autoInterval< (http://localhost:4504/js/dillinger.js:489)", + "line": 491 + }, + { + "location": "saveFile (http://localhost:4504/js/dillinger.js:472)", + "line": 474 + }, + { + "location": "updateUserProfile (http://localhost:4504/js/dillinger.js:155)", + "line": 157 + } + ], + "responsiveness": 9.181063652038574, + "time": 26411332 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "SessionStorageListener.handleEvent (chrome://browser/content/content-sessionStore.js:485)", + "line": 487 + }, + { + "location": "isSessionStorageEvent (chrome://browser/content/content-sessionStore.js:61)", + "line": 62 + } + ], + "responsiveness": 0.1661197692155838, + "time": 26411334 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0329716205596924, + "time": 26411336 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0329716205596924, + "time": 26411338 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.065082550048828, + "time": 26411340 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.111358642578125, + "time": 26411342 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.111358642578125, + "time": 26411344 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9720097780227661, + "time": 26411346 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9720097780227661, + "time": 26411348 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9720097780227661, + "time": 26411348 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9720097780227661, + "time": 26411350 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9720097780227661, + "time": 26411352 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9720097780227661, + "time": 26411354 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03739333152771, + "time": 26411356 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03739333152771, + "time": 26411358 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03739333152771, + "time": 26411360 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03739333152771, + "time": 26411362 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03739333152771, + "time": 26411364 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.0022808206267654896, + "time": 26411366 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0785880088806152, + "time": 26411368 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0785880088806152, + "time": 26411370 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.070404529571533, + "time": 26411372 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.070404529571533, + "time": 26411374 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.076665878295898, + "time": 26411376 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1293864250183105, + "time": 26411378 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1293864250183105, + "time": 26411380 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1293864250183105, + "time": 26411382 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1293864250183105, + "time": 26411384 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1293864250183105, + "time": 26411386 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1293864250183105, + "time": 26411388 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.029930353164673, + "time": 26411390 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.029930353164673, + "time": 26411392 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.029930353164673, + "time": 26411394 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.09653377532959, + "time": 26411396 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.09653377532959, + "time": 26411398 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.113040566444397, + "time": 26411400 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.113040566444397, + "time": 26411402 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.115880966186523, + "time": 26411404 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.122622966766357, + "time": 26411406 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.122622966766357, + "time": 26411408 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.122622966766357, + "time": 26411410 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.122622966766357, + "time": 26411412 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07326602935791, + "time": 26411414 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07326602935791, + "time": 26411416 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07326602935791, + "time": 26411418 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07326602935791, + "time": 26411418 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07326602935791, + "time": 26411420 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07326602935791, + "time": 26411422 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0827693939208984, + "time": 26411424 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0827693939208984, + "time": 26411426 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0827693939208984, + "time": 26411428 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0827693939208984, + "time": 26411428 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0827693939208984, + "time": 26411430 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0827693939208984, + "time": 26411432 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.002180576324463, + "time": 26411434 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.002180576324463, + "time": 26411436 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.002180576324463, + "time": 26411438 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.175081729888916, + "time": 26411440 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.175081729888916, + "time": 26411442 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.175081729888916, + "time": 26411444 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0884714126586914, + "time": 26411446 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0884714126586914, + "time": 26411448 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0884714126586914, + "time": 26411448 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0884714126586914, + "time": 26411450 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0884714126586914, + "time": 26411452 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0884714126586914, + "time": 26411454 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.0528390146791935, + "time": 26411456 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07934832572937, + "time": 26411458 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07934832572937, + "time": 26411458 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07934832572937, + "time": 26411460 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07934832572937, + "time": 26411462 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07934832572937, + "time": 26411462 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07934832572937, + "time": 26411464 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07934832572937, + "time": 26411464 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9701091051101685, + "time": 26411466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9701091051101685, + "time": 26411468 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9701091051101685, + "time": 26411470 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9701091051101685, + "time": 26411472 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.111739158630371, + "time": 26411474 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.111739158630371, + "time": 26411476 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.111739158630371, + "time": 26411476 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051598310470581, + "time": 26411480 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051598310470581, + "time": 26411482 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051598310470581, + "time": 26411482 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051598310470581, + "time": 26411484 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051598310470581, + "time": 26411486 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.051598310470581, + "time": 26411488 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.101016044616699, + "time": 26411490 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.101016044616699, + "time": 26411492 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.101016044616699, + "time": 26411494 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.101016044616699, + "time": 26411496 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.101016044616699, + "time": 26411498 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.101016044616699, + "time": 26411500 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07934832572937, + "time": 26411502 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.07934832572937, + "time": 26411504 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.055198669433594, + "time": 26411506 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.09349250793457, + "time": 26411508 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.09349250793457, + "time": 26411508 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.045376181602478, + "time": 26411510 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.045376181602478, + "time": 26411512 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.045376181602478, + "time": 26411514 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.045376181602478, + "time": 26411516 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.045376181602478, + "time": 26411516 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.045376181602478, + "time": 26411518 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": ".onMsg (https://slack.global.ssl.fastly.net/24420/js/rollup-secondary_required_1409187464.https.gz.js:3772)", + "line": 3773 + }, + { + "location": ".handleMsg (https://slack.global.ssl.fastly.net/24420/js/rollup-secondary_required_1409187464.https.gz.js:3774)", + "line": 3784 + }, + { + "location": "TS.dir (https://slack.global.ssl.fastly.net/24420/js/rollup-core_required_1409187438.https.gz.js:8376)", + "line": 8377 + }, + { + "location": ".inArray (https://slack.global.ssl.fastly.net/24420/js/rollup-secondary_required_1409187464.https.gz.js:6608)", + "line": 6608 + } + ], + "responsiveness": 0.02280820719897747, + "time": 26411520 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 2.041714668273926, + "time": 26411522 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 3.156655788421631, + "time": 26411524 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 4.2689361572265625, + "time": 26411524 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 5.380075931549072, + "time": 26411526 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 6.490075588226318, + "time": 26411528 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 7.599694728851318, + "time": 26411528 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 9.60073471069336, + "time": 26411530 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 0.015205471776425838, + "time": 26411532 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 1.1552356481552124, + "time": 26411534 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 2.263714551925659, + "time": 26411534 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 3.3725736141204834, + "time": 26411536 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.521106719970703, + "time": 26411538 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.521106719970703, + "time": 26411540 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.563861846923828, + "time": 26411542 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0830097198486328, + "time": 26411544 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0830097198486328, + "time": 26411546 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0830097198486328, + "time": 26411548 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0830097198486328, + "time": 26411550 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0830097198486328, + "time": 26411552 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0830097198486328, + "time": 26411554 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0742665529251099, + "time": 26411554 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0756866931915283, + "time": 26411556 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0756866931915283, + "time": 26411560 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0756866931915283, + "time": 26411560 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0756866931915283, + "time": 26411562 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0756866931915283, + "time": 26411564 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0499378442764282, + "time": 26411566 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0499378442764282, + "time": 26411568 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0499378442764282, + "time": 26411570 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0499378442764282, + "time": 26411572 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.171420097351074, + "time": 26411574 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.193748474121094, + "time": 26411576 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1168419122695923, + "time": 26411578 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1168419122695923, + "time": 26411578 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1168419122695923, + "time": 26411580 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1168419122695923, + "time": 26411582 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1168419122695923, + "time": 26411584 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1168419122695923, + "time": 26411586 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0347323417663574, + "time": 26411588 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033871650695801, + "time": 26411590 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033871650695801, + "time": 26411592 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033871650695801, + "time": 26411592 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033871650695801, + "time": 26411594 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033871650695801, + "time": 26411596 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.033871650695801, + "time": 26411598 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.102156400680542, + "time": 26411600 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.102156400680542, + "time": 26411602 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.102156400680542, + "time": 26411602 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.208914279937744, + "time": 26411604 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.20919418334961, + "time": 26411606 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.20919418334961, + "time": 26411608 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0820090770721436, + "time": 26411610 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0820090770721436, + "time": 26411612 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0820090770721436, + "time": 26411614 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0820090770721436, + "time": 26411616 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0820090770721436, + "time": 26411618 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0820090770721436, + "time": 26411620 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0778276920318604, + "time": 26411622 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.076967239379883, + "time": 26411624 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.076967239379883, + "time": 26411626 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.076967239379883, + "time": 26411628 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.076967239379883, + "time": 26411630 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.076967239379883, + "time": 26411632 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.107718586921692, + "time": 26411632 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.107718586921692, + "time": 26411634 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.107718586921692, + "time": 26411636 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.107718586921692, + "time": 26411638 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + } + ], + "responsiveness": 8.151653289794922, + "time": 26411640 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.224159240722656, + "time": 26411642 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0704652070999146, + "time": 26411644 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0704652070999146, + "time": 26411646 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0704652070999146, + "time": 26411648 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0704652070999146, + "time": 26411648 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0704652070999146, + "time": 26411650 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0704652070999146, + "time": 26411650 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0704652070999146, + "time": 26411652 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0195268392562866, + "time": 26411654 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0195268392562866, + "time": 26411654 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.2522101402282715, + "time": 26411656 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.2522101402282715, + "time": 26411658 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.2522101402282715, + "time": 26411660 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.2522101402282715, + "time": 26411660 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.2522101402282715, + "time": 26411662 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.2522101402282715, + "time": 26411662 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9788522124290466, + "time": 26411664 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9788522124290466, + "time": 26411666 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9788522124290466, + "time": 26411668 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9788522124290466, + "time": 26411670 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9788522124290466, + "time": 26411672 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.135586738586426, + "time": 26411674 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0362528562545776, + "time": 26411676 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0362528562545776, + "time": 26411678 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0362528562545776, + "time": 26411680 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0362528562545776, + "time": 26411682 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0362528562545776, + "time": 26411682 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0362528562545776, + "time": 26411684 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26411686 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0951740741729736, + "time": 26411688 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.1261444091796875, + "time": 26411690 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.1261444091796875, + "time": 26411692 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.1261444091796875, + "time": 26411694 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.1261444091796875, + "time": 26411696 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0807288885116577, + "time": 26411698 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0807288885116577, + "time": 26411700 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0807288885116577, + "time": 26411702 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0807288885116577, + "time": 26411704 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0807288885116577, + "time": 26411706 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.013304787687957287, + "time": 26411708 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.202372670173645, + "time": 26411708 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.202372670173645, + "time": 26411710 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.202372670173645, + "time": 26411712 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.202372670173645, + "time": 26411714 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.202372670173645, + "time": 26411716 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.202372670173645, + "time": 26411718 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.202372670173645, + "time": 26411718 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0778276920318604, + "time": 26411722 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.085710048675537, + "time": 26411724 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.085710048675537, + "time": 26411724 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.085710048675537, + "time": 26411726 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.085710048675537, + "time": 26411728 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.041054774075746536, + "time": 26411730 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.118502378463745, + "time": 26411732 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.118502378463745, + "time": 26411734 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.118502378463745, + "time": 26411736 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.118502378463745, + "time": 26411738 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.124943733215332, + "time": 26411740 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.070085048675537, + "time": 26411742 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.070085048675537, + "time": 26411744 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.070085048675537, + "time": 26411746 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.070085048675537, + "time": 26411748 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.070085048675537, + "time": 26411748 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.070085048675537, + "time": 26411750 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.070085048675537, + "time": 26411752 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0534989833831787, + "time": 26411754 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.193668842315674, + "time": 26411756 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.193668842315674, + "time": 26411758 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.193668842315674, + "time": 26411760 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.193668842315674, + "time": 26411762 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0058419704437256, + "time": 26411764 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::nsCycleCollector_forgetSkippable", + "line": 3817 + } + ], + "responsiveness": 2.988635540008545, + "time": 26411766 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 12 + }, + { + "location": "nb (https://apis.google.com/js/plusone.js:7)", + "line": 7 + } + ], + "responsiveness": 4.982832908630371, + "time": 26411768 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + } + ], + "responsiveness": 6.980832099914551, + "time": 26411770 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 9.093252182006836, + "time": 26411772 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 0.006842462345957756, + "time": 26411774 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)" + } + ], + "responsiveness": 2.029930353164673, + "time": 26411776 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 4.13740873336792, + "time": 26411778 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 6.139209270477295, + "time": 26411780 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + } + ], + "responsiveness": 8.122383117675781, + "time": 26411782 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 10.142809867858887, + "time": 26411784 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 20 + } + ], + "responsiveness": 12.249908447265625, + "time": 26411786 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 14.358146667480469, + "time": 26411788 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "Zd[K].D (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "be (https://apis.google.com/js/plusone.js:44)", + "line": 44 + }, + { + "location": "Tb (https://apis.google.com/js/plusone.js:11)", + "line": 11 + }, + { + "location": "Sb (https://apis.google.com/js/plusone.js:11)", + "line": 13 + }, + { + "location": "Sb/w (https://apis.google.com/js/plusone.js:12)", + "line": 12 + }, + { + "location": "_.Fa (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:21)", + "line": 21 + }, + { + "location": "EnterJIT" + }, + { + "location": "Ea (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:20)", + "line": 21 + }, + { + "location": "Ba (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:18)", + "line": 18 + } + ], + "responsiveness": 16.46524429321289, + "time": 26411790 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "ClickEventHandler.handleEvent (chrome://global/content/browser-content.js:208)", + "line": 209 + } + ], + "responsiveness": 1.2996876239776611, + "time": 26411792 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.3950016498565674, + "time": 26411794 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.3950016498565674, + "time": 26411796 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.3950016498565674, + "time": 26411798 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.3950016498565674, + "time": 26411800 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.3950016498565674, + "time": 26411802 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.973670244216919, + "time": 26411804 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.973670244216919, + "time": 26411806 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 5.989435195922852, + "time": 26411808 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 7.978691101074219, + "time": 26411810 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 9.970988273620605, + "time": 26411812 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 0.008363009430468082, + "time": 26411814 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 2.1264851093292236, + "time": 26411816 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 4.263994216918945, + "time": 26411818 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 5.370952606201172, + "time": 26411818 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 7.3746538162231445, + "time": 26411820 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "gfx::DrawThebesLayer", + "line": 3756 + }, + { + "location": "nsCSSRendering::PaintBackground", + "line": 1350 + } + ], + "responsiveness": 9.3551664352417, + "time": 26411822 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + } + ], + "responsiveness": 11.378253936767578, + "time": 26411824 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 1.0183864831924438, + "time": 26411826 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "PreviewController.prototype.handleEvent (resource://app/modules/WindowsPreviewPerTab.jsm:357)", + "line": 358 + } + ], + "responsiveness": 3.011823892593384, + "time": 26411828 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "layout::Flush (Flush_Style)", + "line": 3969 + }, + { + "location": "CSS::ProcessRestyles", + "line": 137 + } + ], + "responsiveness": 5.017805576324463, + "time": 26411830 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.996037483215332, + "time": 26411832 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.996037483215332, + "time": 26411834 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.996037483215332, + "time": 26411836 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.045896291732788, + "time": 26411838 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.0229878425598145, + "time": 26411840 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.0229878425598145, + "time": 26411842 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.0229878425598145, + "time": 26411844 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.0229878425598145, + "time": 26411846 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.0229878425598145, + "time": 26411848 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0785880088806152, + "time": 26411850 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0785880088806152, + "time": 26411852 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0785880088806152, + "time": 26411854 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.048255920410156, + "time": 26411856 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.048255920410156, + "time": 26411858 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.053359031677246, + "time": 26411860 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.053359031677246, + "time": 26411862 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.053359031677246, + "time": 26411864 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.053359031677246, + "time": 26411866 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.08945083618164, + "time": 26411868 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.08945083618164, + "time": 26411870 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.019286632537842, + "time": 26411872 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.019286632537842, + "time": 26411874 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.019286632537842, + "time": 26411876 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.019286632537842, + "time": 26411878 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.019286632537842, + "time": 26411880 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.019286632537842, + "time": 26411880 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.001800298690796, + "time": 26411882 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.995997905731201, + "time": 26411884 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.995997905731201, + "time": 26411886 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.995997905731201, + "time": 26411888 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.995997905731201, + "time": 26411890 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0335919857025146, + "time": 26411892 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0335919857025146, + "time": 26411896 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0335919857025146, + "time": 26411896 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0335919857025146, + "time": 26411898 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.098954200744629, + "time": 26411902 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.04675682634115219, + "time": 26411902 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1112797260284424, + "time": 26411906 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1112797260284424, + "time": 26411906 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1112797260284424, + "time": 26411908 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1112797260284424, + "time": 26411910 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1112797260284424, + "time": 26411912 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1112797260284424, + "time": 26411914 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.056540012359619, + "time": 26411916 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.336460590362549, + "time": 26411918 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.336460590362549, + "time": 26411920 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.336460590362549, + "time": 26411922 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.336460590362549, + "time": 26411924 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.969728946685791, + "time": 26411926 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.969728946685791, + "time": 26411928 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.969728946685791, + "time": 26411928 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.969728946685791, + "time": 26411930 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-009.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 8.008341789245605, + "time": 26411932 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-009.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 10.056899070739746, + "time": 26411934 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-009.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 1.0244686603546143, + "time": 26411936 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-009.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 3.0232279300689697, + "time": 26411938 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-009.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 5.025028228759766, + "time": 26411940 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-009.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 7.070164203643799, + "time": 26411942 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + }, + { + "location": "RasterImage::SyncDecode http://barcode.oberhofer.dev/img/stream/image-009.jpg", + "line": 2414 + }, + { + "location": "ImageDecoder::Write", + "line": 90 + } + ], + "responsiveness": 9.070823669433594, + "time": 26411944 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 52 + } + ], + "responsiveness": 11.06920337677002, + "time": 26411946 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 53 + } + ], + "responsiveness": 13.073284149169922, + "time": 26411948 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 53 + } + ], + "responsiveness": 15.078505516052246, + "time": 26411950 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 260 + }, + { + "location": "FrameGrabber.create/that_.grab (http://barcode.oberhofer.dev/js/frame_grabber.js:48)", + "line": 54 + }, + { + "location": "EnterJIT" + }, + { + "location": "CVUtils.computeGray (http://barcode.oberhofer.dev/js/cv_utils.js:657)" + } + ], + "responsiveness": 17.08334732055664, + "time": 26411952 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 19.078685760498047, + "time": 26411954 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 21.124582290649414, + "time": 26411956 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 23.216474533081055, + "time": 26411958 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 25.220935821533203, + "time": 26411960 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 212 + }, + { + "location": "Rasterizer.create/<.rasterize (http://barcode.oberhofer.dev/js/rasterizer.js:32)" + } + ], + "responsiveness": 27.221216201782227, + "time": 26411962 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 29.263309478759766, + "time": 26411964 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 31.288299560546875, + "time": 26411966 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 33.334957122802734, + "time": 26411970 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 35.33181381225586, + "time": 26411972 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 37.374290466308594, + "time": 26411974 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 39.41676330566406, + "time": 26411976 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 41.459617614746094, + "time": 26411978 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 43.464080810546875, + "time": 26411980 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 45.510738372802734, + "time": 26411982 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 209 + }, + { + "location": "ImageWrapper.prototype.zeroBorder (http://barcode.oberhofer.dev/js/image_wrapper.js:235)" + } + ], + "responsiveness": 47.510257720947266, + "time": 26411984 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 49.511295318603516, + "time": 26411986 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 51.512718200683594, + "time": 26411988 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 53.5145149230957, + "time": 26411990 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 55.51593780517578, + "time": 26411992 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 57.517356872558594, + "time": 26411994 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 59.51953887939453, + "time": 26411996 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 61.520198822021484, + "time": 26411998 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 63.52085876464844, + "time": 26412000 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)" + } + ], + "responsiveness": 65.56637573242188, + "time": 26412002 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 222 + }, + { + "location": "extractPatches (http://barcode.oberhofer.dev/js/barcode_locator.js:367)", + "line": 386 + }, + { + "location": "similarMoments (http://barcode.oberhofer.dev/js/barcode_locator.js:315)", + "line": 316 + }, + { + "location": "CVUtils.cluster (http://barcode.oberhofer.dev/js/cv_utils.js:493)", + "line": 520 + }, + { + "location": "addToCluster (http://barcode.oberhofer.dev/js/cv_utils.js:505)", + "line": 510 + }, + { + "location": "updateCenter (http://barcode.oberhofer.dev/js/cluster2.js:17)", + "line": 24 + } + ], + "responsiveness": 67.65788269042969, + "time": 26412004 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 69.66082763671875, + "time": 26412006 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 71.70634460449219, + "time": 26412008 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 73.69027709960938, + "time": 26412010 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 212 + }, + { + "location": "Rasterizer.create/<.rasterize (http://barcode.oberhofer.dev/js/rasterizer.js:32)" + } + ], + "responsiveness": 75.69664001464844, + "time": 26412012 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 77.69425964355469, + "time": 26412014 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 79.70783996582031, + "time": 26412016 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 212 + }, + { + "location": "Rasterizer.create/<.rasterize (http://barcode.oberhofer.dev/js/rasterizer.js:32)" + } + ], + "responsiveness": 81.71420288085938, + "time": 26412018 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 83.69851684570312, + "time": 26412020 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 85.71514129638672, + "time": 26412022 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 87.7169418334961, + "time": 26412024 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 89.71684265136719, + "time": 26412026 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 263 + }, + { + "location": ".locate (http://barcode.oberhofer.dev/js/barcode_locator.js:484)", + "line": 485 + }, + { + "location": "EnterJIT" + }, + { + "location": "findBarcode (http://barcode.oberhofer.dev/js/barcode_locator.js:158)", + "line": 201 + }, + { + "location": "asm.js code :0", + "line": 0 + } + ], + "responsiveness": 91.75969696044922, + "time": 26412028 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "event::nsViewManager::DispatchEvent", + "line": 733 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "st.event.add/y.handle (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "st.event.dispatch (http://barcode.oberhofer.dev/js/vendor/jquery-1.9.0.min.js:2)", + "line": 2 + }, + { + "location": "js::RunScript" + }, + { + "location": "http://barcode.oberhofer.dev/js/main.js:84", + "line": 85 + }, + { + "location": ".start (http://barcode.oberhofer.dev/js/barcode.js:322)", + "line": 324 + }, + { + "location": "start (http://barcode.oberhofer.dev/js/barcode.js:282)", + "line": 284 + }, + { + "location": "drawFrame (http://barcode.oberhofer.dev/js/barcode.js:284)", + "line": 290 + }, + { + "location": "update (http://barcode.oberhofer.dev/js/barcode.js:254)", + "line": 268 + }, + { + "location": "BarcodeDecoder.create/<.decodeFromBoundingBoxes (http://barcode.oberhofer.dev/js/barcode_decoder.js:166)", + "line": 167 + }, + { + "location": "EnterJIT" + }, + { + "location": "BarcodeDecoder.create/<.decodeFromBoundingBoxes (http://barcode.oberhofer.dev/js/barcode_decoder.js:166)", + "line": 170 + }, + { + "location": "decodeFromBoundingBox (http://barcode.oberhofer.dev/js/barcode_decoder.js:55)", + "line": 138 + }, + { + "location": "BarcodeReader.create/that.decodePattern (http://barcode.oberhofer.dev/js/barcode_reader.js:123)", + "line": 128 + }, + { + "location": "Code128Reader.create/that.decode (http://barcode.oberhofer.dev/js/code_128_reader.js:139)", + "line": 140 + }, + { + "location": "Code128Reader.create/that.findStart (http://barcode.oberhofer.dev/js/code_128_reader.js:88)" + } + ], + "responsiveness": 93.7881088256836, + "time": 26412030 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 1.3753348588943481, + "time": 26412032 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 3.3775153160095215, + "time": 26412034 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 4.421751022338867, + "time": 26412034 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + } + ], + "responsiveness": 6.4665069580078125, + "time": 26412036 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "CAL_observe (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/toolkit/webconsole/utils.js:1343)", + "line": 1358 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCA_onConsoleAPICall (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/webconsole.js:1167)", + "line": 1172 + }, + { + "location": "WCA_prepareConsoleMessageForRemote (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/webconsole.js:1316)", + "line": 1323 + }, + { + "location": "js::RunScript" + }, + { + "location": "map (self-hosted:1014)", + "line": 1020 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "map (self-hosted:979)", + "line": 1004 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCA_prepareConsoleMessageForRemote/result.arguments< (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/webconsole.js:1323)", + "line": 1325 + }, + { + "location": "WCA_createValueGrip (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/webconsole.js:392)", + "line": 394 + }, + { + "location": "js::RunScript" + }, + { + "location": "ThreadActor.prototype.createValueGrip (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js -> resource://gre/modules/devtools/server/actors/script.js:1982)", + "line": 1991 + }, + { + "location": "ThreadActor.prototype._stringIsLong (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js -> resource://gre/modules/devtools/server/actors/script.js:2166)", + "line": 2167 + } + ], + "responsiveness": 8.482752799987793, + "time": 26412038 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.02280820719897747, + "time": 26412040 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1981911659240723, + "time": 26412042 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1981911659240723, + "time": 26412042 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1981911659240723, + "time": 26412044 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1981911659240723, + "time": 26412046 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.372512817382812, + "time": 26412048 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.372512817382812, + "time": 26412050 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1103795766830444, + "time": 26412054 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1103795766830444, + "time": 26412054 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1103795766830444, + "time": 26412056 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1103795766830444, + "time": 26412058 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1103795766830444, + "time": 26412060 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1103795766830444, + "time": 26412062 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1103795766830444, + "time": 26412064 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0909925699234009, + "time": 26412064 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0909925699234009, + "time": 26412066 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0909925699234009, + "time": 26412066 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0909925699234009, + "time": 26412068 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0909925699234009, + "time": 26412070 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0909925699234009, + "time": 26412072 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.030930995941162, + "time": 26412074 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.030930995941162, + "time": 26412076 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.030930995941162, + "time": 26412078 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.030930995941162, + "time": 26412080 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.030930995941162, + "time": 26412080 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.030930995941162, + "time": 26412082 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.039914362132549286, + "time": 26412084 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1432111263275146, + "time": 26412086 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1432111263275146, + "time": 26412088 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.332558631896973, + "time": 26412090 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2096 + }, + { + "location": "js::RunScript" + }, + { + "location": "WCF__outputMessageFromQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2195)", + "line": 2213 + }, + { + "location": "WCF__filterRepeatedMessage (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:1099)", + "line": 1132 + }, + { + "location": "WCF_mergeFilteredMessageNode (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:1074)", + "line": 1086 + } + ], + "responsiveness": 7.331317901611328, + "time": 26412092 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 9.33083724975586, + "time": 26412094 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 0.01102396659553051, + "time": 26412096 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 1.1016364097595215, + "time": 26412098 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "js::RunScript" + }, + { + "location": "EnterJIT" + }, + { + "location": "WCF__flushMessageQueue (resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/webconsole/webconsole.js:2053)", + "line": 2105 + }, + { + "location": "layout::Flush (Flush_Layout)", + "line": 3969 + }, + { + "location": "layout::DoReflow (chrome://browser/content/devtools/webconsole.xul)", + "line": 8360 + } + ], + "responsiveness": 3.168060064315796, + "time": 26412100 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.288463115692139, + "time": 26412102 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.288463115692139, + "time": 26412104 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.288463115692139, + "time": 26412104 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.288463115692139, + "time": 26412106 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 1.9542832374572754, + "time": 26412108 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 3.93023419380188, + "time": 26412110 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 5.955223083496094, + "time": 26412112 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 7.9524617195129395, + "time": 26412114 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 9.037371635437012, + "time": 26412116 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + } + ], + "responsiveness": 0.007222598884254694, + "time": 26412118 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.230122685432434, + "time": 26412118 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.230122685432434, + "time": 26412120 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.230122685432434, + "time": 26412122 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.249448776245117, + "time": 26412124 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.249448776245117, + "time": 26412126 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.249448776245117, + "time": 26412128 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9989994764328003, + "time": 26412130 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.117501735687256, + "time": 26412132 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.117501735687256, + "time": 26412134 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.117501735687256, + "time": 26412136 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.117501735687256, + "time": 26412138 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.31881332397461, + "time": 26412140 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.132427453994751, + "time": 26412142 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.132427453994751, + "time": 26412142 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.132427453994751, + "time": 26412144 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.132427453994751, + "time": 26412146 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.132427453994751, + "time": 26412148 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.132427453994751, + "time": 26412148 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.132427453994751, + "time": 26412150 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0139646530151367, + "time": 26412152 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.991816520690918, + "time": 26412154 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.991816520690918, + "time": 26412156 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.991816520690918, + "time": 26412158 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.991816520690918, + "time": 26412160 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.991816520690918, + "time": 26412162 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1388897895812988, + "time": 26412164 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1388897895812988, + "time": 26412166 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1388897895812988, + "time": 26412166 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "CC::nsCycleCollector_forgetSkippable", + "line": 3817 + } + ], + "responsiveness": 6.162777423858643, + "time": 26412168 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.2637939453125, + "time": 26412170 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.330977439880371, + "time": 26412172 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412174 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412176 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412178 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412178 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412180 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412182 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412184 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0496976375579834, + "time": 26412186 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0496976375579834, + "time": 26412186 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.241706371307373, + "time": 26412188 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.241706371307373, + "time": 26412190 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.241706371307373, + "time": 26412192 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.241706371307373, + "time": 26412194 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.241706371307373, + "time": 26412194 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.112280249595642, + "time": 26412196 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.112280249595642, + "time": 26412198 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.112280249595642, + "time": 26412200 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.112280249595642, + "time": 26412202 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.112280249595642, + "time": 26412204 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.207432746887207, + "time": 26412206 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0594412088394165, + "time": 26412208 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0594412088394165, + "time": 26412208 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0594412088394165, + "time": 26412210 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0594412088394165, + "time": 26412212 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0594412088394165, + "time": 26412212 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0594412088394165, + "time": 26412214 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0594412088394165, + "time": 26412214 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0594412088394165, + "time": 26412216 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0035611391067505, + "time": 26412218 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0035611391067505, + "time": 26412220 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0035611391067505, + "time": 26412222 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.295065402984619, + "time": 26412224 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.295065402984619, + "time": 26412226 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.295065402984619, + "time": 26412226 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.960225522518158, + "time": 26412228 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.960225522518158, + "time": 26412230 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.996518135070801, + "time": 26412232 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.031390190124512, + "time": 26412234 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.031390190124512, + "time": 26412236 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.017486292868852615, + "time": 26412238 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.112800359725952, + "time": 26412240 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.112800359725952, + "time": 26412242 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.112800359725952, + "time": 26412244 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.112800359725952, + "time": 26412246 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.112800359725952, + "time": 26412248 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.112800359725952, + "time": 26412250 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1050575971603394, + "time": 26412250 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1050575971603394, + "time": 26412252 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.4145283699035645, + "time": 26412254 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.686086177825928, + "time": 26412256 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.686086177825928, + "time": 26412258 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.686086177825928, + "time": 26412260 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.686086177825928, + "time": 26412260 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1141809225082397, + "time": 26412262 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1141809225082397, + "time": 26412264 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1141809225082397, + "time": 26412266 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1141809225082397, + "time": 26412268 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1141809225082397, + "time": 26412270 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.04295545816421509, + "time": 26412272 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2647150754928589, + "time": 26412274 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2647150754928589, + "time": 26412274 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2647150754928589, + "time": 26412276 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2647150754928589, + "time": 26412278 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2647150754928589, + "time": 26412280 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2647150754928589, + "time": 26412282 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9932974576950073, + "time": 26412284 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9932974576950073, + "time": 26412286 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.018185615539551, + "time": 26412288 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.018185615539551, + "time": 26412290 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.018185615539551, + "time": 26412292 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.018185615539551, + "time": 26412294 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1051974296569824, + "time": 26412296 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1051974296569824, + "time": 26412298 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1051974296569824, + "time": 26412300 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.261893272399902, + "time": 26412302 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.261893272399902, + "time": 26412304 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + } + ], + "responsiveness": 0.01064383052289486, + "time": 26412306 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2316431999206543, + "time": 26412306 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2316431999206543, + "time": 26412308 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2316431999206543, + "time": 26412310 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.2316431999206543, + "time": 26412312 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.464506149291992, + "time": 26412314 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.464506149291992, + "time": 26412314 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0115439891815186, + "time": 26412316 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0115439891815186, + "time": 26412318 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.0368123054504395, + "time": 26412320 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.0368123054504395, + "time": 26412322 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.0368123054504395, + "time": 26412324 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.0368123054504395, + "time": 26412326 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0415748357772827, + "time": 26412328 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0415748357772827, + "time": 26412330 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0415748357772827, + "time": 26412330 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.0901713371276855, + "time": 26412332 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.0901713371276855, + "time": 26412334 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.0901713371276855, + "time": 26412336 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 0.015965744853019714, + "time": 26412338 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 2.0101633071899414, + "time": 26412340 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsLayoutUtils::PaintFrame::BuildDisplayList", + "line": 2680 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + }, + { + "location": "ViewportFrame::BuildDisplayList", + "line": 62 + } + ], + "responsiveness": 4.038573265075684, + "time": 26412342 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 6.04189395904541, + "time": 26412344 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::ComputeVisibilityForRoot", + "line": 1038 + } + ], + "responsiveness": 8.035331726074219, + "time": 26412346 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 9.144570350646973, + "time": 26412348 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 11.131546020507812, + "time": 26412350 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "Timer::Fire", + "line": 516 + }, + { + "location": "nsRefreshDriver::Tick", + "line": 1035 + }, + { + "location": "Paint::PresShell::Paint", + "line": 5809 + }, + { + "location": "nsLayoutUtils::PaintFrame", + "line": 2577 + }, + { + "location": "nsDisplayList::PaintRoot", + "line": 1206 + }, + { + "location": "ContainerState::ProcessDisplayItems", + "line": 2402 + } + ], + "responsiveness": 13.155393600463867, + "time": 26412352 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0126843452453613, + "time": 26412354 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0414743423461914, + "time": 26412356 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0414743423461914, + "time": 26412358 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0414743423461914, + "time": 26412360 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0414743423461914, + "time": 26412362 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.0414743423461914, + "time": 26412364 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.101396083831787, + "time": 26412366 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.101396083831787, + "time": 26412368 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.101396083831787, + "time": 26412370 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.074485778808594, + "time": 26412372 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.074485778808594, + "time": 26412374 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0773077011108398, + "time": 26412376 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.065423011779785, + "time": 26412378 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.065423011779785, + "time": 26412380 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.065423011779785, + "time": 26412382 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.065423011779785, + "time": 26412382 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.065423011779785, + "time": 26412384 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9831736087799072, + "time": 26412386 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.9560835361480713, + "time": 26412388 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.9560835361480713, + "time": 26412390 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.9560835361480713, + "time": 26412392 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.9560835361480713, + "time": 26412394 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.019386976957321167, + "time": 26412396 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0390536785125732, + "time": 26412398 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0390536785125732, + "time": 26412400 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0390536785125732, + "time": 26412402 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0390536785125732, + "time": 26412402 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.320433616638184, + "time": 26412404 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.320433616638184, + "time": 26412406 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9343762397766113, + "time": 26412408 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9343762397766113, + "time": 26412410 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9343762397766113, + "time": 26412412 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9343762397766113, + "time": 26412412 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9343762397766113, + "time": 26412414 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9343762397766113, + "time": 26412416 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9343762397766113, + "time": 26412416 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.9343762397766113, + "time": 26412418 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1093790531158447, + "time": 26412420 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.107758045196533, + "time": 26412422 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.107758045196533, + "time": 26412424 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.107758045196533, + "time": 26412426 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.107758045196533, + "time": 26412428 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 4.107758045196533, + "time": 26412430 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0868110656738281, + "time": 26412430 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.082529306411743, + "time": 26412432 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.085089683532715, + "time": 26412434 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.085089683532715, + "time": 26412436 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.166618347167969, + "time": 26412438 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03435218334198, + "time": 26412440 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03435218334198, + "time": 26412442 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03435218334198, + "time": 26412442 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03435218334198, + "time": 26412444 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03435218334198, + "time": 26412446 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03435218334198, + "time": 26412448 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.03435218334198, + "time": 26412450 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0689446926116943, + "time": 26412452 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0689446926116943, + "time": 26412454 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.099154949188232, + "time": 26412456 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.099154949188232, + "time": 26412458 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.099154949188232, + "time": 26412460 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.048277370631694794, + "time": 26412462 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.24152672290802, + "time": 26412464 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.24152672290802, + "time": 26412464 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.24152672290802, + "time": 26412466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.24152672290802, + "time": 26412466 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.24152672290802, + "time": 26412468 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.24152672290802, + "time": 26412470 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.004561641253530979, + "time": 26412472 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.045135974884033, + "time": 26412474 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.045135974884033, + "time": 26412476 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.045135974884033, + "time": 26412476 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.045135974884033, + "time": 26412478 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.045135974884033, + "time": 26412480 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.045135974884033, + "time": 26412484 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1149412393569946, + "time": 26412486 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1149412393569946, + "time": 26412486 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.048976898193359, + "time": 26412488 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.048976898193359, + "time": 26412492 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.048976898193359, + "time": 26412494 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.048976898193359, + "time": 26412494 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.012063980102539, + "time": 26412496 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.012063980102539, + "time": 26412498 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.012063980102539, + "time": 26412500 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.012063980102539, + "time": 26412502 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.012063980102539, + "time": 26412504 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.18842601776123, + "time": 26412506 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0202871561050415, + "time": 26412508 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0202871561050415, + "time": 26412510 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0202871561050415, + "time": 26412510 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0202871561050415, + "time": 26412512 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0202871561050415, + "time": 26412514 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0202871561050415, + "time": 26412516 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0328316688537598, + "time": 26412518 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0328316688537598, + "time": 26412520 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.097254276275635, + "time": 26412522 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.097254276275635, + "time": 26412524 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.097254276275635, + "time": 26412524 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.097254276275635, + "time": 26412526 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.097254276275635, + "time": 26412526 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.000139832496643, + "time": 26412528 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.000139832496643, + "time": 26412530 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.000139832496643, + "time": 26412532 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.069023609161377, + "time": 26412534 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.069023609161377, + "time": 26412536 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.265213966369629, + "time": 26412538 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0856707096099854, + "time": 26412540 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0856707096099854, + "time": 26412542 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0856707096099854, + "time": 26412542 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0856707096099854, + "time": 26412544 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0856707096099854, + "time": 26412546 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0856707096099854, + "time": 26412548 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0856707096099854, + "time": 26412548 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0016604661941528, + "time": 26412550 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0016604661941528, + "time": 26412552 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0016604661941528, + "time": 26412554 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.192808628082275, + "time": 26412556 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.192808628082275, + "time": 26412558 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.192808628082275, + "time": 26412560 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412562 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412562 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412564 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412566 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412568 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0944137573242188, + "time": 26412570 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 10.541193008422852, + "time": 26412572 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0784480571746826, + "time": 26412574 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0784480571746826, + "time": 26412576 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0784480571746826, + "time": 26412576 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0784480571746826, + "time": 26412578 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0784480571746826, + "time": 26412580 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0784480571746826, + "time": 26412582 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1198829412460327, + "time": 26412584 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1198829412460327, + "time": 26412586 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.121582984924316, + "time": 26412588 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.121582984924316, + "time": 26412590 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.121582984924316, + "time": 26412592 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.121582984924316, + "time": 26412592 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.022948145866394, + "time": 26412594 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.022948145866394, + "time": 26412596 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.022948145866394, + "time": 26412596 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.022948145866394, + "time": 26412598 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.022948145866394, + "time": 26412600 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.022948145866394, + "time": 26412602 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.022948145866394, + "time": 26412604 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.051318466663360596, + "time": 26412606 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1166017055511475, + "time": 26412608 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1166017055511475, + "time": 26412608 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1166017055511475, + "time": 26412610 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1166017055511475, + "time": 26412612 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1166017055511475, + "time": 26412614 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.1166017055511475, + "time": 26412616 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0166256427764893, + "time": 26412618 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0166256427764893, + "time": 26412620 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.989055156707764, + "time": 26412622 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.989055156707764, + "time": 26412624 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.989055156707764, + "time": 26412624 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 5.989055156707764, + "time": 26412626 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0880913734436035, + "time": 26412628 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0880913734436035, + "time": 26412630 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0880913734436035, + "time": 26412632 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0880913734436035, + "time": 26412634 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 9.194368362426758, + "time": 26412636 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.050558194518089294, + "time": 26412638 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.107858419418335, + "time": 26412640 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.107858419418335, + "time": 26412642 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.107858419418335, + "time": 26412642 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.107858419418335, + "time": 26412644 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.107858419418335, + "time": 26412646 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.107858419418335, + "time": 26412648 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1073384284973145, + "time": 26412650 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1073384284973145, + "time": 26412652 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.1073384284973145, + "time": 26412654 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.3650102615356445, + "time": 26412656 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.3650102615356445, + "time": 26412658 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.3650102615356445, + "time": 26412660 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0371530055999756, + "time": 26412662 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0371530055999756, + "time": 26412664 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0371530055999756, + "time": 26412664 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0371530055999756, + "time": 26412666 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0371530055999756, + "time": 26412666 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0371530055999756, + "time": 26412668 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.04903764650225639, + "time": 26412670 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.258252739906311, + "time": 26412672 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.258252739906311, + "time": 26412674 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.258252739906311, + "time": 26412676 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.258252739906311, + "time": 26412678 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.258252739906311, + "time": 26412680 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.258252739906311, + "time": 26412682 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0742665529251099, + "time": 26412684 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0742665529251099, + "time": 26412686 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0742665529251099, + "time": 26412688 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.046975612640381, + "time": 26412688 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.046975612640381, + "time": 26412692 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.046975612640381, + "time": 26412694 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.102536678314209, + "time": 26412696 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.102536678314209, + "time": 26412696 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.102536678314209, + "time": 26412700 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.102536678314209, + "time": 26412702 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.102536678314209, + "time": 26412704 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26412706 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26412706 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26412708 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26412710 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26412712 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26412714 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0993555784225464, + "time": 26412716 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0481770038604736, + "time": 26412718 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0481770038604736, + "time": 26412720 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.111839294433594, + "time": 26412722 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.111839294433594, + "time": 26412722 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.111839294433594, + "time": 26412724 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 6.111839294433594, + "time": 26412726 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9603654146194458, + "time": 26412728 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9603654146194458, + "time": 26412730 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9603654146194458, + "time": 26412730 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9603654146194458, + "time": 26412732 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.9603654146194458, + "time": 26412734 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 0.02090752311050892, + "time": 26412736 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0253686904907227, + "time": 26412738 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0253686904907227, + "time": 26412740 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0253686904907227, + "time": 26412742 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0253686904907227, + "time": 26412744 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0253686904907227, + "time": 26412744 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0253686904907227, + "time": 26412746 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 2.0253686904907227, + "time": 26412748 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0419549942016602, + "time": 26412750 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0419549942016602, + "time": 26412750 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0419549942016602, + "time": 26412752 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0419549942016602, + "time": 26412754 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.228060722351074, + "time": 26412756 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 8.228060722351074, + "time": 26412758 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0583008527755737, + "time": 26412760 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0583008527755737, + "time": 26412760 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0583008527755737, + "time": 26412762 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0583008527755737, + "time": 26412764 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0583008527755737, + "time": 26412766 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0583008527755737, + "time": 26412766 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.0583008527755737, + "time": 26412768 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.112280249595642, + "time": 26412770 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1137003898620605, + "time": 26412772 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1137003898620605, + "time": 26412774 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1137003898620605, + "time": 26412776 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1137003898620605, + "time": 26412776 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1137003898620605, + "time": 26412778 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 3.1137003898620605, + "time": 26412780 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.095554232597351, + "time": 26412782 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.095554232597351, + "time": 26412784 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 1.095554232597351, + "time": 26412786 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.012383460998535, + "time": 26412788 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + } + ], + "responsiveness": 7.012383460998535, + "time": 26412790 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "f (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:815)", + "line": 818 + }, + { + "location": "L (https://oauth.googleusercontent.com/gadgets/js/core:rpc:shindig.random:shindig.sha1.js?c=2:962)", + "line": 969 + } + ], + "responsiveness": 0.016726018860936165, + "time": 26412792 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + } + ], + "responsiveness": 2.0382933616638184, + "time": 26412794 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "EventDispatcher::Dispatch", + "line": 390 + }, + { + "location": "js::RunScript" + }, + { + "location": "c (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:109)", + "line": 110 + }, + { + "location": "g (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en.9YdudwyFIxs.O/m=plusone/rt=j/sv=1/d=1/ed=1/am=AQ/rs=AItRSTMIeXyHLZQbXjj15Bi0Oi9WSiPFzg/cb=gapi.loaded_0:118)", + "line": 119 + }, + { + "location": "js::RunScript" + }, + { + "location": "_.T resource://gre/modules/devtools/DevToolsUtils.js:82)", + "line": 84 + }, + { + "location": "js::RunScript" + }, + { + "location": "LDT_send/< (resource://gre/modules/devtools/dbg-client.jsm -> resource://gre/modules/devtools/server/transport.js:273)", + "line": 279 + }, + { + "location": "js::RunScript" + }, + { + "location": "DSC_onPacket (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js:1044)", + "line": 1098 + }, + { + "location": "js::RunScript" + }, + { + "location": "ProfilerActor.prototype.onGetProfile (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js -> resource://gre/modules/devtools/server/actors/profiler.js:100)", + "line": 101 + } + ], + "responsiveness": 3.016005277633667, + "time": 26417152 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "js::RunScript" + }, + { + "location": "makeInfallible/< (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/DevToolsUtils.js:82)", + "line": 84 + }, + { + "location": "js::RunScript" + }, + { + "location": "LDT_send/< (resource://gre/modules/devtools/dbg-client.jsm -> resource://gre/modules/devtools/server/transport.js:273)", + "line": 279 + }, + { + "location": "js::RunScript" + }, + { + "location": "DSC_onPacket (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js:1044)", + "line": 1098 + }, + { + "location": "js::RunScript" + }, + { + "location": "ProfilerActor.prototype.onGetProfile (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js -> resource://gre/modules/devtools/server/actors/profiler.js:100)", + "line": 101 + } + ], + "responsiveness": 5.014764308929443, + "time": 26417154 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "js::RunScript" + }, + { + "location": "makeInfallible/< (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/DevToolsUtils.js:82)", + "line": 84 + }, + { + "location": "js::RunScript" + }, + { + "location": "LDT_send/< (resource://gre/modules/devtools/dbg-client.jsm -> resource://gre/modules/devtools/server/transport.js:273)", + "line": 279 + }, + { + "location": "js::RunScript" + }, + { + "location": "DSC_onPacket (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js:1044)", + "line": 1098 + }, + { + "location": "js::RunScript" + }, + { + "location": "ProfilerActor.prototype.onGetProfile (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js -> resource://gre/modules/devtools/server/actors/profiler.js:100)", + "line": 101 + } + ], + "responsiveness": 7.0161848068237305, + "time": 26417156 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "js::RunScript" + }, + { + "location": "makeInfallible/< (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/DevToolsUtils.js:82)", + "line": 84 + }, + { + "location": "js::RunScript" + }, + { + "location": "LDT_send/< (resource://gre/modules/devtools/dbg-client.jsm -> resource://gre/modules/devtools/server/transport.js:273)", + "line": 279 + }, + { + "location": "js::RunScript" + }, + { + "location": "DSC_onPacket (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js:1044)", + "line": 1098 + }, + { + "location": "js::RunScript" + }, + { + "location": "ProfilerActor.prototype.onGetProfile (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js -> resource://gre/modules/devtools/server/actors/profiler.js:100)", + "line": 101 + } + ], + "responsiveness": 9.016844749450684, + "time": 26417158 + }, + { + "frames": [ + { + "location": "(root)" + }, + { + "location": "Startup::XRE_Main", + "line": 4037 + }, + { + "location": "js::RunScript" + }, + { + "location": "makeInfallible/< (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/DevToolsUtils.js:82)", + "line": 84 + }, + { + "location": "js::RunScript" + }, + { + "location": "LDT_send/< (resource://gre/modules/devtools/dbg-client.jsm -> resource://gre/modules/devtools/server/transport.js:273)", + "line": 279 + }, + { + "location": "js::RunScript" + }, + { + "location": "DSC_onPacket (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js:1044)", + "line": 1098 + }, + { + "location": "js::RunScript" + }, + { + "location": "ProfilerActor.prototype.onGetProfile (resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js -> resource://gre/modules/devtools/server/actors/profiler.js:100)", + "line": 101 + } + ], + "responsiveness": 0.0030410944018512964, + "time": 26417160 + } + ] + } + ] + } +} \ No newline at end of file diff --git a/doc/readme.md b/doc/readme.md new file mode 100644 index 0000000..18f5981 --- /dev/null +++ b/doc/readme.md @@ -0,0 +1,169 @@ +Barcode Reader +============== + +Barcode Reader is a library written in JavaScript capable of decoding common barcodes (e.g.: Code128 and EAN13) directly in the browser. It can handle various sources of images such as file-input for a single image or preferrably a camera stream (via `getUserMedia`) for real-time decoding. + +# How does it work? +For those of you interested in the inner workings of this implementation, please keep on reading. + +As already depicted in the image above, this implementation makes use of two subsequent stages, first locating (blue box) and second decoding (red line) the barcode. + +## Barcode Locator +The main purpose of the barcode locator is finding a pattern within the source image which looks like a barcode. A barcode is typically characterized by its black bars and white gaps in between. The overall size of the barcode may depend on the amount of information encoded (Code128) or be fixed in width (EAN13). When searching for a barcode in an image we are looking for: + +- _lines_, which are +- _close_ _to_ each other +- have a similar _angle_ + +The process of locating such a barcode is loosely based on a paper called [Locating and decoding EAN-13 barcodes from images captured by digital cameras][douglas_05] which's steps were adapted and modified resulting in: + +1. Creating a binary representation of the image +2. Slice the image into a grid (20 x 15 cells) +3. Extract the skeleton of each cell +4. Separate the skeleton into its parts +5. Component labeling +6. Calculate the rotation of each part +7. Determine cell quality (rotation uniformity) +8. Find connecting cells with similar rotation +9. Create bounding-box of connected cells + +Let's start with the creation of a binary image, or more precisely, a thresholded image. + +### Creating a binary image +There are many different ways of creating a binary representation of an image. The easiest being a global threshold of 127 and determining for each pixel if its brighter (>=127) or darker(<127) than the threshold. Whilst this method might be the simpliest to implement, the outcome might not be sufficient because it does not take into account illumination changes across the image. + +In order to account for the brightness changes in the image, a method called [Otsu][otsu_wiki] is employed which operates on the histogram of the source image and tries to separate the foreground from the background. The image below is produced by exactly this method. + +![Binary Image][binary_image] + +The separation of the barcode from the background works fairly well, resulting in an image which is handed over to the next stage. + +### Slicing the image into a grid +The binary image as a whole does not provide much information about its content. In order to make sense of the contained structure, the image is breaken down into smaller chunks which are then described independently from each other. This _description_ is then compared with our hypotheses and either taken into consideration for further processing, or discarded. + +During the development, a grid of 20 x 15 cells (assuming a 4:3 aspect ratio of the image) yielded to statisfactory results. + +IMG + +Having the image sliced up into individual parts, each cell in the grid needs to be evaluated and classified based on the properties described above. Each cell has to be checked if it contains nothing but parallel lines to get passed on to the next stage. + +First, the bars have to be normalized in width (1px width), then separated line by line, followed by the estimation of the angle of each line. Then, each line in the cell is compared to the others to determine the parallelity. Finally, if the majority of lines are parallel to each other, the average angle is computed. + +### Extract skeleton of each cell +The normalization of the width to 1px is done by a method known as [skeletonizing][skeleton_wiki]. What it does is, that it tries to remove as much of the weight of the bar as possible. In this implementation, this is simply done by eroding and dilating the contents as long as there are unprocessed pixels. This yields to a _skeleton_ of the given image as shown in the next image: + +![skeleton_image][skeleton_image] + +This clearly shows the location of the barcode, and the bars of the code reduced to their minimum width of 1px. + +### Component Labeling +In order to find out if parallel lines are contained within each cell, the skeletonized content, which ideally contains straight lines of the interested area, must be separated into individual pieces (lines). This is achieved by applying a technique called [connected-component labeling][labeling_wiki] which separates a given region into its individual components. In case of the barcode pattern, all lines within the cell are split up into single lines and then weighted by their rotation. + +Due to the fact that component labeling is usually quite expensive in terms of computation, a fast algorithm was of the essence to create a real-time application. With that in mind, an implementation of the paper ["A Linear-Time Component-Labeling Algorithm Using Contour Tracing Technique"][labeling_paper] by Fu Chang, Chun-Jen Chen, and Chi-Jen Lu was found on [CodeProject][labeling_codeproject]. Unfortunatelly, the original code was written in C and had to be ported to JavaScript. + +The image below visualizes the output of the component-labeling stage. + +![component_labeling_image][component_labeling_image] + +As mentioned before, each cell is treated invividually, that's why each color is used repeatedly throughout the cells. The color for each component within the cell is unique and denotes the label given by the algorithm. The following images show scaled up versions of two extracted cells, of which the left one indicates a possible barcode area whereas the right one does not contain much but noise. + +![Component labeling lines][component_labeling_lines_image] +![Component labeling lines][component_labeling_text_image] + +Each label can then be considered as a possible __bar__ of a barcode pattern. To be able to classify such a representation, a quantitative value needs to be computed for each __bar__ which can then be compared with the other components. + +### Determining the orientation of such a component +The orientation of a single component within a cell is calculated by using [central image moments][central_image_moments_wiki]. This method is typically used to extract information of the orientation of a binary image. In this case, the binary image is represented by the labeled components. Each component is considered its own binary image of which the central image moment can be computed. + +As depicted in the equation below, the orientation (indicated as θ) of a binary image can be determined by knowing its central moments (μ). + +![Calculation of Theta][math_theta] + +The central moments (μ) are computed by making use of the raw moments (M) and the centroid (x,y) which in turn need to be calculated up front. + +![Calculation of mu][math_mu] + +The following computes the components of the centroid (x,y) by using the raw moments (M). + +![Calculating x bar][math_x_y_bar] + +Since we need image moments up to the second order, the following listing shows the computation of each single moment. The sum over x and y denotes an iteration over the entire image, whereas I(x,y) indicates the value of the pixel at the position x,y. In this case, the value can either be 0 or 1, since we are operating on a binary image. + +![Calculating M][math_m] + +After this step, each component has an angle assigned which is then used in the first step of the classification. + +### Determining cell quality + +#### Discarding non-representative information +Cells containing none, or just one component are immediatelly discarded and not used for further processing. In addition, components which do not cover at least 6 px (M00) are exlucded from any subsequent calculations of the affected cell. This pre-filtered list serves as basis for determining the uniformity of the component's angles throughout a single cell. + +In case of a barcode each component in a cell should be ideally parallel to each other. But due to noise, distortion and other influences, this may vary at some degree. A simple clustering technique is applied to find out the similarity of such components. First off, all angles are clustered with a certain threshold, whereupon the cluster with the highest count of members is selected. Only if this cluster's member-size is greater that 3/4 th of the initial set (without the non-representative components) this cell is finally considered as being part of a barcode pattern. From now on, this cell is referred to as a patch, which contains the following information: + +- an index (unique identifier within the grid) +- the bounding box defining the cell +- all components and their associated moments +- an average angle (computed from the cluster) +- a vector pointing in the direction of orientation + +The following picture highlights the patches (cells) which were found during the classification process described above. + +![Image found patches][found_patches_image] + +It's noticable that some cells were falsely classified as being part of a barcode pattern. Those false positives can be taken care of by finding connected areas (consisting of more than one cell) and discarding all remaining cells. + +### Finding connected cells +Basically, cells can be considered part of a barcode if they are neighbors and share common properties. This grouping is archived by a simple recursive component-labeling algorithm which operates on similarity of orientation, instead of color. For a patch to become member of a label, its vector must point in the same direction as its neighbor's. In order to account for deviations caused by distortion and other geometric influences, the orientation can deviate up to 5 %. The next image illustrates those connected cells where the color defines a certain group. + +![Connected patch labels][connected_patch_labels] + +Sometimes even neighboring cells are colored differently. This happens if the orientation of those patches differ too much (> 5%). + +### Selecting groups +Next up is the selection of the groups which most probably contain a barcode. Because more than one barcode can be present in an image at the same time, groups are first sorted and then filtered by their count of patches. + +![Remaining patch labels][remaining_patch_labels] + +Only the biggest groups remain which are then passed on to the creation of a bounding-box. + +### Create bounding box +Finally all the information necessary for outlining the location of the barcode is available. In this last step, a minimum bounding box is created +which spans over all the patches in one group. First, the average angle of the containing patches is calculated which is then used to rotate the cells +by exactly this angle. After that a bounding-box is computed by simply finding the outermost corners of all the patches. + +![Rotated cells with box][transformed_patches] + +Finally, the bounding-box is rotated in the inverse direction to transform it back to its origin. + +![Bounding box][bounding_box_skeleton] + +As illustrated in the image above, the bounding-box is placed exactly where the barcode pattern is printed. Having a box like this helps a lot during the +actual decoding process because knowing the orientation and the rough area limits the scanning efforts. + +## Barcode Decoder + + + + +[teaser_image]: http://barcode.oberhofer.us/doc/img/teaser.png +[binary_image]: http://barcode.oberhofer.us/doc/img/binary.png +[skeleton_image]: http://barcode.oberhofer.us/doc/img/skeleton.png +[otsu_wiki]: http://en.wikipedia.org/wiki/Otsu%27s_method +[douglas_05]: http://www.icics.org/2005/download/P0840.pdf +[skeleton_wiki]: http://en.wikipedia.org/wiki/Morphological_skeleton +[labeling_wiki]: http://en.wikipedia.org/wiki/Connected-component_labeling +[labeling_codeproject]: http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization +[labeling_paper]: http://www.iis.sinica.edu.tw/papers/fchang/1362-F.pdf +[component_labeling_image]: http://barcode.oberhofer.us/doc/img/component-labeling.png +[component_labeling_lines_image]: http://barcode.oberhofer.us/doc/img/component-labeling-line.png +[component_labeling_text_image]: http://barcode.oberhofer.us/doc/img/component-labeling-text.png +[math_theta]: http://www.sciweavers.org/tex2img.php?eq=%5CTheta%20%3D%20%5Cfrac%7B1%7D%7B2%7D%20%5Carctan%20%5Cleft%28%20%5Cfrac%7B2%5Cmu%27_%7B11%7D%7D%7B%5Cmu%27_%7B20%7D%20-%20%5Cmu%27_%7B02%7D%7D%20%5Cright%29&bc=Transparent&fc=Black&im=png&fs=12&ff=arev&edit=0 +[math_mu]: http://www.sciweavers.org/tex2img.php?eq=%5Cmu%27_%7B11%7D%20%3D%20M_%7B11%7D%2FM_%7B00%7D%20-%20%5Cbar%7Bx%7D%5Cbar%7By%7D%20%5C%5C%0A%5Cmu%27_%7B02%7D%20%3D%20M_%7B02%7D%2FM_%7B00%7D%20-%20%5Cbar%7By%7D%5E2%20%5C%5C%0A%5Cmu%27_%7B20%7D%20%3D%20M_%7B20%7D%2FM_%7B00%7D%20-%20%5Cbar%7Bx%7D%5E2&bc=Transparent&fc=Black&im=png&fs=12&ff=arev&edit=0 +[math_x_y_bar]: http://www.sciweavers.org/tex2img.php?eq=%5Cbar%7Bx%7D%20%3D%20M_%7B10%7D%2FM_%7B00%7D%20%5C%5C%0A%5Cbar%7By%7D%20%3D%20M_%7B01%7D%2FM_%7B00%7D&bc=Transparent&fc=Black&im=png&fs=12&ff=arev&edit=0 +[math_m]: http://www.sciweavers.org/tex2img.php?eq=M_%7B00%7D%20%3D%20%5Csum_x%20%5Csum_y%20I%28x%2Cy%29%20%5C%5C%0AM_%7B10%7D%20%3D%20%5Csum_x%20%5Csum_y%20x%20I%28x%2Cy%29%20%5C%5C%0AM_%7B01%7D%20%3D%20%5Csum_x%20%5Csum_y%20y%20I%28x%2Cy%29%20%5C%5C%0AM_%7B11%7D%20%3D%20%5Csum_x%20%5Csum_y%20xy%20I%28x%2Cy%29%20%5C%5C%0AM_%7B20%7D%20%3D%20%5Csum_x%20%5Csum_y%20x%5E2%20I%28x%2Cy%29%20%5C%5C%0AM_%7B02%7D%20%3D%20%5Csum_x%20%5Csum_y%20y%5E2%20I%28x%2Cy%29&bc=Transparent&fc=Black&im=png&fs=12&ff=arev&edit=0 +[central_image_moments_wiki]: http://en.wikipedia.org/wiki/Image_moment#Central_moments +[found_patches_image]: http://barcode.oberhofer.us/doc/img/patches_found.png +[connected_patch_labels]: http://barcode.oberhofer.us/doc/img/connected-patch-labels.png +[remaining_patch_labels]: http://barcode.oberhofer.us/doc/img/remaining-patch-labels.png +[transformed_patches]: http://barcode.oberhofer.us/doc/img/bb-rotated.png +[bounding_box_skeleton]: http://barcode.oberhofer.us/doc/img/bb-binary.png \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..20f2c20 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "quagga", + "version": "0.1.0", + "description": "This README would normally document whatever steps are necessary to get your application up and running.", + "main": "js/main.js", + "devDependencies": { + "grunt": "~0.4.5", + "grunt-contrib-jshint": "~0.10.0", + "grunt-contrib-nodeunit": "~0.4.1", + "grunt-contrib-uglify": "~0.5.0", + "grunt-requirejs": "^0.4.2" + }, + "directories": { + "doc": "doc" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC" +} diff --git a/src/array_helper.js b/src/array_helper.js new file mode 100644 index 0000000..223b9af --- /dev/null +++ b/src/array_helper.js @@ -0,0 +1,76 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define(function() { + "use strict"; + + return { + init : function(arr, val) { + var l = arr.length; + while (l--) { + arr[l] = val; + } + }, + + /** + * Shuffles the content of an array + * @return {Array} the array itself shuffled + */ + shuffle : function(arr) { + var i = arr.length - 1, j, x; + for (i; i >= 0; i--) { + j = Math.floor(Math.random() * i); + x = arr[i]; + arr[i] = arr[j]; + arr[j] = x; + } + return arr; + }, + + toPointList : function(arr) { + var i, j, row = [], rows = []; + for ( i = 0; i < arr.length; i++) { + row = []; + for ( j = 0; j < arr[i].length; j++) { + row[j] = arr[i][j]; + } + rows[i] = "[" + row.join(",") + "]"; + } + return "[" + rows.join(",\r\n") + "]"; + }, + + /** + * returns the elements which's score is bigger than the threshold + * @return {Array} the reduced array + */ + threshold : function(arr, threshold, scoreFunc) { + var i, queue = []; + for ( i = 0; i < arr.length; i++) { + if (scoreFunc.apply(arr, [arr[i]]) >= threshold) { + queue.push(arr[i]); + } + } + return queue; + }, + + maxIndex : function(arr) { + var i, max = 0; + for ( i = 0; i < arr.length; i++) { + if (arr[i] > arr[max]) { + max = i; + } + } + return max; + }, + + max : function(arr) { + var i, max = 0; + for ( i = 0; i < arr.length; i++) { + if (arr[i] > max) { + max = arr[i]; + } + } + return max; + } + }; +}); \ No newline at end of file diff --git a/src/barcode_decoder.js b/src/barcode_decoder.js new file mode 100644 index 0000000..c218fc8 --- /dev/null +++ b/src/barcode_decoder.js @@ -0,0 +1,247 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define(["bresenham", "image_debug", 'code_128_reader', 'ean_reader'], function(Bresenham, ImageDebug, Code128Reader, EANReader) { + "use strict"; + + var readers = { + code_128_reader: Code128Reader, + ean_reader: EANReader + }; + var BarcodeDecoder = { + create : function(config, inputImageWrapper) { + var _canvas = { + ctx : { + frequency : null, + pattern : null, + overlay : null + }, + dom : { + frequency : null, + pattern : null, + overlay : null + } + }, + _barcodeReaders = [], + _barcodeReader = null; + + initCanvas(); + initReaders(); + initConfig(); + + function initCanvas() { + var $debug = document.querySelector("#debug.detection"); + _canvas.dom.frequency = document.querySelector("canvas.frequency"); + if (!_canvas.dom.frequency) { + _canvas.dom.frequency = document.createElement("canvas"); + _canvas.dom.frequency.className = "frequency"; + if($debug) { + $debug.appendChild(_canvas.dom.frequency); + } + } + _canvas.ctx.frequency = _canvas.dom.frequency.getContext("2d"); + + _canvas.dom.pattern = document.querySelector("canvas.patternBuffer"); + if (!_canvas.dom.pattern) { + _canvas.dom.pattern = document.createElement("canvas"); + _canvas.dom.pattern.className = "patternBuffer"; + if($debug) { + $debug.appendChild(_canvas.dom.pattern); + } + } + _canvas.ctx.pattern = _canvas.dom.pattern.getContext("2d"); + + _canvas.dom.overlay = document.querySelector("canvas.drawingBuffer"); + if (_canvas.dom.overlay) { + _canvas.ctx.overlay = _canvas.dom.overlay.getContext("2d"); + } + } + + function initReaders() { + var i; + for ( i = 0; i < config.readers.length; i++) { + console.log(config.readers[i]); + _barcodeReaders.push(new readers[config.readers[i]]()); + } + } + + function initConfig() { + var i, + vis = [{ + node : _canvas.dom.frequency, + prop : config.showFrequency + }, { + node : _canvas.dom.pattern, + prop : config.showPattern + }]; + + for (i = 0; i < vis.length; i++) { + if (vis[i].prop === true) { + vis[i].node.style.display = "block"; + } else { + vis[i].node.style.display = "none"; + } + } + } + + /** + * extend the line on both ends + * @param {Array} line + * @param {Number} angle + */ + function getExtendedLine(line, angle, ext) { + var extension = { + y : ext * Math.sin(angle), + x : ext * Math.cos(angle) + }; + + line[0].y -= extension.y; + line[0].x -= extension.x; + line[1].y += extension.y; + line[1].x += extension.x; + + // check if inside image + if (!inputImageWrapper.inImageWithBorder(line[0], 0) || !inputImageWrapper.inImageWithBorder(line[1], 0)) { + return null; + } + return line; + } + + function getLine(box) { + return [{ + x : (box[1][0] - box[0][0]) / 2 + box[0][0], + y : (box[1][1] - box[0][1]) / 2 + box[0][1] + }, { + x : (box[3][0] - box[2][0]) / 2 + box[2][0], + y : (box[3][1] - box[2][1]) / 2 + box[2][1] + }]; + } + + function tryDecode(line) { + var result = null, + i, + barcodeLine = Bresenham.getBarcodeLine(inputImageWrapper, line[0], line[1]); + + if (config.showFrequency) { + ImageDebug.drawPath(line, {x: 'x', y: 'y'}, _canvas.ctx.overlay, {color: 'red', lineWidth: 3}); + Bresenham.debug.printFrequency(barcodeLine.line, _canvas.dom.frequency); + } + Bresenham.toBinaryLine(barcodeLine); + if (config.showPattern) { + Bresenham.debug.printPattern(barcodeLine.line, _canvas.dom.pattern); + } + + for ( i = 0; i < _barcodeReaders.length && result === null; i++) { + result = _barcodeReaders[i].decodePattern(barcodeLine.line); + if (result !== null) { + _barcodeReader = _barcodeReaders[i]; + } + } + if(result === null){ + return null; + } + return { + codeResult: result, + barcodeLine: barcodeLine + }; + + } + + /** + * This method slices the given area apart and tries to detect a barcode-pattern + * for each slice. It returns the decoded barcode, or null if nothing was found + * @param {Array} box + * @param {Array} line + * @param {Number} lineAngle + */ + function tryDecodeBruteForce(box, line, lineAngle) { + var sideLength = Math.sqrt(Math.pow(box[1][0] - box[0][0], 2) + Math.pow((box[1][1] - box[0][1]), 2)), + i, + slices = 16, + result = null, + dir, + extension, + xdir = Math.sin(lineAngle), + ydir = Math.cos(lineAngle); + + for ( i = 1; i < slices && result === null; i++) { + // move line perpendicular to angle + dir = sideLength / slices * i * (i % 2 === 0 ? -1 : 1); + extension = { + y : dir * xdir, + x : dir * ydir + }; + line[0].y += extension.x; + line[0].x -= extension.y; + line[1].y += extension.x; + line[1].x -= extension.y; + + result = tryDecode(line); + } + return result; + } + + /** + * With the help of the configured readers (Code128 or EAN) this function tries to detect a + * valid barcode pattern within the given area. + * @param {Object} box The area to search in + * @returns {Object} the result {codeResult, line, angle, pattern, threshold} + */ + function decodeFromBoundingBox(box) { + var line, + lineAngle, + ctx = _canvas.ctx.overlay, + result; + + if (config.drawBoundingBox && ctx) { + ImageDebug.drawPath(box, {x: 0, y: 1}, ctx, {color: "blue", lineWidth: 2}); + } + + line = getLine(box); + lineAngle = Math.atan2(line[1].y - line[0].y, line[1].x - line[0].x); + line = getExtendedLine(line, lineAngle, 10); + if(line === null){ + return null; + } + + result = tryDecode(line); + if(result === null) { + result = tryDecodeBruteForce(box, line, lineAngle); + } + + if(result === null) { + return null; + } + + if (result && config.drawScanline && ctx) { + ImageDebug.drawPath(line, {x: 'x', y: 'y'}, ctx, {color: 'red', lineWidth: 3}); + } + + return { + codeResult : result.codeResult, + line : line, + angle : lineAngle, + pattern : result.barcodeLine.line, + threshold : result.barcodeLine.threshold + }; + } + + return { + decodeFromBoundingBox : function(box) { + return decodeFromBoundingBox(box); + }, + decodeFromBoundingBoxes : function(boxes) { + var i, result; + for ( i = 0; i < boxes.length; i++) { + result = decodeFromBoundingBox(boxes[i]); + if (result && result.codeResult) { + return result; + } + } + } + }; + } + }; + + return (BarcodeDecoder); +}); \ No newline at end of file diff --git a/src/barcode_locator.js b/src/barcode_locator.js new file mode 100644 index 0000000..86b385f --- /dev/null +++ b/src/barcode_locator.js @@ -0,0 +1,515 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, mat2, vec2 */ + +define(["image_wrapper", "cv_utils", "rasterizer", "tracer", "skeletonizer", "array_helper", "image_debug"], +function(ImageWrapper, CVUtils, Rasterizer, Tracer, skeletonizer, ArrayHelper, ImageDebug) { + "use strict"; + + var _config, + _currentImageWrapper, + _skelImageWrapper, + _subImageWrapper, + _labelImageWrapper, + _patchGrid, + _patchLabelGrid, + _imageToPatchGrid, + _binaryImageWrapper, + _halfSample = true, + _patchSize, + _canvasContainer = { + ctx : { + binary : null + }, + dom : { + binary : null + } + }, + _numPatches = {x: 0, y: 0}, + _inputImageWrapper, + _skeletonizer; + + function initBuffers() { + var skeletonImageData; + + if (_halfSample) { + _currentImageWrapper = new ImageWrapper({ + x : _inputImageWrapper.size.x / 2 | 0, + y : _inputImageWrapper.size.y / 2 | 0 + }); + } else { + _currentImageWrapper = _inputImageWrapper; + } + + _patchSize = { + x : 16 * ( _halfSample ? 1 : 2), + y : 16 * ( _halfSample ? 1 : 2) + }; + + _numPatches.x = _currentImageWrapper.size.x / _patchSize.x | 0; + _numPatches.y = _currentImageWrapper.size.y / _patchSize.y | 0; + + _binaryImageWrapper = new ImageWrapper(_currentImageWrapper.size, undefined, Uint8Array, false); + + _labelImageWrapper = new ImageWrapper(_patchSize, undefined, Array, true); + + skeletonImageData = new ArrayBuffer(_patchSize.x * _patchSize.y * 16); + _subImageWrapper = new ImageWrapper(_patchSize, new Uint8Array(skeletonImageData, 0, _patchSize.x * _patchSize.y)); + _skelImageWrapper = new ImageWrapper(_patchSize, new Uint8Array(skeletonImageData, _patchSize.x * _patchSize.y * 3, _patchSize.x * _patchSize.y), undefined, true); + _skeletonizer = skeletonizer(window, { + size : _patchSize.x + }, skeletonImageData); + + _imageToPatchGrid = new ImageWrapper({ + x : (_currentImageWrapper.size.x / _subImageWrapper.size.x) | 0, + y : (_currentImageWrapper.size.y / _subImageWrapper.size.y) | 0 + }, undefined, Array, true); + _patchGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, undefined, true); + _patchLabelGrid = new ImageWrapper(_imageToPatchGrid.size, undefined, Int32Array, true); + } + + function initCanvas() { + _canvasContainer.dom.binary = document.createElement("canvas"); + _canvasContainer.dom.binary.className = "binaryBuffer"; + if (_config.showCanvas === true) { + document.querySelector("#debug").appendChild(_canvasContainer.dom.binary); + } + _canvasContainer.ctx.binary = _canvasContainer.dom.binary.getContext("2d"); + _canvasContainer.dom.binary.width = _binaryImageWrapper.size.x; + _canvasContainer.dom.binary.height = _binaryImageWrapper.size.y; + } + + /** + * Creates a bounding box which encloses all the given patches + * @returns {Array} The minimal bounding box + */ + function boxFromPatches(patches) { + var overAvg, i, j, patch, transMat, minx = _binaryImageWrapper.size.x, miny = _binaryImageWrapper.size.y, maxx = -_binaryImageWrapper.size.x, maxy = -_binaryImageWrapper.size.y, box, scale; + + // draw all patches which are to be taken into consideration + overAvg = 0; + for ( i = 0; i < patches.length; i++) { + patch = patches[i]; + overAvg += patch.rad; + if (_config.showPatches) { + ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: "red"}); + } + } + + overAvg /= patches.length; + overAvg = (overAvg * 180 / Math.PI + 90) % 180 - 90; + if (overAvg < 0) { + overAvg += 180; + } + + //console.log(overAvg); + overAvg = (180 - overAvg) * Math.PI / 180; + transMat = mat2.create([Math.cos(overAvg), -Math.sin(overAvg), Math.sin(overAvg), Math.cos(overAvg)]); + + // iterate over patches and rotate by angle + for ( i = 0; i < patches.length; i++) { + patch = patches[i]; + for ( j = 0; j < 4; j++) { + mat2.xVec2(transMat, patch.box[j]); + } + + if (_config.boxFromPatches.showTransformed) { + ImageDebug.drawPath(patch.box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#99ff00', lineWidth: 2}); + } + } + + // find bounding box + for ( i = 0; i < patches.length; i++) { + patch = patches[i]; + for ( j = 0; j < 4; j++) { + if (patch.box[j][0] < minx) { + minx = patch.box[j][0]; + } + if (patch.box[j][0] > maxx) { + maxx = patch.box[j][0]; + } + if (patch.box[j][1] < miny) { + miny = patch.box[j][1]; + } + if (patch.box[j][1] > maxy) { + maxy = patch.box[j][1]; + } + } + } + + box = [[minx, miny], [maxx, miny], [maxx, maxy], [minx, maxy]]; + + if (_config.boxFromPatches.showTransformedBox) { + ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2}); + } + + scale = _halfSample ? 2 : 1; + // reverse rotation; + transMat = mat2.inverse(transMat); + for ( j = 0; j < 4; j++) { + mat2.xVec2(transMat, box[j]); + } + + if (_config.boxFromPatches.showBB) { + ImageDebug.drawPath(box, {x: 0, y: 1}, _canvasContainer.ctx.binary, {color: '#ff0000', lineWidth: 2}); + } + + for ( j = 0; j < 4; j++) { + vec2.scale(box[j], scale); + } + + return box; + } + + /** + * Creates a binary image of the current image + */ + function binarizeImage() { + CVUtils.otsuThreshold(_currentImageWrapper, _binaryImageWrapper); + _binaryImageWrapper.zeroBorder(); + if (_config.showCanvas) { + _binaryImageWrapper.show(_canvasContainer.dom.binary, 255); + } + } + + /** + * Iterate over the entire image + * extract patches + */ + function findPatches() { + var i, + j, + x, + y, + moments, + patchesFound = [], + rasterizer, + rasterResult, + patch; + for ( i = 0; i < _numPatches.x; i++) { + for ( j = 0; j < _numPatches.y; j++) { + + x = _subImageWrapper.size.x * i; + y = _subImageWrapper.size.y * j; + + // seperate parts + skeletonize(x, y); + + // Rasterize, find individual bars + _skelImageWrapper.zeroBorder(); + ArrayHelper.init(_labelImageWrapper.data, 0); + rasterizer = Rasterizer.create(_skelImageWrapper, _labelImageWrapper); + rasterResult = rasterizer.rasterize(0); + + if (_config.showLabels) { + _labelImageWrapper.overlay(_canvasContainer.dom.binary, Math.floor(360 / rasterResult.count), {x : x, y : y}); + } + + // calculate moments from the skeletonized patch + moments = _labelImageWrapper.moments(rasterResult.count); + + // extract eligible patches + patchesFound = patchesFound.concat(describePatch(moments, [i, j], x, y)); + } + } + + if (_config.showFoundPatches) { + for ( i = 0; i < patchesFound.length; i++) { + patch = patchesFound[i]; + ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: "99ff00", lineWidth: 2}); + } + } + + return patchesFound; + } + + /** + * Finds those connected areas which contain at least 6 patches + * and returns them ordered DESC by the number of contained patches + * @param {Number} maxLabel + */ + function findBiggestConnectedAreas(maxLabel){ + var i, + sum, + labelHist = [], + topLabels = []; + + for ( i = 0; i < maxLabel; i++) { + labelHist.push(0); + } + sum = _patchLabelGrid.data.length; + while (sum--) { + if (_patchLabelGrid.data[sum] > 0) { + labelHist[_patchLabelGrid.data[sum] - 1]++; + } + } + + labelHist = labelHist.map(function(val, idx) { + return { + val : val, + label : idx + 1 + }; + }); + + labelHist.sort(function(a, b) { + return b.val - a.val; + }); + + // extract top areas with at least 6 patches present + topLabels = labelHist.filter(function(el) { + return el.val >= 5; + }); + + return topLabels; + } + + /** + * + */ + function findBoxes(topLabels, maxLabel) { + var i, + j, + sum, + patches = [], + patch, + box, + boxes = [], + hsv = [0, 1, 1], + rgb = [0, 0, 0]; + + for ( i = 0; i < topLabels.length; i++) { + sum = _patchLabelGrid.data.length; + patches.length = 0; + while (sum--) { + if (_patchLabelGrid.data[sum] === topLabels[i].label) { + patch = _imageToPatchGrid.data[sum]; + patches.push(patch); + } + } + box = boxFromPatches(patches); + if (box) { + boxes.push(box); + + // draw patch-labels if requested + if (_config.showRemainingPatchLabels) { + for ( j = 0; j < patches.length; j++) { + patch = patches[j]; + hsv[0] = (topLabels[i].label / (maxLabel + 1)) * 360; + CVUtils.hsv2rgb(hsv, rgb); + ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: "rgb(" + rgb.join(",") + ")", lineWidth: 2}); + } + } + } + } + return boxes; + } + + /** + * Find similar moments (via cluster) + * @param {Object} moments + */ + function similarMoments(moments) { + var clusters = CVUtils.cluster(moments, 0.90); + var topCluster = CVUtils.topGeneric(clusters, 1, function(e) { + return e.getPoints().length; + }); + var points = [], result = []; + if (topCluster.length === 1) { + points = topCluster[0].item.getPoints(); + for (var i = 0; i < points.length; i++) { + result.push(points[i].point); + } + } + return result; + } + + function skeletonize(x, y) { + _binaryImageWrapper.subImageAsCopy(_subImageWrapper, CVUtils.imageRef(x, y)); + _skeletonizer.skeletonize(); + + // Show skeleton if requested + if (_config.showSkeleton) { + _skelImageWrapper.overlay(_canvasContainer.dom.binary, 360, CVUtils.imageRef(x, y)); + } + } + + /** + * Extracts and describes those patches which seem to contain a barcode pattern + * @param {Array} moments + * @param {Object} patchPos, + * @param {Number} x + * @param {Number} y + * @returns {Array} list of patches + */ + function describePatch(moments, patchPos, x, y) { + var k, avg, sum = 0, eligibleMoments = [], matchingMoments, patch, patchesFound = []; + if (moments.length >= 2) { + // only collect moments which's area covers at least 6 pixels. + for ( k = 0; k < moments.length; k++) { + if (moments[k].m00 > 6) { + eligibleMoments.push(moments[k]); + } + } + + // if at least 2 moments are found which have 6pixels covered + if (eligibleMoments.length >= 2) { + sum = eligibleMoments.length; + matchingMoments = similarMoments(eligibleMoments); + avg = 0; + // determine the similarity of the moments + for ( k = 0; k < matchingMoments.length; k++) { + avg += matchingMoments[k].rad; + } + + // Only two of the moments are allowed not to fit into the equation + // add the patch to the set + if (matchingMoments.length > 1 && matchingMoments.length >= (eligibleMoments.length / 4) * 3 && matchingMoments.length > moments.length / 4) { + avg /= matchingMoments.length; + patch = { + index : patchPos[1] * _numPatches.x + patchPos[0], + pos : { + x : x, + y : y + }, + box : [vec2.create([x, y]), vec2.create([x + _subImageWrapper.size.x, y]), vec2.create([x + _subImageWrapper.size.x, y + _subImageWrapper.size.y]), vec2.create([x, y + _subImageWrapper.size.y])], + moments : matchingMoments, + rad : avg, + vec : vec2.create([Math.cos(avg), Math.sin(avg)]) + }; + patchesFound.push(patch); + } + } + } + return patchesFound; + } + + /** + * finds patches which are connected and share the same orientation + * @param {Object} patchesFound + */ + function rasterizeAngularSimilarity(patchesFound) { + var label = 0, + threshold = 0.95, + currIdx = 0, + j, + patch, + hsv = [0, 1, 1], + rgb = [0, 0, 0]; + + function notYetProcessed() { + var i; + for ( i = 0; i < _patchLabelGrid.data.length; i++) { + if (_patchLabelGrid.data[i] === 0 && _patchGrid.data[i] === 1) { + return i; + } + } + return _patchLabelGrid.length; + } + + function trace(currentIdx) { + var x, y, currentPatch, patch, idx, dir, current = { + x : currentIdx % _patchLabelGrid.size.x, + y : (currentIdx / _patchLabelGrid.size.x) | 0 + }, similarity; + + if (currentIdx < _patchLabelGrid.data.length) { + currentPatch = _imageToPatchGrid.data[currentIdx]; + // assign label + _patchLabelGrid.data[currentIdx] = label; + for ( dir = 0; dir < Tracer.searchDirections.length; dir++) { + y = current.y + Tracer.searchDirections[dir][0]; + x = current.x + Tracer.searchDirections[dir][1]; + idx = y * _patchLabelGrid.size.x + x; + + // continue if patch empty + if (_patchGrid.data[idx] === 0) { + _patchLabelGrid.data[idx] = Number.MAX_VALUE; + continue; + } + + patch = _imageToPatchGrid.data[idx]; + if (_patchLabelGrid.data[idx] === 0) { + similarity = Math.abs(vec2.dot(patch.vec, currentPatch.vec)); + if (similarity > threshold) { + trace(idx); + } + } + } + } + } + + // prepare for finding the right patches + ArrayHelper.init(_patchGrid.data, 0); + ArrayHelper.init(_patchLabelGrid.data, 0); + ArrayHelper.init(_imageToPatchGrid.data, null); + + for ( j = 0; j < patchesFound.length; j++) { + patch = patchesFound[j]; + _imageToPatchGrid.data[patch.index] = patch; + _patchGrid.data[patch.index] = 1; + } + + // rasterize the patches found to determine area + _patchGrid.zeroBorder(); + + while (( currIdx = notYetProcessed()) < _patchLabelGrid.data.length) { + label++; + trace(currIdx); + } + + // draw patch-labels if requested + if (_config.showPatchLabels) { + for ( j = 0; j < _patchLabelGrid.data.length; j++) { + if (_patchLabelGrid.data[j] > 0 && _patchLabelGrid.data[j] <= label) { + patch = _imageToPatchGrid.data[j]; + hsv[0] = (_patchLabelGrid.data[j] / (label + 1)) * 360; + CVUtils.hsv2rgb(hsv, rgb); + ImageDebug.drawRect(patch.pos, _subImageWrapper.size, _canvasContainer.ctx.binary, {color: "rgb(" + rgb.join(",") + ")", lineWidth: 2}); + } + } + } + + return label; + } + + return { + init : function(config, data) { + _config = config; + _inputImageWrapper = data.inputImageWrapper; + initBuffers(); + initCanvas(); + }, + locate : function() { + var patchesFound, + topLabels = [], + boxes = []; + + if (_halfSample) { + CVUtils.halfSample(_inputImageWrapper, _currentImageWrapper); + } + + binarizeImage(); + patchesFound = findPatches(); + // return unless 5% or more patches are found + if (patchesFound.length < _numPatches.x * _numPatches.y * 0.05) { + return; + } + + // rasterrize area by comparing angular similarity; + var maxLabel = rasterizeAngularSimilarity(patchesFound); + if (maxLabel <= 1) { + return null; + } + + // search for area with the most patches (biggest connected area) + topLabels = findBiggestConnectedAreas(maxLabel); + if (topLabels.length === 0) { + return null; + } + + boxes = findBoxes(topLabels, maxLabel); + + return boxes; + } + }; +}); + diff --git a/src/barcode_reader.js b/src/barcode_reader.js new file mode 100644 index 0000000..fc39ccf --- /dev/null +++ b/src/barcode_reader.js @@ -0,0 +1,169 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define( + function() { + "use strict"; + + function BarcodeReader() { + this._row = []; + return this; + } + + BarcodeReader.prototype._nextUnset = function(line, start) { + var i; + + if (start === undefined) { + start = 0; + } + for (i = start; i < line.length; i++) { + if (!line[i]) { + return i; + } + } + return line.length; + }; + + BarcodeReader.prototype._matchPattern = function(counter, code) { + var i, + error = 0; + + for (i = 0; i < counter.length; i++) { + error += Math.abs(code[i] - counter[i]); + } + return error; + }; + + BarcodeReader.prototype._nextSet = function(line) { + var i; + + for (i = 0; i < line.length; i++) { + if (line[i]) { + return i; + } + } + return line.length; + }; + + BarcodeReader.prototype._normalize = function(counter, modulo) { + var i, + self = this, + sum = 0, + ratio, + numOnes = 0, + normalized = [], + norm = 0; + + if (!modulo) { + modulo = self.MODULO; + } + for (i = 0; i < counter.length; i++) { + if (counter[i] === 1) { + numOnes++; + } else { + sum += counter[i]; + } + } + ratio = sum / (modulo - numOnes); + for (i = 0; i < counter.length; i++) { + norm = counter[i] === 1 ? counter[i] : counter[i] / ratio; + normalized.push(norm); + } + return normalized; + }; + + BarcodeReader.prototype._matchTrace = function(cmpCounter, epsilon) { + var counter = [], + i, + self = this, + offset = self._nextSet(self._row), + isWhite = !self._row[offset], + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : 0 + }, + error; + + if (cmpCounter) { + for ( i = 0; i < cmpCounter.length; i++) { + counter.push(0); + } + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + error = self._matchPattern(counter, cmpCounter); + + if (error < epsilon) { + bestMatch.start = i - offset; + bestMatch.end = i; + bestMatch.counter = counter; + return bestMatch; + } else { + return null; + } + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + } else { + counter.push(0); + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + counterPos++; + counter.push(0); + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + } + + // if cmpCounter was not given + bestMatch.start = offset; + bestMatch.end = self._row.length - 1; + bestMatch.counter = counter; + return bestMatch; + }; + + BarcodeReader.prototype.decodePattern = function(pattern) { + var self = this, + result; + + self._row = pattern; + result = self._decode(); + if (result === null) { + self._row.reverse(); + result = self._decode(); + if (result) { + result.direction = BarcodeReader.DIRECTION.REVERSE; + result.start = self._row.length - result.start; + result.end = self._row.length - result.end; + } + } else { + result.direction = BarcodeReader.DIRECTION.FORWARD; + } + return result; + }; + + BarcodeReader.DIRECTION = { + FORWARD : 1, + REVERSE : -1 + }; + + BarcodeReader.Exception = { + StartNotFoundException : "Start-Info was not found!", + CodeNotFoundException : "Code could not be found!", + PatternNotFoundException : "Pattern could not be found!" + }; + + return (BarcodeReader); + } +); diff --git a/src/bresenham.js b/src/bresenham.js new file mode 100644 index 0000000..1504f4a --- /dev/null +++ b/src/bresenham.js @@ -0,0 +1,201 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define(function() { + "use strict"; + var Bresenham = {}; + + var Slope = { + DIR : { + UP : 1, + DOWN : -1 + } + }; + /** + * Scans a line of the given image from point p1 to p2 and returns a result object containing + * gray-scale values (0-255) of the underlying pixels in addition to the min + * and max values. + * @param {Object} imageWrapper + * @param {Object} p1 The start point {x,y} + * @param {Object} p2 The end point {x,y} + * @returns {line, min, max} + */ + Bresenham.getBarcodeLine = function(imageWrapper, p1, p2) { + var x0 = p1.x | 0, + y0 = p1.y | 0, + x1 = p2.x | 0, + y1 = p2.y | 0, + steep = Math.abs(y1 - y0) > Math.abs(x1 - x0), + deltax, + deltay, + error, + ystep, + y, + tmp, + x, + line = [], + imageData = imageWrapper.data, + width = imageWrapper.size.x, + sum = 0, + val, + min = 255, + max = 0; + + function read(a, b) { + val = imageData[b * width + a]; + sum += val; + min = val < min ? val : min; + max = val > max ? val : max; + line.push(val); + } + + if (steep) { + tmp = x0; + x0 = y0; + y0 = tmp; + + tmp = x1; + x1 = y1; + y1 = tmp; + } + if (x0 > x1) { + tmp = x0; + x0 = x1; + x1 = tmp; + + tmp = y0; + y0 = y1; + y1 = tmp; + } + deltax = x1 - x0; + deltay = Math.abs(y1 - y0); + error = (deltax / 2) | 0; + y = y0; + ystep = y0 < y1 ? 1 : -1; + for ( x = x0; x < x1; x++) { + if(steep){ + read(y, x); + } else { + read(x, y); + } + error = error - deltay; + if (error < 0) { + y = y + ystep; + error = error + deltax; + } + } + + return { + line : line, + min : min, + max : max + }; + }; + + /** + * Converts the result from getBarcodeLine into a binary representation + * also considering the frequency and slope of the signal for more robust results + * @param {Object} result {line, min, max} + */ + Bresenham.toBinaryLine = function(result) { + + var min = result.min, + max = result.max, + line = result.line, + slope, + center = min + (max - min) / 2, + extrema = [], + currentDir, + dir, + threshold = (max - min) / 8, + rThreshold = -threshold, + i, + j; + + // 1. find extrema + currentDir = line[0] > center ? Slope.DIR.DOWN : Slope.DIR.UP; + extrema.push({ + pos : 0, + val : line[0] + }); + for ( i = 0; i < line.length - 1; i++) { + slope = (line[i + 1] - line[i]); + if (slope < rThreshold) { + dir = Slope.DIR.UP; + } else if (slope > threshold) { + dir = Slope.DIR.DOWN; + } else { + dir = currentDir; + } + + if (currentDir !== dir) { + extrema.push({ + pos : i, + val : line[i] + }); + currentDir = dir; + } + } + extrema.push({ + pos : line.length, + val : line[line.length - 1] + }); + + for ( j = extrema[0].pos; j < extrema[1].pos; j++) { + line[j] = line[j] > center ? 0 : 1; + } + + // iterate over extrema and convert to binary based on avg between minmax + for ( i = 1; i < extrema.length - 1; i++) { + if (extrema[i + 1].val > extrema[i].val) { + threshold = (extrema[i].val + (extrema[i + 1].val - extrema[i].val) / 2) | 0; + } else { + threshold = (extrema[i + 1].val + (extrema[i].val - extrema[i + 1].val) / 2) | 0; + } + + for ( j = extrema[i].pos; j < extrema[i + 1].pos; j++) { + line[j] = line[j] > threshold ? 0 : 1; + } + } + + return { + line : line, + threshold : threshold + }; + }; + + /** + * Used for development only + */ + Bresenham.debug = { + printFrequency: function(line, canvas) { + var i, + ctx = canvas.getContext("2d"); + canvas.width = line.length; + canvas.height = 256; + + ctx.beginPath(); + ctx.strokeStyle = "blue"; + for ( i = 0; i < line.length; i++) { + ctx.moveTo(i, 255); + ctx.lineTo(i, 255 - line[i]); + } + ctx.stroke(); + ctx.closePath(); + }, + + printPattern: function(line, canvas) { + var ctx = canvas.getContext("2d"), i; + + canvas.width = line.length; + ctx.fillColor = "black"; + for ( i = 0; i < line.length; i++) { + if (line[i] === 1) { + ctx.fillRect(i, 0, 1, 100); + } + } + } + }; + + return (Bresenham); +}); \ No newline at end of file diff --git a/src/camera_access.js b/src/camera_access.js new file mode 100644 index 0000000..9d754bf --- /dev/null +++ b/src/camera_access.js @@ -0,0 +1,94 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, MediaStreamTrack */ + +define(function() { + "use strict"; + + /** + * Wraps browser-specific getUserMedia + * @param {Object} constraints + * @param {Object} success Callback + * @param {Object} failure Callback + */ + function getUserMedia(constraints, success, failure) { + navigator.getUserMedia(constraints, function(stream) { + var videoSrc = (window.URL && window.URL.createObjectURL(stream)) || stream; + success.apply(null, [videoSrc]); + }, failure); + } + + /** + * Tries to attach the camer-stream to a given video-element + * and calls the callback function when the content is ready + * @param {Object} constraints + * @param {Object} video + * @param {Object} callback + */ + function initCamera(constraints, video, callback) { + getUserMedia(constraints, function(src) { + video.src = src; + video.addEventListener('loadeddata', function() { + var attempts = 10; + + function checkVideo() { + if (attempts > 0) { + if (video.videoWidth > 0 && video.videoHeight > 0) { + console.log(video.videoWidth + "px x " + video.videoHeight + "px"); + callback(); + } else { + window.setTimeout(checkVideo, 500); + } + } else { + callback('Unable to play video stream. Is webcam working?'); + } + attempts--; + } + + checkVideo(); + }, false); + video.play(); + }, function(e) { + console.log(e); + }); + } + + /** + * Requests the back-facing camera of the user. The callback is called + * whenever the stream is ready to be consumed, or if an error occures. + * @param {Object} video + * @param {Object} callback + */ + function request(video, callback) { + if ( typeof MediaStreamTrack.getSources !== 'undefined') { + MediaStreamTrack.getSources(function(sourceInfos) { + var videoSourceId; + for (var i = 0; i != sourceInfos.length; ++i) { + var sourceInfo = sourceInfos[i]; + if (sourceInfo.kind == "video" && sourceInfo.facing == "environment") { + videoSourceId = sourceInfo.id; + } + } + var constraints = { + audio : false, + video : { + optional : [{ + sourceId : videoSourceId + }] + } + }; + initCamera(constraints, video, callback); + }); + } else { + initCamera({ + video : true, + audio : false + }, video, callback); + } + } + + return { + request : function(video, callback) { + request(video, callback); + } + }; +}); \ No newline at end of file diff --git a/src/cluster.js b/src/cluster.js new file mode 100644 index 0000000..f44ab46 --- /dev/null +++ b/src/cluster.js @@ -0,0 +1,71 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, vec2 */ + +define(function() { + "use strict"; + + /** + * Creates a cluster for grouping similar orientations of datapoints + */ + var Cluster = { + create : function(point, threshold) { + var points = [], center = { + rad : 0, + vec : vec2.create([0, 0]) + }, pointMap = {}; + + function init() { + add(point); + updateCenter(); + } + + function add(point) { + pointMap[point.id] = point; + points.push(point); + } + + function updateCenter() { + var i, sum = 0; + for ( i = 0; i < points.length; i++) { + sum += points[i].rad; + } + center.rad = sum / points.length; + center.vec = vec2.create([Math.cos(center.rad), Math.sin(center.rad)]); + } + + init(); + + return { + add : function(point) { + if (!pointMap[point.id]) { + add(point); + updateCenter(); + } + }, + fits : function(point) { + // check cosine similarity to center-angle + var similarity = Math.abs(vec2.dot(point.point.vec, center.vec)); + if (similarity > threshold) { + return true; + } + return false; + }, + getPoints : function() { + return points; + }, + getCenter : function() { + return center; + } + }; + }, + createPoint : function(point, id, property) { + return { + rad : point[property], + point : point, + id : id + }; + } + }; + + return (Cluster); +}); diff --git a/src/code_128_reader.js b/src/code_128_reader.js new file mode 100644 index 0000000..1a69328 --- /dev/null +++ b/src/code_128_reader.js @@ -0,0 +1,448 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define( + [ + "./barcode_reader" + ], + function(BarcodeReader) { + "use strict"; + + function Code128Reader() { + BarcodeReader.call(this); + } + + var properties = { + CODE_SHIFT : {value: 98}, + CODE_C : {value: 99}, + CODE_B : {value: 100}, + CODE_A : {value: 101}, + START_CODE_A : {value: 103}, + START_CODE_B : {value: 104}, + START_CODE_C : {value: 105}, + STOP_CODE : {value: 106}, + MODULO : {value: 11}, + CODE_PATTERN : {value: [ + [2, 1, 2, 2, 2, 2], + [2, 2, 2, 1, 2, 2], + [2, 2, 2, 2, 2, 1], + [1, 2, 1, 2, 2, 3], + [1, 2, 1, 3, 2, 2], + [1, 3, 1, 2, 2, 2], + [1, 2, 2, 2, 1, 3], + [1, 2, 2, 3, 1, 2], + [1, 3, 2, 2, 1, 2], + [2, 2, 1, 2, 1, 3], + [2, 2, 1, 3, 1, 2], + [2, 3, 1, 2, 1, 2], + [1, 1, 2, 2, 3, 2], + [1, 2, 2, 1, 3, 2], + [1, 2, 2, 2, 3, 1], + [1, 1, 3, 2, 2, 2], + [1, 2, 3, 1, 2, 2], + [1, 2, 3, 2, 2, 1], + [2, 2, 3, 2, 1, 1], + [2, 2, 1, 1, 3, 2], + [2, 2, 1, 2, 3, 1], + [2, 1, 3, 2, 1, 2], + [2, 2, 3, 1, 1, 2], + [3, 1, 2, 1, 3, 1], + [3, 1, 1, 2, 2, 2], + [3, 2, 1, 1, 2, 2], + [3, 2, 1, 2, 2, 1], + [3, 1, 2, 2, 1, 2], + [3, 2, 2, 1, 1, 2], + [3, 2, 2, 2, 1, 1], + [2, 1, 2, 1, 2, 3], + [2, 1, 2, 3, 2, 1], + [2, 3, 2, 1, 2, 1], + [1, 1, 1, 3, 2, 3], + [1, 3, 1, 1, 2, 3], + [1, 3, 1, 3, 2, 1], + [1, 1, 2, 3, 1, 3], + [1, 3, 2, 1, 1, 3], + [1, 3, 2, 3, 1, 1], + [2, 1, 1, 3, 1, 3], + [2, 3, 1, 1, 1, 3], + [2, 3, 1, 3, 1, 1], + [1, 1, 2, 1, 3, 3], + [1, 1, 2, 3, 3, 1], + [1, 3, 2, 1, 3, 1], + [1, 1, 3, 1, 2, 3], + [1, 1, 3, 3, 2, 1], + [1, 3, 3, 1, 2, 1], + [3, 1, 3, 1, 2, 1], + [2, 1, 1, 3, 3, 1], + [2, 3, 1, 1, 3, 1], + [2, 1, 3, 1, 1, 3], + [2, 1, 3, 3, 1, 1], + [2, 1, 3, 1, 3, 1], + [3, 1, 1, 1, 2, 3], + [3, 1, 1, 3, 2, 1], + [3, 3, 1, 1, 2, 1], + [3, 1, 2, 1, 1, 3], + [3, 1, 2, 3, 1, 1], + [3, 3, 2, 1, 1, 1], + [3, 1, 4, 1, 1, 1], + [2, 2, 1, 4, 1, 1], + [4, 3, 1, 1, 1, 1], + [1, 1, 1, 2, 2, 4], + [1, 1, 1, 4, 2, 2], + [1, 2, 1, 1, 2, 4], + [1, 2, 1, 4, 2, 1], + [1, 4, 1, 1, 2, 2], + [1, 4, 1, 2, 2, 1], + [1, 1, 2, 2, 1, 4], + [1, 1, 2, 4, 1, 2], + [1, 2, 2, 1, 1, 4], + [1, 2, 2, 4, 1, 1], + [1, 4, 2, 1, 1, 2], + [1, 4, 2, 2, 1, 1], + [2, 4, 1, 2, 1, 1], + [2, 2, 1, 1, 1, 4], + [4, 1, 3, 1, 1, 1], + [2, 4, 1, 1, 1, 2], + [1, 3, 4, 1, 1, 1], + [1, 1, 1, 2, 4, 2], + [1, 2, 1, 1, 4, 2], + [1, 2, 1, 2, 4, 1], + [1, 1, 4, 2, 1, 2], + [1, 2, 4, 1, 1, 2], + [1, 2, 4, 2, 1, 1], + [4, 1, 1, 2, 1, 2], + [4, 2, 1, 1, 1, 2], + [4, 2, 1, 2, 1, 1], + [2, 1, 2, 1, 4, 1], + [2, 1, 4, 1, 2, 1], + [4, 1, 2, 1, 2, 1], + [1, 1, 1, 1, 4, 3], + [1, 1, 1, 3, 4, 1], + [1, 3, 1, 1, 4, 1], + [1, 1, 4, 1, 1, 3], + [1, 1, 4, 3, 1, 1], + [4, 1, 1, 1, 1, 3], + [4, 1, 1, 3, 1, 1], + [1, 1, 3, 1, 4, 1], + [1, 1, 4, 1, 3, 1], + [3, 1, 1, 1, 4, 1], + [4, 1, 1, 1, 3, 1], + [2, 1, 1, 4, 1, 2], + [2, 1, 1, 2, 1, 4], + [2, 1, 1, 2, 3, 2], + [2, 3, 3, 1, 1, 1, 2] + ]} + }; + + Code128Reader.prototype = Object.create(BarcodeReader.prototype, properties); + Code128Reader.prototype.constructor = Code128Reader; + + Code128Reader.prototype._decodeCode = function(start) { + var counter = [0, 0, 0, 0, 0, 0], + i, + self = this, + offset = start, + isWhite = !self._row[offset], + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : start, + end : start + }, + code, + error, + normalized; + + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + normalized = self._normalize(counter); + for ( code = 0; code < self.CODE_PATTERN.length; code++) { + error = self._matchPattern(normalized, self.CODE_PATTERN[code]); + if (error < bestMatch.error) { + bestMatch.code = code; + bestMatch.error = error; + } + } + bestMatch.end = i; + return bestMatch; + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + return null; + }; + + Code128Reader.prototype._findEnd = function() { + var counter = [0, 0, 0, 0, 0, 0, 0], + i, + self = this, + offset = self._nextSet(self._row), + isWhite = !self._row[offset], + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : 0, + end : 0 + }, + error, + j, + sum, + normalized; + + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + sum = 0; + for ( j = 0; j < counter.length; j++) { + sum += counter[j]; + } + normalized = self._normalize(counter, 13); + error = self._matchPattern(normalized, self.CODE_PATTERN[self.STOP_CODE]); + if (error < 3) { + bestMatch.error = error; + bestMatch.start = i - sum; + bestMatch.end = i; + return bestMatch; + } + + for ( j = 0; j < 5; j++) { + counter[j] = counter[j + 2]; + } + counter[5] = 0; + counter[6] = 0; + counterPos--; + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + return null; + }; + + Code128Reader.prototype._findStart = function() { + var counter = [0, 0, 0, 0, 0, 0], + i, + self = this, + offset = self._nextSet(self._row), + isWhite = false, + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : 0, + end : 0 + }, + code, + error, + j, + sum, + normalized; + + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + sum = 0; + for ( j = 0; j < counter.length; j++) { + sum += counter[j]; + } + normalized = self._normalize(counter); + for ( code = self.START_CODE_A; code <= self.START_CODE_C; code++) { + error = self._matchPattern(normalized, self.CODE_PATTERN[code]); + if (error < bestMatch.error) { + bestMatch.code = code; + bestMatch.error = error; + } + } + if (bestMatch.error < 3) { + bestMatch.start = i - sum; + bestMatch.end = i; + return bestMatch; + } + + for ( j = 0; j < 4; j++) { + counter[j] = counter[j + 2]; + } + counter[4] = 0; + counter[5] = 0; + counterPos--; + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + return null; + }; + + Code128Reader.prototype._decode = function() { + var self = this, + startInfo = self._findStart(), + code = null, + done = false, + result = [], + multiplier = 0, + checksum = 0, + codeset, + rawResult = [], + decodedCodes = [], + shiftNext = false, + unshift, + lastCharacterWasPrintable; + + if (startInfo === null) { + return null; + } + code = { + code : startInfo.code, + start : startInfo.start, + end : startInfo.end + }; + decodedCodes.push(code); + checksum = code.code; + switch(code.code) { + case self.START_CODE_A: + codeset = self.CODE_A; + break; + case self.START_CODE_B: + codeset = self.CODE_B; + break; + case self.START_CODE_C: + codeset = self.CODE_C; + break; + default: + return null; + } + + while (!done) { + unshift = shiftNext; + shiftNext = false; + code = self._decodeCode(code.end); + if (code !== null) { + if (code.code !== self.STOP_CODE) { + rawResult.push(code.code); + multiplier++; + checksum += multiplier * code.code; + } + decodedCodes.push(code); + + switch(codeset) { + case self.CODE_A: + if (code.code < 64) { + result.push(String.fromCharCode(32 + code.code)); + } else if (code.code < 96) { + result.push(String.fromCharCode(code.code - 64)); + } else { + switch (code.code) { + case self.CODE_SHIFT: + shiftNext = true; + codeset = self.CODE_B; + break; + case self.CODE_B: + codeset = self.CODE_B; + break; + case self.CODE_C: + codeset = self.CODE_C; + break; + case self.STOP_CODE: + done = true; + break; + } + } + break; + case self.CODE_B: + if (code.code < 96) { + result.push(String.fromCharCode(32 + code.code)); + } else { + if (code.code != self.STOP_CODE) { + lastCharacterWasPrintable = false; + } + switch (code.code) { + case self.CODE_SHIFT: + shiftNext = true; + codeset = self.CODE_A; + break; + case self.CODE_A: + codeset = self.CODE_A; + break; + case self.CODE_C: + codeset = self.CODE_C; + break; + case self.STOP_CODE: + done = true; + break; + } + } + break; + case self.CODE_C: + if (code.code < 100) { + result.push(code.code < 10 ? "0" + code.code : code.code); + } + switch (code.code) { + case self.CODE_A: + codeset = self.CODE_A; + break; + case self.CODE_B: + codeset = self.CODE_B; + break; + case self.STOP_CODE: + done = true; + break; + } + break; + } + } else { + done = true; + } + if (unshift) { + codeset = codeset == self.CODE_A ? self.CODE_B : self.CODE_A; + } + } + + if (code === null) { + return null; + } + + // find end bar + code.end = self._nextUnset(self._row, code.end); + if (code.end === self._row.length) { + return null; + } + + // checksum + // Does not work correctly yet!!! startcode - endcode? + checksum -= multiplier * rawResult[rawResult.length - 1]; + if (checksum % 103 != rawResult[rawResult.length - 1]) { + return null; + } + + // remove last code from result (checksum) + result.splice(result.length - 1, 1); + + return { + code : result.join(""), + start : startInfo.start, + end : code.end, + codeset : codeset, + startInfo : startInfo, + decodedCodes : decodedCodes, + endInfo : code + }; + }; + + return (Code128Reader); + } +); \ No newline at end of file diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..d2a7048 --- /dev/null +++ b/src/config.js @@ -0,0 +1,43 @@ +/** + * The basic configuration + */ + +define(function(){ + var config = { + inputStream: { name: "Live", + type: "LiveStream" + }, + tracking: false, + debug: false, + controls: false, + locate: true, + visual: { + show: true + }, + decoder:{ + drawBoundingBox: true, + showFrequency: false, + drawScanline: true, + showPattern: false, + readers: [ + 'code_128_reader' + ] + }, + locator: { + showCanvas: false, + showPatches: false, + showFoundPatches: false, + showSkeleton: false, + showLabels: false, + showPatchLabels: false, + showRemainingPatchLabels: false, + boxFromPatches: { + showTransformed: false, + showTransformedBox: false, + showBB: false + } + } + }; + + return config; +}); \ No newline at end of file diff --git a/src/cv_utils.js b/src/cv_utils.js new file mode 100644 index 0000000..f7c629b --- /dev/null +++ b/src/cv_utils.js @@ -0,0 +1,544 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, vec2, vec3 */ + +define(['cluster', 'glMatrixAddon', "array_helper"], function(Cluster2, glMatrixAddon, ArrayHelper) { + + "use strict"; + /* + * cv_utils.js + * Collection of CV functions and libraries + */ + + /** + * Namespace for various CV alorithms + * @class Represents a collection of useful CV algorithms/functions + */ + + var CVUtils = {}; + + /** + * @param x x-coordinate + * @param y y-coordinate + * @return ImageReference {x,y} Coordinate + */ + CVUtils.imageRef = function(x, y) { + var that = { + x : x, + y : y, + toVec2 : function() { + return vec2.create([this.x, this.y]); + }, + toVec3 : function() { + return vec3.create([this.x, this.y, 1]); + }, + round : function() { + this.x = this.x > 0.0 ? Math.floor(this.x + 0.5) : Math.floor(this.x - 0.5); + this.y = this.y > 0.0 ? Math.floor(this.y + 0.5) : Math.floor(this.y - 0.5); + return this; + } + }; + return that; + }; + + /** + * Computes an integral image of a given grayscale image. + * @param imageDataContainer {ImageDataContainer} the image to be integrated + */ + CVUtils.computeIntegralImage2 = function(imageWrapper, integralWrapper) { + var imageData = imageWrapper.data; + var width = imageWrapper.size.x; + var height = imageWrapper.size.y; + var integralImageData = integralWrapper.data; + var sum = 0, posA = 0, posB = 0, posC = 0, posD = 0, x, y; + + // sum up first column + posB = width; + sum = 0; + for ( y = 1; y < height; y++) { + sum += imageData[posA]; + integralImageData[posB] += sum; + posA += width; + posB += width; + } + + posA = 0; + posB = 1; + sum = 0; + for ( x = 1; x < width; x++) { + sum += imageData[posA]; + integralImageData[posB] += sum; + posA++; + posB++; + } + + for ( y = 1; y < height; y++) { + posA = y * width + 1; + posB = (y - 1) * width + 1; + posC = y * width; + posD = (y - 1) * width; + for ( x = 1; x < width; x++) { + integralImageData[posA] += imageData[posA] + integralImageData[posB] + integralImageData[posC] - integralImageData[posD]; + posA++; + posB++; + posC++; + posD++; + } + } + }; + + CVUtils.computeIntegralImage = function(imageWrapper, integralWrapper) { + var imageData = imageWrapper.data; + var width = imageWrapper.size.x; + var height = imageWrapper.size.y; + var integralImageData = integralWrapper.data; + var sum = 0; + + // sum up first row + for (var i = 0; i < width; i++) { + sum += imageData[i]; + integralImageData[i] = sum; + } + + for (var v = 1; v < height; v++) { + sum = 0; + for (var u = 0; u < width; u++) { + sum += imageData[v * width + u]; + integralImageData[((v) * width) + u] = sum + integralImageData[(v - 1) * width + u]; + } + } + }; + + CVUtils.thresholdImage = function(imageWrapper, threshold, targetWrapper) { + if (!targetWrapper) { + targetWrapper = imageWrapper; + } + var imageData = imageWrapper.data, length = imageData.length, targetData = targetWrapper.data; + + while (length--) { + targetData[length] = imageData[length] < threshold ? 0 : 1; + } + }; + + CVUtils.computeHistogram = function(imageWrapper) { + var imageData = imageWrapper.data, length = imageData.length, i, hist = new Int32Array(256); + + // init histogram + for ( i = 0; i < 256; i++) { + hist[i] = 0; + } + + while (length--) { + hist[imageData[length]]++; + } + return hist; + }; + + CVUtils.otsuThreshold = function(imageWrapper, targetWrapper) { + var hist, threshold; + + function px(init, end) { + var sum = 0, i; + for ( i = init; i <= end; i++) { + sum += hist[i]; + } + return sum; + } + + function mx(init, end) { + var i, sum = 0; + + for ( i = init; i <= end; i++) { + sum += i * hist[i]; + } + + return sum; + } + + function determineThreshold() { + var vet = [0], p1, p2, p12, k, m1, m2, m12; + + hist = CVUtils.computeHistogram(imageWrapper); + for ( k = 1; k < 255; k++) { + p1 = px(0, k); + p2 = px(k + 1, 255); + p12 = p1 * p2; + if (p12 === 0) { + p12 = 1; + } + m1 = mx(0, k) * p2; + m2 = mx(k + 1, 255) * p1; + m12 = m1 - m2; + vet[k] = m12 * m12 / p12; + } + return ArrayHelper.maxIndex(vet); + } + + threshold = determineThreshold(); + CVUtils.thresholdImage(imageWrapper, threshold, targetWrapper); + return threshold; + }; + + // local thresholding + CVUtils.computeBinaryImage = function(imageWrapper, integralWrapper, targetWrapper) { + CVUtils.computeIntegralImage(imageWrapper, integralWrapper); + + if (!targetWrapper) { + targetWrapper = imageWrapper; + } + var imageData = imageWrapper.data; + var targetData = targetWrapper.data; + var width = imageWrapper.size.x; + var height = imageWrapper.size.y; + var integralImageData = integralWrapper.data; + var sum = 0, v, u, kernel = 3, A, B, C, D, avg, size = (kernel * 2 + 1) * (kernel * 2 + 1); + + // clear out top & bottom-border + for ( v = 0; v <= kernel; v++) { + for ( u = 0; u < width; u++) { + targetData[((v) * width) + u] = 0; + targetData[(((height - 1) - v) * width) + u] = 0; + } + } + + // clear out left & right border + for ( v = kernel; v < height - kernel; v++) { + for ( u = 0; u <= kernel; u++) { + targetData[((v) * width) + u] = 0; + targetData[((v) * width) + (width - 1 - u)] = 0; + } + } + + for ( v = kernel + 1; v < height - kernel - 1; v++) { + for ( u = kernel + 1; u < width - kernel; u++) { + A = integralImageData[(v - kernel - 1) * width + (u - kernel - 1)]; + B = integralImageData[(v - kernel - 1) * width + (u + kernel)]; + C = integralImageData[(v + kernel) * width + (u - kernel - 1)]; + D = integralImageData[(v + kernel) * width + (u + kernel)]; + sum = D - C - B + A; + avg = sum / (size); + targetData[v * width + u] = imageData[v * width + u] > (avg + 5) ? 0 : 1; + } + } + }; + + CVUtils.cluster = function(points, threshold, property) { + var i, k, cluster, point, clusters = []; + + if (!property) { + property = "rad"; + } + + function addToCluster(point) { + var found = false; + for ( k = 0; k < clusters.length; k++) { + cluster = clusters[k]; + if (cluster.fits(point)) { + cluster.add(point); + found = true; + } + } + return found; + } + + // iterate over each cloud + for ( i = 0; i < points.length; i++) { + point = Cluster2.createPoint(points[i], i, property); + if (!addToCluster(point)) { + clusters.push(Cluster2.create(point, threshold)); + } + } + + return clusters; + + }; + + CVUtils.Tracer = { + trace : function(points, vec) { + var iteration, maxIterations = 10, top = [], result = [], centerPos = 0, currentPos = 0; + + function trace(idx, forward) { + var from, to, toIdx, predictedPos, thresholdX = 1, thresholdY = Math.abs(vec[1] / 10), found = false; + + function match(pos, predicted) { + if (pos.x > (predicted.x - thresholdX) && pos.x < (predicted.x + thresholdX) && pos.y > (predicted.y - thresholdY) && pos.y < (predicted.y + thresholdY)) { + return true; + } else { + return false; + } + } + + // check if the next index is within the vec specifications + // if not, check as long as the threshold is met + + from = points[idx]; + if (forward) { + predictedPos = { + x : from.x + vec[0], + y : from.y + vec[1] + }; + } else { + predictedPos = { + x : from.x - vec[0], + y : from.y - vec[1] + }; + } + + toIdx = forward ? idx + 1 : idx - 1; + to = points[toIdx]; + while (to && ( found = match(to, predictedPos)) !== true && (Math.abs(to.y - from.y) < vec[1])) { + toIdx = forward ? toIdx + 1 : toIdx - 1; + to = points[toIdx]; + } + + return found ? toIdx : null; + } + + for ( iteration = 0; iteration < maxIterations; iteration++) { + // randomly select point to start with + centerPos = Math.floor(Math.random() * points.length); + + // trace forward + top = []; + currentPos = centerPos; + top.push(points[currentPos]); + while (( currentPos = trace(currentPos, true)) !== null) { + top.push(points[currentPos]); + } + if (centerPos > 0) { + currentPos = centerPos; + while (( currentPos = trace(currentPos, false)) !== null) { + top.push(points[currentPos]); + } + } + + if (top.length > result.length) { + result = top; + } + } + + return result; + + } + }; + + CVUtils.DILATE = 1; + CVUtils.ERODE = 2; + + CVUtils.dilate = function(inImageWrapper, outImageWrapper) { + var v, u, inImageData = inImageWrapper.data, outImageData = outImageWrapper.data, height = inImageWrapper.size.y, width = inImageWrapper.size.x, sum, yStart1, yStart2, xStart1, xStart2; + + for ( v = 1; v < height - 1; v++) { + for ( u = 1; u < width - 1; u++) { + yStart1 = v - 1; + yStart2 = v + 1; + xStart1 = u - 1; + xStart2 = u + 1; + sum = inImageData[yStart1 * width + xStart1]/* + inImageData[yStart1*width+u] */ + inImageData[yStart1 * width + xStart2] + + /* inImageData[v*width+xStart1] + */ + inImageData[v * width + u] + /* inImageData[v*width+xStart2] +*/ + inImageData[yStart2 * width + xStart1]/* + inImageData[yStart2*width+u]*/ + inImageData[yStart2 * width + xStart2]; + outImageData[v * width + u] = sum > 0 ? 1 : 0; + } + } + }; + + CVUtils.erode = function(inImageWrapper, outImageWrapper) { + var v, u, inImageData = inImageWrapper.data, outImageData = outImageWrapper.data, height = inImageWrapper.size.y, width = inImageWrapper.size.x, sum, yStart1, yStart2, xStart1, xStart2; + + for ( v = 1; v < height - 1; v++) { + for ( u = 1; u < width - 1; u++) { + yStart1 = v - 1; + yStart2 = v + 1; + xStart1 = u - 1; + xStart2 = u + 1; + sum = inImageData[yStart1 * width + xStart1]/* + inImageData[yStart1*width+u] */ + inImageData[yStart1 * width + xStart2] + + /* inImageData[v*width+xStart1] + */ + inImageData[v * width + u] + /* inImageData[v*width+xStart2] +*/ + inImageData[yStart2 * width + xStart1]/* + inImageData[yStart2*width+u]*/ + inImageData[yStart2 * width + xStart2]; + outImageData[v * width + u] = sum === 5 ? 1 : 0; + } + } + }; + + CVUtils.subtract = function(aImageWrapper, bImageWrapper, resultImageWrapper) { + if (!resultImageWrapper) { + resultImageWrapper = aImageWrapper; + } + var length = aImageWrapper.data.length, aImageData = aImageWrapper.data, bImageData = bImageWrapper.data, cImageData = resultImageWrapper.data; + + while (length--) { + cImageData[length] = aImageData[length] - bImageData[length]; + } + }; + + CVUtils.bitwiseOr = function(aImageWrapper, bImageWrapper, resultImageWrapper) { + if (!resultImageWrapper) { + resultImageWrapper = aImageWrapper; + } + var length = aImageWrapper.data.length, aImageData = aImageWrapper.data, bImageData = bImageWrapper.data, cImageData = resultImageWrapper.data; + + while (length--) { + cImageData[length] = aImageData[length] || bImageData[length]; + } + }; + + CVUtils.countNonZero = function(imageWrapper) { + var length = imageWrapper.data.length, data = imageWrapper.data, sum = 0; + + while (length--) { + sum += data[length]; + } + return sum; + }; + + CVUtils.topGeneric = function(list, top, scoreFunc) { + var i, minIdx = 0, min = 0, queue = [], score, hit, pos; + + for ( i = 0; i < top; i++) { + queue[i] = { + score : 0, + item : null + }; + } + + for ( i = 0; i < list.length; i++) { + score = scoreFunc.apply(this, [list[i]]); + if (score > min) { + hit = queue[minIdx]; + hit.score = score; + hit.item = list[i]; + min = Number.MAX_VALUE; + for ( pos = 0; pos < top; pos++) { + if (queue[pos].score < min) { + min = queue[pos].score; + minIdx = pos; + } + } + } + } + + return queue; + }; + + CVUtils.grayArrayFromImage = function(htmlImage, offsetX, ctx, array) { + ctx.drawImage(htmlImage, offsetX, 0, htmlImage.width, htmlImage.height); + var ctxData = ctx.getImageData(offsetX, 0, htmlImage.width, htmlImage.height).data; + CVUtils.computeGray(ctxData, array); + }; + + CVUtils.grayArrayFromContext = function(ctx, size, offset, array) { + var ctxData = ctx.getImageData(offset.x, offset.y, size.x, size.y).data; + CVUtils.computeGray(ctxData, array); + }; + + CVUtils.grayAndHalfSampleFromCanvasData = function(canvasData, size, outArray) { + var topRowIdx = 0; + var bottomRowIdx = size.x; + var endIdx = Math.floor(canvasData.length / 4); + var outWidth = size.x / 2; + var outImgIdx = 0; + var inWidth = size.x; + var i; + + while (bottomRowIdx < endIdx) { + for ( i = 0; i < outWidth; i++) { + outArray[outImgIdx] = Math.floor(((0.299 * canvasData[topRowIdx * 4 + 0] + 0.587 * canvasData[topRowIdx * 4 + 1] + 0.114 * canvasData[topRowIdx * 4 + 2]) + (0.299 * canvasData[(topRowIdx + 1) * 4 + 0] + 0.587 * canvasData[(topRowIdx + 1) * 4 + 1] + 0.114 * canvasData[(topRowIdx + 1) * 4 + 2]) + (0.299 * canvasData[(bottomRowIdx) * 4 + 0] + 0.587 * canvasData[(bottomRowIdx) * 4 + 1] + 0.114 * canvasData[(bottomRowIdx) * 4 + 2]) + (0.299 * canvasData[(bottomRowIdx + 1) * 4 + 0] + 0.587 * canvasData[(bottomRowIdx + 1) * 4 + 1] + 0.114 * canvasData[(bottomRowIdx + 1) * 4 + 2])) / 4); + outImgIdx++; + topRowIdx = topRowIdx + 2; + bottomRowIdx = bottomRowIdx + 2; + } + topRowIdx = topRowIdx + inWidth; + bottomRowIdx = bottomRowIdx + inWidth; + } + + }; + + CVUtils.computeGray = function(imageData, outArray) { + var l = imageData.length / 4; + var i = 0; + for ( i = 0; i < l; i++) { + //outArray[i] = (0.299*imageData[i*4+0] + 0.587*imageData[i*4+1] + 0.114*imageData[i*4+2]); + + outArray[i] = Math.floor(0.299 * imageData[i * 4 + 0] + 0.587 * imageData[i * 4 + 1] + 0.114 * imageData[i * 4 + 2]); + } + }; + + CVUtils.loadImageArray = function(src, callback, canvas) { + if (!canvas) + canvas = document.createElement('canvas'); + var img = new Image(); + img.callback = callback; + img.onload = function() { + canvas.width = this.width; + canvas.height = this.height; + var ctx = canvas.getContext('2d'); + ctx.drawImage(this, 0, 0); + var array = new Uint8Array(this.width * this.height); + ctx.drawImage(this, 0, 0); + var data = ctx.getImageData(0, 0, this.width, this.height).data; + CVUtils.computeGray(data, array); + this.callback(array, { + x : this.width, + y : this.height + }, this); + }; + img.src = src; + }; + + /** + * @param inImg {ImageWrapper} input image to be sampled + * @param outImg {ImageWrapper} to be stored in + */ + CVUtils.halfSample = function(inImgWrapper, outImgWrapper) { + var inImg = inImgWrapper.data; + var inWidth = inImgWrapper.size.x; + var outImg = outImgWrapper.data; + var topRowIdx = 0; + var bottomRowIdx = inWidth; + var endIdx = inImg.length; + var outWidth = inWidth / 2; + var outImgIdx = 0; + while (bottomRowIdx < endIdx) { + for (var i = 0; i < outWidth; i++) { + outImg[outImgIdx] = Math.floor((inImg[topRowIdx] + inImg[topRowIdx + 1] + inImg[bottomRowIdx] + inImg[bottomRowIdx + 1]) / 4); + outImgIdx++; + topRowIdx = topRowIdx + 2; + bottomRowIdx = bottomRowIdx + 2; + } + topRowIdx = topRowIdx + inWidth; + bottomRowIdx = bottomRowIdx + inWidth; + } + }; + + CVUtils.hsv2rgb = function(hsv, rgb) { + var h = hsv[0], s = hsv[1], v = hsv[2], c = v * s, x = c * (1 - Math.abs((h / 60) % 2 - 1)), m = v - c, r = 0, g = 0, b = 0; + rgb = rgb || [0, 0, 0]; + + if (h < 60) { + r = c; + g = x; + } else if (h < 120) { + r = x; + g = c; + } else if (h < 180) { + g = c; + b = x; + } else if (h < 240) { + g = x; + b = c; + } else if (h < 300) { + r = x; + b = c; + } else if (h < 360) { + r = c; + b = x; + } + rgb[0] = ((r + m) * 255) | 0; + rgb[1] = ((g + m) * 255) | 0; + rgb[2] = ((b + m) * 255) | 0; + return rgb; + }; + + return (CVUtils); +}); + diff --git a/src/ean_reader.js b/src/ean_reader.js new file mode 100644 index 0000000..87678dd --- /dev/null +++ b/src/ean_reader.js @@ -0,0 +1,254 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define( + [ + "./barcode_reader" + ], + function(BarcodeReader) { + "use strict"; + + function EANReader() { + BarcodeReader.call(this); + } + + var properties = { + CODE_L_START : {value: 0}, + MODULO : {value: 7}, + CODE_G_START : {value: 10}, + START_PATTERN : {value: [1 / 3 * 7, 1 / 3 * 7, 1 / 3 * 7]}, + STOP_PATTERN : {value: [1 / 3 * 7, 1 / 3 * 7, 1 / 3 * 7]}, + MIDDLE_PATTERN : {value: [1 / 5 * 7, 1 / 5 * 7, 1 / 5 * 7, 1 / 5 * 7, 1 / 5 * 7]}, + CODE_PATTERN : {value: [ + [3, 2, 1, 1], + [2, 2, 2, 1], + [2, 1, 2, 2], + [1, 4, 1, 1], + [1, 1, 3, 2], + [1, 2, 3, 1], + [1, 1, 1, 4], + [1, 3, 1, 2], + [1, 2, 1, 3], + [3, 1, 1, 2], + [1, 1, 2, 3], + [1, 2, 2, 2], + [2, 2, 1, 2], + [1, 1, 4, 1], + [2, 3, 1, 1], + [1, 3, 2, 1], + [4, 1, 1, 1], + [2, 1, 3, 1], + [3, 1, 2, 1], + [2, 1, 1, 3] + ]}, + CODE_FREQUENCY : {value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26]} + }; + + EANReader.prototype = Object.create(BarcodeReader.prototype, properties); + EANReader.prototype.constructor = EANReader; + + EANReader.prototype._decodeCode = function(start, coderange) { + var counter = [0, 0, 0, 0], + i, + self = this, + offset = start, + isWhite = !self._row[offset], + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : start, + end : start + }, + code, + error, + normalized; + + if (!coderange) { + coderange = self.CODE_PATTERN.length; + } + + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + normalized = self._normalize(counter); + for ( code = 0; code < coderange; code++) { + error = self._matchPattern(normalized, self.CODE_PATTERN[code]); + if (error < bestMatch.error) { + bestMatch.code = code; + bestMatch.error = error; + } + } + bestMatch.end = i; + return bestMatch; + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + throw BarcodeReader.CodeNotFoundException; + }; + + EANReader.prototype._findPattern = function(pattern, offset, isWhite, tryHarder, epsilon) { + var counter = [], + self = this, + i, + counterPos = 0, + bestMatch = { + error : Number.MAX_VALUE, + code : -1, + start : 0, + end : 0 + }, + error, + j, + sum, + normalized; + + if (!offset) { + offset = self._nextSet(self._row); + } + + if (isWhite === undefined) { + isWhite = false; + } + + if (tryHarder === undefined) { + tryHarder = true; + } + + if ( epsilon === undefined) { + epsilon = 2; + } + + for ( i = 0; i < pattern.length; i++) { + counter[i] = 0; + } + + for ( i = offset; i < self._row.length; i++) { + if (self._row[i] ^ isWhite) { + counter[counterPos]++; + } else { + if (counterPos === counter.length - 1) { + sum = 0; + for ( j = 0; j < counter.length; j++) { + sum += counter[j]; + } + normalized = self._normalize(counter); + error = self._matchPattern(normalized, pattern); + + if (error < epsilon) { + bestMatch.error = error; + bestMatch.start = i - sum; + bestMatch.end = i; + return bestMatch; + } + if (tryHarder) { + for ( j = 0; j < counter.length - 2; j++) { + counter[j] = counter[j + 2]; + } + counter[counter.length - 2] = 0; + counter[counter.length - 1] = 0; + counterPos--; + } else { + throw BarcodeReader.PatternNotFoundException; + } + } else { + counterPos++; + } + counter[counterPos] = 1; + isWhite = !isWhite; + } + } + throw BarcodeReader.PatternNotFoundException; + }; + + EANReader.prototype._decode = function() { + var startInfo, + self = this, + code = null, + result = [], + i, + codeFrequency = 0x0, + decodedCodes = []; + + try { + startInfo = self._findPattern(self.START_PATTERN); + code = { + code : startInfo.code, + start : startInfo.start, + end : startInfo.end + }; + decodedCodes.push(code); + for ( i = 0; i < 6; i++) { + code = self._decodeCode(code.end); + if (code.code >= self.CODE_G_START) { + code.code = code.code - self.CODE_G_START; + codeFrequency |= 1 << (5 - i); + } else { + codeFrequency |= 0 << (5 - i); + } + result.push(code.code); + decodedCodes.push(code); + } + + for ( i = 0; i < self.CODE_FREQUENCY.length; i++) { + if (codeFrequency === self.CODE_FREQUENCY[i]) { + result.unshift(i); + break; + } + } + + code = self._findPattern(self.MIDDLE_PATTERN, code.end, true); + if (code === null) { + return null; + } + decodedCodes.push(code); + + for ( i = 0; i < 6; i++) { + code = self._decodeCode(code.end, self.CODE_G_START); + decodedCodes.push(code); + result.push(code.code); + } + + code = self._findPattern(self.STOP_PATTERN, code.end); + decodedCodes.push(code); + + // Checksum + if (!self._checksum(result)) { + return null; + } + } catch (exc) { + return null; + } + + return { + code : result.join(""), + start : startInfo.start, + end : code.end, + codeset : "", + startInfo : startInfo, + decodedCodes : decodedCodes + }; + }; + + EANReader.prototype._checksum = function(result) { + var sum = 0, i; + + for ( i = result.length - 2; i >= 0; i -= 2) { + sum += result[i]; + } + sum *= 3; + for ( i = result.length - 1; i >= 0; i -= 2) { + sum += result[i]; + } + return sum % 10 === 0; + }; + + return (EANReader); + } +); \ No newline at end of file diff --git a/src/events.js b/src/events.js new file mode 100644 index 0000000..c81741f --- /dev/null +++ b/src/events.js @@ -0,0 +1,57 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define(function() { + "use strict"; + + var _events = function() { + var events = {}; + + function getEvent(eventName) { + if (!events[eventName]) { + events[eventName] = { + subscribers : [] + }; + } + return events[eventName]; + } + + function publishSubscription(subscription, data) { + if (subscription.async) { + setTimeout(function() { + subscription.callback.call(null, data); + }, 4); + } else { + subscription.callback.call(null, data); + } + } + + return { + subscribe : function(event, callback, async) { + var subscription; + + if ( typeof callback === "function") { + subscription = { + callback : callback, + async : async + }; + } else { + subscription = callback; + if (!subscription.callback) { + throw "Callback was not specified on options"; + } + } + + getEvent(event).subscribers.push(subscription); + }, + publish : function(eventName, data) { + var subscribers = getEvent(eventName).subscribers, i; + for ( i = 0; i < subscribers.length; i++) { + publishSubscription(subscribers[i], data); + } + } + }; + }(); + + return _events; +}); \ No newline at end of file diff --git a/src/frame_grabber.js b/src/frame_grabber.js new file mode 100644 index 0000000..2395446 --- /dev/null +++ b/src/frame_grabber.js @@ -0,0 +1,92 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define(["cv_utils"], function(CVUtils) { + "use strict"; + + var FrameGrabber = {}; + + FrameGrabber.create = function(inputStream, canvas) { + var _that = {}, + _streamConfig = inputStream.getConfig(), + _video_size = CVUtils.imageRef(inputStream.getRealWidth(), inputStream.getRealHeight()), + _size =_streamConfig.size ? CVUtils.imageRef(_streamConfig.size, _streamConfig.size) : _video_size, + _sx = 0, + _sy = 0, + _dx = 0, + _dy = 0, + _sWidth, + _dWidth, + _sHeight, + _dHeight, + _canvas = null, + _ctx = null, + _data = null; + + // Check if size is given + if (_streamConfig.size) { + if (_video_size.x/_video_size.y > 1) { + _size.x = _streamConfig.size; + _size.y = (_video_size.y/_video_size.x)*_streamConfig.size; + } else { + _size.y = _streamConfig.size; + _size.x = (_video_size.x/_video_size.y)*_streamConfig.size; + } + } + + _sWidth = _video_size.x; + _dWidth = _size.x; + _sHeight = _video_size.y; + _dHeight = _size.y; + + _canvas = canvas ? canvas : document.createElement("canvas"); + _canvas.width = _size.x; + _canvas.height = _size.y; + _ctx = _canvas.getContext("2d"); + _data = new Uint8Array(_size.x * _size.y); + + /** + * Uses the given array as frame-buffer + */ + _that.attachData = function(data) { + _data = data; + }; + + /** + * Returns the used frame-buffer + */ + _that.getData = function() { + return _data; + }; + + /** + * Fetches a frame from the input-stream and puts into the frame-buffer. + * The image-data is converted to gray-scale and then half-sampled if configured. + */ + _that.grab = function() { + var doHalfSample = _streamConfig.halfSample, + frame = inputStream.getFrame(), + ctxData; + if (frame) { + _ctx.drawImage(frame, _sx, _sy, _sWidth, _sHeight, _dx, _dy, _dWidth, _dHeight); + ctxData = _ctx.getImageData(0, 0, _size.x, _size.y).data; + if(doHalfSample){ + CVUtils.grayAndHalfSampleFromCanvasData(ctxData, _size, _data); + } else { + CVUtils.computeGray(ctxData, _data); + } + return true; + } else { + return false; + } + }; + + _that.getSize = function() { + return _size; + }; + + return _that; + }; + + return (FrameGrabber); +}); diff --git a/src/glMatrixAddon.js b/src/glMatrixAddon.js new file mode 100644 index 0000000..583bc63 --- /dev/null +++ b/src/glMatrixAddon.js @@ -0,0 +1,429 @@ +/* + +Copyright (C) 2011 + - Christoph Oberhofer (ar.oberhofer@gmail.com) + - Jens Grubert (jg@jensgrubert.de) + - Gerhard Reitmayr (reitmayr@icg.tugraz.at) +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + + +/* + * glMatrixAddon.js + * Extension to the glMatrix library. The original glMatrix library + * was created by Brandon Jones. + */ + + +mat4.xVec4 = function(mat, vec, dest){ + if(!dest) { dest = vec; } + var x = vec[0], y = vec[1], z = vec[2], w = vec[3]; + + dest[0] = mat[0]*x + mat[1]*y + mat[2]*z + mat[3]*w; + dest[1] = mat[4]*x + mat[5]*y + mat[6]*z + mat[7]*w; + dest[2] = mat[8]*x + mat[9]*y + mat[10]*z + mat[11]*w; + dest[3] = mat[12]*x + mat[13]*y + mat[14]*z + mat[15]*w; + + return dest; +}; + +mat3.scale = function(mat, scalar, dest){ + if(!dest || mat == dest) { + mat[0] *= scalar; + mat[1] *= scalar; + mat[2] *= scalar; + mat[3] *= scalar; + mat[4] *= scalar; + mat[5] *= scalar; + mat[6] *= scalar; + mat[7] *= scalar; + mat[8] *= scalar; + return mat; + } + dest = mat3.create(); + dest[0] = mat[0]*scalar; + dest[1] = mat[1]*scalar; + dest[2] = mat[2]*scalar; + dest[3] = mat[3]*scalar; + dest[4] = mat[4]*scalar; + dest[5] = mat[5]*scalar; + dest[6] = mat[6]*scalar; + dest[7] = mat[7]*scalar; + dest[8] = mat[8]*scalar; + return dest; +}; + +mat3.inverse = function(mat, dest){ + if(!dest) { dest = mat; } + + var ha00 = mat[0], ha01 = mat[1], ha02 = mat[2]; + var ha10 = mat[3], ha11 = mat[4], ha12 = mat[5]; + var ha20 = mat[6], ha21 = mat[7], ha22 = mat[8]; + + var invDetA = 1/(ha00*ha11*ha22 + ha01*ha12*ha20 + ha02*ha10*ha21 - ha02*ha11*ha20 - ha01*ha10*ha22 - ha00*ha12*ha21); + dest[0] = (ha11*ha22 - ha12*ha21)*invDetA; + dest[1] = (ha02*ha21 - ha01*ha22)*invDetA; + dest[2] = (ha01*ha12 - ha02*ha11)*invDetA; + dest[3] = (ha12*ha20 - ha10*ha22)*invDetA; + dest[4] = (ha00*ha22 - ha02*ha20)*invDetA; + dest[5] = (ha02*ha10 - ha00*ha12)*invDetA; + dest[6] = (ha10*ha21 - ha11*ha20)*invDetA; + dest[7] = (ha01*ha20 - ha00*ha21)*invDetA; + dest[8] = (ha00*ha11 - ha01*ha10)*invDetA; + return dest; +}; + +mat3.multiply = function(mat, mat2, dest) { + if(!dest) { dest = mat; } + + var ha00 = mat[0], ha01 = mat[1], ha02 = mat[2]; + var ha10 = mat[3], ha11 = mat[4], ha12 = mat[5]; + var ha20 = mat[6], ha21 = mat[7], ha22 = mat[8]; + + var hb00 = mat2[0], hb01 = mat2[1], hb02 = mat2[2]; + var hb10 = mat2[3], hb11 = mat2[4], hb12 = mat2[5]; + var hb20 = mat2[6], hb21 = mat2[7], hb22 = mat2[8]; + + dest[0] = ha00*hb00 + ha01*hb10 + ha02*hb20; + dest[1] = ha00*hb01 + ha01*hb11 + ha02*hb21; + dest[2] = ha00*hb02 + ha01*hb12 + ha02*hb22; + + dest[3] = ha10*hb00 + ha11*hb10 + ha12*hb20; + dest[4] = ha10*hb01 + ha11*hb11 + ha12*hb21; + dest[5] = ha10*hb02 + ha11*hb12 + ha12*hb22; + + dest[6] = ha20*hb00 + ha21*hb10 + ha22*hb20; + dest[7] = ha20*hb01 + ha21*hb11 + ha22*hb21; + dest[8] = ha20*hb02 + ha21*hb12 + ha22*hb22; + return dest; +}; + +mat3.xVec3 = function(mat, vec, dest){ + if(!dest) { dest = vec; } + var x = vec[0], y = vec[1], z = vec[2]; + + dest[0] = mat[0]*x + mat[1]*y + mat[2]*z; + dest[1] = mat[3]*x + mat[4]*y + mat[5]*z; + dest[2] = mat[6]*x + mat[7]*y + mat[8]*z; + + return dest; +}; + +var vec4={}; + +vec4.create = function(vec){ + var dest; + + if(vec) { + dest = new glMatrixArrayType(4); + dest[0] = vec[0]; + dest[1] = vec[1]; + dest[2] = vec[2]; + dest[3] = vec[3]; + } else { + if(glMatrixArrayType === Array) + dest = new glMatrixArrayType([0,0,0,0]); + else + dest = new glMatrixArrayType(4); + } + + return dest; +}; + +vec4.project = function(vec, dest){ + if(!dest) { dest = vec; } + + dest[0] = vec[0]/vec[3]; + dest[1] = vec[1]/vec[3]; + dest[2] = vec[2]/vec[3]; + return dest; +}; + +vec4.scale = function(vec, val, dest){ + if(!dest || vec == dest) { + vec[0] *= val; + vec[1] *= val; + vec[2] *= val; + vec[4] *= val; + return vec; + } + + dest[0] = vec[0]*val; + dest[1] = vec[1]*val; + dest[2] = vec[2]*val; + dest[3] = vec[3]*val; + return dest; +}; + +vec4.xMat4 = function(vec, mat, dest){ + if(!dest) { dest = vec; } + + var x = vec[0], y = vec[1], z = vec[2], w = vec[3]; + + dest[0] = mat[0]*x + mat[4]*y + mat[8]*z + mat[12]*w; + dest[1] = mat[1]*x + mat[5]*y + mat[9]*z + mat[13]*w; + dest[2] = mat[2]*x + mat[6]*y + mat[10]*z + mat[14]*w; + dest[3] = mat[3]*x + mat[7]*y + mat[11]*z + mat[15]*w; + + return dest; +}; + + +var mat2 = {}; + +mat2.create = function(mat){ + var dest; + + if(mat) { + dest = new glMatrixArrayType(4); + dest[0] = mat[0]; + dest[1] = mat[1]; + dest[2] = mat[2]; + dest[3] = mat[3]; + } else { + if(glMatrixArrayType === Array) + dest = new glMatrixArrayType([0,0,0,0]); + else + dest = new glMatrixArrayType(4); + } + + return dest; +}; + +mat2.xVec2 = function(mat, vec, dest){ + if(!dest) { dest = vec; } + var x = vec[0], y = vec[1]; + + dest[0] = mat[0]*x + mat[1]*y; + dest[1] = mat[2]*x + mat[3]*y; + + return dest; +}; + +mat2.scale = function(mat, scale, dest){ + if(!dest || mat == dest) { + mat[0] *= scale; + mat[1] *= scale; + mat[2] *= scale; + mat[3] *= scale; + return mat; + } + + dest[0] = mat[0]*scale; + dest[1] = mat[1]*scale; + dest[2] = mat[2]*scale; + dest[3] = mat[3]*scale; + return dest; +}; + +mat2.determinant = function(mat){ + return mat[0]*mat[3] - mat[1]*mat[2]; +}; + +mat2.inverse = function(mat){ + var scale = 1/(mat2.determinant(mat)); + var a = mat[3]*scale, + b = -mat[1]*scale, + c = -mat[2]*scale, + d = mat[0]; + mat[0] = a; + mat[1] = b; + mat[2] = c; + mat[3] = d; + return mat; +}; + +var vec2 = {}; +vec2.create = function(vec){ + var dest; + + if(vec) { + dest = new glMatrixArrayType(2); + dest[0] = vec[0]; + dest[1] = vec[1]; + } else { + if(glMatrixArrayType === Array) + dest = new glMatrixArrayType([0,0]); + else + dest = new glMatrixArrayType(2); + } + + return dest; +}; + +vec2.subtract = function(vec, vec2, dest) { + if(!dest || vec == dest) { + vec[0] -= vec2[0]; + vec[1] -= vec2[1]; + return vec; + } + + dest[0] = vec[0] - vec2[0]; + dest[1] = vec[1] - vec2[1]; + return dest; +}; + +vec2.add = function(vec, vec2, dest) { + if(!dest || vec == dest) { + vec[0] += vec2[0]; + vec[1] += vec2[1]; + return vec; + } + + dest[0] = vec[0] + vec2[0]; + dest[1] = vec[1] + vec2[1]; + return dest; +}; + +vec2.scale = function(vec, val, dest) { + if(!dest || vec == dest) { + vec[0] *= val; + vec[1] *= val; + return vec; + } + + dest[0] = vec[0]*val; + dest[1] = vec[1]*val; + return dest; +}; + +vec2.normalize = function(vec, dest) { + if(!dest) { dest = vec; } + + var x = vec[0], y = vec[1]; + var len = Math.sqrt(x*x + y*y); + + if (!len) { + dest[0] = 0; + dest[1] = 0; + return dest; + } else if (len == 1) { + dest[0] = x; + dest[1] = y; + return dest; + } + + len = 1 / len; + dest[0] = x*len; + dest[1] = y*len; + return dest; +}; + +vec2.dot = function(vec, vec2){ + return vec[0]*vec2[0] + vec[1]*vec2[1]; +}; + +vec2.multiply = function(vec, vec2, dest){ + if(!dest) { dest = vec; } + + dest[0] = vec[0]*vec2[0]; + dest[1] = vec[1]*vec2[1]; + return dest; +}; + +/** + * @param vec vec2 to be unprojected [x,y] -> [x,y,1] + * @returns vec3 unprojected vector + */ +vec2.unproject = function(vec){ + return vec3.create([vec[0], vec[1], 1]); +}; + +vec2.length = function(vec){ + return Math.sqrt(vec[0]*vec[0] + vec[1]*vec[1]); +}; + +vec2.perspectiveProject = function(vec){ + var result = vec2.create(vec); + return vec2.scale(result, 1/vec[2]); +}; + +/** + * @param vec vec3 to be projected [x,y,z] -> [x/z,y/z] + * @returns vec2 projected vector + */ +vec3.project = function(vec){ + return vec2.scale(vec2.create(vec), 1/vec[2]); +}; + +var vec6 = {}; +vec6.scale = function(vec, val, dest){ + if(!dest || vec == dest) { + vec[0] *= val; + vec[1] *= val; + vec[2] *= val; + vec[3] *= val; + vec[4] *= val; + vec[5] *= val; + return vec; + } + + dest[0] = vec[0]*val; + dest[1] = vec[1]*val; + dest[2] = vec[2]*val; + dest[3] = vec[3]*val; + dest[4] = vec[4]*val; + dest[5] = vec[5]*val; + return dest; +}; + +vec6.subtract = function(vec, vec2, dest){ + if(!dest || vec == dest) { + vec[0] -= vec2[0]; + vec[1] -= vec2[1]; + vec[2] -= vec2[2]; + vec[3] -= vec2[3]; + vec[4] -= vec2[4]; + vec[5] -= vec2[5]; + return vec; + } + + dest[0] = vec[0] - vec2[0]; + dest[1] = vec[1] - vec2[1]; + dest[2] = vec[2] - vec2[2]; + dest[3] = vec[3] - vec2[3]; + dest[4] = vec[4] - vec2[4]; + dest[5] = vec[5] - vec2[5]; + return dest; +}; + +vec6.dot = function(vec, vec2){ + return vec[0]*vec2[0] + vec[1]*vec2[1] + vec[2]*vec2[2] + vec[3]*vec2[3] + vec[4]*vec2[4] + vec[5]*vec2[5]; +}; + +var mat6 = {}; +mat6.xVec6 = function(mat, vec, dest){ + if(!dest) { dest = vec; } + var x = vec[0], y = vec[1], z = vec[2], u = vec[3], w = vec[4], v = vec[5]; + + dest[0] = mat[0]*x + mat[1]*y + mat[2]*z + mat[3]*u + mat[4]*w + mat[5]*v; + dest[1] = mat[6]*x + mat[7]*y + mat[8]*z + mat[9]*u + mat[10]*w + mat[11]*v; + dest[2] = mat[12]*x + mat[13]*y + mat[14]*z + mat[15]*u + mat[16]*w + mat[17]*v; + dest[3] = mat[18]*x + mat[19]*y + mat[20]*z + mat[21]*u + mat[22]*w + mat[23]*v; + dest[4] = mat[24]*x + mat[25]*y + mat[26]*z + mat[27]*u + mat[28]*w + mat[29]*v; + dest[5] = mat[30]*x + mat[31]*y + mat[32]*z + mat[33]*u + mat[34]*w + mat[35]*v; + + return dest; +}; + +mat3.xVec3 = function(mat, vec, dest){ + if(!dest) { dest = vec; } + var x = vec[0], y = vec[1], z = vec[2]; + + dest[0] = mat[0]*x + mat[1]*y + mat[2]*z; + dest[1] = mat[3]*x + mat[4]*y + mat[5]*z; + dest[2] = mat[6]*x + mat[7]*y + mat[8]*z; + + return dest; +}; \ No newline at end of file diff --git a/src/html_utils.js b/src/html_utils.js new file mode 100644 index 0000000..c26c13c --- /dev/null +++ b/src/html_utils.js @@ -0,0 +1,40 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define([], function() { + "use strict"; + + function createNode(htmlStr) { + var temp = document.createElement('div'); + + temp.innerHTML = htmlStr; + while (temp.firstChild) { + return temp.firstChild; + } + } + + function mergeObjects(obj1, obj2) { + for (var p in obj2) { + try { + if (obj2[p].constructor == Object) { + obj1[p] = mergeObjects(obj1[p], obj2[p]); + } else { + obj1[p] = obj2[p]; + } + } catch(e) { + obj1[p] = obj2[p]; + } + } + + return obj1; + } + + return { + createNode : function(htmlStr) { + return createNode(htmlStr); + }, + mergeObjects : function(obj1, obj2) { + return mergeObjects(obj1, obj2); + } + }; +}); \ No newline at end of file diff --git a/src/image_debug.js b/src/image_debug.js new file mode 100644 index 0000000..e0fbde1 --- /dev/null +++ b/src/image_debug.js @@ -0,0 +1,29 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define(function() { + "use strict"; + + return { + drawRect: function(pos, size, ctx, style){ + ctx.strokeStyle = style.color; + ctx.fillStyle = style.color; + ctx.lineWidth = 1; + ctx.beginPath(); + ctx.strokeRect(pos.x, pos.y, size.x, size.y); + }, + drawPath: function(path, def, ctx, style) { + ctx.strokeStyle = style.color; + ctx.fillStyle = style.color; + ctx.lineWidth = style.lineWidth; + ctx.beginPath(); + ctx.moveTo(path[0][def.x], path[0][def.y]); + for (var j = 1; j < path.length; j++) { + ctx.lineTo(path[j][def.x], path[j][def.y]); + } + ctx.closePath(); + ctx.stroke(); + } + }; + +}); diff --git a/src/image_loader.js b/src/image_loader.js new file mode 100644 index 0000000..09bb9f3 --- /dev/null +++ b/src/image_loader.js @@ -0,0 +1,63 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define(function() { + "use strict"; + + var ImageLoader = {}; + ImageLoader.load = function(directory, callback, offset, size, sequence) { + var htmlImagesSrcArray = new Array(size), + htmlImagesArray = new Array(htmlImagesSrcArray.length), + i, + img, + num; + + if (sequence === false) { + htmlImagesSrcArray[0] = directory; + } else { + for ( i = 0; i < htmlImagesSrcArray.length; i++) { + num = (offset + i); + htmlImagesSrcArray[i] = directory + "image-" + ("00" + num).slice(-3) + ".jpg"; + } + } + htmlImagesArray.notLoaded = []; + htmlImagesArray.addImage = function(img) { + htmlImagesArray.notLoaded.push(img); + }; + htmlImagesArray.loaded = function(loadedImg) { + var notloadedImgs = htmlImagesArray.notLoaded; + for (var x = 0; x < notloadedImgs.length; x++) { + if (notloadedImgs[x] == loadedImg) { + notloadedImgs.splice(x, 1); + for (var y = 0; y < htmlImagesSrcArray.length; y++) { + var imgName = htmlImagesSrcArray[y].substr(htmlImagesSrcArray[y].lastIndexOf("/")); + if (loadedImg.src.lastIndexOf(imgName) != -1) { + htmlImagesArray[y] = loadedImg; + break; + } + } + break; + } + } + if (notloadedImgs.length === 0) { + console.log("Images loaded"); + callback.apply(null, [htmlImagesArray]); + } + }; + + for ( i = 0; i < htmlImagesSrcArray.length; i++) { + img = new Image(); + htmlImagesArray.addImage(img); + addOnloadHandler(img, htmlImagesArray); + img.src = htmlImagesSrcArray[i]; + } + }; + + function addOnloadHandler(img, htmlImagesArray) { + img.onload = function() { + htmlImagesArray.loaded(this); + }; + } + + return (ImageLoader); +}); diff --git a/src/image_wrapper.js b/src/image_wrapper.js new file mode 100644 index 0000000..5e21795 --- /dev/null +++ b/src/image_wrapper.js @@ -0,0 +1,424 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, vec2, mat2 */ + +define([ + "subImage", + "cv_utils", + "array_helper" + ], + function(SubImage, CVUtils, ArrayHelper) { + + 'use strict'; + + /** + * Represents a basic image combining the data and size. + * In addition, some methods for manipulation are contained. + * @param size {x,y} The size of the image in pixel + * @param data {Array} If given, a flat array containing the pixel data + * @param ArrayType {Type} If given, the desired DataType of the Array (may be typed/non-typed) + * @param initialize {Boolean} Indicating if the array should be initialized on creation. + * @returns {ImageWrapper} + */ + function ImageWrapper(size, data, ArrayType, initialize) { + if (!data) { + if (ArrayType) { + this.data = new ArrayType(size.x * size.y); + if (ArrayType === Array && initialize) { + ArrayHelper.init(this.data, 0); + } + } else { + this.data = new Uint8Array(size.x * size.y); + if (Uint8Array === Array && initialize) { + ArrayHelper.init(this.data, 0); + } + } + + } else { + this.data = data; + } + this.size = size; + } + + /** + * tests if a position is within the image with a given offset + * @param imgRef {x, y} The location to test + * @param border Number the padding value in pixel + * @returns {Boolean} true if location inside the image's border, false otherwise + * @see cvd/image.h + */ + ImageWrapper.prototype.inImageWithBorder = function(imgRef, border) { + return (imgRef.x >= border) && (imgRef.y >= border) && (imgRef.x < (this.size.x - border)) && (imgRef.y < (this.size.y - border)); + }; + + /** + * Transforms an image according to the given affine-transformation matrix. + * @param inImg ImageWrapper a image containing the information to be extracted. + * @param outImg ImageWrapper the image to be filled. The whole image out image is filled by the in image. + * @param M mat2 the matrix used to map point in the out matrix to those in the in matrix + * @param inOrig vec2 origin in the in image + * @param outOrig vec2 origin in the out image + * @returns Number the number of pixels not in the in image + * @see cvd/vision.h + */ + ImageWrapper.transform = function(inImg, outImg, M, inOrig, outOrig) { + var w = outImg.size.x, h = outImg.size.y, iw = inImg.size.x, ih = inImg.size.y; + var across = vec2.create([M[0], M[2]]); + var down = vec2.create([M[1], M[3]]); + var defaultValue = 0; + + var p0 = vec2.subtract(inOrig, mat2.xVec2(M, outOrig, vec2.create()), vec2.create()); + + var min_x = p0[0], min_y = p0[1]; + var max_x = min_x, max_y = min_y; + var p, i, j; + + var sampleFunc = ImageWrapper.sample; + + if (across[0] < 0) + min_x += w * across[0]; + else + max_x += w * across[0]; + + if (down[0] < 0) + min_x += h * down[0]; + else + max_x += h * down[0]; + + if (across[1] < 0) + min_y += w * across[1]; + else + max_y += w * across[1]; + + if (down[1] < 0) + min_y += h * down[1]; + else + max_y += h * down[1]; + + var carrigeReturn = vec2.subtract(down, vec2.scale(across, w, vec2.create()), vec2.create()); + + if (min_x >= 0 && min_y >= 0 && max_x < iw - 1 && max_y < ih - 1) { + p = p0; + for ( i = 0; i < h; ++i, vec2.add(p, carrigeReturn)) + for ( j = 0; j < w; ++j, vec2.add(p, across)) + outImg.set(j, i, sampleFunc(inImg, p[0], p[1])); + return 0; + } else { + var x_bound = iw - 1; + var y_bound = ih - 1; + var count = 0; + p = p0; + for ( i = 0; i < h; ++i, vec2.add(p, carrigeReturn)) { + for ( j = 0; j < w; ++j, vec2.add(p, across)) { + if (0 <= p[0] && 0 <= p[1] && p[0] < x_bound && p[1] < y_bound) { + outImg.set(j, i, sampleFunc(inImg, p[0], p[1])); + } else { + outImg.set(j, i, defaultValue); ++count; + } + } + } + return count; + } + }; + + /** + * Performs bilinear sampling + * @param inImg Image to extract sample from + * @param x the x-coordinate + * @param y the y-coordinate + * @returns the sampled value + * @see cvd/vision.h + */ + ImageWrapper.sample = function(inImg, x, y) { + var lx = Math.floor(x); + var ly = Math.floor(y); + var w = inImg.size.x; + var base = ly * inImg.size.x + lx; + var a = inImg.data[base + 0]; + var b = inImg.data[base + 1]; + var c = inImg.data[base + w]; + var d = inImg.data[base + w + 1]; + var e = a - b; + x -= lx; + y -= ly; + + var result = Math.floor(x * (y * (e - c + d) - e) + y * (c - a) + a); + return result; + }; + + /** + * Initializes a given array. Sets each element to zero. + * @param array {Array} The array to initialize + */ + ImageWrapper.clearArray = function(array) { + var l = array.length; + while (l--) { + array[l] = 0; + } + }; + + /** + * Creates a {SubImage} from the current image ({this}). + * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner) + * @param size {ImageRef} The size of the resulting image + * @returns {SubImage} A shared part of the original image + */ + ImageWrapper.prototype.subImage = function(from, size) { + return new SubImage(from, size, this); + }; + + /** + * Creates an {ImageWrapper) and copies the needed underlying image-data area + * @param imageWrapper {ImageWrapper} The target {ImageWrapper} where the data should be copied + * @param from {ImageRef} The location where to copy from (top-left location) + */ + ImageWrapper.prototype.subImageAsCopy = function(imageWrapper, from) { + var sizeY = imageWrapper.size.y, sizeX = imageWrapper.size.x; + var x, y; + for ( x = 0; x < sizeX; x++) { + for ( y = 0; y < sizeY; y++) { + imageWrapper.data[y * sizeX + x] = this.data[(from.y + y) * this.size.x + from.x + x]; + } + } + }; + + ImageWrapper.prototype.copyTo = function(imageWrapper) { + var length = this.data.length, srcData = this.data, dstData = imageWrapper.data; + + while (length--) { + dstData[length] = srcData[length]; + } + }; + + /** + * Retrieves a given pixel position from the image + * @param x {Number} The x-position + * @param y {Number} The y-position + * @returns {Number} The grayscale value at the pixel-position + */ + ImageWrapper.prototype.get = function(x, y) { + return this.data[y * this.size.x + x]; + }; + + /** + * Retrieves a given pixel position from the image + * @param x {Number} The x-position + * @param y {Number} The y-position + * @returns {Number} The grayscale value at the pixel-position + */ + ImageWrapper.prototype.getSafe = function(x, y) { + var i; + + if (!this.indexMapping) { + this.indexMapping = { + x : [], + y : [] + }; + for (i = 0; i < this.size.x; i++) { + this.indexMapping.x[i] = i; + this.indexMapping.x[i + this.size.x] = i; + } + for (i = 0; i < this.size.y; i++) { + this.indexMapping.y[i] = i; + this.indexMapping.y[i + this.size.y] = i; + } + } + return this.data[(this.indexMapping.y[y + this.size.y]) * this.size.x + this.indexMapping.x[x + this.size.x]]; + }; + + /** + * Sets a given pixel position in the image + * @param x {Number} The x-position + * @param y {Number} The y-position + * @param value {Number} The grayscale value to set + * @returns {ImageWrapper} The Image itself (for possible chaining) + */ + ImageWrapper.prototype.set = function(x, y, value) { + this.data[y * this.size.x + x] = value; + return this; + }; + + /** + * Sets the border of the image (1 pixel) to zero + */ + ImageWrapper.prototype.zeroBorder = function() { + var i, width = this.size.x, height = this.size.y, data = this.data; + for ( i = 0; i < width; i++) { + data[i] = data[(height - 1) * width + i] = 0; + } + for ( i = 1; i < height - 1; i++) { + data[i * width] = data[i * width + (width - 1)] = 0; + } + }; + + /** + * Inverts a binary image in place + */ + ImageWrapper.prototype.invert = function() { + var data = this.data, length = data.length; + + while (length--) { + data[length] = data[length] ? 0 : 1; + } + + }; + + ImageWrapper.prototype.convolve = function(kernel) { + var x, y, kx, ky, kSize = (kernel.length / 2) | 0, accu = 0; + for ( y = 0; y < this.size.y; y++) { + for ( x = 0; x < this.size.x; x++) { + accu = 0; + for ( ky = -kSize; ky <= kSize; ky++) { + for ( kx = -kSize; kx <= kSize; kx++) { + accu += kernel[ky+kSize][kx + kSize] * this.getSafe(x + kx, y + ky); + } + } + this.data[y * this.size.x + x] = accu; + } + } + }; + + ImageWrapper.prototype.moments = function(labelcount) { + var data = this.data, + x, + y, + height = this.size.y, + width = this.size.x, + val, + ysq, + labelsum = [], + i, + label, + mu11, + mu02, + mu20, + x_, + y_, + tmp, + result = [], + PI = Math.PI, + PI_4 = PI / 4; + + if (labelcount <= 0) { + return result; + } + + for ( i = 0; i < labelcount; i++) { + labelsum[i] = { + m00 : 0, + m01 : 0, + m10 : 0, + m11 : 0, + m02 : 0, + m20 : 0, + theta : 0, + rad : 0 + }; + } + + for ( y = 0; y < height; y++) { + ysq = y * y; + for ( x = 0; x < width; x++) { + val = data[y * width + x]; + if (val > 0) { + label = labelsum[val - 1]; + label.m00 += 1; + label.m01 += y; + label.m10 += x; + label.m11 += x * y; + label.m02 += ysq; + label.m20 += x * x; + } + } + } + + for ( i = 0; i < labelcount; i++) { + label = labelsum[i]; + if (!isNaN(label.m00) && label.m00 !== 0) { + x_ = label.m10 / label.m00; + y_ = label.m01 / label.m00; + mu11 = label.m11 / label.m00 - x_ * y_; + mu02 = label.m02 / label.m00 - y_ * y_; + mu20 = label.m20 / label.m00 - x_ * x_; + tmp = (mu02 - mu20) / (2 * mu11); + tmp = 0.5 * Math.atan(tmp) + (mu11 >= 0 ? PI_4 : -PI_4 ) + PI; + label.theta = (tmp * 180 / PI + 90) % 180 - 90; + if (label.theta < 0) { + label.theta += 180; + } + label.rad = tmp > PI ? tmp - PI : tmp; + label.vec = vec2.create([Math.cos(tmp), Math.sin(tmp)]); + result.push(label); + } + } + + return result; + }; + + /** + * Displays the {ImageWrapper} in a given canvas + * @param canvas {Canvas} The canvas element to write to + * @param scale {Number} Scale which is applied to each pixel-value + */ + ImageWrapper.prototype.show = function(canvas, scale) { + var ctx, + frame, + data, + current, + pixel, + x, + y; + + if (!scale) { + scale = 1.0; + } + ctx = canvas.getContext('2d'); + canvas.width = this.size.x; + canvas.height = this.size.y; + frame = ctx.getImageData(0, 0, canvas.width, canvas.height); + data = frame.data; + current = 0; + for (y = 0; y < this.size.y; y++) { + for (x = 0; x < this.size.x; x++) { + pixel = y * this.size.x + x; + current = this.get(x, y) * scale; + data[pixel * 4 + 0] = current; + data[pixel * 4 + 1] = current; + data[pixel * 4 + 2] = current; + data[pixel * 4 + 3] = 255; + } + } + //frame.data = data; + ctx.putImageData(frame, 0, 0); + }; + + /** + * Displays the {SubImage} in a given canvas + * @param canvas {Canvas} The canvas element to write to + * @param scale {Number} Scale which is applied to each pixel-value + */ + ImageWrapper.prototype.overlay = function(canvas, scale, from) { + if (!scale || scale < 0 || scale > 360) { + scale = 360; + } + var hsv = [0, 1, 1]; + var rgb = [0, 0, 0]; + var whiteRgb = [255, 255, 255]; + var blackRgb = [0, 0, 0]; + var result = []; + var ctx = canvas.getContext('2d'); + var frame = ctx.getImageData(from.x, from.y, this.size.x, this.size.y); + var data = frame.data; + var length = this.data.length; + while (length--) { + hsv[0] = this.data[length] * scale; + result = hsv[0] <= 0 ? whiteRgb : hsv[0] >= 360 ? blackRgb : CVUtils.hsv2rgb(hsv, rgb); + data[length * 4 + 0] = result[0]; + data[length * 4 + 1] = result[1]; + data[length * 4 + 2] = result[2]; + data[length * 4 + 3] = 255; + } + ctx.putImageData(frame, from.x, from.y); + }; + + return (ImageWrapper); +}); \ No newline at end of file diff --git a/src/input_stream.js b/src/input_stream.js new file mode 100644 index 0000000..3df624a --- /dev/null +++ b/src/input_stream.js @@ -0,0 +1,236 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define(["image_loader"], function(ImageLoader) { + "use strict"; + + var InputStream = {}; + InputStream.createVideoStream = function(video) { + var that = {}, + _config = null, + _eventNames = ['canrecord', 'ended'], + _eventHandlers = {}; + + that.getRealWidth = function() { + return video.videoWidth; + }; + + that.getRealHeight = function() { + return video.videoHeight; + }; + + that.getWidth = function() { + return _config.halfSample ? video.videoWidth / 2 : video.videoWidth; + }; + + that.getHeight = function() { + return _config.halfSample ? video.videoHeight / 2 : video.videoHeight; + }; + + that.setInputStream = function(config) { + _config = config; + video.src = config.src; + }; + + that.ended = function() { + return video.ended; + }; + + that.getConfig = function() { + return _config; + }; + + that.setAttribute = function(name, value) { + video.setAttribute(name, value); + }; + + that.pause = function() { + video.pause(); + }; + + that.play = function() { + video.play(); + }; + + that.setCurrentTime = function(time) { + if (_config.type !== "LiveStream") + video.currentTime = time; + }; + + that.addEventListener = function(event, f, bool) { + if (_eventNames.indexOf(event) !== -1) { + if (!_eventHandlers[event]) { + _eventHandlers[event] = []; + } + _eventHandlers[event].push(f); + } else { + video.addEventListener(event, f, bool); + } + }; + + that.trigger = function(eventName, args) { + var j, + handlers = _eventHandlers[eventName]; + + if (handlers && handlers.length > 0) { + for ( j = 0; j < handlers.length; j++) { + handlers[j].apply(that, args); + } + } + }; + + that.getFrame = function() { + return video; + }; + + return that; + }; + + InputStream.createLiveStream = function(video) { + video.setAttribute("autoplay", true); + var that = InputStream.createVideoStream(video); + + that.ended = function() { + return false; + }; + + that.getWidth = function() { + return this.getConfig().halfSample ? video.videoWidth / 2 : video.videoWidth; + }; + + that.getHeight = function() { + return this.getConfig().halfSample ? video.videoHeight / 2 : video.videoHeight; + }; + + return that; + }; + + InputStream.createImageStream = function() { + var that = {}; + var _config = null; + + var width = 0, + height = 0, + frameIdx = 0, + paused = true, + loaded = false, + imgArray = null, + size = 0, + offset = 1, + baseUrl = null, + ended = false, + _eventNames = ['canrecord', 'ended'], + _eventHandlers = {}; + + function loadImages() { + loaded = false; + ImageLoader.load(baseUrl, function(imgs) { + imgArray = imgs; + width = imgs[0].width; + height = imgs[0].height; + loaded = true; + frameIdx = 0; + setTimeout(function() { + publishEvent("canrecord", []); + }, 0); + }, offset, size, _config.sequence); + } + + function publishEvent(eventName, args) { + var j, + handlers = _eventHandlers[eventName]; + + if (handlers && handlers.length > 0) { + for ( j = 0; j < handlers.length; j++) { + handlers[j].apply(that, args); + } + } + } + + + that.trigger = publishEvent; + + that.getWidth = function() { + return _config.size ? width/height > 1 ? _config.size : (width/height) * _config.size : width; + }; + + that.getHeight = function() { + return _config.size ? width/height > 1 ? (height/width) * _config.size : _config.size : height; + }; + + that.getRealWidth = function() { + return width; + }; + + that.getRealHeight = function() { + return height; + }; + + that.setInputStream = function(stream) { + _config = stream; + if (stream.sequence === false) { + baseUrl = stream.src; + size = 1; + } else { + baseUrl = stream.src; + size = stream.length; + } + loadImages(); + }; + + that.ended = function() { + return ended; + }; + + that.setAttribute = function() {}; + + that.getConfig = function() { + return _config; + }; + + that.pause = function() { + paused = true; + }; + + that.play = function() { + paused = false; + }; + + that.setCurrentTime = function(time) { + frameIdx = time; + }; + + that.addEventListener = function(event, f) { + if (_eventNames.indexOf(event) !== -1) { + if (!_eventHandlers[event]) { + _eventHandlers[event] = []; + } + _eventHandlers[event].push(f); + } + }; + + that.getFrame = function() { + var frame; + + if (!loaded){ + return null; + } + if (!paused) { + frame = imgArray[frameIdx]; + if (frameIdx < (size - 1)) { + frameIdx++; + } else { + setTimeout(function() { + ended = true; + publishEvent("ended", []); + }, 0); + } + } + return frame; + }; + + return that; + }; + + return (InputStream); +}); diff --git a/src/quagga.js b/src/quagga.js new file mode 100644 index 0000000..5dbb2c1 --- /dev/null +++ b/src/quagga.js @@ -0,0 +1,223 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define, vec2 */ + +define(["code_128_reader", "ean_reader", "input_stream", "image_wrapper", "barcode_locator", "barcode_decoder", "frame_grabber", "html_utils", "config", "events", "camera_access"], +function(Code128Reader, EANReader, InputStream, ImageWrapper, BarcodeLocator, BarcodeDecoder, FrameGrabber, HtmlUtils, _config, Events, CameraAccess) { + "use strict"; + + var _inputStream, + _framegrabber, + _stopped, + _canvasContainer = { + ctx : { + image : null, + overlay : null + }, + dom : { + image : null, + overlay : null + } + }, + _inputImageWrapper, + _boxSize, + _decoder, + _initialized = false; + + function initialize(config) { + _config = HtmlUtils.mergeObjects(_config, config); + initInputStream(); + } + + function initConfig() { + var vis = [{ + node : document.querySelector("div[data-controls]"), + prop : _config.controls + }, { + node : _canvasContainer.dom.overlay, + prop : _config.visual.show + }]; + + for (var i = 0; i < vis.length; i++) { + if (vis[i].node) { + if (vis[i].prop === true) { + vis[i].node.style.display = "block"; + } else { + vis[i].node.style.display = "none"; + } + } + } + } + + function initInputStream() { + var video; + if (_config.inputStream.type == "VideoStream") { + video = document.createElement("video"); + _inputStream = InputStream.createVideoStream(video); + } else if (_config.inputStream.type == "ImageStream") { + _inputStream = InputStream.createImageStream(); + } else if (_config.inputStream.type == "LiveStream") { + video = document.createElement("video"); + var $viewport = document.querySelector("#interactive.viewport"); + if($viewport) { + $viewport.appendChild(video); + } + _inputStream = InputStream.createLiveStream(video); + CameraAccess.request(video, function(err) { + if (!err) { + _inputStream.trigger("canrecord"); + } else { + console.log(err); + } + }); + } + + _inputStream.setAttribute("preload", "auto"); + _inputStream.setAttribute("autoplay", true); + _inputStream.setInputStream(_config.inputStream); + _inputStream.addEventListener("canrecord", canRecord); + } + + function canRecord() { + initBuffers(); + initCanvas(); + _decoder = BarcodeDecoder.create(_config.decoder, _inputImageWrapper); + _framegrabber = FrameGrabber.create(_inputStream, _canvasContainer.dom.image); + _framegrabber.attachData(_inputImageWrapper.data); + + initConfig(); + _inputStream.play(); + _initialized = true; + if (_config.readyFunc) { + _config.readyFunc.apply(); + } + } + + function initCanvas() { + var $viewport = document.querySelector("#interactive.viewport"); + _canvasContainer.dom.image = document.querySelector("canvas.imgBuffer"); + if (!_canvasContainer.dom.image) { + _canvasContainer.dom.image = document.createElement("canvas"); + _canvasContainer.dom.image.className = "imgBuffer"; + if($viewport && _config.inputStream.type == "ImageStream") { + $viewport.appendChild(_canvasContainer.dom.image); + } + } + _canvasContainer.ctx.image = _canvasContainer.dom.image.getContext("2d"); + _canvasContainer.dom.image.width = _inputImageWrapper.size.x; + _canvasContainer.dom.image.height = _inputImageWrapper.size.y; + + _canvasContainer.dom.overlay = document.querySelector("canvas.drawingBuffer"); + if (!_canvasContainer.dom.overlay) { + _canvasContainer.dom.overlay = document.createElement("canvas"); + _canvasContainer.dom.overlay.className = "drawingBuffer"; + if($viewport) { + $viewport.appendChild(_canvasContainer.dom.overlay); + } + var clearFix = document.createElement("br"); + clearFix.setAttribute("clear", "all"); + if($viewport) { + $viewport.appendChild(clearFix); + } + } + _canvasContainer.ctx.overlay = _canvasContainer.dom.overlay.getContext("2d"); + _canvasContainer.dom.overlay.width = _inputImageWrapper.size.x; + _canvasContainer.dom.overlay.height = _inputImageWrapper.size.y; + } + + function initBuffers() { + _inputImageWrapper = new ImageWrapper({ + x : _inputStream.getWidth(), + y : _inputStream.getHeight() + }); + console.log(_inputStream.getWidth()); + console.log(_inputStream.getHeight()); + _boxSize = [ + vec2.create([20, _inputStream.getHeight() / 2 - 100]), + vec2.create([20, _inputStream.getHeight() / 2 + 100]), + vec2.create([_inputStream.getWidth() - 20, _inputStream.getHeight() / 2 + 100]), + vec2.create([_inputStream.getWidth() - 20, _inputStream.getHeight() / 2 - 100]) + ]; + BarcodeLocator.init(_config.locator, { + inputImageWrapper : _inputImageWrapper + }); + } + + function getBoundingBoxes() { + var boxes; + + if (_config.locate) { + boxes = BarcodeLocator.locate(); + } else { + boxes = [_boxSize]; + } + return boxes; + } + + function update() { + var result, + boxes; + + if (_framegrabber.grab()) { + _canvasContainer.ctx.overlay.clearRect(0, 0, _inputImageWrapper.size.x, _inputImageWrapper.size.y); + boxes = getBoundingBoxes(); + if (boxes) { + result = _decoder.decodeFromBoundingBoxes(boxes); + if (result && result.codeResult) { + Events.publish("detected", result.codeResult.code); + } + } + } + } + + function start() { + _stopped = false; + ( function frame() { + if (!_stopped) { + if (_config.inputStream.type == "LiveStream") { + window.requestAnimFrame(frame); + } + update(); + } + }()); + } + + return { + init : function(config, callback) { + initialize(config, callback); + }, + start : function() { + console.log("Start!"); + start(); + }, + stop : function() { + _stopped = true; + }, + onDetected : function(callback) { + Events.subscribe("detected", callback, true); + }, + isInitialized : function() { + return _initialized; + }, + canvas : _canvasContainer, + decodeSingle : function(config, resultCallback) { + config.inputStream = { + type : "ImageStream", + src : config.src, + sequence : false, + size: 800 + }; + config.readyFunc = function() { + Events.subscribe("detected", function(result) { + _stopped = true; + resultCallback.call(null, result); + }, true); + start(); + }; + initialize(config); + }, + Reader: { + EANReader : EANReader, + Code128Reader : Code128Reader + } + }; +}); diff --git a/src/rasterizer.js b/src/rasterizer.js new file mode 100644 index 0000000..756f1d3 --- /dev/null +++ b/src/rasterizer.js @@ -0,0 +1,198 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +/** + * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization + */ +define(["tracer"], function(Tracer) { + "use strict"; + + var Rasterizer = { + createContour2D : function() { + return { + dir : null, + index : null, + firstVertex : null, + insideContours : null, + nextpeer : null, + prevpeer : null + }; + }, + CONTOUR_DIR : { + CW_DIR : 0, + CCW_DIR : 1, + UNKNOWN_DIR : 2 + }, + DIR : { + OUTSIDE_EDGE : -32767, + INSIDE_EDGE : -32766 + }, + create : function(imageWrapper, labelWrapper) { + var imageData = imageWrapper.data, + labelData = labelWrapper.data, + width = imageWrapper.size.x, + height = imageWrapper.size.y, + tracer = Tracer.create(imageWrapper, labelWrapper); + + return { + rasterize : function(depthlabel) { + var color, + bc, + lc, + labelindex, + cx, + cy, + colorMap = [], + vertex, + p, + cc, + sc, + pos, + connectedCount = 0, + i; + + for ( i = 0; i < 400; i++) { + colorMap[i] = 0; + } + + colorMap[0] = imageData[0]; + cc = null; + for ( cy = 1; cy < height - 1; cy++) { + labelindex = 0; + bc = colorMap[0]; + for ( cx = 1; cx < width - 1; cx++) { + pos = cy * width + cx; + if (labelData[pos] === 0) { + color = imageData[pos]; + if (color !== bc) { + if (labelindex === 0) { + lc = connectedCount + 1; + colorMap[lc] = color; + bc = color; + vertex = tracer.contourTracing(cy, cx, lc, color, Rasterizer.DIR.OUTSIDE_EDGE); + if (vertex !== null) { + connectedCount++; + labelindex = lc; + p = Rasterizer.createContour2D(); + p.dir = Rasterizer.CONTOUR_DIR.CW_DIR; + p.index = labelindex; + p.firstVertex = vertex; + p.nextpeer = cc; + p.insideContours = null; + if (cc !== null) { + cc.prevpeer = p; + } + cc = p; + } + } else { + vertex = tracer.contourTracing(cy, cx, Rasterizer.DIR.INSIDE_EDGE, color, labelindex); + if (vertex !== null) { + p = Rasterizer.createContour2D(); + p.firstVertex = vertex; + p.insideContours = null; + if (depthlabel === 0) { + p.dir = Rasterizer.CONTOUR_DIR.CCW_DIR; + } else { + p.dir = Rasterizer.CONTOUR_DIR.CW_DIR; + } + p.index = depthlabel; + sc = cc; + while ((sc !== null) && sc.index !== labelindex) { + sc = sc.nextpeer; + } + if (sc !== null) { + p.nextpeer = sc.insideContours; + if (sc.insideContours !== null) { + sc.insideContours.prevpeer = p; + } + sc.insideContours = p; + } + } + } + } else { + labelData[pos] = labelindex; + } + } else if (labelData[pos] === Rasterizer.DIR.OUTSIDE_EDGE || labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) { + labelindex = 0; + if (labelData[pos] === Rasterizer.DIR.INSIDE_EDGE) { + bc = imageData[pos]; + } else { + bc = colorMap[0]; + } + } else { + labelindex = labelData[pos]; + bc = colorMap[labelindex]; + } + } + } + sc = cc; + while (sc !== null) { + sc.index = depthlabel; + sc = sc.nextpeer; + } + return { + cc : cc, + count : connectedCount + }; + }, + debug: { + drawContour : function(canvas, firstContour) { + var ctx = canvas.getContext("2d"), + pq = firstContour, + iq, + q, + p; + + ctx.strokeStyle = "red"; + ctx.fillStyle = "red"; + ctx.lineWidth = 1; + + if (pq !== null) { + iq = pq.insideContours; + } else { + iq = null; + } + + while (pq !== null) { + if (iq !== null) { + q = iq; + iq = iq.nextpeer; + } else { + q = pq; + pq = pq.nextpeer; + if (pq !== null) { + iq = pq.insideContours; + } else { + iq = null; + } + } + + switch(q.dir) { + case Rasterizer.CONTOUR_DIR.CW_DIR: + ctx.strokeStyle = "red"; + break; + case Rasterizer.CONTOUR_DIR.CCW_DIR: + ctx.strokeStyle = "blue"; + break; + case Rasterizer.CONTOUR_DIR.UNKNOWN_DIR: + ctx.strokeStyle = "green"; + break; + } + + p = q.firstVertex; + ctx.beginPath(); + ctx.moveTo(p.x, p.y); + do { + p = p.next; + ctx.lineTo(p.x, p.y); + } while(p !== q.firstVertex); + ctx.stroke(); + } + } + } + }; + } + }; + + return (Rasterizer); +}); diff --git a/src/skeletonizer.js b/src/skeletonizer.js new file mode 100644 index 0000000..d75feeb --- /dev/null +++ b/src/skeletonizer.js @@ -0,0 +1,202 @@ +/* jshint undef: true, unused: true, browser:true, devel: true, -W041: false */ +/* global define */ + +define(function() { + "use strict"; + + function Skeletonizer(stdlib, foreign, buffer) { + "use asm"; + + var images = new stdlib.Uint8Array(buffer), + size = foreign.size | 0, + imul = stdlib.Math.imul; + + function erode(inImagePtr, outImagePtr) { + inImagePtr = inImagePtr | 0; + outImagePtr = outImagePtr | 0; + + var v = 0, + u = 0, + sum = 0, + yStart1 = 0, + yStart2 = 0, + xStart1 = 0, + xStart2 = 0, + offset = 0; + + for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) { + offset = (offset + size) | 0; + for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) { + yStart1 = (offset - size) | 0; + yStart2 = (offset + size) | 0; + xStart1 = (u - 1) | 0; + xStart2 = (u + 1) | 0; + sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0) + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0) + (images[(inImagePtr + offset + u) | 0] | 0) + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0) + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0; + if ((sum | 0) == (5 | 0)) { + images[(outImagePtr + offset + u) | 0] = 1; + } else { + images[(outImagePtr + offset + u) | 0] = 0; + } + } + } + return; + } + + function subtract(aImagePtr, bImagePtr, outImagePtr) { + aImagePtr = aImagePtr | 0; + bImagePtr = bImagePtr | 0; + outImagePtr = outImagePtr | 0; + + var length = 0; + + length = imul(size, size) | 0; + + while ((length | 0) > 0) { + length = (length - 1) | 0; + images[(outImagePtr + length) | 0] = ((images[(aImagePtr + length) | 0] | 0) - (images[(bImagePtr + length) | 0] | 0)) | 0; + } + } + + function bitwiseOr(aImagePtr, bImagePtr, outImagePtr) { + aImagePtr = aImagePtr | 0; + bImagePtr = bImagePtr | 0; + outImagePtr = outImagePtr | 0; + + var length = 0; + + length = imul(size, size) | 0; + + while ((length | 0) > 0) { + length = (length - 1) | 0; + images[(outImagePtr + length) | 0] = ((images[(aImagePtr + length) | 0] | 0) | (images[(bImagePtr + length) | 0] | 0)) | 0; + } + } + + function countNonZero(imagePtr) { + imagePtr = imagePtr | 0; + + var sum = 0, + length = 0; + + length = imul(size, size) | 0; + + while ((length | 0) > 0) { + length = (length - 1) | 0; + sum = ((sum | 0) + (images[(imagePtr + length) | 0] | 0)) | 0; + } + + return (sum | 0); + } + + function init(imagePtr, value) { + imagePtr = imagePtr | 0; + value = value | 0; + + var length = 0; + + length = imul(size, size) | 0; + + while ((length | 0) > 0) { + length = (length - 1) | 0; + images[(imagePtr + length) | 0] = value; + } + } + + function dilate(inImagePtr, outImagePtr) { + inImagePtr = inImagePtr | 0; + outImagePtr = outImagePtr | 0; + + var v = 0, + u = 0, + sum = 0, + yStart1 = 0, + yStart2 = 0, + xStart1 = 0, + xStart2 = 0, + offset = 0; + + for ( v = 1; (v | 0) < ((size - 1) | 0); v = (v + 1) | 0) { + offset = (offset + size) | 0; + for ( u = 1; (u | 0) < ((size - 1) | 0); u = (u + 1) | 0) { + yStart1 = (offset - size) | 0; + yStart2 = (offset + size) | 0; + xStart1 = (u - 1) | 0; + xStart2 = (u + 1) | 0; + sum = ((images[(inImagePtr + yStart1 + xStart1) | 0] | 0) + (images[(inImagePtr + yStart1 + xStart2) | 0] | 0) + (images[(inImagePtr + offset + u) | 0] | 0) + (images[(inImagePtr + yStart2 + xStart1) | 0] | 0) + (images[(inImagePtr + yStart2 + xStart2) | 0] | 0)) | 0; + if ((sum | 0) > (0 | 0)) { + images[(outImagePtr + offset + u) | 0] = 1; + } else { + images[(outImagePtr + offset + u) | 0] = 0; + } + } + } + return; + } + + function memcpy(srcImagePtr, dstImagePtr) { + srcImagePtr = srcImagePtr | 0; + dstImagePtr = dstImagePtr | 0; + + var length = 0; + + length = imul(size, size) | 0; + + while ((length | 0) > 0) { + length = (length - 1) | 0; + images[(dstImagePtr + length) | 0] = (images[(srcImagePtr + length) | 0] | 0); + } + } + + function zeroBorder(imagePtr) { + imagePtr = imagePtr | 0; + + var x = 0, + y = 0; + + for ( x = 0; (x | 0) < ((size - 1) | 0); x = (x + 1) | 0) { + images[(imagePtr + x) | 0] = 0; + images[(imagePtr + y) | 0] = 0; + y = ((y + size) - 1) | 0; + images[(imagePtr + y) | 0] = 0; + y = (y + 1) | 0; + } + for ( x = 0; (x | 0) < (size | 0); x = (x + 1) | 0) { + images[(imagePtr + y) | 0] = 0; + y = (y + 1) | 0; + } + } + + function skeletonize() { + var subImagePtr = 0, + erodedImagePtr = 0, + tempImagePtr = 0, + skelImagePtr = 0, + sum = 0, + done = 0; + + erodedImagePtr = imul(size, size) | 0; + tempImagePtr = (erodedImagePtr + erodedImagePtr) | 0; + skelImagePtr = (tempImagePtr + erodedImagePtr) | 0; + + // init skel-image + init(skelImagePtr, 0); + zeroBorder(subImagePtr); + + do { + erode(subImagePtr, erodedImagePtr); + dilate(erodedImagePtr, tempImagePtr); + subtract(subImagePtr, tempImagePtr, tempImagePtr); + bitwiseOr(skelImagePtr, tempImagePtr, skelImagePtr); + memcpy(erodedImagePtr, subImagePtr); + sum = countNonZero(subImagePtr) | 0; + done = ((sum | 0) == 0 | 0); + } while(!done); + } + + return { + skeletonize : skeletonize + }; + } + + return Skeletonizer; +}); diff --git a/src/subImage.js b/src/subImage.js new file mode 100644 index 0000000..66fe26f --- /dev/null +++ b/src/subImage.js @@ -0,0 +1,97 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +define(["typedefs"], function() { + "use strict"; + + /** + * Construct representing a part of another {ImageWrapper}. Shares data + * between the parent and the child. + * @param from {ImageRef} The position where to start the {SubImage} from. (top-left corner) + * @param size {ImageRef} The size of the resulting image + * @param I {ImageWrapper} The {ImageWrapper} to share from + * @returns {SubImage} A shared part of the original image + */ + function SubImage(from, size, I) { + if (!I) { + I = { + data : null, + size : size + }; + } + this.data = I.data; + this.originalSize = I.size; + this.I = I; + + this.from = from; + this.size = size; + } + + /** + * Displays the {SubImage} in a given canvas + * @param canvas {Canvas} The canvas element to write to + * @param scale {Number} Scale which is applied to each pixel-value + */ + SubImage.prototype.show = function(canvas, scale) { + var ctx, + frame, + data, + current, + y, + x, + pixel; + + if (!scale) { + scale = 1.0; + } + ctx = canvas.getContext('2d'); + canvas.width = this.size.x; + canvas.height = this.size.y; + frame = ctx.getImageData(0, 0, canvas.width, canvas.height); + data = frame.data; + current = 0; + for (y = 0; y < this.size.y; y++) { + for (x = 0; x < this.size.x; x++) { + pixel = y * this.size.x + x; + current = this.get(x, y) * scale; + data[pixel * 4 + 0] = current; + data[pixel * 4 + 1] = current; + data[pixel * 4 + 2] = current; + data[pixel * 4 + 3] = 255; + } + } + frame.data = data; + ctx.putImageData(frame, 0, 0); + }; + + /** + * Retrieves a given pixel position from the {SubImage} + * @param x {Number} The x-position + * @param y {Number} The y-position + * @returns {Number} The grayscale value at the pixel-position + */ + SubImage.prototype.get = function(x, y) { + return this.data[(this.from.y + y) * this.originalSize.x + this.from.x + x]; + }; + + /** + * Updates the underlying data from a given {ImageWrapper} + * @param image {ImageWrapper} The updated image + */ + SubImage.prototype.updateData = function(image) { + this.originalSize = image.size; + this.data = image.data; + }; + + /** + * Updates the position of the shared area + * @param from {x,y} The new location + * @returns {SubImage} returns {this} for possible chaining + */ + SubImage.prototype.updateFrom = function(from) { + this.from = from; + return this; + }; + + return (SubImage); +}); \ No newline at end of file diff --git a/src/tracer.js b/src/tracer.js new file mode 100644 index 0000000..da52df3 --- /dev/null +++ b/src/tracer.js @@ -0,0 +1,108 @@ +/* jshint undef: true, unused: true, browser:true, devel: true */ +/* global define */ + +/** + * http://www.codeproject.com/Tips/407172/Connected-Component-Labeling-and-Vectorization + */ +define(function() { + "use strict"; + + var Tracer = { + searchDirections : [[0, 1], [1, 1], [1, 0], [1, -1], [0, -1], [-1, -1], [-1, 0], [-1, 1]], + create : function(imageWrapper, labelWrapper) { + var imageData = imageWrapper.data, + labelData = labelWrapper.data, + searchDirections = this.searchDirections, + width = imageWrapper.size.x, + pos; + + function trace(current, color, label, edgelabel) { + var i, + y, + x; + + for ( i = 0; i < 7; i++) { + y = current.cy + searchDirections[current.dir][0]; + x = current.cx + searchDirections[current.dir][1]; + pos = y * width + x; + if ((imageData[pos] === color) && ((labelData[pos] === 0) || (labelData[pos] === label))) { + labelData[pos] = label; + current.cy = y; + current.cx = x; + return true; + } else { + if (labelData[pos] === 0) { + labelData[pos] = edgelabel; + } + current.dir = (current.dir + 1) % 8; + } + } + return false; + } + + function vertex2D(x, y, dir) { + return { + dir : dir, + x : x, + y : y, + next : null, + prev : null + }; + } + + function contourTracing(sy, sx, label, color, edgelabel) { + var Fv = null, + Cv, + P, + ldir, + current = { + cx : sx, + cy : sy, + dir : 0 + }; + + if (trace(current, color, label, edgelabel)) { + Fv = vertex2D(sx, sy, current.dir); + Cv = Fv; + ldir = current.dir; + P = vertex2D(current.cx, current.cy, 0); + P.prev = Cv; + Cv.next = P; + P.next = null; + Cv = P; + do { + current.dir = (current.dir + 6) % 8; + trace(current, color, label, edgelabel); + if (ldir != current.dir) { + Cv.dir = current.dir; + P = vertex2D(current.cx, current.cy, 0); + P.prev = Cv; + Cv.next = P; + P.next = null; + Cv = P; + } else { + Cv.dir = ldir; + Cv.x = current.cx; + Cv.y = current.cy; + } + ldir = current.dir; + } while(current.cx != sx || current.cy != sy); + Fv.prev = Cv.prev; + Cv.prev.next = Fv; + } + return Fv; + } + + return { + trace : function(current, color, label, edgelabel) { + return trace(current, color, label, edgelabel); + }, + contourTracing : function(sy, sx, label, color, edgelabel) { + return contourTracing(sy, sx, label, color, edgelabel); + } + }; + } + }; + + return (Tracer); +}); diff --git a/src/typedefs.js b/src/typedefs.js new file mode 100644 index 0000000..151fe89 --- /dev/null +++ b/src/typedefs.js @@ -0,0 +1,21 @@ +/* + * typedefs.js + * Normalizes browser-specific prefixes + */ + +glMatrixArrayType = Float32Array; + +window.requestAnimFrame = (function() { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(/* function FrameRequestCallback */ callback, /* DOMElement Element */ element) { + window.setTimeout(callback, 1000/60); + }; +})(); + + +navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; +window.URL = window.URL || window.webkitURL || window.mozURL || window.msURL; \ No newline at end of file diff --git a/src/vendor/almond.js b/src/vendor/almond.js new file mode 100644 index 0000000..807815c --- /dev/null +++ b/src/vendor/almond.js @@ -0,0 +1,410 @@ +/** + * almond 0.2.6 Copyright (c) 2011-2012, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/almond for details + */ +//Going sloppy to avoid 'use strict' string cost, but strict practices should +//be followed. +/*jslint sloppy: true */ +/*global setTimeout: false */ + +var requirejs, require, define; +(function (undef) { + var main, req, makeMap, handlers, + defined = {}, + waiting = {}, + config = {}, + defining = {}, + hasOwn = Object.prototype.hasOwnProperty, + aps = [].slice; + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @returns {String} normalized name + */ + function normalize(name, baseName) { + var nameParts, nameSegment, mapValue, foundMap, + foundI, foundStarMap, starI, i, j, part, + baseParts = baseName && baseName.split("/"), + map = config.map, + starMap = (map && map['*']) || {}; + + //Adjust any relative paths. + if (name && name.charAt(0) === ".") { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + //Convert baseName to array, and lop off the last part, + //so that . matches that "directory" and not name of the baseName's + //module. For instance, baseName of "one/two/three", maps to + //"one/two/three.js", but we want the directory, "one/two" for + //this normalization. + baseParts = baseParts.slice(0, baseParts.length - 1); + + name = baseParts.concat(name.split("/")); + + //start trimDots + for (i = 0; i < name.length; i += 1) { + part = name[i]; + if (part === ".") { + name.splice(i, 1); + i -= 1; + } else if (part === "..") { + if (i === 1 && (name[2] === '..' || name[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + name.splice(i - 1, 2); + i -= 2; + } + } + } + //end trimDots + + name = name.join("/"); + } else if (name.indexOf('./') === 0) { + // No baseName, so this is ID is resolved relative + // to baseUrl, pull off the leading dot. + name = name.substring(2); + } + } + + //Apply map config if available. + if ((baseParts || starMap) && map) { + nameParts = name.split('/'); + + for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join("/"); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = map[baseParts.slice(0, j).join('/')]; + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = mapValue[nameSegment]; + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break; + } + } + } + } + + if (foundMap) { + break; + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && starMap[nameSegment]) { + foundStarMap = starMap[nameSegment]; + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + return name; + } + + function makeRequire(relName, forceSync) { + return function () { + //A version of a require function that passes a moduleName + //value for items that may need to + //look up paths relative to the moduleName + return req.apply(undef, aps.call(arguments, 0).concat([relName, forceSync])); + }; + } + + function makeNormalize(relName) { + return function (name) { + return normalize(name, relName); + }; + } + + function makeLoad(depName) { + return function (value) { + defined[depName] = value; + }; + } + + function callDep(name) { + if (hasProp(waiting, name)) { + var args = waiting[name]; + delete waiting[name]; + defining[name] = true; + main.apply(undef, args); + } + + if (!hasProp(defined, name) && !hasProp(defining, name)) { + throw new Error('No ' + name); + } + return defined[name]; + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Makes a name map, normalizing the name, and using a plugin + * for normalization if necessary. Grabs a ref to plugin + * too, as an optimization. + */ + makeMap = function (name, relName) { + var plugin, + parts = splitPrefix(name), + prefix = parts[0]; + + name = parts[1]; + + if (prefix) { + prefix = normalize(prefix, relName); + plugin = callDep(prefix); + } + + //Normalize according + if (prefix) { + if (plugin && plugin.normalize) { + name = plugin.normalize(name, makeNormalize(relName)); + } else { + name = normalize(name, relName); + } + } else { + name = normalize(name, relName); + parts = splitPrefix(name); + prefix = parts[0]; + name = parts[1]; + if (prefix) { + plugin = callDep(prefix); + } + } + + //Using ridiculous property names for space reasons + return { + f: prefix ? prefix + '!' + name : name, //fullName + n: name, + pr: prefix, + p: plugin + }; + }; + + function makeConfig(name) { + return function () { + return (config && config.config && config.config[name]) || {}; + }; + } + + handlers = { + require: function (name) { + return makeRequire(name); + }, + exports: function (name) { + var e = defined[name]; + if (typeof e !== 'undefined') { + return e; + } else { + return (defined[name] = {}); + } + }, + module: function (name) { + return { + id: name, + uri: '', + exports: defined[name], + config: makeConfig(name) + }; + } + }; + + main = function (name, deps, callback, relName) { + var cjsModule, depName, ret, map, i, + args = [], + usingExports; + + //Use name if no relName + relName = relName || name; + + //Call the callback to define the module, if necessary. + if (typeof callback === 'function') { + + //Pull out the defined dependencies and pass the ordered + //values to the callback. + //Default to [require, exports, module] if no deps + deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; + for (i = 0; i < deps.length; i += 1) { + map = makeMap(deps[i], relName); + depName = map.f; + + //Fast path CommonJS standard dependencies. + if (depName === "require") { + args[i] = handlers.require(name); + } else if (depName === "exports") { + //CommonJS module spec 1.1 + args[i] = handlers.exports(name); + usingExports = true; + } else if (depName === "module") { + //CommonJS module spec 1.1 + cjsModule = args[i] = handlers.module(name); + } else if (hasProp(defined, depName) || + hasProp(waiting, depName) || + hasProp(defining, depName)) { + args[i] = callDep(depName); + } else if (map.p) { + map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); + args[i] = defined[depName]; + } else { + throw new Error(name + ' missing ' + depName); + } + } + + ret = callback.apply(defined[name], args); + + if (name) { + //If setting exports via "module" is in play, + //favor that over return value and exports. After that, + //favor a non-undefined return value over exports use. + if (cjsModule && cjsModule.exports !== undef && + cjsModule.exports !== defined[name]) { + defined[name] = cjsModule.exports; + } else if (ret !== undef || !usingExports) { + //Use the return value from the function. + defined[name] = ret; + } + } + } else if (name) { + //May just be an object definition for the module. Only + //worry about defining if have a module name. + defined[name] = callback; + } + }; + + requirejs = require = req = function (deps, callback, relName, forceSync, alt) { + if (typeof deps === "string") { + if (handlers[deps]) { + //callback in this case is really relName + return handlers[deps](callback); + } + //Just return the module wanted. In this scenario, the + //deps arg is the module name, and second arg (if passed) + //is just the relName. + //Normalize module name, if it contains . or .. + return callDep(makeMap(deps, callback).f); + } else if (!deps.splice) { + //deps is a config object, not an array. + config = deps; + if (callback.splice) { + //callback is an array, which means it is a dependency list. + //Adjust args if there are dependencies + deps = callback; + callback = relName; + relName = null; + } else { + deps = undef; + } + } + + //Support require(['a']) + callback = callback || function () {}; + + //If relName is a function, it is an errback handler, + //so remove it. + if (typeof relName === 'function') { + relName = forceSync; + forceSync = alt; + } + + //Simulate async callback; + if (forceSync) { + main(undef, deps, callback, relName); + } else { + //Using a non-zero value because of concern for what old browsers + //do, and latest browsers "upgrade" to 4 if lower value is used: + //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: + //If want a value immediately, use require('id') instead -- something + //that works in almond on the global level, but not guaranteed and + //unlikely to work in other AMD implementations. + setTimeout(function () { + main(undef, deps, callback, relName); + }, 4); + } + + return req; + }; + + /** + * Just drops the config on the floor, but returns req in case + * the config return value is used. + */ + req.config = function (cfg) { + config = cfg; + if (config.deps) { + req(config.deps, config.callback); + } + return req; + }; + + /** + * Expose module registry for debugging and tooling + */ + requirejs._defined = defined; + + define = function (name, deps, callback) { + + //This module may not have dependencies + if (!deps.splice) { + //deps is not an array, so probably means + //an object literal or factory function for + //the value. Adjust args. + callback = deps; + deps = []; + } + + if (!hasProp(defined, name) && !hasProp(waiting, name)) { + waiting[name] = [name, deps, callback]; + } + }; + + define.amd = { + jQuery: true + }; +}()); diff --git a/src/vendor/browser_detect.js b/src/vendor/browser_detect.js new file mode 100644 index 0000000..f8a5cf8 --- /dev/null +++ b/src/vendor/browser_detect.js @@ -0,0 +1,121 @@ +/* + * http://www.quirksmode.org/js/detect.html + */ + +var BrowserDetect = { + init: function () { + this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; + this.version = this.searchVersion(navigator.userAgent) + || this.searchVersion(navigator.appVersion) + || "an unknown version"; + this.OS = this.searchString(this.dataOS) || "an unknown OS"; + }, + searchString: function (data) { + for (var i=0;i= 1.0){ + if(dest != quat) { + dest[0] = quat[0]; + dest[1] = quat[1]; + dest[2] = quat[2]; + dest[3] = quat[3]; + } + return dest; + } + + var halfTheta = Math.acos(cosHalfTheta); + var sinHalfTheta = Math.sqrt(1.0 - cosHalfTheta*cosHalfTheta); + + if (Math.abs(sinHalfTheta) < 0.001){ + dest[0] = (quat[0]*0.5 + quat2[0]*0.5); + dest[1] = (quat[1]*0.5 + quat2[1]*0.5); + dest[2] = (quat[2]*0.5 + quat2[2]*0.5); + dest[3] = (quat[3]*0.5 + quat2[3]*0.5); + return dest; + } + + var ratioA = Math.sin((1 - slerp)*halfTheta) / sinHalfTheta; + var ratioB = Math.sin(slerp*halfTheta) / sinHalfTheta; + + dest[0] = (quat[0]*ratioA + quat2[0]*ratioB); + dest[1] = (quat[1]*ratioA + quat2[1]*ratioB); + dest[2] = (quat[2]*ratioA + quat2[2]*ratioB); + dest[3] = (quat[3]*ratioA + quat2[3]*ratioB); + + return dest; +}; + + +/* + * quat4.str + * Returns a string representation of a quaternion + * + * Params: + * quat - quat4 to represent as a string + * + * Returns: + * string representation of quat + */ +quat4.str = function(quat) { + return '[' + quat[0] + ', ' + quat[1] + ', ' + quat[2] + ', ' + quat[3] + ']'; +}; + diff --git a/src/vendor/jquery-1.9.0.min.js b/src/vendor/jquery-1.9.0.min.js new file mode 100644 index 0000000..50d1b22 --- /dev/null +++ b/src/vendor/jquery-1.9.0.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.9.0 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license */(function(e,t){"use strict";function n(e){var t=e.length,n=st.type(e);return st.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e){var t=Tt[e]={};return st.each(e.match(lt)||[],function(e,n){t[n]=!0}),t}function i(e,n,r,i){if(st.acceptData(e)){var o,a,s=st.expando,u="string"==typeof n,l=e.nodeType,c=l?st.cache:e,f=l?e[s]:e[s]&&s;if(f&&c[f]&&(i||c[f].data)||!u||r!==t)return f||(l?e[s]=f=K.pop()||st.guid++:f=s),c[f]||(c[f]={},l||(c[f].toJSON=st.noop)),("object"==typeof n||"function"==typeof n)&&(i?c[f]=st.extend(c[f],n):c[f].data=st.extend(c[f].data,n)),o=c[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[st.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[st.camelCase(n)])):a=o,a}}function o(e,t,n){if(st.acceptData(e)){var r,i,o,a=e.nodeType,u=a?st.cache:e,l=a?e[st.expando]:st.expando;if(u[l]){if(t&&(r=n?u[l]:u[l].data)){st.isArray(t)?t=t.concat(st.map(t,st.camelCase)):t in r?t=[t]:(t=st.camelCase(t),t=t in r?[t]:t.split(" "));for(i=0,o=t.length;o>i;i++)delete r[t[i]];if(!(n?s:st.isEmptyObject)(r))return}(n||(delete u[l].data,s(u[l])))&&(a?st.cleanData([e],!0):st.support.deleteExpando||u!=u.window?delete u[l]:u[l]=null)}}}function a(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(Nt,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:wt.test(r)?st.parseJSON(r):r}catch(o){}st.data(e,n,r)}else r=t}return r}function s(e){var t;for(t in e)if(("data"!==t||!st.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function u(){return!0}function l(){return!1}function c(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function f(e,t,n){if(t=t||0,st.isFunction(t))return st.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return st.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=st.grep(e,function(e){return 1===e.nodeType});if(Wt.test(t))return st.filter(t,r,!n);t=st.filter(t,r)}return st.grep(e,function(e){return st.inArray(e,t)>=0===n})}function p(e){var t=zt.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function d(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function h(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function g(e){var t=nn.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function m(e,t){for(var n,r=0;null!=(n=e[r]);r++)st._data(n,"globalEval",!t||st._data(t[r],"globalEval"))}function y(e,t){if(1===t.nodeType&&st.hasData(e)){var n,r,i,o=st._data(e),a=st._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)st.event.add(t,n,s[n][r])}a.data&&(a.data=st.extend({},a.data))}}function v(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!st.support.noCloneEvent&&t[st.expando]){r=st._data(t);for(i in r.events)st.removeEvent(t,i,r.handle);t.removeAttribute(st.expando)}"script"===n&&t.text!==e.text?(h(t).text=e.text,g(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),st.support.html5Clone&&e.innerHTML&&!st.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Zt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function b(e,n){var r,i,o=0,a=e.getElementsByTagName!==t?e.getElementsByTagName(n||"*"):e.querySelectorAll!==t?e.querySelectorAll(n||"*"):t;if(!a)for(a=[],r=e.childNodes||e;null!=(i=r[o]);o++)!n||st.nodeName(i,n)?a.push(i):st.merge(a,b(i,n));return n===t||n&&st.nodeName(e,n)?st.merge([e],a):a}function x(e){Zt.test(e.type)&&(e.defaultChecked=e.checked)}function T(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Nn.length;i--;)if(t=Nn[i]+n,t in e)return t;return r}function w(e,t){return e=t||e,"none"===st.css(e,"display")||!st.contains(e.ownerDocument,e)}function N(e,t){for(var n,r=[],i=0,o=e.length;o>i;i++)n=e[i],n.style&&(r[i]=st._data(n,"olddisplay"),t?(r[i]||"none"!==n.style.display||(n.style.display=""),""===n.style.display&&w(n)&&(r[i]=st._data(n,"olddisplay",S(n.nodeName)))):r[i]||w(n)||st._data(n,"olddisplay",st.css(n,"display")));for(i=0;o>i;i++)n=e[i],n.style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?r[i]||"":"none"));return e}function C(e,t,n){var r=mn.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function k(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=st.css(e,n+wn[o],!0,i)),r?("content"===n&&(a-=st.css(e,"padding"+wn[o],!0,i)),"margin"!==n&&(a-=st.css(e,"border"+wn[o]+"Width",!0,i))):(a+=st.css(e,"padding"+wn[o],!0,i),"padding"!==n&&(a+=st.css(e,"border"+wn[o]+"Width",!0,i)));return a}function E(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=ln(e),a=st.support.boxSizing&&"border-box"===st.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=un(e,t,o),(0>i||null==i)&&(i=e.style[t]),yn.test(i))return i;r=a&&(st.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+k(e,t,n||(a?"border":"content"),r,o)+"px"}function S(e){var t=V,n=bn[e];return n||(n=A(e,t),"none"!==n&&n||(cn=(cn||st("