This is an automated email from the ASF dual-hosted git repository.

benw pushed a commit to branch TAP5-2708
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git

commit e812183b15d87af083c5d84c300e7bf0558570ad
Author: Ben Weidig <b...@netzgut.net>
AuthorDate: Thu May 18 13:08:59 2023 +0200

    TAP5-2708: Updated CssCompressor, fix errors, and create Spec with original 
tests
    
    The CssCompressor in tapestry-webresources is now based on the latest YUI 
commit cf0497e.
    To make it work some errors had to be fixed:
    - Duplicate variable declaration of "oldCss"
    - Faulty non-escaped regex
    - zeros.css test failed
    
    I'm not 100% sure the CssCompressor behaves 100% as before, but it's a 
necessary trade-off so it can be improved further, as the original YUI project 
is dead.
---
 tapestry-webresources/NOTICE.txt                   |   2 +-
 .../internal/webresources/CssCompressor.java       |  39 ++++++--
 .../t5/webresources/tests/CssCompressorSpec.groovy |  90 ++++++++++++++++-
 .../webresources/css/yui/background-position.css   |   2 +
 .../css/yui/background-position.css.min            |   1 +
 .../t5/webresources/css/yui/border-none.css        |  10 ++
 .../t5/webresources/css/yui/border-none.css.min    |   1 +
 .../t5/webresources/css/yui/box-model-hack.css     |   9 ++
 .../t5/webresources/css/yui/box-model-hack.css.min |   1 +
 .../resources/t5/webresources/css/yui/bug-flex.css |   3 +
 .../t5/webresources/css/yui/bug-flex.css.min       |   1 +
 .../css/yui/bug-nested-pseudoclass.css             |   3 +
 .../css/yui/bug-nested-pseudoclass.css.min         |   1 +
 .../css/yui/bug-preservetoken-calc.css             |   8 ++
 .../css/yui/bug-preservetoken-calc.css.min         |   1 +
 .../t5/webresources/css/yui/bug2527974.css         |  10 ++
 .../t5/webresources/css/yui/bug2527974.css.min     |   1 +
 .../t5/webresources/css/yui/bug2527991.css         |  19 ++++
 .../t5/webresources/css/yui/bug2527991.css.min     |   1 +
 .../t5/webresources/css/yui/bug2527998.css         |   4 +
 .../t5/webresources/css/yui/bug2527998.css.min     |   1 +
 .../t5/webresources/css/yui/bug2528034.css         |   5 +
 .../t5/webresources/css/yui/bug2528034.css.min     |   1 +
 .../t5/webresources/css/yui/charset-media.css      |   9 ++
 .../t5/webresources/css/yui/charset-media.css.min  |   1 +
 .../t5/webresources/css/yui/color-keyword.css      |   1 +
 .../t5/webresources/css/yui/color-keyword.css.min  |   1 +
 .../t5/webresources/css/yui/color-simple.css       |   8 ++
 .../t5/webresources/css/yui/color-simple.css.min   |   1 +
 .../resources/t5/webresources/css/yui/color.css    |  48 ++++++++++
 .../t5/webresources/css/yui/color.css.min          |   1 +
 .../resources/t5/webresources/css/yui/comment.css  |   3 +
 .../t5/webresources/css/yui/comment.css.min        |   1 +
 .../t5/webresources/css/yui/concat-charset.css     |  15 +++
 .../t5/webresources/css/yui/concat-charset.css.min |   1 +
 .../css/yui/dataurl-base64-doublequotes.css        |  23 +++++
 .../css/yui/dataurl-base64-doublequotes.css.min    |   1 +
 .../t5/webresources/css/yui/dataurl-base64-eof.css |  10 ++
 .../css/yui/dataurl-base64-eof.css.min             |   1 +
 .../css/yui/dataurl-base64-linebreakindata.css     |  34 +++++++
 .../css/yui/dataurl-base64-linebreakindata.css.min |   1 +
 .../css/yui/dataurl-base64-noquotes.css            |  26 +++++
 .../css/yui/dataurl-base64-noquotes.css.min        |   1 +
 .../css/yui/dataurl-base64-singlequotes.css        |  23 +++++
 .../css/yui/dataurl-base64-singlequotes.css.min    |   1 +
 .../css/yui/dataurl-base64-twourls.css             |  27 ++++++
 .../css/yui/dataurl-base64-twourls.css.min         |   1 +
 .../webresources/css/yui/dataurl-dbquote-font.css  |  30 ++++++
 .../css/yui/dataurl-dbquote-font.css.min           |   5 +
 .../css/yui/dataurl-nonbase64-doublequotes.css     |  13 +++
 .../css/yui/dataurl-nonbase64-doublequotes.css.min |   1 +
 .../css/yui/dataurl-nonbase64-noquotes.css         |  11 +++
 .../css/yui/dataurl-nonbase64-noquotes.css.min     |   1 +
 .../css/yui/dataurl-nonbase64-singlequotes.css     |  15 +++
 .../css/yui/dataurl-nonbase64-singlequotes.css.min |   2 +
 .../css/yui/dataurl-noquote-multiline-font.css     |  31 ++++++
 .../css/yui/dataurl-noquote-multiline-font.css.min |   3 +
 .../css/yui/dataurl-realdata-doublequotes.css      |  90 +++++++++++++++++
 .../css/yui/dataurl-realdata-doublequotes.css.min  |   1 +
 .../css/yui/dataurl-realdata-noquotes.css          |  90 +++++++++++++++++
 .../css/yui/dataurl-realdata-noquotes.css.min      |   1 +
 .../css/yui/dataurl-realdata-singlequotes.css      |  90 +++++++++++++++++
 .../css/yui/dataurl-realdata-singlequotes.css.min  |   1 +
 .../css/yui/dataurl-realdata-yuiapp.css            | 106 +++++++++++++++++++++
 .../css/yui/dataurl-realdata-yuiapp.css.min        |   1 +
 .../css/yui/dataurl-singlequote-font.css           |  30 ++++++
 .../css/yui/dataurl-singlequote-font.css.min       |   3 +
 .../resources/t5/webresources/css/yui/decimals.css |   3 +
 .../t5/webresources/css/yui/decimals.css.min       |   1 +
 .../t5/webresources/css/yui/dollar-header.css      |   7 ++
 .../t5/webresources/css/yui/dollar-header.css.min  |   3 +
 .../t5/webresources/css/yui/font-face.css          |   6 ++
 .../t5/webresources/css/yui/font-face.css.min      |   1 +
 .../t5/webresources/css/yui/hsla-issue81.css.FAIL  |   4 +
 .../t5/webresources/css/yui/hsla-issue81.css.min   |   1 +
 .../t5/webresources/css/yui/ie-backslash9-hack.css |   2 +
 .../css/yui/ie-backslash9-hack.css.min             |   1 +
 .../resources/t5/webresources/css/yui/ie5mac.css   |   5 +
 .../t5/webresources/css/yui/ie5mac.css.min         |   1 +
 .../resources/t5/webresources/css/yui/issue-59.css |   7 ++
 .../t5/webresources/css/yui/issue-59.css.min       |   1 +
 .../resources/t5/webresources/css/yui/issue151.css |   8 ++
 .../t5/webresources/css/yui/issue151.css.min       |   1 +
 .../t5/webresources/css/yui/issue172.css.FAIL      |   4 +
 .../t5/webresources/css/yui/issue172.css.min       |   1 +
 .../resources/t5/webresources/css/yui/issue180.css |  16 ++++
 .../t5/webresources/css/yui/issue180.css.min       |   1 +
 .../resources/t5/webresources/css/yui/issue205.css |   2 +
 .../t5/webresources/css/yui/issue205.css.min       |   1 +
 .../resources/t5/webresources/css/yui/issue221.css |   7 ++
 .../t5/webresources/css/yui/issue221.css.min       |   1 +
 .../resources/t5/webresources/css/yui/issue222.css |   3 +
 .../t5/webresources/css/yui/issue222.css.min       |   1 +
 .../t5/webresources/css/yui/lowercasing.css        |  63 ++++++++++++
 .../t5/webresources/css/yui/lowercasing.css.min    |   1 +
 .../t5/webresources/css/yui/media-empty-class.css  |  16 ++++
 .../webresources/css/yui/media-empty-class.css.min |   1 +
 .../t5/webresources/css/yui/media-multi.css        |   3 +
 .../t5/webresources/css/yui/media-multi.css.min    |   1 +
 .../t5/webresources/css/yui/media-test.css         |   3 +
 .../t5/webresources/css/yui/media-test.css.min     |   1 +
 .../webresources/css/yui/old-ie-filter-matrix.css  |   8 ++
 .../css/yui/old-ie-filter-matrix.css.min           |   1 +
 .../t5/webresources/css/yui/opacity-filter.css     |  14 +++
 .../t5/webresources/css/yui/opacity-filter.css.min |   1 +
 .../t5/webresources/css/yui/opera-pixel-ratio.css  |  14 +++
 .../webresources/css/yui/opera-pixel-ratio.css.min |   1 +
 .../t5/webresources/css/yui/pointzeros.css         |   6 ++
 .../t5/webresources/css/yui/pointzeros.css.min     |   1 +
 .../t5/webresources/css/yui/preserve-case.css      |  15 +++
 .../t5/webresources/css/yui/preserve-case.css.min  |   1 +
 .../t5/webresources/css/yui/preserve-important.css |   1 +
 .../css/yui/preserve-important.css.min             |   1 +
 .../t5/webresources/css/yui/preserve-new-line.css  |   6 ++
 .../webresources/css/yui/preserve-new-line.css.min |   3 +
 .../t5/webresources/css/yui/preserve-strings.css   |   7 ++
 .../webresources/css/yui/preserve-strings.css.min  |   1 +
 .../t5/webresources/css/yui/pseudo-first.css       |  16 ++++
 .../t5/webresources/css/yui/pseudo-first.css.min   |   1 +
 .../resources/t5/webresources/css/yui/pseudo.css   |   4 +
 .../t5/webresources/css/yui/pseudo.css.min         |   1 +
 .../t5/webresources/css/yui/rgb-issue81.css.FAIL   |   4 +
 .../t5/webresources/css/yui/rgb-issue81.css.min    |   1 +
 .../t5/webresources/css/yui/special-comments.css   |  13 +++
 .../webresources/css/yui/special-comments.css.min  |   9 ++
 .../webresources/css/yui/star-underscore-hacks.css |   5 +
 .../css/yui/star-underscore-hacks.css.min          |   1 +
 .../t5/webresources/css/yui/string-in-comment.css  |   8 ++
 .../webresources/css/yui/string-in-comment.css.min |   1 +
 .../t5/webresources/css/yui/webkit-transform.css   |   2 +
 .../webresources/css/yui/webkit-transform.css.min  |   1 +
 .../resources/t5/webresources/css/yui/zeros.css    |  12 +++
 .../t5/webresources/css/yui/zeros.css.min          |   1 +
 133 files changed, 1305 insertions(+), 12 deletions(-)

