less-execjs 2.6.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (632) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.gitmodules +9 -0
  4. data/.rubocop.yml +8 -0
  5. data/.travis.yml +19 -0
  6. data/Gemfile +3 -0
  7. data/LICENSE +177 -0
  8. data/README.md +55 -0
  9. data/Rakefile +8 -0
  10. data/bin/lessc +22 -0
  11. data/less-execjs.gemspec +34 -0
  12. data/lib/less-execjs.rb +1 -0
  13. data/lib/less.rb +29 -0
  14. data/lib/less/compiler.js +24 -0
  15. data/lib/less/defaults.rb +15 -0
  16. data/lib/less/errors.rb +16 -0
  17. data/lib/less/js/image-size.js +4 -0
  18. data/lib/less/js/image-size/.gitignore +7 -0
  19. data/lib/less/js/image-size/.jshintrc +19 -0
  20. data/lib/less/js/image-size/.travis.yml +12 -0
  21. data/lib/less/js/image-size/Contributors.md +9 -0
  22. data/lib/less/js/image-size/LICENSE +9 -0
  23. data/lib/less/js/image-size/Readme.md +87 -0
  24. data/lib/less/js/image-size/bin/image-size.js +36 -0
  25. data/lib/less/js/image-size/lib/detector.js +19 -0
  26. data/lib/less/js/image-size/lib/index.js +104 -0
  27. data/lib/less/js/image-size/lib/readUInt.js +11 -0
  28. data/lib/less/js/image-size/lib/types.js +12 -0
  29. data/lib/less/js/image-size/lib/types/bmp.js +17 -0
  30. data/lib/less/js/image-size/lib/types/gif.js +19 -0
  31. data/lib/less/js/image-size/lib/types/jpg.js +62 -0
  32. data/lib/less/js/image-size/lib/types/png.js +23 -0
  33. data/lib/less/js/image-size/lib/types/psd.js +17 -0
  34. data/lib/less/js/image-size/lib/types/svg.js +78 -0
  35. data/lib/less/js/image-size/lib/types/tiff.js +118 -0
  36. data/lib/less/js/image-size/lib/types/webp.js +51 -0
  37. data/lib/less/js/image-size/package.json +49 -0
  38. data/lib/less/js/image-size/specs/.jshintrc +9 -0
  39. data/lib/less/js/image-size/specs/complexity.js +58 -0
  40. data/lib/less/js/image-size/specs/fs-close.spec.js +61 -0
  41. data/lib/less/js/image-size/specs/images/invalid/malformed.svg +1 -0
  42. data/lib/less/js/image-size/specs/images/invalid/sample.png +0 -0
  43. data/lib/less/js/image-size/specs/images/invalid/width.svg +1 -0
  44. data/lib/less/js/image-size/specs/images/valid/bmp/sample.bmp +0 -0
  45. data/lib/less/js/image-size/specs/images/valid/gif/sample.gif +0 -0
  46. data/lib/less/js/image-size/specs/images/valid/jpg/large.jpg +0 -0
  47. data/lib/less/js/image-size/specs/images/valid/jpg/progressive.jpg +0 -0
  48. data/lib/less/js/image-size/specs/images/valid/jpg/sample.jpg +0 -0
  49. data/lib/less/js/image-size/specs/images/valid/jpg/sampleExported.jpg +0 -0
  50. data/lib/less/js/image-size/specs/images/valid/jpg/very-large.jpg +0 -0
  51. data/lib/less/js/image-size/specs/images/valid/png/sample.png +0 -0
  52. data/lib/less/js/image-size/specs/images/valid/psd/sample.psd +0 -0
  53. data/lib/less/js/image-size/specs/images/valid/svg/percentage.svg +4 -0
  54. data/lib/less/js/image-size/specs/images/valid/svg/single-quotes.svg +5 -0
  55. data/lib/less/js/image-size/specs/images/valid/svg/viewbox-height.svg +4 -0
  56. data/lib/less/js/image-size/specs/images/valid/svg/viewbox-width-height.svg +4 -0
  57. data/lib/less/js/image-size/specs/images/valid/svg/viewbox-width.svg +4 -0
  58. data/lib/less/js/image-size/specs/images/valid/svg/viewbox.svg +4 -0
  59. data/lib/less/js/image-size/specs/images/valid/svg/width-height.svg +5 -0
  60. data/lib/less/js/image-size/specs/images/valid/tiff/big-endian.tiff +0 -0
  61. data/lib/less/js/image-size/specs/images/valid/tiff/jpeg.tiff +0 -0
  62. data/lib/less/js/image-size/specs/images/valid/tiff/little-endian.tiff +0 -0
  63. data/lib/less/js/image-size/specs/images/valid/webp/lossless.webp +0 -0
  64. data/lib/less/js/image-size/specs/images/valid/webp/lossy.webp +0 -0
  65. data/lib/less/js/image-size/specs/invalid.spec.js +53 -0
  66. data/lib/less/js/image-size/specs/others.spec.js +77 -0
  67. data/lib/less/js/image-size/specs/unsupported.spec.js +34 -0
  68. data/lib/less/js/image-size/specs/valid.spec.js +75 -0
  69. data/lib/less/js/less/.gitattributes +11 -0
  70. data/lib/less/js/less/.gitignore +27 -0
  71. data/lib/less/js/less/.jscsrc +73 -0
  72. data/lib/less/js/less/.jshintrc +11 -0
  73. data/lib/less/js/less/.npmignore +9 -0
  74. data/lib/less/js/less/.travis.yml +14 -0
  75. data/lib/less/js/less/CHANGELOG.md +561 -0
  76. data/lib/less/js/less/CONTRIBUTING.md +50 -0
  77. data/lib/less/js/less/Gruntfile.js +459 -0
  78. data/lib/less/js/less/LICENSE +177 -0
  79. data/lib/less/js/less/README.md +56 -0
  80. data/lib/less/js/less/appveyor.yml +32 -0
  81. data/lib/less/js/less/benchmark/benchmark.less +3979 -0
  82. data/lib/less/js/less/benchmark/index.js +55 -0
  83. data/lib/less/js/less/bin/lessc +488 -0
  84. data/lib/less/js/less/bower.json +24 -0
  85. data/lib/less/js/less/browser.js +1 -0
  86. data/lib/less/js/less/build.gradle +347 -0
  87. data/lib/less/js/less/build/amd.js +6 -0
  88. data/lib/less/js/less/build/build.yml +130 -0
  89. data/lib/less/js/less/build/require-rhino.js +12 -0
  90. data/lib/less/js/less/build/rhino-header.js +4 -0
  91. data/lib/less/js/less/build/rhino-modules.js +131 -0
  92. data/lib/less/js/less/build/tasks/.gitkeep +1 -0
  93. data/lib/less/js/less/dist/less.js +10500 -0
  94. data/lib/less/js/less/dist/less.min.js +20 -0
  95. data/lib/less/js/less/gradle/wrapper/gradle-wrapper.jar +0 -0
  96. data/lib/less/js/less/gradle/wrapper/gradle-wrapper.properties +6 -0
  97. data/lib/less/js/less/gradlew +164 -0
  98. data/lib/less/js/less/gradlew.bat +90 -0
  99. data/lib/less/js/less/index.js +1 -0
  100. data/lib/less/js/less/lib/less-browser/add-default-options.js +46 -0
  101. data/lib/less/js/less/lib/less-browser/bootstrap.js +51 -0
  102. data/lib/less/js/less/lib/less-browser/browser.js +64 -0
  103. data/lib/less/js/less/lib/less-browser/cache.js +42 -0
  104. data/lib/less/js/less/lib/less-browser/error-reporting.js +170 -0
  105. data/lib/less/js/less/lib/less-browser/file-manager.js +119 -0
  106. data/lib/less/js/less/lib/less-browser/image-size.js +28 -0
  107. data/lib/less/js/less/lib/less-browser/index.js +263 -0
  108. data/lib/less/js/less/lib/less-browser/log-listener.js +43 -0
  109. data/lib/less/js/less/lib/less-browser/utils.js +24 -0
  110. data/lib/less/js/less/lib/less-node/environment.js +14 -0
  111. data/lib/less/js/less/lib/less-node/file-manager.js +108 -0
  112. data/lib/less/js/less/lib/less-node/fs.js +10 -0
  113. data/lib/less/js/less/lib/less-node/image-size.js +57 -0
  114. data/lib/less/js/less/lib/less-node/index.js +74 -0
  115. data/lib/less/js/less/lib/less-node/lessc-helper.js +82 -0
  116. data/lib/less/js/less/lib/less-node/plugin-loader.js +91 -0
  117. data/lib/less/js/less/lib/less-node/url-file-manager.js +56 -0
  118. data/lib/less/js/less/lib/less-rhino/index.js +450 -0
  119. data/lib/less/js/less/lib/less/contexts.js +111 -0
  120. data/lib/less/js/less/lib/less/data/colors.js +150 -0
  121. data/lib/less/js/less/lib/less/data/index.js +4 -0
  122. data/lib/less/js/less/lib/less/data/unit-conversions.js +21 -0
  123. data/lib/less/js/less/lib/less/environment/abstract-file-manager.js +123 -0
  124. data/lib/less/js/less/lib/less/environment/environment-api.js +25 -0
  125. data/lib/less/js/less/lib/less/environment/environment.js +51 -0
  126. data/lib/less/js/less/lib/less/environment/file-manager-api.js +103 -0
  127. data/lib/less/js/less/lib/less/functions/color-blending.js +74 -0
  128. data/lib/less/js/less/lib/less/functions/color.js +322 -0
  129. data/lib/less/js/less/lib/less/functions/data-uri.js +85 -0
  130. data/lib/less/js/less/lib/less/functions/default.js +27 -0
  131. data/lib/less/js/less/lib/less/functions/function-caller.js +46 -0
  132. data/lib/less/js/less/lib/less/functions/function-registry.js +29 -0
  133. data/lib/less/js/less/lib/less/functions/index.js +19 -0
  134. data/lib/less/js/less/lib/less/functions/math-helper.js +16 -0
  135. data/lib/less/js/less/lib/less/functions/math.js +29 -0
  136. data/lib/less/js/less/lib/less/functions/number.js +81 -0
  137. data/lib/less/js/less/lib/less/functions/string.js +37 -0
  138. data/lib/less/js/less/lib/less/functions/svg.js +88 -0
  139. data/lib/less/js/less/lib/less/functions/types.js +89 -0
  140. data/lib/less/js/less/lib/less/import-manager.js +131 -0
  141. data/lib/less/js/less/lib/less/index.js +29 -0
  142. data/lib/less/js/less/lib/less/less-error.js +42 -0
  143. data/lib/less/js/less/lib/less/logger.js +34 -0
  144. data/lib/less/js/less/lib/less/parse-tree.js +60 -0
  145. data/lib/less/js/less/lib/less/parse.js +68 -0
  146. data/lib/less/js/less/lib/less/parser/chunker.js +112 -0
  147. data/lib/less/js/less/lib/less/parser/parser-input.js +259 -0
  148. data/lib/less/js/less/lib/less/parser/parser.js +1851 -0
  149. data/lib/less/js/less/lib/less/plugin-manager.js +114 -0
  150. data/lib/less/js/less/lib/less/plugins/function-importer.js +35 -0
  151. data/lib/less/js/less/lib/less/render.js +41 -0
  152. data/lib/less/js/less/lib/less/source-map-builder.js +69 -0
  153. data/lib/less/js/less/lib/less/source-map-output.js +138 -0
  154. data/lib/less/js/less/lib/less/transform-tree.js +74 -0
  155. data/lib/less/js/less/lib/less/tree/alpha.js +28 -0
  156. data/lib/less/js/less/lib/less/tree/anonymous.js +26 -0
  157. data/lib/less/js/less/lib/less/tree/assignment.js +27 -0
  158. data/lib/less/js/less/lib/less/tree/attribute.js +27 -0
  159. data/lib/less/js/less/lib/less/tree/call.js +62 -0
  160. data/lib/less/js/less/lib/less/tree/color.js +189 -0
  161. data/lib/less/js/less/lib/less/tree/combinator.js +23 -0
  162. data/lib/less/js/less/lib/less/tree/comment.js +21 -0
  163. data/lib/less/js/less/lib/less/tree/condition.js +37 -0
  164. data/lib/less/js/less/lib/less/tree/debug-info.js +38 -0
  165. data/lib/less/js/less/lib/less/tree/detached-ruleset.js +21 -0
  166. data/lib/less/js/less/lib/less/tree/dimension.js +157 -0
  167. data/lib/less/js/less/lib/less/tree/directive.js +133 -0
  168. data/lib/less/js/less/lib/less/tree/element.js +60 -0
  169. data/lib/less/js/less/lib/less/tree/expression.js +56 -0
  170. data/lib/less/js/less/lib/less/tree/extend.js +56 -0
  171. data/lib/less/js/less/lib/less/tree/import.js +165 -0
  172. data/lib/less/js/less/lib/less/tree/index.js +41 -0
  173. data/lib/less/js/less/lib/less/tree/javascript.js +28 -0
  174. data/lib/less/js/less/lib/less/tree/js-eval-node.js +61 -0
  175. data/lib/less/js/less/lib/less/tree/keyword.js +14 -0
  176. data/lib/less/js/less/lib/less/tree/media.js +144 -0
  177. data/lib/less/js/less/lib/less/tree/mixin-call.js +182 -0
  178. data/lib/less/js/less/lib/less/tree/mixin-definition.js +200 -0
  179. data/lib/less/js/less/lib/less/tree/negative.js +20 -0
  180. data/lib/less/js/less/lib/less/tree/node.js +123 -0
  181. data/lib/less/js/less/lib/less/tree/operation.js +48 -0
  182. data/lib/less/js/less/lib/less/tree/paren.js +16 -0
  183. data/lib/less/js/less/lib/less/tree/quoted.js +55 -0
  184. data/lib/less/js/less/lib/less/tree/rule.js +95 -0
  185. data/lib/less/js/less/lib/less/tree/ruleset-call.js +13 -0
  186. data/lib/less/js/less/lib/less/tree/ruleset.js +709 -0
  187. data/lib/less/js/less/lib/less/tree/selector.js +111 -0
  188. data/lib/less/js/less/lib/less/tree/unicode-descriptor.js +9 -0
  189. data/lib/less/js/less/lib/less/tree/unit.js +120 -0
  190. data/lib/less/js/less/lib/less/tree/url.js +54 -0
  191. data/lib/less/js/less/lib/less/tree/value.js +34 -0
  192. data/lib/less/js/less/lib/less/tree/variable.js +53 -0
  193. data/lib/less/js/less/lib/less/utils.js +20 -0
  194. data/lib/less/js/less/lib/less/visitors/extend-visitor.js +460 -0
  195. data/lib/less/js/less/lib/less/visitors/import-sequencer.js +54 -0
  196. data/lib/less/js/less/lib/less/visitors/import-visitor.js +189 -0
  197. data/lib/less/js/less/lib/less/visitors/index.js +10 -0
  198. data/lib/less/js/less/lib/less/visitors/join-selector-visitor.js +51 -0
  199. data/lib/less/js/less/lib/less/visitors/set-tree-visibility-visitor.js +38 -0
  200. data/lib/less/js/less/lib/less/visitors/to-css-visitor.js +383 -0
  201. data/lib/less/js/less/lib/less/visitors/visitor.js +152 -0
  202. data/lib/less/js/less/lib/source-map/source-map-0.1.31.js +1933 -0
  203. data/lib/less/js/less/lib/source-map/source-map-footer.js +4 -0
  204. data/lib/less/js/less/lib/source-map/source-map-header.js +3 -0
  205. data/lib/less/js/less/package.json +89 -0
  206. data/lib/less/js/less/test/browser/common.js +206 -0
  207. data/lib/less/js/less/test/browser/css/global-vars/simple.css +3 -0
  208. data/lib/less/js/less/test/browser/css/modify-vars/simple.css +8 -0
  209. data/lib/less/js/less/test/browser/css/postProcessor/postProcessor.css +4 -0
  210. data/lib/less/js/less/test/browser/css/relative-urls/urls.css +36 -0
  211. data/lib/less/js/less/test/browser/css/rootpath-relative/urls.css +35 -0
  212. data/lib/less/js/less/test/browser/css/rootpath/urls.css +35 -0
  213. data/lib/less/js/less/test/browser/css/urls.css +57 -0
  214. data/lib/less/js/less/test/browser/jasmine-jsreporter.js +391 -0
  215. data/lib/less/js/less/test/browser/less/console-errors/test-error.less +3 -0
  216. data/lib/less/js/less/test/browser/less/console-errors/test-error.txt +2 -0
  217. data/lib/less/js/less/test/browser/less/errors/image-height-error.less +3 -0
  218. data/lib/less/js/less/test/browser/less/errors/image-height-error.txt +4 -0
  219. data/lib/less/js/less/test/browser/less/errors/image-size-error.less +3 -0
  220. data/lib/less/js/less/test/browser/less/errors/image-size-error.txt +4 -0
  221. data/lib/less/js/less/test/browser/less/errors/image-width-error.less +3 -0
  222. data/lib/less/js/less/test/browser/less/errors/image-width-error.txt +4 -0
  223. data/lib/less/js/less/test/browser/less/global-vars/simple.less +3 -0
  224. data/lib/less/js/less/test/browser/less/imports/urls.less +4 -0
  225. data/lib/less/js/less/test/browser/less/imports/urls2.less +4 -0
  226. data/lib/less/js/less/test/browser/less/modify-vars/imports/simple2.less +4 -0
  227. data/lib/less/js/less/test/browser/less/modify-vars/simple.less +8 -0
  228. data/lib/less/js/less/test/browser/less/nested-gradient-with-svg-gradient/mixin-consumer.less +5 -0
  229. data/lib/less/js/less/test/browser/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +15 -0
  230. data/lib/less/js/less/test/browser/less/postProcessor/postProcessor.less +4 -0
  231. data/lib/less/js/less/test/browser/less/relative-urls/urls.less +34 -0
  232. data/lib/less/js/less/test/browser/less/rootpath-relative/urls.less +33 -0
  233. data/lib/less/js/less/test/browser/less/rootpath/urls.less +33 -0
  234. data/lib/less/js/less/test/browser/less/urls.less +65 -0
  235. data/lib/less/js/less/test/browser/runner-VisitorPlugin-options.js +3 -0
  236. data/lib/less/js/less/test/browser/runner-VisitorPlugin.js +3 -0
  237. data/lib/less/js/less/test/browser/runner-browser-options.js +51 -0
  238. data/lib/less/js/less/test/browser/runner-browser-spec.js +12 -0
  239. data/lib/less/js/less/test/browser/runner-console-errors.js +5 -0
  240. data/lib/less/js/less/test/browser/runner-errors-options.js +4 -0
  241. data/lib/less/js/less/test/browser/runner-errors-spec.js +3 -0
  242. data/lib/less/js/less/test/browser/runner-filemanagerPlugin-options.js +4 -0
  243. data/lib/less/js/less/test/browser/runner-filemanagerPlugin.js +3 -0
  244. data/lib/less/js/less/test/browser/runner-global-vars-options.js +7 -0
  245. data/lib/less/js/less/test/browser/runner-global-vars-spec.js +3 -0
  246. data/lib/less/js/less/test/browser/runner-legacy-options.js +5 -0
  247. data/lib/less/js/less/test/browser/runner-legacy-spec.js +3 -0
  248. data/lib/less/js/less/test/browser/runner-main-options.js +18 -0
  249. data/lib/less/js/less/test/browser/runner-main-spec.js +7 -0
  250. data/lib/less/js/less/test/browser/runner-modify-vars-options.js +5 -0
  251. data/lib/less/js/less/test/browser/runner-modify-vars-spec.js +33 -0
  252. data/lib/less/js/less/test/browser/runner-no-js-errors-options.js +4 -0
  253. data/lib/less/js/less/test/browser/runner-no-js-errors-spec.js +3 -0
  254. data/lib/less/js/less/test/browser/runner-postProcessor-options.js +5 -0
  255. data/lib/less/js/less/test/browser/runner-postProcessor.js +3 -0
  256. data/lib/less/js/less/test/browser/runner-postProcessorPlugin-options.js +3 -0
  257. data/lib/less/js/less/test/browser/runner-postProcessorPlugin.js +3 -0
  258. data/lib/less/js/less/test/browser/runner-preProcessorPlugin-options.js +3 -0
  259. data/lib/less/js/less/test/browser/runner-preProcessorPlugin.js +3 -0
  260. data/lib/less/js/less/test/browser/runner-production-options.js +3 -0
  261. data/lib/less/js/less/test/browser/runner-production-spec.js +5 -0
  262. data/lib/less/js/less/test/browser/runner-relative-urls-options.js +3 -0
  263. data/lib/less/js/less/test/browser/runner-relative-urls-spec.js +3 -0
  264. data/lib/less/js/less/test/browser/runner-rootpath-options.js +3 -0
  265. data/lib/less/js/less/test/browser/runner-rootpath-relative-options.js +4 -0
  266. data/lib/less/js/less/test/browser/runner-rootpath-relative-spec.js +3 -0
  267. data/lib/less/js/less/test/browser/runner-rootpath-spec.js +3 -0
  268. data/lib/less/js/less/test/browser/runner-strict-units-options.js +5 -0
  269. data/lib/less/js/less/test/browser/runner-strict-units-spec.js +3 -0
  270. data/lib/less/js/less/test/browser/test-runner-template.tmpl +95 -0
  271. data/lib/less/js/less/test/copy-bom.js +72 -0
  272. data/lib/less/js/less/test/css/charsets.css +1 -0
  273. data/lib/less/js/less/test/css/colors.css +87 -0
  274. data/lib/less/js/less/test/css/comments.css +83 -0
  275. data/lib/less/js/less/test/css/comments2.css +18 -0
  276. data/lib/less/js/less/test/css/compression/compression.css +3 -0
  277. data/lib/less/js/less/test/css/css-3.css +157 -0
  278. data/lib/less/js/less/test/css/css-escapes.css +24 -0
  279. data/lib/less/js/less/test/css/css-guards.css +37 -0
  280. data/lib/less/js/less/test/css/css.css +95 -0
  281. data/lib/less/js/less/test/css/debug/linenumbers-all.css +50 -0
  282. data/lib/less/js/less/test/css/debug/linenumbers-comments.css +41 -0
  283. data/lib/less/js/less/test/css/debug/linenumbers-mediaquery.css +41 -0
  284. data/lib/less/js/less/test/css/detached-rulesets.css +76 -0
  285. data/lib/less/js/less/test/css/directives-bubling.css +119 -0
  286. data/lib/less/js/less/test/css/empty.css +0 -0
  287. data/lib/less/js/less/test/css/extend-chaining.css +81 -0
  288. data/lib/less/js/less/test/css/extend-clearfix.css +19 -0
  289. data/lib/less/js/less/test/css/extend-exact.css +37 -0
  290. data/lib/less/js/less/test/css/extend-media.css +24 -0
  291. data/lib/less/js/less/test/css/extend-nest.css +57 -0
  292. data/lib/less/js/less/test/css/extend-selector.css +87 -0
  293. data/lib/less/js/less/test/css/extend.css +76 -0
  294. data/lib/less/js/less/test/css/extract-and-length.css +133 -0
  295. data/lib/less/js/less/test/css/filemanagerPlugin/filemanager.css +3 -0
  296. data/lib/less/js/less/test/css/functions.css +201 -0
  297. data/lib/less/js/less/test/css/globalVars/extended.css +12 -0
  298. data/lib/less/js/less/test/css/globalVars/simple.css +6 -0
  299. data/lib/less/js/less/test/css/ie-filters.css +9 -0
  300. data/lib/less/js/less/test/css/import-inline.css +8 -0
  301. data/lib/less/js/less/test/css/import-interpolation.css +13 -0
  302. data/lib/less/js/less/test/css/import-once.css +15 -0
  303. data/lib/less/js/less/test/css/import-reference-issues.css +24 -0
  304. data/lib/less/js/less/test/css/import-reference.css +97 -0
  305. data/lib/less/js/less/test/css/import.css +49 -0
  306. data/lib/less/js/less/test/css/include-path-string/include-path-string.css +3 -0
  307. data/lib/less/js/less/test/css/include-path/include-path.css +9 -0
  308. data/lib/less/js/less/test/css/javascript.css +28 -0
  309. data/lib/less/js/less/test/css/lazy-eval.css +3 -0
  310. data/lib/less/js/less/test/css/legacy/legacy.css +21 -0
  311. data/lib/less/js/less/test/css/media.css +218 -0
  312. data/lib/less/js/less/test/css/merge.css +34 -0
  313. data/lib/less/js/less/test/css/mixins-args.css +163 -0
  314. data/lib/less/js/less/test/css/mixins-closure.css +9 -0
  315. data/lib/less/js/less/test/css/mixins-guards-default-func.css +129 -0
  316. data/lib/less/js/less/test/css/mixins-guards.css +211 -0
  317. data/lib/less/js/less/test/css/mixins-important.css +57 -0
  318. data/lib/less/js/less/test/css/mixins-interpolated.css +43 -0
  319. data/lib/less/js/less/test/css/mixins-named-args.css +27 -0
  320. data/lib/less/js/less/test/css/mixins-nested.css +14 -0
  321. data/lib/less/js/less/test/css/mixins-pattern.css +51 -0
  322. data/lib/less/js/less/test/css/mixins.css +144 -0
  323. data/lib/less/js/less/test/css/modifyVars/extended.css +9 -0
  324. data/lib/less/js/less/test/css/no-output.css +0 -0
  325. data/lib/less/js/less/test/css/no-strict-math/mixins-guards.css +12 -0
  326. data/lib/less/js/less/test/css/no-strict-math/no-sm-operations.css +12 -0
  327. data/lib/less/js/less/test/css/operations.css +50 -0
  328. data/lib/less/js/less/test/css/parens.css +36 -0
  329. data/lib/less/js/less/test/css/plugin.css +44 -0
  330. data/lib/less/js/less/test/css/postProcessorPlugin/postProcessor.css +4 -0
  331. data/lib/less/js/less/test/css/preProcessorPlugin/preProcessor.css +3 -0
  332. data/lib/less/js/less/test/css/property-name-interp.css +21 -0
  333. data/lib/less/js/less/test/css/rulesets.css +33 -0
  334. data/lib/less/js/less/test/css/scope.css +38 -0
  335. data/lib/less/js/less/test/css/selectors.css +170 -0
  336. data/lib/less/js/less/test/css/static-urls/urls.css +46 -0
  337. data/lib/less/js/less/test/css/strict-units/strict-units.css +4 -0
  338. data/lib/less/js/less/test/css/strings.css +55 -0
  339. data/lib/less/js/less/test/css/url-args/urls.css +56 -0
  340. data/lib/less/js/less/test/css/urls.css +87 -0
  341. data/lib/less/js/less/test/css/variables-in-at-rules.css +18 -0
  342. data/lib/less/js/less/test/css/variables.css +68 -0
  343. data/lib/less/js/less/test/css/visitorPlugin/visitor.css +3 -0
  344. data/lib/less/js/less/test/css/whitespace.css +42 -0
  345. data/lib/less/js/less/test/data/data-uri-fail.png +0 -0
  346. data/lib/less/js/less/test/data/image.jpg +0 -0
  347. data/lib/less/js/less/test/data/image.svg +4 -0
  348. data/lib/less/js/less/test/data/page.html +1 -0
  349. data/lib/less/js/less/test/index.js +59 -0
  350. data/lib/less/js/less/test/less-test.js +386 -0
  351. data/lib/less/js/less/test/less/charsets.less +3 -0
  352. data/lib/less/js/less/test/less/colors.less +98 -0
  353. data/lib/less/js/less/test/less/comments.less +102 -0
  354. data/lib/less/js/less/test/less/comments2.less +31 -0
  355. data/lib/less/js/less/test/less/compression/compression.less +36 -0
  356. data/lib/less/js/less/test/less/css-3.less +162 -0
  357. data/lib/less/js/less/test/less/css-escapes.less +33 -0
  358. data/lib/less/js/less/test/less/css-guards.less +103 -0
  359. data/lib/less/js/less/test/less/css.less +108 -0
  360. data/lib/less/js/less/test/less/debug/import/test.less +25 -0
  361. data/lib/less/js/less/test/less/debug/linenumbers.less +33 -0
  362. data/lib/less/js/less/test/less/detached-rulesets.less +112 -0
  363. data/lib/less/js/less/test/less/directives-bubling.less +142 -0
  364. data/lib/less/js/less/test/less/empty.less +0 -0
  365. data/lib/less/js/less/test/less/errors/add-mixed-units.less +3 -0
  366. data/lib/less/js/less/test/less/errors/add-mixed-units.txt +4 -0
  367. data/lib/less/js/less/test/less/errors/add-mixed-units2.less +3 -0
  368. data/lib/less/js/less/test/less/errors/add-mixed-units2.txt +4 -0
  369. data/lib/less/js/less/test/less/errors/at-rules-undefined-var.less +4 -0
  370. data/lib/less/js/less/test/less/errors/at-rules-undefined-var.txt +4 -0
  371. data/lib/less/js/less/test/less/errors/bad-variable-declaration1.less +1 -0
  372. data/lib/less/js/less/test/less/errors/bad-variable-declaration1.txt +2 -0
  373. data/lib/less/js/less/test/less/errors/color-func-invalid-color.less +3 -0
  374. data/lib/less/js/less/test/less/errors/color-func-invalid-color.txt +4 -0
  375. data/lib/less/js/less/test/less/errors/color-invalid-hex-code.less +3 -0
  376. data/lib/less/js/less/test/less/errors/color-invalid-hex-code.txt +4 -0
  377. data/lib/less/js/less/test/less/errors/color-invalid-hex-code2.less +3 -0
  378. data/lib/less/js/less/test/less/errors/color-invalid-hex-code2.txt +4 -0
  379. data/lib/less/js/less/test/less/errors/css-guard-default-func.less +4 -0
  380. data/lib/less/js/less/test/less/errors/css-guard-default-func.txt +4 -0
  381. data/lib/less/js/less/test/less/errors/detached-ruleset-1.less +6 -0
  382. data/lib/less/js/less/test/less/errors/detached-ruleset-1.txt +4 -0
  383. data/lib/less/js/less/test/less/errors/detached-ruleset-2.less +6 -0
  384. data/lib/less/js/less/test/less/errors/detached-ruleset-2.txt +4 -0
  385. data/lib/less/js/less/test/less/errors/detached-ruleset-3.less +4 -0
  386. data/lib/less/js/less/test/less/errors/detached-ruleset-3.txt +4 -0
  387. data/lib/less/js/less/test/less/errors/detached-ruleset-5.less +4 -0
  388. data/lib/less/js/less/test/less/errors/detached-ruleset-5.txt +3 -0
  389. data/lib/less/js/less/test/less/errors/detached-ruleset-6.less +5 -0
  390. data/lib/less/js/less/test/less/errors/detached-ruleset-6.txt +4 -0
  391. data/lib/less/js/less/test/less/errors/divide-mixed-units.less +3 -0
  392. data/lib/less/js/less/test/less/errors/divide-mixed-units.txt +4 -0
  393. data/lib/less/js/less/test/less/errors/extend-no-selector.less +3 -0
  394. data/lib/less/js/less/test/less/errors/extend-no-selector.txt +3 -0
  395. data/lib/less/js/less/test/less/errors/extend-not-at-end.less +3 -0
  396. data/lib/less/js/less/test/less/errors/extend-not-at-end.txt +3 -0
  397. data/lib/less/js/less/test/less/errors/import-malformed.less +1 -0
  398. data/lib/less/js/less/test/less/errors/import-malformed.txt +3 -0
  399. data/lib/less/js/less/test/less/errors/import-missing.less +6 -0
  400. data/lib/less/js/less/test/less/errors/import-missing.txt +3 -0
  401. data/lib/less/js/less/test/less/errors/import-no-semi.less +1 -0
  402. data/lib/less/js/less/test/less/errors/import-no-semi.txt +2 -0
  403. data/lib/less/js/less/test/less/errors/import-subfolder1.less +1 -0
  404. data/lib/less/js/less/test/less/errors/import-subfolder1.txt +3 -0
  405. data/lib/less/js/less/test/less/errors/import-subfolder2.less +1 -0
  406. data/lib/less/js/less/test/less/errors/import-subfolder2.txt +4 -0
  407. data/lib/less/js/less/test/less/errors/imports/import-subfolder1.less +1 -0
  408. data/lib/less/js/less/test/less/errors/imports/import-subfolder2.less +1 -0
  409. data/lib/less/js/less/test/less/errors/imports/import-test.less +4 -0
  410. data/lib/less/js/less/test/less/errors/imports/subfolder/mixin-not-defined.less +1 -0
  411. data/lib/less/js/less/test/less/errors/imports/subfolder/parse-error-curly-bracket.less +1 -0
  412. data/lib/less/js/less/test/less/errors/javascript-error.less +3 -0
  413. data/lib/less/js/less/test/less/errors/javascript-error.txt +4 -0
  414. data/lib/less/js/less/test/less/errors/javascript-undefined-var.less +3 -0
  415. data/lib/less/js/less/test/less/errors/javascript-undefined-var.txt +4 -0
  416. data/lib/less/js/less/test/less/errors/mixed-mixin-definition-args-1.less +6 -0
  417. data/lib/less/js/less/test/less/errors/mixed-mixin-definition-args-1.txt +4 -0
  418. data/lib/less/js/less/test/less/errors/mixed-mixin-definition-args-2.less +6 -0
  419. data/lib/less/js/less/test/less/errors/mixed-mixin-definition-args-2.txt +4 -0
  420. data/lib/less/js/less/test/less/errors/mixin-not-defined.less +11 -0
  421. data/lib/less/js/less/test/less/errors/mixin-not-defined.txt +3 -0
  422. data/lib/less/js/less/test/less/errors/mixin-not-matched.less +6 -0
  423. data/lib/less/js/less/test/less/errors/mixin-not-matched.txt +3 -0
  424. data/lib/less/js/less/test/less/errors/mixin-not-matched2.less +6 -0
  425. data/lib/less/js/less/test/less/errors/mixin-not-matched2.txt +3 -0
  426. data/lib/less/js/less/test/less/errors/mixin-not-visible-in-scope-1.less +9 -0
  427. data/lib/less/js/less/test/less/errors/mixin-not-visible-in-scope-1.txt +4 -0
  428. data/lib/less/js/less/test/less/errors/mixins-guards-default-func-1.less +9 -0
  429. data/lib/less/js/less/test/less/errors/mixins-guards-default-func-1.txt +4 -0
  430. data/lib/less/js/less/test/less/errors/mixins-guards-default-func-2.less +9 -0
  431. data/lib/less/js/less/test/less/errors/mixins-guards-default-func-2.txt +4 -0
  432. data/lib/less/js/less/test/less/errors/mixins-guards-default-func-3.less +9 -0
  433. data/lib/less/js/less/test/less/errors/mixins-guards-default-func-3.txt +4 -0
  434. data/lib/less/js/less/test/less/errors/multiple-guards-on-css-selectors.less +4 -0
  435. data/lib/less/js/less/test/less/errors/multiple-guards-on-css-selectors.txt +4 -0
  436. data/lib/less/js/less/test/less/errors/multiple-guards-on-css-selectors2.less +4 -0
  437. data/lib/less/js/less/test/less/errors/multiple-guards-on-css-selectors2.txt +4 -0
  438. data/lib/less/js/less/test/less/errors/multiply-mixed-units.less +7 -0
  439. data/lib/less/js/less/test/less/errors/multiply-mixed-units.txt +4 -0
  440. data/lib/less/js/less/test/less/errors/parens-error-1.less +3 -0
  441. data/lib/less/js/less/test/less/errors/parens-error-1.txt +4 -0
  442. data/lib/less/js/less/test/less/errors/parens-error-2.less +3 -0
  443. data/lib/less/js/less/test/less/errors/parens-error-2.txt +4 -0
  444. data/lib/less/js/less/test/less/errors/parens-error-3.less +3 -0
  445. data/lib/less/js/less/test/less/errors/parens-error-3.txt +4 -0
  446. data/lib/less/js/less/test/less/errors/parse-error-curly-bracket.less +4 -0
  447. data/lib/less/js/less/test/less/errors/parse-error-curly-bracket.txt +4 -0
  448. data/lib/less/js/less/test/less/errors/parse-error-media-no-block-1.less +5 -0
  449. data/lib/less/js/less/test/less/errors/parse-error-media-no-block-1.txt +3 -0
  450. data/lib/less/js/less/test/less/errors/parse-error-media-no-block-2.less +1 -0
  451. data/lib/less/js/less/test/less/errors/parse-error-media-no-block-2.txt +2 -0
  452. data/lib/less/js/less/test/less/errors/parse-error-media-no-block-3.less +4 -0
  453. data/lib/less/js/less/test/less/errors/parse-error-media-no-block-3.txt +3 -0
  454. data/lib/less/js/less/test/less/errors/parse-error-missing-bracket.less +2 -0
  455. data/lib/less/js/less/test/less/errors/parse-error-missing-bracket.txt +3 -0
  456. data/lib/less/js/less/test/less/errors/parse-error-missing-parens.less +5 -0
  457. data/lib/less/js/less/test/less/errors/parse-error-missing-parens.txt +3 -0
  458. data/lib/less/js/less/test/less/errors/parse-error-with-import.less +13 -0
  459. data/lib/less/js/less/test/less/errors/parse-error-with-import.txt +4 -0
  460. data/lib/less/js/less/test/less/errors/percentage-missing-space.less +3 -0
  461. data/lib/less/js/less/test/less/errors/percentage-missing-space.txt +4 -0
  462. data/lib/less/js/less/test/less/errors/percentage-non-number-argument.less +3 -0
  463. data/lib/less/js/less/test/less/errors/percentage-non-number-argument.txt +4 -0
  464. data/lib/less/js/less/test/less/errors/property-asterisk-only-name.less +3 -0
  465. data/lib/less/js/less/test/less/errors/property-asterisk-only-name.txt +4 -0
  466. data/lib/less/js/less/test/less/errors/property-ie5-hack.less +3 -0
  467. data/lib/less/js/less/test/less/errors/property-ie5-hack.txt +3 -0
  468. data/lib/less/js/less/test/less/errors/property-in-root.less +4 -0
  469. data/lib/less/js/less/test/less/errors/property-in-root.txt +4 -0
  470. data/lib/less/js/less/test/less/errors/property-in-root2.less +1 -0
  471. data/lib/less/js/less/test/less/errors/property-in-root2.txt +4 -0
  472. data/lib/less/js/less/test/less/errors/property-in-root3.less +4 -0
  473. data/lib/less/js/less/test/less/errors/property-in-root3.txt +3 -0
  474. data/lib/less/js/less/test/less/errors/property-interp-not-defined.less +1 -0
  475. data/lib/less/js/less/test/less/errors/property-interp-not-defined.txt +2 -0
  476. data/lib/less/js/less/test/less/errors/recursive-variable.less +1 -0
  477. data/lib/less/js/less/test/less/errors/recursive-variable.txt +2 -0
  478. data/lib/less/js/less/test/less/errors/single-character.less +1 -0
  479. data/lib/less/js/less/test/less/errors/single-character.txt +2 -0
  480. data/lib/less/js/less/test/less/errors/svg-gradient1.less +3 -0
  481. data/lib/less/js/less/test/less/errors/svg-gradient1.txt +4 -0
  482. data/lib/less/js/less/test/less/errors/svg-gradient2.less +3 -0
  483. data/lib/less/js/less/test/less/errors/svg-gradient2.txt +4 -0
  484. data/lib/less/js/less/test/less/errors/svg-gradient3.less +3 -0
  485. data/lib/less/js/less/test/less/errors/svg-gradient3.txt +4 -0
  486. data/lib/less/js/less/test/less/errors/svg-gradient4.less +4 -0
  487. data/lib/less/js/less/test/less/errors/svg-gradient4.txt +4 -0
  488. data/lib/less/js/less/test/less/errors/svg-gradient5.less +4 -0
  489. data/lib/less/js/less/test/less/errors/svg-gradient5.txt +4 -0
  490. data/lib/less/js/less/test/less/errors/svg-gradient6.less +4 -0
  491. data/lib/less/js/less/test/less/errors/svg-gradient6.txt +4 -0
  492. data/lib/less/js/less/test/less/errors/unit-function.less +3 -0
  493. data/lib/less/js/less/test/less/errors/unit-function.txt +4 -0
  494. data/lib/less/js/less/test/less/extend-chaining.less +91 -0
  495. data/lib/less/js/less/test/less/extend-clearfix.less +19 -0
  496. data/lib/less/js/less/test/less/extend-exact.less +46 -0
  497. data/lib/less/js/less/test/less/extend-media.less +24 -0
  498. data/lib/less/js/less/test/less/extend-nest.less +65 -0
  499. data/lib/less/js/less/test/less/extend-selector.less +110 -0
  500. data/lib/less/js/less/test/less/extend.less +81 -0
  501. data/lib/less/js/less/test/less/extract-and-length.less +133 -0
  502. data/lib/less/js/less/test/less/filemanagerPlugin/colors.test +1 -0
  503. data/lib/less/js/less/test/less/filemanagerPlugin/filemanager.less +4 -0
  504. data/lib/less/js/less/test/less/functions.less +232 -0
  505. data/lib/less/js/less/test/less/globalVars/extended.json +5 -0
  506. data/lib/less/js/less/test/less/globalVars/extended.less +10 -0
  507. data/lib/less/js/less/test/less/globalVars/simple.json +3 -0
  508. data/lib/less/js/less/test/less/globalVars/simple.less +3 -0
  509. data/lib/less/js/less/test/less/ie-filters.less +15 -0
  510. data/lib/less/js/less/test/less/import-inline.less +3 -0
  511. data/lib/less/js/less/test/less/import-interpolation.less +8 -0
  512. data/lib/less/js/less/test/less/import-once.less +6 -0
  513. data/lib/less/js/less/test/less/import-reference-issues.less +50 -0
  514. data/lib/less/js/less/test/less/import-reference-issues/appender-reference-1968.less +6 -0
  515. data/lib/less/js/less/test/less/import-reference-issues/global-scope-import.less +13 -0
  516. data/lib/less/js/less/test/less/import-reference-issues/global-scope-nested.less +3 -0
  517. data/lib/less/js/less/test/less/import-reference-issues/mixin-1968.less +8 -0
  518. data/lib/less/js/less/test/less/import-reference-issues/multiple-import-nested.less +12 -0
  519. data/lib/less/js/less/test/less/import-reference-issues/multiple-import.less +10 -0
  520. data/lib/less/js/less/test/less/import-reference-issues/simple-mixin.css +3 -0
  521. data/lib/less/js/less/test/less/import-reference-issues/simple-ruleset-2162.less +3 -0
  522. data/lib/less/js/less/test/less/import-reference.less +26 -0
  523. data/lib/less/js/less/test/less/import.less +31 -0
  524. data/lib/less/js/less/test/less/import/css-import.less +1 -0
  525. data/lib/less/js/less/test/less/import/deeper/deeper-2/url-import-2.less +3 -0
  526. data/lib/less/js/less/test/less/import/deeper/deeper-2/url-import.less +1 -0
  527. data/lib/less/js/less/test/less/import/deeper/import-once-test-a.less +1 -0
  528. data/lib/less/js/less/test/less/import/deeper/url-import.less +1 -0
  529. data/lib/less/js/less/test/less/import/import-and-relative-paths-test.less +17 -0
  530. data/lib/less/js/less/test/less/import/import-charset-test.less +1 -0
  531. data/lib/less/js/less/test/less/import/import-inline-invalid-css.less +1 -0
  532. data/lib/less/js/less/test/less/import/import-interpolation.less +2 -0
  533. data/lib/less/js/less/test/less/import/import-interpolation2.less +5 -0
  534. data/lib/less/js/less/test/less/import/import-once-test-c.less +6 -0
  535. data/lib/less/js/less/test/less/import/import-reference.less +98 -0
  536. data/lib/less/js/less/test/less/import/import-test-a.less +5 -0
  537. data/lib/less/js/less/test/less/import/import-test-b.less +8 -0
  538. data/lib/less/js/less/test/less/import/import-test-c.less +6 -0
  539. data/lib/less/js/less/test/less/import/import-test-d.css +1 -0
  540. data/lib/less/js/less/test/less/import/import-test-e.less +2 -0
  541. data/lib/less/js/less/test/less/import/import-test-f.less +5 -0
  542. data/lib/less/js/less/test/less/import/imports/font.less +8 -0
  543. data/lib/less/js/less/test/less/import/imports/logo.less +6 -0
  544. data/lib/less/js/less/test/less/import/interpolation-vars.less +6 -0
  545. data/lib/less/js/less/test/less/import/invalid-css.less +1 -0
  546. data/lib/less/js/less/test/less/import/urls.less +1 -0
  547. data/lib/less/js/less/test/less/include-path-string/include-path-string.less +3 -0
  548. data/lib/less/js/less/test/less/include-path/include-path.less +8 -0
  549. data/lib/less/js/less/test/less/javascript.less +38 -0
  550. data/lib/less/js/less/test/less/lazy-eval.less +6 -0
  551. data/lib/less/js/less/test/less/legacy/legacy.less +21 -0
  552. data/lib/less/js/less/test/less/media.less +234 -0
  553. data/lib/less/js/less/test/less/merge.less +78 -0
  554. data/lib/less/js/less/test/less/mixins-args.less +263 -0
  555. data/lib/less/js/less/test/less/mixins-closure.less +26 -0
  556. data/lib/less/js/less/test/less/mixins-guards-default-func.less +195 -0
  557. data/lib/less/js/less/test/less/mixins-guards.less +358 -0
  558. data/lib/less/js/less/test/less/mixins-important.less +53 -0
  559. data/lib/less/js/less/test/less/mixins-interpolated.less +75 -0
  560. data/lib/less/js/less/test/less/mixins-named-args.less +36 -0
  561. data/lib/less/js/less/test/less/mixins-nested.less +22 -0
  562. data/lib/less/js/less/test/less/mixins-pattern.less +102 -0
  563. data/lib/less/js/less/test/less/mixins.less +145 -0
  564. data/lib/less/js/less/test/less/modifyVars/extended.json +5 -0
  565. data/lib/less/js/less/test/less/modifyVars/extended.less +11 -0
  566. data/lib/less/js/less/test/less/nested-gradient-with-svg-gradient/mixin-consumer.less +5 -0
  567. data/lib/less/js/less/test/less/nested-gradient-with-svg-gradient/svg-gradient-mixin.less +15 -0
  568. data/lib/less/js/less/test/less/no-js-errors/no-js-errors.less +3 -0
  569. data/lib/less/js/less/test/less/no-js-errors/no-js-errors.txt +4 -0
  570. data/lib/less/js/less/test/less/no-output.less +2 -0
  571. data/lib/less/js/less/test/less/no-strict-math/mixins-guards.less +25 -0
  572. data/lib/less/js/less/test/less/no-strict-math/no-sm-operations.less +10 -0
  573. data/lib/less/js/less/test/less/operations.less +63 -0
  574. data/lib/less/js/less/test/less/parens.less +45 -0
  575. data/lib/less/js/less/test/less/plugin.less +85 -0
  576. data/lib/less/js/less/test/less/plugin/plugin-global.js +9 -0
  577. data/lib/less/js/less/test/less/plugin/plugin-local.js +8 -0
  578. data/lib/less/js/less/test/less/plugin/plugin-transitive.js +5 -0
  579. data/lib/less/js/less/test/less/plugin/plugin-transitive.less +5 -0
  580. data/lib/less/js/less/test/less/postProcessorPlugin/postProcessor.less +4 -0
  581. data/lib/less/js/less/test/less/preProcessorPlugin/preProcessor.less +3 -0
  582. data/lib/less/js/less/test/less/property-name-interp.less +56 -0
  583. data/lib/less/js/less/test/less/rulesets.less +30 -0
  584. data/lib/less/js/less/test/less/scope.less +104 -0
  585. data/lib/less/js/less/test/less/selectors.less +184 -0
  586. data/lib/less/js/less/test/less/sourcemaps-empty/empty.less +0 -0
  587. data/lib/less/js/less/test/less/sourcemaps-empty/var-defs.less +1 -0
  588. data/lib/less/js/less/test/less/sourcemaps/basic.json +3 -0
  589. data/lib/less/js/less/test/less/sourcemaps/basic.less +27 -0
  590. data/lib/less/js/less/test/less/sourcemaps/imported.css +7 -0
  591. data/lib/less/js/less/test/less/static-urls/urls.less +33 -0
  592. data/lib/less/js/less/test/less/strict-units/strict-units.less +4 -0
  593. data/lib/less/js/less/test/less/strings.less +73 -0
  594. data/lib/less/js/less/test/less/url-args/urls.less +63 -0
  595. data/lib/less/js/less/test/less/urls.less +94 -0
  596. data/lib/less/js/less/test/less/variables-in-at-rules.less +20 -0
  597. data/lib/less/js/less/test/less/variables.less +119 -0
  598. data/lib/less/js/less/test/less/visitorPlugin/visitor.less +4 -0
  599. data/lib/less/js/less/test/less/whitespace.less +44 -0
  600. data/lib/less/js/less/test/modify-vars.js +19 -0
  601. data/lib/less/js/less/test/plugins/filemanager/index.js +19 -0
  602. data/lib/less/js/less/test/plugins/postprocess/index.js +14 -0
  603. data/lib/less/js/less/test/plugins/preprocess/index.js +19 -0
  604. data/lib/less/js/less/test/plugins/visitor/index.js +24 -0
  605. data/lib/less/js/less/test/rhino/test-header.js +15 -0
  606. data/lib/less/js/less/test/sourcemaps/basic.json +1 -0
  607. data/lib/less/js/less/test/sourcemaps/index.html +17 -0
  608. data/lib/less/js/node-mime/.gitignore +2 -0
  609. data/lib/less/js/node-mime/.npmignore +0 -0
  610. data/lib/less/js/node-mime/LICENSE +19 -0
  611. data/lib/less/js/node-mime/README.md +90 -0
  612. data/lib/less/js/node-mime/build/build.js +11 -0
  613. data/lib/less/js/node-mime/build/test.js +57 -0
  614. data/lib/less/js/node-mime/cli.js +8 -0
  615. data/lib/less/js/node-mime/mime.js +108 -0
  616. data/lib/less/js/node-mime/package.json +41 -0
  617. data/lib/less/js/node-mime/types.json +1 -0
  618. data/lib/less/loader.rb +13 -0
  619. data/lib/less/parser.rb +62 -0
  620. data/lib/less/runner.js +20 -0
  621. data/lib/less/version.rb +3 -0
  622. data/script/bootstrap +6 -0
  623. data/script/cibuild +7 -0
  624. data/spec/less/parser_spec.rb +170 -0
  625. data/spec/spec_helper.rb +3 -0
  626. data/spec/support/custom_functions/custom_functions.js +7 -0
  627. data/spec/support/custom_functions/custom_functions.less +3 -0
  628. data/spec/support/faulty/faulty.less +3 -0
  629. data/spec/support/less.js.tests-custom-functions.js +20 -0
  630. data/spec/support/one/one.less +1 -0
  631. data/spec/support/two/two.less +1 -0
  632. metadata +733 -0
