[
  {
    "path": ".babelrc",
    "content": "{\n  \"presets\": [\n    [\"env\", {\n      \"targets\": {\n        \"node\": \"4.0\",\n        \"browsers\": [\"last 2 versions\", \"safari >= 7\", \"ie >= 11\"]\n      }\n    }]\n  ]\n}\n"
  },
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nindent_style = tab\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[{README.md,package.json,.travis.yml,.babelrc}]\nindent_style = space\nindent_size = 2\n"
  },
  {
    "path": ".gitattributes",
    "content": "# Automatically normalize line endings for all text-based files\n* text=auto\n"
  },
  {
    "path": ".gitignore",
    "content": "# JSON version of coverage report\ncoverage/coverage.json\n\n# Installed npm modules\nnode_modules\n\n# Folder view configuration files\n.DS_Store\nDesktop.ini\n\n# Thumbnail cache files\n._*\nThumbs.db\n\n# Files that might appear on external disks\n.Spotlight-V100\n.Trashes\n"
  },
  {
    "path": ".travis.yml",
    "content": "sudo: false\nlanguage: node_js\nnode_js:\n  - \"4\"\n  - \"5\"\n  - \"6\"\nafter_script:\n  - 'istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec && codecov'\ngit:\n  depth: 1\n"
  },
  {
    "path": "Gruntfile.js",
    "content": "module.exports = function(grunt) {\n\n\tgrunt.initConfig({\n\t\t'template': {\n\t\t\t'build': {\n\t\t\t\t'options': {\n\t\t\t\t\t// Generate the regular expressions dynamically using Regenerate.\n\t\t\t\t\t'data': require('./src/data.js')\n\t\t\t\t},\n\t\t\t\t'files': {\n\t\t\t\t\t'cssesc.js': ['src/cssesc.js']\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tgrunt.loadNpmTasks('grunt-template');\n\n\tgrunt.registerTask('default', [\n\t\t'template'\n\t]);\n\n};\n"
  },
  {
    "path": "LICENSE-MIT.txt",
    "content": "Copyright Mathias Bynens <https://mathiasbynens.be/>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# cssesc [![Build status](https://travis-ci.org/mathiasbynens/cssesc.svg?branch=master)](https://travis-ci.org/mathiasbynens/cssesc) [![Code coverage status](https://img.shields.io/codecov/c/github/mathiasbynens/cssesc.svg)](https://codecov.io/gh/mathiasbynens/cssesc)\n\nA JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.\n\nThis is a JavaScript library for [escaping text for use in CSS strings or identifiers](https://mathiasbynens.be/notes/css-escapes) while generating the shortest possible valid ASCII-only output. [Here’s an online demo.](https://mothereff.in/css-escapes)\n\n[A polyfill for the CSSOM `CSS.escape()` method is available in a separate repository.](https://mths.be/cssescape) (In comparison, _cssesc_ is much more powerful.)\n\nFeel free to fork if you see possible improvements!\n\n## Installation\n\nVia [npm](https://www.npmjs.com/):\n\n```bash\nnpm install cssesc\n```\n\nIn a browser:\n\n```html\n<script src=\"cssesc.js\"></script>\n```\n\nIn [Node.js](https://nodejs.org/):\n\n```js\nconst cssesc = require('cssesc');\n```\n\nIn Ruby using [the `ruby-cssesc` wrapper gem](https://github.com/borodean/ruby-cssesc):\n\n```bash\ngem install ruby-cssesc\n```\n\n```ruby\nrequire 'ruby-cssesc'\nCSSEsc.escape('I ♥ Ruby', is_identifier: true)\n```\n\nIn Sass using [`sassy-escape`](https://github.com/borodean/sassy-escape):\n\n```bash\ngem install sassy-escape\n```\n\n```scss\nbody {\n  content: escape('I ♥ Sass', $is-identifier: true);\n}\n```\n\n## API\n\n### `cssesc(value, options)`\n\nThis function takes a value and returns an escaped version of the value where any characters that are not printable ASCII symbols are escaped using the shortest possible (but valid) [escape sequences for use in CSS strings or identifiers](https://mathiasbynens.be/notes/css-escapes).\n\n```js\ncssesc('Ich ♥ Bücher');\n// → 'Ich \\\\2665  B\\\\FC cher'\n\ncssesc('foo 𝌆 bar');\n// → 'foo \\\\1D306  bar'\n```\n\nBy default, `cssesc` returns a string that can be used as part of a CSS string. If the target is a CSS identifier rather than a CSS string, use the `isIdentifier: true` setting (see below).\n\nThe optional `options` argument accepts an object with the following options:\n\n#### `isIdentifier`\n\nThe default value for the `isIdentifier` option is `false`. This means that the input text will be escaped for use in a CSS string literal. If you want to use the result as a CSS identifier instead (in a selector, for example), set this option to `true`.\n\n```js\ncssesc('123a2b');\n// → '123a2b'\n\ncssesc('123a2b', {\n  'isIdentifier': true\n});\n// → '\\\\31 23a2b'\n```\n\n#### `quotes`\n\nThe default value for the `quotes` option is `'single'`. This means that any occurences of `'` in the input text will be escaped as `\\'`, so that the output can be used in a CSS string literal wrapped in single quotes.\n\n```js\ncssesc('Lorem ipsum \"dolor\" sit \\'amet\\' etc.');\n// → 'Lorem ipsum \"dolor\" sit \\\\\\'amet\\\\\\' etc.'\n// → \"Lorem ipsum \\\"dolor\\\" sit \\\\'amet\\\\' etc.\"\n\ncssesc('Lorem ipsum \"dolor\" sit \\'amet\\' etc.', {\n  'quotes': 'single'\n});\n// → 'Lorem ipsum \"dolor\" sit \\\\\\'amet\\\\\\' etc.'\n// → \"Lorem ipsum \\\"dolor\\\" sit \\\\'amet\\\\' etc.\"\n```\n\nIf you want to use the output as part of a CSS string literal wrapped in double quotes, set the `quotes` option to `'double'`.\n\n```js\ncssesc('Lorem ipsum \"dolor\" sit \\'amet\\' etc.', {\n  'quotes': 'double'\n});\n// → 'Lorem ipsum \\\\\"dolor\\\\\" sit \\'amet\\' etc.'\n// → \"Lorem ipsum \\\\\\\"dolor\\\\\\\" sit 'amet' etc.\"\n```\n\n#### `wrap`\n\nThe `wrap` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, the output will be a valid CSS string literal wrapped in quotes. The type of quotes can be specified through the `quotes` setting.\n\n```js\ncssesc('Lorem ipsum \"dolor\" sit \\'amet\\' etc.', {\n  'quotes': 'single',\n  'wrap': true\n});\n// → '\\'Lorem ipsum \"dolor\" sit \\\\\\'amet\\\\\\' etc.\\''\n// → \"\\'Lorem ipsum \\\"dolor\\\" sit \\\\\\'amet\\\\\\' etc.\\'\"\n\ncssesc('Lorem ipsum \"dolor\" sit \\'amet\\' etc.', {\n  'quotes': 'double',\n  'wrap': true\n});\n// → '\"Lorem ipsum \\\\\"dolor\\\\\" sit \\'amet\\' etc.\"'\n// → \"\\\"Lorem ipsum \\\\\\\"dolor\\\\\\\" sit \\'amet\\' etc.\\\"\"\n```\n\n#### `escapeEverything`\n\nThe `escapeEverything` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, all the symbols in the output will be escaped, even printable ASCII symbols.\n\n```js\ncssesc('lolwat\"foo\\'bar', {\n  'escapeEverything': true\n});\n// → '\\\\6C\\\\6F\\\\6C\\\\77\\\\61\\\\74\\\\\"\\\\66\\\\6F\\\\6F\\\\\\'\\\\62\\\\61\\\\72'\n// → \"\\\\6C\\\\6F\\\\6C\\\\77\\\\61\\\\74\\\\\\\"\\\\66\\\\6F\\\\6F\\\\'\\\\62\\\\61\\\\72\"\n```\n\n#### Overriding the default options globally\n\nThe global default settings can be overridden by modifying the `css.options` object. This saves you from passing in an `options` object for every call to `encode` if you want to use the non-default setting.\n\n```js\n// Read the global default setting for `escapeEverything`:\ncssesc.options.escapeEverything;\n// → `false` by default\n\n// Override the global default setting for `escapeEverything`:\ncssesc.options.escapeEverything = true;\n\n// Using the global default setting for `escapeEverything`, which is now `true`:\ncssesc('foo © bar ≠ baz 𝌆 qux');\n// → '\\\\66\\\\6F\\\\6F\\\\ \\\\A9\\\\ \\\\62\\\\61\\\\72\\\\ \\\\2260\\\\ \\\\62\\\\61\\\\7A\\\\ \\\\1D306\\\\ \\\\71\\\\75\\\\78'\n```\n\n### `cssesc.version`\n\nA string representing the semantic version number.\n\n### Using the `cssesc` binary\n\nTo use the `cssesc` binary in your shell, simply install cssesc globally using npm:\n\n```bash\nnpm install -g cssesc\n```\n\nAfter that you will be able to escape text for use in CSS strings or identifiers from the command line:\n\n```bash\n$ cssesc 'föo ♥ bår 𝌆 baz'\nf\\F6o \\2665  b\\E5r \\1D306  baz\n```\n\nIf the output needs to be a CSS identifier rather than part of a string literal, use the `-i`/`--identifier` option:\n\n```bash\n$ cssesc --identifier 'föo ♥ bår 𝌆 baz'\nf\\F6o\\ \\2665\\ b\\E5r\\ \\1D306\\ baz\n```\n\nSee `cssesc --help` for the full list of options.\n\n## Support\n\nThis library supports the Node.js and browser versions mentioned in [`.babelrc`](https://github.com/mathiasbynens/cssesc/blob/master/.babelrc). For a version that supports a wider variety of legacy browsers and environments out-of-the-box, [see v0.1.0](https://github.com/mathiasbynens/cssesc/releases/tag/v0.1.0).\n\n## Author\n\n| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias \"Follow @mathias on Twitter\") |\n|---|\n| [Mathias Bynens](https://mathiasbynens.be/) |\n\n## License\n\nThis library is available under the [MIT](https://mths.be/mit) license.\n"
  },
  {
    "path": "bin/cssesc",
    "content": "#!/usr/bin/env node\nconst fs = require('fs');\nconst cssesc = require('../cssesc.js');\nconst strings = process.argv.splice(2);\nconst stdin = process.stdin;\nconst options = {};\nconst log = console.log;\n\nconst main = function() {\n\tconst option = strings[0];\n\n\tif (/^(?:-h|--help|undefined)$/.test(option)) {\n\t\tlog(\n\t\t\t'cssesc v%s - https://mths.be/cssesc',\n\t\t\tcssesc.version\n\t\t);\n\t\tlog([\n\t\t\t'\\nUsage:\\n',\n\t\t\t'\\tcssesc [string]',\n\t\t\t'\\tcssesc [-i | --identifier] [string]',\n\t\t\t'\\tcssesc [-s | --single-quotes] [string]',\n\t\t\t'\\tcssesc [-d | --double-quotes] [string]',\n\t\t\t'\\tcssesc [-w | --wrap] [string]',\n\t\t\t'\\tcssesc [-e | --escape-everything] [string]',\n\t\t\t'\\tcssesc [-v | --version]',\n\t\t\t'\\tcssesc [-h | --help]',\n\t\t\t'\\nExamples:\\n',\n\t\t\t'\\tcssesc \\'f\\xF6o \\u2665 b\\xE5r \\uD834\\uDF06 baz\\'',\n\t\t\t'\\tcssesc --identifier \\'f\\xF6o \\u2665 b\\xE5r \\uD834\\uDF06 baz\\'',\n\t\t\t'\\tcssesc --escape-everything \\'f\\xF6o \\u2665 b\\xE5r \\uD834\\uDF06 baz\\'',\n\t\t\t'\\tcssesc --double-quotes --wrap \\'f\\xF6o \\u2665 b\\xE5r \\uD834\\uDF06 baz\\'',\n\t\t\t'\\techo \\'f\\xF6o \\u2665 b\\xE5r \\uD834\\uDF06 baz\\' | cssesc'\n\t\t].join('\\n'));\n\t\treturn process.exit(1);\n\t}\n\n\tif (/^(?:-v|--version)$/.test(option)) {\n\t\tlog('v%s', cssesc.version);\n\t\treturn process.exit(1);\n\t}\n\n\tstrings.forEach(function(string) {\n\t\t// Process options\n\t\tif (/^(?:-i|--identifier)$/.test(string)) {\n\t\t\toptions.isIdentifier = true;\n\t\t\treturn;\n\t\t}\n\t\tif (/^(?:-s|--single-quotes)$/.test(string)) {\n\t\t\toptions.quotes = 'single';\n\t\t\treturn;\n\t\t}\n\t\tif (/^(?:-d|--double-quotes)$/.test(string)) {\n\t\t\toptions.quotes = 'double';\n\t\t\treturn;\n\t\t}\n\t\tif (/^(?:-w|--wrap)$/.test(string)) {\n\t\t\toptions.wrap = true;\n\t\t\treturn;\n\t\t}\n\t\tif (/^(?:-e|--escape-everything)$/.test(string)) {\n\t\t\toptions.escapeEverything = true;\n\t\t\treturn;\n\t\t}\n\n\t\t// Process string(s)\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = cssesc(string, options);\n\t\t\tlog(result);\n\t\t} catch (exception) {\n\t\t\tlog(exception.message + '\\n');\n\t\t\tlog('Error: failed to escape.');\n\t\t\tlog('If you think this is a bug in cssesc, please report it:');\n\t\t\tlog('https://github.com/mathiasbynens/cssesc/issues/new');\n\t\t\tlog(\n\t\t\t\t'\\nStack trace using cssesc@%s:\\n',\n\t\t\t\tcssesc.version\n\t\t\t);\n\t\t\tlog(exception.stack);\n\t\t\treturn process.exit(1);\n\t\t}\n\t});\n\t// Return with exit status 0 outside of the `forEach` loop, in case\n\t// multiple strings were passed in.\n\treturn process.exit(0);\n\n};\n\nif (stdin.isTTY) {\n\t// handle shell arguments\n\tmain();\n} else {\n\tlet timeout;\n\t// Either the script is called from within a non-TTY context, or `stdin`\n\t// content is being piped in.\n\tif (!process.stdout.isTTY) {\n\t\t// The script was called from a non-TTY context. This is a rather uncommon\n\t\t// use case we don’t actively support. However, we don’t want the script\n\t\t// to wait forever in such cases, so…\n\t\ttimeout = setTimeout(function() {\n\t\t\t// …if no piped data arrived after a whole minute, handle shell\n\t\t\t// arguments instead.\n\t\t\tmain();\n\t\t}, 60000);\n\t}\n\tlet data = '';\n\tstdin.on('data', function(chunk) {\n\t\tclearTimeout(timeout);\n\t\tdata += chunk;\n\t});\n\tstdin.on('end', function() {\n\t\tstrings.push(data.trim());\n\t\tmain();\n\t});\n\tstdin.resume();\n}\n"
  },
  {
    "path": "coverage/cssesc/cssesc.js.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n    <title>Code coverage report for cssesc/cssesc.js</title>\n    <meta charset=\"utf-8\">\n\n    <link rel=\"stylesheet\" href=\"../prettify.css\">\n\n    <style>\n        body, html {\n            margin:0; padding: 0;\n        }\n        body {\n            font-family: Helvetica Neue, Helvetica,Arial;\n            font-size: 10pt;\n        }\n        div.header, div.footer {\n            background: #eee;\n            padding: 1em;\n        }\n        div.header {\n            z-index: 100;\n            position: fixed;\n            top: 0;\n            border-bottom: 1px solid #666;\n            width: 100%;\n        }\n        div.footer {\n            border-top: 1px solid #666;\n        }\n        div.body {\n            margin-top: 10em;\n        }\n        div.meta {\n            font-size: 90%;\n            text-align: center;\n        }\n        h1, h2, h3 {\n            font-weight: normal;\n        }\n        h1 {\n            font-size: 12pt;\n        }\n        h2 {\n            font-size: 10pt;\n        }\n        pre {\n            font-family: Consolas, Menlo, Monaco, monospace;\n            margin: 0;\n            padding: 0;\n            line-height: 14px;\n            font-size: 14px;\n            -moz-tab-size: 2;\n            -o-tab-size:  2;\n            tab-size: 2;\n        }\n\n        div.path { font-size: 110%; }\n        div.path a:link, div.path a:visited { color: #000; }\n        table.coverage { border-collapse: collapse; margin:0; padding: 0 }\n\n        table.coverage td {\n            margin: 0;\n            padding: 0;\n            color: #111;\n            vertical-align: top;\n        }\n        table.coverage td.line-count {\n            width: 50px;\n            text-align: right;\n            padding-right: 5px;\n        }\n        table.coverage td.line-coverage {\n            color: #777 !important;\n            text-align: right;\n            border-left: 1px solid #666;\n            border-right: 1px solid #666;\n        }\n\n        table.coverage td.text {\n        }\n\n        table.coverage td span.cline-any {\n            display: inline-block;\n            padding: 0 5px;\n            width: 40px;\n        }\n        table.coverage td span.cline-neutral {\n            background: #eee;\n        }\n        table.coverage td span.cline-yes {\n            background: #b5d592;\n            color: #999;\n        }\n        table.coverage td span.cline-no {\n            background: #fc8c84;\n        }\n\n        .cstat-yes { color: #111; }\n        .cstat-no { background: #fc8c84; color: #111; }\n        .fstat-no { background: #ffc520; color: #111 !important; }\n        .cbranch-no { background:  yellow !important; color: #111; }\n        .missing-if-branch {\n            display: inline-block;\n            margin-right: 10px;\n            position: relative;\n            padding: 0 4px;\n            background: black;\n            color: yellow;\n            xtext-decoration: line-through;\n        }\n        .missing-if-branch .typ {\n            color: inherit !important;\n        }\n\n        .entity, .metric { font-weight: bold; }\n        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }\n        .metric small { font-size: 80%; font-weight: normal; color: #666; }\n\n        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }\n        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }\n        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }\n        div.coverage-summary th.file { border-right: none !important; }\n        div.coverage-summary th.pic { border-left: none !important; text-align: right; }\n        div.coverage-summary th.pct { border-right: none !important; }\n        div.coverage-summary th.abs { border-left: none !important; text-align: right; }\n        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }\n        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }\n        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }\n        div.coverage-summary td.pic { min-width: 120px !important;  }\n        div.coverage-summary a:link { text-decoration: none; color: #000; }\n        div.coverage-summary a:visited { text-decoration: none; color: #333; }\n        div.coverage-summary a:hover { text-decoration: underline; }\n        div.coverage-summary tfoot td { border-top: 1px solid #666; }\n\n        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {\n            height: 10px;\n            width: 7px;\n            display: inline-block;\n            margin-left: 0.5em;\n        }\n        div.coverage-summary .yui3-datatable-sort-indicator {\n            background: url(\"http://yui.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png\") no-repeat scroll 0 0 transparent;\n        }\n        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {\n            background-position: 0 -20px;\n        }\n        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {\n            background-position: 0 -10px;\n        }\n\n        .high { background: #b5d592 !important; }\n        .medium { background: #ffe87c !important; }\n        .low { background: #fc8c84 !important; }\n\n        span.cover-fill, span.cover-empty {\n            display:inline-block;\n            border:1px solid #444;\n            background: white;\n            height: 12px;\n        }\n        span.cover-fill {\n            background: #ccc;\n            border-right: 1px solid #444;\n        }\n        span.cover-empty {\n            background: white;\n            border-left: none;\n        }\n        span.cover-full {\n            border-right: none !important;\n        }\n        pre.prettyprint {\n            border: none !important;\n            padding: 0 !important;\n            margin: 0 !important;\n        }\n        .com { color: #999 !important; }\n    </style>\n</head>\n<body>\n<div class=\"header high\">\n    <h1>Code coverage report for <span class=\"entity\">cssesc/cssesc.js</span></h1>\n    <h2>\n\n        Statements: <span class=\"metric\">95% <small>(76 / 80)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n\n\n        Branches: <span class=\"metric\">91.46% <small>(75 / 82)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n\n\n        Functions: <span class=\"metric\">80% <small>(4 / 5)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n\n\n        Lines: <span class=\"metric\">95% <small>(76 / 80)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n\n    </h2>\n    <div class=\"path\"><a href=\"../index.html\">All files</a> &#187; <a href=\"index.html\">cssesc/</a> &#187; cssesc.js</div>\n</div>\n<div class=\"body\">\n<pre><table class=\"coverage\">\n<tr><td class=\"line-count\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59\n60\n61\n62\n63\n64\n65\n66\n67\n68\n69\n70\n71\n72\n73\n74\n75\n76\n77\n78\n79\n80\n81\n82\n83\n84\n85\n86\n87\n88\n89\n90\n91\n92\n93\n94\n95\n96\n97\n98\n99\n100\n101\n102\n103\n104\n105\n106\n107\n108\n109\n110\n111\n112\n113\n114\n115\n116\n117\n118\n119\n120\n121\n122\n123\n124\n125\n126\n127\n128\n129\n130\n131\n132\n133\n134\n135\n136\n137\n138\n139\n140\n141\n142\n143\n144\n145\n146\n147\n148\n149\n150\n151\n152\n153\n154\n155\n156\n157\n158\n159\n160\n161\n162\n163\n164\n165\n166\n167\n168\n169\n170\n171\n172\n173\n174\n175\n176\n177\n178</td><td class=\"line-coverage\"><span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">10</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">21</span>\n<span class=\"cline-any cline-yes\">21</span>\n<span class=\"cline-any cline-yes\">21</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">105</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">21</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">193</span>\n<span class=\"cline-any cline-yes\">193</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">193</span>\n<span class=\"cline-any cline-yes\">15</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">2</span>\n<span class=\"cline-any cline-yes\">2</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">15</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">178</span>\n<span class=\"cline-any cline-yes\">15</span>\n<span class=\"cline-any cline-yes\">2</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">13</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">163</span>\n<span class=\"cline-any cline-yes\">2</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">161</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">11</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">150</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">193</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">8</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-yes\">7</span>\n<span class=\"cline-any cline-yes\">3</span>\n<span class=\"cline-any cline-yes\">4</span>\n<span class=\"cline-any cline-yes\">2</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">22</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">3</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">19</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">31</span>\n<span class=\"cline-any cline-yes\">4</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">27</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-no\">&nbsp;</span>\n<span class=\"cline-any cline-no\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-yes\">1</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-no\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-no\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span>\n<span class=\"cline-any cline-neutral\">&nbsp;</span></td><td class=\"text\"><pre class=\"prettyprint lang-js\">/*! https://mths.be/cssesc v0.1.0 by @mathias */\n;(function(root) {\n&nbsp;\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' &amp;&amp; exports;\n&nbsp;\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' &amp;&amp; module &amp;&amp;\n\t\tmodule.exports == freeExports &amp;&amp; module;\n&nbsp;\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' &amp;&amp; global;\n\t<span class=\"missing-if-branch\" title=\"else path not taken\"\" >E</span>if (freeGlobal.global === freeGlobal || <span class=\"branch-1 cbranch-no\" title=\"branch not covered\" >freeGlobal.window === freeGlobal)</span> {\n\t\troot = freeGlobal;\n\t}\n&nbsp;\n\t/*--------------------------------------------------------------------------*/\n&nbsp;\n\tvar object = {};\n\tvar hasOwnProperty = object.hasOwnProperty;\n\tvar merge = function(options, defaults) {\n\t\tif (!options) {\n\t\t\treturn defaults;\n\t\t}\n\t\tvar key;\n\t\tvar result = {};\n\t\tfor (key in defaults) {\n\t\t\t// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since\n\t\t\t// only recognized option names are used\n\t\t\tresult[key] = hasOwnProperty.call(options, key)\n\t\t\t\t? options[key]\n\t\t\t\t: defaults[key];\n\t\t}\n\t\treturn result;\n\t};\n&nbsp;\n\t/*--------------------------------------------------------------------------*/\n&nbsp;\n\tvar regexAnySingleEscape = /[\\x20-\\x2C\\x2E\\x2F\\x3B-\\x40\\x5B-\\x5E\\x60\\x7B-\\x7E]/;\n\tvar regexSingleEscape = /[\\x20\\x21\\x23-\\x26\\x28-\\x2C\\x2E\\x2F\\x3B-\\x40\\x5B\\x5D\\x5E\\x60\\x7B-\\x7E]/;\n\tvar regexAlwaysEscape = /['\"\\\\]/;\n\tvar regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n&nbsp;\n\t// https://mathiasbynens.be/notes/css-escapes#css\n\tvar cssesc = function(string, options) {\n&nbsp;\n\t\t// Handle options\n\t\toptions = merge(options, cssesc.options);\n\t\tif (options.quotes != 'single' &amp;&amp; options.quotes != 'double') {\n\t\t\toptions.quotes = 'single';\n\t\t}\n\t\tvar quote = options.quotes == 'double' ? '\"' : '\\'';\n\t\tvar isIdentifier = options.isIdentifier;\n&nbsp;\n\t\tvar firstChar = string.charAt(0);\n\t\tvar output = '';\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar character;\n\t\tvar codePoint;\n\t\tvar extra; // used for potential low surrogates\n&nbsp;\n\t\twhile (counter &lt; length) {\n\t\t\tcharacter = string.charAt(counter++);\n\t\t\tcodePoint = character.charCodeAt();\n\t\t\t// if it’s not a printable ASCII character\n\t\t\tif (codePoint &lt; 0x20 || codePoint &gt; 0x7E) {\n\t\t\t\tif (codePoint &gt;= 0xD800 &amp;&amp; codePoint &lt;= 0xDBFF &amp;&amp; counter &lt; length) {\n\t\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\t\tif ((extra &amp; 0xFC00) == 0xDC00) { // next character is low surrogate\n\t\t\t\t\t\tcodePoint = ((codePoint &amp; 0x3FF) &lt;&lt; 10) + (extra &amp; 0x3FF) + 0x10000;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\t\tcounter--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else {\n\t\t\t\tif (options.escapeEverything) {\n\t\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t\t}\n\t\t\t\t// `:` can be escaped as `\\:`, but that fails in IE &lt; 8\n\t\t\t\t} else if (/[\\t\\n\\f\\r\\x0B:]/.test(character)) {\n\t\t\t\t\tif (!isIdentifier &amp;&amp; character == ':') {\n\t\t\t\t\t\tvalue = character;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\tcharacter == '\\\\' ||\n\t\t\t\t\t(\n\t\t\t\t\t\t!isIdentifier &amp;&amp;\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(character == '\"' &amp;&amp; quote == character) ||\n\t\t\t\t\t\t\t(character == '\\'' &amp;&amp; quote == character)\n\t\t\t\t\t\t)\n\t\t\t\t\t) ||\n\t\t\t\t\t(isIdentifier &amp;&amp; regexSingleEscape.test(character))\n\t\t\t\t) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = character;\n\t\t\t\t}\n\t\t\t}\n\t\t\toutput += value;\n\t\t}\n&nbsp;\n\t\tif (isIdentifier) {\n\t\t\tif (/^_/.test(output)) {\n\t\t\t\t// Prevent IE6 from ignoring the rule altogether (in case this is for an\n\t\t\t\t// identifier used as a selector)\n\t\t\t\toutput = '\\\\_' + output.slice(1);\n\t\t\t} else if (/^-[-\\d]/.test(output)) {\n\t\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t\t}\n\t\t}\n&nbsp;\n\t\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t\t// since they’re redundant. Note that this is only possible if the escape\n\t\t// sequence isn’t preceded by an odd number of backslashes.\n\t\toutput = output.replace(regexExcessiveSpaces, function($0, $1, $2) {\n\t\t\tif ($1 &amp;&amp; $1.length % 2) {\n\t\t\t\t// it’s not safe to remove the space, so don’t\n\t\t\t\treturn $0;\n\t\t\t}\n\t\t\t// strip the space\n\t\t\treturn ($1 || '') + $2;\n\t\t});\n&nbsp;\n\t\tif (!isIdentifier &amp;&amp; options.wrap) {\n\t\t\treturn quote + output + quote;\n\t\t}\n\t\treturn output;\n\t};\n&nbsp;\n\t// Expose default options (so they can be overridden globally)\n\tcssesc.options = {\n\t\t'escapeEverything': false,\n\t\t'isIdentifier': false,\n\t\t'quotes': 'single',\n\t\t'wrap': false\n\t};\n&nbsp;\n\tcssesc.version = '0.1.0';\n&nbsp;\n\t/*--------------------------------------------------------------------------*/\n&nbsp;\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\t<span class=\"missing-if-branch\" title=\"if path not taken\"\" >I</span>if (\n\t\ttypeof define == 'function' &amp;&amp;\n<span class=\"branch-1 cbranch-no\" title=\"branch not covered\" >\t\ttypeof define.amd == 'object' </span>&amp;&amp;\n<span class=\"branch-2 cbranch-no\" title=\"branch not covered\" >\t\tdefine.amd</span>\n\t) {\n<span class=\"cstat-no\" title=\"statement not covered\" >\t\tdefine(<span class=\"fstat-no\" title=\"function not covered\" >function() {</span></span>\n<span class=\"cstat-no\" title=\"statement not covered\" >\t\t\treturn cssesc;</span>\n\t\t});\n\t}\telse <span class=\"missing-if-branch\" title=\"else path not taken\"\" >E</span>if (freeExports &amp;&amp; !freeExports.nodeType) {\n\t\t<span class=\"missing-if-branch\" title=\"else path not taken\"\" >E</span>if (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = cssesc;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n<span class=\"cstat-no\" title=\"statement not covered\" >\t\t\tfreeExports.cssesc = cssesc;</span>\n\t\t}\n\t} else { // in Rhino or a web browser\n<span class=\"cstat-no\" title=\"statement not covered\" >\t\troot.cssesc = cssesc;</span>\n\t}\n&nbsp;\n}(this));\n&nbsp;</pre></td></tr>\n</table></pre>\n\n</div>\n<div class=\"footer\">\n    <div class=\"meta\">Generated by <a href=\"http://istanbul-js.org/\" target=\"_blank\">istanbul</a> at Fri Aug 09 2013 15:29:03 GMT+0200 (CEST)</div>\n</div>\n\n<script src=\"../prettify.js\"></script>\n\n<script src=\"http://yui.yahooapis.com/3.6.0/build/yui/yui-min.js\"></script>\n<script>\n\n    YUI().use('datatable', function (Y) {\n\n        var formatters = {\n          pct: function (o) {\n              o.className += o.record.get('classes')[o.column.key];\n              try {\n                  return o.value.toFixed(2) + '%';\n              } catch (ex) { return o.value + '%'; }\n          },\n          html: function (o) {\n              o.className += o.record.get('classes')[o.column.key];\n              return o.record.get(o.column.key + '_html');\n          }\n        },\n          defaultFormatter = function (o) {\n              o.className += o.record.get('classes')[o.column.key];\n              return o.value;\n          };\n\n        function getColumns(theadNode) {\n            var colNodes = theadNode.all('tr th'),\n                cols = [],\n                col;\n            colNodes.each(function (colNode) {\n                col = {\n                    key: colNode.getAttribute('data-col'),\n                    label: colNode.get('innerHTML') || ' ',\n                    sortable: !colNode.getAttribute('data-nosort'),\n                    className: colNode.getAttribute('class'),\n                    type: colNode.getAttribute('data-type'),\n                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'\n                };\n                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;\n                cols.push(col);\n            });\n            return cols;\n        }\n\n        function getRowData(trNode, cols) {\n            var tdNodes = trNode.all('td'),\n                    i,\n                    row = { classes: {} },\n                    node,\n                    name;\n            for (i = 0; i < cols.length; i += 1) {\n                name = cols[i].key;\n                node = tdNodes.item(i);\n                row[name] = node.getAttribute('data-value') || node.get('innerHTML');\n                row[name + '_html'] = node.get('innerHTML');\n                row.classes[name] = node.getAttribute('class');\n                //Y.log('Name: ' + name + '; Value: ' + row[name]);\n                if (cols[i].type === 'number') { row[name] = row[name] * 1; }\n            }\n            //Y.log(row);\n            return row;\n        }\n\n        function getData(tbodyNode, cols) {\n            var data = [];\n            tbodyNode.all('tr').each(function (trNode) {\n                data.push(getRowData(trNode, cols));\n            });\n            return data;\n        }\n\n        function replaceTable(node) {\n            if (!node) { return; }\n            var cols = getColumns(node.one('thead')),\n                data = getData(node.one('tbody'), cols),\n                table,\n                parent = node.get('parentNode');\n\n            table = new Y.DataTable({\n                columns: cols,\n                data: data,\n                sortBy: 'file'\n            });\n            parent.set('innerHTML', '');\n            table.render(parent);\n        }\n\n        Y.on('domready', function () {\n            replaceTable(Y.one('div.coverage-summary table'));\n            if (typeof prettyPrint === 'function') {\n                prettyPrint();\n            }\n        });\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "coverage/cssesc/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n    <title>Code coverage report for cssesc/</title>\n    <meta charset=\"utf-8\">\n\n    <link rel=\"stylesheet\" href=\"../prettify.css\">\n\n    <style>\n        body, html {\n            margin:0; padding: 0;\n        }\n        body {\n            font-family: Helvetica Neue, Helvetica,Arial;\n            font-size: 10pt;\n        }\n        div.header, div.footer {\n            background: #eee;\n            padding: 1em;\n        }\n        div.header {\n            z-index: 100;\n            position: fixed;\n            top: 0;\n            border-bottom: 1px solid #666;\n            width: 100%;\n        }\n        div.footer {\n            border-top: 1px solid #666;\n        }\n        div.body {\n            margin-top: 10em;\n        }\n        div.meta {\n            font-size: 90%;\n            text-align: center;\n        }\n        h1, h2, h3 {\n            font-weight: normal;\n        }\n        h1 {\n            font-size: 12pt;\n        }\n        h2 {\n            font-size: 10pt;\n        }\n        pre {\n            font-family: Consolas, Menlo, Monaco, monospace;\n            margin: 0;\n            padding: 0;\n            line-height: 14px;\n            font-size: 14px;\n            -moz-tab-size: 2;\n            -o-tab-size:  2;\n            tab-size: 2;\n        }\n\n        div.path { font-size: 110%; }\n        div.path a:link, div.path a:visited { color: #000; }\n        table.coverage { border-collapse: collapse; margin:0; padding: 0 }\n\n        table.coverage td {\n            margin: 0;\n            padding: 0;\n            color: #111;\n            vertical-align: top;\n        }\n        table.coverage td.line-count {\n            width: 50px;\n            text-align: right;\n            padding-right: 5px;\n        }\n        table.coverage td.line-coverage {\n            color: #777 !important;\n            text-align: right;\n            border-left: 1px solid #666;\n            border-right: 1px solid #666;\n        }\n\n        table.coverage td.text {\n        }\n\n        table.coverage td span.cline-any {\n            display: inline-block;\n            padding: 0 5px;\n            width: 40px;\n        }\n        table.coverage td span.cline-neutral {\n            background: #eee;\n        }\n        table.coverage td span.cline-yes {\n            background: #b5d592;\n            color: #999;\n        }\n        table.coverage td span.cline-no {\n            background: #fc8c84;\n        }\n\n        .cstat-yes { color: #111; }\n        .cstat-no { background: #fc8c84; color: #111; }\n        .fstat-no { background: #ffc520; color: #111 !important; }\n        .cbranch-no { background:  yellow !important; color: #111; }\n        .missing-if-branch {\n            display: inline-block;\n            margin-right: 10px;\n            position: relative;\n            padding: 0 4px;\n            background: black;\n            color: yellow;\n            xtext-decoration: line-through;\n        }\n        .missing-if-branch .typ {\n            color: inherit !important;\n        }\n\n        .entity, .metric { font-weight: bold; }\n        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }\n        .metric small { font-size: 80%; font-weight: normal; color: #666; }\n\n        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }\n        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }\n        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }\n        div.coverage-summary th.file { border-right: none !important; }\n        div.coverage-summary th.pic { border-left: none !important; text-align: right; }\n        div.coverage-summary th.pct { border-right: none !important; }\n        div.coverage-summary th.abs { border-left: none !important; text-align: right; }\n        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }\n        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }\n        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }\n        div.coverage-summary td.pic { min-width: 120px !important;  }\n        div.coverage-summary a:link { text-decoration: none; color: #000; }\n        div.coverage-summary a:visited { text-decoration: none; color: #333; }\n        div.coverage-summary a:hover { text-decoration: underline; }\n        div.coverage-summary tfoot td { border-top: 1px solid #666; }\n\n        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {\n            height: 10px;\n            width: 7px;\n            display: inline-block;\n            margin-left: 0.5em;\n        }\n        div.coverage-summary .yui3-datatable-sort-indicator {\n            background: url(\"http://yui.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png\") no-repeat scroll 0 0 transparent;\n        }\n        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {\n            background-position: 0 -20px;\n        }\n        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {\n            background-position: 0 -10px;\n        }\n\n        .high { background: #b5d592 !important; }\n        .medium { background: #ffe87c !important; }\n        .low { background: #fc8c84 !important; }\n\n        span.cover-fill, span.cover-empty {\n            display:inline-block;\n            border:1px solid #444;\n            background: white;\n            height: 12px;\n        }\n        span.cover-fill {\n            background: #ccc;\n            border-right: 1px solid #444;\n        }\n        span.cover-empty {\n            background: white;\n            border-left: none;\n        }\n        span.cover-full {\n            border-right: none !important;\n        }\n        pre.prettyprint {\n            border: none !important;\n            padding: 0 !important;\n            margin: 0 !important;\n        }\n        .com { color: #999 !important; }\n    </style>\n</head>\n<body>\n<div class=\"header high\">\n    <h1>Code coverage report for <span class=\"entity\">cssesc/</span></h1>\n    <h2>\n        \n        Statements: <span class=\"metric\">95% <small>(76 / 80)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n        \n        \n        Branches: <span class=\"metric\">91.46% <small>(75 / 82)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n        \n        \n        Functions: <span class=\"metric\">80% <small>(4 / 5)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n        \n        \n        Lines: <span class=\"metric\">95% <small>(76 / 80)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n        \n    </h2>\n    <div class=\"path\"><a href=\"../index.html\">All files</a> &#187; cssesc/</div>\n</div>\n<div class=\"body\">\n<div class=\"coverage-summary\">\n<table>\n<thead>\n<tr>\n   <th data-col=\"file\" data-fmt=\"html\" data-html=\"true\" class=\"file\">File</th>\n   <th data-col=\"pic\" data-type=\"number\" data-fmt=\"html\" data-html=\"true\" class=\"pic\"></th>\n   <th data-col=\"statements\" data-type=\"number\" data-fmt=\"pct\" class=\"pct\">Statements</th>\n   <th data-col=\"statements_raw\" data-type=\"number\" data-fmt=\"html\" class=\"abs\"></th>\n   <th data-col=\"branches\" data-type=\"number\" data-fmt=\"pct\" class=\"pct\">Branches</th>\n   <th data-col=\"branches_raw\" data-type=\"number\" data-fmt=\"html\" class=\"abs\"></th>\n   <th data-col=\"functions\" data-type=\"number\" data-fmt=\"pct\" class=\"pct\">Functions</th>\n   <th data-col=\"functions_raw\" data-type=\"number\" data-fmt=\"html\" class=\"abs\"></th>\n   <th data-col=\"lines\" data-type=\"number\" data-fmt=\"pct\" class=\"pct\">Lines</th>\n   <th data-col=\"lines_raw\" data-type=\"number\" data-fmt=\"html\" class=\"abs\"></th>\n</tr>\n</thead>\n<tbody><tr>\n\t<td class=\"file high\" data-value=\"cssesc.js\"><a href=\"cssesc.js.html\">cssesc.js</a></td>\n\t<td data-value=\"95\" class=\"pic high\"><span class=\"cover-fill\" style=\"width: 95px;\"></span><span class=\"cover-empty\" style=\"width:5px;\"></span></td>\n\t<td data-value=\"95\" class=\"pct high\">95%</td>\n\t<td data-value=\"80\" class=\"abs high\">(76&nbsp;/&nbsp;80)</td>\n\t<td data-value=\"91.46\" class=\"pct high\">91.46%</td>\n\t<td data-value=\"82\" class=\"abs high\">(75&nbsp;/&nbsp;82)</td>\n\t<td data-value=\"80\" class=\"pct high\">80%</td>\n\t<td data-value=\"5\" class=\"abs high\">(4&nbsp;/&nbsp;5)</td>\n\t<td data-value=\"95\" class=\"pct high\">95%</td>\n\t<td data-value=\"80\" class=\"abs high\">(76&nbsp;/&nbsp;80)</td>\n\t</tr>\n\n</tbody>\n</table>\n</div>\n</div>\n<div class=\"footer\">\n    <div class=\"meta\">Generated by <a href=\"http://istanbul-js.org/\" target=\"_blank\">istanbul</a> at Fri Aug 09 2013 15:29:03 GMT+0200 (CEST)</div>\n</div>\n\n<script src=\"../prettify.js\"></script>\n\n<script src=\"http://yui.yahooapis.com/3.6.0/build/yui/yui-min.js\"></script>\n<script>\n\n    YUI().use('datatable', function (Y) {\n\n        var formatters = {\n          pct: function (o) {\n              o.className += o.record.get('classes')[o.column.key];\n              try {\n                  return o.value.toFixed(2) + '%';\n              } catch (ex) { return o.value + '%'; }\n          },\n          html: function (o) {\n              o.className += o.record.get('classes')[o.column.key];\n              return o.record.get(o.column.key + '_html');\n          }\n        },\n          defaultFormatter = function (o) {\n              o.className += o.record.get('classes')[o.column.key];\n              return o.value;\n          };\n\n        function getColumns(theadNode) {\n            var colNodes = theadNode.all('tr th'),\n                cols = [],\n                col;\n            colNodes.each(function (colNode) {\n                col = {\n                    key: colNode.getAttribute('data-col'),\n                    label: colNode.get('innerHTML') || ' ',\n                    sortable: !colNode.getAttribute('data-nosort'),\n                    className: colNode.getAttribute('class'),\n                    type: colNode.getAttribute('data-type'),\n                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'\n                };\n                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;\n                cols.push(col);\n            });\n            return cols;\n        }\n\n        function getRowData(trNode, cols) {\n            var tdNodes = trNode.all('td'),\n                    i,\n                    row = { classes: {} },\n                    node,\n                    name;\n            for (i = 0; i < cols.length; i += 1) {\n                name = cols[i].key;\n                node = tdNodes.item(i);\n                row[name] = node.getAttribute('data-value') || node.get('innerHTML');\n                row[name + '_html'] = node.get('innerHTML');\n                row.classes[name] = node.getAttribute('class');\n                //Y.log('Name: ' + name + '; Value: ' + row[name]);\n                if (cols[i].type === 'number') { row[name] = row[name] * 1; }\n            }\n            //Y.log(row);\n            return row;\n        }\n\n        function getData(tbodyNode, cols) {\n            var data = [];\n            tbodyNode.all('tr').each(function (trNode) {\n                data.push(getRowData(trNode, cols));\n            });\n            return data;\n        }\n\n        function replaceTable(node) {\n            if (!node) { return; }\n            var cols = getColumns(node.one('thead')),\n                data = getData(node.one('tbody'), cols),\n                table,\n                parent = node.get('parentNode');\n\n            table = new Y.DataTable({\n                columns: cols,\n                data: data,\n                sortBy: 'file'\n            });\n            parent.set('innerHTML', '');\n            table.render(parent);\n        }\n\n        Y.on('domready', function () {\n            replaceTable(Y.one('div.coverage-summary table'));\n            if (typeof prettyPrint === 'function') {\n                prettyPrint();\n            }\n        });\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "coverage/index.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n<head>\n    <title>Code coverage report for All files</title>\n    <meta charset=\"utf-8\">\n\n    <link rel=\"stylesheet\" href=\"prettify.css\">\n\n    <style>\n        body, html {\n            margin:0; padding: 0;\n        }\n        body {\n            font-family: Helvetica Neue, Helvetica,Arial;\n            font-size: 10pt;\n        }\n        div.header, div.footer {\n            background: #eee;\n            padding: 1em;\n        }\n        div.header {\n            z-index: 100;\n            position: fixed;\n            top: 0;\n            border-bottom: 1px solid #666;\n            width: 100%;\n        }\n        div.footer {\n            border-top: 1px solid #666;\n        }\n        div.body {\n            margin-top: 10em;\n        }\n        div.meta {\n            font-size: 90%;\n            text-align: center;\n        }\n        h1, h2, h3 {\n            font-weight: normal;\n        }\n        h1 {\n            font-size: 12pt;\n        }\n        h2 {\n            font-size: 10pt;\n        }\n        pre {\n            font-family: Consolas, Menlo, Monaco, monospace;\n            margin: 0;\n            padding: 0;\n            line-height: 14px;\n            font-size: 14px;\n            -moz-tab-size: 2;\n            -o-tab-size:  2;\n            tab-size: 2;\n        }\n\n        div.path { font-size: 110%; }\n        div.path a:link, div.path a:visited { color: #000; }\n        table.coverage { border-collapse: collapse; margin:0; padding: 0 }\n\n        table.coverage td {\n            margin: 0;\n            padding: 0;\n            color: #111;\n            vertical-align: top;\n        }\n        table.coverage td.line-count {\n            width: 50px;\n            text-align: right;\n            padding-right: 5px;\n        }\n        table.coverage td.line-coverage {\n            color: #777 !important;\n            text-align: right;\n            border-left: 1px solid #666;\n            border-right: 1px solid #666;\n        }\n\n        table.coverage td.text {\n        }\n\n        table.coverage td span.cline-any {\n            display: inline-block;\n            padding: 0 5px;\n            width: 40px;\n        }\n        table.coverage td span.cline-neutral {\n            background: #eee;\n        }\n        table.coverage td span.cline-yes {\n            background: #b5d592;\n            color: #999;\n        }\n        table.coverage td span.cline-no {\n            background: #fc8c84;\n        }\n\n        .cstat-yes { color: #111; }\n        .cstat-no { background: #fc8c84; color: #111; }\n        .fstat-no { background: #ffc520; color: #111 !important; }\n        .cbranch-no { background:  yellow !important; color: #111; }\n        .missing-if-branch {\n            display: inline-block;\n            margin-right: 10px;\n            position: relative;\n            padding: 0 4px;\n            background: black;\n            color: yellow;\n            xtext-decoration: line-through;\n        }\n        .missing-if-branch .typ {\n            color: inherit !important;\n        }\n\n        .entity, .metric { font-weight: bold; }\n        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }\n        .metric small { font-size: 80%; font-weight: normal; color: #666; }\n\n        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }\n        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }\n        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }\n        div.coverage-summary th.file { border-right: none !important; }\n        div.coverage-summary th.pic { border-left: none !important; text-align: right; }\n        div.coverage-summary th.pct { border-right: none !important; }\n        div.coverage-summary th.abs { border-left: none !important; text-align: right; }\n        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }\n        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }\n        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }\n        div.coverage-summary td.pic { min-width: 120px !important;  }\n        div.coverage-summary a:link { text-decoration: none; color: #000; }\n        div.coverage-summary a:visited { text-decoration: none; color: #333; }\n        div.coverage-summary a:hover { text-decoration: underline; }\n        div.coverage-summary tfoot td { border-top: 1px solid #666; }\n\n        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {\n            height: 10px;\n            width: 7px;\n            display: inline-block;\n            margin-left: 0.5em;\n        }\n        div.coverage-summary .yui3-datatable-sort-indicator {\n            background: url(\"http://yui.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png\") no-repeat scroll 0 0 transparent;\n        }\n        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {\n            background-position: 0 -20px;\n        }\n        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {\n            background-position: 0 -10px;\n        }\n\n        .high { background: #b5d592 !important; }\n        .medium { background: #ffe87c !important; }\n        .low { background: #fc8c84 !important; }\n\n        span.cover-fill, span.cover-empty {\n            display:inline-block;\n            border:1px solid #444;\n            background: white;\n            height: 12px;\n        }\n        span.cover-fill {\n            background: #ccc;\n            border-right: 1px solid #444;\n        }\n        span.cover-empty {\n            background: white;\n            border-left: none;\n        }\n        span.cover-full {\n            border-right: none !important;\n        }\n        pre.prettyprint {\n            border: none !important;\n            padding: 0 !important;\n            margin: 0 !important;\n        }\n        .com { color: #999 !important; }\n    </style>\n</head>\n<body>\n<div class=\"header high\">\n    <h1>Code coverage report for <span class=\"entity\">All files</span></h1>\n    <h2>\n        \n        Statements: <span class=\"metric\">95% <small>(76 / 80)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n        \n        \n        Branches: <span class=\"metric\">91.46% <small>(75 / 82)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n        \n        \n        Functions: <span class=\"metric\">80% <small>(4 / 5)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n        \n        \n        Lines: <span class=\"metric\">95% <small>(76 / 80)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;\n        \n    </h2>\n    <div class=\"path\"></div>\n</div>\n<div class=\"body\">\n<div class=\"coverage-summary\">\n<table>\n<thead>\n<tr>\n   <th data-col=\"file\" data-fmt=\"html\" data-html=\"true\" class=\"file\">File</th>\n   <th data-col=\"pic\" data-type=\"number\" data-fmt=\"html\" data-html=\"true\" class=\"pic\"></th>\n   <th data-col=\"statements\" data-type=\"number\" data-fmt=\"pct\" class=\"pct\">Statements</th>\n   <th data-col=\"statements_raw\" data-type=\"number\" data-fmt=\"html\" class=\"abs\"></th>\n   <th data-col=\"branches\" data-type=\"number\" data-fmt=\"pct\" class=\"pct\">Branches</th>\n   <th data-col=\"branches_raw\" data-type=\"number\" data-fmt=\"html\" class=\"abs\"></th>\n   <th data-col=\"functions\" data-type=\"number\" data-fmt=\"pct\" class=\"pct\">Functions</th>\n   <th data-col=\"functions_raw\" data-type=\"number\" data-fmt=\"html\" class=\"abs\"></th>\n   <th data-col=\"lines\" data-type=\"number\" data-fmt=\"pct\" class=\"pct\">Lines</th>\n   <th data-col=\"lines_raw\" data-type=\"number\" data-fmt=\"html\" class=\"abs\"></th>\n</tr>\n</thead>\n<tbody><tr>\n\t<td class=\"file high\" data-value=\"cssesc/\"><a href=\"cssesc/index.html\">cssesc/</a></td>\n\t<td data-value=\"95\" class=\"pic high\"><span class=\"cover-fill\" style=\"width: 95px;\"></span><span class=\"cover-empty\" style=\"width:5px;\"></span></td>\n\t<td data-value=\"95\" class=\"pct high\">95%</td>\n\t<td data-value=\"80\" class=\"abs high\">(76&nbsp;/&nbsp;80)</td>\n\t<td data-value=\"91.46\" class=\"pct high\">91.46%</td>\n\t<td data-value=\"82\" class=\"abs high\">(75&nbsp;/&nbsp;82)</td>\n\t<td data-value=\"80\" class=\"pct high\">80%</td>\n\t<td data-value=\"5\" class=\"abs high\">(4&nbsp;/&nbsp;5)</td>\n\t<td data-value=\"95\" class=\"pct high\">95%</td>\n\t<td data-value=\"80\" class=\"abs high\">(76&nbsp;/&nbsp;80)</td>\n\t</tr>\n\n</tbody>\n</table>\n</div>\n</div>\n<div class=\"footer\">\n    <div class=\"meta\">Generated by <a href=\"http://istanbul-js.org/\" target=\"_blank\">istanbul</a> at Fri Aug 09 2013 15:29:03 GMT+0200 (CEST)</div>\n</div>\n\n<script src=\"prettify.js\"></script>\n\n<script src=\"http://yui.yahooapis.com/3.6.0/build/yui/yui-min.js\"></script>\n<script>\n\n    YUI().use('datatable', function (Y) {\n\n        var formatters = {\n          pct: function (o) {\n              o.className += o.record.get('classes')[o.column.key];\n              try {\n                  return o.value.toFixed(2) + '%';\n              } catch (ex) { return o.value + '%'; }\n          },\n          html: function (o) {\n              o.className += o.record.get('classes')[o.column.key];\n              return o.record.get(o.column.key + '_html');\n          }\n        },\n          defaultFormatter = function (o) {\n              o.className += o.record.get('classes')[o.column.key];\n              return o.value;\n          };\n\n        function getColumns(theadNode) {\n            var colNodes = theadNode.all('tr th'),\n                cols = [],\n                col;\n            colNodes.each(function (colNode) {\n                col = {\n                    key: colNode.getAttribute('data-col'),\n                    label: colNode.get('innerHTML') || ' ',\n                    sortable: !colNode.getAttribute('data-nosort'),\n                    className: colNode.getAttribute('class'),\n                    type: colNode.getAttribute('data-type'),\n                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'\n                };\n                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;\n                cols.push(col);\n            });\n            return cols;\n        }\n\n        function getRowData(trNode, cols) {\n            var tdNodes = trNode.all('td'),\n                    i,\n                    row = { classes: {} },\n                    node,\n                    name;\n            for (i = 0; i < cols.length; i += 1) {\n                name = cols[i].key;\n                node = tdNodes.item(i);\n                row[name] = node.getAttribute('data-value') || node.get('innerHTML');\n                row[name + '_html'] = node.get('innerHTML');\n                row.classes[name] = node.getAttribute('class');\n                //Y.log('Name: ' + name + '; Value: ' + row[name]);\n                if (cols[i].type === 'number') { row[name] = row[name] * 1; }\n            }\n            //Y.log(row);\n            return row;\n        }\n\n        function getData(tbodyNode, cols) {\n            var data = [];\n            tbodyNode.all('tr').each(function (trNode) {\n                data.push(getRowData(trNode, cols));\n            });\n            return data;\n        }\n\n        function replaceTable(node) {\n            if (!node) { return; }\n            var cols = getColumns(node.one('thead')),\n                data = getData(node.one('tbody'), cols),\n                table,\n                parent = node.get('parentNode');\n\n            table = new Y.DataTable({\n                columns: cols,\n                data: data,\n                sortBy: 'file'\n            });\n            parent.set('innerHTML', '');\n            table.render(parent);\n        }\n\n        Y.on('domready', function () {\n            replaceTable(Y.one('div.coverage-summary table'));\n            if (typeof prettyPrint === 'function') {\n                prettyPrint();\n            }\n        });\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "coverage/prettify.css",
    "content": ".pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}\n"
  },
  {
    "path": "coverage/prettify.js",
    "content": "window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=[\"break,continue,do,else,for,if,return,while\"];var u=[h,\"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile\"];var p=[u,\"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof\"];var l=[p,\"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where\"];var x=[p,\"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient\"];var R=[x,\"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var\"];var r=\"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes\";var w=[p,\"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN\"];var s=\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\";var I=[h,\"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None\"];var f=[h,\"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END\"];var H=[h,\"case,done,elif,esac,eval,fi,function,in,local,set,then,until\"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\\d*)/;var C=\"str\";var z=\"kwd\";var j=\"com\";var O=\"typ\";var G=\"lit\";var L=\"pun\";var F=\"pln\";var m=\"tag\";var E=\"dec\";var J=\"src\";var P=\"atn\";var n=\"atv\";var N=\"nocode\";var M=\"(?:^^\\\\.?|[+-]|\\\\!|\\\\!=|\\\\!==|\\\\#|\\\\%|\\\\%=|&|&&|&&=|&=|\\\\(|\\\\*|\\\\*=|\\\\+=|\\\\,|\\\\-=|\\\\->|\\\\/|\\\\/=|:|::|\\\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\\\?|\\\\@|\\\\[|\\\\^|\\\\^=|\\\\^\\\\^|\\\\^\\\\^=|\\\\{|\\\\||\\\\|=|\\\\|\\\\||\\\\|\\\\|=|\\\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\\\s*\";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.ignoreCase){ac=true}else{if(/[a-z]/i.test(ae.source.replace(/\\\\u[0-9a-f]{4}|\\\\x[0-9a-f]{2}|\\\\[^ux]/gi,\"\"))){S=true;ac=false;break}}}var Y={b:8,t:9,n:10,v:11,f:12,r:13};function ab(ah){var ag=ah.charCodeAt(0);if(ag!==92){return ag}var af=ah.charAt(1);ag=Y[af];if(ag){return ag}else{if(\"0\"<=af&&af<=\"7\"){return parseInt(ah.substring(1),8)}else{if(af===\"u\"||af===\"x\"){return parseInt(ah.substring(2),16)}else{return ah.charCodeAt(1)}}}}function T(af){if(af<32){return(af<16?\"\\\\x0\":\"\\\\x\")+af.toString(16)}var ag=String.fromCharCode(af);if(ag===\"\\\\\"||ag===\"-\"||ag===\"[\"||ag===\"]\"){ag=\"\\\\\"+ag}return ag}function X(am){var aq=am.substring(1,am.length-1).match(new RegExp(\"\\\\\\\\u[0-9A-Fa-f]{4}|\\\\\\\\x[0-9A-Fa-f]{2}|\\\\\\\\[0-3][0-7]{0,2}|\\\\\\\\[0-7]{1,2}|\\\\\\\\[\\\\s\\\\S]|-|[^-\\\\\\\\]\",\"g\"));var ak=[];var af=[];var ao=aq[0]===\"^\";for(var ar=ao?1:0,aj=aq.length;ar<aj;++ar){var ah=aq[ar];if(/\\\\[bdsw]/i.test(ah)){ak.push(ah)}else{var ag=ab(ah);var al;if(ar+2<aj&&\"-\"===aq[ar+1]){al=ab(aq[ar+2]);ar+=2}else{al=ag}af.push([ag,al]);if(!(al<65||ag>122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;ar<af.length;++ar){var at=af[ar];if(at[0]<=ap[1]+1){ap[1]=Math.max(ap[1],at[1])}else{ai.push(ap=at)}}var an=[\"[\"];if(ao){an.push(\"^\")}an.push.apply(an,ak);for(var ar=0;ar<ai.length;++ar){var at=ai[ar];an.push(T(at[0]));if(at[1]>at[0]){if(at[1]+1>at[0]){an.push(\"-\")}an.push(T(at[1]))}}an.push(\"]\");return an.join(\"\")}function W(al){var aj=al.source.match(new RegExp(\"(?:\\\\[(?:[^\\\\x5C\\\\x5D]|\\\\\\\\[\\\\s\\\\S])*\\\\]|\\\\\\\\u[A-Fa-f0-9]{4}|\\\\\\\\x[A-Fa-f0-9]{2}|\\\\\\\\[0-9]+|\\\\\\\\[^ux0-9]|\\\\(\\\\?[:!=]|[\\\\(\\\\)\\\\^]|[^\\\\x5B\\\\x5C\\\\(\\\\)\\\\^]+)\",\"g\"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag===\"(\"){++am}else{if(\"\\\\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){an[af]=-1}}}}for(var ak=1;ak<an.length;++ak){if(-1===an[ak]){an[ak]=++ad}}for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag===\"(\"){++am;if(an[am]===undefined){aj[ak]=\"(?:\"}}else{if(\"\\\\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){aj[ak]=\"\\\\\"+an[am]}}}}for(var ak=0,am=0;ak<ah;++ak){if(\"^\"===aj[ak]&&\"^\"!==aj[ak+1]){aj[ak]=\"\"}}if(al.ignoreCase&&S){for(var ak=0;ak<ah;++ak){var ag=aj[ak];var ai=ag.charAt(0);if(ag.length>=2&&ai===\"[\"){aj[ak]=X(ag)}else{if(ai!==\"\\\\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return\"[\"+String.fromCharCode(ap&~32,ap|32)+\"]\"})}}}}return aj.join(\"\")}var aa=[];for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.global||ae.multiline){throw new Error(\"\"+ae)}aa.push(\"(?:\"+W(ae)+\")\")}return new RegExp(aa.join(\"|\"),ac?\"gi\":\"g\")}function a(V){var U=/(?:^|\\s)nocode(?:\\s|$)/;var X=[];var T=0;var Z=[];var W=0;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=document.defaultView.getComputedStyle(V,null).getPropertyValue(\"white-space\")}}var Y=S&&\"pre\"===S.substring(0,3);function aa(ab){switch(ab.nodeType){case 1:if(U.test(ab.className)){return}for(var ae=ab.firstChild;ae;ae=ae.nextSibling){aa(ae)}var ad=ab.nodeName;if(\"BR\"===ad||\"LI\"===ad){X[W]=\"\\n\";Z[W<<1]=T++;Z[(W++<<1)|1]=ab}break;case 3:case 4:var ac=ab.nodeValue;if(ac.length){if(!Y){ac=ac.replace(/[ \\t\\r\\n]+/g,\" \")}else{ac=ac.replace(/\\r\\n?/g,\"\\n\")}X[W]=ac;Z[W<<1]=T;T+=ac.length;Z[(W++<<1)|1]=ab}break}}aa(V);return{sourceCode:X.join(\"\").replace(/\\n$/,\"\"),spans:Z}}function B(S,U,W,T){if(!U){return}var V={sourceCode:U,basePos:S};W(V);T.push.apply(T,V.decorations)}var v=/\\S/;function o(S){var V=undefined;for(var U=S.firstChild;U;U=U.nextSibling){var T=U.nodeType;V=(T===1)?(V?S:U):(T===3)?(v.test(U.nodeValue)?S:V):V}return V===S?undefined:V}function g(U,T){var S={};var V;(function(){var ad=U.concat(T);var ah=[];var ag={};for(var ab=0,Z=ad.length;ab<Z;++ab){var Y=ad[ab];var ac=Y[3];if(ac){for(var ae=ac.length;--ae>=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=\"\"+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\\0-\\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae<aq;++ae){var ag=an[ae];var ap=aj[ag];var ai=void 0;var am;if(typeof ap===\"string\"){am=false}else{var aa=S[ag.charAt(0)];if(aa){ai=ag.match(aa[1]);ap=aa[0]}else{for(var ao=0;ao<X;++ao){aa=T[ao];ai=ag.match(aa[1]);if(ai){ap=aa[0];break}}if(!ai){ap=F}}am=ap.length>=5&&\"lang-\"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]===\"string\")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\\'\\'\\'(?:[^\\'\\\\]|\\\\[\\s\\S]|\\'{1,2}(?=[^\\']))*(?:\\'\\'\\'|$)|\\\"\\\"\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S]|\\\"{1,2}(?=[^\\\"]))*(?:\\\"\\\"\\\"|$)|\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$))/,null,\"'\\\"\"])}else{if(T.multiLineStrings){W.push([C,/^(?:\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$)|\\`(?:[^\\\\\\`]|\\\\[\\s\\S])*(?:\\`|$))/,null,\"'\\\"`\"])}else{W.push([C,/^(?:\\'(?:[^\\\\\\'\\r\\n]|\\\\.)*(?:\\'|$)|\\\"(?:[^\\\\\\\"\\r\\n]|\\\\.)*(?:\\\"|$))/,null,\"\\\"'\"])}}if(T.verbatimStrings){S.push([C,/^@\\\"(?:[^\\\"]|\\\"\\\")*(?:\\\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,\"#\"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\\b|[^\\r\\n]*)/,null,\"#\"])}S.push([C,/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h|[a-z]\\w*)>/,null])}else{W.push([j,/^#[^\\r\\n]*/,null,\"#\"])}}if(T.cStyleComments){S.push([j,/^\\/\\/[^\\r\\n]*/,null]);S.push([j,/^\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,null])}if(T.regexLiterals){var X=(\"/(?=[^/*])(?:[^/\\\\x5B\\\\x5C]|\\\\x5C[\\\\s\\\\S]|\\\\x5B(?:[^\\\\x5C\\\\x5D]|\\\\x5C[\\\\s\\\\S])*(?:\\\\x5D|$))+/\");S.push([\"lang-regex\",new RegExp(\"^\"+M+\"(\"+X+\")\")])}var V=T.types;if(V){S.push([O,V])}var U=(\"\"+T.keywords).replace(/^ | $/g,\"\");if(U.length){S.push([z,new RegExp(\"^(?:\"+U.replace(/[\\s,]+/g,\"|\")+\")\\\\b\"),null])}W.push([F,/^\\s+/,null,\" \\r\\n\\t\\xA0\"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\\w+_t\\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp(\"^(?:0x[a-f0-9]+|(?:\\\\d(?:_\\\\d+)*\\\\d*(?:\\\\.\\\\d*)?|\\\\.\\\\d\\\\+)(?:e[+\\\\-]?\\\\d+)?)[a-z]*\",\"i\"),null,\"0123456789\"],[F,/^\\\\[\\s\\S]?/,null],[L,/^.[^\\s\\w\\.$@\\'\\\"\\`\\/\\#\\\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\\s)nocode(?:\\s|$)/;var ab=/\\r\\n?|\\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue(\"white-space\")}}var Z=S&&\"pre\"===S.substring(0,3);var af=ac.createElement(\"LI\");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if(\"BR\"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y<W.length;++Y){ae(W[Y])}if(ag===(ag|0)){W[0].setAttribute(\"value\",ag)}var aa=ac.createElement(\"OL\");aa.className=\"linenums\";var X=Math.max(0,((ag-1))|0)||0;for(var Y=0,T=W.length;Y<T;++Y){af=W[Y];af.className=\"L\"+((Y+X)%10);if(!af.firstChild){af.appendChild(ac.createTextNode(\"\\xA0\"))}aa.appendChild(af)}V.appendChild(aa)}function D(ac){var aj=/\\bMSIE\\b/.test(navigator.userAgent);var am=/\\n/g;var al=ac.sourceCode;var an=al.length;var V=0;var aa=ac.spans;var T=aa.length;var ah=0;var X=ac.decorations;var Y=X.length;var Z=0;X[Y]=an;var ar,aq;for(aq=ar=0;aq<Y;){if(X[aq]!==X[aq+2]){X[ar++]=X[aq++];X[ar++]=X[aq++]}else{aq+=2}}Y=ar;for(aq=ar=0;aq<Y;){var at=X[aq];var ab=X[aq+1];var W=aq+2;while(W+2<=Y&&X[W+1]===ab){W+=2}X[ar++]=at;X[ar++]=ab;aq=W}Y=X.length=ar;var ae=null;while(ah<T){var af=aa[ah];var S=aa[ah+2]||an;var ag=X[Z];var ap=X[Z+2]||an;var W=Math.min(S,ap);var ak=aa[ah+1];var U;if(ak.nodeType!==1&&(U=al.substring(V,W))){if(aj){U=U.replace(am,\"\\r\")}ak.nodeValue=U;var ai=ak.ownerDocument;var ao=ai.createElement(\"SPAN\");ao.className=X[Z+1];var ad=ak.parentNode;ad.replaceChild(ao,ak);ao.appendChild(ak);if(V<S){aa[ah+1]=ak=ai.createTextNode(al.substring(W,S));ad.insertBefore(ak,ao.nextSibling)}}V=W;if(V>=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn(\"cannot override language handler %s\",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\\s*</.test(S)?\"default-markup\":\"default-code\"}return t[T]}c(K,[\"default-code\"]);c(g([],[[F,/^[^<?]+/],[E,/^<!\\w[^>]*(?:>|$)/],[j,/^<\\!--[\\s\\S]*?(?:-\\->|$)/],[\"lang-\",/^<\\?([\\s\\S]+?)(?:\\?>|$)/],[\"lang-\",/^<%([\\s\\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],[\"lang-\",/^<xmp\\b[^>]*>([\\s\\S]+?)<\\/xmp\\b[^>]*>/i],[\"lang-js\",/^<script\\b[^>]*>([\\s\\S]*?)(<\\/script\\b[^>]*>)/i],[\"lang-css\",/^<style\\b[^>]*>([\\s\\S]*?)(<\\/style\\b[^>]*>)/i],[\"lang-in.tag\",/^(<\\/?[a-z][^<>]*>)/i]]),[\"default-markup\",\"htm\",\"html\",\"mxml\",\"xhtml\",\"xml\",\"xsl\"]);c(g([[F,/^[\\s]+/,null,\" \\t\\r\\n\"],[n,/^(?:\\\"[^\\\"]*\\\"?|\\'[^\\']*\\'?)/,null,\"\\\"'\"]],[[m,/^^<\\/?[a-z](?:[\\w.:-]*\\w)?|\\/?>$/i],[P,/^(?!style[\\s=]|on)[a-z](?:[\\w:-]*\\w)?/i],[\"lang-uq.val\",/^=\\s*([^>\\'\\\"\\s]*(?:[^>\\'\\\"\\s\\/]|\\/(?=\\s)))/],[L,/^[=<>\\/]+/],[\"lang-js\",/^on\\w+\\s*=\\s*\\\"([^\\\"]+)\\\"/i],[\"lang-js\",/^on\\w+\\s*=\\s*\\'([^\\']+)\\'/i],[\"lang-js\",/^on\\w+\\s*=\\s*([^\\\"\\'>\\s]+)/i],[\"lang-css\",/^style\\s*=\\s*\\\"([^\\\"]+)\\\"/i],[\"lang-css\",/^style\\s*=\\s*\\'([^\\']+)\\'/i],[\"lang-css\",/^style\\s*=\\s*([^\\\"\\'>\\s]+)/i]]),[\"in.tag\"]);c(g([],[[n,/^[\\s\\S]+/]]),[\"uq.val\"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),[\"c\",\"cc\",\"cpp\",\"cxx\",\"cyc\",\"m\"]);c(i({keywords:\"null,true,false\"}),[\"json\"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),[\"cs\"]);c(i({keywords:x,cStyleComments:true}),[\"java\"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),[\"bsh\",\"csh\",\"sh\"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),[\"cv\",\"py\"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),[\"perl\",\"pl\",\"pm\"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),[\"rb\"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),[\"js\"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),[\"coffee\"]);c(g([],[[C,/^[\\s\\S]+/]]),[\"regex\"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if(\"console\" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement(\"PRE\");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y(\"pre\"),Y(\"code\"),Y(\"xmp\")];var T=[];for(var aa=0;aa<ac.length;++aa){for(var Z=0,V=ac[aa].length;Z<V;++Z){T.push(ac[aa][Z])}}ac=null;var W=Date;if(!W.now){W={now:function(){return +(new Date)}}}var X=0;var S;var ab=/\\blang(?:uage)?-([\\w.]+)(?!\\S)/;var ae=/\\bprettyprint\\b/;function U(){var ag=(window.PR_SHOULD_USE_CONTINUATION?W.now()+250:Infinity);for(;X<T.length&&W.now()<ag;X++){var aj=T[X];var ai=aj.className;if(ai.indexOf(\"prettyprint\")>=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&\"CODE\"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName===\"pre\"||ak.tagName===\"code\"||ak.tagName===\"xmp\")&&ak.className&&ak.className.indexOf(\"prettyprint\")>=0){al=true;break}}if(!al){var af=aj.className.match(/\\blinenums\\b(?::(\\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X<T.length){setTimeout(U,250)}else{if(ad){ad()}}}U()}window.prettyPrintOne=y;window.prettyPrint=b;window.PR={createSimpleLexer:g,registerLangHandler:c,sourceDecorator:i,PR_ATTRIB_NAME:P,PR_ATTRIB_VALUE:n,PR_COMMENT:j,PR_DECLARATION:E,PR_KEYWORD:z,PR_LITERAL:G,PR_NOCODE:N,PR_PLAIN:F,PR_PUNCTUATION:L,PR_SOURCE:J,PR_STRING:C,PR_TAG:m,PR_TYPE:O}})();PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_DECLARATION,/^<!\\w[^>]*(?:>|$)/],[PR.PR_COMMENT,/^<\\!--[\\s\\S]*?(?:-\\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],[\"lang-\",/^<\\?([\\s\\S]+?)(?:\\?>|$)/],[\"lang-\",/^<%([\\s\\S]+?)(?:%>|$)/],[\"lang-\",/^<xmp\\b[^>]*>([\\s\\S]+?)<\\/xmp\\b[^>]*>/i],[\"lang-handlebars\",/^<script\\b[^>]*type\\s*=\\s*['\"]?text\\/x-handlebars-template['\"]?\\b[^>]*>([\\s\\S]*?)(<\\/script\\b[^>]*>)/i],[\"lang-js\",/^<script\\b[^>]*>([\\s\\S]*?)(<\\/script\\b[^>]*>)/i],[\"lang-css\",/^<style\\b[^>]*>([\\s\\S]*?)(<\\/style\\b[^>]*>)/i],[\"lang-in.tag\",/^(<\\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\\s*[\\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\\s*[\\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\\s*[\\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),[\"handlebars\",\"hbs\"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \\t\\r\\n\\f]+/,null,\" \\t\\r\\n\\f\"]],[[PR.PR_STRING,/^\\\"(?:[^\\n\\r\\f\\\\\\\"]|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\s\\S])*\\\"/,null],[PR.PR_STRING,/^\\'(?:[^\\n\\r\\f\\\\\\']|\\\\(?:\\r\\n?|\\n|\\f)|\\\\[\\s\\S])*\\'/,null],[\"lang-css-str\",/^url\\(([^\\)\\\"\\']*)\\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\\!important|@import|@page|@media|@charset|inherit)(?=[^\\-\\w]|$)/i,null],[\"lang-css-kw\",/^(-?(?:[_a-z]|(?:\\\\[0-9a-f]+ ?))(?:[_a-z0-9\\-]|\\\\(?:\\\\[0-9a-f]+ ?))*)\\s*:/i],[PR.PR_COMMENT,/^\\/\\*[^*]*\\*+(?:[^\\/*][^*]*\\*+)*\\//],[PR.PR_COMMENT,/^(?:<!--|-->)/],[PR.PR_LITERAL,/^(?:\\d+|\\d*\\.\\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\\\[\\da-f]+ ?))(?:[_a-z\\d\\-]|\\\\(?:\\\\[\\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\\s\\w\\'\\\"]+/]]),[\"css\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\\\[\\da-f]+ ?))(?:[_a-z\\d\\-]|\\\\(?:\\\\[\\da-f]+ ?))*/i]]),[\"css-kw\"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\\)\\\"\\']+/]]),[\"css-str\"]);\n"
  },
  {
    "path": "cssesc.js",
    "content": "/*! https://mths.be/cssesc v3.0.0 by @mathias */\n'use strict';\n\nvar object = {};\nvar hasOwnProperty = object.hasOwnProperty;\nvar merge = function merge(options, defaults) {\n\tif (!options) {\n\t\treturn defaults;\n\t}\n\tvar result = {};\n\tfor (var key in defaults) {\n\t\t// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since\n\t\t// only recognized option names are used.\n\t\tresult[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key];\n\t}\n\treturn result;\n};\n\nvar regexAnySingleEscape = /[ -,\\.\\/:-@\\[-\\^`\\{-~]/;\nvar regexSingleEscape = /[ -,\\.\\/:-@\\[\\]\\^`\\{-~]/;\nvar regexAlwaysEscape = /['\"\\\\]/;\nvar regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n\n// https://mathiasbynens.be/notes/css-escapes#css\nvar cssesc = function cssesc(string, options) {\n\toptions = merge(options, cssesc.options);\n\tif (options.quotes != 'single' && options.quotes != 'double') {\n\t\toptions.quotes = 'single';\n\t}\n\tvar quote = options.quotes == 'double' ? '\"' : '\\'';\n\tvar isIdentifier = options.isIdentifier;\n\n\tvar firstChar = string.charAt(0);\n\tvar output = '';\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar character = string.charAt(counter++);\n\t\tvar codePoint = character.charCodeAt();\n\t\tvar value = void 0;\n\t\t// If it’s not a printable ASCII character…\n\t\tif (codePoint < 0x20 || codePoint > 0x7E) {\n\t\t\tif (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {\n\t\t\t\t// It’s a high surrogate, and there is a next character.\n\t\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t// next character is low surrogate\n\t\t\t\t\tcodePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;\n\t\t\t\t} else {\n\t\t\t\t\t// It’s an unmatched surrogate; only append this code unit, in case\n\t\t\t\t\t// the next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t} else {\n\t\t\tif (options.escapeEverything) {\n\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t}\n\t\t\t} else if (/[\\t\\n\\f\\r\\x0B]/.test(character)) {\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else if (character == '\\\\' || !isIdentifier && (character == '\"' && quote == character || character == '\\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {\n\t\t\t\tvalue = '\\\\' + character;\n\t\t\t} else {\n\t\t\t\tvalue = character;\n\t\t\t}\n\t\t}\n\t\toutput += value;\n\t}\n\n\tif (isIdentifier) {\n\t\tif (/^-[-\\d]/.test(output)) {\n\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t}\n\t}\n\n\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t// since they’re redundant. Note that this is only possible if the escape\n\t// sequence isn’t preceded by an odd number of backslashes.\n\toutput = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {\n\t\tif ($1 && $1.length % 2) {\n\t\t\t// It’s not safe to remove the space, so don’t.\n\t\t\treturn $0;\n\t\t}\n\t\t// Strip the space.\n\t\treturn ($1 || '') + $2;\n\t});\n\n\tif (!isIdentifier && options.wrap) {\n\t\treturn quote + output + quote;\n\t}\n\treturn output;\n};\n\n// Expose default options (so they can be overridden globally).\ncssesc.options = {\n\t'escapeEverything': false,\n\t'isIdentifier': false,\n\t'quotes': 'single',\n\t'wrap': false\n};\n\ncssesc.version = '3.0.0';\n\nmodule.exports = cssesc;\n"
  },
  {
    "path": "man/cssesc.1",
    "content": ".Dd August 9, 2013\n.Dt cssesc 1\n.Sh NAME\n.Nm cssesc\n.Nd escape text for use in CSS string literals or identifiers\n.Sh SYNOPSIS\n.Nm\n.Op Fl i | -identifier Ar string\n.br\n.Op Fl s | -single-quotes Ar string\n.br\n.Op Fl d | -double-quotes Ar string\n.br\n.Op Fl w | -wrap Ar string\n.br\n.Op Fl e | -escape-everything Ar string\n.br\n.Op Fl v | -version\n.br\n.Op Fl h | -help\n.Sh DESCRIPTION\n.Nm\nescapes strings for use in CSS string literals or identifiers while generating the shortest possible valid ASCII-only output.\n.Sh OPTIONS\n.Bl -ohang -offset\n.It Sy \"-s, --single-quotes\"\nEscape any occurences of ' in the input string as \\\\', so that the output can be used in a CSS string literal wrapped in single quotes.\n.It Sy \"-d, --double-quotes\"\nEscape any occurences of \" in the input string as \\\\\", so that the output can be used in a CSS string literal wrapped in double quotes.\n.It Sy \"-w, --wrap\"\nMake sure the output is a valid CSS string literal wrapped in quotes. The type of quotes can be specified using the\n.Ar -s | --single-quotes\nor\n.Ar -d | --double-quotes\nsettings.\n.It Sy \"-e, --escape-everything\"\nEscape all the symbols in the output, even printable ASCII symbols.\n.It Sy \"-v, --version\"\nPrint cssesc's version.\n.It Sy \"-h, --help\"\nShow the help screen.\n.El\n.Sh EXIT STATUS\nThe\n.Nm cssesc\nutility exits with one of the following values:\n.Pp\n.Bl -tag -width flag -compact\n.It Li 0\n.Nm\nsuccessfully escaped the given text and printed the result.\n.It Li 1\n.Nm\nwasn't instructed to escape anything (for example, the\n.Ar --help\nflag was set); or, an error occurred.\n.El\n.Sh EXAMPLES\n.Bl -ohang -offset\n.It Sy \"cssesc 'foo bar baz'\"\nPrint an escaped version of the given text.\n.It Sy echo\\ 'foo bar baz'\\ |\\ cssesc\nPrint an escaped version of the text that gets piped in.\n.El\n.Sh BUGS\ncssesc's bug tracker is located at <https://github.com/mathiasbynens/cssesc/issues>.\n.Sh AUTHOR\nMathias Bynens <https://mathiasbynens.be/>\n.Sh WWW\n<https://mths.be/cssesc>\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"cssesc\",\n  \"version\": \"3.0.0\",\n  \"description\": \"A JavaScript library for escaping CSS strings and identifiers while generating the shortest possible ASCII-only output.\",\n  \"homepage\": \"https://mths.be/cssesc\",\n  \"engines\": {\n    \"node\": \">=4\"\n  },\n  \"main\": \"cssesc.js\",\n  \"bin\": \"bin/cssesc\",\n  \"man\": \"man/cssesc.1\",\n  \"keywords\": [\n    \"css\",\n    \"escape\",\n    \"identifier\",\n    \"string\",\n    \"tool\"\n  ],\n  \"license\": \"MIT\",\n  \"author\": {\n    \"name\": \"Mathias Bynens\",\n    \"url\": \"https://mathiasbynens.be/\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/mathiasbynens/cssesc.git\"\n  },\n  \"bugs\": \"https://github.com/mathiasbynens/cssesc/issues\",\n  \"files\": [\n    \"LICENSE-MIT.txt\",\n    \"cssesc.js\",\n    \"bin/\",\n    \"man/\"\n  ],\n  \"scripts\": {\n    \"build\": \"grunt template && babel cssesc.js -o cssesc.js\",\n    \"test\": \"mocha tests\",\n    \"cover\": \"istanbul cover --report html node_modules/.bin/_mocha tests -- -u exports -R spec\"\n  },\n  \"devDependencies\": {\n    \"babel-cli\": \"^6.26.0\",\n    \"babel-preset-env\": \"^1.6.1\",\n    \"codecov\": \"^1.0.1\",\n    \"grunt\": \"^1.0.1\",\n    \"grunt-template\": \"^1.0.0\",\n    \"istanbul\": \"^0.4.4\",\n    \"mocha\": \"^2.5.3\",\n    \"regenerate\": \"^1.2.1\",\n    \"requirejs\": \"^2.1.16\"\n  }\n}\n"
  },
  {
    "path": "src/cssesc.js",
    "content": "/*! https://mths.be/cssesc v<%= version %> by @mathias */\n'use strict';\n\nconst object = {};\nconst hasOwnProperty = object.hasOwnProperty;\nconst merge = (options, defaults) => {\n\tif (!options) {\n\t\treturn defaults;\n\t}\n\tconst result = {};\n\tfor (let key in defaults) {\n\t\t// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since\n\t\t// only recognized option names are used.\n\t\tresult[key] = hasOwnProperty.call(options, key)\n\t\t\t? options[key]\n\t\t\t: defaults[key];\n\t}\n\treturn result;\n};\n\nconst regexAnySingleEscape = /<%= anySingleEscape %>/;\nconst regexSingleEscape = /<%= singleEscapes %>/;\nconst regexAlwaysEscape = /['\"\\\\]/;\nconst regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n\n// https://mathiasbynens.be/notes/css-escapes#css\nconst cssesc = (string, options) => {\n\toptions = merge(options, cssesc.options);\n\tif (options.quotes != 'single' && options.quotes != 'double') {\n\t\toptions.quotes = 'single';\n\t}\n\tconst quote = options.quotes == 'double' ? '\"' : '\\'';\n\tconst isIdentifier = options.isIdentifier;\n\n\tconst firstChar = string.charAt(0);\n\tlet output = '';\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst character = string.charAt(counter++);\n\t\tlet codePoint = character.charCodeAt();\n\t\tlet value;\n\t\t// If it’s not a printable ASCII character…\n\t\tif (codePoint < 0x20 || codePoint > 0x7E) {\n\t\t\tif (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {\n\t\t\t\t// It’s a high surrogate, and there is a next character.\n\t\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // next character is low surrogate\n\t\t\t\t\tcodePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;\n\t\t\t\t} else {\n\t\t\t\t\t// It’s an unmatched surrogate; only append this code unit, in case\n\t\t\t\t\t// the next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t} else {\n\t\t\tif (options.escapeEverything) {\n\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t}\n\t\t\t} else if (/[\\t\\n\\f\\r\\x0B]/.test(character)) {\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else if (\n\t\t\t\tcharacter == '\\\\' ||\n\t\t\t\t(\n\t\t\t\t\t!isIdentifier &&\n\t\t\t\t\t(\n\t\t\t\t\t\t(character == '\"' && quote == character) ||\n\t\t\t\t\t\t(character == '\\'' && quote == character)\n\t\t\t\t\t)\n\t\t\t\t) ||\n\t\t\t\t(isIdentifier && regexSingleEscape.test(character))\n\t\t\t) {\n\t\t\t\tvalue = '\\\\' + character;\n\t\t\t} else {\n\t\t\t\tvalue = character;\n\t\t\t}\n\t\t}\n\t\toutput += value;\n\t}\n\n\tif (isIdentifier) {\n\t\tif (/^-[-\\d]/.test(output)) {\n\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t}\n\t}\n\n\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t// since they’re redundant. Note that this is only possible if the escape\n\t// sequence isn’t preceded by an odd number of backslashes.\n\toutput = output.replace(regexExcessiveSpaces, function($0, $1, $2) {\n\t\tif ($1 && $1.length % 2) {\n\t\t\t// It’s not safe to remove the space, so don’t.\n\t\t\treturn $0;\n\t\t}\n\t\t// Strip the space.\n\t\treturn ($1 || '') + $2;\n\t});\n\n\tif (!isIdentifier && options.wrap) {\n\t\treturn quote + output + quote;\n\t}\n\treturn output;\n};\n\n// Expose default options (so they can be overridden globally).\ncssesc.options = {\n\t'escapeEverything': false,\n\t'isIdentifier': false,\n\t'quotes': 'single',\n\t'wrap': false\n};\n\ncssesc.version = '<%= version %>';\n\nmodule.exports = cssesc;\n"
  },
  {
    "path": "src/data.js",
    "content": "var regenerate = require('regenerate');\nvar fs = require('fs');\n\n// Characters with special meaning in CSS, except for quotes and backslashes\n// (they get a separate regex)\nvar set = regenerate().add(\n\t' ', '!', '#', '$', '%', '&', '(', ')', '*', '+', ',', '.', '/', ';', '<', ':',\n\t'=', '>', '?', '@', '[', ']', '^', '`', '{', '|', '}', '~', '\"', '\\'', '\\\\'\n);\n\nmodule.exports = {\n\t'anySingleEscape': set.toString(),\n\t'singleEscapes': set.remove('\\\\').toString(),\n\t'version': JSON.parse(fs.readFileSync('package.json', 'utf8')).version\n};\n"
  },
  {
    "path": "tests/tests.js",
    "content": "'use strict';\n\nconst assert = require('assert');\nconst cssesc = require('../cssesc.js');\n\ndescribe('common usage', () => {\n\tit('works as expected', () => {\n\t\tassert.equal(\n\t\t\ttypeof cssesc.version,\n\t\t\t'string',\n\t\t\t'`cssesc.version` must be a string'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('-foo'),\n\t\t\t'-foo',\n\t\t\t'-foo'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('--foo', { 'isIdentifier': false }),\n\t\t\t'--foo',\n\t\t\t'--foo with `isIdentifier: false`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('--foo', { 'isIdentifier': true }),\n\t\t\t'\\\\--foo',\n\t\t\t'--foo with `isIdentifier: true`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('-0foo', { 'isIdentifier': false }),\n\t\t\t'-0foo',\n\t\t\t'-0foo with `isIdentifier: false`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('-0foo', { 'isIdentifier': true }),\n\t\t\t'\\\\-0foo',\n\t\t\t'-0foo with `isIdentifier: true`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('-9foo', { 'isIdentifier': false }),\n\t\t\t'-9foo',\n\t\t\t'-9foo with `isIdentifier: false`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('-9foo', { 'isIdentifier': true }),\n\t\t\t'\\\\-9foo',\n\t\t\t'-9foo with `isIdentifier: true`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('foo:bar', { 'isIdentifier': false }),\n\t\t\t'foo:bar',\n\t\t\t'foo:bar with `isIdentifier: false`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('foo:bar', { 'isIdentifier': true }),\n\t\t\t'foo\\\\:bar',\n\t\t\t'foo:bar with `isIdentifier: true`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('_foo_bar', { 'isIdentifier': false }),\n\t\t\t'_foo_bar',\n\t\t\t'_foo_bar with `isIdentifier: false`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('_foo_bar', { 'isIdentifier': true }),\n\t\t\t'_foo_bar',\n\t\t\t'_foo_bar with `isIdentifier: true`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('a\\t\\n\\v\\f\\rb'),\n\t\t\t'a\\\\9\\\\A\\\\B\\\\C\\\\D b',\n\t\t\t'whitespace characters'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('\\\\A _'),\n\t\t\t'\\\\\\\\A _',\n\t\t\t'backslash escapes that look like a hex escape: space is preserved'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('\\\\\\\\A _'),\n\t\t\t'\\\\\\\\\\\\\\\\A _',\n\t\t\t'backslash escapes that look like a hex escape: space is preserved'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('a\\\\b'),\n\t\t\t'a\\\\\\\\b',\n\t\t\t'backslash'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('-\\\\ABC -', { 'isIdentifier': false }),\n\t\t\t'-\\\\\\\\ABC -',\n\t\t\t'more backslashes with `isIdentifier: false`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('-\\\\ABC -', { 'isIdentifier': true }),\n\t\t\t'-\\\\\\\\ABC\\\\ -',\n\t\t\t'more backslashes with `isIdentifier: true`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('id\"ent\\'ifier', { 'isIdentifier': true }),\n\t\t\t'id\\\\\"ent\\\\\\'ifier',\n\t\t\t'quotes are escaped with `isIdentifier: true`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('a\"b\\'c\\xA9d', { 'wrap': true }),\n\t\t\t'\\'a\"b\\\\\\'c\\\\A9 d\\'',\n\t\t\t'quotes with `wrap: true`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('a\"b\\'c\\xA9d', { 'wrap': true, 'quotes': 'LOLWAT' }),\n\t\t\t'\\'a\"b\\\\\\'c\\\\A9 d\\'',\n\t\t\t'quotes with `wrap: true, quotes: \\'LOLWAT\\'` (incorrect value)'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('a\"b\\'c\\xA9d', { 'wrap': true, 'quotes': 'single' }),\n\t\t\t'\\'a\"b\\\\\\'c\\\\A9 d\\'',\n\t\t\t'quotes with `wrap: true, quotes: \\'single\\'`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('a\"b\\'c\\xA9d', { 'wrap': true, 'quotes': 'double' }),\n\t\t\t'\"a\\\\\"b\\'c\\\\A9 d\"',\n\t\t\t'quotes with `wrap: true, quotes: \\'double\\'`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('a\\xA9b'),\n\t\t\t'a\\\\A9 b',\n\t\t\t'non-ASCII symbol'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('Ich \\u2665 B\\xFCcher'),\n\t\t\t'Ich \\\\2665  B\\\\FC cher',\n\t\t\t'non-ASCII symbols'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('a123b'),\n\t\t\t'a123b',\n\t\t\t'numbers not at the start of the string'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('123a2b', { 'isIdentifier': false }),\n\t\t\t'123a2b',\n\t\t\t'numbers at the start of the string with `isIdentifier: false`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('123a2b', { 'isIdentifier': true }),\n\t\t\t'\\\\31 23a2b',\n\t\t\t'numbers at the start of the string with `isIdentifier: true`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('1_23a2b', { 'isIdentifier': false }),\n\t\t\t'1_23a2b',\n\t\t\t'numbers at the start of the string with `isIdentifier: false`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('1_23a2b', { 'isIdentifier': true }),\n\t\t\t'\\\\31_23a2b',\n\t\t\t'numbers at the start of the string with `isIdentifier: true`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('foo\\\\bar', { 'isIdentifier': false }),\n\t\t\t'foo\\\\\\\\bar',\n\t\t\t'backslashes are escaped with `isIdentifier: false`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('foo\\\\bar', { 'isIdentifier': true }),\n\t\t\t'foo\\\\\\\\bar',\n\t\t\t'backslashes are escaped with `isIdentifier: true`'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('a\\uD834\\uDF06b'),\n\t\t\t'a\\\\1D306 b',\n\t\t\t'astral symbol'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('a\\uD834b'),\n\t\t\t'a\\\\D834 b',\n\t\t\t'lone high surrogate'\n\t\t);\n\t\tassert.equal(\n\t\t\tcssesc('lolwat\"foo\\'bar\\xA9k', {\n\t\t\t\t'escapeEverything': true\n\t\t\t}),\n\t\t\t'\\\\6C\\\\6F\\\\6C\\\\77\\\\61\\\\74\\\\\"\\\\66\\\\6F\\\\6F\\\\\\'\\\\62\\\\61\\\\72\\\\A9\\\\6B',\n\t\t\t'`escapeEverything: true`'\n\t\t);\n\t});\n});\n"
  }
]