diff --git a/tapestry-webresources/NOTICE.txt b/tapestry-webresources/NOTICE.txt
index a5155e9f1..78f38380f 100644
--- a/tapestry-webresources/NOTICE.txt
+++ b/tapestry-webresources/NOTICE.txt
@@ -1,5 +1,5 @@
 This product includes software developed by
 The Apache Software Foundation (http://www.apache.org/).
 
-This product includes source from the YUI Compressor library, available under 
a BSD License.
+This product includes source and test files from the YUI Compressor library, 
available under a BSD License.
 http://yui.github.io/yuicompressor/
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
 
b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
index bea89d6f6..31de21c38 100644
--- 
a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
+++ 
b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/CssCompressor.java
@@ -18,6 +18,13 @@ import java.util.regex.Pattern;
 import java.util.regex.Matcher;
 import java.util.ArrayList;
 
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import java.util.ArrayList;
+
 public class CssCompressor {
 
     private StringBuffer srcsb = new StringBuffer();
@@ -138,8 +145,7 @@ public class CssCompressor {
         css = sb.toString();
 
 
-        css = this.preserveToken(css, "url", 
"(?i)url\\(\\s*([\"']?)data\\:\\s*image/svg\\+xml", false, preservedTokens);
-        css = this.preserveToken(css, "url", 
"(?i)url\\(\\s*([\"']?)data\\:\\s*(?!(image/svg\\+xml))", true, 
preservedTokens);
+        css = this.preserveToken(css, "url", "(?i)url\\(\\s*([\"']?)data\\:", 
true, preservedTokens);
         css = this.preserveToken(css, "calc",  "(?i)calc\\(\\s*([\"']?)", 
false, preservedTokens);
         css = this.preserveToken(css, 
"progid:DXImageTransform.Microsoft.Matrix",  
"(?i)progid:DXImageTransform.Microsoft.Matrix\\s*([\"']?)", false, 
preservedTokens);
 
@@ -329,14 +335,30 @@ public class CssCompressor {
         // remove unnecessary semicolons
         css = css.replaceAll(";+}", "}");
 
-        // Replace 0(px,em,%) with 0.
+        // Replace 0(px,em) with 0. (don't replace seconds are they are needed 
for transitions to be valid)
         String oldCss;
-        p = Pattern.compile("(?i)(^|: ?)((?:[0-9a-z-.]+ 
)*?)?(?:0?\\.)?0(?:px|em|%|in|cm|mm|pc|pt|ex|deg|g?rad|m?s|k?hz)");
+        p = Pattern.compile("(?i)(^|: ?)((?:[0-9a-z-.]+ 
)*?)?(?:0?\\.)?0(?:px|em|in|cm|mm|pc|pt|ex|deg|g?rad|k?hz)");
         do {
           oldCss = css;
           m = p.matcher(css);
           css = m.replaceAll("$1$20");
         } while (!(css.equals(oldCss)));
+        
+        // We do the same with % but don't replace the 0% in keyframes
+        p = Pattern.compile("(?i)(: ?)((?:[0-9a-z-.]+ )*?)?(?:0?\\.)?0(?:%)");
+        do {
+          oldCss = css;
+          m = p.matcher(css);
+          css = m.replaceAll("$1$20");
+        } while (!(css.equals(oldCss)));
+        
+        //Replace the keyframe 100% step with 'to' which is shorter
+        p = Pattern.compile("(?i)(^|,|\\{) ?(?:100% ?\\{)");
+        do {
+          oldCss = css;
+          m = p.matcher(css);
+          css = m.replaceAll("$1to{");
+        } while (!(css.equals(oldCss)));
 
         // Replace 0(px,em,%) with 0 inside groups (e.g. 
-MOZ-RADIAL-GRADIENT(CENTER 45DEG, CIRCLE CLOSEST-SIDE, ORANGE 0%, RED 100%))
         p = Pattern.compile("(?i)\\( ?((?:[0-9a-z-.]+[ 
,])*)?(?:0?\\.)?0(?:px|em|%|in|cm|mm|pc|pt|ex|deg|g?rad|m?s|k?hz)");
@@ -347,12 +369,15 @@ public class CssCompressor {
         } while (!(css.equals(oldCss)));
 
         // Replace x.0(px,em,%) with x(px,em,%).
-        css = 
css.replaceAll("([0-9])\\.0(px|em|%|in|cm|mm|pc|pt|ex|deg|g?rad|m?s|k?hz| |;)", 
"$1$2");
+        css = 
css.replaceAll("([0-9])\\.0(px|em|%|in|cm|mm|pc|pt|ex|deg|m?s|g?rad|k?hz| |;)", 
"$1$2");
+
+        // Replace .0(px,em,%) with 0(px,em,%).
+        css = css.replaceAll("([ 
|:])\\.0(px|em|%|in|cm|mm|pc|pt|ex|deg|m?s|g?rad|k?hz| |;)", "$1\\0$2");
 
         // Replace 0 0 0 0; with 0.
         css = css.replaceAll(":0 0 0 0(;|})", ":0$1");
         css = css.replaceAll(":0 0 0(;|})", ":0$1");
-        css = css.replaceAll("(?<!flex):0 0(;|})", ":0$1");
+        css = css.replaceAll("(?<!flex):0 0(;|\\})", ":0$1");
 
 
         // Replace background-position:0; with background-position:0 0;