@@ -0,0 +1,44 @@
1
+ .other {
2
+ trans: transitive;
3
+ }
4
+ .class {
5
+ trans: transitive;
6
+ global: global;
7
+ local: test-local();
8
+ shadow: global;
9
+ }
10
+ .class .local {
11
+ global: global;
12
+ local: local;
13
+ shadow: local;
14
+ }
15
+ .class {
16
+ ns-mixin-global: global;
17
+ ns-mixin-local: local;
18
+ ns-mixin-shadow: local;
19
+ mixin-local: local;
20
+ mixin-global: global;
21
+ mixin-shadow: local;
22
+ ruleset-local: local;
23
+ ruleset-global: global;
24
+ ruleset-shadow: local;
25
+ class-local: test-local();
26
+ }
27
+ @media screen {
28
+ .test {
29
+ result: global;
30
+ }
31
+ }
32
+ @font-face {
33
+ result: global;
34
+ }
35
+ @media screen and (min-width: 100px) and (max-width: 400px) {
36
+ .test {
37
+ result: global;
38
+ }
39
+ }
40
+ @media screen {
41
+ .test {
42
+ result: local;
43
+ }
44
+ }
@@ -0,0 +1,4 @@
1
+ hr {height:50px;}
2
+ .test {
3
+ color: white;
4
+ }
@@ -0,0 +1,3 @@
1
+ .test {
2
+ color: red;
3
+ }
@@ -0,0 +1,21 @@
1
+ pi-test {
2
+ border: 0;
3
+ @not-variable: @not-variable;
4
+ ufo-width: 50%;
5
+ *-z-border: 1px dashed blue;
6
+ -www-border-top: 2px;
7
+ radius-is-not-a-border: true;
8
+ border-top-left-radius: 2em;
9
+ border-top-red-radius-: 3pt;
10
+ global-local-mixer-property: strong;
11
+ }
12
+ pi-test-merge {
13
+ pre-property-ish: high, middle, low, base;
14
+ pre-property-ish+: nice try dude;
15
+ }
16
+ pi-indirect-vars {
17
+ auto: auto;
18
+ }
19
+ pi-complex-values {
20
+ 3px rgba(255, 255, 0, 0.5), 3.141592653589793 /* foo */3px rgba(255, 255, 0, 0.5), 3.141592653589793 /* foo */: none;
21
+ }
@@ -0,0 +1,33 @@
1
+ #first > .one {
2
+ font-size: 2em;
3
+ }
4
+ #first > .one > #second .two > #deux {
5
+ width: 50%;
6
+ }
7
+ #first > .one > #second .two > #deux #third {
8
+ height: 100%;
9
+ }
10
+ #first > .one > #second .two > #deux #third:focus {
11
+ color: black;
12
+ }
13
+ #first > .one > #second .two > #deux #third:focus #fifth > #sixth .seventh #eighth + #ninth {
14
+ color: purple;
15
+ }
16
+ #first > .one > #second .two > #deux #fourth,
17
+ #first > .one > #second .two > #deux #five,
18
+ #first > .one > #second .two > #deux #six {
19
+ color: #110000;
20
+ }
21
+ #first > .one > #second .two > #deux #fourth .seven,
22
+ #first > .one > #second .two > #deux #five .seven,
23
+ #first > .one > #second .two > #deux #six .seven,
24
+ #first > .one > #second .two > #deux #fourth .eight > #nine,
25
+ #first > .one > #second .two > #deux #five .eight > #nine,
26
+ #first > .one > #second .two > #deux #six .eight > #nine {
27
+ border: 1px solid black;
28
+ }
29
+ #first > .one > #second .two > #deux #fourth #ten,
30
+ #first > .one > #second .two > #deux #five #ten,
31
+ #first > .one > #second .two > #deux #six #ten {
32
+ color: red;
33
+ }
@@ -0,0 +1,38 @@
1
+ .tiny-scope {
2
+ color: #989;
3
+ }
4
+ .scope1 {
5
+ color: blue;
6
+ border-color: black;
7
+ }
8
+ .scope1 .scope2 {
9
+ color: blue;
10
+ }
11
+ .scope1 .scope2 .scope3 {
12
+ color: red;
13
+ border-color: black;
14
+ background-color: white;
15
+ }
16
+ .scope {
17
+ scoped-val: green;
18
+ }
19
+ .heightIsSet {
20
+ height: 1024px;
21
+ }
22
+ .useHeightInMixinCall {
23
+ mixin-height: 1024px;
24
+ }
25
+ .imported {
26
+ exists: true;
27
+ }
28
+ .testImported {
29
+ exists: true;
30
+ }
31
+ #allAreUsedHere {
32
+ default: 'top level';
33
+ scope: 'top level';
34
+ sub-scope-only: 'inside';
35
+ }
36
+ #parentSelectorScope {
37
+ prop: white;
38
+ }
@@ -0,0 +1,170 @@
1
+ h1 a:hover,
2
+ h2 a:hover,
3
+ h3 a:hover,
4
+ h1 p:hover,
5
+ h2 p:hover,
6
+ h3 p:hover {
7
+ color: red;
8
+ }
9
+ #all {
10
+ color: blue;
11
+ }
12
+ #the {
13
+ color: blue;
14
+ }
15
+ #same {
16
+ color: blue;
17
+ }
18
+ ul,
19
+ li,
20
+ div,
21
+ q,
22
+ blockquote,
23
+ textarea {
24
+ margin: 0;
25
+ }
26
+ td {
27
+ margin: 0;
28
+ padding: 0;
29
+ }
30
+ td,
31
+ input {
32
+ line-height: 1em;
33
+ }
34
+ a {
35
+ color: red;
36
+ }
37
+ a:hover {
38
+ color: blue;
39
+ }
40
+ div a {
41
+ color: green;
42
+ }
43
+ p a span {
44
+ color: yellow;
45
+ }
46
+ .foo .bar .qux,
47
+ .foo .baz .qux {
48
+ display: block;
49
+ }
50
+ .qux .foo .bar,
51
+ .qux .foo .baz {
52
+ display: inline;
53
+ }
54
+ .qux.foo .bar,
55
+ .qux.foo .baz {
56
+ display: inline-block;
57
+ }
58
+ .qux .foo .bar .biz,
59
+ .qux .foo .baz .biz {
60
+ display: none;
61
+ }
62
+ .a.b.c {
63
+ color: red;
64
+ }
65
+ .c .b.a {
66
+ color: red;
67
+ }
68
+ .foo .p.bar {
69
+ color: red;
70
+ }
71
+ .foo.p.bar {
72
+ color: red;
73
+ }
74
+ .foo + .foo {
75
+ background: amber;
76
+ }
77
+ .foo + .foo {
78
+ background: amber;
79
+ }
80
+ .foo + .foo,
81
+ .foo + .bar,
82
+ .bar + .foo,
83
+ .bar + .bar {
84
+ background: amber;
85
+ }
86
+ .foo a > .foo a,
87
+ .foo a > .bar a,
88
+ .foo a > .foo b,
89
+ .foo a > .bar b,
90
+ .bar a > .foo a,
91
+ .bar a > .bar a,
92
+ .bar a > .foo b,
93
+ .bar a > .bar b,
94
+ .foo b > .foo a,
95
+ .foo b > .bar a,
96
+ .foo b > .foo b,
97
+ .foo b > .bar b,
98
+ .bar b > .foo a,
99
+ .bar b > .bar a,
100
+ .bar b > .foo b,
101
+ .bar b > .bar b {
102
+ background: amber;
103
+ }
104
+ .other ::fnord {
105
+ color: red;
106
+ }
107
+ .other::fnord {
108
+ color: red;
109
+ }
110
+ .other ::bnord {
111
+ color: red;
112
+ }
113
+ .other::bnord {
114
+ color: red;
115
+ }
116
+ .blood {
117
+ color: red;
118
+ }
119
+ .bloodred {
120
+ color: green;
121
+ }
122
+ #blood.blood.red.black:blood {
123
+ color: black;
124
+ }
125
+ :nth-child(3) {
126
+ selector: interpolated;
127
+ }
128
+ .test:nth-child(3) {
129
+ selector: interpolated;
130
+ }
131
+ .test:nth-child(odd):not(:nth-child(3)) {
132
+ color: #ff0000;
133
+ }
134
+ [prop],
135
+ [prop=10%],
136
+ [prop="value3"],
137
+ [prop*="val3"],
138
+ [|prop~="val3"],
139
+ [*|prop$="val3"],
140
+ [ns|prop^="val3"],
141
+ [3^="val3"],
142
+ [3=3],
143
+ [3] {
144
+ attributes: yes;
145
+ }
146
+ /*
147
+ Large comment means chunk will be emitted after } which means chunk will begin with whitespace...
148
+ blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank
149
+ blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank
150
+ blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank
151
+ blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank
152
+ blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank blank
153
+ */
154
+ .blood {
155
+ color: red;
156
+ }
157
+ .foo:not(.tst.only-nested .level2:hover) {
158
+ test: only-nested;
159
+ }
160
+ .foo.nestend-and-non-nested:not(.tst.nestend-and-non-nested:hover) {
161
+ test: nestend-and-non-nested;
162
+ }
163
+ .selector:not(:hover) {
164
+ test: global scope;
165
+ }
166
+ .extend-this,
167
+ .active.first-level .second-level,
168
+ .first-level .second-level.active2 {
169
+ content: '\2661';
170
+ }
@@ -0,0 +1,46 @@
1
+ @import "css/background.css";
2
+ @import "folder (1)/import-test-d.css";
3
+ @font-face {
4
+ src: url("/fonts/garamond-pro.ttf");
5
+ src: local(Futura-Medium), url(folder\ \(1\)/fonts.svg#MyGeometricModern) format("svg");
6
+ }
7
+ #shorthands {
8
+ background: url("http://www.lesscss.org/spec.html") no-repeat 0 4px;
9
+ }
10
+ #misc {
11
+ background-image: url(folder\ \(1\)/images/image.jpg);
12
+ }
13
+ #data-uri {
14
+ background: url(data:image/png;charset=utf-8;base64,
15
+ kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
16
+ k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
17
+ kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
18
+ background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
19
+ background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700);
20
+ }
21
+ #svg-data-uri {
22
+ background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
23
+ }
24
+ .comma-delimited {
25
+ background: url(folder\ \(1\)/bg.jpg) no-repeat, url(folder\ \(1\)/bg.png) repeat-x top left, url(folder\ \(1\)/bg);
26
+ }
27
+ .values {
28
+ url: url('folder (1)/Trebuchet');
29
+ }
30
+ #logo {
31
+ width: 100px;
32
+ height: 100px;
33
+ background: url('assets/logo.png');
34
+ background: url("#inline-svg");
35
+ }
36
+ @font-face {
37
+ font-family: xecret;
38
+ src: url('assets/xecret.ttf');
39
+ }
40
+ #secret {
41
+ font-family: xecret, sans-serif;
42
+ }
43
+ #imported-relative-path {
44
+ background-image: url(../data/image.jpg);
45
+ border-image: url('../data/image.jpg');
46
+ }
@@ -0,0 +1,4 @@
1
+ .units {
2
+ cancels-to-nothing: 1;
3
+ cancels: 6px;
4
+ }
@@ -0,0 +1,55 @@
1
+ #strings {
2
+ background-image: url("http://son-of-a-banana.com");
3
+ quotes: "~" "~";
4
+ content: "#*%:&^,)!.(~*})";
5
+ empty: "";
6
+ brackets: "{" "}";
7
+ escapes: "\"hello\" \\world";
8
+ escapes2: "\"llo";
9
+ }
10
+ #comments {
11
+ content: "/* hello */ // not-so-secret";
12
+ }
13
+ #single-quote {
14
+ quotes: "'" "'";
15
+ content: '""#!&""';
16
+ empty: '';
17
+ semi-colon: ';';
18
+ }
19
+ #escaped {
20
+ filter: DX.Transform.MS.BS.filter(opacity=50);
21
+ }
22
+ #one-line {
23
+ image: url(http://tooks.com);
24
+ }
25
+ #crazy {
26
+ image: url(http://), "}", url("http://}");
27
+ }
28
+ #interpolation {
29
+ url: "http://lesscss.org/dev/image.jpg";
30
+ url2: "http://lesscss.org/image-256.jpg";
31
+ url3: "http://lesscss.org#456";
32
+ url4: "http://lesscss.org/hello";
33
+ url5: "http://lesscss.org/54.4px";
34
+ }
35
+ .mix-mul-class {
36
+ color: blue;
37
+ color: red;
38
+ color: black;
39
+ color: orange;
40
+ }
41
+ .watermark {
42
+ family: Univers, Arial, Verdana, San-Serif;
43
+ }
44
+ #iterated-interpolation .mixin {
45
+ width: 100px;
46
+ weird: 100px;
47
+ width-str: "100px";
48
+ weird-str: "100px";
49
+ }
50
+ #iterated-interpolation .interpolation-mixin {
51
+ width: 100px;
52
+ weird: 100px;
53
+ width-str: "100px";
54
+ weird-str: "100px";
55
+ }
@@ -0,0 +1,56 @@
1
+ @font-face {
2
+ src: url("/fonts/garamond-pro.ttf?424242");
3
+ src: local(Futura-Medium), url(fonts.svg?424242#MyGeometricModern) format("svg");
4
+ }
5
+ #shorthands {
6
+ background: url("http://www.lesscss.org/spec.html?424242") no-repeat 0 4px;
7
+ background: url("img.jpg?424242") center / 100px;
8
+ background: #fff url(image.png?424242) center / 1px 100px repeat-x scroll content-box padding-box;
9
+ }
10
+ #misc {
11
+ background-image: url(images/image.jpg?424242);
12
+ }
13
+ #data-uri {
14
+ background: url(data:image/png;charset=utf-8;base64,
15
+ kiVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/
16
+ k//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U
17
+ kg9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC);
18
+ background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
19
+ background-image: url(http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700&424242);
20
+ background-image: url("http://fonts.googleapis.com/css?family=\"Rokkitt\":\(400\),700&424242");
21
+ }
22
+ #svg-data-uri {
23
+ background: transparent url('data:image/svg+xml, <svg version="1.1"><g></g></svg>');
24
+ }
25
+ .comma-delimited {
26
+ background: url(bg.jpg?424242) no-repeat, url(bg.png?424242) repeat-x top left, url(bg?424242);
27
+ }
28
+ .values {
29
+ url: url('Trebuchet?424242');
30
+ }
31
+ @font-face {
32
+ font-family: xecret;
33
+ src: url('../assets/xecret.ttf?424242');
34
+ }
35
+ #secret {
36
+ font-family: xecret, sans-serif;
37
+ }
38
+ #data-uri {
39
+ uri: url("data:image/jpeg;base64,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U3v/APtyCCCCCO+++6CD9tLCS2+++OCpCVCBCyyhylaHiCBCCCCGe+++yCDf999LDC2++++lCcJTCCCxCBCpCQJCCGe++++iCDf9R999LDCS2+62P888f7IhCZCvKPMP+++++yCCHd99BR999vDCCy188888885AOtK4+P3j+++yCCDP999xBBB1999PDU88888888j8P9pr1V496yCDBHf999hBtBBBR9999l88888888n8nWp8fvfCBCDTV9995BBB9tBBBBx9938888888708XEy/8880Mrz+d95hBBBN899JBBBBxe/888888v8AO/JwFuPPPPPPOOYQQQRXfdPPfbSQQQQ6d/8Az9/3/wA/8sd5FdZbz8wwBBBBN998AQ8899tJBBRjFHEyUnQGzgdp9hWxhwBBBBN99984AAA08899tNBBg18vro5/j0PfvfoBBBBFN99984gAOAAAQ088999NNBBBDJ0AATAQ/RBBFN999988wAAA+uIAAAQw8899999NNNNNOcuetN99999884wAAAAO+++uKAAAAw088899999999999998888wgAAAAO++C2+++uKAAAAAQw0888888888888wwAAAAAAO++++CCS2+++uOCAAAAAAAAAQwwAAAAAAAAAAGe++++yC/8QAJhEBAAICAgEDBAMBAAAAAAAAAQARITEQQUAgUWEwUHGRcIHRof/aAAgBAwEBPxD7r3B7/H2eyo5KiFOmDrZvrERI/ZU7w7ht4fmELvyzKzuT3+PsJRst+qmFGxyejqKmnJUB1mWdtvtojstnqrT3Guuh+/HBzQkwZiUOjVXLd/b/AHlj+07hN4fmXD/LN8Mx2Kz/ALMgE1NcEwaaMMQ4mbhTfv8AuEEaeMRRs+Z1YR5d8vtwFQwlRAU1H14zLqtXymWZI4qojvyHfBvkjge4fTPuOAau/wAzHPEfQbj5Dvg3z1EIunX9QAXK41sorfdxKa4fQb8l3wb5Yt2xgxa/8lo0o7jALoZorWz/ACFWg5PJd8G+XfJvgDayWS0pCkFu3PXku+DfBv0HFudTBVn6iqlrz15LKuF2p8Eo69HXBx1wAvUAKWP2eThgA16EHcU1wDx1wJASg0QT2FjmWEqLsHse78evL6DL8kSo8UL4SXT2hVlXLg10eNiPovA5RzDYIlkRGmdcPoNgjjwRi/on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");
40
+ }
41
+ #data-uri-guess {
42
+ uri: url("data:image/jpeg;base64,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U3v/APtyCCCCCO+++6CD9tLCS2+++OCpCVCBCyyhylaHiCBCCCCGe+++yCDf999LDC2++++lCcJTCCCxCBCpCQJCCGe++++iCDf9R999LDCS2+62P888f7IhCZCvKPMP+++++yCCHd99BR999vDCCy188888885AOtK4+P3j+++yCCDP999xBBB1999PDU88888888j8P9pr1V496yCDBHf999hBtBBBR9999l88888888n8nWp8fvfCBCDTV9995BBB9tBBBBx9938888888708XEy/8880Mrz+d95hBBBN899JBBBBxe/888888v8AO/JwFuPPPPPPOOYQQQRXfdPPfbSQQQQ6d/8Az9/3/wA/8sd5FdZbz8wwBBBBN998AQ8899tJBBRjFHEyUnQGzgdp9hWxhwBBBBN99984AAA08899tNBBg18vro5/j0PfvfoBBBBFN99984gAOAAAQ088999NNBBBDJ0AATAQ/RBBFN999988wAAA+uIAAAQw8899999NNNNNOcuetN99999884wAAAAO+++uKAAAAw088899999999999998888wgAAAAO++C2+++uKAAAAAQw0888888888888wwAAAAAAO++++CCS2+++uOCAAAAAAAAAQwwAAAAAAAAAAGe++++yC/8QAJhEBAAICAgEDBAMBAAAAAAAAAQARITEQQUAgUWEwUHGRcIHRof/aAAgBAwEBPxD7r3B7/H2eyo5KiFOmDrZvrERI/ZU7w7ht4fmELvyzKzuT3+PsJRst+qmFGxyejqKmnJUB1mWdtvtojstnqrT3Guuh+/HBzQkwZiUOjVXLd/b/AHlj+07hN4fmXD/LN8Mx2Kz/ALMgE1NcEwaaMMQ4mbhTfv8AuEEaeMRRs+Z1YR5d8vtwFQwlRAU1H14zLqtXymWZI4qojvyHfBvkjge4fTPuOAau/wAzHPEfQbj5Dvg3z1EIunX9QAXK41sorfdxKa4fQb8l3wb5Yt2xgxa/8lo0o7jALoZorWz/ACFWg5PJd8G+XfJvgDayWS0pCkFu3PXku+DfBv0HFudTBVn6iqlrz15LKuF2p8Eo69HXBx1wAvUAKWP2eThgA16EHcU1wDx1wJASg0QT2FjmWEqLsHse78evL6DL8kSo8UL4SXT2hVlXLg10eNiPovA5RzDYIlkRGmdcPoNgjjwRi/onDKOUh3PglJfCuRbc3eCKH0GHB7zrBqmDZZ6AG+BdQUAUTNeDoMG9evvh46RjwOnroX4SBzBmXCmBBHXCXAqLUOO+NOXGJcTmw9xBHXA7R14aaTAMW1KdMvuQX2l5le0WoFSybYw4hjhFFgObfH0kB3AOo+01MQq5kisJmI7J8EwEuX5oWmC7lIPBHTKvM/PFfEeyN9jWk+afJFu/4J//xAAmEQEAAgICAgICAQUAAAAAAAABABEhMRBBQFEgYTBQkXBxgbHB/9oACAECAQE/EP2rVa9ff6fDKw3DPbg/WD+YIln6Uae4pDDR/iYCNVr/AL+hchVUy2n4dyuWYYZ7cPVqAA7+V16QqBpf48dAHqBt3mWOZQeZAiU1DUOS5bPUxCtXzhEw3G9hMNW+vUSgu/GcvTO8IcmuT3xX2SBiDuH2iVtrrlBYwkvWbYa8g1w65Yb+kxGn1w5dVMyMw+DqHkGuHXPcIWNkBBDJMDy+vqDZwfB15Jrh5IH2EQdT7RDUIBVbCe33H6V8vkmuHk1y64bC8OZsGKjcHPfkmuHXDr4PFAF8AU0c9+STUatz7JZ38O+Hjvi4EVaqf9+UlXfwFNQLcCDjvhAViUtjzq1FtYyQrlffj34PwErwwbhxYrgwHcbcJDKefBxTiEdKDTBEsnfB8HVoN+Cs1+F5s5QjU+yWtfE6KmrwVl+A5Z2iXZEpp+CJXCm4iIrZq8HcIlb+fXBx2hDhNvnYrwgpiVcGNsqIm+BqLcC48dcbcmcyoDAj6MRN8LpDHhhtMgQRuW7JXViHuViXDMcymahJmOeAEGR5o8faRXUUbh7m5mN1MQCMxBdM+yZWVK81DuJ6l4lETZLqf24v7h0Q/wBGoZ9U+iBdf0J//8QALRABAAECBAQGAwEBAQEBAAAAAREAITFBUWEQIHGBMFCRobHB0eHwQGDxgJD/2gAIAQEAAT8Q/wDgrIdKU7RP+OCBNKOZs+hFWaAgTOc6i6FQn/GQJS+JsJg0ZmiULzQB2zoiXPFpIY/4uY35FGD9vSmcAlMGB/xYxhRqKhUuFaLXtLHvPpxOA4xlTqI2/wCBFiiBIDhJj4L3EoCgeYXQLcDEmnAN2mgMkzKS4KUYnjpGPmAm6oZBxtakdZxLU8C8MF7wt7xxgRNWAI2TBq4kYhnUUXoJclNAkZ+LeKZfRI7e9IFxA+XYNAGSmgBjMFZK5AoO7CyocJiBnzb5E6YvwcZCOS0UPV0O9YiDgGRpyLYFi7BhSjwJBmi2mONsqmSCxu0mQcXKnheEpT5YoDyTF6MNndi35jm6oN3QPlxmhZk1DelthTyIu66O3KWKDCE6Xn6oH5pQwH5rAHPWQre8Chre8Cl4QisEEpis4SHV8sXcUJnFb1TWMK34g92frm6AvqflzEfJWa5CnKlJXkDcqOlQhMBpSs5YZEdKigXFdOCiRbiDvy5bxWMakTVukHt8wbTN3sB++USDVpWcl9Nvrmt+3qDgenKsuSI3a9m9x5hGDW9Sri0Y1hNR6CPrzDuMu68uyY9631H35TwJ9ApW809uY1cBGVKrLV4aJ9eDsGFb3r3fMLX+wcveHsvzLVXsYvAzKj7Zk4kdaRX579uXv4JGXAR6DNJRYrPmGLoHty43Ue/mtBq9S7wUS0pMRBRxBYDJmkpKgBdpQWKC5y2LqD2eDb+rjj3jzHD6Q5ca0+OPvlkzCZehepEzGsKoTOdO77kSFOHvm040PJNQBukQUQBmR2knksXVHv4PQsDqh8T5h7w5utXRe6H3y73O6eJDfisEtSJqxfr5Pri4hE4BTdBisRlD4O4jugJ+vMPeHh9BvVH2scRTCjqVPSkxUhmJepojMEHSeKFtkdYp3JhslOwXEaGpEYebfjfSwfD5goR0owfgoAlgpwfD7j757MnL0H6cQBGoICSNNvC3GbUtwoq0Qtiy5U642Qnfm6x3qfMT0g+3gwb1it7hOfrcHVB8Lxguz5LhVj/ojlCAJVgokxki9LD48xv1D9uW8c1/I8nWYOsW8C7Zkdgr8ORCLygqY0yEmcU5VIr10N7jPKEFPYRd9imvhUvmN+pj6Mct8Nfjn65Ouw+s/Xgd+11X4DkBPwC+xNKpXFvxs/mDl6sg6o+C+Zfwhx++W8dfnv1yWT9AR984KgErTITIQ9kfXJ6d+qx8Tx3TNb/LkCoKkmCOjYP2np5lZdH1EfXHAg1LPWv7A+k1pw5JxR91/wCa0HH9VPqv4VetaR9liu1SIugjmBYlXoCX4pnEqyvJvBuwI++IIvBl6UqquLyPGYqBQ3oS/wAalYERhHEfMe7U6ifujC6ZF3oUMIC3vbCgAgIOeKE0E1PLrH4LU92XZ+z8VMIOq9Rx3lDqL8Dy2Llnq3fnj0f77wipxYzXd4SIdKioXESiJIlybrRpgYMS4Fi9R1klNFKgRGEcR8uYq6AKBhQ9vFJJDhQbL8iDuYVLd6J30rdjHTB8PryTtYRLoVvvJxx9fZCoO6L2b8Veq3ZvnwUdfCUw4PZIQySJSNzgq1/a+WpgVAGdCSB9DY/wIE4Behg5xbI02pc+OHj/AO2iz4nkuZJJoLSLis4aBSqpWeAwyVhKAyd+MCDGt5vQGB6y+nlobeDka/4VJzB2Z+00WIqN8BaxP1UNRyGA1OG+EuhY4kAYrFFgWEu2FKBicnd83vY9j3oLBaVpKqD0QutW3gsaAWD08saAxy9CjLgID/C2zKTu/wB78VAxiz1T2EIG+5QLEiDtZ954yyS/pcHx4v8APFjUpAUh2SOgI+uL0PbL9vx4IQFzrBhSQo5eRxgvW6P8OF2rlx9Bl7cgLktBmhYpmWcc54k6MOBBIcGlSKyjLbgIlwRdTD3ikouKzwEEgbIxaeIyNAsHg9F71f1UZkCR08ibFRFEBYj/AAvDxcO/6oADAI5C65Qd39fNFZltGTnxV4tb7cU5ExEmnCM5KSrADBYWC8fHpTFidzSYyyLNMaLIc8jux9PCUVe30Kkxgz28ik6SB/xfRPd5ARWAlpgYjLv+qOBuh+/biMzdA3cfk8AqAU2y6cTpM1FXuPhylZLwVhKkUAhmJ9XyLocPt/hBsAJaYzjLktFoPQu/2/CeMh7cNBkTRS0KXRw8G/8AMAZDf0o0mq4HQoBAA0KihNEmiXp5ipE/Rke/AEpMApiQkXMn54ISMh8vkRGauf4bpZpehy7A/a/tuBkW8qkhRxK7AnVtQoiWSgNtwNTXwASGIth/7yuXrITUsdBApidiJeMaGwPSX8ivNUt03oGppE/wXlg+gckWkuAauVXNlC7q58Ly2rYJnvW/1fQsffCItkZJpQpYJcbn+BfoQqdmVLyO7szcw7aVDFrWJ4PrPM68qBxmH3RGMAjk2qT65ffIoEuoO7RqwEHbH3niYWeCMVPIuw21KsB2INzt4wwXGKex5ItVO4xGVqu8aTHOplRR/EEmdbtKTc7c7k4xmDRq3c0pU1JLUX3eN8/wy8hOkAS0wjhpbbenJAr56IPelUqyt3kEK3K4E3XsfNHFSSNnW6aVGQg0lUJvUXUJz5FiRrrwdhjcFAwBqM86Fwlj5NJgRKufknyhVs1OUAXsTptU/fdqepnU1m4FgdvxUCRLIYO/5qIG0bD1wo4BMFSPgGEoXE6GtYTAW5LTwfRP3ysDRMxsck5Ze27UM6bkOXTkZQsR6t3496uBCI6mx7tS6tEUhmr9QoAHMWB6NAEA4I8SldNUvpjQK8to79inLkZVbvkyNWkSiYOCHF10oEJLiMjUIS2QnfGnyldc9Sm5QziPWPuo0RMbj1KgRfWA+qiIi5P7VFGajPFQKsBjUgOgOVPkGw6NR4rufJatFWwn6oJY7G1HbH4qcY8Tky7cg4aCaZSgr1NEc26A14RIALowDVaNvW2QZbFPiZTxQAVMAZ1Lhd6j+ihcewjD3+ORWevhQJB/ZvQ8H6I+VwSbNd/So95csbo0AFCOZw9ZIVq6iWrlN96R+qJJ+pd81gjaDf5WojoaP1RUcC5fFJEtAcX4oRJGeChdp0lS1gGnekGCCYRRkmtXOjUDGep9ytIXRfioUgxcYbUIgjI4VCuBg4qhlF7GXYNaw7z1LVZ10BDox9+JpSWAJWhYf2LvSgVYC6tIK4+yw/PfzNEhdV6KhULrnpjULds3OVITkB80YlzN1cVpBIblM8le9Pauk9vxSxxCW8elAoJxGhkUYkyfyoCUJtwAKoDOojFlbowqSw950U3ADQ2alGIlCPX5e1DyQECBTMQ4z/rSlh2H5UX1xu+vAMFGD+L+bFSrBUNQIR5C/rUSPallETsJdRyYrYDNpEpOJttSCmWJk1gGd3Nf+RUmKdCkUYvQLTkTRiMHFZcEskmqj4qeR9z8Url3SYFItKeI9xUaSbUfBG5NbQ6UlInWL0pbTS/rkYq+GYtKkgPPTbzkVSKJmUbTiwfmqKCtVDUGTNk/FEnQKCJIibVhKbQ3qwTK3XVpIWQYCyVkV2Q1HiHpRajmKyqESYhZ2cLkNZRWWCUSZO91YzWCxHSkEIjCcFSNYRYYhvQsgm1Ib/JxonSBh4Dz9Wa4DYhFQLO3o9x4n4rDdtZQ89EFCRmXt/GBSARJHKso/wAsaixewrQ7yFaIGqy0RuFmZx7VPZcbUQmc1u0wjorH7pMx83/hRRkUdqyMtFWRDRvwvBPgooOK91f+ypxcuq0YgSqeO3T/APih/9k=");
43
+ }
44
+ #data-uri-ascii {
45
+ uri-1: url("data:text/html,%3Chtml%3E%3Ch1%3EThis%20page%20is%20100%25%20Awesome.%3C%2Fh1%3E%3C%2Fhtml%3E%0A");
46
+ uri-2: url("data:text/html,%3Chtml%3E%3Ch1%3EThis%20page%20is%20100%25%20Awesome.%3C%2Fh1%3E%3C%2Fhtml%3E%0A");
47
+ }
48
+ #svg-functions {
49
+ background-image: url('data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20width%3D%22100%25%22%20height%3D%22100%25%22%20viewBox%3D%220%200%201%201%22%20preserveAspectRatio%3D%22none%22%3E%3ClinearGradient%20id%3D%22gradient%22%20gradientUnits%3D%22userSpaceOnUse%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23000000%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23ffffff%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23gradient)%22%20%2F%3E%3C%2Fsvg%3E');
50
+ background-image: url('data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20width%3D%22100%25%22%20height%3D%22100%25%22%20viewBox%3D%220%200%201%201%22%20preserveAspectRatio%3D%22none%22%3E%3ClinearGradient%20id%3D%22gradient%22%20gradientUnits%3D%22userSpaceOnUse%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23000000%22%2F%3E%3Cstop%20offset%3D%223%25%22%20stop-color%3D%22%23ffa500%22%2F%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23ffffff%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23gradient)%22%20%2F%3E%3C%2Fsvg%3E');
51
+ background-image: url('data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20%3F%3E%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20width%3D%22100%25%22%20height%3D%22100%25%22%20viewBox%3D%220%200%201%201%22%20preserveAspectRatio%3D%22none%22%3E%3ClinearGradient%20id%3D%22gradient%22%20gradientUnits%3D%22userSpaceOnUse%22%20x1%3D%220%25%22%20y1%3D%220%25%22%20x2%3D%220%25%22%20y2%3D%22100%25%22%3E%3Cstop%20offset%3D%221%25%22%20stop-color%3D%22%23c4c4c4%22%2F%3E%3Cstop%20offset%3D%223%25%22%20stop-color%3D%22%23ffa500%22%2F%3E%3Cstop%20offset%3D%225%25%22%20stop-color%3D%22%23008000%22%2F%3E%3Cstop%20offset%3D%2295%25%22%20stop-color%3D%22%23ffffff%22%2F%3E%3C%2FlinearGradient%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%221%22%20height%3D%221%22%20fill%3D%22url(%23gradient)%22%20%2F%3E%3C%2Fsvg%3E');
52
+ }
53
+ #data-uri-with-spaces {
54
+ background-image: url(data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==);
55
+ background-image: url(' data:image/x-png,f9difSSFIIGFIFJD1f982FSDKAA9==');
56
+ }