@@ -380,7 +405,7 @@ public class CssCompressor {
             for (i = 0; i < rgbcolors.length; i++) {
                 int val = Integer.parseInt(rgbcolors[i]);
                 if (val < 16) {
-                    hexcolor.append('0');
+                    hexcolor.append("0");
                 }
 
                 // If someone passes an RGB value that's too big to express in 
two characters, round down.
diff --git 
a/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
 
b/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
index b136a2433..3612a621a 100644
--- 
a/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
+++ 
b/tapestry-webresources/src/test/groovy/t5/webresources/tests/CssCompressorSpec.groovy
@@ -1,12 +1,8 @@
 package t5.webresources.tests
 
-import geb.spock.GebReportingSpec
-
 import org.apache.tapestry5.internal.webresources.CssCompressor
-import org.apache.tapestry5.test.JettyRunner
 
 import spock.lang.Issue;
-import spock.lang.Shared
 import spock.lang.Specification;
 
 class CssCompressorSpec extends Specification {
@@ -26,4 +22,90 @@ class CssCompressorSpec extends Specification {
         then:
         writer.toString() == '''@keyframes 
anim{0%{opacity:0}100%{opacity:1}}'''
     }
+
+    def "yui compressor test '#rawFile'"() {
+        given:
+        def is = 
CssCompressorSpec.class.getResourceAsStream("/t5/webresources/css/yui/$rawFile")
+        def reader = new InputStreamReader(is)
+        def compressor = new CssCompressor(reader)
+        def expected = 
CssCompressorSpec.class.getResourceAsStream("/t5/webresources/css/yui/${rawFile}.min").text.strip()
+        
+        def writer = new StringWriter()
+        
+        when:
+        def result = compressor.compress(writer, -1)
+        
+        then:
+        writer.toString() == expected
+        
+        
+        where:
+        rawFile << [
+        "background-position.css",
+        "border-none.css",
+        "box-model-hack.css",
+        "bug2527974.css",
+        "bug2527991.css",
+        "bug2527998.css",
+        "bug2528034.css",
+        "bug-flex.css",
+        "bug-nested-pseudoclass.css",
+        "bug-preservetoken-calc.css",
+        "charset-media.css",
+        "color.css",
+        "color-keyword.css",
+        "color-simple.css",
+        "comment.css",
+        "concat-charset.css",
+        "dataurl-base64-doublequotes.css",
+        "dataurl-base64-eof.css",
+        "dataurl-base64-linebreakindata.css",
+        "dataurl-base64-noquotes.css",
+        "dataurl-base64-singlequotes.css",
+        "dataurl-base64-twourls.css",
+        "dataurl-dbquote-font.css",
+        "dataurl-nonbase64-doublequotes.css",
+        "dataurl-nonbase64-noquotes.css",
+        "dataurl-nonbase64-singlequotes.css",
+        "dataurl-noquote-multiline-font.css",
+        "dataurl-realdata-doublequotes.css",
+        "dataurl-realdata-noquotes.css",
+        "dataurl-realdata-singlequotes.css",
+        "dataurl-realdata-yuiapp.css",
+        "dataurl-singlequote-font.css",
+        "decimals.css",
+        "dollar-header.css",
+        "font-face.css",
+        // "hsla-issue81.css.FAIL",
+        "ie5mac.css",
+        "ie-backslash9-hack.css",
+        "issue151.css",
+        // "issue172.css.FAIL",
+        "issue180.css",
+        "issue205.css",
+        "issue221.css",
+        "issue222.css",
+        "issue-59.css",
+        "lowercasing.css",
+        "media-empty-class.css",
+        "media-multi.css",
+        "media-test.css",
+        "old-ie-filter-matrix.css",
+        "opacity-filter.css",
+        "opera-pixel-ratio.css",
+        "pointzeros.css",
+        "preserve-case.css",
+        "preserve-important.css",
+        "preserve-new-line.css",
+        "preserve-strings.css",
+        "pseudo.css",
+        "pseudo-first.css",
+        // "rgb-issue81.css.FAIL",
+        "special-comments.css",
+        "star-underscore-hacks.css",
+        "string-in-comment.css",
+        "webkit-transform.css",
+        "zeros.css"
+        ]
+    }
 }
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/background-position.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/background-position.css
new file mode 100644
index 000000000..4cdff825c
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/background-position.css
@@ -0,0 +1,2 @@
+a {background-position: 0 0 0 0;}
+b {BACKGROUND-POSITION: 0 0;}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/background-position.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/background-position.css.min
new file mode 100644
index 000000000..0895e1af1
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/background-position.css.min
@@ -0,0 +1 @@
+a{background-position:0 0}b{background-position:0 0}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/border-none.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/border-none.css
new file mode 100644
index 000000000..03d4b6760
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/border-none.css
@@ -0,0 +1,10 @@
+a {
+    border: none;
+}
+b {BACKGROUND:none}
+s {
+    border-top: none;
+    border-right: none;
+    border-bottom:none;
+    border-left: none
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/border-none.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/border-none.css.min
new file mode 100644
index 000000000..1018b4ca9
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/border-none.css.min
@@ -0,0 +1 @@
+a{border:0}b{background:0}s{border-top:0;border-right:0;border-bottom:0;border-left:0}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/box-model-hack.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/box-model-hack.css
new file mode 100644
index 000000000..c00e32fb0
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/box-model-hack.css
@@ -0,0 +1,9 @@
+#elem { 
+ width: 100px; 
+ voice-family: "\"}\""; 
+ voice-family:inherit;
+ width: 200px;
+}
+html>body #elem {
+ width: 200px;
+} 
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/box-model-hack.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/box-model-hack.css.min
new file mode 100644
index 000000000..33401793e
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/box-model-hack.css.min
@@ -0,0 +1 @@
+#elem{width:100px;voice-family:"\"}\"";voice-family:inherit;width:200px}html>body
 #elem{width:200px}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-flex.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-flex.css
new file mode 100644
index 000000000..ff42b39d6
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-flex.css
@@ -0,0 +1,3 @@
+.flex-text{
+    flex:0 0;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-flex.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-flex.css.min
new file mode 100644
index 000000000..11d99a6e9
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-flex.css.min
@@ -0,0 +1 @@
+.flex-text{flex:0 0}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-nested-pseudoclass.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-nested-pseudoclass.css
new file mode 100644
index 000000000..b0953accc
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-nested-pseudoclass.css
@@ -0,0 +1,3 @@
+:first-child  :last-child{
+    background-color:red
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-nested-pseudoclass.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-nested-pseudoclass.css.min
new file mode 100644
index 000000000..594c952c2
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-nested-pseudoclass.css.min
@@ -0,0 +1 @@
+:first-child :last-child{background-color:red}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-preservetoken-calc.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-preservetoken-calc.css
new file mode 100644
index 000000000..6d1ba0bb5
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-preservetoken-calc.css
@@ -0,0 +1,8 @@
+/* test for not breaking class names with preserved tokens */
+.calculate-classname-test {
+    width: calc(10% + 100px);
+}
+
+.background-url-test {
+    content: '/foo/bar';
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-preservetoken-calc.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-preservetoken-calc.css.min
new file mode 100644
index 000000000..3eb589143
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug-preservetoken-calc.css.min
@@ -0,0 +1 @@
+.calculate-classname-test{width:calc(10% + 
100px)}.background-url-test{content:'/foo/bar'}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527974.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527974.css
new file mode 100644
index 000000000..b3bc2c893
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527974.css
@@ -0,0 +1,10 @@
+/*     this file contains no css, it exists purely to put the revision number 
into the 
+       combined css before uploading it to SiteManager. The exclaimation at 
the start
+       of the comment informs yuicompressor not to strip the comment out */
+ 
+/*! $LastChangedRevision: 81 $ $LastChangedDate: 2009-05-27 17:41:02 +0100 
(Wed, 27 May 2009) $ */
+ 
+body {
+    yo: cats;
+}
+ul[id$=foo] label:hover {yo: yo;}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527974.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527974.css.min
new file mode 100644
index 000000000..00cc00738
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527974.css.min
@@ -0,0 +1 @@
+/*! $LastChangedRevision: 81 $ $LastChangedDate: 2009-05-27 17:41:02 +0100 
(Wed, 27 May 2009) $ */body{yo:cats}ul[id$=foo] label:hover{yo:yo}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527991.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527991.css
new file mode 100644
index 000000000..d4c80ffea
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527991.css
@@ -0,0 +1,19 @@
+@media screen and/*!YUI-Compresser */(-webkit-min-device-pixel-ratio:0) {
+  a{
+    b: 1;
+  }
+}
+
+
+@media screen and/*! */ /*! */(-webkit-min-device-pixel-ratio:0) {
+  a{
+    b: 1;
+  }
+}
+
+
+@media -webkit-min-device-pixel-ratio:0 {
+  a{
+    b: 1;
+  }
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527991.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527991.css.min
new file mode 100644
index 000000000..965755a23
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527991.css.min
@@ -0,0 +1 @@
+@media screen and/*!YUI-Compresser 
*/(-webkit-min-device-pixel-ratio:0){a{b:1}}@media screen and/*! *//*! 
*/(-webkit-min-device-pixel-ratio:0){a{b:1}}@media 
-webkit-min-device-pixel-ratio:0{a{b:1}}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527998.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527998.css
new file mode 100644
index 000000000..9c6c00e81
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527998.css
@@ -0,0 +1,4 @@
+/*! special */
+body {
+
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527998.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527998.css.min
new file mode 100644
index 000000000..7fabf8a7c
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2527998.css.min
@@ -0,0 +1 @@
+/*! special */
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2528034.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2528034.css
new file mode 100644
index 000000000..c315cb111
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2528034.css
@@ -0,0 +1,5 @@
+a[href$="/test/"] span:first-child { b:1; }
+a[href$="/test/"] span:first-child { }
+
+
+
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2528034.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2528034.css.min
new file mode 100644
index 000000000..154377774
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/bug2528034.css.min
@@ -0,0 +1 @@
+a[href$="/test/"] span:first-child{b:1}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/charset-media.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/charset-media.css
new file mode 100644
index 000000000..bd02f384e
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/charset-media.css
@@ -0,0 +1,9 @@
+/* re: 2495387 */
+@charset 'utf-8';
+@media all {
+body {
+}
+body {
+background-color: gold;
+}
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/charset-media.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/charset-media.css.min
new file mode 100644
index 000000000..dcaf49dbb
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/charset-media.css.min
@@ -0,0 +1 @@
+@charset 'utf-8';@media all{body{background-color:gold}}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-keyword.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-keyword.css
new file mode 100644
index 000000000..0051ea74b
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-keyword.css
@@ -0,0 +1 @@
+.c1{color:#FF0000}.c2{color:#000080}.c3{color:#808080}.c4{color:#808000}.c5{color:#800080}.c6{color:#C0C0C0}.c7{color:#008080}.c8{color:#FFA500}.c9{color:#800000}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-keyword.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-keyword.css.min
new file mode 100644
index 000000000..c98f6622e
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-keyword.css.min
@@ -0,0 +1 @@
+.c1{color:red}.c2{color:navy}.c3{color:gray}.c4{color:olive}.c5{color:purple}.c6{color:silver}.c7{color:teal}.c8{color:orange}.c9{color:maroon}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-simple.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-simple.css
new file mode 100644
index 000000000..bb33ec38c
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-simple.css
@@ -0,0 +1,8 @@
+.foo, #AABBCC {
+  background-color:#aabbcc;
+  border-color:#Ee66aA #ABCDEF #FeAb2C;
+  filter:chroma(color = #FFFFFF );
+  filter:chroma(color="#AABBCC");
+  filter:chroma(color='#BBDDEE');
+  color:#112233
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-simple.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-simple.css.min
new file mode 100644
index 000000000..1e39e2351
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color-simple.css.min
@@ -0,0 +1 @@
+.foo,#AABBCC{background-color:#abc;border-color:#e6a #abcdef 
#feab2c;filter:chroma(color = 
#FFFFFF);filter:chroma(color="#AABBCC");filter:chroma(color='#BBDDEE');color:#123}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color.css
new file mode 100644
index 000000000..0bec7b2b1
--- /dev/null
+++ b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color.css
@@ -0,0 +1,48 @@
+.color {
+  me: rgb(123, 123, 123);
+  test-overflow: rgb(1000, 500, 300);
+  impressed: #FfEedD;
+  again: #ABCDEF;
+  andagain:#aa66cc;
+  background-color:#aa66ccc;
+  filter: chroma(color="#FFFFFF");
+  background: none repeat scroll 0 0 rgb(255, 0,0);
+  alpha: rgba(1, 2, 3, 4);
+  border-color: RGBA(1,2,3,4); /* tests uppercase RGBA() */
+  color:#1122aa
+}
+
+#AABBCC {
+  background-color:#ffee11;
+  filter: chroma(color = #FFFFFF );
+  color:#441122;
+  foo:#00fF11 #ABC #AABbCc #123344;
+  border-color:#aa66ccC
+}
+
+.foo #AABBCC {
+  background-color:#fFEe11;
+  color:#441122;
+  border-color:#AbC;
+  filter: chroma(color= #FFFFFF)
+}
+
+.bar, #AABBCC {
+  background-color:#FFee11;
+  border-color:#00fF11 #ABCDEF;
+  filter: chroma(color=#11FFFFFF);
+  color:#441122;
+}
+
+.foo, #AABBCC.foobar {
+  background-color:#ffee11;
+  border-color:#00fF11 #ABCDEF #AABbCc;
+  color:#441122;
+}
+
+@media screen {
+    .bar, #AABBCC {
+      background-color:#ffEE11;
+      color:#441122
+    }
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color.css.min
new file mode 100644
index 000000000..bea8857a3
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/color.css.min
@@ -0,0 +1 @@
+.color{me:#7b7b7b;test-overflow:#fff;impressed:#fed;again:#abcdef;andagain:#a6c;background-color:#aa66ccc;filter:chroma(color="#FFFFFF");background:none
 repeat scroll 0 0 
red;alpha:rgba(1,2,3,4);border-color:rgba(1,2,3,4);color:#12a}#AABBCC{background-color:#fe1;filter:chroma(color
 = #FFFFFF);color:#412;foo:#0f1 #ABC #abc #123344;border-color:#aa66ccC}.foo 
#AABBCC{background-color:#fe1;color:#412;border-color:#AbC;filter:chroma(color= 
#FFFFFF)}.bar,#AABBCC{background-color:#fe1;border-co [...]
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/comment.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/comment.css
new file mode 100644
index 000000000..7073b9ea9
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/comment.css
@@ -0,0 +1,3 @@
+html >/**/ body p {
+    color: blue; 
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/comment.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/comment.css.min
new file mode 100644
index 000000000..b28037167
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/comment.css.min
@@ -0,0 +1 @@
+html>/**/body p{color:blue}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/concat-charset.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/concat-charset.css
new file mode 100644
index 000000000..96964ea90
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/concat-charset.css
@@ -0,0 +1,15 @@
+/* This is invalid CSS, but frequently happens as a result of concatenation. */
+@CHARSET "utf-8";
+#foo {
+       border-width:1px;
+}
+/*
+Note that this is erroneous!
+The actual CSS file can only have a single charset.
+However, this is the job of the author/application.
+The compressor should not get involved.
+*/
+@charset "another one";
+#bar {
+       border-width:10px;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/concat-charset.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/concat-charset.css.min
new file mode 100644
index 000000000..73e8d3b52
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/concat-charset.css.min
@@ -0,0 +1 @@
+@charset "utf-8";#foo{border-width:1px}#bar{border-width:10px}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-doublequotes.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-doublequotes.css
new file mode 100644
index 000000000..49a131580
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-doublequotes.css
@@ -0,0 +1,23 @@
+.yui3-skin-night .yui3-dial-ring-vml,
+.yui3-skin-night .yui3-dial-center-button-vml,
+.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night .yui3-dial-marker-vml,
+.yui3-skin-night .yui3-dial-handle-vml {
+    background: none;
+    opacity:1;
+}
+
+div.base64-doublequotes {
+    width:100px;
+    height:100px;
+    background-image:url(   
"data:image/jpeg;base64,%2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMiBNYWNpbnRvc2gAMjAwODowNzoxOSAxNDo1ODowNQAAA6ABAAMAAAAB%2F%2F8AAKACAAQAAAABAAABwqADAAQAAAABAAABRQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABaTAAAAAAAAAEgAAA
 [...]
+    background-position:center center;
+    border:1px solid #00aa00;
+}
+
+.yui-skin-sam .yui-h-slider {
+    background: url(bg-h.gif) no-repeat 5px 0;
+    height: 28px;
+    width: 228px;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-doublequotes.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-doublequotes.css.min
new file mode 100644
index 000000000..223d27a52
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-doublequotes.css.min
@@ -0,0 +1 @@
+.yui3-skin-night .yui3-dial-ring-vml,.yui3-skin-night 
.yui3-dial-center-button-vml,.yui3-skin-night .yui3-dial-marker 
v\:oval.yui3-dial-marker-max-min,.yui3-skin-night 
v\:oval.yui3-dial-marker-max-min,.yui3-skin-night 
.yui3-dial-marker-vml,.yui3-skin-night 
.yui3-dial-handle-vml{background:0;opacity:1}div.base64-doublequotes{width:100px;height:100px;background-image:url("data:image/jpeg;base64,%2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAA
 [...]
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-eof.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-eof.css
new file mode 100644
index 000000000..a50ad77f7
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-eof.css
@@ -0,0 +1,10 @@
+div.base64-singlequotes {
+    width:100px;
+    height:100px;
+    
background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t%2FAAAACXBIWXMAAA3WAAAN1gGQb3mcAAAFrUlEQVRYw%2B2Xz28kRxXHP%2B9Vdc8vj2fG9uIkm2yUeFGEhNCKQwBpj1yRUBAnpJU4ceZP4MxfkBxy2GO45bQXuEGQohUKigQ%2BsBBE1sbYXv8Yz%2FRMd9fjUN09PV5nFZA4kZZa79W3quu9er%2FqNfy%2FPwJgZty%2Ffz%2FZ29vrpmmqhlWTgmFg1UpbfWhYhG6Yq2cFi%2FNrj9nJyWnx%2BPHjeafbMTEzPvjVB9%2B6d%2B%2FezweDwV1BfHubivkC3lZya%2F4m7Np8UZYXhweHH7733rvvC0Kyv7%2F%2F7p07d34qIjyvr63RNb4l4CbsRUrNrq
 [...]
+    background-position:center center;
+    border:1px solid #00aa00;
+}
+div.otherdataurl {
+    
background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFBQ0WDWwqwjwAAANMSURBVEjHrdZbaFxVFAbgb2aSTG6GTi6mVIwxNxF9qFI0RQnFUqiYamutVutLa2t9EY0oPggFoYgPRR%2FaghYviA%2BiIAYvmBJKoYWiiBCigVTT1FisbUhrEtNkJpc5PuQkjGEmJqkLFmdz2Hv%2Fa%2F3rX3tvlm95oS%2FLokuZtIpbdvAs7KFtL22wjb3V1C41upy2ke1DXC2k%2FBjv1HHXDrbkEamg7lX2P8QTldQ2UtfOB8uiJsHNiB%2Fik0GmO%2BgZIxgnGA59nGCMoJPeQaYP047iBDXZEohkAYof4%2FNyKlZRdR%2F1ASZC
 [...]
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-eof.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-eof.css.min
new file mode 100644
index 000000000..1f6d2e2db
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-eof.css.min
@@ -0,0 +1 @@
+div.base64-singlequotes{width:100px;height:100px;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t%2FAAAACXBIWXMAAA3WAAAN1gGQb3mcAAAFrUlEQVRYw%2B2Xz28kRxXHP%2B9Vdc8vj2fG9uIkm2yUeFGEhNCKQwBpj1yRUBAnpJU4ceZP4MxfkBxy2GO45bQXuEGQohUKigQ%2BsBBE1sbYXv8Yz%2FRMd9fjUN09PV5nFZA4kZZa79W3quu9er%2FqNfy%2FPwJgZty%2Ffz%2FZ29vrpmmqhlWTgmFg1UpbfWhYhG6Yq2cFi%2FNrj9nJyWnx%2BPHjeafbMTEzPvjVB9%2B6d%2B%2FezweDwV1BfHubivkC3lZya%2F4m7Np8UZYXhweHH7733
 [...]
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-linebreakindata.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-linebreakindata.css
new file mode 100644
index 000000000..c3f686fa7
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-linebreakindata.css
@@ -0,0 +1,34 @@
+.yui3-skin-night .yui3-dial-ring-vml,
+.yui3-skin-night .yui3-dial-center-button-vml,
+.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night .yui3-dial-marker-vml,
+.yui3-skin-night .yui3-dial-handle-vml {
+    background: none;
+    opacity:1;
+}
+
+div.base64-doublequotes {
+    width:100px;
+    height:100px;
+    background-image:url(   
"data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFBQ0WDWwq
+                                                    
wjwAAANMSURBVEjHrdZbaFxVFAbgb2aSTG6GTi6mVIwxNxF9qFI0RQnFUqiYamutVutLa2t9EY0oPggFoYgPRR%2FaghYviA%2BiIAYvmBJKoYWi
+                                                    
iBCigVTT1FisbUhrEtNkJpc5PuQkjGEmJqkLFmdz2Hv%2Fa%2F3rX3tvlm95oS%2FLokuZtIpbdvAs7KFtL22wjb3V1C41upy2ke1DXC2k%2FBjv
+                                                    
1HHXDrbkEamg7lX2P8QTldQ2UtfOB8uiJsHNiB%2Fik0GmO%2BgZIxgnGA59nGCMoJPeQaYP047iBDXZEohkAYof4%2FNyKlZRdR%2F1ASZCnoOM
+                                                    
hWkUheMz9F1laJSRZ3gEqVw1ipZQjcoBRrbT3Ez9OJLhZkHG5CD8l8Q47qXhMZp%2FYxhVFaxBLBtQejdtA%2FTtZPMIJnOknI2WSYzicTYN8OtT
+                                                    
vICZbECxdr5Pkm6iPL0C3c%2BgkfIJgi%2F4LnP%2FudRKD3K4jf1VJGLEAiuz6VnA4AGam1h7gpNIzSFe66D3NurLKVhJNkHo07N9V9BE3XHOYm
+                                                    
yeuirqG1l9mdHgOkDSGd8%2FGWtg9Roa56lrYdchDtRQPLlCkEywKVRScDfrurnwC2diiPTRe47iVtbnLZDxckGCkKYpPM%2FRr3kbyRhsYOtRDi
+                                                    
QonFoBSHrBOI18rOeOPvr76YrCeUbf5fTvjOddJ0gQ1uMPku9z6hwjiEZhgOMn%2BaaUeHQJIOkMD7KMA5QQP01HP18hPbfvDTvZPETqb2YiS1BW
+                                                    
rozM6jk9SPJJHkZZ5qFagtoaNnbyZg1FE4sUPRdlAQpwkdSjvDZAJ%2FoxNt%2Bw6NlGbQVFl5iKLKKsXCAwyFQZ8S3ciu65ho1lBJ5%2FkZk3OB
+                                                    
GjpJWGmVCmsjTkQvA8JHCUU7s5eImevzg%2Fd7BGFhzCARIf8uVN3J5Heh1VM%2BHlko2y%2FHBxF0NJolfo38eDuJJxbf0ro%2FnMurh8hM%2Fu
+                                                    
pH4tdT8zciOFsTC8SAgQoJfRxKzCuvfw0k%2F8MDx7xqUyez%2BS48ESIN7Ky6OUpfAtrxzhx03UR4m0c%2FZF7tnKW2mma4l9yuthTSIZIvxPi6
+                                                    
EcpZW0PM0xtOzjo%2Bf4GPfv4r1qNqAUFYs9diJLBC1CIa7FZx8fUlwI22LuNv%2FfLbKMAOftH9TwRXg6%2FiCDAAAAAElFTkSuQmCC"
 );
+    background-position:center center;
+    border:1px solid #00aa00;
+}
+
+.yui-skin-sam .yui-h-slider {
+    background: url(bg-h.gif) no-repeat 5px 0;
+    height: 28px;
+    width: 228px;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-linebreakindata.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-linebreakindata.css.min
new file mode 100644
index 000000000..1ac0e17e5
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-linebreakindata.css.min
@@ -0,0 +1 @@
+.yui3-skin-night .yui3-dial-ring-vml,.yui3-skin-night 
.yui3-dial-center-button-vml,.yui3-skin-night .yui3-dial-marker 
v\:oval.yui3-dial-marker-max-min,.yui3-skin-night 
v\:oval.yui3-dial-marker-max-min,.yui3-skin-night 
.yui3-dial-marker-vml,.yui3-skin-night 
.yui3-dial-handle-vml{background:0;opacity:1}div.base64-doublequotes{width:100px;height:100px;background-image:url("data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0
 [...]
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-noquotes.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-noquotes.css
new file mode 100644
index 000000000..71b0962da
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-noquotes.css
@@ -0,0 +1,26 @@
+.yui3-skin-night .yui3-dial-ring-vml,
+.yui3-skin-night .yui3-dial-center-button-vml,
+.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night .yui3-dial-marker-vml,
+.yui3-skin-night .yui3-dial-handle-vml {
+    background: none;
+    opacity:1;
+}
+
+div.base64-noquotes {
+    width:100px;
+    height:100px;
+    background-image:url(   
+        data:image/jpeg;base64,
+        
%2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMiBNYWNpbnRvc2gAMjAwODowNzoxOSAxNDo1ODowNQAAA6ABAAMAAAAB%2F%2F8AAKACAAQAAAABAAABwqADAAQAAAABAAABRQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABaTAAAAAAAAAEgAAAABAAAASAAAAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP
 [...]
+    );
+    background-position:center center;
+    border:1px solid #00aa00;
+}
+
+.yui-skin-sam .yui-h-slider {
+    background: url(bg-h.gif) no-repeat 5px 0;
+    height: 28px;
+    width: 228px;
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-noquotes.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-noquotes.css.min
new file mode 100644
index 000000000..f57be99fc
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-noquotes.css.min
@@ -0,0 +1 @@
+.yui3-skin-night .yui3-dial-ring-vml,.yui3-skin-night 
.yui3-dial-center-button-vml,.yui3-skin-night .yui3-dial-marker 
v\:oval.yui3-dial-marker-max-min,.yui3-skin-night 
v\:oval.yui3-dial-marker-max-min,.yui3-skin-night 
.yui3-dial-marker-vml,.yui3-skin-night 
.yui3-dial-handle-vml{background:0;opacity:1}div.base64-noquotes{width:100px;height:100px;background-image:url(data:image/jpeg;base64,%2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAA
 [...]
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-singlequotes.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-singlequotes.css
new file mode 100644
index 000000000..1ec9f6759
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-singlequotes.css
@@ -0,0 +1,23 @@
+.yui3-skin-night .yui3-dial-ring-vml,
+.yui3-skin-night .yui3-dial-center-button-vml,
+.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night .yui3-dial-marker-vml,
+.yui3-skin-night .yui3-dial-handle-vml {
+    background: none;
+    opacity:1;
+}
+
+div.base64-singlequotes {
+    width:100px;
+    height:100px;
+    
background-image:url('data:image/jpeg;base64,%2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMiBNYWNpbnRvc2gAMjAwODowNzoxOSAxNDo1ODowNQAAA6ABAAMAAAAB%2F%2F8AAKACAAQAAAABAAABwqADAAQAAAABAAABRQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABaTAAAAAAAAAEgAAAABA
 [...]
+    background-position:center center;
+    border:1px solid #00aa00;
+}
+
+.yui-skin-sam .yui-h-slider {
+    background: url(bg-h.gif) no-repeat 5px 0;
+    height: 28px;
+    width: 228px;
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-singlequotes.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-singlequotes.css.min
new file mode 100644
index 000000000..8f3398d2b
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-singlequotes.css.min
@@ -0,0 +1 @@
+.yui3-skin-night .yui3-dial-ring-vml,.yui3-skin-night 
.yui3-dial-center-button-vml,.yui3-skin-night .yui3-dial-marker 
v\:oval.yui3-dial-marker-max-min,.yui3-skin-night 
v\:oval.yui3-dial-marker-max-min,.yui3-skin-night 
.yui3-dial-marker-vml,.yui3-skin-night 
.yui3-dial-handle-vml{background:0;opacity:1}div.base64-singlequotes{width:100px;height:100px;background-image:url('data:image/jpeg;base64,%2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAA
 [...]
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-twourls.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-twourls.css
new file mode 100644
index 000000000..222342f19
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-twourls.css
@@ -0,0 +1,27 @@
+.yui3-skin-night .yui3-dial-ring-vml,
+.yui3-skin-night .yui3-dial-center-button-vml,
+.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night .yui3-dial-marker-vml,
+.yui3-skin-night .yui3-dial-handle-vml {
+    background: none;
+    opacity:1;
+}
+
+div.base64-singlequotes {
+    width:100px;
+    height:100px;
+    
background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t%2FAAAACXBIWXMAAA3WAAAN1gGQb3mcAAAFrUlEQVRYw%2B2Xz28kRxXHP%2B9Vdc8vj2fG9uIkm2yUeFGEhNCKQwBpj1yRUBAnpJU4ceZP4MxfkBxy2GO45bQXuEGQohUKigQ%2BsBBE1sbYXv8Yz%2FRMd9fjUN09PV5nFZA4kZZa79W3quu9er%2FqNfy%2FPwJgZty%2Ffz%2FZ29vrpmmqhlWTgmFg1UpbfWhYhG6Yq2cFi%2FNrj9nJyWnx%2BPHjeafbMTEzPvjVB9%2B6d%2B%2FezweDwV1BfHubivkC3lZya%2F4m7Np8UZYXhweHH7733rvvC0Kyv7%2F%2F7p07d34qIjyvr63RNb4l4CbsRUrNrq
 [...]
+    background-position:center center;
+    border:1px solid #00aa00;
+}
+
+div.otherdataurl {
+    
background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFBQ0WDWwqwjwAAANMSURBVEjHrdZbaFxVFAbgb2aSTG6GTi6mVIwxNxF9qFI0RQnFUqiYamutVutLa2t9EY0oPggFoYgPRR%2FaghYviA%2BiIAYvmBJKoYWiiBCigVTT1FisbUhrEtNkJpc5PuQkjGEmJqkLFmdz2Hv%2Fa%2F3rX3tvlm95oS%2FLokuZtIpbdvAs7KFtL22wjb3V1C41upy2ke1DXC2k%2FBjv1HHXDrbkEamg7lX2P8QTldQ2UtfOB8uiJsHNiB%2Fik0GmO%2BgZIxgnGA59nGCMoJPeQaYP047iBDXZEohkAYof4%2FNyKlZRdR%2F1ASZC
 [...]
+}
+
+.yui-skin-sam .yui-h-slider {
+    background: url(bg-h.gif) no-repeat 5px 0;
+    height: 28px;
+    width: 228px;
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-twourls.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-twourls.css.min
new file mode 100644
index 000000000..d919bca2b
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-base64-twourls.css.min
@@ -0,0 +1 @@
+.yui3-skin-night .yui3-dial-ring-vml,.yui3-skin-night 
.yui3-dial-center-button-vml,.yui3-skin-night .yui3-dial-marker 
v\:oval.yui3-dial-marker-max-min,.yui3-skin-night 
v\:oval.yui3-dial-marker-max-min,.yui3-skin-night 
.yui3-dial-marker-vml,.yui3-skin-night 
.yui3-dial-handle-vml{background:0;opacity:1}div.base64-singlequotes{width:100px;height:100px;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t%2FAAAACXBIWXMAAA3WAAAN1gGQb3m
 [...]
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-dbquote-font.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-dbquote-font.css
new file mode 100644
index 000000000..f9799d764
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-dbquote-font.css
@@ -0,0 +1,30 @@
+/*csslint fontfamily: true*/
+
+/**
+ * Foo
+ */
+
+.y-ff-1 {
+    font-family:"Foo Bar",Helvetica,Arial;
+    text-rendering: optimizeLegibility;
+}
+
+.ua-op .y-ff-1 {
+    /* Some Comment */
+    font-family:Helvetica,Arial;
+}
+
+/*
+Foo
+
+Bar
+*/
+
+@font-face {
+       font-family: "Foo Bar";
+    src: url("data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA") 
format("truetype"),
+            url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr";) 
format("svg");
+       font-weight: normal;
+       font-style: normal;
+}
+
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-dbquote-font.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-dbquote-font.css.min
new file mode 100644
index 000000000..7c4c0edf0
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-dbquote-font.css.min
@@ -0,0 +1,5 @@
+.y-ff-1{font-family:"Foo 
Bar",Helvetica,Arial;text-rendering:optimizeLegibility}.ua-op 
.y-ff-1{font-family:Helvetica,Arial}@font-face{font-family:"Foo 
Bar";src:url("data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA") 
format("truetype"),url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr";)
 format("svg");font-weight:normal;font-style:normal}
+
+
+
+
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-doublequotes.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-doublequotes.css
new file mode 100644
index 000000000..0d45c9458
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-doublequotes.css
@@ -0,0 +1,13 @@
+div.nonbase64-doublequotes {
+    width:100px;
+    height:100px;
+    background-image:url(
+        
"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0'''%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh)))%E1%E1%E1%03%03%03%CB%CB%CB%EB%EB%EB%FD%FD%FD%A3%A3%A3(((%04%04%04%CA
 [...]
+    );
+    border:1px solid #00aa00;
+}
+
+span.othercss {
+    font-family:"Times New Roman";
+    font-weight:inherit;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-doublequotes.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-doublequotes.css.min
new file mode 100644
index 000000000..1acc41dc2
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-doublequotes.css.min
@@ -0,0 +1 @@
+div.nonbase64-doublequotes{width:100px;height:100px;background-image:url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0'''%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh)))%E1%
 [...]
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-noquotes.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-noquotes.css
new file mode 100644
index 000000000..b4bc9b242
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-noquotes.css
@@ -0,0 +1,11 @@
+div.nonbase64-noquotes {
+    width:100px;
+    height:100px;
+    background-image:url( 
data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0\'\'\'%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh\)\)\)%E1%E1%E1%03%03%03%CB%CB%CB%EB%EB%EB%FD%FD%FD%
 [...]
+    border:1px solid red;
+}
+
+span.othercss {
+    font-family:"Times New Roman";
+    font-weight:inherit;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-noquotes.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-noquotes.css.min
new file mode 100644
index 000000000..8f4bf08d6
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-noquotes.css.min
@@ -0,0 +1 @@
+div.nonbase64-noquotes{width:100px;height:100px;background-image:url(data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0\'\'\'%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh\)\)\)%E1
 [...]
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-singlequotes.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-singlequotes.css
new file mode 100644
index 000000000..048854972
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-singlequotes.css
@@ -0,0 +1,15 @@
+/* Some Comment */
+
+div.nonbase64-singlequotes {
+    width:100px;
+    height:100px;
+    
background-image:url('data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0\'\'\'%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh)))%E1%E1%E1%03%03%03%CB%CB%CB%EB%EB%EB%FD%FD%FD%A3%
 [...]
+    border:1px solid #0000aa;
+}
+
+/* Some Other Comment */
+
+span.othercss {
+    font-family:"Times New Roman";
+    font-weight:inherit;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-singlequotes.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-singlequotes.css.min
new file mode 100644
index 000000000..badbf061a
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-nonbase64-singlequotes.css.min
@@ -0,0 +1,2 @@
+div.nonbase64-singlequotes{width:100px;height:100px;background-image:url('data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0\'\'\'%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh)))%
 [...]
+
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-noquote-multiline-font.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-noquote-multiline-font.css
new file mode 100644
index 000000000..722c7edc8
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-noquote-multiline-font.css
@@ -0,0 +1,31 @@
+/*csslint fontfamily: true*/
+
+/**
+ * Foo
+ */
+
+.y-ff-1 {
+    font-family:"Foo Bar",Helvetica,Arial;
+    text-rendering: optimizeLegibility;
+}
+
+.ua-op .y-ff-1 {
+    /* Some Comment */
+    font-family:Helvetica,Arial;
+}
+
+/*
+Foo
+
+Bar
+*/
+
+@font-face {
+    font-family: "Foo Bar";
+    src: url(
+            data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA) 
format("truetype"),
+         url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr";) 
format("svg");
+    font-weight: normal;
+    font-style: normal;
+}
+
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-noquote-multiline-font.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-noquote-multiline-font.css.min
new file mode 100644
index 000000000..6b32e33fa
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-noquote-multiline-font.css.min
@@ -0,0 +1,3 @@
+.y-ff-1{font-family:"Foo 
Bar",Helvetica,Arial;text-rendering:optimizeLegibility}.ua-op 
.y-ff-1{font-family:Helvetica,Arial}@font-face{font-family:"Foo 
Bar";src:url(data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA) 
format("truetype"),url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr";)
 format("svg");font-weight:normal;font-style:normal}
+
+
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-doublequotes.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-doublequotes.css
new file mode 100644
index 000000000..e86097c8b
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-doublequotes.css
@@ -0,0 +1,90 @@
+.yui3-skin-sam .yui3-scrollview-scrollbar {
+    -webkit-transform: translate3d(0, 0, 0);
+    -moz-transform: translate(0, 0); 
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle, 
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+    border-radius:3px;
+    -webkit-border-radius: 3px;
+    -moz-border-radius: 3px;
+    background-image: 
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiZGBgSGPAAgACDAAIkABoFyloZQAAAABJRU5ErkJggg==");
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+    border-bottom-right-radius:0; 
+    border-bottom-left-radius:0;
+
+    -webkit-border-bottom-right-radius:0; 
+    -webkit-border-bottom-left-radius:0;
+
+    -moz-border-radius-bottomright:0; 
+    -moz-border-radius-bottomleft:0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+    border-radius:0; 
+    border-bottom-right-radius:3px; 
+    border-bottom-left-radius:3px; 
+
+    -webkit-border-radius:0; 
+    -webkit-border-bottom-right-radius:3px; 
+    -webkit-border-bottom-left-radius:3px; 
+    -webkit-transform: translate3d(0, 0, 0);
+
+    -moz-border-radius:0; 
+    -moz-border-radius-bottomright:3px; 
+    -moz-border-radius-bottomleft:3px; 
+    -moz-transform: translate(0, 0);
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle {
+    border-radius:0; 
+    -webkit-border-radius: 0;
+    -moz-border-radius: 0; 
+
+    -webkit-transform: translate3d(0,0,0) scaleY(1); 
+    -webkit-transform-origin-y: 0;
+
+    -moz-transform: translate(0,0) scaleY(1); 
+    -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+    border-top-right-radius: 0;
+    border-bottom-left-radius: 3px;
+ 
+    -webkit-border-top-right-radius: 0;
+    -webkit-border-bottom-left-radius: 3px;
+
+    -moz-border-radius-topright: 0;
+    -moz-border-radius-bottomleft: 3px;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+    border-bottom-left-radius: 0; 
+    border-top-right-radius: 3px;
+
+    -webkit-border-bottom-left-radius: 0; 
+    -webkit-border-top-right-radius: 3px;
+
+    -moz-border-radius-bottomleft: 0; 
+    -moz-border-radius-topright: 3px; 
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-middle { 
+    -webkit-transform: translate3d(0,0,0) scaleX(1); 
+    -webkit-transform-origin: 0 0;
+
+    -moz-transform: translate(0,0) scaleX(1); 
+    -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-vert-basic .yui3-scrollview-child,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz-basic .yui3-scrollview-child {
+    background-color: #aaa;
+    background-image: none;
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-doublequotes.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-doublequotes.css.min
new file mode 100644
index 000000000..f9e760079
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-doublequotes.css.min
@@ -0,0 +1 @@
+.yui3-skin-sam 
.yui3-scrollview-scrollbar{-webkit-transform:translate3d(0,0,0);-moz-transform:translate(0,0)}.yui3-skin-sam
 .yui3-scrollview-scrollbar .yui3-scrollview-first,.yui3-skin-sam 
.yui3-scrollview-scrollbar .yui3-scrollview-middle,.yui3-skin-sam 
.yui3-scrollview-scrollbar 
.yui3-scrollview-last{border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJb
 [...]
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-noquotes.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-noquotes.css
new file mode 100644
index 000000000..ddf720ed9
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-noquotes.css
@@ -0,0 +1,90 @@
+.yui3-skin-sam .yui3-scrollview-scrollbar {
+    -webkit-transform: translate3d(0, 0, 0);
+    -moz-transform: translate(0, 0); 
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle, 
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+    border-radius:3px;
+    -webkit-border-radius: 3px;
+    -moz-border-radius: 3px;
+    background-image: 
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiZGBgSGPAAgACDAAIkABoFyloZQAAAABJRU5ErkJggg==);
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+    border-bottom-right-radius:0; 
+    border-bottom-left-radius:0;
+
+    -webkit-border-bottom-right-radius:0; 
+    -webkit-border-bottom-left-radius:0;
+
+    -moz-border-radius-bottomright:0; 
+    -moz-border-radius-bottomleft:0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+    border-radius:0; 
+    border-bottom-right-radius:3px; 
+    border-bottom-left-radius:3px; 
+
+    -webkit-border-radius:0; 
+    -webkit-border-bottom-right-radius:3px; 
+    -webkit-border-bottom-left-radius:3px; 
+    -webkit-transform: translate3d(0, 0, 0);
+
+    -moz-border-radius:0; 
+    -moz-border-radius-bottomright:3px; 
+    -moz-border-radius-bottomleft:3px; 
+    -moz-transform: translate(0, 0);
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle {
+    border-radius:0; 
+    -webkit-border-radius: 0;
+    -moz-border-radius: 0; 
+
+    -webkit-transform: translate3d(0,0,0) scaleY(1); 
+    -webkit-transform-origin-y: 0;
+
+    -moz-transform: translate(0,0) scaleY(1); 
+    -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+    border-top-right-radius: 0;
+    border-bottom-left-radius: 3px;
+ 
+    -webkit-border-top-right-radius: 0;
+    -webkit-border-bottom-left-radius: 3px;
+
+    -moz-border-radius-topright: 0;
+    -moz-border-radius-bottomleft: 3px;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+    border-bottom-left-radius: 0; 
+    border-top-right-radius: 3px;
+
+    -webkit-border-bottom-left-radius: 0; 
+    -webkit-border-top-right-radius: 3px;
+
+    -moz-border-radius-bottomleft: 0; 
+    -moz-border-radius-topright: 3px; 
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-middle { 
+    -webkit-transform: translate3d(0,0,0) scaleX(1); 
+    -webkit-transform-origin: 0 0;
+
+    -moz-transform: translate(0,0) scaleX(1); 
+    -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-vert-basic .yui3-scrollview-child,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz-basic .yui3-scrollview-child {
+    background-color: #aaa;
+    background-image: none;
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-noquotes.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-noquotes.css.min
new file mode 100644
index 000000000..110f9fc05
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-noquotes.css.min
@@ -0,0 +1 @@
+.yui3-skin-sam 
.yui3-scrollview-scrollbar{-webkit-transform:translate3d(0,0,0);-moz-transform:translate(0,0)}.yui3-skin-sam
 .yui3-scrollview-scrollbar .yui3-scrollview-first,.yui3-skin-sam 
.yui3-scrollview-scrollbar .yui3-scrollview-middle,.yui3-skin-sam 
.yui3-scrollview-scrollbar 
.yui3-scrollview-last{border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbW
 [...]
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-singlequotes.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-singlequotes.css
new file mode 100644
index 000000000..9d6ec7aa5
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-singlequotes.css
@@ -0,0 +1,90 @@
+.yui3-skin-sam .yui3-scrollview-scrollbar {
+    -webkit-transform: translate3d(0, 0, 0);
+    -moz-transform: translate(0, 0); 
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle, 
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+    border-radius:3px;
+    -webkit-border-radius: 3px;
+    -moz-border-radius: 3px;
+    background-image: 
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiZGBgSGPAAgACDAAIkABoFyloZQAAAABJRU5ErkJggg==');
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+    border-bottom-right-radius:0; 
+    border-bottom-left-radius:0;
+
+    -webkit-border-bottom-right-radius:0; 
+    -webkit-border-bottom-left-radius:0;
+
+    -moz-border-radius-bottomright:0; 
+    -moz-border-radius-bottomleft:0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+    border-radius:0; 
+    border-bottom-right-radius:3px; 
+    border-bottom-left-radius:3px; 
+
+    -webkit-border-radius:0; 
+    -webkit-border-bottom-right-radius:3px; 
+    -webkit-border-bottom-left-radius:3px; 
+    -webkit-transform: translate3d(0, 0, 0);
+
+    -moz-border-radius:0; 
+    -moz-border-radius-bottomright:3px; 
+    -moz-border-radius-bottomleft:3px; 
+    -moz-transform: translate(0, 0);
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle {
+    border-radius:0; 
+    -webkit-border-radius: 0;
+    -moz-border-radius: 0; 
+
+    -webkit-transform: translate3d(0,0,0) scaleY(1); 
+    -webkit-transform-origin-y: 0;
+
+    -moz-transform: translate(0,0) scaleY(1); 
+    -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+    border-top-right-radius: 0;
+    border-bottom-left-radius: 3px;
+ 
+    -webkit-border-top-right-radius: 0;
+    -webkit-border-bottom-left-radius: 3px;
+
+    -moz-border-radius-topright: 0;
+    -moz-border-radius-bottomleft: 3px;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+    border-bottom-left-radius: 0; 
+    border-top-right-radius: 3px;
+
+    -webkit-border-bottom-left-radius: 0; 
+    -webkit-border-top-right-radius: 3px;
+
+    -moz-border-radius-bottomleft: 0; 
+    -moz-border-radius-topright: 3px; 
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-middle { 
+    -webkit-transform: translate3d(0,0,0) scaleX(1); 
+    -webkit-transform-origin: 0 0;
+
+    -moz-transform: translate(0,0) scaleX(1); 
+    -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-vert-basic .yui3-scrollview-child,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz-basic .yui3-scrollview-child {
+    background-color: #aaa;
+    background-image: none;
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-singlequotes.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-singlequotes.css.min
new file mode 100644
index 000000000..1a4e2c6b8
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-singlequotes.css.min
@@ -0,0 +1 @@
+.yui3-skin-sam 
.yui3-scrollview-scrollbar{-webkit-transform:translate3d(0,0,0);-moz-transform:translate(0,0)}.yui3-skin-sam
 .yui3-scrollview-scrollbar .yui3-scrollview-first,.yui3-skin-sam 
.yui3-scrollview-scrollbar .yui3-scrollview-middle,.yui3-skin-sam 
.yui3-scrollview-scrollbar 
.yui3-scrollview-last{border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJb
 [...]
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-yuiapp.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-yuiapp.css
new file mode 100644
index 000000000..78d615dc1
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-yuiapp.css
@@ -0,0 +1,106 @@
+html {
+    background: #fff;
+    color: #555;
+    height: 100%;
+}
+ 
+#hd, #bd, #ft {
+    padding: 0 50px;
+}
+ 
+#bd {
+    padding-bottom: 50px;
+    border-bottom: 1px solid #006e9c;
+}
+ 
+#ft {
+    background: transparent no-repeat 0% 100%;
+    background-image: 
url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADcAAAAeCAMAAAC/pnaKAAAAwFBMVEUkXIAoYYQoYYQoYYQyao02bpE6cpQ6cpREe51LgqNUiqtUiqtUiqtZj7BckrNlmrtlmrtlmrtroMB3qsp3qsp3qsp+sdCHudiHudiHudiHudiPwN+YyOaYyOaYyOaf0O2g0O6n1vOn1vOn1vOn1vOw3vu45f245f245f3B7f7K9f7K9f7K9f7X/v7X/v7p//7p//79//79//4AAABhAGMAbwBzAC4AcwB0AHIAaQBuAGcAcwABAAAAwIwmGwEAAABQQKFUAAAAQHRSTlP///////////////////////////////////////////////////////////////////8A////////////////0pfSbwAAAdtJREFUOI2NlNGqgzAMhv/C
 [...]
+    /* image width: 55px */
+    padding: 0 0 40px 0;
+    margin: 50px;
+}
+ 
+#hd, #bd {
+    background: #f9f9f9;
+}
+ 
+body {
+    margin: 0;
+    padding: 0;
+    font: 12px "Helvetica Nueue", Arial, sans-serif;
+}
+ 
+#hd {
+    color: #fff;
+    padding-top: 50px;
+    margin: 0;
+}
+ 
+#hd, h1, h2, p, .color {
+    margin: auto;
+}
+ 
+h1, h2, a {
+    color: #006e9c;
+}
+ 
+h1, h2 {
+    margin-top: 0;
+}
+ 
+h4 .title  {
+    font-weight: bold;
+    letter-spacing: -2px;
+    font-size: 47px;
+    text-shadow: 0 1px 0 #369;
+    background: #006e9d;
+    color: #fff;
+    padding: 0 10px;
+}
+ 
+h4 {
+    display: block;
+    float: right;
+    margin: 0 0 0 20px;
+}
+ 
+h4 .what {
+    display: block;
+    padding: 4px;
+    text-align: center;
+    font-weight: normal;
+}
+ 
+h4 .version {
+    font-size: 11px;
+    color: #ccc;
+}
+ 
+h2 {
+    font-size: 40px;
+    font-family: "HelveticaNeue-Light", "Helvetica Neue Light",
+                 "Helvetica Neue", sans-serif;
+    font-weight: 300;
+}
+ 
+h4, p {
+    padding: 6px 0 6px;
+}
+ 
+#ft p.fine, #ft p.fine a {
+    color: #999;
+}
+ 
+#ft p.intro {
+    font-size: 12px;
+}
+ 
+#bd {
+    font-size: 14px;
+    color: #666;
+}
+ 
+#ft p {
+    font-size: 11px;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-yuiapp.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-yuiapp.css.min
new file mode 100644
index 000000000..8d5866318
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-realdata-yuiapp.css.min
@@ -0,0 +1 @@
+html{background:#fff;color:#555;height:100%}#hd,#bd,#ft{padding:0 
50px}#bd{padding-bottom:50px;border-bottom:1px solid 
#006e9c}#ft{background:transparent no-repeat 0 
100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADcAAAAeCAMAAAC/pnaKAAAAwFBMVEUkXIAoYYQoYYQoYYQyao02bpE6cpQ6cpREe51LgqNUiqtUiqtUiqtZj7BckrNlmrtlmrtlmrtroMB3qsp3qsp3qsp+sdCHudiHudiHudiHudiPwN+YyOaYyOaYyOaf0O2g0O6n1vOn1vOn1vOn1vOw3vu45f245f245f3B7f7K9f7K9f7K9f7X/v7X/v7p//7p//79//79//4AAABhAGMAbwBzAC4Acw
 [...]
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-singlequote-font.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-singlequote-font.css
new file mode 100644
index 000000000..4548feb19
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-singlequote-font.css
@@ -0,0 +1,30 @@
+/*csslint fontfamily: true*/
+
+/**
+ * Foo
+ */
+
+.y-ff-1 {
+    font-family:"Foo Bar",Helvetica,Arial;
+    text-rendering: optimizeLegibility;
+}
+
+.ua-op .y-ff-1 {
+    /* Some Comment */
+    font-family:Helvetica,Arial;
+}
+
+/*
+Foo
+
+Bar
+*/
+
+@font-face {
+    font-family: "Foo Bar";
+    src: URL('data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA') 
format("truetype"),
+         url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr";) 
format("svg");
+    font-weight: normal;
+    font-style: normal;
+}
+
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-singlequote-font.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-singlequote-font.css.min
new file mode 100644
index 000000000..fd51d5409
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dataurl-singlequote-font.css.min
@@ -0,0 +1,3 @@
+.y-ff-1{font-family:"Foo 
Bar",Helvetica,Arial;text-rendering:optimizeLegibility}.ua-op 
.y-ff-1{font-family:Helvetica,Arial}@font-face{font-family:"Foo 
Bar";src:url('data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA') 
format("truetype"),url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr";)
 format("svg");font-weight:normal;font-style:normal}
+
+
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/decimals.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/decimals.css
new file mode 100644
index 000000000..959397972
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/decimals.css
@@ -0,0 +1,3 @@
+::selection { 
+  margin: 0.6px 0.333pt 1.2em 8.8cm;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/decimals.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/decimals.css.min
new file mode 100644
index 000000000..4dadedce2
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/decimals.css.min
@@ -0,0 +1 @@
+::selection{margin:.6px .333pt 1.2em 8.8cm}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dollar-header.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dollar-header.css
new file mode 100644
index 000000000..43999c464
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dollar-header.css
@@ -0,0 +1,7 @@
+/*!
+$Header: /temp/dirname/filename.css 3 2/02/08 3:37p JSmith $
+*/
+
+foo {
+       bar: baz
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dollar-header.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dollar-header.css.min
new file mode 100644
index 000000000..930810044
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/dollar-header.css.min
@@ -0,0 +1,3 @@
+/*!
+$Header: /temp/dirname/filename.css 3 2/02/08 3:37p JSmith $
+*/foo{bar:baz}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/font-face.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/font-face.css
new file mode 100644
index 000000000..4b6956c85
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/font-face.css
@@ -0,0 +1,6 @@
+@font-face {
+  font-family: 'gzipper';
+  src: url(yanone.eot);
+  src: local('gzipper'), 
+          url(yanone.ttf) format('truetype');
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/font-face.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/font-face.css.min
new file mode 100644
index 000000000..3a1077c4f
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/font-face.css.min
@@ -0,0 +1 @@
+@font-face{font-family:'gzipper';src:url(yanone.eot);src:local('gzipper'),url(yanone.ttf)
 format('truetype')}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/hsla-issue81.css.FAIL
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/hsla-issue81.css.FAIL
new file mode 100644
index 000000000..974fc0ccf
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/hsla-issue81.css.FAIL
@@ -0,0 +1,4 @@
+.color_chip {
+    color: hsla(27, 0%, 50%, 1);
+    background: rgba(195, 198, 214, 0.85);
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/hsla-issue81.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/hsla-issue81.css.min
new file mode 100644
index 000000000..3c91fff74
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/hsla-issue81.css.min
@@ -0,0 +1 @@
+.color_chip{color:hsl(27,0%,50%);background:rgba(195,198,214,0.85)}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie-backslash9-hack.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie-backslash9-hack.css
new file mode 100644
index 000000000..6eabd9a3b
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie-backslash9-hack.css
@@ -0,0 +1,2 @@
+label{padding-left: 4px\9;}
+@charset "UTF-8";
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie-backslash9-hack.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie-backslash9-hack.css.min
new file mode 100644
index 000000000..a806405f0
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie-backslash9-hack.css.min
@@ -0,0 +1 @@
+@charset "UTF-8";label{padding-left:4px\9}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie5mac.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie5mac.css
new file mode 100644
index 000000000..e4d5204c0
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie5mac.css
@@ -0,0 +1,5 @@
+/* Ignore the next rule in IE mac \*/
+.selector {
+   color: khaki;
+}
+/* Stop ignoring in IE mac */
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie5mac.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie5mac.css.min
new file mode 100644
index 000000000..f90df4130
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/ie5mac.css.min
@@ -0,0 +1 @@
+/*\*/.selector{color:khaki}/**/
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue-59.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue-59.css
new file mode 100644
index 000000000..059621871
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue-59.css
@@ -0,0 +1,7 @@
+.issue-59 {
+    width:100%;
+    width: -webkit-calc(100% + 30px);
+    width: -moz-calc(100% + 30px);
+    width: calc(100% + 30px);
+    background-position: calc(65% - (100px - 350px * 0.65)) 0;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue-59.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue-59.css.min
new file mode 100644
index 000000000..f14c52e41
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue-59.css.min
@@ -0,0 +1 @@
+.issue-59{width:100%;width:-webkit-calc(100% + 30px);width:-moz-calc(100% + 
30px);width:calc(100% + 30px);background-position:calc(65% - (100px - 350px * 
0.65)) 0}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue151.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue151.css
new file mode 100644
index 000000000..afc4aaa15
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue151.css
@@ -0,0 +1,8 @@
+@keyframes fadeIn {
+  0% {
+    opacity: 0;
+  }
+  100% {
+    opacity: 1;
+  }
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue151.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue151.css.min
new file mode 100644
index 000000000..00f934fbd
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue151.css.min
@@ -0,0 +1 @@
+@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue172.css.FAIL
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue172.css.FAIL
new file mode 100644
index 000000000..29363c759
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue172.css.FAIL
@@ -0,0 +1,4 @@
+div {
+  transform-origin: 0;
+  -ms-transform-origin: 0;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue172.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue172.css.min
new file mode 100644
index 000000000..0b8fce439
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue172.css.min
@@ -0,0 +1 @@
+div{transform-origin:0;-ms-transform-origin:0}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue180.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue180.css
new file mode 100644
index 000000000..32d8231f3
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue180.css
@@ -0,0 +1,16 @@
+html {
+  /*...  calculation ... */
+  font-size: 16px;
+}
+body {
+  /*...  calculation ... */
+      font-size: 10px;
+}
+@media all and (min-width: 768px) {
+  /**
+     *    Needs to be calculated together with margins.
+     */
+  .columns-triple .column {
+      font-size: 10px;
+  }
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue180.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue180.css.min
new file mode 100644
index 000000000..f8deb8066
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue180.css.min
@@ -0,0 +1 @@
+html{font-size:16px}body{font-size:10px}@media all and 
(min-width:768px){.columns-triple .column{font-size:10px}}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue205.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue205.css
new file mode 100644
index 000000000..26e8099f2
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue205.css
@@ -0,0 +1,2 @@
+a[id$=_foo] { abc : abc;};
+@charset "utf-8";
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue205.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue205.css.min
new file mode 100644
index 000000000..32cd2d91b
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue205.css.min
@@ -0,0 +1 @@
+@charset "utf-8";a[id$=_foo]{abc:abc};
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue221.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue221.css
new file mode 100644
index 000000000..0b06279c1
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue221.css
@@ -0,0 +1,7 @@
+@font-face {
+  font-family: 'Quicksand';
+  font-style: normal;
+  font-weight: 400;
+  src: local('Quicksand Regular'), local('Quicksand-Regular'), 
url(https://fonts.gstatic.com/s/quicksand/v5/sKd0EMYPAh5PYCRKSryvW5Bw1xU1rKptJj_0jans920.woff2)
 format('woff2');
+  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, 
U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue221.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue221.css.min
new file mode 100644
index 000000000..88e79e3c5
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue221.css.min
@@ -0,0 +1 @@
+@font-face{font-family:'Quicksand';font-style:normal;font-weight:400;src:local('Quicksand
 
Regular'),local('Quicksand-Regular'),url(https://fonts.gstatic.com/s/quicksand/v5/sKd0EMYPAh5PYCRKSryvW5Bw1xU1rKptJj_0jans920.woff2)
 
format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2212,U+2215,U+E0FF,U+EFFD,U+F000}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue222.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue222.css
new file mode 100644
index 000000000..eec98c877
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue222.css
@@ -0,0 +1,3 @@
+@media \0screen {
+       body { background: red; }
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue222.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue222.css.min
new file mode 100644
index 000000000..505af99f6
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/issue222.css.min
@@ -0,0 +1 @@
+@media \0screen{body{background:red}}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/lowercasing.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/lowercasing.css
new file mode 100644
index 000000000..00a9468ab
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/lowercasing.css
@@ -0,0 +1,63 @@
+@CHARSET "UTF-8";
+
+@FONT-FACE {
+    FONT-FAMILY: "YOUR FACE";
+}
+
+@IMPORT "HTTP://DOMAIN.TLD/OTHER.CSS";
+
+@MEDIA print {
+    BACKGROUND: NONE;
+    BACKGROUND-POSITION: 0 0;
+}
+
+@PAGE {
+    CONTENT: ATTR(HREF);
+    HEIGHT: MAX(0, MIN(10, 20));
+    WIDTH: CALC(50% - 10PX);
+}
+
+@NAMESPACE XHTML "HTTP://WWW.W3.ORG/1999/XHTML";
+
+/* pseudos */
+a:ACTIVE,
+a:AFTER,
+a:BEFORE,
+a:CHECKED,
+a:DISABLED,
+a:EMPTY,
+a:ENABLED,
+a:FIRST-CHILD,
+a:FIRST-LETTER,
+a:FIRST-LINE,
+a:FIRST-OF-TYPE,
+a:FOCUS,
+a:HOVER,
+a:LAST-CHILD,
+a:LAST-OF-TYPE,
+a:LINK,
+a:ONLY-CHILD,
+a:ONLY-OF-TYPE,
+a:ROOT,
+a::SELECTION,
+a:TARGET,
+a:VISITED,
+
+/* pseudo functions */
+a:ANY(A, B, I) STRONG,
+a:LANG(FR),
+a:NOT([HIDDEN]),
+a:NTH-CHILD(2),
+a:NTH-LAST-CHILD(2),
+a:NTH-LAST-OF-TYPE(2),
+a:NTH-OF-TYPE(2) {
+    BACKGROUND: URL(PROTO://DOMAIN.TLD/PATH),
+                REPEATING-LINEAR-GRADIENT(20DEG, GRAY, GREEN, 20PX, WHITE 
40PX),
+                -ATSC-LINEAR-GRADIENT(LEFT, BLACK, WHITE),
+                -KHTML-RADIAL-GRADIENT(CENTER 50DEG, CIRCLE CLOSEST-SIDE, 
BLACK 0, GREEN 100%),
+                -MOZ-RADIAL-GRADIENT(CENTER 45DEG, CIRCLE CLOSEST-SIDE, ORANGE 
0%, RED 100%),
+                -MS-LINEAR-GRaDiEnT(LEFT, BLUE, BLACK),
+                -O-REPEATING-RADIAL-GRADIENT(CENTER, CIRCLE CLOSEST-SIDE, 
PAPAYAWHIP, RED 50%, GAINSBORO),
+                -WAP-LINEAR-GRADIENT(LEFT, BLACK, WHITE),
+                -WEBKIT-GRADIENT(LINEAR, LEFT, FROM(WHITE), 
TO(RGBA(1,2,3,.4)));
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/lowercasing.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/lowercasing.css.min
new file mode 100644
index 000000000..dd640db0c
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/lowercasing.css.min
@@ -0,0 +1 @@
+@charset "UTF-8";@font-face{FONT-FAMILY:"YOUR FACE"}@import 
"HTTP://DOMAIN.TLD/OTHER.CSS";@media print{background:0;background-position:0 
0}@page{CONTENT:attr(HREF);HEIGHT:max(0,min(10,20));WIDTH:calc(50% - 
10PX)}@namespace XHTML 
"HTTP://WWW.W3.ORG/1999/XHTML";a:active,a:after,a:before,a:checked,a:disabled,a:empty,a:enabled,a:first-child,a:first-letter
 ,a:first-line 
,a:first-of-type,a:focus,a:hover,a:last-child,a:last-of-type,a:link,a:only-child,a:only-of-type,a:root,a::selection,a:targe
 [...]
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-empty-class.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-empty-class.css
new file mode 100644
index 000000000..d2f22d5f1
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-empty-class.css
@@ -0,0 +1,16 @@
+/*! preserved */
+emptiness {}
+
+@import "another.css";
+/* I'm empty - delete me */
+empty { ;}
+
+@media print {
+       .noprint { display: none; }
+}
+
+@media screen {
+       /* this rule should be removed, not simply minified.*/
+       .breakme {}
+       .printonly { display: none; }
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-empty-class.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-empty-class.css.min
new file mode 100644
index 000000000..0350c7f6c
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-empty-class.css.min
@@ -0,0 +1 @@
+/*! preserved */@import "another.css";@media 
print{.noprint{display:none}}@media screen{.printonly{display:none}}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-multi.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-multi.css
new file mode 100644
index 000000000..c58977114
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-multi.css
@@ -0,0 +1,3 @@
+@media only all and (max-width:50em), only all and (max-device-width:800px), 
only all and (max-width:780px) {
+  some-css : here
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-multi.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-multi.css.min
new file mode 100644
index 000000000..57b52f74f
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-multi.css.min
@@ -0,0 +1 @@
+@media only all and (max-width:50em),only all and 
(max-device-width:800px),only all and (max-width:780px){some-css:here}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-test.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-test.css
new file mode 100644
index 000000000..4adb8f7c5
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-test.css
@@ -0,0 +1,3 @@
+@media screen AND (-webkit-min-device-pixel-ratio:0) {
+  some-css : here
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-test.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-test.css.min
new file mode 100644
index 000000000..0e7168e44
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/media-test.css.min
@@ -0,0 +1 @@
+@media screen and (-webkit-min-device-pixel-ratio:0){some-css:here}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/old-ie-filter-matrix.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/old-ie-filter-matrix.css
new file mode 100644
index 000000000..dad343cbb
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/old-ie-filter-matrix.css
@@ -0,0 +1,8 @@
+.a {
+filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.9914448613738104, 
M12=-0.13052619222005157, M21=0.13052619222005157, M22=0.9914448613738104, 
sizingMethod='auto expand');
+}
+.b {
+    display: none;
+    filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.9914448613738104, 
M12=-0.13052619222005157, M21=0.13052619222005157, M22=0.9914448613738104, 
sizingMethod='auto expand');
+    vertical-align: bottom;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/old-ie-filter-matrix.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/old-ie-filter-matrix.css.min
new file mode 100644
index 000000000..cb5690f6f
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/old-ie-filter-matrix.css.min
@@ -0,0 +1 @@
+.a{filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.9914448613738104, 
M12=-0.13052619222005157, M21=0.13052619222005157, M22=0.9914448613738104, 
sizingMethod='auto 
expand')}.b{display:none;filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.9914448613738104,
 M12=-0.13052619222005157, M21=0.13052619222005157, M22=0.9914448613738104, 
sizingMethod='auto expand');vertical-align:bottom}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opacity-filter.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opacity-filter.css
new file mode 100644
index 000000000..60deca7ac
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opacity-filter.css
@@ -0,0 +1,14 @@
+/*  example from https://developer.mozilla.org/en/CSS/opacity */
+pre {                               /* make the box translucent (80% opaque) */
+   border: solid red;
+   opacity: 0.8;                    /* Firefox, Safari(WebKit), Opera */
+   -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; /* IE 8 
*/
+   filter: PROGID:DXImageTransform.Microsoft.Alpha(Opacity=80);       /* IE 
4-7 */
+   zoom: 1;       /* set "zoom", "width" or "height" to trigger "hasLayout" in 
IE 7 and lower */ 
+}
+
+/** and again */
+code {
+   -ms-filter: "PROGID:DXImageTransform.Microsoft.Alpha(Opacity=80)"; /* IE 8 
*/
+   filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);       /* IE 
4-7 */
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opacity-filter.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opacity-filter.css.min
new file mode 100644
index 000000000..99b4fa818
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opacity-filter.css.min
@@ -0,0 +1 @@
+pre{border:solid 
red;opacity:.8;-ms-filter:"alpha(opacity=80)";filter:alpha(opacity=80);zoom:1}code{-ms-filter:"alpha(opacity=80)";filter:alpha(opacity=80)}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opera-pixel-ratio.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opera-pixel-ratio.css
new file mode 100644
index 000000000..d4547d0e2
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opera-pixel-ratio.css
@@ -0,0 +1,14 @@
+@media
+       (-o-min-device-pixel-ratio:10/4),
+       (-o-max-device-pixel-ratio:  5/4),
+       (-o-device-pixel-ratio:  1/1),
+  (-o-device-pixel-ratio:  1/10),
+       (-o-device-pixel-ratio:  1.25),
+       (device-pixel-ratio:1.5)  {  
+               /* some:prop; */
+               /* An empty property with a fraction in query would break 
previously */
+ }
+ 
+ .something {
+        foo: bar;
+ }
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opera-pixel-ratio.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opera-pixel-ratio.css.min
new file mode 100644
index 000000000..66a1a994a
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/opera-pixel-ratio.css.min
@@ -0,0 +1 @@
+.something{foo:bar}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pointzeros.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pointzeros.css
new file mode 100644
index 000000000..a7bcf812a
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pointzeros.css
@@ -0,0 +1,6 @@
+a { 
+  margin: 0.0px 1.0pt 2.0em 0%;
+  _padding-top: 2.0ex;
+  background-position: 0.0 1.0px;
+  padding: 0.0in 1.0cm .0mm 0pc;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pointzeros.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pointzeros.css.min
new file mode 100644
index 000000000..9b2bb443a
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pointzeros.css.min
@@ -0,0 +1 @@
+a{margin:0 1pt 2em 0;_padding-top:2ex;background-position:0 1px;padding:0 1cm 
0 0}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-case.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-case.css
new file mode 100644
index 000000000..06818f0a3
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-case.css
@@ -0,0 +1,15 @@
+#AddAddressForm {
+    padding: 0;
+}
+#AddAddressForm .messageBoxNeutral {
+    padding: 0;
+}
+#FeedbackMailForm{
+    padding: 0;
+}
+#FeedbackMailForm .classe{
+    margin: 0;
+}
+.classes, #FeedBackMailForm {
+    margin: 0;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-case.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-case.css.min
new file mode 100644
index 000000000..373bcbbbb
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-case.css.min
@@ -0,0 +1 @@
+#AddAddressForm{padding:0}#AddAddressForm 
.messageBoxNeutral{padding:0}#FeedbackMailForm{padding:0}#FeedbackMailForm 
.classe{margin:0}.classes,#FeedBackMailForm{margin:0}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-important.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-important.css
new file mode 100644
index 000000000..2950fd894
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-important.css
@@ -0,0 +1 @@
+.red { color: red !important; }
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-important.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-important.css.min
new file mode 100644
index 000000000..91ae60b8b
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-important.css.min
@@ -0,0 +1 @@
+.red{color:red !important}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-new-line.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-new-line.css
new file mode 100644
index 000000000..e1f0c9217
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-new-line.css
@@ -0,0 +1,6 @@
+#sel-o {
+  content: "on\"ce upon \
+a time";
+  content: 'once upon \
+a ti\'me';
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-new-line.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-new-line.css.min
new file mode 100644
index 000000000..6ac20b681
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-new-line.css.min
@@ -0,0 +1,3 @@
+#sel-o{content:"on\"ce upon \
+a time";content:'once upon \
+a ti\'me'}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-strings.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-strings.css
new file mode 100644
index 000000000..9151373d2
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-strings.css
@@ -0,0 +1,7 @@
+/* preserving strings */
+.sele {
+  content: "\"keep  \"    me";
+  something: '\\\' .     . ';
+  else: 'empty{}';
+  content: "/* test */"; /* <---- this is not a comment, should be be kept */
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-strings.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-strings.css.min
new file mode 100644
index 000000000..3f1d01021
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/preserve-strings.css.min
@@ -0,0 +1 @@
+.sele{content:"\"keep  \"    me";something:'\\\' .     . 
';else:'empty{}';content:"/* test */"}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo-first.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo-first.css
new file mode 100644
index 000000000..ecb06fa6a
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo-first.css
@@ -0,0 +1,16 @@
+/* 
+because of IE6 first-letter and first-line
+must be followed by a space
+http://reference.sitepoint.com/css/pseudoelement-firstletter
+Thanks: P.Sorokin comment at http://www.phpied.com/cssmin-js/ 
+*/
+p:first-letter{
+  buh: hum;
+}
+p:FIRST-LINE{
+  baa: 1;
+}
+
+p:first-line,a,p:first-letter,b{
+  color: red;
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo-first.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo-first.css.min
new file mode 100644
index 000000000..687117c47
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo-first.css.min
@@ -0,0 +1 @@
+p:first-letter {buh:hum}p:first-line {baa:1}p:first-line ,a,p:first-letter 
,b{color:red}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo.css
new file mode 100644
index 000000000..126a5b1df
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo.css
@@ -0,0 +1,4 @@
+p :link { 
+  ba:zinga;;;
+  foo: bar;;;
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo.css.min
new file mode 100644
index 000000000..bb7f8e75e
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/pseudo.css.min
@@ -0,0 +1 @@
+p :link{ba:zinga;foo:bar}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/rgb-issue81.css.FAIL
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/rgb-issue81.css.FAIL
new file mode 100644
index 000000000..feda1bfe8
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/rgb-issue81.css.FAIL
@@ -0,0 +1,4 @@
+.color_chip {
+    color: color: rgb(0%, 50%, 50%);
+    background: rgba(195, 198, 214, 0.85);
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/rgb-issue81.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/rgb-issue81.css.min
new file mode 100644
index 000000000..61e32492a
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/rgb-issue81.css.min
@@ -0,0 +1 @@
+.color_chip{color: rgb(0%, 50%, 50%);background:rgba(195,198,214,0.85)}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/special-comments.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/special-comments.css
new file mode 100644
index 000000000..4e184ba61
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/special-comments.css
@@ -0,0 +1,13 @@
+/*!************88****
+ Preserving comments
+    as they are
+ ********************
+ Keep the initial !
+ *******************/
+#yo {
+    ma: "ma";
+}
+/*!
+I said
+pre-
+serve! */
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/special-comments.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/special-comments.css.min
new file mode 100644
index 000000000..92ecbac96
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/special-comments.css.min
@@ -0,0 +1,9 @@
+/*!************88****
+ Preserving comments
+    as they are
+ ********************
+ Keep the initial !
+ *******************/#yo{ma:"ma"}/*!
+I said
+pre-
+serve! */
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/star-underscore-hacks.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/star-underscore-hacks.css
new file mode 100644
index 000000000..8b6e517c4
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/star-underscore-hacks.css
@@ -0,0 +1,5 @@
+#elementarr {
+  width: 1px;
+  *width: 3pt;
+  _width: 2em;
+}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/star-underscore-hacks.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/star-underscore-hacks.css.min
new file mode 100644
index 000000000..0a014c3e6
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/star-underscore-hacks.css.min
@@ -0,0 +1 @@
+#elementarr{width:1px;*width:3pt;_width:2em}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/string-in-comment.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/string-in-comment.css
new file mode 100644
index 000000000..d94d19227
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/string-in-comment.css
@@ -0,0 +1,8 @@
+/* te " st */
+a{a:1}
+/*!"preserve" me*/
+b{content: "/**/"}
+/* quite " quote ' \' \" */
+/* ie mac \*/
+c {c : 3}
+/* end hiding */
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/string-in-comment.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/string-in-comment.css.min
new file mode 100644
index 000000000..7cdec2d76
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/string-in-comment.css.min
@@ -0,0 +1 @@
+a{a:1}/*!"preserve" me*/b{content:"/**/"}/*\*/c{c:3}/**/
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/webkit-transform.css
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/webkit-transform.css
new file mode 100644
index 000000000..83a50f2e2
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/webkit-transform.css
@@ -0,0 +1,2 @@
+c {-webkit-transform-origin: 0 0;}
+d {-MOZ-TRANSFORM-ORIGIN: 0 0 }
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/webkit-transform.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/webkit-transform.css.min
new file mode 100644
index 000000000..b640ddfc9
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/webkit-transform.css.min
@@ -0,0 +1 @@
+c{-webkit-transform-origin:0 0}d{-moz-transform-origin:0 0}
\ No newline at end of file
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/zeros.css 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/zeros.css
new file mode 100644
index 000000000..73bc1d730
--- /dev/null
+++ b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/zeros.css
@@ -0,0 +1,12 @@
+a { 
+  margin: 0px 0pt 0em 0%;
+  _padding-top: 0ex;
+  background-position: 0 0;
+  padding: 0in 0cm 0mm 0pc;
+  transition: opacity .0s;
+  transition-delay: 0.0ms;
+  transform: rotate3d(0grad, 0rad, 0deg);
+  pitch: 0KHZ;
+  pitch:
+0hz; /* intentionally on next line */
+}
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/css/yui/zeros.css.min
 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/zeros.css.min
new file mode 100644
index 000000000..0820e0881
--- /dev/null
+++ 
b/tapestry-webresources/src/test/resources/t5/webresources/css/yui/zeros.css.min
@@ -0,0 +1 @@
+a{margin:0;_padding-top:0;background-position:0 0;padding:0;transition:opacity 
0s;transition-delay:0ms;transform:rotate3d(0,0,0);pitch:0;pitch:0}

Reply via email to