From 1d3d182d424b3b44799765596c36aa24cf192d76 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Wed, 1 Feb 2017 13:41:19 +0100 Subject: [PATCH 01/43] Update serde to 0.9.0 --- Cargo.toml | 8 +++----- src/color.rs | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a459df26..30f13090 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "cssparser" -version = "0.9.0" +version = "0.10.0" authors = [ "Simon Sapin " ] description = "Rust implementation of CSS Syntax Level 3" @@ -23,16 +23,14 @@ tempdir = "0.3" encoding_rs = "0.3.2" [dependencies] -heapsize = {version = ">=0.1.1, <0.4.0", optional = true} +heapsize = {version = "0.3", optional = true} matches = "0.1" -serde = {version = ">=0.6.6, <0.9", optional = true} +serde = {version = "0.9", optional = true} [build-dependencies] syn = { version = "0.10.6", features = ["full", "visit"]} quote = "0.3" [features] -serde-serialization = [ "serde" ] -heap_size = [ "heapsize" ] bench = [] dummy_match_byte = [] diff --git a/src/color.rs b/src/color.rs index c6502162..6f3d886b 100644 --- a/src/color.rs +++ b/src/color.rs @@ -72,7 +72,7 @@ impl RGBA { #[cfg(feature = "serde")] impl Serialize for RGBA { - fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> + fn serialize(&self, serializer: S) -> Result where S: Serializer { (self.red, self.green, self.blue, self.alpha).serialize(serializer) @@ -81,7 +81,7 @@ impl Serialize for RGBA { #[cfg(feature = "serde")] impl Deserialize for RGBA { - fn deserialize(deserializer: &mut D) -> Result + fn deserialize(deserializer: D) -> Result where D: Deserializer { let (r, g, b, a) = try!(Deserialize::deserialize(deserializer)); From 63c2044aa1bd7a9a652e5846b873eb3128aa9ba4 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Fri, 24 Feb 2017 21:59:46 +0100 Subject: [PATCH 02/43] Update syn and encoding_rs --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 30f13090..ca28b548 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ doctest = false [dev-dependencies] rustc-serialize = "0.3" tempdir = "0.3" -encoding_rs = "0.3.2" +encoding_rs = "0.5" [dependencies] heapsize = {version = "0.3", optional = true} @@ -28,7 +28,7 @@ matches = "0.1" serde = {version = "0.9", optional = true} [build-dependencies] -syn = { version = "0.10.6", features = ["full", "visit"]} +syn = "0.11" quote = "0.3" [features] From 0592beaf385712aadf9642d5c558001b0fe12f31 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Fri, 24 Feb 2017 22:02:14 +0100 Subject: [PATCH 03/43] Use docs.rs for docs. --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index ca28b548..167e9969 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ version = "0.10.0" authors = [ "Simon Sapin " ] description = "Rust implementation of CSS Syntax Level 3" -documentation = "http://servo.github.io/rust-cssparser/cssparser/index.html" +documentation = "https://docs.rs/cssparser/" repository = "https://github.com/servo/rust-cssparser" readme = "README.md" keywords = ["css", "syntax", "parser"] From 808922abbc7b410f76804e47a5f485eef38d7fa9 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Fri, 24 Feb 2017 22:56:07 +0100 Subject: [PATCH 04/43] Use a proc-macro to optimize match_ignore_ascii_case Previously, the compiler would emit many `eq_ignore_ascii_case` calls, leading to code bloat and probably some slowness. Now, we pre-lowercase the input in a stack-allocated buffer then match exact strings. Hopefully, the optimizer can turn this into a static table and a loop. --- Cargo.toml | 4 ++++ macros/Cargo.toml | 16 ++++++++++++++++ macros/lib.rs | 47 +++++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 35 ++++++++++++++++++++++++++++++++--- 4 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 macros/Cargo.toml create mode 100644 macros/lib.rs diff --git a/Cargo.toml b/Cargo.toml index 167e9969..88c585ce 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,6 +23,7 @@ tempdir = "0.3" encoding_rs = "0.5" [dependencies] +cssparser-macros = {path = "./macros", version = "0.1"} heapsize = {version = "0.3", optional = true} matches = "0.1" serde = {version = "0.9", optional = true} @@ -34,3 +35,6 @@ quote = "0.3" [features] bench = [] dummy_match_byte = [] + +[workspace] +members = [".", "./macros"] diff --git a/macros/Cargo.toml b/macros/Cargo.toml new file mode 100644 index 00000000..173d2021 --- /dev/null +++ b/macros/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "cssparser-macros" +version = "0.1.0" +authors = ["Simon Sapin "] +description = "Procedural macros for cssparser" +documentation = "https://docs.rs/cssparser-macros/" +repository = "https://github.com/servo/rust-cssparser" +license = "MPL-2.0" + +[lib] +path = "lib.rs" +proc-macro = true + +[dependencies] +syn = "0.11" +quote = "0.3" diff --git a/macros/lib.rs b/macros/lib.rs new file mode 100644 index 00000000..55e93bf6 --- /dev/null +++ b/macros/lib.rs @@ -0,0 +1,47 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +extern crate proc_macro; +#[macro_use] extern crate quote; +extern crate syn; + +use std::ascii::AsciiExt; + +#[proc_macro_derive(cssparser__match_ignore_ascii_case__derive, + attributes(cssparser__match_ignore_ascii_case__data))] +pub fn expand_token_stream(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let input = syn::parse_macro_input(&input.to_string()).unwrap(); + + let max_length; + + match input.attrs[0].value { + syn::MetaItem::List(ref ident, ref nested) + if ident == "cssparser__match_ignore_ascii_case__data" => { + let lengths = nested.iter().map(|sub_attr| match *sub_attr { + syn::NestedMetaItem::MetaItem( + syn::MetaItem::NameValue(ref ident, syn::Lit::Str(ref string, _)) + ) + if ident == "string" => { + assert_eq!(*string, string.to_ascii_lowercase(), + "the expected strings must be given in ASCII lowercase"); + string.len() + } + _ => { + panic!("expected a `string = \"…\" parameter to the attribute, got {:?}", sub_attr) + } + }); + + max_length = lengths.max().expect("expected at least one string") + } + _ => { + panic!("expected a cssparser_match_ignore_ascii_case_data attribute") + } + } + + let tokens = quote! { + const MAX_LENGTH: usize = #max_length; + }; + + tokens.as_str().parse().unwrap() +} diff --git a/src/lib.rs b/src/lib.rs index 905f5066..6964352b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -68,6 +68,7 @@ fn parse_border_spacing(_context: &ParserContext, input: &mut Parser) #![recursion_limit="200"] // For color::parse_color_keyword +#[macro_use] extern crate cssparser_macros; #[macro_use] extern crate matches; #[cfg(test)] extern crate encoding_rs; #[cfg(test)] extern crate tempdir; @@ -123,10 +124,16 @@ macro_rules! match_ignore_ascii_case { // finished parsing (@inner $value:expr, () -> ($(($string:expr => $result:expr))*) $fallback:expr ) => { { - use std::ascii::AsciiExt; - match &$value[..] { + #[derive(cssparser__match_ignore_ascii_case__derive)] + #[cssparser__match_ignore_ascii_case__data($(string = $string),+)] + #[allow(dead_code)] + struct Dummy; + + // MAX_LENGTH is generated by cssparser_MatchIgnoreAsciiCase_internal + let mut buffer: [u8; MAX_LENGTH] = unsafe { ::std::mem::uninitialized() }; + match $crate::_match_ignore_ascii_case__to_lowercase(&mut buffer, &$value[..]) { $( - s if s.eq_ignore_ascii_case($string) => $result, + Some($string) => $result, )+ _ => $fallback } @@ -139,6 +146,28 @@ macro_rules! match_ignore_ascii_case { }; } +/// Implementation detail of the match_ignore_ascii_case! macro. +#[doc(hidden)] +#[allow(non_snake_case)] +pub fn _match_ignore_ascii_case__to_lowercase<'a>(buffer: &'a mut [u8], input: &'a str) -> Option<&'a str> { + if let Some(buffer) = buffer.get_mut(..input.len()) { + if let Some(first_uppercase) = input.bytes().position(|byte| matches!(byte, b'A'...b'Z')) { + buffer.copy_from_slice(input.as_bytes()); + std::ascii::AsciiExt::make_ascii_lowercase(&mut buffer[first_uppercase..]); + unsafe { + Some(::std::str::from_utf8_unchecked(buffer)) + } + } else { + // Input is already lower-case + Some(input) + } + } else { + // Input is longer than buffer, which has the length of the longest expected string: + // none of the expected strings would match. + None + } +} + mod rules_and_declarations; #[cfg(feature = "dummy_match_byte")] From 0192030d8d4ef19fe43c8bb3f28df0f5f372a72f Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 25 Feb 2017 12:56:06 +0100 Subject: [PATCH 05/43] Add a ascii_case_insensitive_phf_map macro, use it for color keywords. Fix #115. --- Cargo.toml | 1 + macros/Cargo.toml | 4 +- macros/lib.rs | 100 +++++++++++---- src/color.rs | 320 ++++++++++++++++++++++++---------------------- src/lib.rs | 52 ++++++-- 5 files changed, 288 insertions(+), 189 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 88c585ce..afa65899 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ encoding_rs = "0.5" cssparser-macros = {path = "./macros", version = "0.1"} heapsize = {version = "0.3", optional = true} matches = "0.1" +phf = "0.7" serde = {version = "0.9", optional = true} [build-dependencies] diff --git a/macros/Cargo.toml b/macros/Cargo.toml index 173d2021..2ca733c4 100644 --- a/macros/Cargo.toml +++ b/macros/Cargo.toml @@ -12,5 +12,7 @@ path = "lib.rs" proc-macro = true [dependencies] -syn = "0.11" +phf_codegen = "0.7" quote = "0.3" +syn = "0.11" + diff --git a/macros/lib.rs b/macros/lib.rs index 55e93bf6..790d583f 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -2,46 +2,96 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +extern crate phf_codegen; extern crate proc_macro; #[macro_use] extern crate quote; extern crate syn; use std::ascii::AsciiExt; -#[proc_macro_derive(cssparser__match_ignore_ascii_case__derive, +#[proc_macro_derive(cssparser__match_ignore_ascii_case__max_len, attributes(cssparser__match_ignore_ascii_case__data))] -pub fn expand_token_stream(input: proc_macro::TokenStream) -> proc_macro::TokenStream { +pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let input = syn::parse_macro_input(&input.to_string()).unwrap(); + let data = list_attr(&input, "cssparser__match_ignore_ascii_case__data"); - let max_length; + let lengths = data.iter().map(|sub_attr| { + let string = sub_attr_value(sub_attr, "string"); + assert_eq!(*string, string.to_ascii_lowercase(), + "the expected strings must be given in ASCII lowercase"); + string.len() + }); + let max_length = lengths.max().expect("expected at least one string"); - match input.attrs[0].value { - syn::MetaItem::List(ref ident, ref nested) - if ident == "cssparser__match_ignore_ascii_case__data" => { - let lengths = nested.iter().map(|sub_attr| match *sub_attr { - syn::NestedMetaItem::MetaItem( - syn::MetaItem::NameValue(ref ident, syn::Lit::Str(ref string, _)) - ) - if ident == "string" => { - assert_eq!(*string, string.to_ascii_lowercase(), - "the expected strings must be given in ASCII lowercase"); - string.len() - } - _ => { - panic!("expected a `string = \"…\" parameter to the attribute, got {:?}", sub_attr) - } - }); - - max_length = lengths.max().expect("expected at least one string") - } - _ => { - panic!("expected a cssparser_match_ignore_ascii_case_data attribute") + let tokens = quote! { + const MAX_LENGTH: usize = #max_length; + }; + + tokens.as_str().parse().unwrap() +} + + +#[proc_macro_derive(cssparser__phf_map, + attributes(cssparser__phf_map__kv_pairs))] +pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let input = syn::parse_macro_input(&input.to_string()).unwrap(); + let name = &input.ident; + let value_type = match input.body { + syn::Body::Struct(syn::VariantData::Tuple(ref fields)) if fields.len() == 1 => { + &fields[0].ty } + _ => panic!("expected tuple struct newtype, got {:?}", input.body) + }; + + let kv_pairs = list_attr(&input, "cssparser__phf_map__kv_pairs"); + + let mut map = phf_codegen::Map::new(); + for chunk in kv_pairs.chunks(2) { + let key = sub_attr_value(&chunk[0], "key"); + let value = sub_attr_value(&chunk[1], "value"); + map.entry(key, value); } + let mut initializer_bytes = Vec::::new(); + let mut initializer_tokens = quote::Tokens::new(); + map.build(&mut initializer_bytes).unwrap(); + initializer_tokens.append(::std::str::from_utf8(&initializer_bytes).unwrap()); + let tokens = quote! { - const MAX_LENGTH: usize = #max_length; + impl #name { + #[inline] + fn map() -> &'static ::phf::Map<&'static str, #value_type> { + static MAP: ::phf::Map<&'static str, #value_type> = #initializer_tokens; + &MAP + } + } }; tokens.as_str().parse().unwrap() } + +fn list_attr<'a>(input: &'a syn::DeriveInput, expected_name: &str) -> &'a [syn::NestedMetaItem] { + match input.attrs[0].value { + syn::MetaItem::List(ref name, ref nested) if name == expected_name => { + nested + } + _ => { + panic!("expected a {} attribute", expected_name) + } + } +} + +fn sub_attr_value<'a>(sub_attr: &'a syn::NestedMetaItem, expected_name: &str) -> &'a str { + match *sub_attr { + syn::NestedMetaItem::MetaItem( + syn::MetaItem::NameValue(ref name, syn::Lit::Str(ref value, _)) + ) + if name == expected_name => { + value + } + _ => { + panic!("expected a `{} = \"…\"` parameter to the attribute, got {:?}", + expected_name, sub_attr) + } + } +} diff --git a/src/color.rs b/src/color.rs index 6f3d886b..85ae102a 100644 --- a/src/color.rs +++ b/src/color.rs @@ -169,161 +169,173 @@ fn rgba(red: u8, green: u8, blue: u8, alpha: u8) -> Result { /// (For example, the value of an `Ident` token is fine.) #[inline] pub fn parse_color_keyword(ident: &str) -> Result { - match_ignore_ascii_case! { ident, - "black" => rgb(0, 0, 0), - "silver" => rgb(192, 192, 192), - "gray" => rgb(128, 128, 128), - "white" => rgb(255, 255, 255), - "maroon" => rgb(128, 0, 0), - "red" => rgb(255, 0, 0), - "purple" => rgb(128, 0, 128), - "fuchsia" => rgb(255, 0, 255), - "green" => rgb(0, 128, 0), - "lime" => rgb(0, 255, 0), - "olive" => rgb(128, 128, 0), - "yellow" => rgb(255, 255, 0), - "navy" => rgb(0, 0, 128), - "blue" => rgb(0, 0, 255), - "teal" => rgb(0, 128, 128), - "aqua" => rgb(0, 255, 255), - - "aliceblue" => rgb(240, 248, 255), - "antiquewhite" => rgb(250, 235, 215), - "aquamarine" => rgb(127, 255, 212), - "azure" => rgb(240, 255, 255), - "beige" => rgb(245, 245, 220), - "bisque" => rgb(255, 228, 196), - "blanchedalmond" => rgb(255, 235, 205), - "blueviolet" => rgb(138, 43, 226), - "brown" => rgb(165, 42, 42), - "burlywood" => rgb(222, 184, 135), - "cadetblue" => rgb(95, 158, 160), - "chartreuse" => rgb(127, 255, 0), - "chocolate" => rgb(210, 105, 30), - "coral" => rgb(255, 127, 80), - "cornflowerblue" => rgb(100, 149, 237), - "cornsilk" => rgb(255, 248, 220), - "crimson" => rgb(220, 20, 60), - "cyan" => rgb(0, 255, 255), - "darkblue" => rgb(0, 0, 139), - "darkcyan" => rgb(0, 139, 139), - "darkgoldenrod" => rgb(184, 134, 11), - "darkgray" => rgb(169, 169, 169), - "darkgreen" => rgb(0, 100, 0), - "darkgrey" => rgb(169, 169, 169), - "darkkhaki" => rgb(189, 183, 107), - "darkmagenta" => rgb(139, 0, 139), - "darkolivegreen" => rgb(85, 107, 47), - "darkorange" => rgb(255, 140, 0), - "darkorchid" => rgb(153, 50, 204), - "darkred" => rgb(139, 0, 0), - "darksalmon" => rgb(233, 150, 122), - "darkseagreen" => rgb(143, 188, 143), - "darkslateblue" => rgb(72, 61, 139), - "darkslategray" => rgb(47, 79, 79), - "darkslategrey" => rgb(47, 79, 79), - "darkturquoise" => rgb(0, 206, 209), - "darkviolet" => rgb(148, 0, 211), - "deeppink" => rgb(255, 20, 147), - "deepskyblue" => rgb(0, 191, 255), - "dimgray" => rgb(105, 105, 105), - "dimgrey" => rgb(105, 105, 105), - "dodgerblue" => rgb(30, 144, 255), - "firebrick" => rgb(178, 34, 34), - "floralwhite" => rgb(255, 250, 240), - "forestgreen" => rgb(34, 139, 34), - "gainsboro" => rgb(220, 220, 220), - "ghostwhite" => rgb(248, 248, 255), - "gold" => rgb(255, 215, 0), - "goldenrod" => rgb(218, 165, 32), - "greenyellow" => rgb(173, 255, 47), - "grey" => rgb(128, 128, 128), - "honeydew" => rgb(240, 255, 240), - "hotpink" => rgb(255, 105, 180), - "indianred" => rgb(205, 92, 92), - "indigo" => rgb(75, 0, 130), - "ivory" => rgb(255, 255, 240), - "khaki" => rgb(240, 230, 140), - "lavender" => rgb(230, 230, 250), - "lavenderblush" => rgb(255, 240, 245), - "lawngreen" => rgb(124, 252, 0), - "lemonchiffon" => rgb(255, 250, 205), - "lightblue" => rgb(173, 216, 230), - "lightcoral" => rgb(240, 128, 128), - "lightcyan" => rgb(224, 255, 255), - "lightgoldenrodyellow" => rgb(250, 250, 210), - "lightgray" => rgb(211, 211, 211), - "lightgreen" => rgb(144, 238, 144), - "lightgrey" => rgb(211, 211, 211), - "lightpink" => rgb(255, 182, 193), - "lightsalmon" => rgb(255, 160, 122), - "lightseagreen" => rgb(32, 178, 170), - "lightskyblue" => rgb(135, 206, 250), - "lightslategray" => rgb(119, 136, 153), - "lightslategrey" => rgb(119, 136, 153), - "lightsteelblue" => rgb(176, 196, 222), - "lightyellow" => rgb(255, 255, 224), - "limegreen" => rgb(50, 205, 50), - "linen" => rgb(250, 240, 230), - "magenta" => rgb(255, 0, 255), - "mediumaquamarine" => rgb(102, 205, 170), - "mediumblue" => rgb(0, 0, 205), - "mediumorchid" => rgb(186, 85, 211), - "mediumpurple" => rgb(147, 112, 219), - "mediumseagreen" => rgb(60, 179, 113), - "mediumslateblue" => rgb(123, 104, 238), - "mediumspringgreen" => rgb(0, 250, 154), - "mediumturquoise" => rgb(72, 209, 204), - "mediumvioletred" => rgb(199, 21, 133), - "midnightblue" => rgb(25, 25, 112), - "mintcream" => rgb(245, 255, 250), - "mistyrose" => rgb(255, 228, 225), - "moccasin" => rgb(255, 228, 181), - "navajowhite" => rgb(255, 222, 173), - "oldlace" => rgb(253, 245, 230), - "olivedrab" => rgb(107, 142, 35), - "orange" => rgb(255, 165, 0), - "orangered" => rgb(255, 69, 0), - "orchid" => rgb(218, 112, 214), - "palegoldenrod" => rgb(238, 232, 170), - "palegreen" => rgb(152, 251, 152), - "paleturquoise" => rgb(175, 238, 238), - "palevioletred" => rgb(219, 112, 147), - "papayawhip" => rgb(255, 239, 213), - "peachpuff" => rgb(255, 218, 185), - "peru" => rgb(205, 133, 63), - "pink" => rgb(255, 192, 203), - "plum" => rgb(221, 160, 221), - "powderblue" => rgb(176, 224, 230), - "rebeccapurple" => rgb(102, 51, 153), - "rosybrown" => rgb(188, 143, 143), - "royalblue" => rgb(65, 105, 225), - "saddlebrown" => rgb(139, 69, 19), - "salmon" => rgb(250, 128, 114), - "sandybrown" => rgb(244, 164, 96), - "seagreen" => rgb(46, 139, 87), - "seashell" => rgb(255, 245, 238), - "sienna" => rgb(160, 82, 45), - "skyblue" => rgb(135, 206, 235), - "slateblue" => rgb(106, 90, 205), - "slategray" => rgb(112, 128, 144), - "slategrey" => rgb(112, 128, 144), - "snow" => rgb(255, 250, 250), - "springgreen" => rgb(0, 255, 127), - "steelblue" => rgb(70, 130, 180), - "tan" => rgb(210, 180, 140), - "thistle" => rgb(216, 191, 216), - "tomato" => rgb(255, 99, 71), - "turquoise" => rgb(64, 224, 208), - "violet" => rgb(238, 130, 238), - "wheat" => rgb(245, 222, 179), - "whitesmoke" => rgb(245, 245, 245), - "yellowgreen" => rgb(154, 205, 50), - - "transparent" => rgba(0, 0, 0, 0), - "currentcolor" => Ok(Color::CurrentColor), - _ => Err(()) + macro_rules! rgb { + ($red: expr, $green: expr, $blue: expr) => { + Color::RGBA(RGBA { + red: $red, + green: $green, + blue: $blue, + alpha: 255, + }) + } + } + ascii_case_insensitive_phf_map! { + KEYWORDS: Map = { + "black" => "rgb!(0, 0, 0)", + "silver" => "rgb!(192, 192, 192)", + "gray" => "rgb!(128, 128, 128)", + "white" => "rgb!(255, 255, 255)", + "maroon" => "rgb!(128, 0, 0)", + "red" => "rgb!(255, 0, 0)", + "purple" => "rgb!(128, 0, 128)", + "fuchsia" => "rgb!(255, 0, 255)", + "green" => "rgb!(0, 128, 0)", + "lime" => "rgb!(0, 255, 0)", + "olive" => "rgb!(128, 128, 0)", + "yellow" => "rgb!(255, 255, 0)", + "navy" => "rgb!(0, 0, 128)", + "blue" => "rgb!(0, 0, 255)", + "teal" => "rgb!(0, 128, 128)", + "aqua" => "rgb!(0, 255, 255)", + + "aliceblue" => "rgb!(240, 248, 255)", + "antiquewhite" => "rgb!(250, 235, 215)", + "aquamarine" => "rgb!(127, 255, 212)", + "azure" => "rgb!(240, 255, 255)", + "beige" => "rgb!(245, 245, 220)", + "bisque" => "rgb!(255, 228, 196)", + "blanchedalmond" => "rgb!(255, 235, 205)", + "blueviolet" => "rgb!(138, 43, 226)", + "brown" => "rgb!(165, 42, 42)", + "burlywood" => "rgb!(222, 184, 135)", + "cadetblue" => "rgb!(95, 158, 160)", + "chartreuse" => "rgb!(127, 255, 0)", + "chocolate" => "rgb!(210, 105, 30)", + "coral" => "rgb!(255, 127, 80)", + "cornflowerblue" => "rgb!(100, 149, 237)", + "cornsilk" => "rgb!(255, 248, 220)", + "crimson" => "rgb!(220, 20, 60)", + "cyan" => "rgb!(0, 255, 255)", + "darkblue" => "rgb!(0, 0, 139)", + "darkcyan" => "rgb!(0, 139, 139)", + "darkgoldenrod" => "rgb!(184, 134, 11)", + "darkgray" => "rgb!(169, 169, 169)", + "darkgreen" => "rgb!(0, 100, 0)", + "darkgrey" => "rgb!(169, 169, 169)", + "darkkhaki" => "rgb!(189, 183, 107)", + "darkmagenta" => "rgb!(139, 0, 139)", + "darkolivegreen" => "rgb!(85, 107, 47)", + "darkorange" => "rgb!(255, 140, 0)", + "darkorchid" => "rgb!(153, 50, 204)", + "darkred" => "rgb!(139, 0, 0)", + "darksalmon" => "rgb!(233, 150, 122)", + "darkseagreen" => "rgb!(143, 188, 143)", + "darkslateblue" => "rgb!(72, 61, 139)", + "darkslategray" => "rgb!(47, 79, 79)", + "darkslategrey" => "rgb!(47, 79, 79)", + "darkturquoise" => "rgb!(0, 206, 209)", + "darkviolet" => "rgb!(148, 0, 211)", + "deeppink" => "rgb!(255, 20, 147)", + "deepskyblue" => "rgb!(0, 191, 255)", + "dimgray" => "rgb!(105, 105, 105)", + "dimgrey" => "rgb!(105, 105, 105)", + "dodgerblue" => "rgb!(30, 144, 255)", + "firebrick" => "rgb!(178, 34, 34)", + "floralwhite" => "rgb!(255, 250, 240)", + "forestgreen" => "rgb!(34, 139, 34)", + "gainsboro" => "rgb!(220, 220, 220)", + "ghostwhite" => "rgb!(248, 248, 255)", + "gold" => "rgb!(255, 215, 0)", + "goldenrod" => "rgb!(218, 165, 32)", + "greenyellow" => "rgb!(173, 255, 47)", + "grey" => "rgb!(128, 128, 128)", + "honeydew" => "rgb!(240, 255, 240)", + "hotpink" => "rgb!(255, 105, 180)", + "indianred" => "rgb!(205, 92, 92)", + "indigo" => "rgb!(75, 0, 130)", + "ivory" => "rgb!(255, 255, 240)", + "khaki" => "rgb!(240, 230, 140)", + "lavender" => "rgb!(230, 230, 250)", + "lavenderblush" => "rgb!(255, 240, 245)", + "lawngreen" => "rgb!(124, 252, 0)", + "lemonchiffon" => "rgb!(255, 250, 205)", + "lightblue" => "rgb!(173, 216, 230)", + "lightcoral" => "rgb!(240, 128, 128)", + "lightcyan" => "rgb!(224, 255, 255)", + "lightgoldenrodyellow" => "rgb!(250, 250, 210)", + "lightgray" => "rgb!(211, 211, 211)", + "lightgreen" => "rgb!(144, 238, 144)", + "lightgrey" => "rgb!(211, 211, 211)", + "lightpink" => "rgb!(255, 182, 193)", + "lightsalmon" => "rgb!(255, 160, 122)", + "lightseagreen" => "rgb!(32, 178, 170)", + "lightskyblue" => "rgb!(135, 206, 250)", + "lightslategray" => "rgb!(119, 136, 153)", + "lightslategrey" => "rgb!(119, 136, 153)", + "lightsteelblue" => "rgb!(176, 196, 222)", + "lightyellow" => "rgb!(255, 255, 224)", + "limegreen" => "rgb!(50, 205, 50)", + "linen" => "rgb!(250, 240, 230)", + "magenta" => "rgb!(255, 0, 255)", + "mediumaquamarine" => "rgb!(102, 205, 170)", + "mediumblue" => "rgb!(0, 0, 205)", + "mediumorchid" => "rgb!(186, 85, 211)", + "mediumpurple" => "rgb!(147, 112, 219)", + "mediumseagreen" => "rgb!(60, 179, 113)", + "mediumslateblue" => "rgb!(123, 104, 238)", + "mediumspringgreen" => "rgb!(0, 250, 154)", + "mediumturquoise" => "rgb!(72, 209, 204)", + "mediumvioletred" => "rgb!(199, 21, 133)", + "midnightblue" => "rgb!(25, 25, 112)", + "mintcream" => "rgb!(245, 255, 250)", + "mistyrose" => "rgb!(255, 228, 225)", + "moccasin" => "rgb!(255, 228, 181)", + "navajowhite" => "rgb!(255, 222, 173)", + "oldlace" => "rgb!(253, 245, 230)", + "olivedrab" => "rgb!(107, 142, 35)", + "orange" => "rgb!(255, 165, 0)", + "orangered" => "rgb!(255, 69, 0)", + "orchid" => "rgb!(218, 112, 214)", + "palegoldenrod" => "rgb!(238, 232, 170)", + "palegreen" => "rgb!(152, 251, 152)", + "paleturquoise" => "rgb!(175, 238, 238)", + "palevioletred" => "rgb!(219, 112, 147)", + "papayawhip" => "rgb!(255, 239, 213)", + "peachpuff" => "rgb!(255, 218, 185)", + "peru" => "rgb!(205, 133, 63)", + "pink" => "rgb!(255, 192, 203)", + "plum" => "rgb!(221, 160, 221)", + "powderblue" => "rgb!(176, 224, 230)", + "rebeccapurple" => "rgb!(102, 51, 153)", + "rosybrown" => "rgb!(188, 143, 143)", + "royalblue" => "rgb!(65, 105, 225)", + "saddlebrown" => "rgb!(139, 69, 19)", + "salmon" => "rgb!(250, 128, 114)", + "sandybrown" => "rgb!(244, 164, 96)", + "seagreen" => "rgb!(46, 139, 87)", + "seashell" => "rgb!(255, 245, 238)", + "sienna" => "rgb!(160, 82, 45)", + "skyblue" => "rgb!(135, 206, 235)", + "slateblue" => "rgb!(106, 90, 205)", + "slategray" => "rgb!(112, 128, 144)", + "slategrey" => "rgb!(112, 128, 144)", + "snow" => "rgb!(255, 250, 250)", + "springgreen" => "rgb!(0, 255, 127)", + "steelblue" => "rgb!(70, 130, 180)", + "tan" => "rgb!(210, 180, 140)", + "thistle" => "rgb!(216, 191, 216)", + "tomato" => "rgb!(255, 99, 71)", + "turquoise" => "rgb!(64, 224, 208)", + "violet" => "rgb!(238, 130, 238)", + "wheat" => "rgb!(245, 222, 179)", + "whitesmoke" => "rgb!(245, 245, 245)", + "yellowgreen" => "rgb!(154, 205, 50)", + + "transparent" => "Color::RGBA(RGBA { red: 0, green: 0, blue: 0, alpha: 0 })", + "currentcolor" => "Color::CurrentColor", + } } + KEYWORDS::get(ident).cloned().ok_or(()) } diff --git a/src/lib.rs b/src/lib.rs index 6964352b..7cd366d4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -70,6 +70,7 @@ fn parse_border_spacing(_context: &ParserContext, input: &mut Parser) #[macro_use] extern crate cssparser_macros; #[macro_use] extern crate matches; +extern crate phf; #[cfg(test)] extern crate encoding_rs; #[cfg(test)] extern crate tempdir; #[cfg(test)] extern crate rustc_serialize; @@ -124,14 +125,8 @@ macro_rules! match_ignore_ascii_case { // finished parsing (@inner $value:expr, () -> ($(($string:expr => $result:expr))*) $fallback:expr ) => { { - #[derive(cssparser__match_ignore_ascii_case__derive)] - #[cssparser__match_ignore_ascii_case__data($(string = $string),+)] - #[allow(dead_code)] - struct Dummy; - - // MAX_LENGTH is generated by cssparser_MatchIgnoreAsciiCase_internal - let mut buffer: [u8; MAX_LENGTH] = unsafe { ::std::mem::uninitialized() }; - match $crate::_match_ignore_ascii_case__to_lowercase(&mut buffer, &$value[..]) { + _cssparser_internal__max_len!(&$value[..] => lowercase, $($string),+); + match lowercase { $( Some($string) => $result, )+ @@ -146,7 +141,46 @@ macro_rules! match_ignore_ascii_case { }; } -/// Implementation detail of the match_ignore_ascii_case! macro. +#[macro_export] +macro_rules! ascii_case_insensitive_phf_map { + ($Name: ident : Map<$ValueType: ty> = { + $( $key: expr => $value: expr, )* + }) => { + #[derive(cssparser__phf_map)] + #[cssparser__phf_map__kv_pairs( + $( + key = $key, + value = $value + ),+ + )] + struct $Name($ValueType); + + impl $Name { + #[inline] + fn get(input: &str) -> Option<&'static $ValueType> { + _cssparser_internal__max_len!(input => lowercase, $($key),+); + lowercase.and_then(|string| $Name::map().get(string)) + } + } + } +} + +#[macro_export] +macro_rules! _cssparser_internal__max_len { + ($input: expr => $output: ident, $($string: expr),+) => { + #[derive(cssparser__match_ignore_ascii_case__max_len)] + #[cssparser__match_ignore_ascii_case__data($(string = $string),+)] + #[allow(dead_code)] + struct Dummy; + + // MAX_LENGTH is generated by cssparser__match_ignore_ascii_case__max_len + let mut buffer: [u8; MAX_LENGTH] = unsafe { ::std::mem::uninitialized() }; + let $output = $crate::_match_ignore_ascii_case__to_lowercase(&mut buffer, $input); + } +} + + +/// Implementation detail of macros. #[doc(hidden)] #[allow(non_snake_case)] pub fn _match_ignore_ascii_case__to_lowercase<'a>(buffer: &'a mut [u8], input: &'a str) -> Option<&'a str> { From 5a177507887022a2cc3cbce170deee5dfec94df1 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 25 Feb 2017 12:59:15 +0100 Subject: [PATCH 06/43] Add comments to explain new `unsafe` code. --- src/lib.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 7cd366d4..377d2965 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -174,7 +174,13 @@ macro_rules! _cssparser_internal__max_len { struct Dummy; // MAX_LENGTH is generated by cssparser__match_ignore_ascii_case__max_len - let mut buffer: [u8; MAX_LENGTH] = unsafe { ::std::mem::uninitialized() }; + let mut buffer: [u8; MAX_LENGTH] = + // `buffer` is only used in `_match_ignore_ascii_case__to_lowercase`, + // which initializes with `copy_from_slice` the part of the buffer it uses, + // before it uses it. + unsafe { + ::std::mem::uninitialized() + }; let $output = $crate::_match_ignore_ascii_case__to_lowercase(&mut buffer, $input); } } @@ -188,6 +194,8 @@ pub fn _match_ignore_ascii_case__to_lowercase<'a>(buffer: &'a mut [u8], input: & if let Some(first_uppercase) = input.bytes().position(|byte| matches!(byte, b'A'...b'Z')) { buffer.copy_from_slice(input.as_bytes()); std::ascii::AsciiExt::make_ascii_lowercase(&mut buffer[first_uppercase..]); + // `buffer` was initialized to a copy of `input` (which is &str so well-formed UTF-8) + // then lowercased (which preserves UTF-8 well-formedness) unsafe { Some(::std::str::from_utf8_unchecked(buffer)) } From ea6843d8d50b5319a628285690b45ae38e91d851 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 25 Feb 2017 13:31:16 +0100 Subject: [PATCH 07/43] =?UTF-8?q?Don=E2=80=99t=20borrow=20$input=20in=20ma?= =?UTF-8?q?tch=5Fignore=5Fascii=5Fcase!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Let users pass a `&foo` borrow. `&Cow` can auto-deref to `&str`. --- src/lib.rs | 5 +---- src/nth.rs | 6 +++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 377d2965..039f531c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -106,9 +106,6 @@ match_ignore_ascii_case! { string, } ``` -The macro also takes a slice of the value, -so that a `String` or `CowString` could be passed directly instead of a `&str`. - */ #[macro_export] macro_rules! match_ignore_ascii_case { @@ -125,7 +122,7 @@ macro_rules! match_ignore_ascii_case { // finished parsing (@inner $value:expr, () -> ($(($string:expr => $result:expr))*) $fallback:expr ) => { { - _cssparser_internal__max_len!(&$value[..] => lowercase, $($string),+); + _cssparser_internal__max_len!($value => lowercase, $($string),+); match lowercase { $( Some($string) => $result, diff --git a/src/nth.rs b/src/nth.rs index 675f4ba8..ec735bc2 100644 --- a/src/nth.rs +++ b/src/nth.rs @@ -16,14 +16,14 @@ pub fn parse_nth(input: &mut Parser) -> Result<(i32, i32), ()> { Token::Number(value) => Ok((0, try!(value.int_value.ok_or(())) as i32)), Token::Dimension(value, unit) => { let a = try!(value.int_value.ok_or(())) as i32; - match_ignore_ascii_case! { unit, + match_ignore_ascii_case! { &unit, "n" => parse_b(input, a), "n-" => parse_signless_b(input, a, -1), _ => Ok((a, try!(parse_n_dash_digits(&*unit)))) } } Token::Ident(value) => { - match_ignore_ascii_case! { value, + match_ignore_ascii_case! { &value, "even" => Ok((2, 0)), "odd" => Ok((2, 1)), "n" => parse_b(input, 1), @@ -39,7 +39,7 @@ pub fn parse_nth(input: &mut Parser) -> Result<(i32, i32), ()> { } Token::Delim('+') => match try!(input.next_including_whitespace()) { Token::Ident(value) => { - match_ignore_ascii_case! { value, + match_ignore_ascii_case! { &value, "n" => parse_b(input, 1), "n-" => parse_signless_b(input, 1, -1), _ => Ok((1, try!(parse_n_dash_digits(&*value)))) From 983529f85f6153799be99cf77e32429b80e196aa Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 25 Feb 2017 13:44:02 +0100 Subject: [PATCH 08/43] Document macros. --- Cargo.toml | 3 -- macros/lib.rs | 12 ++++++- src/lib.rs | 92 ++++++++++++++++++++++++++++++++++++++++----------- 3 files changed, 84 insertions(+), 23 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index afa65899..c42d7e3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,9 +14,6 @@ build = "build.rs" exclude = ["src/css-parsing-tests"] -[lib] -doctest = false - [dev-dependencies] rustc-serialize = "0.3" tempdir = "0.3" diff --git a/macros/lib.rs b/macros/lib.rs index 790d583f..260f32d3 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -9,6 +9,9 @@ extern crate syn; use std::ascii::AsciiExt; +/// Find a `#[cssparser__match_ignore_ascii_case__data(string = "…", string = "…")]` attribute, +/// panic if any string contains ASCII uppercase letters, +/// emit a `MAX_LENGTH` constant with the length of the longest string. #[proc_macro_derive(cssparser__match_ignore_ascii_case__max_len, attributes(cssparser__match_ignore_ascii_case__data))] pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { @@ -30,7 +33,10 @@ pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { tokens.as_str().parse().unwrap() } - +/// On `struct $Name($ValueType)`, add a new static method +/// `fn map() -> &'static ::phf::Map<&'static str, $ValueType>`. +/// The map’s content is given as: +/// `#[cssparser__phf_map__kv_pairs(key = "…", value = "…", key = "…", value = "…")]`. #[proc_macro_derive(cssparser__phf_map, attributes(cssparser__phf_map__kv_pairs))] pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { @@ -70,6 +76,8 @@ pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { tokens.as_str().parse().unwrap() } +/// Panic if the first attribute isn’t `#[foo(…)]` with the given name, +/// or return the parameters. fn list_attr<'a>(input: &'a syn::DeriveInput, expected_name: &str) -> &'a [syn::NestedMetaItem] { match input.attrs[0].value { syn::MetaItem::List(ref name, ref nested) if name == expected_name => { @@ -81,6 +89,8 @@ fn list_attr<'a>(input: &'a syn::DeriveInput, expected_name: &str) -> &'a [syn:: } } +/// Panic if `sub_attr` is not a name-value like `foo = "…"` with the given name, +/// or return the value. fn sub_attr_value<'a>(sub_attr: &'a syn::NestedMetaItem, expected_name: &str) -> &'a str { match *sub_attr { syn::NestedMetaItem::MetaItem( diff --git a/src/lib.rs b/src/lib.rs index 039f531c..121bbab0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -89,24 +89,36 @@ pub use serializer::{ToCss, CssStringWriter, serialize_identifier, serialize_str pub use parser::{Parser, Delimiter, Delimiters, SourcePosition}; pub use unicode_range::UnicodeRange; - -/** - -This macro is equivalent to a `match` expression on an `&str` value, -but matching is case-insensitive in the ASCII range. - -Usage example: - -```{rust,ignore} -match_ignore_ascii_case! { string, - "foo" => Some(Foo), - "bar" => Some(Bar), - "baz" => Some(Baz), - _ => None -} -``` - -*/ +/// Expands to an expression equivalent to a `match` with string patterns, +/// but matching is case-insensitive in the ASCII range. +/// +/// Requirements: +/// +/// * The `cssparser_macros` crate must also be imported at the crate root +/// * The patterns must not contain ASCII upper case letters. (They must be already be lower-cased.) +/// +/// # Example +/// +/// ```rust +/// #[macro_use] extern crate cssparser; +/// #[macro_use] extern crate cssparser_macros; +/// +/// # fn main() {} // Make doctest not wrap everythig in its own main +/// # fn dummy(function_name: &String) { let _ = +/// match_ignore_ascii_case! { &function_name, +/// "rgb" => parse_rgb(..), +/// "rgba" => parse_rgba(..), +/// "hsl" => parse_hsl(..), +/// "hsla" => parse_hsla(..), +/// _ => Err("unknown function") +/// } +/// # ;} +/// # use std::ops::RangeFull; +/// # fn parse_rgb(_: RangeFull) -> Result<(), &'static str> { Err("") } +/// # fn parse_rgba(_: RangeFull) -> Result<(), &'static str> { Err("") } +/// # fn parse_hsl(_: RangeFull) -> Result<(), &'static str> { Err("") } +/// # fn parse_hsla(_: RangeFull) -> Result<(), &'static str> { Err("") } +/// ``` #[macro_export] macro_rules! match_ignore_ascii_case { // parse the last case plus the fallback @@ -138,6 +150,38 @@ macro_rules! match_ignore_ascii_case { }; } +/// Define a placeholder type `$Name` +/// with a method `fn get(input: &str) -> Option<&'static $ValueType>`. +/// +/// This method uses finds a match for the input string +/// in a [`phf` map](https://github.com/sfackler/rust-phf). +/// Matching is case-insensitive in the ASCII range. +/// +/// Requirements: +/// +/// * The `phf` and `cssparser_macros` crates must also be imported at the crate root +/// * The keys must not contain ASCII upper case letters. (They must be already be lower-cased.) +/// * The values must be given a strings that contain Rust syntax for a constant expression. +/// +/// ## Example: +/// +/// ```rust +/// extern crate phf; +/// #[macro_use] extern crate cssparser; +/// #[macro_use] extern crate cssparser_macros; +/// +/// # fn main() {} // Make doctest not wrap everythig in its own main +/// +/// fn color_rgb(input: &str) -> Option<(u8, u8, u8)> { +/// ascii_case_insensitive_phf_map! { +/// KEYWORDS: Map<(u8, u8, u8)> = { +/// "red" => "(255, 0, 0)", +/// "green" => "(0, 255, 0)", +/// "blue" => "(0, 0, 255)", +/// } +/// } +/// KEYWORDS::get(input).cloned() +/// } #[macro_export] macro_rules! ascii_case_insensitive_phf_map { ($Name: ident : Map<$ValueType: ty> = { @@ -162,7 +206,14 @@ macro_rules! ascii_case_insensitive_phf_map { } } +/// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. +/// +/// * Check at compile-time that none of the `$string`s contain ASCII uppercase letters +/// * Define a local variable named `$output` +/// to the result of calling `_match_ignore_ascii_case__to_lowercase` +/// with a stack-allocated buffer as long as the longest `$string`. #[macro_export] +#[doc(hidden)] macro_rules! _cssparser_internal__max_len { ($input: expr => $output: ident, $($string: expr),+) => { #[derive(cssparser__match_ignore_ascii_case__max_len)] @@ -183,7 +234,10 @@ macro_rules! _cssparser_internal__max_len { } -/// Implementation detail of macros. +/// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. +/// +/// Return `input`, lower-cased, unless larger than `buffer` +/// which is used temporary space for lower-casing a copy of `input` if necessary. #[doc(hidden)] #[allow(non_snake_case)] pub fn _match_ignore_ascii_case__to_lowercase<'a>(buffer: &'a mut [u8], input: &'a str) -> Option<&'a str> { From b0c427d8b8e4424fc20834ba4cfe9cc9b5e51782 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 25 Feb 2017 14:04:25 +0100 Subject: [PATCH 09/43] Remove the already-lowercase requirement in ascii_case_insensitive_phf_map! MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We can do the lower-casing at compile time in a proc-macro. Note that `match_ignore_ascii_case!` still has that requirement, since it’s `macro_rules!` that generates a `match` expression. --- macros/lib.rs | 45 ++++++++++++++++++++++++++++++--------------- src/lib.rs | 12 ++++++++---- 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/macros/lib.rs b/macros/lib.rs index 260f32d3..e0165242 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -9,21 +9,33 @@ extern crate syn; use std::ascii::AsciiExt; -/// Find a `#[cssparser__match_ignore_ascii_case__data(string = "…", string = "…")]` attribute, -/// panic if any string contains ASCII uppercase letters, -/// emit a `MAX_LENGTH` constant with the length of the longest string. -#[proc_macro_derive(cssparser__match_ignore_ascii_case__max_len, - attributes(cssparser__match_ignore_ascii_case__data))] -pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { +/// Find a `#[cssparser__assert_ascii_lowercase__data(string = "…", string = "…")]` attribute, +/// and panic if any string contains ASCII uppercase letters. +#[proc_macro_derive(cssparser__assert_ascii_lowercase, + attributes(cssparser__assert_ascii_lowercase__data))] +pub fn assert_ascii_lowercase(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let input = syn::parse_macro_input(&input.to_string()).unwrap(); - let data = list_attr(&input, "cssparser__match_ignore_ascii_case__data"); + let data = list_attr(&input, "cssparser__assert_ascii_lowercase__data"); - let lengths = data.iter().map(|sub_attr| { + for sub_attr in data { let string = sub_attr_value(sub_attr, "string"); assert_eq!(*string, string.to_ascii_lowercase(), "the expected strings must be given in ASCII lowercase"); - string.len() - }); + } + + "".parse().unwrap() +} + +/// Find a `#[cssparser__max_len__data(string = "…", string = "…")]` attribute, +/// panic if any string contains ASCII uppercase letters, +/// emit a `MAX_LENGTH` constant with the length of the longest string. +#[proc_macro_derive(cssparser__max_len, + attributes(cssparser__max_len__data))] +pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let input = syn::parse_macro_input(&input.to_string()).unwrap(); + let data = list_attr(&input, "cssparser__max_len__data"); + + let lengths = data.iter().map(|sub_attr| sub_attr_value(sub_attr, "string").len()); let max_length = lengths.max().expect("expected at least one string"); let tokens = quote! { @@ -37,6 +49,7 @@ pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { /// `fn map() -> &'static ::phf::Map<&'static str, $ValueType>`. /// The map’s content is given as: /// `#[cssparser__phf_map__kv_pairs(key = "…", value = "…", key = "…", value = "…")]`. +/// Keys are ASCII-lowercased. #[proc_macro_derive(cssparser__phf_map, attributes(cssparser__phf_map__kv_pairs))] pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { @@ -49,13 +62,15 @@ pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { _ => panic!("expected tuple struct newtype, got {:?}", input.body) }; - let kv_pairs = list_attr(&input, "cssparser__phf_map__kv_pairs"); - - let mut map = phf_codegen::Map::new(); - for chunk in kv_pairs.chunks(2) { + let pairs: Vec<_> = list_attr(&input, "cssparser__phf_map__kv_pairs").chunks(2).map(|chunk| { let key = sub_attr_value(&chunk[0], "key"); let value = sub_attr_value(&chunk[1], "value"); - map.entry(key, value); + (key.to_ascii_lowercase(), value) + }).collect(); + + let mut map = phf_codegen::Map::new(); + for &(ref key, value) in &pairs { + map.entry(&**key, value); } let mut initializer_bytes = Vec::::new(); diff --git a/src/lib.rs b/src/lib.rs index 121bbab0..467ea0eb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -134,6 +134,11 @@ macro_rules! match_ignore_ascii_case { // finished parsing (@inner $value:expr, () -> ($(($string:expr => $result:expr))*) $fallback:expr ) => { { + #[derive(cssparser__assert_ascii_lowercase)] + #[cssparser__assert_ascii_lowercase__data($(string = $string),+)] + #[allow(dead_code)] + struct Dummy; + _cssparser_internal__max_len!($value => lowercase, $($string),+); match lowercase { $( @@ -160,7 +165,6 @@ macro_rules! match_ignore_ascii_case { /// Requirements: /// /// * The `phf` and `cssparser_macros` crates must also be imported at the crate root -/// * The keys must not contain ASCII upper case letters. (They must be already be lower-cased.) /// * The values must be given a strings that contain Rust syntax for a constant expression. /// /// ## Example: @@ -216,10 +220,10 @@ macro_rules! ascii_case_insensitive_phf_map { #[doc(hidden)] macro_rules! _cssparser_internal__max_len { ($input: expr => $output: ident, $($string: expr),+) => { - #[derive(cssparser__match_ignore_ascii_case__max_len)] - #[cssparser__match_ignore_ascii_case__data($(string = $string),+)] + #[derive(cssparser__max_len)] + #[cssparser__max_len__data($(string = $string),+)] #[allow(dead_code)] - struct Dummy; + struct Dummy2; // MAX_LENGTH is generated by cssparser__match_ignore_ascii_case__max_len let mut buffer: [u8; MAX_LENGTH] = From 78996fc0a3c6d63fbfca332e3c0babdc732d018c Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 25 Feb 2017 14:06:28 +0100 Subject: [PATCH 10/43] Increment version for breaking changes in match_ignore_ascii_case * String patterns now need to be already ASCII lower-case * Input string is no longer implicitly borrowed, add `&` as needed. --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index c42d7e3e..211221fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "cssparser" -version = "0.10.0" +version = "0.11.0" authors = [ "Simon Sapin " ] description = "Rust implementation of CSS Syntax Level 3" From 0db4f8ed7dd72cbd08099b6b06a5b1ce68f36227 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 25 Feb 2017 15:41:32 +0100 Subject: [PATCH 11/43] Rename internal things per what they do. --- src/lib.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 467ea0eb..c2b9a84a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -139,7 +139,7 @@ macro_rules! match_ignore_ascii_case { #[allow(dead_code)] struct Dummy; - _cssparser_internal__max_len!($value => lowercase, $($string),+); + _cssparser_internal__to_lowercase!($value => lowercase, $($string),+); match lowercase { $( Some($string) => $result, @@ -203,7 +203,7 @@ macro_rules! ascii_case_insensitive_phf_map { impl $Name { #[inline] fn get(input: &str) -> Option<&'static $ValueType> { - _cssparser_internal__max_len!(input => lowercase, $($key),+); + _cssparser_internal__to_lowercase!(input => lowercase, $($key),+); lowercase.and_then(|string| $Name::map().get(string)) } } @@ -212,13 +212,14 @@ macro_rules! ascii_case_insensitive_phf_map { /// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. /// +/// **This macro is not part of the public API. It can change or be removed between any versions.** +/// /// * Check at compile-time that none of the `$string`s contain ASCII uppercase letters -/// * Define a local variable named `$output` -/// to the result of calling `_match_ignore_ascii_case__to_lowercase` +/// * Define a local variable named `$output` to the result of calling `_internal__to_lowercase` /// with a stack-allocated buffer as long as the longest `$string`. #[macro_export] #[doc(hidden)] -macro_rules! _cssparser_internal__max_len { +macro_rules! _cssparser_internal__to_lowercase { ($input: expr => $output: ident, $($string: expr),+) => { #[derive(cssparser__max_len)] #[cssparser__max_len__data($(string = $string),+)] @@ -227,24 +228,26 @@ macro_rules! _cssparser_internal__max_len { // MAX_LENGTH is generated by cssparser__match_ignore_ascii_case__max_len let mut buffer: [u8; MAX_LENGTH] = - // `buffer` is only used in `_match_ignore_ascii_case__to_lowercase`, + // `buffer` is only used in `_internal__to_lowercase`, // which initializes with `copy_from_slice` the part of the buffer it uses, // before it uses it. unsafe { ::std::mem::uninitialized() }; - let $output = $crate::_match_ignore_ascii_case__to_lowercase(&mut buffer, $input); + let $output = $crate::_internal__to_lowercase(&mut buffer, $input); } } /// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. /// +/// **This function is not part of the public API. It can change or be removed between any verisons.** +/// /// Return `input`, lower-cased, unless larger than `buffer` /// which is used temporary space for lower-casing a copy of `input` if necessary. #[doc(hidden)] #[allow(non_snake_case)] -pub fn _match_ignore_ascii_case__to_lowercase<'a>(buffer: &'a mut [u8], input: &'a str) -> Option<&'a str> { +pub fn _internal__to_lowercase<'a>(buffer: &'a mut [u8], input: &'a str) -> Option<&'a str> { if let Some(buffer) = buffer.get_mut(..input.len()) { if let Some(first_uppercase) = input.bytes().position(|byte| matches!(byte, b'A'...b'Z')) { buffer.copy_from_slice(input.as_bytes()); From c85990a1c8a92cc4d56e9101e857b225683ddb66 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 25 Feb 2017 17:46:35 +0100 Subject: [PATCH 12/43] Be more robust regarding attribute ordering in proc macros. --- macros/lib.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/macros/lib.rs b/macros/lib.rs index e0165242..0c408d4c 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -94,14 +94,15 @@ pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { /// Panic if the first attribute isn’t `#[foo(…)]` with the given name, /// or return the parameters. fn list_attr<'a>(input: &'a syn::DeriveInput, expected_name: &str) -> &'a [syn::NestedMetaItem] { - match input.attrs[0].value { - syn::MetaItem::List(ref name, ref nested) if name == expected_name => { - nested - } - _ => { - panic!("expected a {} attribute", expected_name) + for attr in &input.attrs { + match attr.value { + syn::MetaItem::List(ref name, ref nested) if name == expected_name => { + return nested + } + _ => {} } } + panic!("expected a {} attribute", expected_name) } /// Panic if `sub_attr` is not a name-value like `foo = "…"` with the given name, From df6892b17b17d94e50a9c96964c6da2e43f65b67 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 25 Feb 2017 17:51:29 +0100 Subject: [PATCH 13/43] Support macros being used in a module with #[deny(unsafe_code)] --- src/lib.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index c2b9a84a..270e2276 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -226,14 +226,14 @@ macro_rules! _cssparser_internal__to_lowercase { #[allow(dead_code)] struct Dummy2; - // MAX_LENGTH is generated by cssparser__match_ignore_ascii_case__max_len - let mut buffer: [u8; MAX_LENGTH] = - // `buffer` is only used in `_internal__to_lowercase`, - // which initializes with `copy_from_slice` the part of the buffer it uses, - // before it uses it. - unsafe { - ::std::mem::uninitialized() - }; + // mem::uninitialized() is ok because `buffer` is only used in `_internal__to_lowercase`, + // which initializes with `copy_from_slice` the part of the buffer it uses, + // before it uses it. + #[allow(unsafe_code)] + // MAX_LENGTH is generated by cssparser__max_len + let mut buffer: [u8; MAX_LENGTH] = unsafe { + ::std::mem::uninitialized() + }; let $output = $crate::_internal__to_lowercase(&mut buffer, $input); } } From 136c97a0f6040d810735deb8e418d2236bf6cf0b Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 25 Feb 2017 17:52:28 +0100 Subject: [PATCH 14/43] match_ignore_ascii_case: extend lifetime of input. --- src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 270e2276..08e7bd71 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -234,7 +234,8 @@ macro_rules! _cssparser_internal__to_lowercase { let mut buffer: [u8; MAX_LENGTH] = unsafe { ::std::mem::uninitialized() }; - let $output = $crate::_internal__to_lowercase(&mut buffer, $input); + let input: &str = $input; + let $output = $crate::_internal__to_lowercase(&mut buffer, input); } } From 138ccaf9bdd480f79e7e8e6ca8b8948310057397 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Sat, 25 Feb 2017 19:49:48 +0100 Subject: [PATCH 15/43] Remove an obsolete bit of comment. --- macros/lib.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/macros/lib.rs b/macros/lib.rs index 0c408d4c..a783147a 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -27,8 +27,7 @@ pub fn assert_ascii_lowercase(input: proc_macro::TokenStream) -> proc_macro::Tok } /// Find a `#[cssparser__max_len__data(string = "…", string = "…")]` attribute, -/// panic if any string contains ASCII uppercase letters, -/// emit a `MAX_LENGTH` constant with the length of the longest string. +/// and emit a `MAX_LENGTH` constant with the length of the longest string. #[proc_macro_derive(cssparser__max_len, attributes(cssparser__max_len__data))] pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { From 8c2f499939a0fbf2eeec055d309ebf314d803acb Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 27 Feb 2017 12:52:01 +0100 Subject: [PATCH 16/43] Make phf map macro take literal values rather than strings of Rust syntax MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … in the style of https://github.com/dtolnay/proc-macro-hack/ --- Cargo.toml | 4 +- macros/Cargo.toml | 5 +- macros/lib.rs | 75 +++++++++--- src/color.rs | 304 +++++++++++++++++++++++----------------------- src/lib.rs | 23 ++-- 5 files changed, 219 insertions(+), 192 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 211221fe..4068795f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "cssparser" -version = "0.11.0" +version = "0.12.0" authors = [ "Simon Sapin " ] description = "Rust implementation of CSS Syntax Level 3" @@ -20,7 +20,7 @@ tempdir = "0.3" encoding_rs = "0.5" [dependencies] -cssparser-macros = {path = "./macros", version = "0.1"} +cssparser-macros = {path = "./macros", version = "0.2"} heapsize = {version = "0.3", optional = true} matches = "0.1" phf = "0.7" diff --git a/macros/Cargo.toml b/macros/Cargo.toml index 2ca733c4..fd98d2cb 100644 --- a/macros/Cargo.toml +++ b/macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "cssparser-macros" -version = "0.1.0" +version = "0.2.0" authors = ["Simon Sapin "] description = "Procedural macros for cssparser" documentation = "https://docs.rs/cssparser-macros/" @@ -14,5 +14,4 @@ proc-macro = true [dependencies] phf_codegen = "0.7" quote = "0.3" -syn = "0.11" - +syn = {version = "0.11", features = ["full"]} diff --git a/macros/lib.rs b/macros/lib.rs index a783147a..bc35cfe5 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -44,32 +44,31 @@ pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { tokens.as_str().parse().unwrap() } -/// On `struct $Name($ValueType)`, add a new static method -/// `fn map() -> &'static ::phf::Map<&'static str, $ValueType>`. -/// The map’s content is given as: -/// `#[cssparser__phf_map__kv_pairs(key = "…", value = "…", key = "…", value = "…")]`. -/// Keys are ASCII-lowercased. -#[proc_macro_derive(cssparser__phf_map, - attributes(cssparser__phf_map__kv_pairs))] +/// ``` +/// impl $Name { +/// fn map() -> &'static ::phf::Map<&'static str, $ValueType> { … } +/// } +/// ``` +/// +/// Map keys are ASCII-lowercased. +#[proc_macro_derive(cssparser__phf_map)] pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let input = syn::parse_macro_input(&input.to_string()).unwrap(); let name = &input.ident; - let value_type = match input.body { - syn::Body::Struct(syn::VariantData::Tuple(ref fields)) if fields.len() == 1 => { - &fields[0].ty - } - _ => panic!("expected tuple struct newtype, got {:?}", input.body) - }; - - let pairs: Vec<_> = list_attr(&input, "cssparser__phf_map__kv_pairs").chunks(2).map(|chunk| { - let key = sub_attr_value(&chunk[0], "key"); - let value = sub_attr_value(&chunk[1], "value"); - (key.to_ascii_lowercase(), value) + let token_trees = find_smuggled_tokens(&input); + let value_type = &token_trees[0]; + let pairs: Vec<_> = token_trees[1..].chunks(2).map(|chunk| { + let key = match chunk[0] { + syn::TokenTree::Token(syn::Token::Literal(syn::Lit::Str(ref string, _))) => string, + _ => panic!("expected string literal, got {:?}", chunk[0]) + }; + let value = &chunk[1]; + (key.to_ascii_lowercase(), quote!(#value).to_string()) }).collect(); let mut map = phf_codegen::Map::new(); - for &(ref key, value) in &pairs { - map.entry(&**key, value); + for &(ref key, ref value) in &pairs { + map.entry(&**key, &**value); } let mut initializer_bytes = Vec::::new(); @@ -90,6 +89,42 @@ pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { tokens.as_str().parse().unwrap() } +/// Return the `…` part in: +/// +/// ```rust +/// enum $Name { +/// Input = (0, stringify!(…)).0 +/// } +/// ``` +fn find_smuggled_tokens(input: &syn::DeriveInput) -> &[syn::TokenTree] { + let discriminant = match input.body { + syn::Body::Enum(ref variants) if variants.len() == 1 => &variants[0].discriminant, + _ => panic!("expected single-variant enum, got {:?}", input.body) + }; + let tuple = match *discriminant { + Some(syn::ConstExpr::Other(syn::Expr { node: syn::ExprKind::TupField(ref t, 0), .. })) => t, + _ => panic!("expected a discriminant like tuple.0, got {:?}", discriminant) + }; + let expr = match **tuple { + syn::Expr { node: syn::ExprKind::Tup(ref values), .. } if values.len() == 2 => &values[1], + _ => panic!("expected non-empty tuple, got {:?}", tuple) + }; + let macro_args = match *expr { + syn::Expr { node: syn::ExprKind::Mac( + syn::Mac { ref tts, path: syn::Path { global: false, ref segments }} + ), .. } + if segments.len() == 1 + && segments[0] == syn::PathSegment::from("stringify") + && tts.len() == 1 + => &tts[0], + _ => panic!("expected a stringify!(…) macro, got {:?}", expr) + }; + match *macro_args { + syn::TokenTree::Delimited(syn::Delimited { ref tts, delim: syn::DelimToken::Paren }) => tts, + _ => panic!("expected (…) parentheses, got {:?}", macro_args) + } +} + /// Panic if the first attribute isn’t `#[foo(…)]` with the given name, /// or return the parameters. fn list_attr<'a>(input: &'a syn::DeriveInput, expected_name: &str) -> &'a [syn::NestedMetaItem] { diff --git a/src/color.rs b/src/color.rs index 85ae102a..343e9c5b 100644 --- a/src/color.rs +++ b/src/color.rs @@ -181,158 +181,158 @@ pub fn parse_color_keyword(ident: &str) -> Result { } ascii_case_insensitive_phf_map! { KEYWORDS: Map = { - "black" => "rgb!(0, 0, 0)", - "silver" => "rgb!(192, 192, 192)", - "gray" => "rgb!(128, 128, 128)", - "white" => "rgb!(255, 255, 255)", - "maroon" => "rgb!(128, 0, 0)", - "red" => "rgb!(255, 0, 0)", - "purple" => "rgb!(128, 0, 128)", - "fuchsia" => "rgb!(255, 0, 255)", - "green" => "rgb!(0, 128, 0)", - "lime" => "rgb!(0, 255, 0)", - "olive" => "rgb!(128, 128, 0)", - "yellow" => "rgb!(255, 255, 0)", - "navy" => "rgb!(0, 0, 128)", - "blue" => "rgb!(0, 0, 255)", - "teal" => "rgb!(0, 128, 128)", - "aqua" => "rgb!(0, 255, 255)", - - "aliceblue" => "rgb!(240, 248, 255)", - "antiquewhite" => "rgb!(250, 235, 215)", - "aquamarine" => "rgb!(127, 255, 212)", - "azure" => "rgb!(240, 255, 255)", - "beige" => "rgb!(245, 245, 220)", - "bisque" => "rgb!(255, 228, 196)", - "blanchedalmond" => "rgb!(255, 235, 205)", - "blueviolet" => "rgb!(138, 43, 226)", - "brown" => "rgb!(165, 42, 42)", - "burlywood" => "rgb!(222, 184, 135)", - "cadetblue" => "rgb!(95, 158, 160)", - "chartreuse" => "rgb!(127, 255, 0)", - "chocolate" => "rgb!(210, 105, 30)", - "coral" => "rgb!(255, 127, 80)", - "cornflowerblue" => "rgb!(100, 149, 237)", - "cornsilk" => "rgb!(255, 248, 220)", - "crimson" => "rgb!(220, 20, 60)", - "cyan" => "rgb!(0, 255, 255)", - "darkblue" => "rgb!(0, 0, 139)", - "darkcyan" => "rgb!(0, 139, 139)", - "darkgoldenrod" => "rgb!(184, 134, 11)", - "darkgray" => "rgb!(169, 169, 169)", - "darkgreen" => "rgb!(0, 100, 0)", - "darkgrey" => "rgb!(169, 169, 169)", - "darkkhaki" => "rgb!(189, 183, 107)", - "darkmagenta" => "rgb!(139, 0, 139)", - "darkolivegreen" => "rgb!(85, 107, 47)", - "darkorange" => "rgb!(255, 140, 0)", - "darkorchid" => "rgb!(153, 50, 204)", - "darkred" => "rgb!(139, 0, 0)", - "darksalmon" => "rgb!(233, 150, 122)", - "darkseagreen" => "rgb!(143, 188, 143)", - "darkslateblue" => "rgb!(72, 61, 139)", - "darkslategray" => "rgb!(47, 79, 79)", - "darkslategrey" => "rgb!(47, 79, 79)", - "darkturquoise" => "rgb!(0, 206, 209)", - "darkviolet" => "rgb!(148, 0, 211)", - "deeppink" => "rgb!(255, 20, 147)", - "deepskyblue" => "rgb!(0, 191, 255)", - "dimgray" => "rgb!(105, 105, 105)", - "dimgrey" => "rgb!(105, 105, 105)", - "dodgerblue" => "rgb!(30, 144, 255)", - "firebrick" => "rgb!(178, 34, 34)", - "floralwhite" => "rgb!(255, 250, 240)", - "forestgreen" => "rgb!(34, 139, 34)", - "gainsboro" => "rgb!(220, 220, 220)", - "ghostwhite" => "rgb!(248, 248, 255)", - "gold" => "rgb!(255, 215, 0)", - "goldenrod" => "rgb!(218, 165, 32)", - "greenyellow" => "rgb!(173, 255, 47)", - "grey" => "rgb!(128, 128, 128)", - "honeydew" => "rgb!(240, 255, 240)", - "hotpink" => "rgb!(255, 105, 180)", - "indianred" => "rgb!(205, 92, 92)", - "indigo" => "rgb!(75, 0, 130)", - "ivory" => "rgb!(255, 255, 240)", - "khaki" => "rgb!(240, 230, 140)", - "lavender" => "rgb!(230, 230, 250)", - "lavenderblush" => "rgb!(255, 240, 245)", - "lawngreen" => "rgb!(124, 252, 0)", - "lemonchiffon" => "rgb!(255, 250, 205)", - "lightblue" => "rgb!(173, 216, 230)", - "lightcoral" => "rgb!(240, 128, 128)", - "lightcyan" => "rgb!(224, 255, 255)", - "lightgoldenrodyellow" => "rgb!(250, 250, 210)", - "lightgray" => "rgb!(211, 211, 211)", - "lightgreen" => "rgb!(144, 238, 144)", - "lightgrey" => "rgb!(211, 211, 211)", - "lightpink" => "rgb!(255, 182, 193)", - "lightsalmon" => "rgb!(255, 160, 122)", - "lightseagreen" => "rgb!(32, 178, 170)", - "lightskyblue" => "rgb!(135, 206, 250)", - "lightslategray" => "rgb!(119, 136, 153)", - "lightslategrey" => "rgb!(119, 136, 153)", - "lightsteelblue" => "rgb!(176, 196, 222)", - "lightyellow" => "rgb!(255, 255, 224)", - "limegreen" => "rgb!(50, 205, 50)", - "linen" => "rgb!(250, 240, 230)", - "magenta" => "rgb!(255, 0, 255)", - "mediumaquamarine" => "rgb!(102, 205, 170)", - "mediumblue" => "rgb!(0, 0, 205)", - "mediumorchid" => "rgb!(186, 85, 211)", - "mediumpurple" => "rgb!(147, 112, 219)", - "mediumseagreen" => "rgb!(60, 179, 113)", - "mediumslateblue" => "rgb!(123, 104, 238)", - "mediumspringgreen" => "rgb!(0, 250, 154)", - "mediumturquoise" => "rgb!(72, 209, 204)", - "mediumvioletred" => "rgb!(199, 21, 133)", - "midnightblue" => "rgb!(25, 25, 112)", - "mintcream" => "rgb!(245, 255, 250)", - "mistyrose" => "rgb!(255, 228, 225)", - "moccasin" => "rgb!(255, 228, 181)", - "navajowhite" => "rgb!(255, 222, 173)", - "oldlace" => "rgb!(253, 245, 230)", - "olivedrab" => "rgb!(107, 142, 35)", - "orange" => "rgb!(255, 165, 0)", - "orangered" => "rgb!(255, 69, 0)", - "orchid" => "rgb!(218, 112, 214)", - "palegoldenrod" => "rgb!(238, 232, 170)", - "palegreen" => "rgb!(152, 251, 152)", - "paleturquoise" => "rgb!(175, 238, 238)", - "palevioletred" => "rgb!(219, 112, 147)", - "papayawhip" => "rgb!(255, 239, 213)", - "peachpuff" => "rgb!(255, 218, 185)", - "peru" => "rgb!(205, 133, 63)", - "pink" => "rgb!(255, 192, 203)", - "plum" => "rgb!(221, 160, 221)", - "powderblue" => "rgb!(176, 224, 230)", - "rebeccapurple" => "rgb!(102, 51, 153)", - "rosybrown" => "rgb!(188, 143, 143)", - "royalblue" => "rgb!(65, 105, 225)", - "saddlebrown" => "rgb!(139, 69, 19)", - "salmon" => "rgb!(250, 128, 114)", - "sandybrown" => "rgb!(244, 164, 96)", - "seagreen" => "rgb!(46, 139, 87)", - "seashell" => "rgb!(255, 245, 238)", - "sienna" => "rgb!(160, 82, 45)", - "skyblue" => "rgb!(135, 206, 235)", - "slateblue" => "rgb!(106, 90, 205)", - "slategray" => "rgb!(112, 128, 144)", - "slategrey" => "rgb!(112, 128, 144)", - "snow" => "rgb!(255, 250, 250)", - "springgreen" => "rgb!(0, 255, 127)", - "steelblue" => "rgb!(70, 130, 180)", - "tan" => "rgb!(210, 180, 140)", - "thistle" => "rgb!(216, 191, 216)", - "tomato" => "rgb!(255, 99, 71)", - "turquoise" => "rgb!(64, 224, 208)", - "violet" => "rgb!(238, 130, 238)", - "wheat" => "rgb!(245, 222, 179)", - "whitesmoke" => "rgb!(245, 245, 245)", - "yellowgreen" => "rgb!(154, 205, 50)", - - "transparent" => "Color::RGBA(RGBA { red: 0, green: 0, blue: 0, alpha: 0 })", - "currentcolor" => "Color::CurrentColor", + "black" => rgb!(0, 0, 0), + "silver" => rgb!(192, 192, 192), + "gray" => rgb!(128, 128, 128), + "white" => rgb!(255, 255, 255), + "maroon" => rgb!(128, 0, 0), + "red" => rgb!(255, 0, 0), + "purple" => rgb!(128, 0, 128), + "fuchsia" => rgb!(255, 0, 255), + "green" => rgb!(0, 128, 0), + "lime" => rgb!(0, 255, 0), + "olive" => rgb!(128, 128, 0), + "yellow" => rgb!(255, 255, 0), + "navy" => rgb!(0, 0, 128), + "blue" => rgb!(0, 0, 255), + "teal" => rgb!(0, 128, 128), + "aqua" => rgb!(0, 255, 255), + + "aliceblue" => rgb!(240, 248, 255), + "antiquewhite" => rgb!(250, 235, 215), + "aquamarine" => rgb!(127, 255, 212), + "azure" => rgb!(240, 255, 255), + "beige" => rgb!(245, 245, 220), + "bisque" => rgb!(255, 228, 196), + "blanchedalmond" => rgb!(255, 235, 205), + "blueviolet" => rgb!(138, 43, 226), + "brown" => rgb!(165, 42, 42), + "burlywood" => rgb!(222, 184, 135), + "cadetblue" => rgb!(95, 158, 160), + "chartreuse" => rgb!(127, 255, 0), + "chocolate" => rgb!(210, 105, 30), + "coral" => rgb!(255, 127, 80), + "cornflowerblue" => rgb!(100, 149, 237), + "cornsilk" => rgb!(255, 248, 220), + "crimson" => rgb!(220, 20, 60), + "cyan" => rgb!(0, 255, 255), + "darkblue" => rgb!(0, 0, 139), + "darkcyan" => rgb!(0, 139, 139), + "darkgoldenrod" => rgb!(184, 134, 11), + "darkgray" => rgb!(169, 169, 169), + "darkgreen" => rgb!(0, 100, 0), + "darkgrey" => rgb!(169, 169, 169), + "darkkhaki" => rgb!(189, 183, 107), + "darkmagenta" => rgb!(139, 0, 139), + "darkolivegreen" => rgb!(85, 107, 47), + "darkorange" => rgb!(255, 140, 0), + "darkorchid" => rgb!(153, 50, 204), + "darkred" => rgb!(139, 0, 0), + "darksalmon" => rgb!(233, 150, 122), + "darkseagreen" => rgb!(143, 188, 143), + "darkslateblue" => rgb!(72, 61, 139), + "darkslategray" => rgb!(47, 79, 79), + "darkslategrey" => rgb!(47, 79, 79), + "darkturquoise" => rgb!(0, 206, 209), + "darkviolet" => rgb!(148, 0, 211), + "deeppink" => rgb!(255, 20, 147), + "deepskyblue" => rgb!(0, 191, 255), + "dimgray" => rgb!(105, 105, 105), + "dimgrey" => rgb!(105, 105, 105), + "dodgerblue" => rgb!(30, 144, 255), + "firebrick" => rgb!(178, 34, 34), + "floralwhite" => rgb!(255, 250, 240), + "forestgreen" => rgb!(34, 139, 34), + "gainsboro" => rgb!(220, 220, 220), + "ghostwhite" => rgb!(248, 248, 255), + "gold" => rgb!(255, 215, 0), + "goldenrod" => rgb!(218, 165, 32), + "greenyellow" => rgb!(173, 255, 47), + "grey" => rgb!(128, 128, 128), + "honeydew" => rgb!(240, 255, 240), + "hotpink" => rgb!(255, 105, 180), + "indianred" => rgb!(205, 92, 92), + "indigo" => rgb!(75, 0, 130), + "ivory" => rgb!(255, 255, 240), + "khaki" => rgb!(240, 230, 140), + "lavender" => rgb!(230, 230, 250), + "lavenderblush" => rgb!(255, 240, 245), + "lawngreen" => rgb!(124, 252, 0), + "lemonchiffon" => rgb!(255, 250, 205), + "lightblue" => rgb!(173, 216, 230), + "lightcoral" => rgb!(240, 128, 128), + "lightcyan" => rgb!(224, 255, 255), + "lightgoldenrodyellow" => rgb!(250, 250, 210), + "lightgray" => rgb!(211, 211, 211), + "lightgreen" => rgb!(144, 238, 144), + "lightgrey" => rgb!(211, 211, 211), + "lightpink" => rgb!(255, 182, 193), + "lightsalmon" => rgb!(255, 160, 122), + "lightseagreen" => rgb!(32, 178, 170), + "lightskyblue" => rgb!(135, 206, 250), + "lightslategray" => rgb!(119, 136, 153), + "lightslategrey" => rgb!(119, 136, 153), + "lightsteelblue" => rgb!(176, 196, 222), + "lightyellow" => rgb!(255, 255, 224), + "limegreen" => rgb!(50, 205, 50), + "linen" => rgb!(250, 240, 230), + "magenta" => rgb!(255, 0, 255), + "mediumaquamarine" => rgb!(102, 205, 170), + "mediumblue" => rgb!(0, 0, 205), + "mediumorchid" => rgb!(186, 85, 211), + "mediumpurple" => rgb!(147, 112, 219), + "mediumseagreen" => rgb!(60, 179, 113), + "mediumslateblue" => rgb!(123, 104, 238), + "mediumspringgreen" => rgb!(0, 250, 154), + "mediumturquoise" => rgb!(72, 209, 204), + "mediumvioletred" => rgb!(199, 21, 133), + "midnightblue" => rgb!(25, 25, 112), + "mintcream" => rgb!(245, 255, 250), + "mistyrose" => rgb!(255, 228, 225), + "moccasin" => rgb!(255, 228, 181), + "navajowhite" => rgb!(255, 222, 173), + "oldlace" => rgb!(253, 245, 230), + "olivedrab" => rgb!(107, 142, 35), + "orange" => rgb!(255, 165, 0), + "orangered" => rgb!(255, 69, 0), + "orchid" => rgb!(218, 112, 214), + "palegoldenrod" => rgb!(238, 232, 170), + "palegreen" => rgb!(152, 251, 152), + "paleturquoise" => rgb!(175, 238, 238), + "palevioletred" => rgb!(219, 112, 147), + "papayawhip" => rgb!(255, 239, 213), + "peachpuff" => rgb!(255, 218, 185), + "peru" => rgb!(205, 133, 63), + "pink" => rgb!(255, 192, 203), + "plum" => rgb!(221, 160, 221), + "powderblue" => rgb!(176, 224, 230), + "rebeccapurple" => rgb!(102, 51, 153), + "rosybrown" => rgb!(188, 143, 143), + "royalblue" => rgb!(65, 105, 225), + "saddlebrown" => rgb!(139, 69, 19), + "salmon" => rgb!(250, 128, 114), + "sandybrown" => rgb!(244, 164, 96), + "seagreen" => rgb!(46, 139, 87), + "seashell" => rgb!(255, 245, 238), + "sienna" => rgb!(160, 82, 45), + "skyblue" => rgb!(135, 206, 235), + "slateblue" => rgb!(106, 90, 205), + "slategray" => rgb!(112, 128, 144), + "slategrey" => rgb!(112, 128, 144), + "snow" => rgb!(255, 250, 250), + "springgreen" => rgb!(0, 255, 127), + "steelblue" => rgb!(70, 130, 180), + "tan" => rgb!(210, 180, 140), + "thistle" => rgb!(216, 191, 216), + "tomato" => rgb!(255, 99, 71), + "turquoise" => rgb!(64, 224, 208), + "violet" => rgb!(238, 130, 238), + "wheat" => rgb!(245, 222, 179), + "whitesmoke" => rgb!(245, 245, 245), + "yellowgreen" => rgb!(154, 205, 50), + + "transparent" => Color::RGBA(RGBA { red: 0, green: 0, blue: 0, alpha: 0 }), + "currentcolor" => Color::CurrentColor, } } KEYWORDS::get(ident).cloned().ok_or(()) diff --git a/src/lib.rs b/src/lib.rs index 08e7bd71..a61fb353 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -162,10 +162,7 @@ macro_rules! match_ignore_ascii_case { /// in a [`phf` map](https://github.com/sfackler/rust-phf). /// Matching is case-insensitive in the ASCII range. /// -/// Requirements: -/// -/// * The `phf` and `cssparser_macros` crates must also be imported at the crate root -/// * The values must be given a strings that contain Rust syntax for a constant expression. +/// The `phf` and `cssparser_macros` crates must also be imported at the crate root /// /// ## Example: /// @@ -179,9 +176,9 @@ macro_rules! match_ignore_ascii_case { /// fn color_rgb(input: &str) -> Option<(u8, u8, u8)> { /// ascii_case_insensitive_phf_map! { /// KEYWORDS: Map<(u8, u8, u8)> = { -/// "red" => "(255, 0, 0)", -/// "green" => "(0, 255, 0)", -/// "blue" => "(0, 0, 255)", +/// "red" => (255, 0, 0), +/// "green" => (0, 255, 0), +/// "blue" => (0, 0, 255), /// } /// } /// KEYWORDS::get(input).cloned() @@ -192,13 +189,10 @@ macro_rules! ascii_case_insensitive_phf_map { $( $key: expr => $value: expr, )* }) => { #[derive(cssparser__phf_map)] - #[cssparser__phf_map__kv_pairs( - $( - key = $key, - value = $value - ),+ - )] - struct $Name($ValueType); + #[allow(unused)] + enum $Name { + Input = (0, stringify!( ($ValueType) $( $key ($value) )+ )).0 + } impl $Name { #[inline] @@ -239,7 +233,6 @@ macro_rules! _cssparser_internal__to_lowercase { } } - /// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. /// /// **This function is not part of the public API. It can change or be removed between any verisons.** From 0ead1b54496dbb1e4d575d876736a0452e8dcc28 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 27 Feb 2017 14:36:58 +0100 Subject: [PATCH 17/43] Use the enum discriminant trick for match_ignore_ascii_case too --- macros/lib.rs | 59 ++++++++++++--------------------------------------- src/lib.rs | 14 ++++++------ 2 files changed, 22 insertions(+), 51 deletions(-) diff --git a/macros/lib.rs b/macros/lib.rs index bc35cfe5..0bcc879b 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -9,32 +9,27 @@ extern crate syn; use std::ascii::AsciiExt; -/// Find a `#[cssparser__assert_ascii_lowercase__data(string = "…", string = "…")]` attribute, -/// and panic if any string contains ASCII uppercase letters. -#[proc_macro_derive(cssparser__assert_ascii_lowercase, - attributes(cssparser__assert_ascii_lowercase__data))] +/// Panic if any string contains ASCII uppercase letters. +#[proc_macro_derive(cssparser__assert_ascii_lowercase)] pub fn assert_ascii_lowercase(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let input = syn::parse_macro_input(&input.to_string()).unwrap(); - let data = list_attr(&input, "cssparser__assert_ascii_lowercase__data"); - for sub_attr in data { - let string = sub_attr_value(sub_attr, "string"); + for token in find_smuggled_tokens(&input) { + let string = string_literal(token); assert_eq!(*string, string.to_ascii_lowercase(), - "the expected strings must be given in ASCII lowercase"); + "the string patterns must be given in ASCII lowercase"); } "".parse().unwrap() } -/// Find a `#[cssparser__max_len__data(string = "…", string = "…")]` attribute, /// and emit a `MAX_LENGTH` constant with the length of the longest string. -#[proc_macro_derive(cssparser__max_len, - attributes(cssparser__max_len__data))] +#[proc_macro_derive(cssparser__max_len)] pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let input = syn::parse_macro_input(&input.to_string()).unwrap(); - let data = list_attr(&input, "cssparser__max_len__data"); - let lengths = data.iter().map(|sub_attr| sub_attr_value(sub_attr, "string").len()); + let token_trees = find_smuggled_tokens(&input); + let lengths = token_trees.iter().map(|tt| string_literal(tt).len()); let max_length = lengths.max().expect("expected at least one string"); let tokens = quote! { @@ -55,13 +50,11 @@ pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let input = syn::parse_macro_input(&input.to_string()).unwrap(); let name = &input.ident; + let token_trees = find_smuggled_tokens(&input); let value_type = &token_trees[0]; let pairs: Vec<_> = token_trees[1..].chunks(2).map(|chunk| { - let key = match chunk[0] { - syn::TokenTree::Token(syn::Token::Literal(syn::Lit::Str(ref string, _))) => string, - _ => panic!("expected string literal, got {:?}", chunk[0]) - }; + let key = string_literal(&chunk[0]); let value = &chunk[1]; (key.to_ascii_lowercase(), quote!(#value).to_string()) }).collect(); @@ -125,33 +118,9 @@ fn find_smuggled_tokens(input: &syn::DeriveInput) -> &[syn::TokenTree] { } } -/// Panic if the first attribute isn’t `#[foo(…)]` with the given name, -/// or return the parameters. -fn list_attr<'a>(input: &'a syn::DeriveInput, expected_name: &str) -> &'a [syn::NestedMetaItem] { - for attr in &input.attrs { - match attr.value { - syn::MetaItem::List(ref name, ref nested) if name == expected_name => { - return nested - } - _ => {} - } - } - panic!("expected a {} attribute", expected_name) -} - -/// Panic if `sub_attr` is not a name-value like `foo = "…"` with the given name, -/// or return the value. -fn sub_attr_value<'a>(sub_attr: &'a syn::NestedMetaItem, expected_name: &str) -> &'a str { - match *sub_attr { - syn::NestedMetaItem::MetaItem( - syn::MetaItem::NameValue(ref name, syn::Lit::Str(ref value, _)) - ) - if name == expected_name => { - value - } - _ => { - panic!("expected a `{} = \"…\"` parameter to the attribute, got {:?}", - expected_name, sub_attr) - } +fn string_literal(token: &syn::TokenTree) -> &str { + match *token { + syn::TokenTree::Token(syn::Token::Literal(syn::Lit::Str(ref string, _))) => string, + _ => panic!("expected string literal, got {:?}", token) } } diff --git a/src/lib.rs b/src/lib.rs index a61fb353..a75131b2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -135,9 +135,10 @@ macro_rules! match_ignore_ascii_case { (@inner $value:expr, () -> ($(($string:expr => $result:expr))*) $fallback:expr ) => { { #[derive(cssparser__assert_ascii_lowercase)] - #[cssparser__assert_ascii_lowercase__data($(string = $string),+)] - #[allow(dead_code)] - struct Dummy; + #[allow(unused)] + enum Dummy { + Input = (0, stringify!( $( $string )+ )).0 + } _cssparser_internal__to_lowercase!($value => lowercase, $($string),+); match lowercase { @@ -216,9 +217,10 @@ macro_rules! ascii_case_insensitive_phf_map { macro_rules! _cssparser_internal__to_lowercase { ($input: expr => $output: ident, $($string: expr),+) => { #[derive(cssparser__max_len)] - #[cssparser__max_len__data($(string = $string),+)] - #[allow(dead_code)] - struct Dummy2; + #[allow(unused)] + enum Dummy2 { + Input = (0, stringify!( $( $string )+ )).0 + } // mem::uninitialized() is ok because `buffer` is only used in `_internal__to_lowercase`, // which initializes with `copy_from_slice` the part of the buffer it uses, From d2cae6c6400f4120025718978cc73d43f4342ac9 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 27 Feb 2017 14:59:32 +0100 Subject: [PATCH 18/43] Random macro refactoring --- macros/lib.rs | 28 +++++++------------- src/color.rs | 4 +-- src/lib.rs | 72 ++++++++++++++++++++++++++++----------------------- 3 files changed, 51 insertions(+), 53 deletions(-) diff --git a/macros/lib.rs b/macros/lib.rs index 0bcc879b..b59fe571 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -23,7 +23,7 @@ pub fn assert_ascii_lowercase(input: proc_macro::TokenStream) -> proc_macro::Tok "".parse().unwrap() } -/// and emit a `MAX_LENGTH` constant with the length of the longest string. +/// Emit a `MAX_LENGTH` constant with the length of the longest string. #[proc_macro_derive(cssparser__max_len)] pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let input = syn::parse_macro_input(&input.to_string()).unwrap(); @@ -40,16 +40,13 @@ pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { } /// ``` -/// impl $Name { -/// fn map() -> &'static ::phf::Map<&'static str, $ValueType> { … } -/// } +/// static MAP: &'static ::phf::Map<&'static str, $ValueType> = …; /// ``` /// /// Map keys are ASCII-lowercased. #[proc_macro_derive(cssparser__phf_map)] pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let input = syn::parse_macro_input(&input.to_string()).unwrap(); - let name = &input.ident; let token_trees = find_smuggled_tokens(&input); let value_type = &token_trees[0]; @@ -64,20 +61,13 @@ pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { map.entry(&**key, &**value); } - let mut initializer_bytes = Vec::::new(); - let mut initializer_tokens = quote::Tokens::new(); - map.build(&mut initializer_bytes).unwrap(); - initializer_tokens.append(::std::str::from_utf8(&initializer_bytes).unwrap()); - - let tokens = quote! { - impl #name { - #[inline] - fn map() -> &'static ::phf::Map<&'static str, #value_type> { - static MAP: ::phf::Map<&'static str, #value_type> = #initializer_tokens; - &MAP - } - } + let mut tokens = quote! { + static MAP: ::phf::Map<&'static str, #value_type> = }; + let mut initializer_bytes = Vec::new(); + map.build(&mut initializer_bytes).unwrap(); + tokens.append(::std::str::from_utf8(&initializer_bytes).unwrap()); + tokens.append(";"); tokens.as_str().parse().unwrap() } @@ -85,7 +75,7 @@ pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { /// Return the `…` part in: /// /// ```rust -/// enum $Name { +/// enum Somthing { /// Input = (0, stringify!(…)).0 /// } /// ``` diff --git a/src/color.rs b/src/color.rs index 343e9c5b..ea65f549 100644 --- a/src/color.rs +++ b/src/color.rs @@ -180,7 +180,7 @@ pub fn parse_color_keyword(ident: &str) -> Result { } } ascii_case_insensitive_phf_map! { - KEYWORDS: Map = { + keyword -> Color = { "black" => rgb!(0, 0, 0), "silver" => rgb!(192, 192, 192), "gray" => rgb!(128, 128, 128), @@ -335,7 +335,7 @@ pub fn parse_color_keyword(ident: &str) -> Result { "currentcolor" => Color::CurrentColor, } } - KEYWORDS::get(ident).cloned().ok_or(()) + keyword(ident).cloned().ok_or(()) } diff --git a/src/lib.rs b/src/lib.rs index a75131b2..82ed067d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -134,18 +134,18 @@ macro_rules! match_ignore_ascii_case { // finished parsing (@inner $value:expr, () -> ($(($string:expr => $result:expr))*) $fallback:expr ) => { { - #[derive(cssparser__assert_ascii_lowercase)] - #[allow(unused)] - enum Dummy { - Input = (0, stringify!( $( $string )+ )).0 + _cssparser_internal__pretend_proc_macro! { + cssparser__assert_ascii_lowercase!( $( $string )+ ) } - _cssparser_internal__to_lowercase!($value => lowercase, $($string),+); - match lowercase { - $( - Some($string) => $result, - )+ - _ => $fallback + { + _cssparser_internal__to_lowercase!($value => lowercase, $($string),+); + match lowercase { + $( + Some($string) => $result, + )+ + _ => $fallback + } } } }; @@ -156,11 +156,11 @@ macro_rules! match_ignore_ascii_case { }; } -/// Define a placeholder type `$Name` -/// with a method `fn get(input: &str) -> Option<&'static $ValueType>`. +/// Define a function `$name(&str) -> Option<&'static $ValueType>` /// -/// This method uses finds a match for the input string -/// in a [`phf` map](https://github.com/sfackler/rust-phf). +/// The function finds a match for the input string +/// in a [`phf` map](https://github.com/sfackler/rust-phf) +/// and returns a reference to the corresponding value. /// Matching is case-insensitive in the ASCII range. /// /// The `phf` and `cssparser_macros` crates must also be imported at the crate root @@ -176,30 +176,25 @@ macro_rules! match_ignore_ascii_case { /// /// fn color_rgb(input: &str) -> Option<(u8, u8, u8)> { /// ascii_case_insensitive_phf_map! { -/// KEYWORDS: Map<(u8, u8, u8)> = { +/// keyword -> (u8, u8, u8) = { /// "red" => (255, 0, 0), /// "green" => (0, 255, 0), /// "blue" => (0, 0, 255), /// } /// } -/// KEYWORDS::get(input).cloned() +/// keyword(input).cloned() /// } #[macro_export] macro_rules! ascii_case_insensitive_phf_map { - ($Name: ident : Map<$ValueType: ty> = { - $( $key: expr => $value: expr, )* - }) => { - #[derive(cssparser__phf_map)] - #[allow(unused)] - enum $Name { - Input = (0, stringify!( ($ValueType) $( $key ($value) )+ )).0 - } + ($name: ident -> $ValueType: ty = { $( $key: expr => $value: expr, )* }) => { + fn $name(input: &str) -> Option<&'static $ValueType> { + _cssparser_internal__pretend_proc_macro! { + cssparser__phf_map!( ($ValueType) $( $key ($value) )+ ) + } - impl $Name { - #[inline] - fn get(input: &str) -> Option<&'static $ValueType> { + { _cssparser_internal__to_lowercase!(input => lowercase, $($key),+); - lowercase.and_then(|string| $Name::map().get(string)) + lowercase.and_then(|s| MAP.get(s)) } } } @@ -216,10 +211,8 @@ macro_rules! ascii_case_insensitive_phf_map { #[doc(hidden)] macro_rules! _cssparser_internal__to_lowercase { ($input: expr => $output: ident, $($string: expr),+) => { - #[derive(cssparser__max_len)] - #[allow(unused)] - enum Dummy2 { - Input = (0, stringify!( $( $string )+ )).0 + _cssparser_internal__pretend_proc_macro! { + cssparser__max_len!( $( $string )+ ) } // mem::uninitialized() is ok because `buffer` is only used in `_internal__to_lowercase`, @@ -235,6 +228,21 @@ macro_rules! _cssparser_internal__to_lowercase { } } +/// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. +/// +/// **This macro is not part of the public API. It can change or be removed between any versions.** +#[macro_export] +#[doc(hidden)] +macro_rules! _cssparser_internal__pretend_proc_macro { + ($macro_name: ident ! ( $($tt: tt)* )) => { + #[derive($macro_name)] + #[allow(unused)] + enum Dummy { + Input = (0, stringify!( $( $tt )* )).0 + } + } +} + /// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. /// /// **This function is not part of the public API. It can change or be removed between any verisons.** From 54cb055c3ddb7fc15f16de12e0e2f6ca286301b5 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 27 Feb 2017 15:04:53 +0100 Subject: [PATCH 19/43] Move match_byte.rs out of src/ --- build.rs | 10 +++++----- {src/macros => build}/match_byte.rs | 0 src/macros/mod.rs | 5 ----- 3 files changed, 5 insertions(+), 10 deletions(-) rename {src/macros => build}/match_byte.rs (100%) delete mode 100644 src/macros/mod.rs diff --git a/build.rs b/build.rs index 30e3d8b1..322c1790 100644 --- a/build.rs +++ b/build.rs @@ -16,18 +16,18 @@ mod codegen { } #[cfg(not(feature = "dummy_match_byte"))] -#[path = "src/macros/mod.rs"] -mod macros; +#[path = "build/match_byte.rs"] +mod match_byte; #[cfg(not(feature = "dummy_match_byte"))] mod codegen { - use macros; + use match_byte; use std::env; use std::path::Path; pub fn main(tokenizer_rs: &Path) { - macros::match_byte::expand(tokenizer_rs, - &Path::new(&env::var("OUT_DIR").unwrap()).join("tokenizer.rs")); + match_byte::expand(tokenizer_rs, + &Path::new(&env::var("OUT_DIR").unwrap()).join("tokenizer.rs")); } } diff --git a/src/macros/match_byte.rs b/build/match_byte.rs similarity index 100% rename from src/macros/match_byte.rs rename to build/match_byte.rs diff --git a/src/macros/mod.rs b/src/macros/mod.rs deleted file mode 100644 index 6799e549..00000000 --- a/src/macros/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -pub mod match_byte; From d517090d40a07b3073aff6bd6e247b3ecfe4111a Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 27 Feb 2017 15:08:14 +0100 Subject: [PATCH 20/43] Move macro_rules! macros into their own file. --- src/lib.rs | 195 +------------------------------------------------ src/macros.rs | 198 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 201 insertions(+), 192 deletions(-) create mode 100644 src/macros.rs diff --git a/src/lib.rs b/src/lib.rs index 82ed067d..32c13a89 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -89,202 +89,13 @@ pub use serializer::{ToCss, CssStringWriter, serialize_identifier, serialize_str pub use parser::{Parser, Delimiter, Delimiters, SourcePosition}; pub use unicode_range::UnicodeRange; -/// Expands to an expression equivalent to a `match` with string patterns, -/// but matching is case-insensitive in the ASCII range. -/// -/// Requirements: -/// -/// * The `cssparser_macros` crate must also be imported at the crate root -/// * The patterns must not contain ASCII upper case letters. (They must be already be lower-cased.) -/// -/// # Example -/// -/// ```rust -/// #[macro_use] extern crate cssparser; -/// #[macro_use] extern crate cssparser_macros; -/// -/// # fn main() {} // Make doctest not wrap everythig in its own main -/// # fn dummy(function_name: &String) { let _ = -/// match_ignore_ascii_case! { &function_name, -/// "rgb" => parse_rgb(..), -/// "rgba" => parse_rgba(..), -/// "hsl" => parse_hsl(..), -/// "hsla" => parse_hsla(..), -/// _ => Err("unknown function") -/// } -/// # ;} -/// # use std::ops::RangeFull; -/// # fn parse_rgb(_: RangeFull) -> Result<(), &'static str> { Err("") } -/// # fn parse_rgba(_: RangeFull) -> Result<(), &'static str> { Err("") } -/// # fn parse_hsl(_: RangeFull) -> Result<(), &'static str> { Err("") } -/// # fn parse_hsla(_: RangeFull) -> Result<(), &'static str> { Err("") } -/// ``` -#[macro_export] -macro_rules! match_ignore_ascii_case { - // parse the last case plus the fallback - (@inner $value:expr, ($string:expr => $result:expr, _ => $fallback:expr) -> ($($parsed:tt)*) ) => { - match_ignore_ascii_case!(@inner $value, () -> ($($parsed)* ($string => $result)) $fallback) - }; +#[doc(hidden)] pub use macros::_internal__to_lowercase; - // parse a case (not the last one) - (@inner $value:expr, ($string:expr => $result:expr, $($rest:tt)*) -> ($($parsed:tt)*) ) => { - match_ignore_ascii_case!(@inner $value, ($($rest)*) -> ($($parsed)* ($string => $result))) - }; - - // finished parsing - (@inner $value:expr, () -> ($(($string:expr => $result:expr))*) $fallback:expr ) => { - { - _cssparser_internal__pretend_proc_macro! { - cssparser__assert_ascii_lowercase!( $( $string )+ ) - } - - { - _cssparser_internal__to_lowercase!($value => lowercase, $($string),+); - match lowercase { - $( - Some($string) => $result, - )+ - _ => $fallback - } - } - } - }; - - // entry point, start parsing - ( $value:expr, $($rest:tt)* ) => { - match_ignore_ascii_case!(@inner $value, ($($rest)*) -> ()) - }; -} - -/// Define a function `$name(&str) -> Option<&'static $ValueType>` -/// -/// The function finds a match for the input string -/// in a [`phf` map](https://github.com/sfackler/rust-phf) -/// and returns a reference to the corresponding value. -/// Matching is case-insensitive in the ASCII range. -/// -/// The `phf` and `cssparser_macros` crates must also be imported at the crate root -/// -/// ## Example: -/// -/// ```rust -/// extern crate phf; -/// #[macro_use] extern crate cssparser; -/// #[macro_use] extern crate cssparser_macros; -/// -/// # fn main() {} // Make doctest not wrap everythig in its own main -/// -/// fn color_rgb(input: &str) -> Option<(u8, u8, u8)> { -/// ascii_case_insensitive_phf_map! { -/// keyword -> (u8, u8, u8) = { -/// "red" => (255, 0, 0), -/// "green" => (0, 255, 0), -/// "blue" => (0, 0, 255), -/// } -/// } -/// keyword(input).cloned() -/// } -#[macro_export] -macro_rules! ascii_case_insensitive_phf_map { - ($name: ident -> $ValueType: ty = { $( $key: expr => $value: expr, )* }) => { - fn $name(input: &str) -> Option<&'static $ValueType> { - _cssparser_internal__pretend_proc_macro! { - cssparser__phf_map!( ($ValueType) $( $key ($value) )+ ) - } - - { - _cssparser_internal__to_lowercase!(input => lowercase, $($key),+); - lowercase.and_then(|s| MAP.get(s)) - } - } - } -} - -/// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. -/// -/// **This macro is not part of the public API. It can change or be removed between any versions.** -/// -/// * Check at compile-time that none of the `$string`s contain ASCII uppercase letters -/// * Define a local variable named `$output` to the result of calling `_internal__to_lowercase` -/// with a stack-allocated buffer as long as the longest `$string`. -#[macro_export] -#[doc(hidden)] -macro_rules! _cssparser_internal__to_lowercase { - ($input: expr => $output: ident, $($string: expr),+) => { - _cssparser_internal__pretend_proc_macro! { - cssparser__max_len!( $( $string )+ ) - } - - // mem::uninitialized() is ok because `buffer` is only used in `_internal__to_lowercase`, - // which initializes with `copy_from_slice` the part of the buffer it uses, - // before it uses it. - #[allow(unsafe_code)] - // MAX_LENGTH is generated by cssparser__max_len - let mut buffer: [u8; MAX_LENGTH] = unsafe { - ::std::mem::uninitialized() - }; - let input: &str = $input; - let $output = $crate::_internal__to_lowercase(&mut buffer, input); - } -} - -/// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. -/// -/// **This macro is not part of the public API. It can change or be removed between any versions.** -#[macro_export] -#[doc(hidden)] -macro_rules! _cssparser_internal__pretend_proc_macro { - ($macro_name: ident ! ( $($tt: tt)* )) => { - #[derive($macro_name)] - #[allow(unused)] - enum Dummy { - Input = (0, stringify!( $( $tt )* )).0 - } - } -} - -/// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. -/// -/// **This function is not part of the public API. It can change or be removed between any verisons.** -/// -/// Return `input`, lower-cased, unless larger than `buffer` -/// which is used temporary space for lower-casing a copy of `input` if necessary. -#[doc(hidden)] -#[allow(non_snake_case)] -pub fn _internal__to_lowercase<'a>(buffer: &'a mut [u8], input: &'a str) -> Option<&'a str> { - if let Some(buffer) = buffer.get_mut(..input.len()) { - if let Some(first_uppercase) = input.bytes().position(|byte| matches!(byte, b'A'...b'Z')) { - buffer.copy_from_slice(input.as_bytes()); - std::ascii::AsciiExt::make_ascii_lowercase(&mut buffer[first_uppercase..]); - // `buffer` was initialized to a copy of `input` (which is &str so well-formed UTF-8) - // then lowercased (which preserves UTF-8 well-formedness) - unsafe { - Some(::std::str::from_utf8_unchecked(buffer)) - } - } else { - // Input is already lower-case - Some(input) - } - } else { - // Input is longer than buffer, which has the length of the longest expected string: - // none of the expected strings would match. - None - } -} +#[macro_use] +mod macros; mod rules_and_declarations; -#[cfg(feature = "dummy_match_byte")] -macro_rules! match_byte { - ($value:expr, $($rest:tt)* ) => { - match $value { - $( - $rest - )+ - } - }; -} - #[cfg(feature = "dummy_match_byte")] mod tokenizer; diff --git a/src/macros.rs b/src/macros.rs new file mode 100644 index 00000000..02816c30 --- /dev/null +++ b/src/macros.rs @@ -0,0 +1,198 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + + +/// Expands to an expression equivalent to a `match` with string patterns, +/// but matching is case-insensitive in the ASCII range. +/// +/// Requirements: +/// +/// * The `cssparser_macros` crate must also be imported at the crate root +/// * The patterns must not contain ASCII upper case letters. (They must be already be lower-cased.) +/// +/// # Example +/// +/// ```rust +/// #[macro_use] extern crate cssparser; +/// #[macro_use] extern crate cssparser_macros; +/// +/// # fn main() {} // Make doctest not wrap everythig in its own main +/// # fn dummy(function_name: &String) { let _ = +/// match_ignore_ascii_case! { &function_name, +/// "rgb" => parse_rgb(..), +/// "rgba" => parse_rgba(..), +/// "hsl" => parse_hsl(..), +/// "hsla" => parse_hsla(..), +/// _ => Err("unknown function") +/// } +/// # ;} +/// # use std::ops::RangeFull; +/// # fn parse_rgb(_: RangeFull) -> Result<(), &'static str> { Err("") } +/// # fn parse_rgba(_: RangeFull) -> Result<(), &'static str> { Err("") } +/// # fn parse_hsl(_: RangeFull) -> Result<(), &'static str> { Err("") } +/// # fn parse_hsla(_: RangeFull) -> Result<(), &'static str> { Err("") } +/// ``` +#[macro_export] +macro_rules! match_ignore_ascii_case { + // parse the last case plus the fallback + (@inner $value:expr, ($string:expr => $result:expr, _ => $fallback:expr) -> ($($parsed:tt)*) ) => { + match_ignore_ascii_case!(@inner $value, () -> ($($parsed)* ($string => $result)) $fallback) + }; + + // parse a case (not the last one) + (@inner $value:expr, ($string:expr => $result:expr, $($rest:tt)*) -> ($($parsed:tt)*) ) => { + match_ignore_ascii_case!(@inner $value, ($($rest)*) -> ($($parsed)* ($string => $result))) + }; + + // finished parsing + (@inner $value:expr, () -> ($(($string:expr => $result:expr))*) $fallback:expr ) => { + { + _cssparser_internal__pretend_proc_macro! { + cssparser__assert_ascii_lowercase!( $( $string )+ ) + } + + { + _cssparser_internal__to_lowercase!($value => lowercase, $($string),+); + match lowercase { + $( + Some($string) => $result, + )+ + _ => $fallback + } + } + } + }; + + // entry point, start parsing + ( $value:expr, $($rest:tt)* ) => { + match_ignore_ascii_case!(@inner $value, ($($rest)*) -> ()) + }; +} + +/// Define a function `$name(&str) -> Option<&'static $ValueType>` +/// +/// The function finds a match for the input string +/// in a [`phf` map](https://github.com/sfackler/rust-phf) +/// and returns a reference to the corresponding value. +/// Matching is case-insensitive in the ASCII range. +/// +/// The `phf` and `cssparser_macros` crates must also be imported at the crate root +/// +/// ## Example: +/// +/// ```rust +/// extern crate phf; +/// #[macro_use] extern crate cssparser; +/// #[macro_use] extern crate cssparser_macros; +/// +/// # fn main() {} // Make doctest not wrap everythig in its own main +/// +/// fn color_rgb(input: &str) -> Option<(u8, u8, u8)> { +/// ascii_case_insensitive_phf_map! { +/// keyword -> (u8, u8, u8) = { +/// "red" => (255, 0, 0), +/// "green" => (0, 255, 0), +/// "blue" => (0, 0, 255), +/// } +/// } +/// keyword(input).cloned() +/// } +#[macro_export] +macro_rules! ascii_case_insensitive_phf_map { + ($name: ident -> $ValueType: ty = { $( $key: expr => $value: expr, )* }) => { + fn $name(input: &str) -> Option<&'static $ValueType> { + _cssparser_internal__pretend_proc_macro! { + cssparser__phf_map!( ($ValueType) $( $key ($value) )+ ) + } + + { + _cssparser_internal__to_lowercase!(input => lowercase, $($key),+); + lowercase.and_then(|s| MAP.get(s)) + } + } + } +} + +/// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. +/// +/// **This macro is not part of the public API. It can change or be removed between any versions.** +/// +/// * Check at compile-time that none of the `$string`s contain ASCII uppercase letters +/// * Define a local variable named `$output` to the result of calling `_internal__to_lowercase` +/// with a stack-allocated buffer as long as the longest `$string`. +#[macro_export] +#[doc(hidden)] +macro_rules! _cssparser_internal__to_lowercase { + ($input: expr => $output: ident, $($string: expr),+) => { + _cssparser_internal__pretend_proc_macro! { + cssparser__max_len!( $( $string )+ ) + } + + // mem::uninitialized() is ok because `buffer` is only used in `_internal__to_lowercase`, + // which initializes with `copy_from_slice` the part of the buffer it uses, + // before it uses it. + #[allow(unsafe_code)] + // MAX_LENGTH is generated by cssparser__max_len + let mut buffer: [u8; MAX_LENGTH] = unsafe { + ::std::mem::uninitialized() + }; + let input: &str = $input; + let $output = $crate::_internal__to_lowercase(&mut buffer, input); + } +} + +/// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. +/// +/// **This macro is not part of the public API. It can change or be removed between any versions.** +#[macro_export] +#[doc(hidden)] +macro_rules! _cssparser_internal__pretend_proc_macro { + ($macro_name: ident ! ( $($tt: tt)* )) => { + #[derive($macro_name)] + #[allow(unused)] + enum Dummy { + Input = (0, stringify!( $( $tt )* )).0 + } + } +} + +/// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. +/// +/// **This function is not part of the public API. It can change or be removed between any verisons.** +/// +/// Return `input`, lower-cased, unless larger than `buffer` +/// which is used temporary space for lower-casing a copy of `input` if necessary. +#[doc(hidden)] +#[allow(non_snake_case)] +pub fn _internal__to_lowercase<'a>(buffer: &'a mut [u8], input: &'a str) -> Option<&'a str> { + if let Some(buffer) = buffer.get_mut(..input.len()) { + if let Some(first_uppercase) = input.bytes().position(|byte| matches!(byte, b'A'...b'Z')) { + buffer.copy_from_slice(input.as_bytes()); + ::std::ascii::AsciiExt::make_ascii_lowercase(&mut buffer[first_uppercase..]); + // `buffer` was initialized to a copy of `input` (which is &str so well-formed UTF-8) + // then lowercased (which preserves UTF-8 well-formedness) + unsafe { + Some(::std::str::from_utf8_unchecked(buffer)) + } + } else { + // Input is already lower-case + Some(input) + } + } else { + // Input is longer than buffer, which has the length of the longest expected string: + // none of the expected strings would match. + None + } +} + +#[cfg(feature = "dummy_match_byte")] +macro_rules! match_byte { + ($value:expr, $($rest:tt)* ) => { + match $value { + $( + $rest + )+ + } + }; +} From 7f9e876cbee313c129c7ca4b1fd183e1a2e12693 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 27 Feb 2017 16:26:54 +0100 Subject: [PATCH 21/43] Support full match syntax in match_ignore_ascii_case --- macros/lib.rs | 115 ++++++++++++++++++++++++++++++++------------------ src/macros.rs | 57 +++++++++---------------- 2 files changed, 93 insertions(+), 79 deletions(-) diff --git a/macros/lib.rs b/macros/lib.rs index b59fe571..7cbc0b0a 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -10,33 +10,58 @@ extern crate syn; use std::ascii::AsciiExt; /// Panic if any string contains ASCII uppercase letters. -#[proc_macro_derive(cssparser__assert_ascii_lowercase)] -pub fn assert_ascii_lowercase(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - let input = syn::parse_macro_input(&input.to_string()).unwrap(); - - for token in find_smuggled_tokens(&input) { - let string = string_literal(token); - assert_eq!(*string, string.to_ascii_lowercase(), - "the string patterns must be given in ASCII lowercase"); - } - - "".parse().unwrap() +/// Emit a `MAX_LENGTH` constant with the length of the longest string. +#[proc_macro_derive(cssparser__assert_ascii_lowercase__max_len)] +pub fn assert_ascii_lowercase_max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + max_len_common(input, |token_trees| { + let tokens = quote!( match x { #( #token_trees )* } ); + let expr = syn::parse_expr(tokens.as_str()).unwrap(); + let arms = match expr { + syn::Expr { node: syn::ExprKind::Match(_, ref arms), .. } => arms, + _ => panic!("expected a match expression, got {:?}", expr) + }; + arms.iter().flat_map(|arm| &arm.pats).filter_map(|pattern| { + let expr = match *pattern { + syn::Pat::Lit(ref expr) => expr, + syn::Pat::Wild | + syn::Pat::Ident(_, _, None) => return None, + syn::Pat::Ident(_, _, Some(ref sub_pattern)) => { + match **sub_pattern { + syn::Pat::Lit(ref expr) => expr, + syn::Pat::Wild => return None, + _ => panic!("expected string or wildcard pattern, got {:?}", pattern) + } + } + _ => panic!("expected string or wildcard pattern, got {:?}", pattern) + }; + match **expr { + syn::Expr { node: syn::ExprKind::Lit(syn::Lit::Str(ref string, _)), .. } => { + assert_eq!(*string, string.to_ascii_lowercase(), + "string patterns must be given in ASCII lowercase"); + Some(string.len()) + } + _ => panic!("expected string pattern, got {:?}", expr) + } + }).max() + }) } /// Emit a `MAX_LENGTH` constant with the length of the longest string. #[proc_macro_derive(cssparser__max_len)] pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - let input = syn::parse_macro_input(&input.to_string()).unwrap(); - - let token_trees = find_smuggled_tokens(&input); - let lengths = token_trees.iter().map(|tt| string_literal(tt).len()); - let max_length = lengths.max().expect("expected at least one string"); - - let tokens = quote! { - const MAX_LENGTH: usize = #max_length; - }; + max_len_common(input, |token_trees| { + token_trees.iter().map(|tt| string_literal(tt).len()).max() + }) +} - tokens.as_str().parse().unwrap() +fn max_len_common(input: proc_macro::TokenStream, f: F) -> proc_macro::TokenStream +where F : FnOnce(&[syn::TokenTree]) -> Option { + common(input, |token_trees| { + let max_length = f(token_trees).expect("expected at least one string"); + quote! { + const MAX_LENGTH: usize = #max_length; + } + }) } /// ``` @@ -46,29 +71,35 @@ pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { /// Map keys are ASCII-lowercased. #[proc_macro_derive(cssparser__phf_map)] pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - let input = syn::parse_macro_input(&input.to_string()).unwrap(); + common(input, |token_trees| { + let value_type = &token_trees[0]; + let pairs: Vec<_> = token_trees[1..].chunks(2).map(|chunk| { + let key = string_literal(&chunk[0]); + let value = &chunk[1]; + (key.to_ascii_lowercase(), quote!(#value).to_string()) + }).collect(); + + let mut map = phf_codegen::Map::new(); + for &(ref key, ref value) in &pairs { + map.entry(&**key, &**value); + } + + let mut tokens = quote! { + static MAP: ::phf::Map<&'static str, #value_type> = + }; + let mut initializer_bytes = Vec::new(); + map.build(&mut initializer_bytes).unwrap(); + tokens.append(::std::str::from_utf8(&initializer_bytes).unwrap()); + tokens.append(";"); + tokens + }) +} +fn common(input: proc_macro::TokenStream, f: F) -> proc_macro::TokenStream +where F: FnOnce(&[syn::TokenTree]) -> quote::Tokens { + let input = syn::parse_macro_input(&input.to_string()).unwrap(); let token_trees = find_smuggled_tokens(&input); - let value_type = &token_trees[0]; - let pairs: Vec<_> = token_trees[1..].chunks(2).map(|chunk| { - let key = string_literal(&chunk[0]); - let value = &chunk[1]; - (key.to_ascii_lowercase(), quote!(#value).to_string()) - }).collect(); - - let mut map = phf_codegen::Map::new(); - for &(ref key, ref value) in &pairs { - map.entry(&**key, &**value); - } - - let mut tokens = quote! { - static MAP: ::phf::Map<&'static str, #value_type> = - }; - let mut initializer_bytes = Vec::new(); - map.build(&mut initializer_bytes).unwrap(); - tokens.append(::std::str::from_utf8(&initializer_bytes).unwrap()); - tokens.append(";"); - + let tokens = f(token_trees); tokens.as_str().parse().unwrap() } diff --git a/src/macros.rs b/src/macros.rs index 02816c30..fd2622c4 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -24,50 +24,34 @@ /// "rgba" => parse_rgba(..), /// "hsl" => parse_hsl(..), /// "hsla" => parse_hsla(..), -/// _ => Err("unknown function") +/// name @ _ => Err(format!("unknown function: {}", name)) /// } /// # ;} /// # use std::ops::RangeFull; -/// # fn parse_rgb(_: RangeFull) -> Result<(), &'static str> { Err("") } -/// # fn parse_rgba(_: RangeFull) -> Result<(), &'static str> { Err("") } -/// # fn parse_hsl(_: RangeFull) -> Result<(), &'static str> { Err("") } -/// # fn parse_hsla(_: RangeFull) -> Result<(), &'static str> { Err("") } +/// # fn parse_rgb(_: RangeFull) -> Result<(), String> { Ok(()) } +/// # fn parse_rgba(_: RangeFull) -> Result<(), String> { Ok(()) } +/// # fn parse_hsl(_: RangeFull) -> Result<(), String> { Ok(()) } +/// # fn parse_hsla(_: RangeFull) -> Result<(), String> { Ok(()) } /// ``` #[macro_export] macro_rules! match_ignore_ascii_case { - // parse the last case plus the fallback - (@inner $value:expr, ($string:expr => $result:expr, _ => $fallback:expr) -> ($($parsed:tt)*) ) => { - match_ignore_ascii_case!(@inner $value, () -> ($($parsed)* ($string => $result)) $fallback) - }; - - // parse a case (not the last one) - (@inner $value:expr, ($string:expr => $result:expr, $($rest:tt)*) -> ($($parsed:tt)*) ) => { - match_ignore_ascii_case!(@inner $value, ($($rest)*) -> ($($parsed)* ($string => $result))) - }; - - // finished parsing - (@inner $value:expr, () -> ($(($string:expr => $result:expr))*) $fallback:expr ) => { + ( $input:expr, $( $match_body:tt )* ) => { { _cssparser_internal__pretend_proc_macro! { - cssparser__assert_ascii_lowercase!( $( $string )+ ) + cssparser__assert_ascii_lowercase__max_len!( $( $match_body )* ) } { - _cssparser_internal__to_lowercase!($value => lowercase, $($string),+); - match lowercase { - $( - Some($string) => $result, - )+ - _ => $fallback + // MAX_LENGTH is generated by cssparser__assert_ascii_lowercase__max_len + _cssparser_internal__to_lowercase!($input, MAX_LENGTH => lowercase); + // "A" is a short string that we know is different for every string pattern, + // since we’ve verified that none of them include ASCII upper case letters. + match lowercase.unwrap_or("A") { + $( $match_body )* } } } }; - - // entry point, start parsing - ( $value:expr, $($rest:tt)* ) => { - match_ignore_ascii_case!(@inner $value, ($($rest)*) -> ()) - }; } /// Define a function `$name(&str) -> Option<&'static $ValueType>` @@ -107,7 +91,11 @@ macro_rules! ascii_case_insensitive_phf_map { } { - _cssparser_internal__to_lowercase!(input => lowercase, $($key),+); + _cssparser_internal__pretend_proc_macro! { + cssparser__max_len!( $( $key )+ ) + } + // MAX_LENGTH is generated by cssparser__max_len + _cssparser_internal__to_lowercase!(input, MAX_LENGTH => lowercase); lowercase.and_then(|s| MAP.get(s)) } } @@ -124,17 +112,12 @@ macro_rules! ascii_case_insensitive_phf_map { #[macro_export] #[doc(hidden)] macro_rules! _cssparser_internal__to_lowercase { - ($input: expr => $output: ident, $($string: expr),+) => { - _cssparser_internal__pretend_proc_macro! { - cssparser__max_len!( $( $string )+ ) - } - + ($input: expr, $MAX_LENGTH: expr => $output: ident) => { // mem::uninitialized() is ok because `buffer` is only used in `_internal__to_lowercase`, // which initializes with `copy_from_slice` the part of the buffer it uses, // before it uses it. #[allow(unsafe_code)] - // MAX_LENGTH is generated by cssparser__max_len - let mut buffer: [u8; MAX_LENGTH] = unsafe { + let mut buffer: [u8; $MAX_LENGTH] = unsafe { ::std::mem::uninitialized() }; let input: &str = $input; From 0909afdb686b0e43ce416e9d3723c5c1155a4dd3 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 27 Feb 2017 20:04:10 +0100 Subject: [PATCH 22/43] Normalize prefix for exported but not-really-public names --- macros/lib.rs | 6 +++--- src/macros.rs | 24 ++++++++++++------------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/macros/lib.rs b/macros/lib.rs index 7cbc0b0a..4ec28937 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -11,7 +11,7 @@ use std::ascii::AsciiExt; /// Panic if any string contains ASCII uppercase letters. /// Emit a `MAX_LENGTH` constant with the length of the longest string. -#[proc_macro_derive(cssparser__assert_ascii_lowercase__max_len)] +#[proc_macro_derive(cssparser_internal__assert_ascii_lowercase__max_len)] pub fn assert_ascii_lowercase_max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { max_len_common(input, |token_trees| { let tokens = quote!( match x { #( #token_trees )* } ); @@ -47,7 +47,7 @@ pub fn assert_ascii_lowercase_max_len(input: proc_macro::TokenStream) -> proc_ma } /// Emit a `MAX_LENGTH` constant with the length of the longest string. -#[proc_macro_derive(cssparser__max_len)] +#[proc_macro_derive(cssparser_internal__max_len)] pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { max_len_common(input, |token_trees| { token_trees.iter().map(|tt| string_literal(tt).len()).max() @@ -69,7 +69,7 @@ where F : FnOnce(&[syn::TokenTree]) -> Option { /// ``` /// /// Map keys are ASCII-lowercased. -#[proc_macro_derive(cssparser__phf_map)] +#[proc_macro_derive(cssparser_internal__phf_map)] pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { common(input, |token_trees| { let value_type = &token_trees[0]; diff --git a/src/macros.rs b/src/macros.rs index fd2622c4..f1831d31 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -37,13 +37,13 @@ macro_rules! match_ignore_ascii_case { ( $input:expr, $( $match_body:tt )* ) => { { - _cssparser_internal__pretend_proc_macro! { - cssparser__assert_ascii_lowercase__max_len!( $( $match_body )* ) + cssparser_internal__pretend_proc_macro! { + cssparser_internal__assert_ascii_lowercase__max_len!( $( $match_body )* ) } { - // MAX_LENGTH is generated by cssparser__assert_ascii_lowercase__max_len - _cssparser_internal__to_lowercase!($input, MAX_LENGTH => lowercase); + // MAX_LENGTH is generated by cssparser_internal__assert_ascii_lowercase__max_len + cssparser_internal__to_lowercase!($input, MAX_LENGTH => lowercase); // "A" is a short string that we know is different for every string pattern, // since we’ve verified that none of them include ASCII upper case letters. match lowercase.unwrap_or("A") { @@ -86,16 +86,16 @@ macro_rules! match_ignore_ascii_case { macro_rules! ascii_case_insensitive_phf_map { ($name: ident -> $ValueType: ty = { $( $key: expr => $value: expr, )* }) => { fn $name(input: &str) -> Option<&'static $ValueType> { - _cssparser_internal__pretend_proc_macro! { - cssparser__phf_map!( ($ValueType) $( $key ($value) )+ ) + cssparser_internal__pretend_proc_macro! { + cssparser_internal__phf_map!( ($ValueType) $( $key ($value) )+ ) } { - _cssparser_internal__pretend_proc_macro! { - cssparser__max_len!( $( $key )+ ) + cssparser_internal__pretend_proc_macro! { + cssparser_internal__max_len!( $( $key )+ ) } - // MAX_LENGTH is generated by cssparser__max_len - _cssparser_internal__to_lowercase!(input, MAX_LENGTH => lowercase); + // MAX_LENGTH is generated by cssparser_internal__max_len + cssparser_internal__to_lowercase!(input, MAX_LENGTH => lowercase); lowercase.and_then(|s| MAP.get(s)) } } @@ -111,7 +111,7 @@ macro_rules! ascii_case_insensitive_phf_map { /// with a stack-allocated buffer as long as the longest `$string`. #[macro_export] #[doc(hidden)] -macro_rules! _cssparser_internal__to_lowercase { +macro_rules! cssparser_internal__to_lowercase { ($input: expr, $MAX_LENGTH: expr => $output: ident) => { // mem::uninitialized() is ok because `buffer` is only used in `_internal__to_lowercase`, // which initializes with `copy_from_slice` the part of the buffer it uses, @@ -130,7 +130,7 @@ macro_rules! _cssparser_internal__to_lowercase { /// **This macro is not part of the public API. It can change or be removed between any versions.** #[macro_export] #[doc(hidden)] -macro_rules! _cssparser_internal__pretend_proc_macro { +macro_rules! cssparser_internal__pretend_proc_macro { ($macro_name: ident ! ( $($tt: tt)* )) => { #[derive($macro_name)] #[allow(unused)] From 5efba23102b8297caf043722c5a0f3fadbe5fd0a Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 27 Feb 2017 20:51:45 +0100 Subject: [PATCH 23/43] Move proc-macro trickery to a separate crate. It could be useful outside of cssparser. --- Cargo.toml | 3 +- macros/Cargo.toml | 5 +- macros/lib.rs | 108 ++++++++----------------------- procedural-masquarade/Cargo.toml | 11 ++++ procedural-masquarade/lib.rs | 53 +++++++++++++++ src/lib.rs | 1 + src/macros.rs | 22 ++----- 7 files changed, 102 insertions(+), 101 deletions(-) create mode 100644 procedural-masquarade/Cargo.toml create mode 100644 procedural-masquarade/lib.rs diff --git a/Cargo.toml b/Cargo.toml index 4068795f..035f1a7c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,7 @@ cssparser-macros = {path = "./macros", version = "0.2"} heapsize = {version = "0.3", optional = true} matches = "0.1" phf = "0.7" +procedural-masquarade = {path = "./procedural-masquarade", version = "0.1"} serde = {version = "0.9", optional = true} [build-dependencies] @@ -35,4 +36,4 @@ bench = [] dummy_match_byte = [] [workspace] -members = [".", "./macros"] +members = [".", "./macros", "./procedural-masquarade"] diff --git a/macros/Cargo.toml b/macros/Cargo.toml index fd98d2cb..45c17cfc 100644 --- a/macros/Cargo.toml +++ b/macros/Cargo.toml @@ -12,6 +12,7 @@ path = "lib.rs" proc-macro = true [dependencies] +procedural-masquarade = {path = "../procedural-masquarade", version = "0.1"} phf_codegen = "0.7" -quote = "0.3" -syn = {version = "0.11", features = ["full"]} +quote = "0.3.14" +syn = {version = "0.11.8", features = ["full"]} diff --git a/macros/lib.rs b/macros/lib.rs index 4ec28937..b72de5a5 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -2,6 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#[macro_use] extern crate procedural_masquarade; extern crate phf_codegen; extern crate proc_macro; #[macro_use] extern crate quote; @@ -9,18 +10,17 @@ extern crate syn; use std::ascii::AsciiExt; -/// Panic if any string contains ASCII uppercase letters. -/// Emit a `MAX_LENGTH` constant with the length of the longest string. -#[proc_macro_derive(cssparser_internal__assert_ascii_lowercase__max_len)] -pub fn assert_ascii_lowercase_max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - max_len_common(input, |token_trees| { - let tokens = quote!( match x { #( #token_trees )* } ); - let expr = syn::parse_expr(tokens.as_str()).unwrap(); +define_proc_macros! { + /// Panic if any string contains ASCII uppercase letters. + /// Emit a `MAX_LENGTH` constant with the length of the longest string. + #[allow(non_snake_case)] + pub fn cssparser_internal__assert_ascii_lowercase__max_len(input: &str) -> String { + let expr = syn::parse_expr(&format!("match x {{ {} }}", input)).unwrap(); let arms = match expr { syn::Expr { node: syn::ExprKind::Match(_, ref arms), .. } => arms, _ => panic!("expected a match expression, got {:?}", expr) }; - arms.iter().flat_map(|arm| &arm.pats).filter_map(|pattern| { + max_len(arms.iter().flat_map(|arm| &arm.pats).filter_map(|pattern| { let expr = match *pattern { syn::Pat::Lit(ref expr) => expr, syn::Pat::Wild | @@ -42,36 +42,23 @@ pub fn assert_ascii_lowercase_max_len(input: proc_macro::TokenStream) -> proc_ma } _ => panic!("expected string pattern, got {:?}", expr) } - }).max() - }) -} - -/// Emit a `MAX_LENGTH` constant with the length of the longest string. -#[proc_macro_derive(cssparser_internal__max_len)] -pub fn max_len(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - max_len_common(input, |token_trees| { - token_trees.iter().map(|tt| string_literal(tt).len()).max() - }) -} + })) + } -fn max_len_common(input: proc_macro::TokenStream, f: F) -> proc_macro::TokenStream -where F : FnOnce(&[syn::TokenTree]) -> Option { - common(input, |token_trees| { - let max_length = f(token_trees).expect("expected at least one string"); - quote! { - const MAX_LENGTH: usize = #max_length; - } - }) -} + /// Emit a `MAX_LENGTH` constant with the length of the longest string. + #[allow(non_snake_case)] + pub fn cssparser_internal__max_len(input: &str) -> String { + max_len(syn::parse_token_trees(input).unwrap().iter().map(|tt| string_literal(tt).len())) + } -/// ``` -/// static MAP: &'static ::phf::Map<&'static str, $ValueType> = …; -/// ``` -/// -/// Map keys are ASCII-lowercased. -#[proc_macro_derive(cssparser_internal__phf_map)] -pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { - common(input, |token_trees| { + /// ``` + /// static MAP: &'static ::phf::Map<&'static str, $ValueType> = …; + /// ``` + /// + /// Map keys are ASCII-lowercased. + #[allow(non_snake_case)] + pub fn cssparser_internal__phf_map(input: &str) -> String { + let token_trees = syn::parse_token_trees(input).unwrap(); let value_type = &token_trees[0]; let pairs: Vec<_> = token_trees[1..].chunks(2).map(|chunk| { let key = string_literal(&chunk[0]); @@ -91,52 +78,13 @@ pub fn phf_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { map.build(&mut initializer_bytes).unwrap(); tokens.append(::std::str::from_utf8(&initializer_bytes).unwrap()); tokens.append(";"); - tokens - }) -} - -fn common(input: proc_macro::TokenStream, f: F) -> proc_macro::TokenStream -where F: FnOnce(&[syn::TokenTree]) -> quote::Tokens { - let input = syn::parse_macro_input(&input.to_string()).unwrap(); - let token_trees = find_smuggled_tokens(&input); - let tokens = f(token_trees); - tokens.as_str().parse().unwrap() + tokens.to_string() + } } -/// Return the `…` part in: -/// -/// ```rust -/// enum Somthing { -/// Input = (0, stringify!(…)).0 -/// } -/// ``` -fn find_smuggled_tokens(input: &syn::DeriveInput) -> &[syn::TokenTree] { - let discriminant = match input.body { - syn::Body::Enum(ref variants) if variants.len() == 1 => &variants[0].discriminant, - _ => panic!("expected single-variant enum, got {:?}", input.body) - }; - let tuple = match *discriminant { - Some(syn::ConstExpr::Other(syn::Expr { node: syn::ExprKind::TupField(ref t, 0), .. })) => t, - _ => panic!("expected a discriminant like tuple.0, got {:?}", discriminant) - }; - let expr = match **tuple { - syn::Expr { node: syn::ExprKind::Tup(ref values), .. } if values.len() == 2 => &values[1], - _ => panic!("expected non-empty tuple, got {:?}", tuple) - }; - let macro_args = match *expr { - syn::Expr { node: syn::ExprKind::Mac( - syn::Mac { ref tts, path: syn::Path { global: false, ref segments }} - ), .. } - if segments.len() == 1 - && segments[0] == syn::PathSegment::from("stringify") - && tts.len() == 1 - => &tts[0], - _ => panic!("expected a stringify!(…) macro, got {:?}", expr) - }; - match *macro_args { - syn::TokenTree::Delimited(syn::Delimited { ref tts, delim: syn::DelimToken::Paren }) => tts, - _ => panic!("expected (…) parentheses, got {:?}", macro_args) - } +fn max_len>(lengths: I) -> String { + let max_length = lengths.max().expect("expected at least one string"); + quote!( const MAX_LENGTH: usize = #max_length; ).to_string() } fn string_literal(token: &syn::TokenTree) -> &str { diff --git a/procedural-masquarade/Cargo.toml b/procedural-masquarade/Cargo.toml new file mode 100644 index 00000000..2f7d586f --- /dev/null +++ b/procedural-masquarade/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "procedural-masquarade" +version = "0.1.0" +authors = ["Simon Sapin "] +description = "macro_rules for making proc_macro_derive pretending to be proc_macro" +documentation = "https://docs.rs/procedural-masquarade/" +repository = "https://github.com/servo/rust-cssparser" +license = "MIT/Apache-2.0" + +[lib] +path = "lib.rs" diff --git a/procedural-masquarade/lib.rs b/procedural-masquarade/lib.rs new file mode 100644 index 00000000..e6d443a0 --- /dev/null +++ b/procedural-masquarade/lib.rs @@ -0,0 +1,53 @@ +#[macro_export] +macro_rules! define_proc_macros { + ( + $( + $( #[$attr:meta] )* + pub fn $func:ident($input:ident: &str) -> String + $body:block + )+ + ) => { + $( + $( #[$attr] )* + #[proc_macro_derive($func)] + pub fn $func(input: ::proc_macro::TokenStream) -> ::proc_macro::TokenStream { + // Use another function to hide this one’s local variables from $block + #[inline] + fn implementation($input: &str) -> String $body + + let input = input.to_string(); + let mut normalized = String::with_capacity(input.len()); + for piece in input.split_whitespace() { + normalized.push_str(piece); + normalized.push(' '); + } + + let prefix = "#[allow(unused)] enum Dummy { Input = (0, stringify!("; + let suffix = ")).0, } "; + assert!(normalized.starts_with(prefix), "Unexpected proc_macro_derive input {:?}", input); + assert!(normalized.ends_with(suffix), "Unexpected proc_macro_derive input {:?}", input); + + let start = prefix.len(); + let end = normalized.len() - suffix.len(); + let output = implementation(&normalized[start..end]); + output.parse().unwrap() + } + )+ + } +} + +#[macro_export] +macro_rules! define_invoke_proc_macro { + ($macro_name: ident) => { + #[macro_export] + macro_rules! $macro_name { + ($proc_macro_name: ident ! $paren: tt) => { + #[derive($proc_macro_name)] + #[allow(unused)] + enum Dummy { + Input = (0, stringify! $paren ).0 + } + } + } + } +} diff --git a/src/lib.rs b/src/lib.rs index 32c13a89..71e381f9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -70,6 +70,7 @@ fn parse_border_spacing(_context: &ParserContext, input: &mut Parser) #[macro_use] extern crate cssparser_macros; #[macro_use] extern crate matches; +#[macro_use] extern crate procedural_masquarade; extern crate phf; #[cfg(test)] extern crate encoding_rs; #[cfg(test)] extern crate tempdir; diff --git a/src/macros.rs b/src/macros.rs index f1831d31..3f6752dc 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -2,6 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +define_invoke_proc_macro!(cssparser_internal__invoke_proc_macro); /// Expands to an expression equivalent to a `match` with string patterns, /// but matching is case-insensitive in the ASCII range. @@ -37,7 +38,7 @@ macro_rules! match_ignore_ascii_case { ( $input:expr, $( $match_body:tt )* ) => { { - cssparser_internal__pretend_proc_macro! { + cssparser_internal__invoke_proc_macro! { cssparser_internal__assert_ascii_lowercase__max_len!( $( $match_body )* ) } @@ -86,12 +87,12 @@ macro_rules! match_ignore_ascii_case { macro_rules! ascii_case_insensitive_phf_map { ($name: ident -> $ValueType: ty = { $( $key: expr => $value: expr, )* }) => { fn $name(input: &str) -> Option<&'static $ValueType> { - cssparser_internal__pretend_proc_macro! { + cssparser_internal__invoke_proc_macro! { cssparser_internal__phf_map!( ($ValueType) $( $key ($value) )+ ) } { - cssparser_internal__pretend_proc_macro! { + cssparser_internal__invoke_proc_macro! { cssparser_internal__max_len!( $( $key )+ ) } // MAX_LENGTH is generated by cssparser_internal__max_len @@ -125,21 +126,6 @@ macro_rules! cssparser_internal__to_lowercase { } } -/// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. -/// -/// **This macro is not part of the public API. It can change or be removed between any versions.** -#[macro_export] -#[doc(hidden)] -macro_rules! cssparser_internal__pretend_proc_macro { - ($macro_name: ident ! ( $($tt: tt)* )) => { - #[derive($macro_name)] - #[allow(unused)] - enum Dummy { - Input = (0, stringify!( $( $tt )* )).0 - } - } -} - /// Implementation detail of match_ignore_ascii_case! and ascii_case_insensitive_phf_map! macros. /// /// **This function is not part of the public API. It can change or be removed between any verisons.** From ba6d9430549a5cc4285837c5e8c5fd728443cf1d Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 27 Feb 2017 23:00:25 +0100 Subject: [PATCH 24/43] Remove requirements for users to import other crates. --- macros/lib.rs | 3 ++- src/lib.rs | 8 +++++++- src/macros.rs | 10 +--------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/macros/lib.rs b/macros/lib.rs index b72de5a5..662b6fef 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -67,12 +67,13 @@ define_proc_macros! { }).collect(); let mut map = phf_codegen::Map::new(); + map.phf_path("::cssparser::phf"); for &(ref key, ref value) in &pairs { map.entry(&**key, &**value); } let mut tokens = quote! { - static MAP: ::phf::Map<&'static str, #value_type> = + static MAP: ::cssparser::phf::Map<&'static str, #value_type> = }; let mut initializer_bytes = Vec::new(); map.build(&mut initializer_bytes).unwrap(); diff --git a/src/lib.rs b/src/lib.rs index 71e381f9..51b47b55 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -71,13 +71,15 @@ fn parse_border_spacing(_context: &ParserContext, input: &mut Parser) #[macro_use] extern crate cssparser_macros; #[macro_use] extern crate matches; #[macro_use] extern crate procedural_masquarade; -extern crate phf; +pub extern crate phf; #[cfg(test)] extern crate encoding_rs; #[cfg(test)] extern crate tempdir; #[cfg(test)] extern crate rustc_serialize; #[cfg(feature = "serde")] extern crate serde; #[cfg(feature = "heapsize")] #[macro_use] extern crate heapsize; +pub use cssparser_macros::*; + pub use tokenizer::{Token, NumericValue, PercentageValue, SourceLocation}; pub use rules_and_declarations::{parse_important}; pub use rules_and_declarations::{DeclarationParser, DeclarationListParser, parse_one_declaration}; @@ -90,8 +92,12 @@ pub use serializer::{ToCss, CssStringWriter, serialize_identifier, serialize_str pub use parser::{Parser, Delimiter, Delimiters, SourcePosition}; pub use unicode_range::UnicodeRange; +// For macros #[doc(hidden)] pub use macros::_internal__to_lowercase; +// For macros when used in this crate. Unsure how $crate works with procedural-masquarade. +mod cssparser { pub use phf; } + #[macro_use] mod macros; diff --git a/src/macros.rs b/src/macros.rs index 3f6752dc..2d9672d5 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -7,16 +7,12 @@ define_invoke_proc_macro!(cssparser_internal__invoke_proc_macro); /// Expands to an expression equivalent to a `match` with string patterns, /// but matching is case-insensitive in the ASCII range. /// -/// Requirements: -/// -/// * The `cssparser_macros` crate must also be imported at the crate root -/// * The patterns must not contain ASCII upper case letters. (They must be already be lower-cased.) +/// The patterns must not contain ASCII upper case letters. (They must be already be lower-cased.) /// /// # Example /// /// ```rust /// #[macro_use] extern crate cssparser; -/// #[macro_use] extern crate cssparser_macros; /// /// # fn main() {} // Make doctest not wrap everythig in its own main /// # fn dummy(function_name: &String) { let _ = @@ -62,14 +58,10 @@ macro_rules! match_ignore_ascii_case { /// and returns a reference to the corresponding value. /// Matching is case-insensitive in the ASCII range. /// -/// The `phf` and `cssparser_macros` crates must also be imported at the crate root -/// /// ## Example: /// /// ```rust -/// extern crate phf; /// #[macro_use] extern crate cssparser; -/// #[macro_use] extern crate cssparser_macros; /// /// # fn main() {} // Make doctest not wrap everythig in its own main /// From b1b6ed9a80e305074668bbd2565af4da23a6584c Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 27 Feb 2017 23:18:55 +0100 Subject: [PATCH 25/43] =?UTF-8?q?Clean=20up=20macros=E2=80=99=20doc-commen?= =?UTF-8?q?ts.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- macros/lib.rs | 21 +++++++++++++++------ src/macros.rs | 21 +++++++++++---------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/macros/lib.rs b/macros/lib.rs index 662b6fef..a4d6ceaa 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -11,8 +11,12 @@ extern crate syn; use std::ascii::AsciiExt; define_proc_macros! { - /// Panic if any string contains ASCII uppercase letters. - /// Emit a `MAX_LENGTH` constant with the length of the longest string. + /// Input: the arms of a `match` expression. + /// + /// Output: a `MAX_LENGTH` constant with the length of the longest string pattern. + /// + /// Panic if the arms contain non-string patterns, + /// or string patterns that contains ASCII uppercase letters. #[allow(non_snake_case)] pub fn cssparser_internal__assert_ascii_lowercase__max_len(input: &str) -> String { let expr = syn::parse_expr(&format!("match x {{ {} }}", input)).unwrap(); @@ -45,17 +49,22 @@ define_proc_macros! { })) } - /// Emit a `MAX_LENGTH` constant with the length of the longest string. + /// Input: string literals with no separator + /// + /// Output: a `MAX_LENGTH` constant with the length of the longest string. #[allow(non_snake_case)] pub fn cssparser_internal__max_len(input: &str) -> String { max_len(syn::parse_token_trees(input).unwrap().iter().map(|tt| string_literal(tt).len())) } + /// Input: parsed as token trees. The first TT is a type. (Can be wrapped in parens.) + /// following TTs are grouped in pairs, each pair being a key as a string literal + /// and the corresponding value as a const expression. + /// + /// Output: a rust-phf map, with keys ASCII-lowercased: /// ``` - /// static MAP: &'static ::phf::Map<&'static str, $ValueType> = …; + /// static MAP: &'static ::cssparser::phf::Map<&'static str, $ValueType> = …; /// ``` - /// - /// Map keys are ASCII-lowercased. #[allow(non_snake_case)] pub fn cssparser_internal__phf_map(input: &str) -> String { let token_trees = syn::parse_token_trees(input).unwrap(); diff --git a/src/macros.rs b/src/macros.rs index 2d9672d5..2ee0f866 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -2,10 +2,11 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +/// See docs of the `procedural-masquarade` crate. define_invoke_proc_macro!(cssparser_internal__invoke_proc_macro); -/// Expands to an expression equivalent to a `match` with string patterns, -/// but matching is case-insensitive in the ASCII range. +/// Expands to a `match` expression with string patterns, +/// matching case-insensitively in the ASCII range. /// /// The patterns must not contain ASCII upper case letters. (They must be already be lower-cased.) /// @@ -63,7 +64,7 @@ macro_rules! match_ignore_ascii_case { /// ```rust /// #[macro_use] extern crate cssparser; /// -/// # fn main() {} // Make doctest not wrap everythig in its own main +/// # fn main() {} // Make doctest not wrap everything in its own main /// /// fn color_rgb(input: &str) -> Option<(u8, u8, u8)> { /// ascii_case_insensitive_phf_map! { @@ -99,18 +100,18 @@ macro_rules! ascii_case_insensitive_phf_map { /// /// **This macro is not part of the public API. It can change or be removed between any versions.** /// -/// * Check at compile-time that none of the `$string`s contain ASCII uppercase letters -/// * Define a local variable named `$output` to the result of calling `_internal__to_lowercase` -/// with a stack-allocated buffer as long as the longest `$string`. +/// Define a local variable named `$output` +/// and assign it the result of calling `_internal__to_lowercase` +/// with a stack-allocated buffer of length `$BUFFER_SIZE`. #[macro_export] #[doc(hidden)] macro_rules! cssparser_internal__to_lowercase { - ($input: expr, $MAX_LENGTH: expr => $output: ident) => { + ($input: expr, $BUFFER_SIZE: expr => $output: ident) => { // mem::uninitialized() is ok because `buffer` is only used in `_internal__to_lowercase`, // which initializes with `copy_from_slice` the part of the buffer it uses, // before it uses it. #[allow(unsafe_code)] - let mut buffer: [u8; $MAX_LENGTH] = unsafe { + let mut buffer: [u8; $BUFFER_SIZE] = unsafe { ::std::mem::uninitialized() }; let input: &str = $input; @@ -122,8 +123,8 @@ macro_rules! cssparser_internal__to_lowercase { /// /// **This function is not part of the public API. It can change or be removed between any verisons.** /// -/// Return `input`, lower-cased, unless larger than `buffer` -/// which is used temporary space for lower-casing a copy of `input` if necessary. +/// If `input` is larger than buffer, return `None`. +/// Otherwise, return `input` ASCII-lowercased, using `buffer` as temporary space if necessary. #[doc(hidden)] #[allow(non_snake_case)] pub fn _internal__to_lowercase<'a>(buffer: &'a mut [u8], input: &'a str) -> Option<&'a str> { From eb5c5bf24deeb3f5218ca097ba5a32e4b55855e8 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 28 Feb 2017 00:41:59 +0100 Subject: [PATCH 26/43] Document procedural-masquarade --- procedural-masquarade/lib.rs | 206 +++++++++++++++++++++++++++++++++-- 1 file changed, 198 insertions(+), 8 deletions(-) diff --git a/procedural-masquarade/lib.rs b/procedural-masquarade/lib.rs index e6d443a0..ed73c6a3 100644 --- a/procedural-masquarade/lib.rs +++ b/procedural-masquarade/lib.rs @@ -1,16 +1,183 @@ +//! # Custom `derive` pretending to be functional procedural macros on Rust 1.15 +//! +//! This crate enables creating function-like macros (invoked as `foo!(...)`) +//! with a procedural component, +//! based on both custom `derive` (a.k.a. *Macros 1.1*) and `macro_rules!`. +//! +//! This convoluted mechanism enables such macros to run on stable Rust 1.15, +//! even though functional procedural macros (a.k.a. *Macros 2.0*) are not available yet. +//! +//! A library defining such a macro needs two crates: a “normal” one, and a `proc-macro` one. +//! In the example below we’ll call them `libfoo` and `libfoo-macros`, respectively. +//! +//! # Credits +//! +//! The trick that makes this crate work +//! is based on an idea from [David Tolnay](https://github.com/dtolnay). +//! Many thanks! +//! +//! # Example +//! +//! As a simple example, we’re going to re-implement the `stringify!` macro. +//! This is useless since `stringify!` already exists in the standard library, +//! and a bit absurd since this crate uses `stringify!` internally. +//! +//! Nevertheless, it serves as a simple example to demonstrate the use of this crate. +//! +//! ## The `proc-macro` crate +//! +//! The minimal `Cargo.toml` file is typical for Macros 1.1: +//! +//! ```toml +//! [package] +//! name = "libfoo-macros" +//! version = "1.0.0" +//! +//! [lib] +//! proc-macro = true +//! ``` +//! +//! In the code, we define the procedural part of our macro in a function. +//! This function will not be used directly by end users, +//! but it still needs to be re-exported to them +//! (because of limitations in `macro_rules!`). +//! +//! To avoid name collisions, we and a long and explicit prefix in the function’s name. +//! +//! The function takes a string containing arbitrary Rust tokens, +//! and returns a string that is parsed as *items*. +//! The returned string can contain constants, statics, functions, `impl`s, etc., +//! but not expressions directly. +//! +//! ```rust +//! #[macro_use] extern crate procedural_masquarade; +//! extern crate proc_macro; +//! +//! define_proc_macros! { +//! #[allow(non_snake_case)] +//! pub fn foo_internal__stringify_const(input: &str) -> String { +//! format!("const STRINGIFIED: &'static str = {:?};", input) +//! } +//! } +//! ``` +//! +//! A less trivial macro would probably use +//! the [`syn`](https://github.com/dtolnay/syn/) crate to parse its input +//! and the [`quote`](https://github.com/dtolnay/quote) crate to generate its output. +//! +//! ## The library crate +//! +//! ```toml +//! [package] +//! name = "libfoo" +//! version = "1.0.0" +//! +//! [dependencies] +//! cssparser-macros = {path = "./macros", version = "1.0"} +//! ``` +//! +//! ```rust +//! #[macro_use] extern crate libfoo_macros; // (1) +//! +//! pub use libfoo_macros::*; // (2) +//! +//! define_invoke_proc_macro!(libfoo__invoke_proc_macro); // (3) +//! +//! #[macro_export] +//! macro_rules! foo_stringify { // (4) +//! ( $( $tts: tt ) ) => { +//! { // (5) +//! libfoo__invoke_proc_macro! { // (6) +//! foo_internal__stringify_const!( $( $tts ) ) // (7) +//! } +//! STRINGIFIED // (8) +//! } +//! } +//! } +//! ``` +//! +//! Let’s go trough the numbered lines one by one: +//! +//! 1. `libfoo` depends on the other `libfoo-macros`, and imports its macros. +//! 2. Everything exported by `libfoo-macros` (which is one custom `derive`) +//! is re-exported to users of `libfoo`. +//! They’re not expected to use it directly, +//! but expansion of the `foo_stringify` macro needs it. +//! 3. This macro invocation defines yet another macro, called `libfoo__invoke_proc_macro`, +//! which is also exported. +//! This indirection is necessary +//! because re-exporting `macro_rules!` macros doesn’t work currently, +//! and once again it is used by the expansion of `foo_stringify`. +//! Again, we use a long prefix to avoid name collisions. +//! 4. Finally, we define the macro that we really want. +//! This one has a name that users will use. +//! 5. The expansion of this macro will define some items, +//! whose names are not hygienic in `macro_rules`. +//! So we wrap everything in an extra `{…}` block to prevent these names for leaking. +//! 6. Here we use the macro defined in (3), +//! which allows us to write something that look like invoking a functional procedural macro, +//! but really uses a custom `derive`. +//! This will define a type called `ProceduralMasquaradeDummyType`, +//! as a placeholder to use `derive`. +//! If `libfoo__invoke_proc_macro!` is to be used more than once, +//! each use needs to be nested in another block +//! so that the names of multiple dummy types don’t collide. +//! 7. In addition to the dummy type, +//! the items returned by our procedural component are inserted here. +//! (In this case the `STRINGIFIED` constant.) +//! 8. Finally, we write the expression that we want the macro to evaluate to. +//! This expression can use parts of `foo_stringify`’s input, +//! it can contain control-flow statements like `return` or `continue`, +//! and of course refer to procedurally-defined items. +//! +//! This macro can be used in an expression context. +//! It expands to a block-expression that contains some items (as an implementation detail) +//! and ends with another expression. +//! +//! ## For users +//! +//! Users of `libfoo` don’t need to worry about any of these implementation details. +//! They can use the `foo_stringify` macro as if it were a simle `macro_rules` macro: +//! +//! ```rust +//! #[macro_use] extern crate libfoo; +//! +//! fn main() { +//! do_something(foo_stringify!(1 + 2)); +//! } +//! +//! fn do_something(_: &str) { /* ... */ } +//! ``` +//! +//! # More +//! +//! To see a more complex example, look at +//! [`cssparser`’s `src/macros.rs](https://github.com/servo/rust-cssparser/blob/master/src/macros.rs) +//! and +//! [`cssparser-macros`’s `macros/lib.rs](https://github.com/servo/rust-cssparser/blob/master/macros/lib.rs). + +///// +///// This indirection is necessary because re-exporting `macro_rules!` macros doesn’t work. +///// Without it, when a library `libfoo` defines a macro whose expansion uses directly +///// a macro + +/// This macro wraps `&str -> String` functions +/// in custom `derive` implementations with `#[proc_macro_derive]`. +/// +/// See crate documentation for details. #[macro_export] macro_rules! define_proc_macros { ( $( $( #[$attr:meta] )* - pub fn $func:ident($input:ident: &str) -> String - $body:block + pub fn $proc_macro_name: ident ($input: ident : &str) -> String + $body: block )+ ) => { $( $( #[$attr] )* - #[proc_macro_derive($func)] - pub fn $func(input: ::proc_macro::TokenStream) -> ::proc_macro::TokenStream { + #[proc_macro_derive($proc_macro_name)] + pub fn $proc_macro_name(input: ::proc_macro::TokenStream) -> ::proc_macro::TokenStream { // Use another function to hide this one’s local variables from $block #[inline] fn implementation($input: &str) -> String $body @@ -22,10 +189,10 @@ macro_rules! define_proc_macros { normalized.push(' '); } - let prefix = "#[allow(unused)] enum Dummy { Input = (0, stringify!("; + let prefix = "#[allow(unused)] enum ProceduralMasqueradeDummyType { Input = (0, stringify!("; let suffix = ")).0, } "; - assert!(normalized.starts_with(prefix), "Unexpected proc_macro_derive input {:?}", input); - assert!(normalized.ends_with(suffix), "Unexpected proc_macro_derive input {:?}", input); + assert!(normalized.starts_with(prefix), "expected prefix not found in {:?}", input); + assert!(normalized.ends_with(suffix), "expected suffix not found in {:?}", input); let start = prefix.len(); let end = normalized.len() - suffix.len(); @@ -36,6 +203,9 @@ macro_rules! define_proc_macros { } } +/// This macro expands to the definition of another macro (whose name is given as a parameter). +/// +/// See crate documentation for details. #[macro_export] macro_rules! define_invoke_proc_macro { ($macro_name: ident) => { @@ -44,7 +214,27 @@ macro_rules! define_invoke_proc_macro { ($proc_macro_name: ident ! $paren: tt) => { #[derive($proc_macro_name)] #[allow(unused)] - enum Dummy { + enum ProceduralMasquaradeDummyType { + // The magic happens here. + // + // We use an `enum` with an explicit discriminant + // because that is the only case where a type definition + // can contain a (const) expression. + // + // `(0, "foo").0` evalutes to 0, with the `"foo"` part ignored. + // + // By the time the `#[proc_macro_derive]` function + // implementing `#[derive($proc_macro_name)]` is called, + // `$paren` has already been replaced with the input of this inner macro, + // but `stringify!` has not been expanded yet. + // + // This how arbitrary tokens can be inserted + // in the input to the `#[proc_macro_derive]` function. + // + // Later, `stringify!(...)` is expanded into a string literal + // which is then ignored. + // Using `stringify!` enables passing arbitrary tokens + // rather than only what can be parsed as a const expression. Input = (0, stringify! $paren ).0 } } From 3e0524c5305cb895fd26042eecbe3a1a2b530d2a Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 28 Feb 2017 00:49:57 +0100 Subject: [PATCH 27/43] English spelling --- Cargo.toml | 4 ++-- macros/Cargo.toml | 2 +- macros/lib.rs | 2 +- {procedural-masquarade => procedural-masquerade}/Cargo.toml | 4 ++-- {procedural-masquarade => procedural-masquerade}/lib.rs | 6 +++--- src/lib.rs | 4 ++-- src/macros.rs | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) rename {procedural-masquarade => procedural-masquerade}/Cargo.toml (75%) rename {procedural-masquarade => procedural-masquerade}/lib.rs (98%) diff --git a/Cargo.toml b/Cargo.toml index 035f1a7c..ecc71727 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ cssparser-macros = {path = "./macros", version = "0.2"} heapsize = {version = "0.3", optional = true} matches = "0.1" phf = "0.7" -procedural-masquarade = {path = "./procedural-masquarade", version = "0.1"} +procedural-masquerade = {path = "./procedural-masquerade", version = "0.1"} serde = {version = "0.9", optional = true} [build-dependencies] @@ -36,4 +36,4 @@ bench = [] dummy_match_byte = [] [workspace] -members = [".", "./macros", "./procedural-masquarade"] +members = [".", "./macros", "./procedural-masquerade"] diff --git a/macros/Cargo.toml b/macros/Cargo.toml index 45c17cfc..3dd61a72 100644 --- a/macros/Cargo.toml +++ b/macros/Cargo.toml @@ -12,7 +12,7 @@ path = "lib.rs" proc-macro = true [dependencies] -procedural-masquarade = {path = "../procedural-masquarade", version = "0.1"} +procedural-masquerade = {path = "../procedural-masquerade", version = "0.1"} phf_codegen = "0.7" quote = "0.3.14" syn = {version = "0.11.8", features = ["full"]} diff --git a/macros/lib.rs b/macros/lib.rs index a4d6ceaa..96eb1ed6 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#[macro_use] extern crate procedural_masquarade; +#[macro_use] extern crate procedural_masquerade; extern crate phf_codegen; extern crate proc_macro; #[macro_use] extern crate quote; diff --git a/procedural-masquarade/Cargo.toml b/procedural-masquerade/Cargo.toml similarity index 75% rename from procedural-masquarade/Cargo.toml rename to procedural-masquerade/Cargo.toml index 2f7d586f..77441438 100644 --- a/procedural-masquarade/Cargo.toml +++ b/procedural-masquerade/Cargo.toml @@ -1,9 +1,9 @@ [package] -name = "procedural-masquarade" +name = "procedural-masquerade" version = "0.1.0" authors = ["Simon Sapin "] description = "macro_rules for making proc_macro_derive pretending to be proc_macro" -documentation = "https://docs.rs/procedural-masquarade/" +documentation = "https://docs.rs/procedural-masquerade/" repository = "https://github.com/servo/rust-cssparser" license = "MIT/Apache-2.0" diff --git a/procedural-masquarade/lib.rs b/procedural-masquerade/lib.rs similarity index 98% rename from procedural-masquarade/lib.rs rename to procedural-masquerade/lib.rs index ed73c6a3..9e8d9029 100644 --- a/procedural-masquarade/lib.rs +++ b/procedural-masquerade/lib.rs @@ -50,7 +50,7 @@ //! but not expressions directly. //! //! ```rust -//! #[macro_use] extern crate procedural_masquarade; +//! #[macro_use] extern crate procedural_masquerade; //! extern crate proc_macro; //! //! define_proc_macros! { @@ -117,7 +117,7 @@ //! 6. Here we use the macro defined in (3), //! which allows us to write something that look like invoking a functional procedural macro, //! but really uses a custom `derive`. -//! This will define a type called `ProceduralMasquaradeDummyType`, +//! This will define a type called `ProceduralMasqueradeDummyType`, //! as a placeholder to use `derive`. //! If `libfoo__invoke_proc_macro!` is to be used more than once, //! each use needs to be nested in another block @@ -214,7 +214,7 @@ macro_rules! define_invoke_proc_macro { ($proc_macro_name: ident ! $paren: tt) => { #[derive($proc_macro_name)] #[allow(unused)] - enum ProceduralMasquaradeDummyType { + enum ProceduralMasqueradeDummyType { // The magic happens here. // // We use an `enum` with an explicit discriminant diff --git a/src/lib.rs b/src/lib.rs index 51b47b55..20ac3f5a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -70,7 +70,7 @@ fn parse_border_spacing(_context: &ParserContext, input: &mut Parser) #[macro_use] extern crate cssparser_macros; #[macro_use] extern crate matches; -#[macro_use] extern crate procedural_masquarade; +#[macro_use] extern crate procedural_masquerade; pub extern crate phf; #[cfg(test)] extern crate encoding_rs; #[cfg(test)] extern crate tempdir; @@ -95,7 +95,7 @@ pub use unicode_range::UnicodeRange; // For macros #[doc(hidden)] pub use macros::_internal__to_lowercase; -// For macros when used in this crate. Unsure how $crate works with procedural-masquarade. +// For macros when used in this crate. Unsure how $crate works with procedural-masquerade. mod cssparser { pub use phf; } #[macro_use] diff --git a/src/macros.rs b/src/macros.rs index 2ee0f866..1af8b588 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/// See docs of the `procedural-masquarade` crate. +/// See docs of the `procedural-masquerade` crate. define_invoke_proc_macro!(cssparser_internal__invoke_proc_macro); /// Expands to a `match` expression with string patterns, From 7368ec1e0a6d6c967b6379b10a4453dfd089dcef Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 28 Feb 2017 13:00:11 +0100 Subject: [PATCH 28/43] Remove leftover copy/pasted comment --- procedural-masquerade/lib.rs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/procedural-masquerade/lib.rs b/procedural-masquerade/lib.rs index 9e8d9029..ca76a66f 100644 --- a/procedural-masquerade/lib.rs +++ b/procedural-masquerade/lib.rs @@ -156,11 +156,6 @@ //! and //! [`cssparser-macros`’s `macros/lib.rs](https://github.com/servo/rust-cssparser/blob/master/macros/lib.rs). -///// -///// This indirection is necessary because re-exporting `macro_rules!` macros doesn’t work. -///// Without it, when a library `libfoo` defines a macro whose expansion uses directly -///// a macro - /// This macro wraps `&str -> String` functions /// in custom `derive` implementations with `#[proc_macro_derive]`. /// From 157fca44bf1d2ca1fe16676f10777a7099fa6de2 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 28 Feb 2017 13:22:10 +0100 Subject: [PATCH 29/43] Move common proc_macro_derive code into a function. --- procedural-masquerade/Cargo.toml | 1 + procedural-masquerade/lib.rs | 47 ++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/procedural-masquerade/Cargo.toml b/procedural-masquerade/Cargo.toml index 77441438..04ee1742 100644 --- a/procedural-masquerade/Cargo.toml +++ b/procedural-masquerade/Cargo.toml @@ -9,3 +9,4 @@ license = "MIT/Apache-2.0" [lib] path = "lib.rs" +doctest = false diff --git a/procedural-masquerade/lib.rs b/procedural-masquerade/lib.rs index ca76a66f..7fd0b775 100644 --- a/procedural-masquerade/lib.rs +++ b/procedural-masquerade/lib.rs @@ -172,32 +172,37 @@ macro_rules! define_proc_macros { $( $( #[$attr] )* #[proc_macro_derive($proc_macro_name)] - pub fn $proc_macro_name(input: ::proc_macro::TokenStream) -> ::proc_macro::TokenStream { - // Use another function to hide this one’s local variables from $block - #[inline] - fn implementation($input: &str) -> String $body - - let input = input.to_string(); - let mut normalized = String::with_capacity(input.len()); - for piece in input.split_whitespace() { - normalized.push_str(piece); - normalized.push(' '); - } - - let prefix = "#[allow(unused)] enum ProceduralMasqueradeDummyType { Input = (0, stringify!("; - let suffix = ")).0, } "; - assert!(normalized.starts_with(prefix), "expected prefix not found in {:?}", input); - assert!(normalized.ends_with(suffix), "expected suffix not found in {:?}", input); - - let start = prefix.len(); - let end = normalized.len() - suffix.len(); - let output = implementation(&normalized[start..end]); - output.parse().unwrap() + pub fn $proc_macro_name(derive_input: ::proc_macro::TokenStream) + -> ::proc_macro::TokenStream { + let $input = derive_input.to_string(); + let $input: &str = &$crate::_extract_input(&$input); + $body.parse().unwrap() } )+ } } +/// Implementation detail of `define_proc_macros!`. +/// +/// **This function is not part of the public API. It can change or be removed between any versions.** +#[doc(hidden)] +pub fn _extract_input(derive_input: &str) -> String { + let mut normalized = String::with_capacity(derive_input.len()); + for piece in derive_input.split_whitespace() { + normalized.push_str(piece); + normalized.push(' '); + } + + let prefix = "#[allow(unused)] enum ProceduralMasqueradeDummyType { Input = (0, stringify!("; + let suffix = ")).0, } "; + assert!(normalized.starts_with(prefix), "expected prefix not found in {:?}", derive_input); + assert!(normalized.ends_with(suffix), "expected suffix not found in {:?}", derive_input); + + let start = prefix.len(); + let end = normalized.len() - suffix.len(); + normalized[start..end].to_owned() +} + /// This macro expands to the definition of another macro (whose name is given as a parameter). /// /// See crate documentation for details. From 6c3665cbc8f85bc0d4f1944f21013ca3728e2c30 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 28 Feb 2017 13:26:29 +0100 Subject: [PATCH 30/43] Use Tokens::into_string --- macros/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/macros/lib.rs b/macros/lib.rs index 96eb1ed6..7ec857d3 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -88,13 +88,13 @@ define_proc_macros! { map.build(&mut initializer_bytes).unwrap(); tokens.append(::std::str::from_utf8(&initializer_bytes).unwrap()); tokens.append(";"); - tokens.to_string() + tokens.into_string() } } fn max_len>(lengths: I) -> String { let max_length = lengths.max().expect("expected at least one string"); - quote!( const MAX_LENGTH: usize = #max_length; ).to_string() + quote!( const MAX_LENGTH: usize = #max_length; ).into_string() } fn string_literal(token: &syn::TokenTree) -> &str { From 3ad1cbac797a40782e8c35dedbf222928cbd2750 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 28 Feb 2017 13:35:01 +0100 Subject: [PATCH 31/43] =?UTF-8?q?Don=E2=80=99t=20include=20invoke=5Fproc?= =?UTF-8?q?=5Fmacro=20in=20docs.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- procedural-masquerade/lib.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/procedural-masquerade/lib.rs b/procedural-masquerade/lib.rs index 7fd0b775..4e255d22 100644 --- a/procedural-masquerade/lib.rs +++ b/procedural-masquerade/lib.rs @@ -209,6 +209,8 @@ pub fn _extract_input(derive_input: &str) -> String { #[macro_export] macro_rules! define_invoke_proc_macro { ($macro_name: ident) => { + /// Implementation detail of other macros in this crate. + #[doc(hidden)] #[macro_export] macro_rules! $macro_name { ($proc_macro_name: ident ! $paren: tt) => { From 6ffb7eb573be47b9c43c9815d464703edbb2de78 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 28 Feb 2017 13:48:32 +0100 Subject: [PATCH 32/43] =?UTF-8?q?procedural-masquerade:=20don=E2=80=99t=20?= =?UTF-8?q?normalize=20whitespace=20in=20string=20literals.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- procedural-masquerade/Cargo.toml | 2 +- procedural-masquerade/lib.rs | 31 ++++++++++++++++++------------- src/tests.rs | 26 ++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 14 deletions(-) diff --git a/procedural-masquerade/Cargo.toml b/procedural-masquerade/Cargo.toml index 04ee1742..d1cdccc4 100644 --- a/procedural-masquerade/Cargo.toml +++ b/procedural-masquerade/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "procedural-masquerade" -version = "0.1.0" +version = "0.1.1" authors = ["Simon Sapin "] description = "macro_rules for making proc_macro_derive pretending to be proc_macro" documentation = "https://docs.rs/procedural-masquerade/" diff --git a/procedural-masquerade/lib.rs b/procedural-masquerade/lib.rs index 4e255d22..c2bd6b48 100644 --- a/procedural-masquerade/lib.rs +++ b/procedural-masquerade/lib.rs @@ -175,7 +175,7 @@ macro_rules! define_proc_macros { pub fn $proc_macro_name(derive_input: ::proc_macro::TokenStream) -> ::proc_macro::TokenStream { let $input = derive_input.to_string(); - let $input: &str = &$crate::_extract_input(&$input); + let $input = $crate::_extract_input(&$input); $body.parse().unwrap() } )+ @@ -186,21 +186,26 @@ macro_rules! define_proc_macros { /// /// **This function is not part of the public API. It can change or be removed between any versions.** #[doc(hidden)] -pub fn _extract_input(derive_input: &str) -> String { - let mut normalized = String::with_capacity(derive_input.len()); - for piece in derive_input.split_whitespace() { - normalized.push_str(piece); - normalized.push(' '); +pub fn _extract_input(derive_input: &str) -> &str { + let mut input = derive_input; + + for expected in &["#[allow(unused)]", "enum", "ProceduralMasqueradeDummyType", "{", + "Input", "=", "(0,", "stringify!", "("] { + input = input.trim_left(); + assert!(input.starts_with(expected), + "expected prefix {:?} not found in {:?}", expected, derive_input); + input = &input[expected.len()..]; } - let prefix = "#[allow(unused)] enum ProceduralMasqueradeDummyType { Input = (0, stringify!("; - let suffix = ")).0, } "; - assert!(normalized.starts_with(prefix), "expected prefix not found in {:?}", derive_input); - assert!(normalized.ends_with(suffix), "expected suffix not found in {:?}", derive_input); + for expected in [")", ").0,", "}"].iter().rev() { + input = input.trim_right(); + assert!(input.ends_with(expected), + "expected suffix {:?} not found in {:?}", expected, derive_input); + let end = input.len() - expected.len(); + input = &input[..end]; + } - let start = prefix.len(); - let end = normalized.len() - suffix.len(); - normalized[start..end].to_owned() + input } /// This macro expands to the definition of another macro (whose name is given as a parameter). diff --git a/src/tests.rs b/src/tests.rs index b5063138..84199438 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -817,3 +817,29 @@ fn one_component_value_to_json(token: Token, input: &mut Parser) -> Json { Token::CloseCurlyBracket => JArray!["error", "}"], } } + +/// A previous version of procedural-masquerade had a bug where it +/// would normalize consecutive whitespace to a single space, +/// including in string literals. +#[test] +fn procedural_masquerade_whitespace() { + ascii_case_insensitive_phf_map! { + map -> () = { + " \t\n" => () + } + } + assert_eq!(map(" \t\n"), Some(&())); + assert_eq!(map(" "), None); + + match_ignore_ascii_case! { " \t\n", + " " => panic!("1"), + " \t\n" => {}, + _ => panic!("2"), + } + + match_ignore_ascii_case! { " ", + " \t\n" => panic!("3"), + " " => {}, + _ => panic!("4"), + } +} From 8c1dd28b4a18dc5832aee428aedb78edcaba53ed Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 28 Feb 2017 14:03:11 +0100 Subject: [PATCH 33/43] ascii_case_insensitive_phf_map: accept k/v pairs without a trailing comma --- src/macros.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/macros.rs b/src/macros.rs index 1af8b588..6b75d46b 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -78,6 +78,9 @@ macro_rules! match_ignore_ascii_case { /// } #[macro_export] macro_rules! ascii_case_insensitive_phf_map { + ($name: ident -> $ValueType: ty = { $( $key: expr => $value: expr ),* }) => { + ascii_case_insensitive_phf_map!($name -> $ValueType = { $( $key => $value, )* }) + }; ($name: ident -> $ValueType: ty = { $( $key: expr => $value: expr, )* }) => { fn $name(input: &str) -> Option<&'static $ValueType> { cssparser_internal__invoke_proc_macro! { From 4a46a540f4c35b109027b965ed657646ebc11fda Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 28 Feb 2017 15:43:00 +0100 Subject: [PATCH 34/43] Hide re-exported phf from docs --- macros/lib.rs | 4 ++-- src/lib.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/macros/lib.rs b/macros/lib.rs index 7ec857d3..1e6f3590 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -76,13 +76,13 @@ define_proc_macros! { }).collect(); let mut map = phf_codegen::Map::new(); - map.phf_path("::cssparser::phf"); + map.phf_path("::cssparser::_internal__phf"); for &(ref key, ref value) in &pairs { map.entry(&**key, &**value); } let mut tokens = quote! { - static MAP: ::cssparser::phf::Map<&'static str, #value_type> = + static MAP: ::cssparser::_internal__phf::Map<&'static str, #value_type> = }; let mut initializer_bytes = Vec::new(); map.build(&mut initializer_bytes).unwrap(); diff --git a/src/lib.rs b/src/lib.rs index 20ac3f5a..c438b015 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -71,7 +71,7 @@ fn parse_border_spacing(_context: &ParserContext, input: &mut Parser) #[macro_use] extern crate cssparser_macros; #[macro_use] extern crate matches; #[macro_use] extern crate procedural_masquerade; -pub extern crate phf; +#[doc(hidden)] pub extern crate phf as _internal__phf; #[cfg(test)] extern crate encoding_rs; #[cfg(test)] extern crate tempdir; #[cfg(test)] extern crate rustc_serialize; @@ -96,7 +96,7 @@ pub use unicode_range::UnicodeRange; #[doc(hidden)] pub use macros::_internal__to_lowercase; // For macros when used in this crate. Unsure how $crate works with procedural-masquerade. -mod cssparser { pub use phf; } +mod cssparser { pub use _internal__phf; } #[macro_use] mod macros; From 16dfdeb640235c68fb7943befa9e2b4ac160e7e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Fri, 3 Mar 2017 18:46:35 +0100 Subject: [PATCH 35/43] Don't heap-allocate a tokenizer for top-level parsing. This matters when parsing single property declarations, see bug 1344131[1]. [1]: https://bugzilla.mozilla.org/show_bug.cgi?id=1344131 --- Cargo.toml | 2 +- src/parser.rs | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ecc71727..2d673d59 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "cssparser" -version = "0.12.0" +version = "0.12.1" authors = [ "Simon Sapin " ] description = "Rust implementation of CSS Syntax Level 3" diff --git a/src/parser.rs b/src/parser.rs index 9a1ef3d6..9c10ea15 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -22,12 +22,10 @@ pub struct SourcePosition { } -/// Like std::borrow::Cow, except: -/// -/// * The Owned variant is boxed -/// * The Borrowed variant contains a mutable reference. +/// Like std::borrow::Cow, except the borrowed variant contains a mutable +/// reference. enum MaybeOwned<'a, T: 'a> { - Owned(Box), + Owned(T), Borrowed(&'a mut T), } @@ -36,7 +34,7 @@ impl<'a, T> ops::Deref for MaybeOwned<'a, T> { fn deref<'b>(&'b self) -> &'b T { match *self { - MaybeOwned::Owned(ref pointer) => &**pointer, + MaybeOwned::Owned(ref t) => t, MaybeOwned::Borrowed(ref pointer) => &**pointer, } } @@ -45,7 +43,7 @@ impl<'a, T> ops::Deref for MaybeOwned<'a, T> { impl<'a, T> ops::DerefMut for MaybeOwned<'a, T> { fn deref_mut<'b>(&'b mut self) -> &'b mut T { match *self { - MaybeOwned::Owned(ref mut pointer) => &mut **pointer, + MaybeOwned::Owned(ref mut t) => t, MaybeOwned::Borrowed(ref mut pointer) => &mut **pointer, } } @@ -53,7 +51,7 @@ impl<'a, T> ops::DerefMut for MaybeOwned<'a, T> { impl<'a, T> Clone for MaybeOwned<'a, T> where T: Clone { fn clone(&self) -> MaybeOwned<'a, T> { - MaybeOwned::Owned(Box::new((**self).clone())) + MaybeOwned::Owned((**self).clone()) } } @@ -171,7 +169,7 @@ impl<'i, 't> Parser<'i, 't> { #[inline] pub fn new(input: &'i str) -> Parser<'i, 'i> { Parser { - tokenizer: MaybeOwned::Owned(Box::new(Tokenizer::new(input))), + tokenizer: MaybeOwned::Owned(Tokenizer::new(input)), at_start_of: None, stop_before: Delimiter::None, } From 9dc53a202744cb444d25791ac34f80f880490f24 Mon Sep 17 00:00:00 2001 From: Michael Wheeler Date: Wed, 8 Mar 2017 19:45:54 -0500 Subject: [PATCH 36/43] Fix doc typo --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index c438b015..3ab97b6d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,7 +25,7 @@ which can be used together with rust-encoding or encoding-rs. * Take (at least) a `input: &mut cssparser::Parser` parameter * Return `Result<_, ()>` * When returning `Ok(_)`, - the function must have consume exactly the amount of input that represents the parsed value. + the function must have consumed exactly the amount of input that represents the parsed value. * When returning `Err(())`, any amount of input may have been consumed. As a consequence, when calling another parsing function, either: From 185b35de6ab8c8cdfaa075d21f504fb5df2348f6 Mon Sep 17 00:00:00 2001 From: ak1t0 Date: Sun, 19 Mar 2017 23:54:44 +0900 Subject: [PATCH 37/43] Add escape to write_str --- src/serializer.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/serializer.rs b/src/serializer.rs index ec8482e1..749fb032 100644 --- a/src/serializer.rs +++ b/src/serializer.rs @@ -250,12 +250,17 @@ impl<'a, W> fmt::Write for CssStringWriter<'a, W> where W: fmt::Write { fn write_str(&mut self, s: &str) -> fmt::Result { let mut chunk_start = 0; for (i, b) in s.bytes().enumerate() { + let string; let escaped = match b { b'"' => "\\\"", b'\\' => "\\\\", b'\n' => "\\A ", b'\r' => "\\D ", - b'\x0C' => "\\C ", + b'\0' => "\u{FFFD}", + x if (x >= b'\x01' && x <= b'\x1F') || x == b'\x7F' => { + string = format!("\\{:x} ", x); + &string + }, _ => continue, }; try!(self.inner.write_str(&s[chunk_start..i])); From 2b0681f2ad299f1e8206e91a273472b3194460df Mon Sep 17 00:00:00 2001 From: ak1t0 Date: Mon, 20 Mar 2017 15:37:16 +0900 Subject: [PATCH 38/43] Replace guard with range pattern --- src/serializer.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/serializer.rs b/src/serializer.rs index 749fb032..47aa7160 100644 --- a/src/serializer.rs +++ b/src/serializer.rs @@ -257,8 +257,8 @@ impl<'a, W> fmt::Write for CssStringWriter<'a, W> where W: fmt::Write { b'\n' => "\\A ", b'\r' => "\\D ", b'\0' => "\u{FFFD}", - x if (x >= b'\x01' && x <= b'\x1F') || x == b'\x7F' => { - string = format!("\\{:x} ", x); + b'\x01'...b'\x1F' | b'\x7F' => { + string = format!("\\{:x} ", b); &string }, _ => continue, From 8214af37e082c9f99789735669566e2a1239967f Mon Sep 17 00:00:00 2001 From: ak1t0 Date: Mon, 20 Mar 2017 16:41:31 +0900 Subject: [PATCH 39/43] Replace format! with Option<&str> --- src/serializer.rs | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/serializer.rs b/src/serializer.rs index 47aa7160..10711e1f 100644 --- a/src/serializer.rs +++ b/src/serializer.rs @@ -250,21 +250,20 @@ impl<'a, W> fmt::Write for CssStringWriter<'a, W> where W: fmt::Write { fn write_str(&mut self, s: &str) -> fmt::Result { let mut chunk_start = 0; for (i, b) in s.bytes().enumerate() { - let string; let escaped = match b { - b'"' => "\\\"", - b'\\' => "\\\\", - b'\n' => "\\A ", - b'\r' => "\\D ", - b'\0' => "\u{FFFD}", - b'\x01'...b'\x1F' | b'\x7F' => { - string = format!("\\{:x} ", b); - &string - }, + b'"' => Some("\\\""), + b'\\' => Some("\\\\"), + b'\n' => Some("\\A "), + b'\r' => Some("\\D "), + b'\0' => Some("\u{FFFD}"), + b'\x01'...b'\x1F' | b'\x7F' => None, _ => continue, }; try!(self.inner.write_str(&s[chunk_start..i])); - try!(self.inner.write_str(escaped)); + match escaped { + Some(x) => try!(self.inner.write_str(x)), + None => try!(write!(self.inner, "\\{:x} ", b)), + }; chunk_start = i + 1; } self.inner.write_str(&s[chunk_start..]) From 56c3a704f5df96427fe7f5584fb896255aa1a514 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Mon, 3 Apr 2017 02:10:33 +0200 Subject: [PATCH 40/43] Stop using temporary files and an external program for diffs in test failures. --- Cargo.toml | 2 +- src/lib.rs | 2 +- src/tests.rs | 34 +++++----------------------------- 3 files changed, 7 insertions(+), 31 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 2d673d59..f90abaf6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ exclude = ["src/css-parsing-tests"] [dev-dependencies] rustc-serialize = "0.3" -tempdir = "0.3" +difference = "1.0" encoding_rs = "0.5" [dependencies] diff --git a/src/lib.rs b/src/lib.rs index 3ab97b6d..4df99317 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -73,7 +73,7 @@ fn parse_border_spacing(_context: &ParserContext, input: &mut Parser) #[macro_use] extern crate procedural_masquerade; #[doc(hidden)] pub extern crate phf as _internal__phf; #[cfg(test)] extern crate encoding_rs; -#[cfg(test)] extern crate tempdir; +#[cfg(test)] extern crate difference; #[cfg(test)] extern crate rustc_serialize; #[cfg(feature = "serde")] extern crate serde; #[cfg(feature = "heapsize")] #[macro_use] extern crate heapsize; diff --git a/src/tests.rs b/src/tests.rs index 84199438..18b1615d 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -7,12 +7,7 @@ extern crate test; use encoding_rs; use std::borrow::Cow::{self, Borrowed}; -use std::fs::File; -use std::io::{self, Write}; -use std::path::Path; -use std::process::Command; use rustc_serialize::json::{self, Json, ToJson}; -use tempdir::TempDir; #[cfg(feature = "bench")] use self::test::Bencher; @@ -30,29 +25,6 @@ macro_rules! JArray { ($($e: expr),*) => { Json::Array(vec!( $( $e.to_json() ),* )) } } - -fn write_whole_file(path: &Path, data: &str) -> io::Result<()> { - (try!(File::create(path))).write_all(data.as_bytes()) -} - - -fn print_json_diff(results: &Json, expected: &Json) -> io::Result<()> { - let temp = try!(TempDir::new("rust-cssparser-tests")); - let results = results.pretty().to_string() + "\n"; - let expected = expected.pretty().to_string() + "\n"; - let result_path = temp.path().join("results.json"); - let expected_path = temp.path().join("expected.json"); - try!(write_whole_file(&result_path, &results)); - try!(write_whole_file(&expected_path, &expected)); - try!(Command::new("colordiff") - .arg("-u1000") - .arg(&result_path) - .arg(&expected_path) - .status()); - Ok(()) -} - - fn almost_equals(a: &Json, b: &Json) -> bool { match (a, b) { (&Json::I64(a), _) => almost_equals(&Json::F64(a as f64), b), @@ -93,7 +65,11 @@ fn normalize(json: &mut Json) { fn assert_json_eq(results: json::Json, mut expected: json::Json, message: String) { normalize(&mut expected); if !almost_equals(&results, &expected) { - print_json_diff(&results, &expected).unwrap(); + println!("{}", ::difference::Changeset::new( + &results.pretty().to_string(), + &expected.pretty().to_string(), + "\n", + )); panic!(message) } } From 70e03387fc1831b158eeca44f6d860eeae4173bc Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 3 Apr 2017 08:56:01 -0400 Subject: [PATCH 41/43] Mark invalid Rust as text-only documentation. --- macros/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macros/lib.rs b/macros/lib.rs index 1e6f3590..5f354bb1 100644 --- a/macros/lib.rs +++ b/macros/lib.rs @@ -62,7 +62,7 @@ define_proc_macros! { /// and the corresponding value as a const expression. /// /// Output: a rust-phf map, with keys ASCII-lowercased: - /// ``` + /// ```text /// static MAP: &'static ::cssparser::phf::Map<&'static str, $ValueType> = …; /// ``` #[allow(non_snake_case)] From 15d44abaebbc1126f9551cf1a4839c803c399049 Mon Sep 17 00:00:00 2001 From: Manuel Woelker Date: Fri, 17 Feb 2017 20:10:25 +0100 Subject: [PATCH 42/43] color: Support CSS Color Level 4 rgb & hsl syntax (#113) --- src/color.rs | 102 +- src/css-parsing-tests/color3.json | 131 +- src/css-parsing-tests/color3_hsl.json | 11666 ++++++++++++++++++++- src/css-parsing-tests/make_color3_hsl.py | 8 +- 4 files changed, 11873 insertions(+), 34 deletions(-) diff --git a/src/color.rs b/src/color.rs index ea65f549..c015ed2c 100644 --- a/src/color.rs +++ b/src/color.rs @@ -4,6 +4,7 @@ use std::cmp; use std::fmt; +use std::f64::consts::PI; use super::{Token, Parser, ToCss}; use tokenizer::NumericValue; @@ -398,47 +399,84 @@ fn clamp_f32(val: f32) -> u8 { #[inline] fn parse_color_function(name: &str, arguments: &mut Parser) -> Result { - let (is_rgb, has_alpha) = match_ignore_ascii_case! { name, - "rgba" => (true, true), - "rgb" => (true, false), - "hsl" => (false, false), - "hsla" => (false, true), + let is_rgb = match_ignore_ascii_case! { name, + "rgba" => true, + "rgb" => true, + "hsl" => false, + "hsla" => false, _ => return Err(()) }; let red: u8; let green: u8; let blue: u8; + let mut uses_commas = false; if is_rgb { // Either integers or percentages, but all the same type. // https://drafts.csswg.org/css-color/#rgb-functions match try!(arguments.next()) { - Token::Number(NumericValue { int_value: Some(v), .. }) => { - red = clamp_i32(v); - try!(arguments.expect_comma()); - green = clamp_i32(try!(arguments.expect_integer())); - try!(arguments.expect_comma()); - blue = clamp_i32(try!(arguments.expect_integer())); + Token::Number(NumericValue { value: v, .. }) => { + red = clamp_i32(v as i32); + green = clamp_i32(match try!(arguments.next()) { + Token::Number(NumericValue { value: v, .. }) => v, + Token::Comma => { + uses_commas = true; + try!(arguments.expect_number()) + } + _ => return Err(()) + } as i32); + if uses_commas { + try!(arguments.expect_comma()); + } + blue = clamp_i32(try!(arguments.expect_number()) as i32); } Token::Percentage(ref v) => { red = clamp_f32(v.unit_value); - try!(arguments.expect_comma()); - green = clamp_f32(try!(arguments.expect_percentage())); - try!(arguments.expect_comma()); + green = clamp_f32(match try!(arguments.next()) { + Token::Percentage(ref v) => v.unit_value, + Token::Comma => { + uses_commas = true; + try!(arguments.expect_percentage()) + } + _ => return Err(()) + }); + if uses_commas { + try!(arguments.expect_comma()); + } blue = clamp_f32(try!(arguments.expect_percentage())); } _ => return Err(()) }; } else { - let hue_degrees = try!(arguments.expect_number()); + let hue_degrees = match try!(arguments.next()) { + Token::Number(NumericValue { value: v, .. }) => v, + Token::Dimension(NumericValue { value: v, .. }, unit) => { + match &*unit { + "deg" => v, + "grad" => v * 360. / 400., + "rad" => v * 360. / (2. * PI as f32), + "turn" => v * 360., + _ => return Err(()) + } + } + _ => return Err(()) + }; // Subtract an integer before rounding, to avoid some rounding errors: let hue_normalized_degrees = hue_degrees - 360. * (hue_degrees / 360.).floor(); let hue = hue_normalized_degrees / 360.; // Saturation and lightness are clamped to 0% ... 100% // https://drafts.csswg.org/css-color/#the-hsl-notation - try!(arguments.expect_comma()); - let saturation = try!(arguments.expect_percentage()).max(0.).min(1.); - try!(arguments.expect_comma()); + let saturation = match try!(arguments.next()) { + Token::Percentage(ref v) => v.unit_value, + Token::Comma => { + uses_commas = true; + try!(arguments.expect_percentage()) + } + _ => return Err(()) + }.max(0.).min(1.); + if uses_commas { + try!(arguments.expect_comma()); + } let lightness = try!(arguments.expect_percentage()).max(0.).min(1.); // https://drafts.csswg.org/css-color/#hsl-color @@ -461,12 +499,38 @@ fn parse_color_function(name: &str, arguments: &mut Parser) -> Result blue = clamp_f32(hue_to_rgb(m1, m2, hue_times_3 - 1.)); } + let alpha = if !arguments.is_exhausted() { + if uses_commas { + try!(arguments.expect_comma()); + } else { + match try!(arguments.next()) { + Token::Delim('/') => {}, + _ => return Err(()) + }; + }; + let token = try!(arguments.next()); + match token { + Token::Number(NumericValue { value: v, .. }) => { + clamp_f32(v) + } + Token::Percentage(ref v) => { + clamp_f32(v.unit_value) + } + _ => { + return Err(()) + } + } + } else { + 255 + }; + + /* let alpha = if has_alpha { try!(arguments.expect_comma()); clamp_f32(try!(arguments.expect_number())) } else { 255 - }; + };*/ try!(arguments.expect_exhausted()); rgba(red, green, blue, alpha) } diff --git a/src/css-parsing-tests/color3.json b/src/css-parsing-tests/color3.json index bd94964f..ce9e1a23 100644 --- a/src/css-parsing-tests/color3.json +++ b/src/css-parsing-tests/color3.json @@ -65,13 +65,14 @@ "rgb()", null, "rgb(0)", null, "rgb(0, 0)", null, -"rgb(0, 0, 0, 0)", null, +"rgb(0, 0, 0, 0)", [0, 0, 0, 0], "rgb(0%)", null, "rgb(0%, 0%)", null, -"rgb(0%, 0%, 0%, 0%)", null, -"rgb(0%, 0%, 0%, 0)", null, +"rgb(0%, 0%, 0%, 0%)", [0, 0, 0, 0], +"rgb(0%, 0%, 0%, 0)", [0, 0, 0, 0], "rgba(0, 0, 0, 0)", [0, 0, 0, 0], + "rgba(.3, -1.4, -0.001e2, 0)", [0, 0, 0, 0], "rgba(204, 0, 102, 0.25)", [204, 0, 102, 64], "RGBA(255,255,255, 0)", [255, 255, 255, 0], "rgBA(0, 51,255, 1)", [0, 51, 255, 255], @@ -92,7 +93,7 @@ "rgba(0%, 20%, 100%, -0.1)", [0, 51, 255, 0], "rgba(0%, 20%, 100%, -139)", [0, 51, 255, 0], -"rgba(255,255,255, 0%)", null, +"rgba(255,255,255, 0%)", [255, 255, 255, 0], "rgba(10%, 50%, 0, 1)", null, "rgba(255, 50%, 0%, 1)", null, "rgba(0, 0, 0 0)", null, @@ -100,12 +101,12 @@ "rgba(0, 0, 0, light)", null, "rgba()", null, "rgba(0)", null, -"rgba(0, 0, 0)", null, +"rgba(0, 0, 0)", [0, 0, 0, 255], "rgba(0, 0, 0, 0, 0)", null, "rgba(0%)", null, "rgba(0%, 0%)", null, -"rgba(0%, 0%, 0%)", null, -"rgba(0%, 0%, 0%, 0%)", null, +"rgba(0%, 0%, 0%)", [0, 0, 0, 255], +"rgba(0%, 0%, 0%, 0%)", [0, 0, 0, 0], "rgba(0%, 0%, 0%, 0%, 0%)", null, "HSL(0, 0%, 0%)", [0, 0, 0, 255], @@ -118,12 +119,12 @@ "hsl(10, 50%, 0)", null, "hsl(50%, 50%, 0%)", null, "hsl(0, 0% 0%)", null, -"hsl(30deg, 100%, 100%)", null, +"hsl(30deg, 100%, 100%)", [255, 255, 255, 255], "hsl(0, 0%, light)", null, "hsl()", null, "hsl(0)", null, "hsl(0, 0%)", null, -"hsl(0, 0%, 0%, 0%)", null, +"hsl(0, 0%, 0%, 0%)", [0, 0, 0, 0], "HSLA(-300, 100%, 37.5%, 1)", [192, 192, 0, 255], "hsLA(-300, 100%, 37.5%, 12)", [192, 192, 0, 255], @@ -134,13 +135,121 @@ "hsla(10, 50%, 0, 1)", null, "hsla(50%, 50%, 0%, 1)", null, "hsla(0, 0% 0%, 1)", null, -"hsla(30deg, 100%, 100%, 1)", null, +"hsla(30deg, 100%, 100%, 1)", [255, 255, 255, 255], "hsla(0, 0%, light, 1)", null, "hsla()", null, "hsla(0)", null, "hsla(0, 0%)", null, -"hsla(0, 0%, 0%, 50%)", null, +"hsla(0, 0%, 0%, 50%)", [0, 0, 0, 128], "hsla(0, 0%, 0%, 255, 0%)", null, +"rgb(0 0 0 0)", null, +"rgb(0 0 0 / 0)", [0, 0, 0, 0], +"rgb(0%)", null, +"rgb(0% 0%)", null, +"rgb(0% 0% 0% / 0%)", [0, 0, 0, 0], +"rgb(0% 0% 0% / 0)", [0, 0, 0, 0], + +"rgba(0%)", null, +"rgba(0% 0%)", null, +"rgba(0% 0% 0%)", [0, 0, 0, 255], +"rgba(0% 0% 0% / 0%)", [0, 0, 0, 0], +"rgba(0% 0% 0% / 0% 0%)", null, + +"rgb(0, 0 0 0)", null, +"rgb(0 0, 0 0)", null, +"rgb(0 0 0, 0)", null, +"rgb(0, 0, 0 0)", null, + +"rgba(0%, 0% 0%)", null, +"rgba(0% 0% 0%, 0%)", null, + +"HSL(0 0% 0%)", [0, 0, 0, 255], +"hsL(0 100% 50%)", [255, 0, 0, 255], +"hsl(60 100% 37.5%)", [192, 192, 0, 255], + +"HSLA(-300 100% 37.5% /1)", [192, 192, 0, 255], +"hsLA(-300 100% 37.5% /12)", [192, 192, 0, 255], + +"hsl(0, 0 0 0)", null, +"hsl(0 0, 0 0)", null, +"hsl(0 0 0, 0)", null, +"hsl(0, 0, 0 0)", null, + +"hsla(0%, 0% 0%)", null, +"hsla(0% 0% 0%, 0%)", null, + +"hsla(120.0, 75%, 50%, 20%)", [32, 224, 32, 51], +"hsla(120, 75%, 50%, 0.4)", [32, 224, 32, 102], +"hsla(120 75% 50% / 60%)", [32, 224, 32, 153], +"hsla(120.0 75% 50% / 1.0)", [32, 224, 32, 255], +"hsla(120/* comment */75%/* comment */50%/1.0)", [32, 224, 32, 255], +"hsla(120,/* comment */75%,/* comment */50%,100%)", [32, 224, 32, 255], +"hsla(120.0, 75%, 50%)", [32, 224, 32, 255], +"hsla(120 75% 50%)", [32, 224, 32, 255], +"hsla(120/* comment */75%/* comment */50%)", [32, 224, 32, 255], +"hsla(120/* comment */,75%,/* comment */50%)", [32, 224, 32, 255], +"hsl(120, 75%, 50%, 0.2)", [32, 224, 32, 51], +"hsl(120, 75%, 50%, 40%)", [32, 224, 32, 102], +"hsl(120 75% 50% / 0.6)", [32, 224, 32, 153], +"hsl(120 75% 50% / 80%)", [32, 224, 32, 204], +"hsl(120/* comment */75%/* comment */50%/1.0)", [32, 224, 32, 255], +"hsl(120/* comment */75%/* comment */50%/100%)", [32, 224, 32, 255], +"hsl(120,/* comment */75%,/* comment */50%,1.0)", [32, 224, 32, 255], +"hsl(120,/* comment */75%,/* comment */50%,100%)", [32, 224, 32, 255], +"hsl(120/* comment */75%/* comment */50%)", [32, 224, 32, 255], +"hsl(120/* comment */,75%,/* comment */50%)", [32, 224, 32, 255], +"hsla(120, 75%, 50%, 0.2)", [32, 224, 32, 51], +"hsl(240, 75%, 50%)", [32, 32, 224, 255], +"hsla(120, 75%, 50%)", [32, 224, 32, 255], +"hsla(120.0, 75%, 50%)", [32, 224, 32, 255], +"hsla(1.2e2, 75%, 50%)", [32, 224, 32, 255], +"hsla(1.2E2, 75%, 50%)", [32, 224, 32, 255], +"hsla(60, 75%, 50%)", [224, 224, 32, 255], +"hsl(120, 75%, 50%, 0.2)", [32, 224, 32, 51], +"hsl(120.0, 75%, 50%, 0.4)", [32, 224, 32, 102], +"hsl(1.2e2, 75%, 50%, 0.6)", [32, 224, 32, 153], +"hsl(1.2E2, 75%, 50%, 0.8)", [32, 224, 32, 204], +"hsl(60.0, 75%, 50%, 1.0)", [224, 224, 32, 255], +"rgb(10%, 60%, 10%, 20%)", [25, 153, 25, 51], +"rgb(10, 175, 10, 0.4)", [10, 175, 10, 102], +"rgb(10 175 10 / 60%)", [10, 175, 10, 153], +"rgb(10.0 175.0 10.0 / 0.8)", [10, 175, 10, 204], +"rgb(10/* comment */175/* comment */10/100%)", [10, 175, 10, 255], +"rgb(10,/* comment */150,/* comment */50)", [10, 150, 50, 255], +"rgb(10%, 60%, 10%)", [25, 153, 25, 255], +"rgb(10.0 100.0 100.0)", [10, 100, 100, 255], +"rgb(10/* comment */75/* comment */125)", [10, 75, 125, 255], +"rgb(10.0, 50.0, 150.0)", [10, 50, 150, 255], +"rgba(10.0, 175.0, 10.0, 0.2)", [10, 175, 10, 51], +"rgba(10, 175, 10, 40%)", [10, 175, 10, 102], +"rgba(10% 75% 10% / 0.6)", [25, 192, 25, 153], +"rgba(10 175 10 / 80%)", [10, 175, 10, 204], +"rgba(10/* comment */175/* comment */10/100%)", [10, 175, 10, 255], +"rgba(10,/* comment */150,/* comment */50)", [10, 150, 50, 255], +"rgba(10.0, 125.0, 75.0)", [10, 125, 75, 255], +"rgba(10%, 45%, 45%)", [25, 115, 115, 255], +"rgba(10/* comment */75/* comment */125)", [10, 75, 125, 255], +"rgba(10.0, 50.0, 150.0)", [10, 50, 150, 255], +"rgb(10, 175, 10, 0.2)", [10, 175, 10, 51], +"rgb(10, 175, 10, 0.4)", [10, 175, 10, 102], +"rgb(10, 175, 10, 0.6)", [10, 175, 10, 153], +"rgb(10%, 70%, 10%, 0.8)", [25, 179, 25, 204], +"rgb(10%, 70%, 10%, 1.0)", [25, 179, 25, 255], +"rgba(10, 150, 50)", [10, 150, 50, 255], +"rgba(10, 125, 75)", [10, 125, 75, 255], +"rgba(10%,40%, 40%)", [25, 102, 102, 255], +"rgba(10%, 45%, 50%)", [25, 115, 128, 255], +"rgba(10%, 50%, 60%)", [25, 128, 153, 255], + +"hsla(120deg, 75%, 50%, 0.4)", [32, 224, 32, 102], +"hsla(133.33333333grad, 75%, 50%, 0.6)", [32, 224, 32, 153], +"hsla(2.0943951024rad, 75%, 50%, 0.8)", [32, 224, 32, 204], +"hsla(0.3333333333turn, 75%, 50%, 1.0)", [32, 224, 32, 255], +"hsl(600deg, 75%, 50%)", [32, 32, 224, 255], +"hsl(1066.66666666grad, 75%, 50%)", [32, 32, 224, 255], +"hsl(10.4719755118rad, 75%, 50%)", [32, 32, 224, 255], +"hsl(2.6666666666turn, 75%, 50%)", [32, 32, 224, 255], + "cmyk(0, 0, 0, 0)", null ] diff --git a/src/css-parsing-tests/color3_hsl.json b/src/css-parsing-tests/color3_hsl.json index d322ad1c..0fd256e8 100644 --- a/src/css-parsing-tests/color3_hsl.json +++ b/src/css-parsing-tests/color3_hsl.json @@ -971,6 +971,3894 @@ "hsl(270, 100%, 100%)", [255, 255, 255, 255], "hsl(300, 100%, 100%)", [255, 255, 255, 255], "hsl(330, 100%, 100%)", [255, 255, 255, 255], +"hsl(0, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(30, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(60, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(90, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(120, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(150, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(180, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(210, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(240, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(270, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(300, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(330, 0%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(0, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(30, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(60, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(90, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(120, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(150, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(180, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(210, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(240, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(270, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(300, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(330, 12.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(0, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(30, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(60, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(90, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(120, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(150, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(180, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(210, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(240, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(270, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(300, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(330, 25%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(0, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(30, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(60, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(90, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(120, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(150, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(180, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(210, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(240, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(270, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(300, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(330, 37.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(0, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(30, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(60, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(90, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(120, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(150, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(180, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(210, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(240, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(270, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(300, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(330, 50%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(0, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(30, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(60, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(90, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(120, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(150, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(180, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(210, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(240, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(270, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(300, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(330, 62.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(0, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(30, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(60, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(90, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(120, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(150, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(180, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(210, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(240, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(270, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(300, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(330, 75%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(0, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(30, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(60, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(90, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(120, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(150, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(180, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(210, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(240, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(270, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(300, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(330, 87.5%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(0, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(30, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(60, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(90, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(120, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(150, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(180, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(210, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(240, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(270, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(300, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(330, 100%, 0%, 1.0)", [0, 0, 0, 255], +"hsl(0, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(30, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(60, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(90, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(120, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(150, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(180, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(210, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(240, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(270, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(300, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(330, 0%, 12.5%, 1.0)", [32, 32, 32, 255], +"hsl(0, 12.5%, 12.5%, 1.0)", [36, 28, 28, 255], +"hsl(30, 12.5%, 12.5%, 1.0)", [36, 32, 28, 255], +"hsl(60, 12.5%, 12.5%, 1.0)", [36, 36, 28, 255], +"hsl(90, 12.5%, 12.5%, 1.0)", [32, 36, 28, 255], +"hsl(120, 12.5%, 12.5%, 1.0)", [28, 36, 28, 255], +"hsl(150, 12.5%, 12.5%, 1.0)", [28, 36, 32, 255], +"hsl(180, 12.5%, 12.5%, 1.0)", [28, 36, 36, 255], +"hsl(210, 12.5%, 12.5%, 1.0)", [28, 32, 36, 255], +"hsl(240, 12.5%, 12.5%, 1.0)", [28, 28, 36, 255], +"hsl(270, 12.5%, 12.5%, 1.0)", [32, 28, 36, 255], +"hsl(300, 12.5%, 12.5%, 1.0)", [36, 28, 36, 255], +"hsl(330, 12.5%, 12.5%, 1.0)", [36, 28, 32, 255], +"hsl(0, 25%, 12.5%, 1.0)", [40, 24, 24, 255], +"hsl(30, 25%, 12.5%, 1.0)", [40, 32, 24, 255], +"hsl(60, 25%, 12.5%, 1.0)", [40, 40, 24, 255], +"hsl(90, 25%, 12.5%, 1.0)", [32, 40, 24, 255], +"hsl(120, 25%, 12.5%, 1.0)", [24, 40, 24, 255], +"hsl(150, 25%, 12.5%, 1.0)", [24, 40, 32, 255], +"hsl(180, 25%, 12.5%, 1.0)", [24, 40, 40, 255], +"hsl(210, 25%, 12.5%, 1.0)", [24, 32, 40, 255], +"hsl(240, 25%, 12.5%, 1.0)", [24, 24, 40, 255], +"hsl(270, 25%, 12.5%, 1.0)", [32, 24, 40, 255], +"hsl(300, 25%, 12.5%, 1.0)", [40, 24, 40, 255], +"hsl(330, 25%, 12.5%, 1.0)", [40, 24, 32, 255], +"hsl(0, 37.5%, 12.5%, 1.0)", [44, 20, 20, 255], +"hsl(30, 37.5%, 12.5%, 1.0)", [44, 32, 20, 255], +"hsl(60, 37.5%, 12.5%, 1.0)", [44, 44, 20, 255], +"hsl(90, 37.5%, 12.5%, 1.0)", [32, 44, 20, 255], +"hsl(120, 37.5%, 12.5%, 1.0)", [20, 44, 20, 255], +"hsl(150, 37.5%, 12.5%, 1.0)", [20, 44, 32, 255], +"hsl(180, 37.5%, 12.5%, 1.0)", [20, 44, 44, 255], +"hsl(210, 37.5%, 12.5%, 1.0)", [20, 32, 44, 255], +"hsl(240, 37.5%, 12.5%, 1.0)", [20, 20, 44, 255], +"hsl(270, 37.5%, 12.5%, 1.0)", [32, 20, 44, 255], +"hsl(300, 37.5%, 12.5%, 1.0)", [44, 20, 44, 255], +"hsl(330, 37.5%, 12.5%, 1.0)", [44, 20, 32, 255], +"hsl(0, 50%, 12.5%, 1.0)", [48, 16, 16, 255], +"hsl(30, 50%, 12.5%, 1.0)", [48, 32, 16, 255], +"hsl(60, 50%, 12.5%, 1.0)", [48, 48, 16, 255], +"hsl(90, 50%, 12.5%, 1.0)", [32, 48, 16, 255], +"hsl(120, 50%, 12.5%, 1.0)", [16, 48, 16, 255], +"hsl(150, 50%, 12.5%, 1.0)", [16, 48, 32, 255], +"hsl(180, 50%, 12.5%, 1.0)", [16, 48, 48, 255], +"hsl(210, 50%, 12.5%, 1.0)", [16, 32, 48, 255], +"hsl(240, 50%, 12.5%, 1.0)", [16, 16, 48, 255], +"hsl(270, 50%, 12.5%, 1.0)", [32, 16, 48, 255], +"hsl(300, 50%, 12.5%, 1.0)", [48, 16, 48, 255], +"hsl(330, 50%, 12.5%, 1.0)", [48, 16, 32, 255], +"hsl(0, 62.5%, 12.5%, 1.0)", [52, 12, 12, 255], +"hsl(30, 62.5%, 12.5%, 1.0)", [52, 32, 12, 255], +"hsl(60, 62.5%, 12.5%, 1.0)", [52, 52, 12, 255], +"hsl(90, 62.5%, 12.5%, 1.0)", [32, 52, 12, 255], +"hsl(120, 62.5%, 12.5%, 1.0)", [12, 52, 12, 255], +"hsl(150, 62.5%, 12.5%, 1.0)", [12, 52, 32, 255], +"hsl(180, 62.5%, 12.5%, 1.0)", [12, 52, 52, 255], +"hsl(210, 62.5%, 12.5%, 1.0)", [12, 32, 52, 255], +"hsl(240, 62.5%, 12.5%, 1.0)", [12, 12, 52, 255], +"hsl(270, 62.5%, 12.5%, 1.0)", [32, 12, 52, 255], +"hsl(300, 62.5%, 12.5%, 1.0)", [52, 12, 52, 255], +"hsl(330, 62.5%, 12.5%, 1.0)", [52, 12, 32, 255], +"hsl(0, 75%, 12.5%, 1.0)", [56, 8, 8, 255], +"hsl(30, 75%, 12.5%, 1.0)", [56, 32, 8, 255], +"hsl(60, 75%, 12.5%, 1.0)", [56, 56, 8, 255], +"hsl(90, 75%, 12.5%, 1.0)", [32, 56, 8, 255], +"hsl(120, 75%, 12.5%, 1.0)", [8, 56, 8, 255], +"hsl(150, 75%, 12.5%, 1.0)", [8, 56, 32, 255], +"hsl(180, 75%, 12.5%, 1.0)", [8, 56, 56, 255], +"hsl(210, 75%, 12.5%, 1.0)", [8, 32, 56, 255], +"hsl(240, 75%, 12.5%, 1.0)", [8, 8, 56, 255], +"hsl(270, 75%, 12.5%, 1.0)", [32, 8, 56, 255], +"hsl(300, 75%, 12.5%, 1.0)", [56, 8, 56, 255], +"hsl(330, 75%, 12.5%, 1.0)", [56, 8, 32, 255], +"hsl(0, 87.5%, 12.5%, 1.0)", [60, 4, 4, 255], +"hsl(30, 87.5%, 12.5%, 1.0)", [60, 32, 4, 255], +"hsl(60, 87.5%, 12.5%, 1.0)", [60, 60, 4, 255], +"hsl(90, 87.5%, 12.5%, 1.0)", [32, 60, 4, 255], +"hsl(120, 87.5%, 12.5%, 1.0)", [4, 60, 4, 255], +"hsl(150, 87.5%, 12.5%, 1.0)", [4, 60, 32, 255], +"hsl(180, 87.5%, 12.5%, 1.0)", [4, 60, 60, 255], +"hsl(210, 87.5%, 12.5%, 1.0)", [4, 32, 60, 255], +"hsl(240, 87.5%, 12.5%, 1.0)", [4, 4, 60, 255], +"hsl(270, 87.5%, 12.5%, 1.0)", [32, 4, 60, 255], +"hsl(300, 87.5%, 12.5%, 1.0)", [60, 4, 60, 255], +"hsl(330, 87.5%, 12.5%, 1.0)", [60, 4, 32, 255], +"hsl(0, 100%, 12.5%, 1.0)", [64, 0, 0, 255], +"hsl(30, 100%, 12.5%, 1.0)", [64, 32, 0, 255], +"hsl(60, 100%, 12.5%, 1.0)", [64, 64, 0, 255], +"hsl(90, 100%, 12.5%, 1.0)", [32, 64, 0, 255], +"hsl(120, 100%, 12.5%, 1.0)", [0, 64, 0, 255], +"hsl(150, 100%, 12.5%, 1.0)", [0, 64, 32, 255], +"hsl(180, 100%, 12.5%, 1.0)", [0, 64, 64, 255], +"hsl(210, 100%, 12.5%, 1.0)", [0, 32, 64, 255], +"hsl(240, 100%, 12.5%, 1.0)", [0, 0, 64, 255], +"hsl(270, 100%, 12.5%, 1.0)", [32, 0, 64, 255], +"hsl(300, 100%, 12.5%, 1.0)", [64, 0, 64, 255], +"hsl(330, 100%, 12.5%, 1.0)", [64, 0, 32, 255], +"hsl(0, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(30, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(60, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(90, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(120, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(150, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(180, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(210, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(240, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(270, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(300, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(330, 0%, 25%, 1.0)", [64, 64, 64, 255], +"hsl(0, 12.5%, 25%, 1.0)", [72, 56, 56, 255], +"hsl(30, 12.5%, 25%, 1.0)", [72, 64, 56, 255], +"hsl(60, 12.5%, 25%, 1.0)", [72, 72, 56, 255], +"hsl(90, 12.5%, 25%, 1.0)", [64, 72, 56, 255], +"hsl(120, 12.5%, 25%, 1.0)", [56, 72, 56, 255], +"hsl(150, 12.5%, 25%, 1.0)", [56, 72, 64, 255], +"hsl(180, 12.5%, 25%, 1.0)", [56, 72, 72, 255], +"hsl(210, 12.5%, 25%, 1.0)", [56, 64, 72, 255], +"hsl(240, 12.5%, 25%, 1.0)", [56, 56, 72, 255], +"hsl(270, 12.5%, 25%, 1.0)", [64, 56, 72, 255], +"hsl(300, 12.5%, 25%, 1.0)", [72, 56, 72, 255], +"hsl(330, 12.5%, 25%, 1.0)", [72, 56, 64, 255], +"hsl(0, 25%, 25%, 1.0)", [80, 48, 48, 255], +"hsl(30, 25%, 25%, 1.0)", [80, 64, 48, 255], +"hsl(60, 25%, 25%, 1.0)", [80, 80, 48, 255], +"hsl(90, 25%, 25%, 1.0)", [64, 80, 48, 255], +"hsl(120, 25%, 25%, 1.0)", [48, 80, 48, 255], +"hsl(150, 25%, 25%, 1.0)", [48, 80, 64, 255], +"hsl(180, 25%, 25%, 1.0)", [48, 80, 80, 255], +"hsl(210, 25%, 25%, 1.0)", [48, 64, 80, 255], +"hsl(240, 25%, 25%, 1.0)", [48, 48, 80, 255], +"hsl(270, 25%, 25%, 1.0)", [64, 48, 80, 255], +"hsl(300, 25%, 25%, 1.0)", [80, 48, 80, 255], +"hsl(330, 25%, 25%, 1.0)", [80, 48, 64, 255], +"hsl(0, 37.5%, 25%, 1.0)", [88, 40, 40, 255], +"hsl(30, 37.5%, 25%, 1.0)", [88, 64, 40, 255], +"hsl(60, 37.5%, 25%, 1.0)", [88, 88, 40, 255], +"hsl(90, 37.5%, 25%, 1.0)", [64, 88, 40, 255], +"hsl(120, 37.5%, 25%, 1.0)", [40, 88, 40, 255], +"hsl(150, 37.5%, 25%, 1.0)", [40, 88, 64, 255], +"hsl(180, 37.5%, 25%, 1.0)", [40, 88, 88, 255], +"hsl(210, 37.5%, 25%, 1.0)", [40, 64, 88, 255], +"hsl(240, 37.5%, 25%, 1.0)", [40, 40, 88, 255], +"hsl(270, 37.5%, 25%, 1.0)", [64, 40, 88, 255], +"hsl(300, 37.5%, 25%, 1.0)", [88, 40, 88, 255], +"hsl(330, 37.5%, 25%, 1.0)", [88, 40, 64, 255], +"hsl(0, 50%, 25%, 1.0)", [96, 32, 32, 255], +"hsl(30, 50%, 25%, 1.0)", [96, 64, 32, 255], +"hsl(60, 50%, 25%, 1.0)", [96, 96, 32, 255], +"hsl(90, 50%, 25%, 1.0)", [64, 96, 32, 255], +"hsl(120, 50%, 25%, 1.0)", [32, 96, 32, 255], +"hsl(150, 50%, 25%, 1.0)", [32, 96, 64, 255], +"hsl(180, 50%, 25%, 1.0)", [32, 96, 96, 255], +"hsl(210, 50%, 25%, 1.0)", [32, 64, 96, 255], +"hsl(240, 50%, 25%, 1.0)", [32, 32, 96, 255], +"hsl(270, 50%, 25%, 1.0)", [64, 32, 96, 255], +"hsl(300, 50%, 25%, 1.0)", [96, 32, 96, 255], +"hsl(330, 50%, 25%, 1.0)", [96, 32, 64, 255], +"hsl(0, 62.5%, 25%, 1.0)", [104, 24, 24, 255], +"hsl(30, 62.5%, 25%, 1.0)", [104, 64, 24, 255], +"hsl(60, 62.5%, 25%, 1.0)", [104, 104, 24, 255], +"hsl(90, 62.5%, 25%, 1.0)", [64, 104, 24, 255], +"hsl(120, 62.5%, 25%, 1.0)", [24, 104, 24, 255], +"hsl(150, 62.5%, 25%, 1.0)", [24, 104, 64, 255], +"hsl(180, 62.5%, 25%, 1.0)", [24, 104, 104, 255], +"hsl(210, 62.5%, 25%, 1.0)", [24, 64, 104, 255], +"hsl(240, 62.5%, 25%, 1.0)", [24, 24, 104, 255], +"hsl(270, 62.5%, 25%, 1.0)", [64, 24, 104, 255], +"hsl(300, 62.5%, 25%, 1.0)", [104, 24, 104, 255], +"hsl(330, 62.5%, 25%, 1.0)", [104, 24, 64, 255], +"hsl(0, 75%, 25%, 1.0)", [112, 16, 16, 255], +"hsl(30, 75%, 25%, 1.0)", [112, 64, 16, 255], +"hsl(60, 75%, 25%, 1.0)", [112, 112, 16, 255], +"hsl(90, 75%, 25%, 1.0)", [64, 112, 16, 255], +"hsl(120, 75%, 25%, 1.0)", [16, 112, 16, 255], +"hsl(150, 75%, 25%, 1.0)", [16, 112, 64, 255], +"hsl(180, 75%, 25%, 1.0)", [16, 112, 112, 255], +"hsl(210, 75%, 25%, 1.0)", [16, 64, 112, 255], +"hsl(240, 75%, 25%, 1.0)", [16, 16, 112, 255], +"hsl(270, 75%, 25%, 1.0)", [64, 16, 112, 255], +"hsl(300, 75%, 25%, 1.0)", [112, 16, 112, 255], +"hsl(330, 75%, 25%, 1.0)", [112, 16, 64, 255], +"hsl(0, 87.5%, 25%, 1.0)", [120, 8, 8, 255], +"hsl(30, 87.5%, 25%, 1.0)", [120, 64, 8, 255], +"hsl(60, 87.5%, 25%, 1.0)", [120, 120, 8, 255], +"hsl(90, 87.5%, 25%, 1.0)", [64, 120, 8, 255], +"hsl(120, 87.5%, 25%, 1.0)", [8, 120, 8, 255], +"hsl(150, 87.5%, 25%, 1.0)", [8, 120, 64, 255], +"hsl(180, 87.5%, 25%, 1.0)", [8, 120, 120, 255], +"hsl(210, 87.5%, 25%, 1.0)", [8, 64, 120, 255], +"hsl(240, 87.5%, 25%, 1.0)", [8, 8, 120, 255], +"hsl(270, 87.5%, 25%, 1.0)", [64, 8, 120, 255], +"hsl(300, 87.5%, 25%, 1.0)", [120, 8, 120, 255], +"hsl(330, 87.5%, 25%, 1.0)", [120, 8, 64, 255], +"hsl(0, 100%, 25%, 1.0)", [128, 0, 0, 255], +"hsl(30, 100%, 25%, 1.0)", [128, 64, 0, 255], +"hsl(60, 100%, 25%, 1.0)", [128, 128, 0, 255], +"hsl(90, 100%, 25%, 1.0)", [64, 128, 0, 255], +"hsl(120, 100%, 25%, 1.0)", [0, 128, 0, 255], +"hsl(150, 100%, 25%, 1.0)", [0, 128, 64, 255], +"hsl(180, 100%, 25%, 1.0)", [0, 128, 128, 255], +"hsl(210, 100%, 25%, 1.0)", [0, 64, 128, 255], +"hsl(240, 100%, 25%, 1.0)", [0, 0, 128, 255], +"hsl(270, 100%, 25%, 1.0)", [64, 0, 128, 255], +"hsl(300, 100%, 25%, 1.0)", [128, 0, 128, 255], +"hsl(330, 100%, 25%, 1.0)", [128, 0, 64, 255], +"hsl(0, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(30, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(60, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(90, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(120, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(150, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(180, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(210, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(240, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(270, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(300, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(330, 0%, 37.5%, 1.0)", [96, 96, 96, 255], +"hsl(0, 12.5%, 37.5%, 1.0)", [108, 84, 84, 255], +"hsl(30, 12.5%, 37.5%, 1.0)", [108, 96, 84, 255], +"hsl(60, 12.5%, 37.5%, 1.0)", [108, 108, 84, 255], +"hsl(90, 12.5%, 37.5%, 1.0)", [96, 108, 84, 255], +"hsl(120, 12.5%, 37.5%, 1.0)", [84, 108, 84, 255], +"hsl(150, 12.5%, 37.5%, 1.0)", [84, 108, 96, 255], +"hsl(180, 12.5%, 37.5%, 1.0)", [84, 108, 108, 255], +"hsl(210, 12.5%, 37.5%, 1.0)", [84, 96, 108, 255], +"hsl(240, 12.5%, 37.5%, 1.0)", [84, 84, 108, 255], +"hsl(270, 12.5%, 37.5%, 1.0)", [96, 84, 108, 255], +"hsl(300, 12.5%, 37.5%, 1.0)", [108, 84, 108, 255], +"hsl(330, 12.5%, 37.5%, 1.0)", [108, 84, 96, 255], +"hsl(0, 25%, 37.5%, 1.0)", [120, 72, 72, 255], +"hsl(30, 25%, 37.5%, 1.0)", [120, 96, 72, 255], +"hsl(60, 25%, 37.5%, 1.0)", [120, 120, 72, 255], +"hsl(90, 25%, 37.5%, 1.0)", [96, 120, 72, 255], +"hsl(120, 25%, 37.5%, 1.0)", [72, 120, 72, 255], +"hsl(150, 25%, 37.5%, 1.0)", [72, 120, 96, 255], +"hsl(180, 25%, 37.5%, 1.0)", [72, 120, 120, 255], +"hsl(210, 25%, 37.5%, 1.0)", [72, 96, 120, 255], +"hsl(240, 25%, 37.5%, 1.0)", [72, 72, 120, 255], +"hsl(270, 25%, 37.5%, 1.0)", [96, 72, 120, 255], +"hsl(300, 25%, 37.5%, 1.0)", [120, 72, 120, 255], +"hsl(330, 25%, 37.5%, 1.0)", [120, 72, 96, 255], +"hsl(0, 37.5%, 37.5%, 1.0)", [132, 60, 60, 255], +"hsl(30, 37.5%, 37.5%, 1.0)", [132, 96, 60, 255], +"hsl(60, 37.5%, 37.5%, 1.0)", [132, 132, 60, 255], +"hsl(90, 37.5%, 37.5%, 1.0)", [96, 132, 60, 255], +"hsl(120, 37.5%, 37.5%, 1.0)", [60, 132, 60, 255], +"hsl(150, 37.5%, 37.5%, 1.0)", [60, 132, 96, 255], +"hsl(180, 37.5%, 37.5%, 1.0)", [60, 132, 132, 255], +"hsl(210, 37.5%, 37.5%, 1.0)", [60, 96, 132, 255], +"hsl(240, 37.5%, 37.5%, 1.0)", [60, 60, 132, 255], +"hsl(270, 37.5%, 37.5%, 1.0)", [96, 60, 132, 255], +"hsl(300, 37.5%, 37.5%, 1.0)", [132, 60, 132, 255], +"hsl(330, 37.5%, 37.5%, 1.0)", [132, 60, 96, 255], +"hsl(0, 50%, 37.5%, 1.0)", [144, 48, 48, 255], +"hsl(30, 50%, 37.5%, 1.0)", [144, 96, 48, 255], +"hsl(60, 50%, 37.5%, 1.0)", [144, 144, 48, 255], +"hsl(90, 50%, 37.5%, 1.0)", [96, 144, 48, 255], +"hsl(120, 50%, 37.5%, 1.0)", [48, 144, 48, 255], +"hsl(150, 50%, 37.5%, 1.0)", [48, 144, 96, 255], +"hsl(180, 50%, 37.5%, 1.0)", [48, 144, 144, 255], +"hsl(210, 50%, 37.5%, 1.0)", [48, 96, 144, 255], +"hsl(240, 50%, 37.5%, 1.0)", [48, 48, 144, 255], +"hsl(270, 50%, 37.5%, 1.0)", [96, 48, 144, 255], +"hsl(300, 50%, 37.5%, 1.0)", [144, 48, 144, 255], +"hsl(330, 50%, 37.5%, 1.0)", [144, 48, 96, 255], +"hsl(0, 62.5%, 37.5%, 1.0)", [156, 36, 36, 255], +"hsl(30, 62.5%, 37.5%, 1.0)", [156, 96, 36, 255], +"hsl(60, 62.5%, 37.5%, 1.0)", [156, 156, 36, 255], +"hsl(90, 62.5%, 37.5%, 1.0)", [96, 156, 36, 255], +"hsl(120, 62.5%, 37.5%, 1.0)", [36, 156, 36, 255], +"hsl(150, 62.5%, 37.5%, 1.0)", [36, 156, 96, 255], +"hsl(180, 62.5%, 37.5%, 1.0)", [36, 156, 156, 255], +"hsl(210, 62.5%, 37.5%, 1.0)", [36, 96, 156, 255], +"hsl(240, 62.5%, 37.5%, 1.0)", [36, 36, 156, 255], +"hsl(270, 62.5%, 37.5%, 1.0)", [96, 36, 156, 255], +"hsl(300, 62.5%, 37.5%, 1.0)", [156, 36, 156, 255], +"hsl(330, 62.5%, 37.5%, 1.0)", [156, 36, 96, 255], +"hsl(0, 75%, 37.5%, 1.0)", [168, 24, 24, 255], +"hsl(30, 75%, 37.5%, 1.0)", [168, 96, 24, 255], +"hsl(60, 75%, 37.5%, 1.0)", [168, 168, 24, 255], +"hsl(90, 75%, 37.5%, 1.0)", [96, 168, 24, 255], +"hsl(120, 75%, 37.5%, 1.0)", [24, 168, 24, 255], +"hsl(150, 75%, 37.5%, 1.0)", [24, 168, 96, 255], +"hsl(180, 75%, 37.5%, 1.0)", [24, 168, 168, 255], +"hsl(210, 75%, 37.5%, 1.0)", [24, 96, 168, 255], +"hsl(240, 75%, 37.5%, 1.0)", [24, 24, 168, 255], +"hsl(270, 75%, 37.5%, 1.0)", [96, 24, 168, 255], +"hsl(300, 75%, 37.5%, 1.0)", [168, 24, 168, 255], +"hsl(330, 75%, 37.5%, 1.0)", [168, 24, 96, 255], +"hsl(0, 87.5%, 37.5%, 1.0)", [180, 12, 12, 255], +"hsl(30, 87.5%, 37.5%, 1.0)", [180, 96, 12, 255], +"hsl(60, 87.5%, 37.5%, 1.0)", [180, 180, 12, 255], +"hsl(90, 87.5%, 37.5%, 1.0)", [96, 180, 12, 255], +"hsl(120, 87.5%, 37.5%, 1.0)", [12, 180, 12, 255], +"hsl(150, 87.5%, 37.5%, 1.0)", [12, 180, 96, 255], +"hsl(180, 87.5%, 37.5%, 1.0)", [12, 180, 180, 255], +"hsl(210, 87.5%, 37.5%, 1.0)", [12, 96, 180, 255], +"hsl(240, 87.5%, 37.5%, 1.0)", [12, 12, 180, 255], +"hsl(270, 87.5%, 37.5%, 1.0)", [96, 12, 180, 255], +"hsl(300, 87.5%, 37.5%, 1.0)", [180, 12, 180, 255], +"hsl(330, 87.5%, 37.5%, 1.0)", [180, 12, 96, 255], +"hsl(0, 100%, 37.5%, 1.0)", [192, 0, 0, 255], +"hsl(30, 100%, 37.5%, 1.0)", [192, 96, 0, 255], +"hsl(60, 100%, 37.5%, 1.0)", [192, 192, 0, 255], +"hsl(90, 100%, 37.5%, 1.0)", [96, 192, 0, 255], +"hsl(120, 100%, 37.5%, 1.0)", [0, 192, 0, 255], +"hsl(150, 100%, 37.5%, 1.0)", [0, 192, 96, 255], +"hsl(180, 100%, 37.5%, 1.0)", [0, 192, 192, 255], +"hsl(210, 100%, 37.5%, 1.0)", [0, 96, 192, 255], +"hsl(240, 100%, 37.5%, 1.0)", [0, 0, 192, 255], +"hsl(270, 100%, 37.5%, 1.0)", [96, 0, 192, 255], +"hsl(300, 100%, 37.5%, 1.0)", [192, 0, 192, 255], +"hsl(330, 100%, 37.5%, 1.0)", [192, 0, 96, 255], +"hsl(0, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(30, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(60, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(90, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(120, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(150, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(180, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(210, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(240, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(270, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(300, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(330, 0%, 50%, 1.0)", [128, 128, 128, 255], +"hsl(0, 12.5%, 50%, 1.0)", [144, 112, 112, 255], +"hsl(30, 12.5%, 50%, 1.0)", [144, 128, 112, 255], +"hsl(60, 12.5%, 50%, 1.0)", [144, 144, 112, 255], +"hsl(90, 12.5%, 50%, 1.0)", [128, 144, 112, 255], +"hsl(120, 12.5%, 50%, 1.0)", [112, 144, 112, 255], +"hsl(150, 12.5%, 50%, 1.0)", [112, 144, 128, 255], +"hsl(180, 12.5%, 50%, 1.0)", [112, 144, 144, 255], +"hsl(210, 12.5%, 50%, 1.0)", [112, 128, 144, 255], +"hsl(240, 12.5%, 50%, 1.0)", [112, 112, 144, 255], +"hsl(270, 12.5%, 50%, 1.0)", [128, 112, 144, 255], +"hsl(300, 12.5%, 50%, 1.0)", [144, 112, 144, 255], +"hsl(330, 12.5%, 50%, 1.0)", [144, 112, 128, 255], +"hsl(0, 25%, 50%, 1.0)", [160, 96, 96, 255], +"hsl(30, 25%, 50%, 1.0)", [160, 128, 96, 255], +"hsl(60, 25%, 50%, 1.0)", [160, 160, 96, 255], +"hsl(90, 25%, 50%, 1.0)", [128, 160, 96, 255], +"hsl(120, 25%, 50%, 1.0)", [96, 160, 96, 255], +"hsl(150, 25%, 50%, 1.0)", [96, 160, 128, 255], +"hsl(180, 25%, 50%, 1.0)", [96, 160, 160, 255], +"hsl(210, 25%, 50%, 1.0)", [96, 128, 160, 255], +"hsl(240, 25%, 50%, 1.0)", [96, 96, 160, 255], +"hsl(270, 25%, 50%, 1.0)", [128, 96, 160, 255], +"hsl(300, 25%, 50%, 1.0)", [160, 96, 160, 255], +"hsl(330, 25%, 50%, 1.0)", [160, 96, 128, 255], +"hsl(0, 37.5%, 50%, 1.0)", [176, 80, 80, 255], +"hsl(30, 37.5%, 50%, 1.0)", [176, 128, 80, 255], +"hsl(60, 37.5%, 50%, 1.0)", [176, 176, 80, 255], +"hsl(90, 37.5%, 50%, 1.0)", [128, 176, 80, 255], +"hsl(120, 37.5%, 50%, 1.0)", [80, 176, 80, 255], +"hsl(150, 37.5%, 50%, 1.0)", [80, 176, 128, 255], +"hsl(180, 37.5%, 50%, 1.0)", [80, 176, 176, 255], +"hsl(210, 37.5%, 50%, 1.0)", [80, 128, 176, 255], +"hsl(240, 37.5%, 50%, 1.0)", [80, 80, 176, 255], +"hsl(270, 37.5%, 50%, 1.0)", [128, 80, 176, 255], +"hsl(300, 37.5%, 50%, 1.0)", [176, 80, 176, 255], +"hsl(330, 37.5%, 50%, 1.0)", [176, 80, 128, 255], +"hsl(0, 50%, 50%, 1.0)", [192, 64, 64, 255], +"hsl(30, 50%, 50%, 1.0)", [192, 128, 64, 255], +"hsl(60, 50%, 50%, 1.0)", [192, 192, 64, 255], +"hsl(90, 50%, 50%, 1.0)", [128, 192, 64, 255], +"hsl(120, 50%, 50%, 1.0)", [64, 192, 64, 255], +"hsl(150, 50%, 50%, 1.0)", [64, 192, 128, 255], +"hsl(180, 50%, 50%, 1.0)", [64, 192, 192, 255], +"hsl(210, 50%, 50%, 1.0)", [64, 128, 192, 255], +"hsl(240, 50%, 50%, 1.0)", [64, 64, 192, 255], +"hsl(270, 50%, 50%, 1.0)", [128, 64, 192, 255], +"hsl(300, 50%, 50%, 1.0)", [192, 64, 192, 255], +"hsl(330, 50%, 50%, 1.0)", [192, 64, 128, 255], +"hsl(0, 62.5%, 50%, 1.0)", [208, 48, 48, 255], +"hsl(30, 62.5%, 50%, 1.0)", [208, 128, 48, 255], +"hsl(60, 62.5%, 50%, 1.0)", [208, 208, 48, 255], +"hsl(90, 62.5%, 50%, 1.0)", [128, 208, 48, 255], +"hsl(120, 62.5%, 50%, 1.0)", [48, 208, 48, 255], +"hsl(150, 62.5%, 50%, 1.0)", [48, 208, 128, 255], +"hsl(180, 62.5%, 50%, 1.0)", [48, 208, 208, 255], +"hsl(210, 62.5%, 50%, 1.0)", [48, 128, 208, 255], +"hsl(240, 62.5%, 50%, 1.0)", [48, 48, 208, 255], +"hsl(270, 62.5%, 50%, 1.0)", [128, 48, 208, 255], +"hsl(300, 62.5%, 50%, 1.0)", [208, 48, 208, 255], +"hsl(330, 62.5%, 50%, 1.0)", [208, 48, 128, 255], +"hsl(0, 75%, 50%, 1.0)", [224, 32, 32, 255], +"hsl(30, 75%, 50%, 1.0)", [224, 128, 32, 255], +"hsl(60, 75%, 50%, 1.0)", [224, 224, 32, 255], +"hsl(90, 75%, 50%, 1.0)", [128, 224, 32, 255], +"hsl(120, 75%, 50%, 1.0)", [32, 224, 32, 255], +"hsl(150, 75%, 50%, 1.0)", [32, 224, 128, 255], +"hsl(180, 75%, 50%, 1.0)", [32, 224, 224, 255], +"hsl(210, 75%, 50%, 1.0)", [32, 128, 224, 255], +"hsl(240, 75%, 50%, 1.0)", [32, 32, 224, 255], +"hsl(270, 75%, 50%, 1.0)", [128, 32, 224, 255], +"hsl(300, 75%, 50%, 1.0)", [224, 32, 224, 255], +"hsl(330, 75%, 50%, 1.0)", [224, 32, 128, 255], +"hsl(0, 87.5%, 50%, 1.0)", [240, 16, 16, 255], +"hsl(30, 87.5%, 50%, 1.0)", [240, 128, 16, 255], +"hsl(60, 87.5%, 50%, 1.0)", [240, 240, 16, 255], +"hsl(90, 87.5%, 50%, 1.0)", [128, 240, 16, 255], +"hsl(120, 87.5%, 50%, 1.0)", [16, 240, 16, 255], +"hsl(150, 87.5%, 50%, 1.0)", [16, 240, 128, 255], +"hsl(180, 87.5%, 50%, 1.0)", [16, 240, 240, 255], +"hsl(210, 87.5%, 50%, 1.0)", [16, 128, 240, 255], +"hsl(240, 87.5%, 50%, 1.0)", [16, 16, 240, 255], +"hsl(270, 87.5%, 50%, 1.0)", [128, 16, 240, 255], +"hsl(300, 87.5%, 50%, 1.0)", [240, 16, 240, 255], +"hsl(330, 87.5%, 50%, 1.0)", [240, 16, 128, 255], +"hsl(0, 100%, 50%, 1.0)", [255, 0, 0, 255], +"hsl(30, 100%, 50%, 1.0)", [255, 128, 0, 255], +"hsl(60, 100%, 50%, 1.0)", [255, 255, 0, 255], +"hsl(90, 100%, 50%, 1.0)", [128, 255, 0, 255], +"hsl(120, 100%, 50%, 1.0)", [0, 255, 0, 255], +"hsl(150, 100%, 50%, 1.0)", [0, 255, 128, 255], +"hsl(180, 100%, 50%, 1.0)", [0, 255, 255, 255], +"hsl(210, 100%, 50%, 1.0)", [0, 128, 255, 255], +"hsl(240, 100%, 50%, 1.0)", [0, 0, 255, 255], +"hsl(270, 100%, 50%, 1.0)", [128, 0, 255, 255], +"hsl(300, 100%, 50%, 1.0)", [255, 0, 255, 255], +"hsl(330, 100%, 50%, 1.0)", [255, 0, 128, 255], +"hsl(0, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(30, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(60, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(90, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(120, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(150, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(180, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(210, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(240, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(270, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(300, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(330, 0%, 62.5%, 1.0)", [160, 160, 160, 255], +"hsl(0, 12.5%, 62.5%, 1.0)", [172, 148, 148, 255], +"hsl(30, 12.5%, 62.5%, 1.0)", [172, 160, 148, 255], +"hsl(60, 12.5%, 62.5%, 1.0)", [172, 172, 148, 255], +"hsl(90, 12.5%, 62.5%, 1.0)", [160, 172, 148, 255], +"hsl(120, 12.5%, 62.5%, 1.0)", [148, 172, 148, 255], +"hsl(150, 12.5%, 62.5%, 1.0)", [148, 172, 160, 255], +"hsl(180, 12.5%, 62.5%, 1.0)", [148, 172, 172, 255], +"hsl(210, 12.5%, 62.5%, 1.0)", [148, 160, 172, 255], +"hsl(240, 12.5%, 62.5%, 1.0)", [148, 148, 172, 255], +"hsl(270, 12.5%, 62.5%, 1.0)", [160, 148, 172, 255], +"hsl(300, 12.5%, 62.5%, 1.0)", [172, 148, 172, 255], +"hsl(330, 12.5%, 62.5%, 1.0)", [172, 148, 160, 255], +"hsl(0, 25%, 62.5%, 1.0)", [184, 136, 136, 255], +"hsl(30, 25%, 62.5%, 1.0)", [184, 160, 136, 255], +"hsl(60, 25%, 62.5%, 1.0)", [184, 184, 136, 255], +"hsl(90, 25%, 62.5%, 1.0)", [160, 184, 136, 255], +"hsl(120, 25%, 62.5%, 1.0)", [136, 184, 136, 255], +"hsl(150, 25%, 62.5%, 1.0)", [136, 184, 160, 255], +"hsl(180, 25%, 62.5%, 1.0)", [136, 184, 184, 255], +"hsl(210, 25%, 62.5%, 1.0)", [136, 160, 184, 255], +"hsl(240, 25%, 62.5%, 1.0)", [136, 136, 184, 255], +"hsl(270, 25%, 62.5%, 1.0)", [160, 136, 184, 255], +"hsl(300, 25%, 62.5%, 1.0)", [184, 136, 184, 255], +"hsl(330, 25%, 62.5%, 1.0)", [184, 136, 160, 255], +"hsl(0, 37.5%, 62.5%, 1.0)", [196, 124, 124, 255], +"hsl(30, 37.5%, 62.5%, 1.0)", [196, 160, 124, 255], +"hsl(60, 37.5%, 62.5%, 1.0)", [196, 196, 124, 255], +"hsl(90, 37.5%, 62.5%, 1.0)", [160, 196, 124, 255], +"hsl(120, 37.5%, 62.5%, 1.0)", [124, 196, 124, 255], +"hsl(150, 37.5%, 62.5%, 1.0)", [124, 196, 160, 255], +"hsl(180, 37.5%, 62.5%, 1.0)", [124, 196, 196, 255], +"hsl(210, 37.5%, 62.5%, 1.0)", [124, 160, 196, 255], +"hsl(240, 37.5%, 62.5%, 1.0)", [124, 124, 196, 255], +"hsl(270, 37.5%, 62.5%, 1.0)", [160, 124, 196, 255], +"hsl(300, 37.5%, 62.5%, 1.0)", [196, 124, 196, 255], +"hsl(330, 37.5%, 62.5%, 1.0)", [196, 124, 160, 255], +"hsl(0, 50%, 62.5%, 1.0)", [208, 112, 112, 255], +"hsl(30, 50%, 62.5%, 1.0)", [208, 160, 112, 255], +"hsl(60, 50%, 62.5%, 1.0)", [208, 208, 112, 255], +"hsl(90, 50%, 62.5%, 1.0)", [160, 208, 112, 255], +"hsl(120, 50%, 62.5%, 1.0)", [112, 208, 112, 255], +"hsl(150, 50%, 62.5%, 1.0)", [112, 208, 160, 255], +"hsl(180, 50%, 62.5%, 1.0)", [112, 208, 208, 255], +"hsl(210, 50%, 62.5%, 1.0)", [112, 160, 208, 255], +"hsl(240, 50%, 62.5%, 1.0)", [112, 112, 208, 255], +"hsl(270, 50%, 62.5%, 1.0)", [160, 112, 208, 255], +"hsl(300, 50%, 62.5%, 1.0)", [208, 112, 208, 255], +"hsl(330, 50%, 62.5%, 1.0)", [208, 112, 160, 255], +"hsl(0, 62.5%, 62.5%, 1.0)", [220, 100, 100, 255], +"hsl(30, 62.5%, 62.5%, 1.0)", [220, 160, 100, 255], +"hsl(60, 62.5%, 62.5%, 1.0)", [220, 220, 100, 255], +"hsl(90, 62.5%, 62.5%, 1.0)", [160, 220, 100, 255], +"hsl(120, 62.5%, 62.5%, 1.0)", [100, 220, 100, 255], +"hsl(150, 62.5%, 62.5%, 1.0)", [100, 220, 160, 255], +"hsl(180, 62.5%, 62.5%, 1.0)", [100, 220, 220, 255], +"hsl(210, 62.5%, 62.5%, 1.0)", [100, 160, 220, 255], +"hsl(240, 62.5%, 62.5%, 1.0)", [100, 100, 220, 255], +"hsl(270, 62.5%, 62.5%, 1.0)", [160, 100, 220, 255], +"hsl(300, 62.5%, 62.5%, 1.0)", [220, 100, 220, 255], +"hsl(330, 62.5%, 62.5%, 1.0)", [220, 100, 160, 255], +"hsl(0, 75%, 62.5%, 1.0)", [232, 88, 88, 255], +"hsl(30, 75%, 62.5%, 1.0)", [232, 160, 88, 255], +"hsl(60, 75%, 62.5%, 1.0)", [232, 232, 88, 255], +"hsl(90, 75%, 62.5%, 1.0)", [160, 232, 88, 255], +"hsl(120, 75%, 62.5%, 1.0)", [88, 232, 88, 255], +"hsl(150, 75%, 62.5%, 1.0)", [88, 232, 160, 255], +"hsl(180, 75%, 62.5%, 1.0)", [88, 232, 232, 255], +"hsl(210, 75%, 62.5%, 1.0)", [88, 160, 232, 255], +"hsl(240, 75%, 62.5%, 1.0)", [88, 88, 232, 255], +"hsl(270, 75%, 62.5%, 1.0)", [160, 88, 232, 255], +"hsl(300, 75%, 62.5%, 1.0)", [232, 88, 232, 255], +"hsl(330, 75%, 62.5%, 1.0)", [232, 88, 160, 255], +"hsl(0, 87.5%, 62.5%, 1.0)", [244, 76, 76, 255], +"hsl(30, 87.5%, 62.5%, 1.0)", [244, 160, 76, 255], +"hsl(60, 87.5%, 62.5%, 1.0)", [244, 244, 76, 255], +"hsl(90, 87.5%, 62.5%, 1.0)", [160, 244, 76, 255], +"hsl(120, 87.5%, 62.5%, 1.0)", [76, 244, 76, 255], +"hsl(150, 87.5%, 62.5%, 1.0)", [76, 244, 160, 255], +"hsl(180, 87.5%, 62.5%, 1.0)", [76, 244, 244, 255], +"hsl(210, 87.5%, 62.5%, 1.0)", [76, 160, 244, 255], +"hsl(240, 87.5%, 62.5%, 1.0)", [76, 76, 244, 255], +"hsl(270, 87.5%, 62.5%, 1.0)", [160, 76, 244, 255], +"hsl(300, 87.5%, 62.5%, 1.0)", [244, 76, 244, 255], +"hsl(330, 87.5%, 62.5%, 1.0)", [244, 76, 160, 255], +"hsl(0, 100%, 62.5%, 1.0)", [255, 64, 64, 255], +"hsl(30, 100%, 62.5%, 1.0)", [255, 160, 64, 255], +"hsl(60, 100%, 62.5%, 1.0)", [255, 255, 64, 255], +"hsl(90, 100%, 62.5%, 1.0)", [160, 255, 64, 255], +"hsl(120, 100%, 62.5%, 1.0)", [64, 255, 64, 255], +"hsl(150, 100%, 62.5%, 1.0)", [64, 255, 160, 255], +"hsl(180, 100%, 62.5%, 1.0)", [64, 255, 255, 255], +"hsl(210, 100%, 62.5%, 1.0)", [64, 160, 255, 255], +"hsl(240, 100%, 62.5%, 1.0)", [64, 64, 255, 255], +"hsl(270, 100%, 62.5%, 1.0)", [160, 64, 255, 255], +"hsl(300, 100%, 62.5%, 1.0)", [255, 64, 255, 255], +"hsl(330, 100%, 62.5%, 1.0)", [255, 64, 160, 255], +"hsl(0, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(30, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(60, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(90, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(120, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(150, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(180, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(210, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(240, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(270, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(300, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(330, 0%, 75%, 1.0)", [192, 192, 192, 255], +"hsl(0, 12.5%, 75%, 1.0)", [200, 184, 184, 255], +"hsl(30, 12.5%, 75%, 1.0)", [200, 192, 184, 255], +"hsl(60, 12.5%, 75%, 1.0)", [200, 200, 184, 255], +"hsl(90, 12.5%, 75%, 1.0)", [192, 200, 184, 255], +"hsl(120, 12.5%, 75%, 1.0)", [184, 200, 184, 255], +"hsl(150, 12.5%, 75%, 1.0)", [184, 200, 192, 255], +"hsl(180, 12.5%, 75%, 1.0)", [184, 200, 200, 255], +"hsl(210, 12.5%, 75%, 1.0)", [184, 192, 200, 255], +"hsl(240, 12.5%, 75%, 1.0)", [184, 184, 200, 255], +"hsl(270, 12.5%, 75%, 1.0)", [192, 184, 200, 255], +"hsl(300, 12.5%, 75%, 1.0)", [200, 184, 200, 255], +"hsl(330, 12.5%, 75%, 1.0)", [200, 184, 192, 255], +"hsl(0, 25%, 75%, 1.0)", [208, 176, 176, 255], +"hsl(30, 25%, 75%, 1.0)", [208, 192, 176, 255], +"hsl(60, 25%, 75%, 1.0)", [208, 208, 176, 255], +"hsl(90, 25%, 75%, 1.0)", [192, 208, 176, 255], +"hsl(120, 25%, 75%, 1.0)", [176, 208, 176, 255], +"hsl(150, 25%, 75%, 1.0)", [176, 208, 192, 255], +"hsl(180, 25%, 75%, 1.0)", [176, 208, 208, 255], +"hsl(210, 25%, 75%, 1.0)", [176, 192, 208, 255], +"hsl(240, 25%, 75%, 1.0)", [176, 176, 208, 255], +"hsl(270, 25%, 75%, 1.0)", [192, 176, 208, 255], +"hsl(300, 25%, 75%, 1.0)", [208, 176, 208, 255], +"hsl(330, 25%, 75%, 1.0)", [208, 176, 192, 255], +"hsl(0, 37.5%, 75%, 1.0)", [216, 168, 168, 255], +"hsl(30, 37.5%, 75%, 1.0)", [216, 192, 168, 255], +"hsl(60, 37.5%, 75%, 1.0)", [216, 216, 168, 255], +"hsl(90, 37.5%, 75%, 1.0)", [192, 216, 168, 255], +"hsl(120, 37.5%, 75%, 1.0)", [168, 216, 168, 255], +"hsl(150, 37.5%, 75%, 1.0)", [168, 216, 192, 255], +"hsl(180, 37.5%, 75%, 1.0)", [168, 216, 216, 255], +"hsl(210, 37.5%, 75%, 1.0)", [168, 192, 216, 255], +"hsl(240, 37.5%, 75%, 1.0)", [168, 168, 216, 255], +"hsl(270, 37.5%, 75%, 1.0)", [192, 168, 216, 255], +"hsl(300, 37.5%, 75%, 1.0)", [216, 168, 216, 255], +"hsl(330, 37.5%, 75%, 1.0)", [216, 168, 192, 255], +"hsl(0, 50%, 75%, 1.0)", [224, 160, 160, 255], +"hsl(30, 50%, 75%, 1.0)", [224, 192, 160, 255], +"hsl(60, 50%, 75%, 1.0)", [224, 224, 160, 255], +"hsl(90, 50%, 75%, 1.0)", [192, 224, 160, 255], +"hsl(120, 50%, 75%, 1.0)", [160, 224, 160, 255], +"hsl(150, 50%, 75%, 1.0)", [160, 224, 192, 255], +"hsl(180, 50%, 75%, 1.0)", [160, 224, 224, 255], +"hsl(210, 50%, 75%, 1.0)", [160, 192, 224, 255], +"hsl(240, 50%, 75%, 1.0)", [160, 160, 224, 255], +"hsl(270, 50%, 75%, 1.0)", [192, 160, 224, 255], +"hsl(300, 50%, 75%, 1.0)", [224, 160, 224, 255], +"hsl(330, 50%, 75%, 1.0)", [224, 160, 192, 255], +"hsl(0, 62.5%, 75%, 1.0)", [232, 152, 152, 255], +"hsl(30, 62.5%, 75%, 1.0)", [232, 192, 152, 255], +"hsl(60, 62.5%, 75%, 1.0)", [232, 232, 152, 255], +"hsl(90, 62.5%, 75%, 1.0)", [192, 232, 152, 255], +"hsl(120, 62.5%, 75%, 1.0)", [152, 232, 152, 255], +"hsl(150, 62.5%, 75%, 1.0)", [152, 232, 192, 255], +"hsl(180, 62.5%, 75%, 1.0)", [152, 232, 232, 255], +"hsl(210, 62.5%, 75%, 1.0)", [152, 192, 232, 255], +"hsl(240, 62.5%, 75%, 1.0)", [152, 152, 232, 255], +"hsl(270, 62.5%, 75%, 1.0)", [192, 152, 232, 255], +"hsl(300, 62.5%, 75%, 1.0)", [232, 152, 232, 255], +"hsl(330, 62.5%, 75%, 1.0)", [232, 152, 192, 255], +"hsl(0, 75%, 75%, 1.0)", [240, 144, 144, 255], +"hsl(30, 75%, 75%, 1.0)", [240, 192, 144, 255], +"hsl(60, 75%, 75%, 1.0)", [240, 240, 144, 255], +"hsl(90, 75%, 75%, 1.0)", [192, 240, 144, 255], +"hsl(120, 75%, 75%, 1.0)", [144, 240, 144, 255], +"hsl(150, 75%, 75%, 1.0)", [144, 240, 192, 255], +"hsl(180, 75%, 75%, 1.0)", [144, 240, 240, 255], +"hsl(210, 75%, 75%, 1.0)", [144, 192, 240, 255], +"hsl(240, 75%, 75%, 1.0)", [144, 144, 240, 255], +"hsl(270, 75%, 75%, 1.0)", [192, 144, 240, 255], +"hsl(300, 75%, 75%, 1.0)", [240, 144, 240, 255], +"hsl(330, 75%, 75%, 1.0)", [240, 144, 192, 255], +"hsl(0, 87.5%, 75%, 1.0)", [248, 136, 136, 255], +"hsl(30, 87.5%, 75%, 1.0)", [248, 192, 136, 255], +"hsl(60, 87.5%, 75%, 1.0)", [248, 248, 136, 255], +"hsl(90, 87.5%, 75%, 1.0)", [192, 248, 136, 255], +"hsl(120, 87.5%, 75%, 1.0)", [136, 248, 136, 255], +"hsl(150, 87.5%, 75%, 1.0)", [136, 248, 192, 255], +"hsl(180, 87.5%, 75%, 1.0)", [136, 248, 248, 255], +"hsl(210, 87.5%, 75%, 1.0)", [136, 192, 248, 255], +"hsl(240, 87.5%, 75%, 1.0)", [136, 136, 248, 255], +"hsl(270, 87.5%, 75%, 1.0)", [192, 136, 248, 255], +"hsl(300, 87.5%, 75%, 1.0)", [248, 136, 248, 255], +"hsl(330, 87.5%, 75%, 1.0)", [248, 136, 192, 255], +"hsl(0, 100%, 75%, 1.0)", [255, 128, 128, 255], +"hsl(30, 100%, 75%, 1.0)", [255, 192, 128, 255], +"hsl(60, 100%, 75%, 1.0)", [255, 255, 128, 255], +"hsl(90, 100%, 75%, 1.0)", [192, 255, 128, 255], +"hsl(120, 100%, 75%, 1.0)", [128, 255, 128, 255], +"hsl(150, 100%, 75%, 1.0)", [128, 255, 192, 255], +"hsl(180, 100%, 75%, 1.0)", [128, 255, 255, 255], +"hsl(210, 100%, 75%, 1.0)", [128, 192, 255, 255], +"hsl(240, 100%, 75%, 1.0)", [128, 128, 255, 255], +"hsl(270, 100%, 75%, 1.0)", [192, 128, 255, 255], +"hsl(300, 100%, 75%, 1.0)", [255, 128, 255, 255], +"hsl(330, 100%, 75%, 1.0)", [255, 128, 192, 255], +"hsl(0, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(30, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(60, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(90, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(120, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(150, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(180, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(210, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(240, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(270, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(300, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(330, 0%, 87.5%, 1.0)", [224, 224, 224, 255], +"hsl(0, 12.5%, 87.5%, 1.0)", [228, 220, 220, 255], +"hsl(30, 12.5%, 87.5%, 1.0)", [228, 224, 220, 255], +"hsl(60, 12.5%, 87.5%, 1.0)", [228, 228, 220, 255], +"hsl(90, 12.5%, 87.5%, 1.0)", [224, 228, 220, 255], +"hsl(120, 12.5%, 87.5%, 1.0)", [220, 228, 220, 255], +"hsl(150, 12.5%, 87.5%, 1.0)", [220, 228, 224, 255], +"hsl(180, 12.5%, 87.5%, 1.0)", [220, 228, 228, 255], +"hsl(210, 12.5%, 87.5%, 1.0)", [220, 224, 228, 255], +"hsl(240, 12.5%, 87.5%, 1.0)", [220, 220, 228, 255], +"hsl(270, 12.5%, 87.5%, 1.0)", [224, 220, 228, 255], +"hsl(300, 12.5%, 87.5%, 1.0)", [228, 220, 228, 255], +"hsl(330, 12.5%, 87.5%, 1.0)", [228, 220, 224, 255], +"hsl(0, 25%, 87.5%, 1.0)", [232, 216, 216, 255], +"hsl(30, 25%, 87.5%, 1.0)", [232, 224, 216, 255], +"hsl(60, 25%, 87.5%, 1.0)", [232, 232, 216, 255], +"hsl(90, 25%, 87.5%, 1.0)", [224, 232, 216, 255], +"hsl(120, 25%, 87.5%, 1.0)", [216, 232, 216, 255], +"hsl(150, 25%, 87.5%, 1.0)", [216, 232, 224, 255], +"hsl(180, 25%, 87.5%, 1.0)", [216, 232, 232, 255], +"hsl(210, 25%, 87.5%, 1.0)", [216, 224, 232, 255], +"hsl(240, 25%, 87.5%, 1.0)", [216, 216, 232, 255], +"hsl(270, 25%, 87.5%, 1.0)", [224, 216, 232, 255], +"hsl(300, 25%, 87.5%, 1.0)", [232, 216, 232, 255], +"hsl(330, 25%, 87.5%, 1.0)", [232, 216, 224, 255], +"hsl(0, 37.5%, 87.5%, 1.0)", [236, 212, 212, 255], +"hsl(30, 37.5%, 87.5%, 1.0)", [236, 224, 212, 255], +"hsl(60, 37.5%, 87.5%, 1.0)", [236, 236, 212, 255], +"hsl(90, 37.5%, 87.5%, 1.0)", [224, 236, 212, 255], +"hsl(120, 37.5%, 87.5%, 1.0)", [212, 236, 212, 255], +"hsl(150, 37.5%, 87.5%, 1.0)", [212, 236, 224, 255], +"hsl(180, 37.5%, 87.5%, 1.0)", [212, 236, 236, 255], +"hsl(210, 37.5%, 87.5%, 1.0)", [212, 224, 236, 255], +"hsl(240, 37.5%, 87.5%, 1.0)", [212, 212, 236, 255], +"hsl(270, 37.5%, 87.5%, 1.0)", [224, 212, 236, 255], +"hsl(300, 37.5%, 87.5%, 1.0)", [236, 212, 236, 255], +"hsl(330, 37.5%, 87.5%, 1.0)", [236, 212, 224, 255], +"hsl(0, 50%, 87.5%, 1.0)", [240, 208, 208, 255], +"hsl(30, 50%, 87.5%, 1.0)", [240, 224, 208, 255], +"hsl(60, 50%, 87.5%, 1.0)", [240, 240, 208, 255], +"hsl(90, 50%, 87.5%, 1.0)", [224, 240, 208, 255], +"hsl(120, 50%, 87.5%, 1.0)", [208, 240, 208, 255], +"hsl(150, 50%, 87.5%, 1.0)", [208, 240, 224, 255], +"hsl(180, 50%, 87.5%, 1.0)", [208, 240, 240, 255], +"hsl(210, 50%, 87.5%, 1.0)", [208, 224, 240, 255], +"hsl(240, 50%, 87.5%, 1.0)", [208, 208, 240, 255], +"hsl(270, 50%, 87.5%, 1.0)", [224, 208, 240, 255], +"hsl(300, 50%, 87.5%, 1.0)", [240, 208, 240, 255], +"hsl(330, 50%, 87.5%, 1.0)", [240, 208, 224, 255], +"hsl(0, 62.5%, 87.5%, 1.0)", [244, 204, 204, 255], +"hsl(30, 62.5%, 87.5%, 1.0)", [244, 224, 204, 255], +"hsl(60, 62.5%, 87.5%, 1.0)", [244, 244, 204, 255], +"hsl(90, 62.5%, 87.5%, 1.0)", [224, 244, 204, 255], +"hsl(120, 62.5%, 87.5%, 1.0)", [204, 244, 204, 255], +"hsl(150, 62.5%, 87.5%, 1.0)", [204, 244, 224, 255], +"hsl(180, 62.5%, 87.5%, 1.0)", [204, 244, 244, 255], +"hsl(210, 62.5%, 87.5%, 1.0)", [204, 224, 244, 255], +"hsl(240, 62.5%, 87.5%, 1.0)", [204, 204, 244, 255], +"hsl(270, 62.5%, 87.5%, 1.0)", [224, 204, 244, 255], +"hsl(300, 62.5%, 87.5%, 1.0)", [244, 204, 244, 255], +"hsl(330, 62.5%, 87.5%, 1.0)", [244, 204, 224, 255], +"hsl(0, 75%, 87.5%, 1.0)", [248, 200, 200, 255], +"hsl(30, 75%, 87.5%, 1.0)", [248, 224, 200, 255], +"hsl(60, 75%, 87.5%, 1.0)", [248, 248, 200, 255], +"hsl(90, 75%, 87.5%, 1.0)", [224, 248, 200, 255], +"hsl(120, 75%, 87.5%, 1.0)", [200, 248, 200, 255], +"hsl(150, 75%, 87.5%, 1.0)", [200, 248, 224, 255], +"hsl(180, 75%, 87.5%, 1.0)", [200, 248, 248, 255], +"hsl(210, 75%, 87.5%, 1.0)", [200, 224, 248, 255], +"hsl(240, 75%, 87.5%, 1.0)", [200, 200, 248, 255], +"hsl(270, 75%, 87.5%, 1.0)", [224, 200, 248, 255], +"hsl(300, 75%, 87.5%, 1.0)", [248, 200, 248, 255], +"hsl(330, 75%, 87.5%, 1.0)", [248, 200, 224, 255], +"hsl(0, 87.5%, 87.5%, 1.0)", [252, 196, 196, 255], +"hsl(30, 87.5%, 87.5%, 1.0)", [252, 224, 196, 255], +"hsl(60, 87.5%, 87.5%, 1.0)", [252, 252, 196, 255], +"hsl(90, 87.5%, 87.5%, 1.0)", [224, 252, 196, 255], +"hsl(120, 87.5%, 87.5%, 1.0)", [196, 252, 196, 255], +"hsl(150, 87.5%, 87.5%, 1.0)", [196, 252, 224, 255], +"hsl(180, 87.5%, 87.5%, 1.0)", [196, 252, 252, 255], +"hsl(210, 87.5%, 87.5%, 1.0)", [196, 224, 252, 255], +"hsl(240, 87.5%, 87.5%, 1.0)", [196, 196, 252, 255], +"hsl(270, 87.5%, 87.5%, 1.0)", [224, 196, 252, 255], +"hsl(300, 87.5%, 87.5%, 1.0)", [252, 196, 252, 255], +"hsl(330, 87.5%, 87.5%, 1.0)", [252, 196, 224, 255], +"hsl(0, 100%, 87.5%, 1.0)", [255, 192, 192, 255], +"hsl(30, 100%, 87.5%, 1.0)", [255, 224, 192, 255], +"hsl(60, 100%, 87.5%, 1.0)", [255, 255, 192, 255], +"hsl(90, 100%, 87.5%, 1.0)", [224, 255, 192, 255], +"hsl(120, 100%, 87.5%, 1.0)", [192, 255, 192, 255], +"hsl(150, 100%, 87.5%, 1.0)", [192, 255, 224, 255], +"hsl(180, 100%, 87.5%, 1.0)", [192, 255, 255, 255], +"hsl(210, 100%, 87.5%, 1.0)", [192, 224, 255, 255], +"hsl(240, 100%, 87.5%, 1.0)", [192, 192, 255, 255], +"hsl(270, 100%, 87.5%, 1.0)", [224, 192, 255, 255], +"hsl(300, 100%, 87.5%, 1.0)", [255, 192, 255, 255], +"hsl(330, 100%, 87.5%, 1.0)", [255, 192, 224, 255], +"hsl(0, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(30, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(60, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(90, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(120, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(150, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(180, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(210, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(240, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(270, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(300, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(330, 0%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(0, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(30, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(60, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(90, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(120, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(150, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(180, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(210, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(240, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(270, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(300, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(330, 12.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(0, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(30, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(60, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(90, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(120, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(150, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(180, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(210, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(240, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(270, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(300, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(330, 25%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(0, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(30, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(60, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(90, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(120, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(150, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(180, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(210, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(240, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(270, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(300, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(330, 37.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(0, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(30, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(60, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(90, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(120, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(150, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(180, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(210, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(240, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(270, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(300, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(330, 50%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(0, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(30, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(60, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(90, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(120, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(150, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(180, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(210, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(240, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(270, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(300, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(330, 62.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(0, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(30, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(60, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(90, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(120, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(150, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(180, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(210, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(240, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(270, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(300, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(330, 75%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(0, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(30, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(60, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(90, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(120, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(150, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(180, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(210, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(240, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(270, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(300, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(330, 87.5%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(0, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(30, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(60, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(90, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(120, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(150, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(180, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(210, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(240, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(270, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(300, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(330, 100%, 100%, 1.0)", [255, 255, 255, 255], +"hsl(0, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(30, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(60, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(90, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(120, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(150, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(180, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(210, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(240, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(270, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(300, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(330, 0%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(0, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(30, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(60, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(90, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(120, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(150, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(180, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(210, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(240, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(270, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(300, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(330, 12.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(0, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(30, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(60, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(90, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(120, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(150, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(180, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(210, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(240, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(270, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(300, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(330, 25%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(0, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(30, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(60, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(90, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(120, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(150, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(180, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(210, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(240, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(270, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(300, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(330, 37.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(0, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(30, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(60, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(90, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(120, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(150, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(180, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(210, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(240, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(270, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(300, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(330, 50%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(0, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(30, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(60, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(90, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(120, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(150, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(180, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(210, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(240, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(270, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(300, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(330, 62.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(0, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(30, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(60, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(90, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(120, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(150, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(180, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(210, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(240, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(270, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(300, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(330, 75%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(0, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(30, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(60, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(90, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(120, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(150, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(180, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(210, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(240, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(270, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(300, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(330, 87.5%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(0, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(30, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(60, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(90, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(120, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(150, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(180, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(210, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(240, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(270, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(300, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(330, 100%, 0%, 0.25)", [0, 0, 0, 64], +"hsl(0, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(30, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(60, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(90, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(120, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(150, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(180, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(210, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(240, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(270, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(300, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(330, 0%, 12.5%, 0.25)", [32, 32, 32, 64], +"hsl(0, 12.5%, 12.5%, 0.25)", [36, 28, 28, 64], +"hsl(30, 12.5%, 12.5%, 0.25)", [36, 32, 28, 64], +"hsl(60, 12.5%, 12.5%, 0.25)", [36, 36, 28, 64], +"hsl(90, 12.5%, 12.5%, 0.25)", [32, 36, 28, 64], +"hsl(120, 12.5%, 12.5%, 0.25)", [28, 36, 28, 64], +"hsl(150, 12.5%, 12.5%, 0.25)", [28, 36, 32, 64], +"hsl(180, 12.5%, 12.5%, 0.25)", [28, 36, 36, 64], +"hsl(210, 12.5%, 12.5%, 0.25)", [28, 32, 36, 64], +"hsl(240, 12.5%, 12.5%, 0.25)", [28, 28, 36, 64], +"hsl(270, 12.5%, 12.5%, 0.25)", [32, 28, 36, 64], +"hsl(300, 12.5%, 12.5%, 0.25)", [36, 28, 36, 64], +"hsl(330, 12.5%, 12.5%, 0.25)", [36, 28, 32, 64], +"hsl(0, 25%, 12.5%, 0.25)", [40, 24, 24, 64], +"hsl(30, 25%, 12.5%, 0.25)", [40, 32, 24, 64], +"hsl(60, 25%, 12.5%, 0.25)", [40, 40, 24, 64], +"hsl(90, 25%, 12.5%, 0.25)", [32, 40, 24, 64], +"hsl(120, 25%, 12.5%, 0.25)", [24, 40, 24, 64], +"hsl(150, 25%, 12.5%, 0.25)", [24, 40, 32, 64], +"hsl(180, 25%, 12.5%, 0.25)", [24, 40, 40, 64], +"hsl(210, 25%, 12.5%, 0.25)", [24, 32, 40, 64], +"hsl(240, 25%, 12.5%, 0.25)", [24, 24, 40, 64], +"hsl(270, 25%, 12.5%, 0.25)", [32, 24, 40, 64], +"hsl(300, 25%, 12.5%, 0.25)", [40, 24, 40, 64], +"hsl(330, 25%, 12.5%, 0.25)", [40, 24, 32, 64], +"hsl(0, 37.5%, 12.5%, 0.25)", [44, 20, 20, 64], +"hsl(30, 37.5%, 12.5%, 0.25)", [44, 32, 20, 64], +"hsl(60, 37.5%, 12.5%, 0.25)", [44, 44, 20, 64], +"hsl(90, 37.5%, 12.5%, 0.25)", [32, 44, 20, 64], +"hsl(120, 37.5%, 12.5%, 0.25)", [20, 44, 20, 64], +"hsl(150, 37.5%, 12.5%, 0.25)", [20, 44, 32, 64], +"hsl(180, 37.5%, 12.5%, 0.25)", [20, 44, 44, 64], +"hsl(210, 37.5%, 12.5%, 0.25)", [20, 32, 44, 64], +"hsl(240, 37.5%, 12.5%, 0.25)", [20, 20, 44, 64], +"hsl(270, 37.5%, 12.5%, 0.25)", [32, 20, 44, 64], +"hsl(300, 37.5%, 12.5%, 0.25)", [44, 20, 44, 64], +"hsl(330, 37.5%, 12.5%, 0.25)", [44, 20, 32, 64], +"hsl(0, 50%, 12.5%, 0.25)", [48, 16, 16, 64], +"hsl(30, 50%, 12.5%, 0.25)", [48, 32, 16, 64], +"hsl(60, 50%, 12.5%, 0.25)", [48, 48, 16, 64], +"hsl(90, 50%, 12.5%, 0.25)", [32, 48, 16, 64], +"hsl(120, 50%, 12.5%, 0.25)", [16, 48, 16, 64], +"hsl(150, 50%, 12.5%, 0.25)", [16, 48, 32, 64], +"hsl(180, 50%, 12.5%, 0.25)", [16, 48, 48, 64], +"hsl(210, 50%, 12.5%, 0.25)", [16, 32, 48, 64], +"hsl(240, 50%, 12.5%, 0.25)", [16, 16, 48, 64], +"hsl(270, 50%, 12.5%, 0.25)", [32, 16, 48, 64], +"hsl(300, 50%, 12.5%, 0.25)", [48, 16, 48, 64], +"hsl(330, 50%, 12.5%, 0.25)", [48, 16, 32, 64], +"hsl(0, 62.5%, 12.5%, 0.25)", [52, 12, 12, 64], +"hsl(30, 62.5%, 12.5%, 0.25)", [52, 32, 12, 64], +"hsl(60, 62.5%, 12.5%, 0.25)", [52, 52, 12, 64], +"hsl(90, 62.5%, 12.5%, 0.25)", [32, 52, 12, 64], +"hsl(120, 62.5%, 12.5%, 0.25)", [12, 52, 12, 64], +"hsl(150, 62.5%, 12.5%, 0.25)", [12, 52, 32, 64], +"hsl(180, 62.5%, 12.5%, 0.25)", [12, 52, 52, 64], +"hsl(210, 62.5%, 12.5%, 0.25)", [12, 32, 52, 64], +"hsl(240, 62.5%, 12.5%, 0.25)", [12, 12, 52, 64], +"hsl(270, 62.5%, 12.5%, 0.25)", [32, 12, 52, 64], +"hsl(300, 62.5%, 12.5%, 0.25)", [52, 12, 52, 64], +"hsl(330, 62.5%, 12.5%, 0.25)", [52, 12, 32, 64], +"hsl(0, 75%, 12.5%, 0.25)", [56, 8, 8, 64], +"hsl(30, 75%, 12.5%, 0.25)", [56, 32, 8, 64], +"hsl(60, 75%, 12.5%, 0.25)", [56, 56, 8, 64], +"hsl(90, 75%, 12.5%, 0.25)", [32, 56, 8, 64], +"hsl(120, 75%, 12.5%, 0.25)", [8, 56, 8, 64], +"hsl(150, 75%, 12.5%, 0.25)", [8, 56, 32, 64], +"hsl(180, 75%, 12.5%, 0.25)", [8, 56, 56, 64], +"hsl(210, 75%, 12.5%, 0.25)", [8, 32, 56, 64], +"hsl(240, 75%, 12.5%, 0.25)", [8, 8, 56, 64], +"hsl(270, 75%, 12.5%, 0.25)", [32, 8, 56, 64], +"hsl(300, 75%, 12.5%, 0.25)", [56, 8, 56, 64], +"hsl(330, 75%, 12.5%, 0.25)", [56, 8, 32, 64], +"hsl(0, 87.5%, 12.5%, 0.25)", [60, 4, 4, 64], +"hsl(30, 87.5%, 12.5%, 0.25)", [60, 32, 4, 64], +"hsl(60, 87.5%, 12.5%, 0.25)", [60, 60, 4, 64], +"hsl(90, 87.5%, 12.5%, 0.25)", [32, 60, 4, 64], +"hsl(120, 87.5%, 12.5%, 0.25)", [4, 60, 4, 64], +"hsl(150, 87.5%, 12.5%, 0.25)", [4, 60, 32, 64], +"hsl(180, 87.5%, 12.5%, 0.25)", [4, 60, 60, 64], +"hsl(210, 87.5%, 12.5%, 0.25)", [4, 32, 60, 64], +"hsl(240, 87.5%, 12.5%, 0.25)", [4, 4, 60, 64], +"hsl(270, 87.5%, 12.5%, 0.25)", [32, 4, 60, 64], +"hsl(300, 87.5%, 12.5%, 0.25)", [60, 4, 60, 64], +"hsl(330, 87.5%, 12.5%, 0.25)", [60, 4, 32, 64], +"hsl(0, 100%, 12.5%, 0.25)", [64, 0, 0, 64], +"hsl(30, 100%, 12.5%, 0.25)", [64, 32, 0, 64], +"hsl(60, 100%, 12.5%, 0.25)", [64, 64, 0, 64], +"hsl(90, 100%, 12.5%, 0.25)", [32, 64, 0, 64], +"hsl(120, 100%, 12.5%, 0.25)", [0, 64, 0, 64], +"hsl(150, 100%, 12.5%, 0.25)", [0, 64, 32, 64], +"hsl(180, 100%, 12.5%, 0.25)", [0, 64, 64, 64], +"hsl(210, 100%, 12.5%, 0.25)", [0, 32, 64, 64], +"hsl(240, 100%, 12.5%, 0.25)", [0, 0, 64, 64], +"hsl(270, 100%, 12.5%, 0.25)", [32, 0, 64, 64], +"hsl(300, 100%, 12.5%, 0.25)", [64, 0, 64, 64], +"hsl(330, 100%, 12.5%, 0.25)", [64, 0, 32, 64], +"hsl(0, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(30, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(60, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(90, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(120, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(150, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(180, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(210, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(240, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(270, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(300, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(330, 0%, 25%, 0.25)", [64, 64, 64, 64], +"hsl(0, 12.5%, 25%, 0.25)", [72, 56, 56, 64], +"hsl(30, 12.5%, 25%, 0.25)", [72, 64, 56, 64], +"hsl(60, 12.5%, 25%, 0.25)", [72, 72, 56, 64], +"hsl(90, 12.5%, 25%, 0.25)", [64, 72, 56, 64], +"hsl(120, 12.5%, 25%, 0.25)", [56, 72, 56, 64], +"hsl(150, 12.5%, 25%, 0.25)", [56, 72, 64, 64], +"hsl(180, 12.5%, 25%, 0.25)", [56, 72, 72, 64], +"hsl(210, 12.5%, 25%, 0.25)", [56, 64, 72, 64], +"hsl(240, 12.5%, 25%, 0.25)", [56, 56, 72, 64], +"hsl(270, 12.5%, 25%, 0.25)", [64, 56, 72, 64], +"hsl(300, 12.5%, 25%, 0.25)", [72, 56, 72, 64], +"hsl(330, 12.5%, 25%, 0.25)", [72, 56, 64, 64], +"hsl(0, 25%, 25%, 0.25)", [80, 48, 48, 64], +"hsl(30, 25%, 25%, 0.25)", [80, 64, 48, 64], +"hsl(60, 25%, 25%, 0.25)", [80, 80, 48, 64], +"hsl(90, 25%, 25%, 0.25)", [64, 80, 48, 64], +"hsl(120, 25%, 25%, 0.25)", [48, 80, 48, 64], +"hsl(150, 25%, 25%, 0.25)", [48, 80, 64, 64], +"hsl(180, 25%, 25%, 0.25)", [48, 80, 80, 64], +"hsl(210, 25%, 25%, 0.25)", [48, 64, 80, 64], +"hsl(240, 25%, 25%, 0.25)", [48, 48, 80, 64], +"hsl(270, 25%, 25%, 0.25)", [64, 48, 80, 64], +"hsl(300, 25%, 25%, 0.25)", [80, 48, 80, 64], +"hsl(330, 25%, 25%, 0.25)", [80, 48, 64, 64], +"hsl(0, 37.5%, 25%, 0.25)", [88, 40, 40, 64], +"hsl(30, 37.5%, 25%, 0.25)", [88, 64, 40, 64], +"hsl(60, 37.5%, 25%, 0.25)", [88, 88, 40, 64], +"hsl(90, 37.5%, 25%, 0.25)", [64, 88, 40, 64], +"hsl(120, 37.5%, 25%, 0.25)", [40, 88, 40, 64], +"hsl(150, 37.5%, 25%, 0.25)", [40, 88, 64, 64], +"hsl(180, 37.5%, 25%, 0.25)", [40, 88, 88, 64], +"hsl(210, 37.5%, 25%, 0.25)", [40, 64, 88, 64], +"hsl(240, 37.5%, 25%, 0.25)", [40, 40, 88, 64], +"hsl(270, 37.5%, 25%, 0.25)", [64, 40, 88, 64], +"hsl(300, 37.5%, 25%, 0.25)", [88, 40, 88, 64], +"hsl(330, 37.5%, 25%, 0.25)", [88, 40, 64, 64], +"hsl(0, 50%, 25%, 0.25)", [96, 32, 32, 64], +"hsl(30, 50%, 25%, 0.25)", [96, 64, 32, 64], +"hsl(60, 50%, 25%, 0.25)", [96, 96, 32, 64], +"hsl(90, 50%, 25%, 0.25)", [64, 96, 32, 64], +"hsl(120, 50%, 25%, 0.25)", [32, 96, 32, 64], +"hsl(150, 50%, 25%, 0.25)", [32, 96, 64, 64], +"hsl(180, 50%, 25%, 0.25)", [32, 96, 96, 64], +"hsl(210, 50%, 25%, 0.25)", [32, 64, 96, 64], +"hsl(240, 50%, 25%, 0.25)", [32, 32, 96, 64], +"hsl(270, 50%, 25%, 0.25)", [64, 32, 96, 64], +"hsl(300, 50%, 25%, 0.25)", [96, 32, 96, 64], +"hsl(330, 50%, 25%, 0.25)", [96, 32, 64, 64], +"hsl(0, 62.5%, 25%, 0.25)", [104, 24, 24, 64], +"hsl(30, 62.5%, 25%, 0.25)", [104, 64, 24, 64], +"hsl(60, 62.5%, 25%, 0.25)", [104, 104, 24, 64], +"hsl(90, 62.5%, 25%, 0.25)", [64, 104, 24, 64], +"hsl(120, 62.5%, 25%, 0.25)", [24, 104, 24, 64], +"hsl(150, 62.5%, 25%, 0.25)", [24, 104, 64, 64], +"hsl(180, 62.5%, 25%, 0.25)", [24, 104, 104, 64], +"hsl(210, 62.5%, 25%, 0.25)", [24, 64, 104, 64], +"hsl(240, 62.5%, 25%, 0.25)", [24, 24, 104, 64], +"hsl(270, 62.5%, 25%, 0.25)", [64, 24, 104, 64], +"hsl(300, 62.5%, 25%, 0.25)", [104, 24, 104, 64], +"hsl(330, 62.5%, 25%, 0.25)", [104, 24, 64, 64], +"hsl(0, 75%, 25%, 0.25)", [112, 16, 16, 64], +"hsl(30, 75%, 25%, 0.25)", [112, 64, 16, 64], +"hsl(60, 75%, 25%, 0.25)", [112, 112, 16, 64], +"hsl(90, 75%, 25%, 0.25)", [64, 112, 16, 64], +"hsl(120, 75%, 25%, 0.25)", [16, 112, 16, 64], +"hsl(150, 75%, 25%, 0.25)", [16, 112, 64, 64], +"hsl(180, 75%, 25%, 0.25)", [16, 112, 112, 64], +"hsl(210, 75%, 25%, 0.25)", [16, 64, 112, 64], +"hsl(240, 75%, 25%, 0.25)", [16, 16, 112, 64], +"hsl(270, 75%, 25%, 0.25)", [64, 16, 112, 64], +"hsl(300, 75%, 25%, 0.25)", [112, 16, 112, 64], +"hsl(330, 75%, 25%, 0.25)", [112, 16, 64, 64], +"hsl(0, 87.5%, 25%, 0.25)", [120, 8, 8, 64], +"hsl(30, 87.5%, 25%, 0.25)", [120, 64, 8, 64], +"hsl(60, 87.5%, 25%, 0.25)", [120, 120, 8, 64], +"hsl(90, 87.5%, 25%, 0.25)", [64, 120, 8, 64], +"hsl(120, 87.5%, 25%, 0.25)", [8, 120, 8, 64], +"hsl(150, 87.5%, 25%, 0.25)", [8, 120, 64, 64], +"hsl(180, 87.5%, 25%, 0.25)", [8, 120, 120, 64], +"hsl(210, 87.5%, 25%, 0.25)", [8, 64, 120, 64], +"hsl(240, 87.5%, 25%, 0.25)", [8, 8, 120, 64], +"hsl(270, 87.5%, 25%, 0.25)", [64, 8, 120, 64], +"hsl(300, 87.5%, 25%, 0.25)", [120, 8, 120, 64], +"hsl(330, 87.5%, 25%, 0.25)", [120, 8, 64, 64], +"hsl(0, 100%, 25%, 0.25)", [128, 0, 0, 64], +"hsl(30, 100%, 25%, 0.25)", [128, 64, 0, 64], +"hsl(60, 100%, 25%, 0.25)", [128, 128, 0, 64], +"hsl(90, 100%, 25%, 0.25)", [64, 128, 0, 64], +"hsl(120, 100%, 25%, 0.25)", [0, 128, 0, 64], +"hsl(150, 100%, 25%, 0.25)", [0, 128, 64, 64], +"hsl(180, 100%, 25%, 0.25)", [0, 128, 128, 64], +"hsl(210, 100%, 25%, 0.25)", [0, 64, 128, 64], +"hsl(240, 100%, 25%, 0.25)", [0, 0, 128, 64], +"hsl(270, 100%, 25%, 0.25)", [64, 0, 128, 64], +"hsl(300, 100%, 25%, 0.25)", [128, 0, 128, 64], +"hsl(330, 100%, 25%, 0.25)", [128, 0, 64, 64], +"hsl(0, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(30, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(60, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(90, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(120, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(150, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(180, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(210, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(240, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(270, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(300, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(330, 0%, 37.5%, 0.25)", [96, 96, 96, 64], +"hsl(0, 12.5%, 37.5%, 0.25)", [108, 84, 84, 64], +"hsl(30, 12.5%, 37.5%, 0.25)", [108, 96, 84, 64], +"hsl(60, 12.5%, 37.5%, 0.25)", [108, 108, 84, 64], +"hsl(90, 12.5%, 37.5%, 0.25)", [96, 108, 84, 64], +"hsl(120, 12.5%, 37.5%, 0.25)", [84, 108, 84, 64], +"hsl(150, 12.5%, 37.5%, 0.25)", [84, 108, 96, 64], +"hsl(180, 12.5%, 37.5%, 0.25)", [84, 108, 108, 64], +"hsl(210, 12.5%, 37.5%, 0.25)", [84, 96, 108, 64], +"hsl(240, 12.5%, 37.5%, 0.25)", [84, 84, 108, 64], +"hsl(270, 12.5%, 37.5%, 0.25)", [96, 84, 108, 64], +"hsl(300, 12.5%, 37.5%, 0.25)", [108, 84, 108, 64], +"hsl(330, 12.5%, 37.5%, 0.25)", [108, 84, 96, 64], +"hsl(0, 25%, 37.5%, 0.25)", [120, 72, 72, 64], +"hsl(30, 25%, 37.5%, 0.25)", [120, 96, 72, 64], +"hsl(60, 25%, 37.5%, 0.25)", [120, 120, 72, 64], +"hsl(90, 25%, 37.5%, 0.25)", [96, 120, 72, 64], +"hsl(120, 25%, 37.5%, 0.25)", [72, 120, 72, 64], +"hsl(150, 25%, 37.5%, 0.25)", [72, 120, 96, 64], +"hsl(180, 25%, 37.5%, 0.25)", [72, 120, 120, 64], +"hsl(210, 25%, 37.5%, 0.25)", [72, 96, 120, 64], +"hsl(240, 25%, 37.5%, 0.25)", [72, 72, 120, 64], +"hsl(270, 25%, 37.5%, 0.25)", [96, 72, 120, 64], +"hsl(300, 25%, 37.5%, 0.25)", [120, 72, 120, 64], +"hsl(330, 25%, 37.5%, 0.25)", [120, 72, 96, 64], +"hsl(0, 37.5%, 37.5%, 0.25)", [132, 60, 60, 64], +"hsl(30, 37.5%, 37.5%, 0.25)", [132, 96, 60, 64], +"hsl(60, 37.5%, 37.5%, 0.25)", [132, 132, 60, 64], +"hsl(90, 37.5%, 37.5%, 0.25)", [96, 132, 60, 64], +"hsl(120, 37.5%, 37.5%, 0.25)", [60, 132, 60, 64], +"hsl(150, 37.5%, 37.5%, 0.25)", [60, 132, 96, 64], +"hsl(180, 37.5%, 37.5%, 0.25)", [60, 132, 132, 64], +"hsl(210, 37.5%, 37.5%, 0.25)", [60, 96, 132, 64], +"hsl(240, 37.5%, 37.5%, 0.25)", [60, 60, 132, 64], +"hsl(270, 37.5%, 37.5%, 0.25)", [96, 60, 132, 64], +"hsl(300, 37.5%, 37.5%, 0.25)", [132, 60, 132, 64], +"hsl(330, 37.5%, 37.5%, 0.25)", [132, 60, 96, 64], +"hsl(0, 50%, 37.5%, 0.25)", [144, 48, 48, 64], +"hsl(30, 50%, 37.5%, 0.25)", [144, 96, 48, 64], +"hsl(60, 50%, 37.5%, 0.25)", [144, 144, 48, 64], +"hsl(90, 50%, 37.5%, 0.25)", [96, 144, 48, 64], +"hsl(120, 50%, 37.5%, 0.25)", [48, 144, 48, 64], +"hsl(150, 50%, 37.5%, 0.25)", [48, 144, 96, 64], +"hsl(180, 50%, 37.5%, 0.25)", [48, 144, 144, 64], +"hsl(210, 50%, 37.5%, 0.25)", [48, 96, 144, 64], +"hsl(240, 50%, 37.5%, 0.25)", [48, 48, 144, 64], +"hsl(270, 50%, 37.5%, 0.25)", [96, 48, 144, 64], +"hsl(300, 50%, 37.5%, 0.25)", [144, 48, 144, 64], +"hsl(330, 50%, 37.5%, 0.25)", [144, 48, 96, 64], +"hsl(0, 62.5%, 37.5%, 0.25)", [156, 36, 36, 64], +"hsl(30, 62.5%, 37.5%, 0.25)", [156, 96, 36, 64], +"hsl(60, 62.5%, 37.5%, 0.25)", [156, 156, 36, 64], +"hsl(90, 62.5%, 37.5%, 0.25)", [96, 156, 36, 64], +"hsl(120, 62.5%, 37.5%, 0.25)", [36, 156, 36, 64], +"hsl(150, 62.5%, 37.5%, 0.25)", [36, 156, 96, 64], +"hsl(180, 62.5%, 37.5%, 0.25)", [36, 156, 156, 64], +"hsl(210, 62.5%, 37.5%, 0.25)", [36, 96, 156, 64], +"hsl(240, 62.5%, 37.5%, 0.25)", [36, 36, 156, 64], +"hsl(270, 62.5%, 37.5%, 0.25)", [96, 36, 156, 64], +"hsl(300, 62.5%, 37.5%, 0.25)", [156, 36, 156, 64], +"hsl(330, 62.5%, 37.5%, 0.25)", [156, 36, 96, 64], +"hsl(0, 75%, 37.5%, 0.25)", [168, 24, 24, 64], +"hsl(30, 75%, 37.5%, 0.25)", [168, 96, 24, 64], +"hsl(60, 75%, 37.5%, 0.25)", [168, 168, 24, 64], +"hsl(90, 75%, 37.5%, 0.25)", [96, 168, 24, 64], +"hsl(120, 75%, 37.5%, 0.25)", [24, 168, 24, 64], +"hsl(150, 75%, 37.5%, 0.25)", [24, 168, 96, 64], +"hsl(180, 75%, 37.5%, 0.25)", [24, 168, 168, 64], +"hsl(210, 75%, 37.5%, 0.25)", [24, 96, 168, 64], +"hsl(240, 75%, 37.5%, 0.25)", [24, 24, 168, 64], +"hsl(270, 75%, 37.5%, 0.25)", [96, 24, 168, 64], +"hsl(300, 75%, 37.5%, 0.25)", [168, 24, 168, 64], +"hsl(330, 75%, 37.5%, 0.25)", [168, 24, 96, 64], +"hsl(0, 87.5%, 37.5%, 0.25)", [180, 12, 12, 64], +"hsl(30, 87.5%, 37.5%, 0.25)", [180, 96, 12, 64], +"hsl(60, 87.5%, 37.5%, 0.25)", [180, 180, 12, 64], +"hsl(90, 87.5%, 37.5%, 0.25)", [96, 180, 12, 64], +"hsl(120, 87.5%, 37.5%, 0.25)", [12, 180, 12, 64], +"hsl(150, 87.5%, 37.5%, 0.25)", [12, 180, 96, 64], +"hsl(180, 87.5%, 37.5%, 0.25)", [12, 180, 180, 64], +"hsl(210, 87.5%, 37.5%, 0.25)", [12, 96, 180, 64], +"hsl(240, 87.5%, 37.5%, 0.25)", [12, 12, 180, 64], +"hsl(270, 87.5%, 37.5%, 0.25)", [96, 12, 180, 64], +"hsl(300, 87.5%, 37.5%, 0.25)", [180, 12, 180, 64], +"hsl(330, 87.5%, 37.5%, 0.25)", [180, 12, 96, 64], +"hsl(0, 100%, 37.5%, 0.25)", [192, 0, 0, 64], +"hsl(30, 100%, 37.5%, 0.25)", [192, 96, 0, 64], +"hsl(60, 100%, 37.5%, 0.25)", [192, 192, 0, 64], +"hsl(90, 100%, 37.5%, 0.25)", [96, 192, 0, 64], +"hsl(120, 100%, 37.5%, 0.25)", [0, 192, 0, 64], +"hsl(150, 100%, 37.5%, 0.25)", [0, 192, 96, 64], +"hsl(180, 100%, 37.5%, 0.25)", [0, 192, 192, 64], +"hsl(210, 100%, 37.5%, 0.25)", [0, 96, 192, 64], +"hsl(240, 100%, 37.5%, 0.25)", [0, 0, 192, 64], +"hsl(270, 100%, 37.5%, 0.25)", [96, 0, 192, 64], +"hsl(300, 100%, 37.5%, 0.25)", [192, 0, 192, 64], +"hsl(330, 100%, 37.5%, 0.25)", [192, 0, 96, 64], +"hsl(0, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(30, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(60, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(90, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(120, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(150, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(180, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(210, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(240, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(270, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(300, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(330, 0%, 50%, 0.25)", [128, 128, 128, 64], +"hsl(0, 12.5%, 50%, 0.25)", [144, 112, 112, 64], +"hsl(30, 12.5%, 50%, 0.25)", [144, 128, 112, 64], +"hsl(60, 12.5%, 50%, 0.25)", [144, 144, 112, 64], +"hsl(90, 12.5%, 50%, 0.25)", [128, 144, 112, 64], +"hsl(120, 12.5%, 50%, 0.25)", [112, 144, 112, 64], +"hsl(150, 12.5%, 50%, 0.25)", [112, 144, 128, 64], +"hsl(180, 12.5%, 50%, 0.25)", [112, 144, 144, 64], +"hsl(210, 12.5%, 50%, 0.25)", [112, 128, 144, 64], +"hsl(240, 12.5%, 50%, 0.25)", [112, 112, 144, 64], +"hsl(270, 12.5%, 50%, 0.25)", [128, 112, 144, 64], +"hsl(300, 12.5%, 50%, 0.25)", [144, 112, 144, 64], +"hsl(330, 12.5%, 50%, 0.25)", [144, 112, 128, 64], +"hsl(0, 25%, 50%, 0.25)", [160, 96, 96, 64], +"hsl(30, 25%, 50%, 0.25)", [160, 128, 96, 64], +"hsl(60, 25%, 50%, 0.25)", [160, 160, 96, 64], +"hsl(90, 25%, 50%, 0.25)", [128, 160, 96, 64], +"hsl(120, 25%, 50%, 0.25)", [96, 160, 96, 64], +"hsl(150, 25%, 50%, 0.25)", [96, 160, 128, 64], +"hsl(180, 25%, 50%, 0.25)", [96, 160, 160, 64], +"hsl(210, 25%, 50%, 0.25)", [96, 128, 160, 64], +"hsl(240, 25%, 50%, 0.25)", [96, 96, 160, 64], +"hsl(270, 25%, 50%, 0.25)", [128, 96, 160, 64], +"hsl(300, 25%, 50%, 0.25)", [160, 96, 160, 64], +"hsl(330, 25%, 50%, 0.25)", [160, 96, 128, 64], +"hsl(0, 37.5%, 50%, 0.25)", [176, 80, 80, 64], +"hsl(30, 37.5%, 50%, 0.25)", [176, 128, 80, 64], +"hsl(60, 37.5%, 50%, 0.25)", [176, 176, 80, 64], +"hsl(90, 37.5%, 50%, 0.25)", [128, 176, 80, 64], +"hsl(120, 37.5%, 50%, 0.25)", [80, 176, 80, 64], +"hsl(150, 37.5%, 50%, 0.25)", [80, 176, 128, 64], +"hsl(180, 37.5%, 50%, 0.25)", [80, 176, 176, 64], +"hsl(210, 37.5%, 50%, 0.25)", [80, 128, 176, 64], +"hsl(240, 37.5%, 50%, 0.25)", [80, 80, 176, 64], +"hsl(270, 37.5%, 50%, 0.25)", [128, 80, 176, 64], +"hsl(300, 37.5%, 50%, 0.25)", [176, 80, 176, 64], +"hsl(330, 37.5%, 50%, 0.25)", [176, 80, 128, 64], +"hsl(0, 50%, 50%, 0.25)", [192, 64, 64, 64], +"hsl(30, 50%, 50%, 0.25)", [192, 128, 64, 64], +"hsl(60, 50%, 50%, 0.25)", [192, 192, 64, 64], +"hsl(90, 50%, 50%, 0.25)", [128, 192, 64, 64], +"hsl(120, 50%, 50%, 0.25)", [64, 192, 64, 64], +"hsl(150, 50%, 50%, 0.25)", [64, 192, 128, 64], +"hsl(180, 50%, 50%, 0.25)", [64, 192, 192, 64], +"hsl(210, 50%, 50%, 0.25)", [64, 128, 192, 64], +"hsl(240, 50%, 50%, 0.25)", [64, 64, 192, 64], +"hsl(270, 50%, 50%, 0.25)", [128, 64, 192, 64], +"hsl(300, 50%, 50%, 0.25)", [192, 64, 192, 64], +"hsl(330, 50%, 50%, 0.25)", [192, 64, 128, 64], +"hsl(0, 62.5%, 50%, 0.25)", [208, 48, 48, 64], +"hsl(30, 62.5%, 50%, 0.25)", [208, 128, 48, 64], +"hsl(60, 62.5%, 50%, 0.25)", [208, 208, 48, 64], +"hsl(90, 62.5%, 50%, 0.25)", [128, 208, 48, 64], +"hsl(120, 62.5%, 50%, 0.25)", [48, 208, 48, 64], +"hsl(150, 62.5%, 50%, 0.25)", [48, 208, 128, 64], +"hsl(180, 62.5%, 50%, 0.25)", [48, 208, 208, 64], +"hsl(210, 62.5%, 50%, 0.25)", [48, 128, 208, 64], +"hsl(240, 62.5%, 50%, 0.25)", [48, 48, 208, 64], +"hsl(270, 62.5%, 50%, 0.25)", [128, 48, 208, 64], +"hsl(300, 62.5%, 50%, 0.25)", [208, 48, 208, 64], +"hsl(330, 62.5%, 50%, 0.25)", [208, 48, 128, 64], +"hsl(0, 75%, 50%, 0.25)", [224, 32, 32, 64], +"hsl(30, 75%, 50%, 0.25)", [224, 128, 32, 64], +"hsl(60, 75%, 50%, 0.25)", [224, 224, 32, 64], +"hsl(90, 75%, 50%, 0.25)", [128, 224, 32, 64], +"hsl(120, 75%, 50%, 0.25)", [32, 224, 32, 64], +"hsl(150, 75%, 50%, 0.25)", [32, 224, 128, 64], +"hsl(180, 75%, 50%, 0.25)", [32, 224, 224, 64], +"hsl(210, 75%, 50%, 0.25)", [32, 128, 224, 64], +"hsl(240, 75%, 50%, 0.25)", [32, 32, 224, 64], +"hsl(270, 75%, 50%, 0.25)", [128, 32, 224, 64], +"hsl(300, 75%, 50%, 0.25)", [224, 32, 224, 64], +"hsl(330, 75%, 50%, 0.25)", [224, 32, 128, 64], +"hsl(0, 87.5%, 50%, 0.25)", [240, 16, 16, 64], +"hsl(30, 87.5%, 50%, 0.25)", [240, 128, 16, 64], +"hsl(60, 87.5%, 50%, 0.25)", [240, 240, 16, 64], +"hsl(90, 87.5%, 50%, 0.25)", [128, 240, 16, 64], +"hsl(120, 87.5%, 50%, 0.25)", [16, 240, 16, 64], +"hsl(150, 87.5%, 50%, 0.25)", [16, 240, 128, 64], +"hsl(180, 87.5%, 50%, 0.25)", [16, 240, 240, 64], +"hsl(210, 87.5%, 50%, 0.25)", [16, 128, 240, 64], +"hsl(240, 87.5%, 50%, 0.25)", [16, 16, 240, 64], +"hsl(270, 87.5%, 50%, 0.25)", [128, 16, 240, 64], +"hsl(300, 87.5%, 50%, 0.25)", [240, 16, 240, 64], +"hsl(330, 87.5%, 50%, 0.25)", [240, 16, 128, 64], +"hsl(0, 100%, 50%, 0.25)", [255, 0, 0, 64], +"hsl(30, 100%, 50%, 0.25)", [255, 128, 0, 64], +"hsl(60, 100%, 50%, 0.25)", [255, 255, 0, 64], +"hsl(90, 100%, 50%, 0.25)", [128, 255, 0, 64], +"hsl(120, 100%, 50%, 0.25)", [0, 255, 0, 64], +"hsl(150, 100%, 50%, 0.25)", [0, 255, 128, 64], +"hsl(180, 100%, 50%, 0.25)", [0, 255, 255, 64], +"hsl(210, 100%, 50%, 0.25)", [0, 128, 255, 64], +"hsl(240, 100%, 50%, 0.25)", [0, 0, 255, 64], +"hsl(270, 100%, 50%, 0.25)", [128, 0, 255, 64], +"hsl(300, 100%, 50%, 0.25)", [255, 0, 255, 64], +"hsl(330, 100%, 50%, 0.25)", [255, 0, 128, 64], +"hsl(0, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(30, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(60, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(90, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(120, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(150, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(180, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(210, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(240, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(270, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(300, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(330, 0%, 62.5%, 0.25)", [160, 160, 160, 64], +"hsl(0, 12.5%, 62.5%, 0.25)", [172, 148, 148, 64], +"hsl(30, 12.5%, 62.5%, 0.25)", [172, 160, 148, 64], +"hsl(60, 12.5%, 62.5%, 0.25)", [172, 172, 148, 64], +"hsl(90, 12.5%, 62.5%, 0.25)", [160, 172, 148, 64], +"hsl(120, 12.5%, 62.5%, 0.25)", [148, 172, 148, 64], +"hsl(150, 12.5%, 62.5%, 0.25)", [148, 172, 160, 64], +"hsl(180, 12.5%, 62.5%, 0.25)", [148, 172, 172, 64], +"hsl(210, 12.5%, 62.5%, 0.25)", [148, 160, 172, 64], +"hsl(240, 12.5%, 62.5%, 0.25)", [148, 148, 172, 64], +"hsl(270, 12.5%, 62.5%, 0.25)", [160, 148, 172, 64], +"hsl(300, 12.5%, 62.5%, 0.25)", [172, 148, 172, 64], +"hsl(330, 12.5%, 62.5%, 0.25)", [172, 148, 160, 64], +"hsl(0, 25%, 62.5%, 0.25)", [184, 136, 136, 64], +"hsl(30, 25%, 62.5%, 0.25)", [184, 160, 136, 64], +"hsl(60, 25%, 62.5%, 0.25)", [184, 184, 136, 64], +"hsl(90, 25%, 62.5%, 0.25)", [160, 184, 136, 64], +"hsl(120, 25%, 62.5%, 0.25)", [136, 184, 136, 64], +"hsl(150, 25%, 62.5%, 0.25)", [136, 184, 160, 64], +"hsl(180, 25%, 62.5%, 0.25)", [136, 184, 184, 64], +"hsl(210, 25%, 62.5%, 0.25)", [136, 160, 184, 64], +"hsl(240, 25%, 62.5%, 0.25)", [136, 136, 184, 64], +"hsl(270, 25%, 62.5%, 0.25)", [160, 136, 184, 64], +"hsl(300, 25%, 62.5%, 0.25)", [184, 136, 184, 64], +"hsl(330, 25%, 62.5%, 0.25)", [184, 136, 160, 64], +"hsl(0, 37.5%, 62.5%, 0.25)", [196, 124, 124, 64], +"hsl(30, 37.5%, 62.5%, 0.25)", [196, 160, 124, 64], +"hsl(60, 37.5%, 62.5%, 0.25)", [196, 196, 124, 64], +"hsl(90, 37.5%, 62.5%, 0.25)", [160, 196, 124, 64], +"hsl(120, 37.5%, 62.5%, 0.25)", [124, 196, 124, 64], +"hsl(150, 37.5%, 62.5%, 0.25)", [124, 196, 160, 64], +"hsl(180, 37.5%, 62.5%, 0.25)", [124, 196, 196, 64], +"hsl(210, 37.5%, 62.5%, 0.25)", [124, 160, 196, 64], +"hsl(240, 37.5%, 62.5%, 0.25)", [124, 124, 196, 64], +"hsl(270, 37.5%, 62.5%, 0.25)", [160, 124, 196, 64], +"hsl(300, 37.5%, 62.5%, 0.25)", [196, 124, 196, 64], +"hsl(330, 37.5%, 62.5%, 0.25)", [196, 124, 160, 64], +"hsl(0, 50%, 62.5%, 0.25)", [208, 112, 112, 64], +"hsl(30, 50%, 62.5%, 0.25)", [208, 160, 112, 64], +"hsl(60, 50%, 62.5%, 0.25)", [208, 208, 112, 64], +"hsl(90, 50%, 62.5%, 0.25)", [160, 208, 112, 64], +"hsl(120, 50%, 62.5%, 0.25)", [112, 208, 112, 64], +"hsl(150, 50%, 62.5%, 0.25)", [112, 208, 160, 64], +"hsl(180, 50%, 62.5%, 0.25)", [112, 208, 208, 64], +"hsl(210, 50%, 62.5%, 0.25)", [112, 160, 208, 64], +"hsl(240, 50%, 62.5%, 0.25)", [112, 112, 208, 64], +"hsl(270, 50%, 62.5%, 0.25)", [160, 112, 208, 64], +"hsl(300, 50%, 62.5%, 0.25)", [208, 112, 208, 64], +"hsl(330, 50%, 62.5%, 0.25)", [208, 112, 160, 64], +"hsl(0, 62.5%, 62.5%, 0.25)", [220, 100, 100, 64], +"hsl(30, 62.5%, 62.5%, 0.25)", [220, 160, 100, 64], +"hsl(60, 62.5%, 62.5%, 0.25)", [220, 220, 100, 64], +"hsl(90, 62.5%, 62.5%, 0.25)", [160, 220, 100, 64], +"hsl(120, 62.5%, 62.5%, 0.25)", [100, 220, 100, 64], +"hsl(150, 62.5%, 62.5%, 0.25)", [100, 220, 160, 64], +"hsl(180, 62.5%, 62.5%, 0.25)", [100, 220, 220, 64], +"hsl(210, 62.5%, 62.5%, 0.25)", [100, 160, 220, 64], +"hsl(240, 62.5%, 62.5%, 0.25)", [100, 100, 220, 64], +"hsl(270, 62.5%, 62.5%, 0.25)", [160, 100, 220, 64], +"hsl(300, 62.5%, 62.5%, 0.25)", [220, 100, 220, 64], +"hsl(330, 62.5%, 62.5%, 0.25)", [220, 100, 160, 64], +"hsl(0, 75%, 62.5%, 0.25)", [232, 88, 88, 64], +"hsl(30, 75%, 62.5%, 0.25)", [232, 160, 88, 64], +"hsl(60, 75%, 62.5%, 0.25)", [232, 232, 88, 64], +"hsl(90, 75%, 62.5%, 0.25)", [160, 232, 88, 64], +"hsl(120, 75%, 62.5%, 0.25)", [88, 232, 88, 64], +"hsl(150, 75%, 62.5%, 0.25)", [88, 232, 160, 64], +"hsl(180, 75%, 62.5%, 0.25)", [88, 232, 232, 64], +"hsl(210, 75%, 62.5%, 0.25)", [88, 160, 232, 64], +"hsl(240, 75%, 62.5%, 0.25)", [88, 88, 232, 64], +"hsl(270, 75%, 62.5%, 0.25)", [160, 88, 232, 64], +"hsl(300, 75%, 62.5%, 0.25)", [232, 88, 232, 64], +"hsl(330, 75%, 62.5%, 0.25)", [232, 88, 160, 64], +"hsl(0, 87.5%, 62.5%, 0.25)", [244, 76, 76, 64], +"hsl(30, 87.5%, 62.5%, 0.25)", [244, 160, 76, 64], +"hsl(60, 87.5%, 62.5%, 0.25)", [244, 244, 76, 64], +"hsl(90, 87.5%, 62.5%, 0.25)", [160, 244, 76, 64], +"hsl(120, 87.5%, 62.5%, 0.25)", [76, 244, 76, 64], +"hsl(150, 87.5%, 62.5%, 0.25)", [76, 244, 160, 64], +"hsl(180, 87.5%, 62.5%, 0.25)", [76, 244, 244, 64], +"hsl(210, 87.5%, 62.5%, 0.25)", [76, 160, 244, 64], +"hsl(240, 87.5%, 62.5%, 0.25)", [76, 76, 244, 64], +"hsl(270, 87.5%, 62.5%, 0.25)", [160, 76, 244, 64], +"hsl(300, 87.5%, 62.5%, 0.25)", [244, 76, 244, 64], +"hsl(330, 87.5%, 62.5%, 0.25)", [244, 76, 160, 64], +"hsl(0, 100%, 62.5%, 0.25)", [255, 64, 64, 64], +"hsl(30, 100%, 62.5%, 0.25)", [255, 160, 64, 64], +"hsl(60, 100%, 62.5%, 0.25)", [255, 255, 64, 64], +"hsl(90, 100%, 62.5%, 0.25)", [160, 255, 64, 64], +"hsl(120, 100%, 62.5%, 0.25)", [64, 255, 64, 64], +"hsl(150, 100%, 62.5%, 0.25)", [64, 255, 160, 64], +"hsl(180, 100%, 62.5%, 0.25)", [64, 255, 255, 64], +"hsl(210, 100%, 62.5%, 0.25)", [64, 160, 255, 64], +"hsl(240, 100%, 62.5%, 0.25)", [64, 64, 255, 64], +"hsl(270, 100%, 62.5%, 0.25)", [160, 64, 255, 64], +"hsl(300, 100%, 62.5%, 0.25)", [255, 64, 255, 64], +"hsl(330, 100%, 62.5%, 0.25)", [255, 64, 160, 64], +"hsl(0, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(30, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(60, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(90, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(120, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(150, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(180, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(210, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(240, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(270, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(300, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(330, 0%, 75%, 0.25)", [192, 192, 192, 64], +"hsl(0, 12.5%, 75%, 0.25)", [200, 184, 184, 64], +"hsl(30, 12.5%, 75%, 0.25)", [200, 192, 184, 64], +"hsl(60, 12.5%, 75%, 0.25)", [200, 200, 184, 64], +"hsl(90, 12.5%, 75%, 0.25)", [192, 200, 184, 64], +"hsl(120, 12.5%, 75%, 0.25)", [184, 200, 184, 64], +"hsl(150, 12.5%, 75%, 0.25)", [184, 200, 192, 64], +"hsl(180, 12.5%, 75%, 0.25)", [184, 200, 200, 64], +"hsl(210, 12.5%, 75%, 0.25)", [184, 192, 200, 64], +"hsl(240, 12.5%, 75%, 0.25)", [184, 184, 200, 64], +"hsl(270, 12.5%, 75%, 0.25)", [192, 184, 200, 64], +"hsl(300, 12.5%, 75%, 0.25)", [200, 184, 200, 64], +"hsl(330, 12.5%, 75%, 0.25)", [200, 184, 192, 64], +"hsl(0, 25%, 75%, 0.25)", [208, 176, 176, 64], +"hsl(30, 25%, 75%, 0.25)", [208, 192, 176, 64], +"hsl(60, 25%, 75%, 0.25)", [208, 208, 176, 64], +"hsl(90, 25%, 75%, 0.25)", [192, 208, 176, 64], +"hsl(120, 25%, 75%, 0.25)", [176, 208, 176, 64], +"hsl(150, 25%, 75%, 0.25)", [176, 208, 192, 64], +"hsl(180, 25%, 75%, 0.25)", [176, 208, 208, 64], +"hsl(210, 25%, 75%, 0.25)", [176, 192, 208, 64], +"hsl(240, 25%, 75%, 0.25)", [176, 176, 208, 64], +"hsl(270, 25%, 75%, 0.25)", [192, 176, 208, 64], +"hsl(300, 25%, 75%, 0.25)", [208, 176, 208, 64], +"hsl(330, 25%, 75%, 0.25)", [208, 176, 192, 64], +"hsl(0, 37.5%, 75%, 0.25)", [216, 168, 168, 64], +"hsl(30, 37.5%, 75%, 0.25)", [216, 192, 168, 64], +"hsl(60, 37.5%, 75%, 0.25)", [216, 216, 168, 64], +"hsl(90, 37.5%, 75%, 0.25)", [192, 216, 168, 64], +"hsl(120, 37.5%, 75%, 0.25)", [168, 216, 168, 64], +"hsl(150, 37.5%, 75%, 0.25)", [168, 216, 192, 64], +"hsl(180, 37.5%, 75%, 0.25)", [168, 216, 216, 64], +"hsl(210, 37.5%, 75%, 0.25)", [168, 192, 216, 64], +"hsl(240, 37.5%, 75%, 0.25)", [168, 168, 216, 64], +"hsl(270, 37.5%, 75%, 0.25)", [192, 168, 216, 64], +"hsl(300, 37.5%, 75%, 0.25)", [216, 168, 216, 64], +"hsl(330, 37.5%, 75%, 0.25)", [216, 168, 192, 64], +"hsl(0, 50%, 75%, 0.25)", [224, 160, 160, 64], +"hsl(30, 50%, 75%, 0.25)", [224, 192, 160, 64], +"hsl(60, 50%, 75%, 0.25)", [224, 224, 160, 64], +"hsl(90, 50%, 75%, 0.25)", [192, 224, 160, 64], +"hsl(120, 50%, 75%, 0.25)", [160, 224, 160, 64], +"hsl(150, 50%, 75%, 0.25)", [160, 224, 192, 64], +"hsl(180, 50%, 75%, 0.25)", [160, 224, 224, 64], +"hsl(210, 50%, 75%, 0.25)", [160, 192, 224, 64], +"hsl(240, 50%, 75%, 0.25)", [160, 160, 224, 64], +"hsl(270, 50%, 75%, 0.25)", [192, 160, 224, 64], +"hsl(300, 50%, 75%, 0.25)", [224, 160, 224, 64], +"hsl(330, 50%, 75%, 0.25)", [224, 160, 192, 64], +"hsl(0, 62.5%, 75%, 0.25)", [232, 152, 152, 64], +"hsl(30, 62.5%, 75%, 0.25)", [232, 192, 152, 64], +"hsl(60, 62.5%, 75%, 0.25)", [232, 232, 152, 64], +"hsl(90, 62.5%, 75%, 0.25)", [192, 232, 152, 64], +"hsl(120, 62.5%, 75%, 0.25)", [152, 232, 152, 64], +"hsl(150, 62.5%, 75%, 0.25)", [152, 232, 192, 64], +"hsl(180, 62.5%, 75%, 0.25)", [152, 232, 232, 64], +"hsl(210, 62.5%, 75%, 0.25)", [152, 192, 232, 64], +"hsl(240, 62.5%, 75%, 0.25)", [152, 152, 232, 64], +"hsl(270, 62.5%, 75%, 0.25)", [192, 152, 232, 64], +"hsl(300, 62.5%, 75%, 0.25)", [232, 152, 232, 64], +"hsl(330, 62.5%, 75%, 0.25)", [232, 152, 192, 64], +"hsl(0, 75%, 75%, 0.25)", [240, 144, 144, 64], +"hsl(30, 75%, 75%, 0.25)", [240, 192, 144, 64], +"hsl(60, 75%, 75%, 0.25)", [240, 240, 144, 64], +"hsl(90, 75%, 75%, 0.25)", [192, 240, 144, 64], +"hsl(120, 75%, 75%, 0.25)", [144, 240, 144, 64], +"hsl(150, 75%, 75%, 0.25)", [144, 240, 192, 64], +"hsl(180, 75%, 75%, 0.25)", [144, 240, 240, 64], +"hsl(210, 75%, 75%, 0.25)", [144, 192, 240, 64], +"hsl(240, 75%, 75%, 0.25)", [144, 144, 240, 64], +"hsl(270, 75%, 75%, 0.25)", [192, 144, 240, 64], +"hsl(300, 75%, 75%, 0.25)", [240, 144, 240, 64], +"hsl(330, 75%, 75%, 0.25)", [240, 144, 192, 64], +"hsl(0, 87.5%, 75%, 0.25)", [248, 136, 136, 64], +"hsl(30, 87.5%, 75%, 0.25)", [248, 192, 136, 64], +"hsl(60, 87.5%, 75%, 0.25)", [248, 248, 136, 64], +"hsl(90, 87.5%, 75%, 0.25)", [192, 248, 136, 64], +"hsl(120, 87.5%, 75%, 0.25)", [136, 248, 136, 64], +"hsl(150, 87.5%, 75%, 0.25)", [136, 248, 192, 64], +"hsl(180, 87.5%, 75%, 0.25)", [136, 248, 248, 64], +"hsl(210, 87.5%, 75%, 0.25)", [136, 192, 248, 64], +"hsl(240, 87.5%, 75%, 0.25)", [136, 136, 248, 64], +"hsl(270, 87.5%, 75%, 0.25)", [192, 136, 248, 64], +"hsl(300, 87.5%, 75%, 0.25)", [248, 136, 248, 64], +"hsl(330, 87.5%, 75%, 0.25)", [248, 136, 192, 64], +"hsl(0, 100%, 75%, 0.25)", [255, 128, 128, 64], +"hsl(30, 100%, 75%, 0.25)", [255, 192, 128, 64], +"hsl(60, 100%, 75%, 0.25)", [255, 255, 128, 64], +"hsl(90, 100%, 75%, 0.25)", [192, 255, 128, 64], +"hsl(120, 100%, 75%, 0.25)", [128, 255, 128, 64], +"hsl(150, 100%, 75%, 0.25)", [128, 255, 192, 64], +"hsl(180, 100%, 75%, 0.25)", [128, 255, 255, 64], +"hsl(210, 100%, 75%, 0.25)", [128, 192, 255, 64], +"hsl(240, 100%, 75%, 0.25)", [128, 128, 255, 64], +"hsl(270, 100%, 75%, 0.25)", [192, 128, 255, 64], +"hsl(300, 100%, 75%, 0.25)", [255, 128, 255, 64], +"hsl(330, 100%, 75%, 0.25)", [255, 128, 192, 64], +"hsl(0, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(30, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(60, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(90, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(120, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(150, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(180, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(210, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(240, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(270, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(300, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(330, 0%, 87.5%, 0.25)", [224, 224, 224, 64], +"hsl(0, 12.5%, 87.5%, 0.25)", [228, 220, 220, 64], +"hsl(30, 12.5%, 87.5%, 0.25)", [228, 224, 220, 64], +"hsl(60, 12.5%, 87.5%, 0.25)", [228, 228, 220, 64], +"hsl(90, 12.5%, 87.5%, 0.25)", [224, 228, 220, 64], +"hsl(120, 12.5%, 87.5%, 0.25)", [220, 228, 220, 64], +"hsl(150, 12.5%, 87.5%, 0.25)", [220, 228, 224, 64], +"hsl(180, 12.5%, 87.5%, 0.25)", [220, 228, 228, 64], +"hsl(210, 12.5%, 87.5%, 0.25)", [220, 224, 228, 64], +"hsl(240, 12.5%, 87.5%, 0.25)", [220, 220, 228, 64], +"hsl(270, 12.5%, 87.5%, 0.25)", [224, 220, 228, 64], +"hsl(300, 12.5%, 87.5%, 0.25)", [228, 220, 228, 64], +"hsl(330, 12.5%, 87.5%, 0.25)", [228, 220, 224, 64], +"hsl(0, 25%, 87.5%, 0.25)", [232, 216, 216, 64], +"hsl(30, 25%, 87.5%, 0.25)", [232, 224, 216, 64], +"hsl(60, 25%, 87.5%, 0.25)", [232, 232, 216, 64], +"hsl(90, 25%, 87.5%, 0.25)", [224, 232, 216, 64], +"hsl(120, 25%, 87.5%, 0.25)", [216, 232, 216, 64], +"hsl(150, 25%, 87.5%, 0.25)", [216, 232, 224, 64], +"hsl(180, 25%, 87.5%, 0.25)", [216, 232, 232, 64], +"hsl(210, 25%, 87.5%, 0.25)", [216, 224, 232, 64], +"hsl(240, 25%, 87.5%, 0.25)", [216, 216, 232, 64], +"hsl(270, 25%, 87.5%, 0.25)", [224, 216, 232, 64], +"hsl(300, 25%, 87.5%, 0.25)", [232, 216, 232, 64], +"hsl(330, 25%, 87.5%, 0.25)", [232, 216, 224, 64], +"hsl(0, 37.5%, 87.5%, 0.25)", [236, 212, 212, 64], +"hsl(30, 37.5%, 87.5%, 0.25)", [236, 224, 212, 64], +"hsl(60, 37.5%, 87.5%, 0.25)", [236, 236, 212, 64], +"hsl(90, 37.5%, 87.5%, 0.25)", [224, 236, 212, 64], +"hsl(120, 37.5%, 87.5%, 0.25)", [212, 236, 212, 64], +"hsl(150, 37.5%, 87.5%, 0.25)", [212, 236, 224, 64], +"hsl(180, 37.5%, 87.5%, 0.25)", [212, 236, 236, 64], +"hsl(210, 37.5%, 87.5%, 0.25)", [212, 224, 236, 64], +"hsl(240, 37.5%, 87.5%, 0.25)", [212, 212, 236, 64], +"hsl(270, 37.5%, 87.5%, 0.25)", [224, 212, 236, 64], +"hsl(300, 37.5%, 87.5%, 0.25)", [236, 212, 236, 64], +"hsl(330, 37.5%, 87.5%, 0.25)", [236, 212, 224, 64], +"hsl(0, 50%, 87.5%, 0.25)", [240, 208, 208, 64], +"hsl(30, 50%, 87.5%, 0.25)", [240, 224, 208, 64], +"hsl(60, 50%, 87.5%, 0.25)", [240, 240, 208, 64], +"hsl(90, 50%, 87.5%, 0.25)", [224, 240, 208, 64], +"hsl(120, 50%, 87.5%, 0.25)", [208, 240, 208, 64], +"hsl(150, 50%, 87.5%, 0.25)", [208, 240, 224, 64], +"hsl(180, 50%, 87.5%, 0.25)", [208, 240, 240, 64], +"hsl(210, 50%, 87.5%, 0.25)", [208, 224, 240, 64], +"hsl(240, 50%, 87.5%, 0.25)", [208, 208, 240, 64], +"hsl(270, 50%, 87.5%, 0.25)", [224, 208, 240, 64], +"hsl(300, 50%, 87.5%, 0.25)", [240, 208, 240, 64], +"hsl(330, 50%, 87.5%, 0.25)", [240, 208, 224, 64], +"hsl(0, 62.5%, 87.5%, 0.25)", [244, 204, 204, 64], +"hsl(30, 62.5%, 87.5%, 0.25)", [244, 224, 204, 64], +"hsl(60, 62.5%, 87.5%, 0.25)", [244, 244, 204, 64], +"hsl(90, 62.5%, 87.5%, 0.25)", [224, 244, 204, 64], +"hsl(120, 62.5%, 87.5%, 0.25)", [204, 244, 204, 64], +"hsl(150, 62.5%, 87.5%, 0.25)", [204, 244, 224, 64], +"hsl(180, 62.5%, 87.5%, 0.25)", [204, 244, 244, 64], +"hsl(210, 62.5%, 87.5%, 0.25)", [204, 224, 244, 64], +"hsl(240, 62.5%, 87.5%, 0.25)", [204, 204, 244, 64], +"hsl(270, 62.5%, 87.5%, 0.25)", [224, 204, 244, 64], +"hsl(300, 62.5%, 87.5%, 0.25)", [244, 204, 244, 64], +"hsl(330, 62.5%, 87.5%, 0.25)", [244, 204, 224, 64], +"hsl(0, 75%, 87.5%, 0.25)", [248, 200, 200, 64], +"hsl(30, 75%, 87.5%, 0.25)", [248, 224, 200, 64], +"hsl(60, 75%, 87.5%, 0.25)", [248, 248, 200, 64], +"hsl(90, 75%, 87.5%, 0.25)", [224, 248, 200, 64], +"hsl(120, 75%, 87.5%, 0.25)", [200, 248, 200, 64], +"hsl(150, 75%, 87.5%, 0.25)", [200, 248, 224, 64], +"hsl(180, 75%, 87.5%, 0.25)", [200, 248, 248, 64], +"hsl(210, 75%, 87.5%, 0.25)", [200, 224, 248, 64], +"hsl(240, 75%, 87.5%, 0.25)", [200, 200, 248, 64], +"hsl(270, 75%, 87.5%, 0.25)", [224, 200, 248, 64], +"hsl(300, 75%, 87.5%, 0.25)", [248, 200, 248, 64], +"hsl(330, 75%, 87.5%, 0.25)", [248, 200, 224, 64], +"hsl(0, 87.5%, 87.5%, 0.25)", [252, 196, 196, 64], +"hsl(30, 87.5%, 87.5%, 0.25)", [252, 224, 196, 64], +"hsl(60, 87.5%, 87.5%, 0.25)", [252, 252, 196, 64], +"hsl(90, 87.5%, 87.5%, 0.25)", [224, 252, 196, 64], +"hsl(120, 87.5%, 87.5%, 0.25)", [196, 252, 196, 64], +"hsl(150, 87.5%, 87.5%, 0.25)", [196, 252, 224, 64], +"hsl(180, 87.5%, 87.5%, 0.25)", [196, 252, 252, 64], +"hsl(210, 87.5%, 87.5%, 0.25)", [196, 224, 252, 64], +"hsl(240, 87.5%, 87.5%, 0.25)", [196, 196, 252, 64], +"hsl(270, 87.5%, 87.5%, 0.25)", [224, 196, 252, 64], +"hsl(300, 87.5%, 87.5%, 0.25)", [252, 196, 252, 64], +"hsl(330, 87.5%, 87.5%, 0.25)", [252, 196, 224, 64], +"hsl(0, 100%, 87.5%, 0.25)", [255, 192, 192, 64], +"hsl(30, 100%, 87.5%, 0.25)", [255, 224, 192, 64], +"hsl(60, 100%, 87.5%, 0.25)", [255, 255, 192, 64], +"hsl(90, 100%, 87.5%, 0.25)", [224, 255, 192, 64], +"hsl(120, 100%, 87.5%, 0.25)", [192, 255, 192, 64], +"hsl(150, 100%, 87.5%, 0.25)", [192, 255, 224, 64], +"hsl(180, 100%, 87.5%, 0.25)", [192, 255, 255, 64], +"hsl(210, 100%, 87.5%, 0.25)", [192, 224, 255, 64], +"hsl(240, 100%, 87.5%, 0.25)", [192, 192, 255, 64], +"hsl(270, 100%, 87.5%, 0.25)", [224, 192, 255, 64], +"hsl(300, 100%, 87.5%, 0.25)", [255, 192, 255, 64], +"hsl(330, 100%, 87.5%, 0.25)", [255, 192, 224, 64], +"hsl(0, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(30, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(60, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(90, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(120, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(150, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(180, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(210, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(240, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(270, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(300, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(330, 0%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(0, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(30, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(60, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(90, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(120, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(150, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(180, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(210, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(240, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(270, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(300, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(330, 12.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(0, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(30, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(60, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(90, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(120, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(150, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(180, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(210, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(240, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(270, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(300, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(330, 25%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(0, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(30, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(60, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(90, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(120, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(150, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(180, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(210, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(240, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(270, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(300, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(330, 37.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(0, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(30, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(60, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(90, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(120, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(150, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(180, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(210, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(240, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(270, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(300, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(330, 50%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(0, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(30, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(60, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(90, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(120, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(150, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(180, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(210, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(240, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(270, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(300, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(330, 62.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(0, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(30, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(60, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(90, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(120, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(150, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(180, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(210, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(240, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(270, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(300, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(330, 75%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(0, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(30, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(60, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(90, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(120, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(150, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(180, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(210, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(240, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(270, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(300, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(330, 87.5%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(0, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(30, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(60, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(90, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(120, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(150, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(180, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(210, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(240, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(270, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(300, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(330, 100%, 100%, 0.25)", [255, 255, 255, 64], +"hsl(0, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(30, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(60, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(90, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(120, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(150, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(180, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(210, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(240, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(270, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(300, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(330, 0%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(0, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(30, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(60, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(90, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(120, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(150, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(180, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(210, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(240, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(270, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(300, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(330, 12.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(0, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(30, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(60, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(90, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(120, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(150, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(180, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(210, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(240, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(270, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(300, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(330, 25%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(0, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(30, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(60, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(90, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(120, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(150, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(180, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(210, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(240, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(270, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(300, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(330, 37.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(0, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(30, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(60, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(90, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(120, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(150, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(180, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(210, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(240, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(270, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(300, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(330, 50%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(0, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(30, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(60, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(90, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(120, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(150, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(180, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(210, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(240, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(270, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(300, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(330, 62.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(0, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(30, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(60, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(90, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(120, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(150, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(180, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(210, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(240, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(270, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(300, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(330, 75%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(0, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(30, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(60, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(90, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(120, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(150, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(180, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(210, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(240, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(270, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(300, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(330, 87.5%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(0, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(30, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(60, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(90, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(120, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(150, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(180, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(210, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(240, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(270, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(300, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(330, 100%, 0%, 0.0)", [0, 0, 0, 0], +"hsl(0, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(30, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(60, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(90, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(120, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(150, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(180, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(210, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(240, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(270, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(300, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(330, 0%, 12.5%, 0.0)", [32, 32, 32, 0], +"hsl(0, 12.5%, 12.5%, 0.0)", [36, 28, 28, 0], +"hsl(30, 12.5%, 12.5%, 0.0)", [36, 32, 28, 0], +"hsl(60, 12.5%, 12.5%, 0.0)", [36, 36, 28, 0], +"hsl(90, 12.5%, 12.5%, 0.0)", [32, 36, 28, 0], +"hsl(120, 12.5%, 12.5%, 0.0)", [28, 36, 28, 0], +"hsl(150, 12.5%, 12.5%, 0.0)", [28, 36, 32, 0], +"hsl(180, 12.5%, 12.5%, 0.0)", [28, 36, 36, 0], +"hsl(210, 12.5%, 12.5%, 0.0)", [28, 32, 36, 0], +"hsl(240, 12.5%, 12.5%, 0.0)", [28, 28, 36, 0], +"hsl(270, 12.5%, 12.5%, 0.0)", [32, 28, 36, 0], +"hsl(300, 12.5%, 12.5%, 0.0)", [36, 28, 36, 0], +"hsl(330, 12.5%, 12.5%, 0.0)", [36, 28, 32, 0], +"hsl(0, 25%, 12.5%, 0.0)", [40, 24, 24, 0], +"hsl(30, 25%, 12.5%, 0.0)", [40, 32, 24, 0], +"hsl(60, 25%, 12.5%, 0.0)", [40, 40, 24, 0], +"hsl(90, 25%, 12.5%, 0.0)", [32, 40, 24, 0], +"hsl(120, 25%, 12.5%, 0.0)", [24, 40, 24, 0], +"hsl(150, 25%, 12.5%, 0.0)", [24, 40, 32, 0], +"hsl(180, 25%, 12.5%, 0.0)", [24, 40, 40, 0], +"hsl(210, 25%, 12.5%, 0.0)", [24, 32, 40, 0], +"hsl(240, 25%, 12.5%, 0.0)", [24, 24, 40, 0], +"hsl(270, 25%, 12.5%, 0.0)", [32, 24, 40, 0], +"hsl(300, 25%, 12.5%, 0.0)", [40, 24, 40, 0], +"hsl(330, 25%, 12.5%, 0.0)", [40, 24, 32, 0], +"hsl(0, 37.5%, 12.5%, 0.0)", [44, 20, 20, 0], +"hsl(30, 37.5%, 12.5%, 0.0)", [44, 32, 20, 0], +"hsl(60, 37.5%, 12.5%, 0.0)", [44, 44, 20, 0], +"hsl(90, 37.5%, 12.5%, 0.0)", [32, 44, 20, 0], +"hsl(120, 37.5%, 12.5%, 0.0)", [20, 44, 20, 0], +"hsl(150, 37.5%, 12.5%, 0.0)", [20, 44, 32, 0], +"hsl(180, 37.5%, 12.5%, 0.0)", [20, 44, 44, 0], +"hsl(210, 37.5%, 12.5%, 0.0)", [20, 32, 44, 0], +"hsl(240, 37.5%, 12.5%, 0.0)", [20, 20, 44, 0], +"hsl(270, 37.5%, 12.5%, 0.0)", [32, 20, 44, 0], +"hsl(300, 37.5%, 12.5%, 0.0)", [44, 20, 44, 0], +"hsl(330, 37.5%, 12.5%, 0.0)", [44, 20, 32, 0], +"hsl(0, 50%, 12.5%, 0.0)", [48, 16, 16, 0], +"hsl(30, 50%, 12.5%, 0.0)", [48, 32, 16, 0], +"hsl(60, 50%, 12.5%, 0.0)", [48, 48, 16, 0], +"hsl(90, 50%, 12.5%, 0.0)", [32, 48, 16, 0], +"hsl(120, 50%, 12.5%, 0.0)", [16, 48, 16, 0], +"hsl(150, 50%, 12.5%, 0.0)", [16, 48, 32, 0], +"hsl(180, 50%, 12.5%, 0.0)", [16, 48, 48, 0], +"hsl(210, 50%, 12.5%, 0.0)", [16, 32, 48, 0], +"hsl(240, 50%, 12.5%, 0.0)", [16, 16, 48, 0], +"hsl(270, 50%, 12.5%, 0.0)", [32, 16, 48, 0], +"hsl(300, 50%, 12.5%, 0.0)", [48, 16, 48, 0], +"hsl(330, 50%, 12.5%, 0.0)", [48, 16, 32, 0], +"hsl(0, 62.5%, 12.5%, 0.0)", [52, 12, 12, 0], +"hsl(30, 62.5%, 12.5%, 0.0)", [52, 32, 12, 0], +"hsl(60, 62.5%, 12.5%, 0.0)", [52, 52, 12, 0], +"hsl(90, 62.5%, 12.5%, 0.0)", [32, 52, 12, 0], +"hsl(120, 62.5%, 12.5%, 0.0)", [12, 52, 12, 0], +"hsl(150, 62.5%, 12.5%, 0.0)", [12, 52, 32, 0], +"hsl(180, 62.5%, 12.5%, 0.0)", [12, 52, 52, 0], +"hsl(210, 62.5%, 12.5%, 0.0)", [12, 32, 52, 0], +"hsl(240, 62.5%, 12.5%, 0.0)", [12, 12, 52, 0], +"hsl(270, 62.5%, 12.5%, 0.0)", [32, 12, 52, 0], +"hsl(300, 62.5%, 12.5%, 0.0)", [52, 12, 52, 0], +"hsl(330, 62.5%, 12.5%, 0.0)", [52, 12, 32, 0], +"hsl(0, 75%, 12.5%, 0.0)", [56, 8, 8, 0], +"hsl(30, 75%, 12.5%, 0.0)", [56, 32, 8, 0], +"hsl(60, 75%, 12.5%, 0.0)", [56, 56, 8, 0], +"hsl(90, 75%, 12.5%, 0.0)", [32, 56, 8, 0], +"hsl(120, 75%, 12.5%, 0.0)", [8, 56, 8, 0], +"hsl(150, 75%, 12.5%, 0.0)", [8, 56, 32, 0], +"hsl(180, 75%, 12.5%, 0.0)", [8, 56, 56, 0], +"hsl(210, 75%, 12.5%, 0.0)", [8, 32, 56, 0], +"hsl(240, 75%, 12.5%, 0.0)", [8, 8, 56, 0], +"hsl(270, 75%, 12.5%, 0.0)", [32, 8, 56, 0], +"hsl(300, 75%, 12.5%, 0.0)", [56, 8, 56, 0], +"hsl(330, 75%, 12.5%, 0.0)", [56, 8, 32, 0], +"hsl(0, 87.5%, 12.5%, 0.0)", [60, 4, 4, 0], +"hsl(30, 87.5%, 12.5%, 0.0)", [60, 32, 4, 0], +"hsl(60, 87.5%, 12.5%, 0.0)", [60, 60, 4, 0], +"hsl(90, 87.5%, 12.5%, 0.0)", [32, 60, 4, 0], +"hsl(120, 87.5%, 12.5%, 0.0)", [4, 60, 4, 0], +"hsl(150, 87.5%, 12.5%, 0.0)", [4, 60, 32, 0], +"hsl(180, 87.5%, 12.5%, 0.0)", [4, 60, 60, 0], +"hsl(210, 87.5%, 12.5%, 0.0)", [4, 32, 60, 0], +"hsl(240, 87.5%, 12.5%, 0.0)", [4, 4, 60, 0], +"hsl(270, 87.5%, 12.5%, 0.0)", [32, 4, 60, 0], +"hsl(300, 87.5%, 12.5%, 0.0)", [60, 4, 60, 0], +"hsl(330, 87.5%, 12.5%, 0.0)", [60, 4, 32, 0], +"hsl(0, 100%, 12.5%, 0.0)", [64, 0, 0, 0], +"hsl(30, 100%, 12.5%, 0.0)", [64, 32, 0, 0], +"hsl(60, 100%, 12.5%, 0.0)", [64, 64, 0, 0], +"hsl(90, 100%, 12.5%, 0.0)", [32, 64, 0, 0], +"hsl(120, 100%, 12.5%, 0.0)", [0, 64, 0, 0], +"hsl(150, 100%, 12.5%, 0.0)", [0, 64, 32, 0], +"hsl(180, 100%, 12.5%, 0.0)", [0, 64, 64, 0], +"hsl(210, 100%, 12.5%, 0.0)", [0, 32, 64, 0], +"hsl(240, 100%, 12.5%, 0.0)", [0, 0, 64, 0], +"hsl(270, 100%, 12.5%, 0.0)", [32, 0, 64, 0], +"hsl(300, 100%, 12.5%, 0.0)", [64, 0, 64, 0], +"hsl(330, 100%, 12.5%, 0.0)", [64, 0, 32, 0], +"hsl(0, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(30, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(60, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(90, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(120, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(150, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(180, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(210, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(240, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(270, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(300, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(330, 0%, 25%, 0.0)", [64, 64, 64, 0], +"hsl(0, 12.5%, 25%, 0.0)", [72, 56, 56, 0], +"hsl(30, 12.5%, 25%, 0.0)", [72, 64, 56, 0], +"hsl(60, 12.5%, 25%, 0.0)", [72, 72, 56, 0], +"hsl(90, 12.5%, 25%, 0.0)", [64, 72, 56, 0], +"hsl(120, 12.5%, 25%, 0.0)", [56, 72, 56, 0], +"hsl(150, 12.5%, 25%, 0.0)", [56, 72, 64, 0], +"hsl(180, 12.5%, 25%, 0.0)", [56, 72, 72, 0], +"hsl(210, 12.5%, 25%, 0.0)", [56, 64, 72, 0], +"hsl(240, 12.5%, 25%, 0.0)", [56, 56, 72, 0], +"hsl(270, 12.5%, 25%, 0.0)", [64, 56, 72, 0], +"hsl(300, 12.5%, 25%, 0.0)", [72, 56, 72, 0], +"hsl(330, 12.5%, 25%, 0.0)", [72, 56, 64, 0], +"hsl(0, 25%, 25%, 0.0)", [80, 48, 48, 0], +"hsl(30, 25%, 25%, 0.0)", [80, 64, 48, 0], +"hsl(60, 25%, 25%, 0.0)", [80, 80, 48, 0], +"hsl(90, 25%, 25%, 0.0)", [64, 80, 48, 0], +"hsl(120, 25%, 25%, 0.0)", [48, 80, 48, 0], +"hsl(150, 25%, 25%, 0.0)", [48, 80, 64, 0], +"hsl(180, 25%, 25%, 0.0)", [48, 80, 80, 0], +"hsl(210, 25%, 25%, 0.0)", [48, 64, 80, 0], +"hsl(240, 25%, 25%, 0.0)", [48, 48, 80, 0], +"hsl(270, 25%, 25%, 0.0)", [64, 48, 80, 0], +"hsl(300, 25%, 25%, 0.0)", [80, 48, 80, 0], +"hsl(330, 25%, 25%, 0.0)", [80, 48, 64, 0], +"hsl(0, 37.5%, 25%, 0.0)", [88, 40, 40, 0], +"hsl(30, 37.5%, 25%, 0.0)", [88, 64, 40, 0], +"hsl(60, 37.5%, 25%, 0.0)", [88, 88, 40, 0], +"hsl(90, 37.5%, 25%, 0.0)", [64, 88, 40, 0], +"hsl(120, 37.5%, 25%, 0.0)", [40, 88, 40, 0], +"hsl(150, 37.5%, 25%, 0.0)", [40, 88, 64, 0], +"hsl(180, 37.5%, 25%, 0.0)", [40, 88, 88, 0], +"hsl(210, 37.5%, 25%, 0.0)", [40, 64, 88, 0], +"hsl(240, 37.5%, 25%, 0.0)", [40, 40, 88, 0], +"hsl(270, 37.5%, 25%, 0.0)", [64, 40, 88, 0], +"hsl(300, 37.5%, 25%, 0.0)", [88, 40, 88, 0], +"hsl(330, 37.5%, 25%, 0.0)", [88, 40, 64, 0], +"hsl(0, 50%, 25%, 0.0)", [96, 32, 32, 0], +"hsl(30, 50%, 25%, 0.0)", [96, 64, 32, 0], +"hsl(60, 50%, 25%, 0.0)", [96, 96, 32, 0], +"hsl(90, 50%, 25%, 0.0)", [64, 96, 32, 0], +"hsl(120, 50%, 25%, 0.0)", [32, 96, 32, 0], +"hsl(150, 50%, 25%, 0.0)", [32, 96, 64, 0], +"hsl(180, 50%, 25%, 0.0)", [32, 96, 96, 0], +"hsl(210, 50%, 25%, 0.0)", [32, 64, 96, 0], +"hsl(240, 50%, 25%, 0.0)", [32, 32, 96, 0], +"hsl(270, 50%, 25%, 0.0)", [64, 32, 96, 0], +"hsl(300, 50%, 25%, 0.0)", [96, 32, 96, 0], +"hsl(330, 50%, 25%, 0.0)", [96, 32, 64, 0], +"hsl(0, 62.5%, 25%, 0.0)", [104, 24, 24, 0], +"hsl(30, 62.5%, 25%, 0.0)", [104, 64, 24, 0], +"hsl(60, 62.5%, 25%, 0.0)", [104, 104, 24, 0], +"hsl(90, 62.5%, 25%, 0.0)", [64, 104, 24, 0], +"hsl(120, 62.5%, 25%, 0.0)", [24, 104, 24, 0], +"hsl(150, 62.5%, 25%, 0.0)", [24, 104, 64, 0], +"hsl(180, 62.5%, 25%, 0.0)", [24, 104, 104, 0], +"hsl(210, 62.5%, 25%, 0.0)", [24, 64, 104, 0], +"hsl(240, 62.5%, 25%, 0.0)", [24, 24, 104, 0], +"hsl(270, 62.5%, 25%, 0.0)", [64, 24, 104, 0], +"hsl(300, 62.5%, 25%, 0.0)", [104, 24, 104, 0], +"hsl(330, 62.5%, 25%, 0.0)", [104, 24, 64, 0], +"hsl(0, 75%, 25%, 0.0)", [112, 16, 16, 0], +"hsl(30, 75%, 25%, 0.0)", [112, 64, 16, 0], +"hsl(60, 75%, 25%, 0.0)", [112, 112, 16, 0], +"hsl(90, 75%, 25%, 0.0)", [64, 112, 16, 0], +"hsl(120, 75%, 25%, 0.0)", [16, 112, 16, 0], +"hsl(150, 75%, 25%, 0.0)", [16, 112, 64, 0], +"hsl(180, 75%, 25%, 0.0)", [16, 112, 112, 0], +"hsl(210, 75%, 25%, 0.0)", [16, 64, 112, 0], +"hsl(240, 75%, 25%, 0.0)", [16, 16, 112, 0], +"hsl(270, 75%, 25%, 0.0)", [64, 16, 112, 0], +"hsl(300, 75%, 25%, 0.0)", [112, 16, 112, 0], +"hsl(330, 75%, 25%, 0.0)", [112, 16, 64, 0], +"hsl(0, 87.5%, 25%, 0.0)", [120, 8, 8, 0], +"hsl(30, 87.5%, 25%, 0.0)", [120, 64, 8, 0], +"hsl(60, 87.5%, 25%, 0.0)", [120, 120, 8, 0], +"hsl(90, 87.5%, 25%, 0.0)", [64, 120, 8, 0], +"hsl(120, 87.5%, 25%, 0.0)", [8, 120, 8, 0], +"hsl(150, 87.5%, 25%, 0.0)", [8, 120, 64, 0], +"hsl(180, 87.5%, 25%, 0.0)", [8, 120, 120, 0], +"hsl(210, 87.5%, 25%, 0.0)", [8, 64, 120, 0], +"hsl(240, 87.5%, 25%, 0.0)", [8, 8, 120, 0], +"hsl(270, 87.5%, 25%, 0.0)", [64, 8, 120, 0], +"hsl(300, 87.5%, 25%, 0.0)", [120, 8, 120, 0], +"hsl(330, 87.5%, 25%, 0.0)", [120, 8, 64, 0], +"hsl(0, 100%, 25%, 0.0)", [128, 0, 0, 0], +"hsl(30, 100%, 25%, 0.0)", [128, 64, 0, 0], +"hsl(60, 100%, 25%, 0.0)", [128, 128, 0, 0], +"hsl(90, 100%, 25%, 0.0)", [64, 128, 0, 0], +"hsl(120, 100%, 25%, 0.0)", [0, 128, 0, 0], +"hsl(150, 100%, 25%, 0.0)", [0, 128, 64, 0], +"hsl(180, 100%, 25%, 0.0)", [0, 128, 128, 0], +"hsl(210, 100%, 25%, 0.0)", [0, 64, 128, 0], +"hsl(240, 100%, 25%, 0.0)", [0, 0, 128, 0], +"hsl(270, 100%, 25%, 0.0)", [64, 0, 128, 0], +"hsl(300, 100%, 25%, 0.0)", [128, 0, 128, 0], +"hsl(330, 100%, 25%, 0.0)", [128, 0, 64, 0], +"hsl(0, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(30, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(60, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(90, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(120, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(150, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(180, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(210, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(240, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(270, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(300, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(330, 0%, 37.5%, 0.0)", [96, 96, 96, 0], +"hsl(0, 12.5%, 37.5%, 0.0)", [108, 84, 84, 0], +"hsl(30, 12.5%, 37.5%, 0.0)", [108, 96, 84, 0], +"hsl(60, 12.5%, 37.5%, 0.0)", [108, 108, 84, 0], +"hsl(90, 12.5%, 37.5%, 0.0)", [96, 108, 84, 0], +"hsl(120, 12.5%, 37.5%, 0.0)", [84, 108, 84, 0], +"hsl(150, 12.5%, 37.5%, 0.0)", [84, 108, 96, 0], +"hsl(180, 12.5%, 37.5%, 0.0)", [84, 108, 108, 0], +"hsl(210, 12.5%, 37.5%, 0.0)", [84, 96, 108, 0], +"hsl(240, 12.5%, 37.5%, 0.0)", [84, 84, 108, 0], +"hsl(270, 12.5%, 37.5%, 0.0)", [96, 84, 108, 0], +"hsl(300, 12.5%, 37.5%, 0.0)", [108, 84, 108, 0], +"hsl(330, 12.5%, 37.5%, 0.0)", [108, 84, 96, 0], +"hsl(0, 25%, 37.5%, 0.0)", [120, 72, 72, 0], +"hsl(30, 25%, 37.5%, 0.0)", [120, 96, 72, 0], +"hsl(60, 25%, 37.5%, 0.0)", [120, 120, 72, 0], +"hsl(90, 25%, 37.5%, 0.0)", [96, 120, 72, 0], +"hsl(120, 25%, 37.5%, 0.0)", [72, 120, 72, 0], +"hsl(150, 25%, 37.5%, 0.0)", [72, 120, 96, 0], +"hsl(180, 25%, 37.5%, 0.0)", [72, 120, 120, 0], +"hsl(210, 25%, 37.5%, 0.0)", [72, 96, 120, 0], +"hsl(240, 25%, 37.5%, 0.0)", [72, 72, 120, 0], +"hsl(270, 25%, 37.5%, 0.0)", [96, 72, 120, 0], +"hsl(300, 25%, 37.5%, 0.0)", [120, 72, 120, 0], +"hsl(330, 25%, 37.5%, 0.0)", [120, 72, 96, 0], +"hsl(0, 37.5%, 37.5%, 0.0)", [132, 60, 60, 0], +"hsl(30, 37.5%, 37.5%, 0.0)", [132, 96, 60, 0], +"hsl(60, 37.5%, 37.5%, 0.0)", [132, 132, 60, 0], +"hsl(90, 37.5%, 37.5%, 0.0)", [96, 132, 60, 0], +"hsl(120, 37.5%, 37.5%, 0.0)", [60, 132, 60, 0], +"hsl(150, 37.5%, 37.5%, 0.0)", [60, 132, 96, 0], +"hsl(180, 37.5%, 37.5%, 0.0)", [60, 132, 132, 0], +"hsl(210, 37.5%, 37.5%, 0.0)", [60, 96, 132, 0], +"hsl(240, 37.5%, 37.5%, 0.0)", [60, 60, 132, 0], +"hsl(270, 37.5%, 37.5%, 0.0)", [96, 60, 132, 0], +"hsl(300, 37.5%, 37.5%, 0.0)", [132, 60, 132, 0], +"hsl(330, 37.5%, 37.5%, 0.0)", [132, 60, 96, 0], +"hsl(0, 50%, 37.5%, 0.0)", [144, 48, 48, 0], +"hsl(30, 50%, 37.5%, 0.0)", [144, 96, 48, 0], +"hsl(60, 50%, 37.5%, 0.0)", [144, 144, 48, 0], +"hsl(90, 50%, 37.5%, 0.0)", [96, 144, 48, 0], +"hsl(120, 50%, 37.5%, 0.0)", [48, 144, 48, 0], +"hsl(150, 50%, 37.5%, 0.0)", [48, 144, 96, 0], +"hsl(180, 50%, 37.5%, 0.0)", [48, 144, 144, 0], +"hsl(210, 50%, 37.5%, 0.0)", [48, 96, 144, 0], +"hsl(240, 50%, 37.5%, 0.0)", [48, 48, 144, 0], +"hsl(270, 50%, 37.5%, 0.0)", [96, 48, 144, 0], +"hsl(300, 50%, 37.5%, 0.0)", [144, 48, 144, 0], +"hsl(330, 50%, 37.5%, 0.0)", [144, 48, 96, 0], +"hsl(0, 62.5%, 37.5%, 0.0)", [156, 36, 36, 0], +"hsl(30, 62.5%, 37.5%, 0.0)", [156, 96, 36, 0], +"hsl(60, 62.5%, 37.5%, 0.0)", [156, 156, 36, 0], +"hsl(90, 62.5%, 37.5%, 0.0)", [96, 156, 36, 0], +"hsl(120, 62.5%, 37.5%, 0.0)", [36, 156, 36, 0], +"hsl(150, 62.5%, 37.5%, 0.0)", [36, 156, 96, 0], +"hsl(180, 62.5%, 37.5%, 0.0)", [36, 156, 156, 0], +"hsl(210, 62.5%, 37.5%, 0.0)", [36, 96, 156, 0], +"hsl(240, 62.5%, 37.5%, 0.0)", [36, 36, 156, 0], +"hsl(270, 62.5%, 37.5%, 0.0)", [96, 36, 156, 0], +"hsl(300, 62.5%, 37.5%, 0.0)", [156, 36, 156, 0], +"hsl(330, 62.5%, 37.5%, 0.0)", [156, 36, 96, 0], +"hsl(0, 75%, 37.5%, 0.0)", [168, 24, 24, 0], +"hsl(30, 75%, 37.5%, 0.0)", [168, 96, 24, 0], +"hsl(60, 75%, 37.5%, 0.0)", [168, 168, 24, 0], +"hsl(90, 75%, 37.5%, 0.0)", [96, 168, 24, 0], +"hsl(120, 75%, 37.5%, 0.0)", [24, 168, 24, 0], +"hsl(150, 75%, 37.5%, 0.0)", [24, 168, 96, 0], +"hsl(180, 75%, 37.5%, 0.0)", [24, 168, 168, 0], +"hsl(210, 75%, 37.5%, 0.0)", [24, 96, 168, 0], +"hsl(240, 75%, 37.5%, 0.0)", [24, 24, 168, 0], +"hsl(270, 75%, 37.5%, 0.0)", [96, 24, 168, 0], +"hsl(300, 75%, 37.5%, 0.0)", [168, 24, 168, 0], +"hsl(330, 75%, 37.5%, 0.0)", [168, 24, 96, 0], +"hsl(0, 87.5%, 37.5%, 0.0)", [180, 12, 12, 0], +"hsl(30, 87.5%, 37.5%, 0.0)", [180, 96, 12, 0], +"hsl(60, 87.5%, 37.5%, 0.0)", [180, 180, 12, 0], +"hsl(90, 87.5%, 37.5%, 0.0)", [96, 180, 12, 0], +"hsl(120, 87.5%, 37.5%, 0.0)", [12, 180, 12, 0], +"hsl(150, 87.5%, 37.5%, 0.0)", [12, 180, 96, 0], +"hsl(180, 87.5%, 37.5%, 0.0)", [12, 180, 180, 0], +"hsl(210, 87.5%, 37.5%, 0.0)", [12, 96, 180, 0], +"hsl(240, 87.5%, 37.5%, 0.0)", [12, 12, 180, 0], +"hsl(270, 87.5%, 37.5%, 0.0)", [96, 12, 180, 0], +"hsl(300, 87.5%, 37.5%, 0.0)", [180, 12, 180, 0], +"hsl(330, 87.5%, 37.5%, 0.0)", [180, 12, 96, 0], +"hsl(0, 100%, 37.5%, 0.0)", [192, 0, 0, 0], +"hsl(30, 100%, 37.5%, 0.0)", [192, 96, 0, 0], +"hsl(60, 100%, 37.5%, 0.0)", [192, 192, 0, 0], +"hsl(90, 100%, 37.5%, 0.0)", [96, 192, 0, 0], +"hsl(120, 100%, 37.5%, 0.0)", [0, 192, 0, 0], +"hsl(150, 100%, 37.5%, 0.0)", [0, 192, 96, 0], +"hsl(180, 100%, 37.5%, 0.0)", [0, 192, 192, 0], +"hsl(210, 100%, 37.5%, 0.0)", [0, 96, 192, 0], +"hsl(240, 100%, 37.5%, 0.0)", [0, 0, 192, 0], +"hsl(270, 100%, 37.5%, 0.0)", [96, 0, 192, 0], +"hsl(300, 100%, 37.5%, 0.0)", [192, 0, 192, 0], +"hsl(330, 100%, 37.5%, 0.0)", [192, 0, 96, 0], +"hsl(0, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(30, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(60, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(90, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(120, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(150, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(180, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(210, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(240, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(270, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(300, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(330, 0%, 50%, 0.0)", [128, 128, 128, 0], +"hsl(0, 12.5%, 50%, 0.0)", [144, 112, 112, 0], +"hsl(30, 12.5%, 50%, 0.0)", [144, 128, 112, 0], +"hsl(60, 12.5%, 50%, 0.0)", [144, 144, 112, 0], +"hsl(90, 12.5%, 50%, 0.0)", [128, 144, 112, 0], +"hsl(120, 12.5%, 50%, 0.0)", [112, 144, 112, 0], +"hsl(150, 12.5%, 50%, 0.0)", [112, 144, 128, 0], +"hsl(180, 12.5%, 50%, 0.0)", [112, 144, 144, 0], +"hsl(210, 12.5%, 50%, 0.0)", [112, 128, 144, 0], +"hsl(240, 12.5%, 50%, 0.0)", [112, 112, 144, 0], +"hsl(270, 12.5%, 50%, 0.0)", [128, 112, 144, 0], +"hsl(300, 12.5%, 50%, 0.0)", [144, 112, 144, 0], +"hsl(330, 12.5%, 50%, 0.0)", [144, 112, 128, 0], +"hsl(0, 25%, 50%, 0.0)", [160, 96, 96, 0], +"hsl(30, 25%, 50%, 0.0)", [160, 128, 96, 0], +"hsl(60, 25%, 50%, 0.0)", [160, 160, 96, 0], +"hsl(90, 25%, 50%, 0.0)", [128, 160, 96, 0], +"hsl(120, 25%, 50%, 0.0)", [96, 160, 96, 0], +"hsl(150, 25%, 50%, 0.0)", [96, 160, 128, 0], +"hsl(180, 25%, 50%, 0.0)", [96, 160, 160, 0], +"hsl(210, 25%, 50%, 0.0)", [96, 128, 160, 0], +"hsl(240, 25%, 50%, 0.0)", [96, 96, 160, 0], +"hsl(270, 25%, 50%, 0.0)", [128, 96, 160, 0], +"hsl(300, 25%, 50%, 0.0)", [160, 96, 160, 0], +"hsl(330, 25%, 50%, 0.0)", [160, 96, 128, 0], +"hsl(0, 37.5%, 50%, 0.0)", [176, 80, 80, 0], +"hsl(30, 37.5%, 50%, 0.0)", [176, 128, 80, 0], +"hsl(60, 37.5%, 50%, 0.0)", [176, 176, 80, 0], +"hsl(90, 37.5%, 50%, 0.0)", [128, 176, 80, 0], +"hsl(120, 37.5%, 50%, 0.0)", [80, 176, 80, 0], +"hsl(150, 37.5%, 50%, 0.0)", [80, 176, 128, 0], +"hsl(180, 37.5%, 50%, 0.0)", [80, 176, 176, 0], +"hsl(210, 37.5%, 50%, 0.0)", [80, 128, 176, 0], +"hsl(240, 37.5%, 50%, 0.0)", [80, 80, 176, 0], +"hsl(270, 37.5%, 50%, 0.0)", [128, 80, 176, 0], +"hsl(300, 37.5%, 50%, 0.0)", [176, 80, 176, 0], +"hsl(330, 37.5%, 50%, 0.0)", [176, 80, 128, 0], +"hsl(0, 50%, 50%, 0.0)", [192, 64, 64, 0], +"hsl(30, 50%, 50%, 0.0)", [192, 128, 64, 0], +"hsl(60, 50%, 50%, 0.0)", [192, 192, 64, 0], +"hsl(90, 50%, 50%, 0.0)", [128, 192, 64, 0], +"hsl(120, 50%, 50%, 0.0)", [64, 192, 64, 0], +"hsl(150, 50%, 50%, 0.0)", [64, 192, 128, 0], +"hsl(180, 50%, 50%, 0.0)", [64, 192, 192, 0], +"hsl(210, 50%, 50%, 0.0)", [64, 128, 192, 0], +"hsl(240, 50%, 50%, 0.0)", [64, 64, 192, 0], +"hsl(270, 50%, 50%, 0.0)", [128, 64, 192, 0], +"hsl(300, 50%, 50%, 0.0)", [192, 64, 192, 0], +"hsl(330, 50%, 50%, 0.0)", [192, 64, 128, 0], +"hsl(0, 62.5%, 50%, 0.0)", [208, 48, 48, 0], +"hsl(30, 62.5%, 50%, 0.0)", [208, 128, 48, 0], +"hsl(60, 62.5%, 50%, 0.0)", [208, 208, 48, 0], +"hsl(90, 62.5%, 50%, 0.0)", [128, 208, 48, 0], +"hsl(120, 62.5%, 50%, 0.0)", [48, 208, 48, 0], +"hsl(150, 62.5%, 50%, 0.0)", [48, 208, 128, 0], +"hsl(180, 62.5%, 50%, 0.0)", [48, 208, 208, 0], +"hsl(210, 62.5%, 50%, 0.0)", [48, 128, 208, 0], +"hsl(240, 62.5%, 50%, 0.0)", [48, 48, 208, 0], +"hsl(270, 62.5%, 50%, 0.0)", [128, 48, 208, 0], +"hsl(300, 62.5%, 50%, 0.0)", [208, 48, 208, 0], +"hsl(330, 62.5%, 50%, 0.0)", [208, 48, 128, 0], +"hsl(0, 75%, 50%, 0.0)", [224, 32, 32, 0], +"hsl(30, 75%, 50%, 0.0)", [224, 128, 32, 0], +"hsl(60, 75%, 50%, 0.0)", [224, 224, 32, 0], +"hsl(90, 75%, 50%, 0.0)", [128, 224, 32, 0], +"hsl(120, 75%, 50%, 0.0)", [32, 224, 32, 0], +"hsl(150, 75%, 50%, 0.0)", [32, 224, 128, 0], +"hsl(180, 75%, 50%, 0.0)", [32, 224, 224, 0], +"hsl(210, 75%, 50%, 0.0)", [32, 128, 224, 0], +"hsl(240, 75%, 50%, 0.0)", [32, 32, 224, 0], +"hsl(270, 75%, 50%, 0.0)", [128, 32, 224, 0], +"hsl(300, 75%, 50%, 0.0)", [224, 32, 224, 0], +"hsl(330, 75%, 50%, 0.0)", [224, 32, 128, 0], +"hsl(0, 87.5%, 50%, 0.0)", [240, 16, 16, 0], +"hsl(30, 87.5%, 50%, 0.0)", [240, 128, 16, 0], +"hsl(60, 87.5%, 50%, 0.0)", [240, 240, 16, 0], +"hsl(90, 87.5%, 50%, 0.0)", [128, 240, 16, 0], +"hsl(120, 87.5%, 50%, 0.0)", [16, 240, 16, 0], +"hsl(150, 87.5%, 50%, 0.0)", [16, 240, 128, 0], +"hsl(180, 87.5%, 50%, 0.0)", [16, 240, 240, 0], +"hsl(210, 87.5%, 50%, 0.0)", [16, 128, 240, 0], +"hsl(240, 87.5%, 50%, 0.0)", [16, 16, 240, 0], +"hsl(270, 87.5%, 50%, 0.0)", [128, 16, 240, 0], +"hsl(300, 87.5%, 50%, 0.0)", [240, 16, 240, 0], +"hsl(330, 87.5%, 50%, 0.0)", [240, 16, 128, 0], +"hsl(0, 100%, 50%, 0.0)", [255, 0, 0, 0], +"hsl(30, 100%, 50%, 0.0)", [255, 128, 0, 0], +"hsl(60, 100%, 50%, 0.0)", [255, 255, 0, 0], +"hsl(90, 100%, 50%, 0.0)", [128, 255, 0, 0], +"hsl(120, 100%, 50%, 0.0)", [0, 255, 0, 0], +"hsl(150, 100%, 50%, 0.0)", [0, 255, 128, 0], +"hsl(180, 100%, 50%, 0.0)", [0, 255, 255, 0], +"hsl(210, 100%, 50%, 0.0)", [0, 128, 255, 0], +"hsl(240, 100%, 50%, 0.0)", [0, 0, 255, 0], +"hsl(270, 100%, 50%, 0.0)", [128, 0, 255, 0], +"hsl(300, 100%, 50%, 0.0)", [255, 0, 255, 0], +"hsl(330, 100%, 50%, 0.0)", [255, 0, 128, 0], +"hsl(0, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(30, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(60, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(90, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(120, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(150, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(180, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(210, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(240, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(270, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(300, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(330, 0%, 62.5%, 0.0)", [160, 160, 160, 0], +"hsl(0, 12.5%, 62.5%, 0.0)", [172, 148, 148, 0], +"hsl(30, 12.5%, 62.5%, 0.0)", [172, 160, 148, 0], +"hsl(60, 12.5%, 62.5%, 0.0)", [172, 172, 148, 0], +"hsl(90, 12.5%, 62.5%, 0.0)", [160, 172, 148, 0], +"hsl(120, 12.5%, 62.5%, 0.0)", [148, 172, 148, 0], +"hsl(150, 12.5%, 62.5%, 0.0)", [148, 172, 160, 0], +"hsl(180, 12.5%, 62.5%, 0.0)", [148, 172, 172, 0], +"hsl(210, 12.5%, 62.5%, 0.0)", [148, 160, 172, 0], +"hsl(240, 12.5%, 62.5%, 0.0)", [148, 148, 172, 0], +"hsl(270, 12.5%, 62.5%, 0.0)", [160, 148, 172, 0], +"hsl(300, 12.5%, 62.5%, 0.0)", [172, 148, 172, 0], +"hsl(330, 12.5%, 62.5%, 0.0)", [172, 148, 160, 0], +"hsl(0, 25%, 62.5%, 0.0)", [184, 136, 136, 0], +"hsl(30, 25%, 62.5%, 0.0)", [184, 160, 136, 0], +"hsl(60, 25%, 62.5%, 0.0)", [184, 184, 136, 0], +"hsl(90, 25%, 62.5%, 0.0)", [160, 184, 136, 0], +"hsl(120, 25%, 62.5%, 0.0)", [136, 184, 136, 0], +"hsl(150, 25%, 62.5%, 0.0)", [136, 184, 160, 0], +"hsl(180, 25%, 62.5%, 0.0)", [136, 184, 184, 0], +"hsl(210, 25%, 62.5%, 0.0)", [136, 160, 184, 0], +"hsl(240, 25%, 62.5%, 0.0)", [136, 136, 184, 0], +"hsl(270, 25%, 62.5%, 0.0)", [160, 136, 184, 0], +"hsl(300, 25%, 62.5%, 0.0)", [184, 136, 184, 0], +"hsl(330, 25%, 62.5%, 0.0)", [184, 136, 160, 0], +"hsl(0, 37.5%, 62.5%, 0.0)", [196, 124, 124, 0], +"hsl(30, 37.5%, 62.5%, 0.0)", [196, 160, 124, 0], +"hsl(60, 37.5%, 62.5%, 0.0)", [196, 196, 124, 0], +"hsl(90, 37.5%, 62.5%, 0.0)", [160, 196, 124, 0], +"hsl(120, 37.5%, 62.5%, 0.0)", [124, 196, 124, 0], +"hsl(150, 37.5%, 62.5%, 0.0)", [124, 196, 160, 0], +"hsl(180, 37.5%, 62.5%, 0.0)", [124, 196, 196, 0], +"hsl(210, 37.5%, 62.5%, 0.0)", [124, 160, 196, 0], +"hsl(240, 37.5%, 62.5%, 0.0)", [124, 124, 196, 0], +"hsl(270, 37.5%, 62.5%, 0.0)", [160, 124, 196, 0], +"hsl(300, 37.5%, 62.5%, 0.0)", [196, 124, 196, 0], +"hsl(330, 37.5%, 62.5%, 0.0)", [196, 124, 160, 0], +"hsl(0, 50%, 62.5%, 0.0)", [208, 112, 112, 0], +"hsl(30, 50%, 62.5%, 0.0)", [208, 160, 112, 0], +"hsl(60, 50%, 62.5%, 0.0)", [208, 208, 112, 0], +"hsl(90, 50%, 62.5%, 0.0)", [160, 208, 112, 0], +"hsl(120, 50%, 62.5%, 0.0)", [112, 208, 112, 0], +"hsl(150, 50%, 62.5%, 0.0)", [112, 208, 160, 0], +"hsl(180, 50%, 62.5%, 0.0)", [112, 208, 208, 0], +"hsl(210, 50%, 62.5%, 0.0)", [112, 160, 208, 0], +"hsl(240, 50%, 62.5%, 0.0)", [112, 112, 208, 0], +"hsl(270, 50%, 62.5%, 0.0)", [160, 112, 208, 0], +"hsl(300, 50%, 62.5%, 0.0)", [208, 112, 208, 0], +"hsl(330, 50%, 62.5%, 0.0)", [208, 112, 160, 0], +"hsl(0, 62.5%, 62.5%, 0.0)", [220, 100, 100, 0], +"hsl(30, 62.5%, 62.5%, 0.0)", [220, 160, 100, 0], +"hsl(60, 62.5%, 62.5%, 0.0)", [220, 220, 100, 0], +"hsl(90, 62.5%, 62.5%, 0.0)", [160, 220, 100, 0], +"hsl(120, 62.5%, 62.5%, 0.0)", [100, 220, 100, 0], +"hsl(150, 62.5%, 62.5%, 0.0)", [100, 220, 160, 0], +"hsl(180, 62.5%, 62.5%, 0.0)", [100, 220, 220, 0], +"hsl(210, 62.5%, 62.5%, 0.0)", [100, 160, 220, 0], +"hsl(240, 62.5%, 62.5%, 0.0)", [100, 100, 220, 0], +"hsl(270, 62.5%, 62.5%, 0.0)", [160, 100, 220, 0], +"hsl(300, 62.5%, 62.5%, 0.0)", [220, 100, 220, 0], +"hsl(330, 62.5%, 62.5%, 0.0)", [220, 100, 160, 0], +"hsl(0, 75%, 62.5%, 0.0)", [232, 88, 88, 0], +"hsl(30, 75%, 62.5%, 0.0)", [232, 160, 88, 0], +"hsl(60, 75%, 62.5%, 0.0)", [232, 232, 88, 0], +"hsl(90, 75%, 62.5%, 0.0)", [160, 232, 88, 0], +"hsl(120, 75%, 62.5%, 0.0)", [88, 232, 88, 0], +"hsl(150, 75%, 62.5%, 0.0)", [88, 232, 160, 0], +"hsl(180, 75%, 62.5%, 0.0)", [88, 232, 232, 0], +"hsl(210, 75%, 62.5%, 0.0)", [88, 160, 232, 0], +"hsl(240, 75%, 62.5%, 0.0)", [88, 88, 232, 0], +"hsl(270, 75%, 62.5%, 0.0)", [160, 88, 232, 0], +"hsl(300, 75%, 62.5%, 0.0)", [232, 88, 232, 0], +"hsl(330, 75%, 62.5%, 0.0)", [232, 88, 160, 0], +"hsl(0, 87.5%, 62.5%, 0.0)", [244, 76, 76, 0], +"hsl(30, 87.5%, 62.5%, 0.0)", [244, 160, 76, 0], +"hsl(60, 87.5%, 62.5%, 0.0)", [244, 244, 76, 0], +"hsl(90, 87.5%, 62.5%, 0.0)", [160, 244, 76, 0], +"hsl(120, 87.5%, 62.5%, 0.0)", [76, 244, 76, 0], +"hsl(150, 87.5%, 62.5%, 0.0)", [76, 244, 160, 0], +"hsl(180, 87.5%, 62.5%, 0.0)", [76, 244, 244, 0], +"hsl(210, 87.5%, 62.5%, 0.0)", [76, 160, 244, 0], +"hsl(240, 87.5%, 62.5%, 0.0)", [76, 76, 244, 0], +"hsl(270, 87.5%, 62.5%, 0.0)", [160, 76, 244, 0], +"hsl(300, 87.5%, 62.5%, 0.0)", [244, 76, 244, 0], +"hsl(330, 87.5%, 62.5%, 0.0)", [244, 76, 160, 0], +"hsl(0, 100%, 62.5%, 0.0)", [255, 64, 64, 0], +"hsl(30, 100%, 62.5%, 0.0)", [255, 160, 64, 0], +"hsl(60, 100%, 62.5%, 0.0)", [255, 255, 64, 0], +"hsl(90, 100%, 62.5%, 0.0)", [160, 255, 64, 0], +"hsl(120, 100%, 62.5%, 0.0)", [64, 255, 64, 0], +"hsl(150, 100%, 62.5%, 0.0)", [64, 255, 160, 0], +"hsl(180, 100%, 62.5%, 0.0)", [64, 255, 255, 0], +"hsl(210, 100%, 62.5%, 0.0)", [64, 160, 255, 0], +"hsl(240, 100%, 62.5%, 0.0)", [64, 64, 255, 0], +"hsl(270, 100%, 62.5%, 0.0)", [160, 64, 255, 0], +"hsl(300, 100%, 62.5%, 0.0)", [255, 64, 255, 0], +"hsl(330, 100%, 62.5%, 0.0)", [255, 64, 160, 0], +"hsl(0, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(30, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(60, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(90, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(120, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(150, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(180, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(210, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(240, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(270, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(300, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(330, 0%, 75%, 0.0)", [192, 192, 192, 0], +"hsl(0, 12.5%, 75%, 0.0)", [200, 184, 184, 0], +"hsl(30, 12.5%, 75%, 0.0)", [200, 192, 184, 0], +"hsl(60, 12.5%, 75%, 0.0)", [200, 200, 184, 0], +"hsl(90, 12.5%, 75%, 0.0)", [192, 200, 184, 0], +"hsl(120, 12.5%, 75%, 0.0)", [184, 200, 184, 0], +"hsl(150, 12.5%, 75%, 0.0)", [184, 200, 192, 0], +"hsl(180, 12.5%, 75%, 0.0)", [184, 200, 200, 0], +"hsl(210, 12.5%, 75%, 0.0)", [184, 192, 200, 0], +"hsl(240, 12.5%, 75%, 0.0)", [184, 184, 200, 0], +"hsl(270, 12.5%, 75%, 0.0)", [192, 184, 200, 0], +"hsl(300, 12.5%, 75%, 0.0)", [200, 184, 200, 0], +"hsl(330, 12.5%, 75%, 0.0)", [200, 184, 192, 0], +"hsl(0, 25%, 75%, 0.0)", [208, 176, 176, 0], +"hsl(30, 25%, 75%, 0.0)", [208, 192, 176, 0], +"hsl(60, 25%, 75%, 0.0)", [208, 208, 176, 0], +"hsl(90, 25%, 75%, 0.0)", [192, 208, 176, 0], +"hsl(120, 25%, 75%, 0.0)", [176, 208, 176, 0], +"hsl(150, 25%, 75%, 0.0)", [176, 208, 192, 0], +"hsl(180, 25%, 75%, 0.0)", [176, 208, 208, 0], +"hsl(210, 25%, 75%, 0.0)", [176, 192, 208, 0], +"hsl(240, 25%, 75%, 0.0)", [176, 176, 208, 0], +"hsl(270, 25%, 75%, 0.0)", [192, 176, 208, 0], +"hsl(300, 25%, 75%, 0.0)", [208, 176, 208, 0], +"hsl(330, 25%, 75%, 0.0)", [208, 176, 192, 0], +"hsl(0, 37.5%, 75%, 0.0)", [216, 168, 168, 0], +"hsl(30, 37.5%, 75%, 0.0)", [216, 192, 168, 0], +"hsl(60, 37.5%, 75%, 0.0)", [216, 216, 168, 0], +"hsl(90, 37.5%, 75%, 0.0)", [192, 216, 168, 0], +"hsl(120, 37.5%, 75%, 0.0)", [168, 216, 168, 0], +"hsl(150, 37.5%, 75%, 0.0)", [168, 216, 192, 0], +"hsl(180, 37.5%, 75%, 0.0)", [168, 216, 216, 0], +"hsl(210, 37.5%, 75%, 0.0)", [168, 192, 216, 0], +"hsl(240, 37.5%, 75%, 0.0)", [168, 168, 216, 0], +"hsl(270, 37.5%, 75%, 0.0)", [192, 168, 216, 0], +"hsl(300, 37.5%, 75%, 0.0)", [216, 168, 216, 0], +"hsl(330, 37.5%, 75%, 0.0)", [216, 168, 192, 0], +"hsl(0, 50%, 75%, 0.0)", [224, 160, 160, 0], +"hsl(30, 50%, 75%, 0.0)", [224, 192, 160, 0], +"hsl(60, 50%, 75%, 0.0)", [224, 224, 160, 0], +"hsl(90, 50%, 75%, 0.0)", [192, 224, 160, 0], +"hsl(120, 50%, 75%, 0.0)", [160, 224, 160, 0], +"hsl(150, 50%, 75%, 0.0)", [160, 224, 192, 0], +"hsl(180, 50%, 75%, 0.0)", [160, 224, 224, 0], +"hsl(210, 50%, 75%, 0.0)", [160, 192, 224, 0], +"hsl(240, 50%, 75%, 0.0)", [160, 160, 224, 0], +"hsl(270, 50%, 75%, 0.0)", [192, 160, 224, 0], +"hsl(300, 50%, 75%, 0.0)", [224, 160, 224, 0], +"hsl(330, 50%, 75%, 0.0)", [224, 160, 192, 0], +"hsl(0, 62.5%, 75%, 0.0)", [232, 152, 152, 0], +"hsl(30, 62.5%, 75%, 0.0)", [232, 192, 152, 0], +"hsl(60, 62.5%, 75%, 0.0)", [232, 232, 152, 0], +"hsl(90, 62.5%, 75%, 0.0)", [192, 232, 152, 0], +"hsl(120, 62.5%, 75%, 0.0)", [152, 232, 152, 0], +"hsl(150, 62.5%, 75%, 0.0)", [152, 232, 192, 0], +"hsl(180, 62.5%, 75%, 0.0)", [152, 232, 232, 0], +"hsl(210, 62.5%, 75%, 0.0)", [152, 192, 232, 0], +"hsl(240, 62.5%, 75%, 0.0)", [152, 152, 232, 0], +"hsl(270, 62.5%, 75%, 0.0)", [192, 152, 232, 0], +"hsl(300, 62.5%, 75%, 0.0)", [232, 152, 232, 0], +"hsl(330, 62.5%, 75%, 0.0)", [232, 152, 192, 0], +"hsl(0, 75%, 75%, 0.0)", [240, 144, 144, 0], +"hsl(30, 75%, 75%, 0.0)", [240, 192, 144, 0], +"hsl(60, 75%, 75%, 0.0)", [240, 240, 144, 0], +"hsl(90, 75%, 75%, 0.0)", [192, 240, 144, 0], +"hsl(120, 75%, 75%, 0.0)", [144, 240, 144, 0], +"hsl(150, 75%, 75%, 0.0)", [144, 240, 192, 0], +"hsl(180, 75%, 75%, 0.0)", [144, 240, 240, 0], +"hsl(210, 75%, 75%, 0.0)", [144, 192, 240, 0], +"hsl(240, 75%, 75%, 0.0)", [144, 144, 240, 0], +"hsl(270, 75%, 75%, 0.0)", [192, 144, 240, 0], +"hsl(300, 75%, 75%, 0.0)", [240, 144, 240, 0], +"hsl(330, 75%, 75%, 0.0)", [240, 144, 192, 0], +"hsl(0, 87.5%, 75%, 0.0)", [248, 136, 136, 0], +"hsl(30, 87.5%, 75%, 0.0)", [248, 192, 136, 0], +"hsl(60, 87.5%, 75%, 0.0)", [248, 248, 136, 0], +"hsl(90, 87.5%, 75%, 0.0)", [192, 248, 136, 0], +"hsl(120, 87.5%, 75%, 0.0)", [136, 248, 136, 0], +"hsl(150, 87.5%, 75%, 0.0)", [136, 248, 192, 0], +"hsl(180, 87.5%, 75%, 0.0)", [136, 248, 248, 0], +"hsl(210, 87.5%, 75%, 0.0)", [136, 192, 248, 0], +"hsl(240, 87.5%, 75%, 0.0)", [136, 136, 248, 0], +"hsl(270, 87.5%, 75%, 0.0)", [192, 136, 248, 0], +"hsl(300, 87.5%, 75%, 0.0)", [248, 136, 248, 0], +"hsl(330, 87.5%, 75%, 0.0)", [248, 136, 192, 0], +"hsl(0, 100%, 75%, 0.0)", [255, 128, 128, 0], +"hsl(30, 100%, 75%, 0.0)", [255, 192, 128, 0], +"hsl(60, 100%, 75%, 0.0)", [255, 255, 128, 0], +"hsl(90, 100%, 75%, 0.0)", [192, 255, 128, 0], +"hsl(120, 100%, 75%, 0.0)", [128, 255, 128, 0], +"hsl(150, 100%, 75%, 0.0)", [128, 255, 192, 0], +"hsl(180, 100%, 75%, 0.0)", [128, 255, 255, 0], +"hsl(210, 100%, 75%, 0.0)", [128, 192, 255, 0], +"hsl(240, 100%, 75%, 0.0)", [128, 128, 255, 0], +"hsl(270, 100%, 75%, 0.0)", [192, 128, 255, 0], +"hsl(300, 100%, 75%, 0.0)", [255, 128, 255, 0], +"hsl(330, 100%, 75%, 0.0)", [255, 128, 192, 0], +"hsl(0, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(30, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(60, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(90, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(120, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(150, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(180, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(210, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(240, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(270, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(300, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(330, 0%, 87.5%, 0.0)", [224, 224, 224, 0], +"hsl(0, 12.5%, 87.5%, 0.0)", [228, 220, 220, 0], +"hsl(30, 12.5%, 87.5%, 0.0)", [228, 224, 220, 0], +"hsl(60, 12.5%, 87.5%, 0.0)", [228, 228, 220, 0], +"hsl(90, 12.5%, 87.5%, 0.0)", [224, 228, 220, 0], +"hsl(120, 12.5%, 87.5%, 0.0)", [220, 228, 220, 0], +"hsl(150, 12.5%, 87.5%, 0.0)", [220, 228, 224, 0], +"hsl(180, 12.5%, 87.5%, 0.0)", [220, 228, 228, 0], +"hsl(210, 12.5%, 87.5%, 0.0)", [220, 224, 228, 0], +"hsl(240, 12.5%, 87.5%, 0.0)", [220, 220, 228, 0], +"hsl(270, 12.5%, 87.5%, 0.0)", [224, 220, 228, 0], +"hsl(300, 12.5%, 87.5%, 0.0)", [228, 220, 228, 0], +"hsl(330, 12.5%, 87.5%, 0.0)", [228, 220, 224, 0], +"hsl(0, 25%, 87.5%, 0.0)", [232, 216, 216, 0], +"hsl(30, 25%, 87.5%, 0.0)", [232, 224, 216, 0], +"hsl(60, 25%, 87.5%, 0.0)", [232, 232, 216, 0], +"hsl(90, 25%, 87.5%, 0.0)", [224, 232, 216, 0], +"hsl(120, 25%, 87.5%, 0.0)", [216, 232, 216, 0], +"hsl(150, 25%, 87.5%, 0.0)", [216, 232, 224, 0], +"hsl(180, 25%, 87.5%, 0.0)", [216, 232, 232, 0], +"hsl(210, 25%, 87.5%, 0.0)", [216, 224, 232, 0], +"hsl(240, 25%, 87.5%, 0.0)", [216, 216, 232, 0], +"hsl(270, 25%, 87.5%, 0.0)", [224, 216, 232, 0], +"hsl(300, 25%, 87.5%, 0.0)", [232, 216, 232, 0], +"hsl(330, 25%, 87.5%, 0.0)", [232, 216, 224, 0], +"hsl(0, 37.5%, 87.5%, 0.0)", [236, 212, 212, 0], +"hsl(30, 37.5%, 87.5%, 0.0)", [236, 224, 212, 0], +"hsl(60, 37.5%, 87.5%, 0.0)", [236, 236, 212, 0], +"hsl(90, 37.5%, 87.5%, 0.0)", [224, 236, 212, 0], +"hsl(120, 37.5%, 87.5%, 0.0)", [212, 236, 212, 0], +"hsl(150, 37.5%, 87.5%, 0.0)", [212, 236, 224, 0], +"hsl(180, 37.5%, 87.5%, 0.0)", [212, 236, 236, 0], +"hsl(210, 37.5%, 87.5%, 0.0)", [212, 224, 236, 0], +"hsl(240, 37.5%, 87.5%, 0.0)", [212, 212, 236, 0], +"hsl(270, 37.5%, 87.5%, 0.0)", [224, 212, 236, 0], +"hsl(300, 37.5%, 87.5%, 0.0)", [236, 212, 236, 0], +"hsl(330, 37.5%, 87.5%, 0.0)", [236, 212, 224, 0], +"hsl(0, 50%, 87.5%, 0.0)", [240, 208, 208, 0], +"hsl(30, 50%, 87.5%, 0.0)", [240, 224, 208, 0], +"hsl(60, 50%, 87.5%, 0.0)", [240, 240, 208, 0], +"hsl(90, 50%, 87.5%, 0.0)", [224, 240, 208, 0], +"hsl(120, 50%, 87.5%, 0.0)", [208, 240, 208, 0], +"hsl(150, 50%, 87.5%, 0.0)", [208, 240, 224, 0], +"hsl(180, 50%, 87.5%, 0.0)", [208, 240, 240, 0], +"hsl(210, 50%, 87.5%, 0.0)", [208, 224, 240, 0], +"hsl(240, 50%, 87.5%, 0.0)", [208, 208, 240, 0], +"hsl(270, 50%, 87.5%, 0.0)", [224, 208, 240, 0], +"hsl(300, 50%, 87.5%, 0.0)", [240, 208, 240, 0], +"hsl(330, 50%, 87.5%, 0.0)", [240, 208, 224, 0], +"hsl(0, 62.5%, 87.5%, 0.0)", [244, 204, 204, 0], +"hsl(30, 62.5%, 87.5%, 0.0)", [244, 224, 204, 0], +"hsl(60, 62.5%, 87.5%, 0.0)", [244, 244, 204, 0], +"hsl(90, 62.5%, 87.5%, 0.0)", [224, 244, 204, 0], +"hsl(120, 62.5%, 87.5%, 0.0)", [204, 244, 204, 0], +"hsl(150, 62.5%, 87.5%, 0.0)", [204, 244, 224, 0], +"hsl(180, 62.5%, 87.5%, 0.0)", [204, 244, 244, 0], +"hsl(210, 62.5%, 87.5%, 0.0)", [204, 224, 244, 0], +"hsl(240, 62.5%, 87.5%, 0.0)", [204, 204, 244, 0], +"hsl(270, 62.5%, 87.5%, 0.0)", [224, 204, 244, 0], +"hsl(300, 62.5%, 87.5%, 0.0)", [244, 204, 244, 0], +"hsl(330, 62.5%, 87.5%, 0.0)", [244, 204, 224, 0], +"hsl(0, 75%, 87.5%, 0.0)", [248, 200, 200, 0], +"hsl(30, 75%, 87.5%, 0.0)", [248, 224, 200, 0], +"hsl(60, 75%, 87.5%, 0.0)", [248, 248, 200, 0], +"hsl(90, 75%, 87.5%, 0.0)", [224, 248, 200, 0], +"hsl(120, 75%, 87.5%, 0.0)", [200, 248, 200, 0], +"hsl(150, 75%, 87.5%, 0.0)", [200, 248, 224, 0], +"hsl(180, 75%, 87.5%, 0.0)", [200, 248, 248, 0], +"hsl(210, 75%, 87.5%, 0.0)", [200, 224, 248, 0], +"hsl(240, 75%, 87.5%, 0.0)", [200, 200, 248, 0], +"hsl(270, 75%, 87.5%, 0.0)", [224, 200, 248, 0], +"hsl(300, 75%, 87.5%, 0.0)", [248, 200, 248, 0], +"hsl(330, 75%, 87.5%, 0.0)", [248, 200, 224, 0], +"hsl(0, 87.5%, 87.5%, 0.0)", [252, 196, 196, 0], +"hsl(30, 87.5%, 87.5%, 0.0)", [252, 224, 196, 0], +"hsl(60, 87.5%, 87.5%, 0.0)", [252, 252, 196, 0], +"hsl(90, 87.5%, 87.5%, 0.0)", [224, 252, 196, 0], +"hsl(120, 87.5%, 87.5%, 0.0)", [196, 252, 196, 0], +"hsl(150, 87.5%, 87.5%, 0.0)", [196, 252, 224, 0], +"hsl(180, 87.5%, 87.5%, 0.0)", [196, 252, 252, 0], +"hsl(210, 87.5%, 87.5%, 0.0)", [196, 224, 252, 0], +"hsl(240, 87.5%, 87.5%, 0.0)", [196, 196, 252, 0], +"hsl(270, 87.5%, 87.5%, 0.0)", [224, 196, 252, 0], +"hsl(300, 87.5%, 87.5%, 0.0)", [252, 196, 252, 0], +"hsl(330, 87.5%, 87.5%, 0.0)", [252, 196, 224, 0], +"hsl(0, 100%, 87.5%, 0.0)", [255, 192, 192, 0], +"hsl(30, 100%, 87.5%, 0.0)", [255, 224, 192, 0], +"hsl(60, 100%, 87.5%, 0.0)", [255, 255, 192, 0], +"hsl(90, 100%, 87.5%, 0.0)", [224, 255, 192, 0], +"hsl(120, 100%, 87.5%, 0.0)", [192, 255, 192, 0], +"hsl(150, 100%, 87.5%, 0.0)", [192, 255, 224, 0], +"hsl(180, 100%, 87.5%, 0.0)", [192, 255, 255, 0], +"hsl(210, 100%, 87.5%, 0.0)", [192, 224, 255, 0], +"hsl(240, 100%, 87.5%, 0.0)", [192, 192, 255, 0], +"hsl(270, 100%, 87.5%, 0.0)", [224, 192, 255, 0], +"hsl(300, 100%, 87.5%, 0.0)", [255, 192, 255, 0], +"hsl(330, 100%, 87.5%, 0.0)", [255, 192, 224, 0], +"hsl(0, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(30, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(60, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(90, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(120, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(150, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(180, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(210, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(240, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(270, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(300, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(330, 0%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(0, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(30, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(60, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(90, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(120, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(150, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(180, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(210, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(240, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(270, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(300, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(330, 12.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(0, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(30, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(60, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(90, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(120, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(150, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(180, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(210, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(240, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(270, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(300, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(330, 25%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(0, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(30, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(60, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(90, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(120, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(150, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(180, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(210, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(240, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(270, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(300, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(330, 37.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(0, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(30, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(60, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(90, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(120, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(150, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(180, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(210, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(240, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(270, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(300, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(330, 50%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(0, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(30, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(60, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(90, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(120, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(150, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(180, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(210, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(240, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(270, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(300, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(330, 62.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(0, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(30, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(60, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(90, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(120, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(150, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(180, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(210, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(240, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(270, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(300, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(330, 75%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(0, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(30, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(60, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(90, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(120, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(150, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(180, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(210, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(240, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(270, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(300, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(330, 87.5%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(0, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(30, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(60, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(90, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(120, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(150, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(180, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(210, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(240, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(270, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(300, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(330, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsla(0, 0%, 0%)", [0, 0, 0, 255], +"hsla(30, 0%, 0%)", [0, 0, 0, 255], +"hsla(60, 0%, 0%)", [0, 0, 0, 255], +"hsla(90, 0%, 0%)", [0, 0, 0, 255], +"hsla(120, 0%, 0%)", [0, 0, 0, 255], +"hsla(150, 0%, 0%)", [0, 0, 0, 255], +"hsla(180, 0%, 0%)", [0, 0, 0, 255], +"hsla(210, 0%, 0%)", [0, 0, 0, 255], +"hsla(240, 0%, 0%)", [0, 0, 0, 255], +"hsla(270, 0%, 0%)", [0, 0, 0, 255], +"hsla(300, 0%, 0%)", [0, 0, 0, 255], +"hsla(330, 0%, 0%)", [0, 0, 0, 255], +"hsla(0, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(30, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(60, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(90, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(120, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(150, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(180, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(210, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(240, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(270, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(300, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(330, 12.5%, 0%)", [0, 0, 0, 255], +"hsla(0, 25%, 0%)", [0, 0, 0, 255], +"hsla(30, 25%, 0%)", [0, 0, 0, 255], +"hsla(60, 25%, 0%)", [0, 0, 0, 255], +"hsla(90, 25%, 0%)", [0, 0, 0, 255], +"hsla(120, 25%, 0%)", [0, 0, 0, 255], +"hsla(150, 25%, 0%)", [0, 0, 0, 255], +"hsla(180, 25%, 0%)", [0, 0, 0, 255], +"hsla(210, 25%, 0%)", [0, 0, 0, 255], +"hsla(240, 25%, 0%)", [0, 0, 0, 255], +"hsla(270, 25%, 0%)", [0, 0, 0, 255], +"hsla(300, 25%, 0%)", [0, 0, 0, 255], +"hsla(330, 25%, 0%)", [0, 0, 0, 255], +"hsla(0, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(30, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(60, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(90, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(120, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(150, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(180, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(210, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(240, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(270, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(300, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(330, 37.5%, 0%)", [0, 0, 0, 255], +"hsla(0, 50%, 0%)", [0, 0, 0, 255], +"hsla(30, 50%, 0%)", [0, 0, 0, 255], +"hsla(60, 50%, 0%)", [0, 0, 0, 255], +"hsla(90, 50%, 0%)", [0, 0, 0, 255], +"hsla(120, 50%, 0%)", [0, 0, 0, 255], +"hsla(150, 50%, 0%)", [0, 0, 0, 255], +"hsla(180, 50%, 0%)", [0, 0, 0, 255], +"hsla(210, 50%, 0%)", [0, 0, 0, 255], +"hsla(240, 50%, 0%)", [0, 0, 0, 255], +"hsla(270, 50%, 0%)", [0, 0, 0, 255], +"hsla(300, 50%, 0%)", [0, 0, 0, 255], +"hsla(330, 50%, 0%)", [0, 0, 0, 255], +"hsla(0, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(30, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(60, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(90, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(120, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(150, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(180, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(210, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(240, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(270, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(300, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(330, 62.5%, 0%)", [0, 0, 0, 255], +"hsla(0, 75%, 0%)", [0, 0, 0, 255], +"hsla(30, 75%, 0%)", [0, 0, 0, 255], +"hsla(60, 75%, 0%)", [0, 0, 0, 255], +"hsla(90, 75%, 0%)", [0, 0, 0, 255], +"hsla(120, 75%, 0%)", [0, 0, 0, 255], +"hsla(150, 75%, 0%)", [0, 0, 0, 255], +"hsla(180, 75%, 0%)", [0, 0, 0, 255], +"hsla(210, 75%, 0%)", [0, 0, 0, 255], +"hsla(240, 75%, 0%)", [0, 0, 0, 255], +"hsla(270, 75%, 0%)", [0, 0, 0, 255], +"hsla(300, 75%, 0%)", [0, 0, 0, 255], +"hsla(330, 75%, 0%)", [0, 0, 0, 255], +"hsla(0, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(30, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(60, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(90, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(120, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(150, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(180, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(210, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(240, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(270, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(300, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(330, 87.5%, 0%)", [0, 0, 0, 255], +"hsla(0, 100%, 0%)", [0, 0, 0, 255], +"hsla(30, 100%, 0%)", [0, 0, 0, 255], +"hsla(60, 100%, 0%)", [0, 0, 0, 255], +"hsla(90, 100%, 0%)", [0, 0, 0, 255], +"hsla(120, 100%, 0%)", [0, 0, 0, 255], +"hsla(150, 100%, 0%)", [0, 0, 0, 255], +"hsla(180, 100%, 0%)", [0, 0, 0, 255], +"hsla(210, 100%, 0%)", [0, 0, 0, 255], +"hsla(240, 100%, 0%)", [0, 0, 0, 255], +"hsla(270, 100%, 0%)", [0, 0, 0, 255], +"hsla(300, 100%, 0%)", [0, 0, 0, 255], +"hsla(330, 100%, 0%)", [0, 0, 0, 255], +"hsla(0, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(30, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(60, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(90, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(120, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(150, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(180, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(210, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(240, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(270, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(300, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(330, 0%, 12.5%)", [32, 32, 32, 255], +"hsla(0, 12.5%, 12.5%)", [36, 28, 28, 255], +"hsla(30, 12.5%, 12.5%)", [36, 32, 28, 255], +"hsla(60, 12.5%, 12.5%)", [36, 36, 28, 255], +"hsla(90, 12.5%, 12.5%)", [32, 36, 28, 255], +"hsla(120, 12.5%, 12.5%)", [28, 36, 28, 255], +"hsla(150, 12.5%, 12.5%)", [28, 36, 32, 255], +"hsla(180, 12.5%, 12.5%)", [28, 36, 36, 255], +"hsla(210, 12.5%, 12.5%)", [28, 32, 36, 255], +"hsla(240, 12.5%, 12.5%)", [28, 28, 36, 255], +"hsla(270, 12.5%, 12.5%)", [32, 28, 36, 255], +"hsla(300, 12.5%, 12.5%)", [36, 28, 36, 255], +"hsla(330, 12.5%, 12.5%)", [36, 28, 32, 255], +"hsla(0, 25%, 12.5%)", [40, 24, 24, 255], +"hsla(30, 25%, 12.5%)", [40, 32, 24, 255], +"hsla(60, 25%, 12.5%)", [40, 40, 24, 255], +"hsla(90, 25%, 12.5%)", [32, 40, 24, 255], +"hsla(120, 25%, 12.5%)", [24, 40, 24, 255], +"hsla(150, 25%, 12.5%)", [24, 40, 32, 255], +"hsla(180, 25%, 12.5%)", [24, 40, 40, 255], +"hsla(210, 25%, 12.5%)", [24, 32, 40, 255], +"hsla(240, 25%, 12.5%)", [24, 24, 40, 255], +"hsla(270, 25%, 12.5%)", [32, 24, 40, 255], +"hsla(300, 25%, 12.5%)", [40, 24, 40, 255], +"hsla(330, 25%, 12.5%)", [40, 24, 32, 255], +"hsla(0, 37.5%, 12.5%)", [44, 20, 20, 255], +"hsla(30, 37.5%, 12.5%)", [44, 32, 20, 255], +"hsla(60, 37.5%, 12.5%)", [44, 44, 20, 255], +"hsla(90, 37.5%, 12.5%)", [32, 44, 20, 255], +"hsla(120, 37.5%, 12.5%)", [20, 44, 20, 255], +"hsla(150, 37.5%, 12.5%)", [20, 44, 32, 255], +"hsla(180, 37.5%, 12.5%)", [20, 44, 44, 255], +"hsla(210, 37.5%, 12.5%)", [20, 32, 44, 255], +"hsla(240, 37.5%, 12.5%)", [20, 20, 44, 255], +"hsla(270, 37.5%, 12.5%)", [32, 20, 44, 255], +"hsla(300, 37.5%, 12.5%)", [44, 20, 44, 255], +"hsla(330, 37.5%, 12.5%)", [44, 20, 32, 255], +"hsla(0, 50%, 12.5%)", [48, 16, 16, 255], +"hsla(30, 50%, 12.5%)", [48, 32, 16, 255], +"hsla(60, 50%, 12.5%)", [48, 48, 16, 255], +"hsla(90, 50%, 12.5%)", [32, 48, 16, 255], +"hsla(120, 50%, 12.5%)", [16, 48, 16, 255], +"hsla(150, 50%, 12.5%)", [16, 48, 32, 255], +"hsla(180, 50%, 12.5%)", [16, 48, 48, 255], +"hsla(210, 50%, 12.5%)", [16, 32, 48, 255], +"hsla(240, 50%, 12.5%)", [16, 16, 48, 255], +"hsla(270, 50%, 12.5%)", [32, 16, 48, 255], +"hsla(300, 50%, 12.5%)", [48, 16, 48, 255], +"hsla(330, 50%, 12.5%)", [48, 16, 32, 255], +"hsla(0, 62.5%, 12.5%)", [52, 12, 12, 255], +"hsla(30, 62.5%, 12.5%)", [52, 32, 12, 255], +"hsla(60, 62.5%, 12.5%)", [52, 52, 12, 255], +"hsla(90, 62.5%, 12.5%)", [32, 52, 12, 255], +"hsla(120, 62.5%, 12.5%)", [12, 52, 12, 255], +"hsla(150, 62.5%, 12.5%)", [12, 52, 32, 255], +"hsla(180, 62.5%, 12.5%)", [12, 52, 52, 255], +"hsla(210, 62.5%, 12.5%)", [12, 32, 52, 255], +"hsla(240, 62.5%, 12.5%)", [12, 12, 52, 255], +"hsla(270, 62.5%, 12.5%)", [32, 12, 52, 255], +"hsla(300, 62.5%, 12.5%)", [52, 12, 52, 255], +"hsla(330, 62.5%, 12.5%)", [52, 12, 32, 255], +"hsla(0, 75%, 12.5%)", [56, 8, 8, 255], +"hsla(30, 75%, 12.5%)", [56, 32, 8, 255], +"hsla(60, 75%, 12.5%)", [56, 56, 8, 255], +"hsla(90, 75%, 12.5%)", [32, 56, 8, 255], +"hsla(120, 75%, 12.5%)", [8, 56, 8, 255], +"hsla(150, 75%, 12.5%)", [8, 56, 32, 255], +"hsla(180, 75%, 12.5%)", [8, 56, 56, 255], +"hsla(210, 75%, 12.5%)", [8, 32, 56, 255], +"hsla(240, 75%, 12.5%)", [8, 8, 56, 255], +"hsla(270, 75%, 12.5%)", [32, 8, 56, 255], +"hsla(300, 75%, 12.5%)", [56, 8, 56, 255], +"hsla(330, 75%, 12.5%)", [56, 8, 32, 255], +"hsla(0, 87.5%, 12.5%)", [60, 4, 4, 255], +"hsla(30, 87.5%, 12.5%)", [60, 32, 4, 255], +"hsla(60, 87.5%, 12.5%)", [60, 60, 4, 255], +"hsla(90, 87.5%, 12.5%)", [32, 60, 4, 255], +"hsla(120, 87.5%, 12.5%)", [4, 60, 4, 255], +"hsla(150, 87.5%, 12.5%)", [4, 60, 32, 255], +"hsla(180, 87.5%, 12.5%)", [4, 60, 60, 255], +"hsla(210, 87.5%, 12.5%)", [4, 32, 60, 255], +"hsla(240, 87.5%, 12.5%)", [4, 4, 60, 255], +"hsla(270, 87.5%, 12.5%)", [32, 4, 60, 255], +"hsla(300, 87.5%, 12.5%)", [60, 4, 60, 255], +"hsla(330, 87.5%, 12.5%)", [60, 4, 32, 255], +"hsla(0, 100%, 12.5%)", [64, 0, 0, 255], +"hsla(30, 100%, 12.5%)", [64, 32, 0, 255], +"hsla(60, 100%, 12.5%)", [64, 64, 0, 255], +"hsla(90, 100%, 12.5%)", [32, 64, 0, 255], +"hsla(120, 100%, 12.5%)", [0, 64, 0, 255], +"hsla(150, 100%, 12.5%)", [0, 64, 32, 255], +"hsla(180, 100%, 12.5%)", [0, 64, 64, 255], +"hsla(210, 100%, 12.5%)", [0, 32, 64, 255], +"hsla(240, 100%, 12.5%)", [0, 0, 64, 255], +"hsla(270, 100%, 12.5%)", [32, 0, 64, 255], +"hsla(300, 100%, 12.5%)", [64, 0, 64, 255], +"hsla(330, 100%, 12.5%)", [64, 0, 32, 255], +"hsla(0, 0%, 25%)", [64, 64, 64, 255], +"hsla(30, 0%, 25%)", [64, 64, 64, 255], +"hsla(60, 0%, 25%)", [64, 64, 64, 255], +"hsla(90, 0%, 25%)", [64, 64, 64, 255], +"hsla(120, 0%, 25%)", [64, 64, 64, 255], +"hsla(150, 0%, 25%)", [64, 64, 64, 255], +"hsla(180, 0%, 25%)", [64, 64, 64, 255], +"hsla(210, 0%, 25%)", [64, 64, 64, 255], +"hsla(240, 0%, 25%)", [64, 64, 64, 255], +"hsla(270, 0%, 25%)", [64, 64, 64, 255], +"hsla(300, 0%, 25%)", [64, 64, 64, 255], +"hsla(330, 0%, 25%)", [64, 64, 64, 255], +"hsla(0, 12.5%, 25%)", [72, 56, 56, 255], +"hsla(30, 12.5%, 25%)", [72, 64, 56, 255], +"hsla(60, 12.5%, 25%)", [72, 72, 56, 255], +"hsla(90, 12.5%, 25%)", [64, 72, 56, 255], +"hsla(120, 12.5%, 25%)", [56, 72, 56, 255], +"hsla(150, 12.5%, 25%)", [56, 72, 64, 255], +"hsla(180, 12.5%, 25%)", [56, 72, 72, 255], +"hsla(210, 12.5%, 25%)", [56, 64, 72, 255], +"hsla(240, 12.5%, 25%)", [56, 56, 72, 255], +"hsla(270, 12.5%, 25%)", [64, 56, 72, 255], +"hsla(300, 12.5%, 25%)", [72, 56, 72, 255], +"hsla(330, 12.5%, 25%)", [72, 56, 64, 255], +"hsla(0, 25%, 25%)", [80, 48, 48, 255], +"hsla(30, 25%, 25%)", [80, 64, 48, 255], +"hsla(60, 25%, 25%)", [80, 80, 48, 255], +"hsla(90, 25%, 25%)", [64, 80, 48, 255], +"hsla(120, 25%, 25%)", [48, 80, 48, 255], +"hsla(150, 25%, 25%)", [48, 80, 64, 255], +"hsla(180, 25%, 25%)", [48, 80, 80, 255], +"hsla(210, 25%, 25%)", [48, 64, 80, 255], +"hsla(240, 25%, 25%)", [48, 48, 80, 255], +"hsla(270, 25%, 25%)", [64, 48, 80, 255], +"hsla(300, 25%, 25%)", [80, 48, 80, 255], +"hsla(330, 25%, 25%)", [80, 48, 64, 255], +"hsla(0, 37.5%, 25%)", [88, 40, 40, 255], +"hsla(30, 37.5%, 25%)", [88, 64, 40, 255], +"hsla(60, 37.5%, 25%)", [88, 88, 40, 255], +"hsla(90, 37.5%, 25%)", [64, 88, 40, 255], +"hsla(120, 37.5%, 25%)", [40, 88, 40, 255], +"hsla(150, 37.5%, 25%)", [40, 88, 64, 255], +"hsla(180, 37.5%, 25%)", [40, 88, 88, 255], +"hsla(210, 37.5%, 25%)", [40, 64, 88, 255], +"hsla(240, 37.5%, 25%)", [40, 40, 88, 255], +"hsla(270, 37.5%, 25%)", [64, 40, 88, 255], +"hsla(300, 37.5%, 25%)", [88, 40, 88, 255], +"hsla(330, 37.5%, 25%)", [88, 40, 64, 255], +"hsla(0, 50%, 25%)", [96, 32, 32, 255], +"hsla(30, 50%, 25%)", [96, 64, 32, 255], +"hsla(60, 50%, 25%)", [96, 96, 32, 255], +"hsla(90, 50%, 25%)", [64, 96, 32, 255], +"hsla(120, 50%, 25%)", [32, 96, 32, 255], +"hsla(150, 50%, 25%)", [32, 96, 64, 255], +"hsla(180, 50%, 25%)", [32, 96, 96, 255], +"hsla(210, 50%, 25%)", [32, 64, 96, 255], +"hsla(240, 50%, 25%)", [32, 32, 96, 255], +"hsla(270, 50%, 25%)", [64, 32, 96, 255], +"hsla(300, 50%, 25%)", [96, 32, 96, 255], +"hsla(330, 50%, 25%)", [96, 32, 64, 255], +"hsla(0, 62.5%, 25%)", [104, 24, 24, 255], +"hsla(30, 62.5%, 25%)", [104, 64, 24, 255], +"hsla(60, 62.5%, 25%)", [104, 104, 24, 255], +"hsla(90, 62.5%, 25%)", [64, 104, 24, 255], +"hsla(120, 62.5%, 25%)", [24, 104, 24, 255], +"hsla(150, 62.5%, 25%)", [24, 104, 64, 255], +"hsla(180, 62.5%, 25%)", [24, 104, 104, 255], +"hsla(210, 62.5%, 25%)", [24, 64, 104, 255], +"hsla(240, 62.5%, 25%)", [24, 24, 104, 255], +"hsla(270, 62.5%, 25%)", [64, 24, 104, 255], +"hsla(300, 62.5%, 25%)", [104, 24, 104, 255], +"hsla(330, 62.5%, 25%)", [104, 24, 64, 255], +"hsla(0, 75%, 25%)", [112, 16, 16, 255], +"hsla(30, 75%, 25%)", [112, 64, 16, 255], +"hsla(60, 75%, 25%)", [112, 112, 16, 255], +"hsla(90, 75%, 25%)", [64, 112, 16, 255], +"hsla(120, 75%, 25%)", [16, 112, 16, 255], +"hsla(150, 75%, 25%)", [16, 112, 64, 255], +"hsla(180, 75%, 25%)", [16, 112, 112, 255], +"hsla(210, 75%, 25%)", [16, 64, 112, 255], +"hsla(240, 75%, 25%)", [16, 16, 112, 255], +"hsla(270, 75%, 25%)", [64, 16, 112, 255], +"hsla(300, 75%, 25%)", [112, 16, 112, 255], +"hsla(330, 75%, 25%)", [112, 16, 64, 255], +"hsla(0, 87.5%, 25%)", [120, 8, 8, 255], +"hsla(30, 87.5%, 25%)", [120, 64, 8, 255], +"hsla(60, 87.5%, 25%)", [120, 120, 8, 255], +"hsla(90, 87.5%, 25%)", [64, 120, 8, 255], +"hsla(120, 87.5%, 25%)", [8, 120, 8, 255], +"hsla(150, 87.5%, 25%)", [8, 120, 64, 255], +"hsla(180, 87.5%, 25%)", [8, 120, 120, 255], +"hsla(210, 87.5%, 25%)", [8, 64, 120, 255], +"hsla(240, 87.5%, 25%)", [8, 8, 120, 255], +"hsla(270, 87.5%, 25%)", [64, 8, 120, 255], +"hsla(300, 87.5%, 25%)", [120, 8, 120, 255], +"hsla(330, 87.5%, 25%)", [120, 8, 64, 255], +"hsla(0, 100%, 25%)", [128, 0, 0, 255], +"hsla(30, 100%, 25%)", [128, 64, 0, 255], +"hsla(60, 100%, 25%)", [128, 128, 0, 255], +"hsla(90, 100%, 25%)", [64, 128, 0, 255], +"hsla(120, 100%, 25%)", [0, 128, 0, 255], +"hsla(150, 100%, 25%)", [0, 128, 64, 255], +"hsla(180, 100%, 25%)", [0, 128, 128, 255], +"hsla(210, 100%, 25%)", [0, 64, 128, 255], +"hsla(240, 100%, 25%)", [0, 0, 128, 255], +"hsla(270, 100%, 25%)", [64, 0, 128, 255], +"hsla(300, 100%, 25%)", [128, 0, 128, 255], +"hsla(330, 100%, 25%)", [128, 0, 64, 255], +"hsla(0, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(30, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(60, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(90, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(120, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(150, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(180, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(210, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(240, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(270, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(300, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(330, 0%, 37.5%)", [96, 96, 96, 255], +"hsla(0, 12.5%, 37.5%)", [108, 84, 84, 255], +"hsla(30, 12.5%, 37.5%)", [108, 96, 84, 255], +"hsla(60, 12.5%, 37.5%)", [108, 108, 84, 255], +"hsla(90, 12.5%, 37.5%)", [96, 108, 84, 255], +"hsla(120, 12.5%, 37.5%)", [84, 108, 84, 255], +"hsla(150, 12.5%, 37.5%)", [84, 108, 96, 255], +"hsla(180, 12.5%, 37.5%)", [84, 108, 108, 255], +"hsla(210, 12.5%, 37.5%)", [84, 96, 108, 255], +"hsla(240, 12.5%, 37.5%)", [84, 84, 108, 255], +"hsla(270, 12.5%, 37.5%)", [96, 84, 108, 255], +"hsla(300, 12.5%, 37.5%)", [108, 84, 108, 255], +"hsla(330, 12.5%, 37.5%)", [108, 84, 96, 255], +"hsla(0, 25%, 37.5%)", [120, 72, 72, 255], +"hsla(30, 25%, 37.5%)", [120, 96, 72, 255], +"hsla(60, 25%, 37.5%)", [120, 120, 72, 255], +"hsla(90, 25%, 37.5%)", [96, 120, 72, 255], +"hsla(120, 25%, 37.5%)", [72, 120, 72, 255], +"hsla(150, 25%, 37.5%)", [72, 120, 96, 255], +"hsla(180, 25%, 37.5%)", [72, 120, 120, 255], +"hsla(210, 25%, 37.5%)", [72, 96, 120, 255], +"hsla(240, 25%, 37.5%)", [72, 72, 120, 255], +"hsla(270, 25%, 37.5%)", [96, 72, 120, 255], +"hsla(300, 25%, 37.5%)", [120, 72, 120, 255], +"hsla(330, 25%, 37.5%)", [120, 72, 96, 255], +"hsla(0, 37.5%, 37.5%)", [132, 60, 60, 255], +"hsla(30, 37.5%, 37.5%)", [132, 96, 60, 255], +"hsla(60, 37.5%, 37.5%)", [132, 132, 60, 255], +"hsla(90, 37.5%, 37.5%)", [96, 132, 60, 255], +"hsla(120, 37.5%, 37.5%)", [60, 132, 60, 255], +"hsla(150, 37.5%, 37.5%)", [60, 132, 96, 255], +"hsla(180, 37.5%, 37.5%)", [60, 132, 132, 255], +"hsla(210, 37.5%, 37.5%)", [60, 96, 132, 255], +"hsla(240, 37.5%, 37.5%)", [60, 60, 132, 255], +"hsla(270, 37.5%, 37.5%)", [96, 60, 132, 255], +"hsla(300, 37.5%, 37.5%)", [132, 60, 132, 255], +"hsla(330, 37.5%, 37.5%)", [132, 60, 96, 255], +"hsla(0, 50%, 37.5%)", [144, 48, 48, 255], +"hsla(30, 50%, 37.5%)", [144, 96, 48, 255], +"hsla(60, 50%, 37.5%)", [144, 144, 48, 255], +"hsla(90, 50%, 37.5%)", [96, 144, 48, 255], +"hsla(120, 50%, 37.5%)", [48, 144, 48, 255], +"hsla(150, 50%, 37.5%)", [48, 144, 96, 255], +"hsla(180, 50%, 37.5%)", [48, 144, 144, 255], +"hsla(210, 50%, 37.5%)", [48, 96, 144, 255], +"hsla(240, 50%, 37.5%)", [48, 48, 144, 255], +"hsla(270, 50%, 37.5%)", [96, 48, 144, 255], +"hsla(300, 50%, 37.5%)", [144, 48, 144, 255], +"hsla(330, 50%, 37.5%)", [144, 48, 96, 255], +"hsla(0, 62.5%, 37.5%)", [156, 36, 36, 255], +"hsla(30, 62.5%, 37.5%)", [156, 96, 36, 255], +"hsla(60, 62.5%, 37.5%)", [156, 156, 36, 255], +"hsla(90, 62.5%, 37.5%)", [96, 156, 36, 255], +"hsla(120, 62.5%, 37.5%)", [36, 156, 36, 255], +"hsla(150, 62.5%, 37.5%)", [36, 156, 96, 255], +"hsla(180, 62.5%, 37.5%)", [36, 156, 156, 255], +"hsla(210, 62.5%, 37.5%)", [36, 96, 156, 255], +"hsla(240, 62.5%, 37.5%)", [36, 36, 156, 255], +"hsla(270, 62.5%, 37.5%)", [96, 36, 156, 255], +"hsla(300, 62.5%, 37.5%)", [156, 36, 156, 255], +"hsla(330, 62.5%, 37.5%)", [156, 36, 96, 255], +"hsla(0, 75%, 37.5%)", [168, 24, 24, 255], +"hsla(30, 75%, 37.5%)", [168, 96, 24, 255], +"hsla(60, 75%, 37.5%)", [168, 168, 24, 255], +"hsla(90, 75%, 37.5%)", [96, 168, 24, 255], +"hsla(120, 75%, 37.5%)", [24, 168, 24, 255], +"hsla(150, 75%, 37.5%)", [24, 168, 96, 255], +"hsla(180, 75%, 37.5%)", [24, 168, 168, 255], +"hsla(210, 75%, 37.5%)", [24, 96, 168, 255], +"hsla(240, 75%, 37.5%)", [24, 24, 168, 255], +"hsla(270, 75%, 37.5%)", [96, 24, 168, 255], +"hsla(300, 75%, 37.5%)", [168, 24, 168, 255], +"hsla(330, 75%, 37.5%)", [168, 24, 96, 255], +"hsla(0, 87.5%, 37.5%)", [180, 12, 12, 255], +"hsla(30, 87.5%, 37.5%)", [180, 96, 12, 255], +"hsla(60, 87.5%, 37.5%)", [180, 180, 12, 255], +"hsla(90, 87.5%, 37.5%)", [96, 180, 12, 255], +"hsla(120, 87.5%, 37.5%)", [12, 180, 12, 255], +"hsla(150, 87.5%, 37.5%)", [12, 180, 96, 255], +"hsla(180, 87.5%, 37.5%)", [12, 180, 180, 255], +"hsla(210, 87.5%, 37.5%)", [12, 96, 180, 255], +"hsla(240, 87.5%, 37.5%)", [12, 12, 180, 255], +"hsla(270, 87.5%, 37.5%)", [96, 12, 180, 255], +"hsla(300, 87.5%, 37.5%)", [180, 12, 180, 255], +"hsla(330, 87.5%, 37.5%)", [180, 12, 96, 255], +"hsla(0, 100%, 37.5%)", [192, 0, 0, 255], +"hsla(30, 100%, 37.5%)", [192, 96, 0, 255], +"hsla(60, 100%, 37.5%)", [192, 192, 0, 255], +"hsla(90, 100%, 37.5%)", [96, 192, 0, 255], +"hsla(120, 100%, 37.5%)", [0, 192, 0, 255], +"hsla(150, 100%, 37.5%)", [0, 192, 96, 255], +"hsla(180, 100%, 37.5%)", [0, 192, 192, 255], +"hsla(210, 100%, 37.5%)", [0, 96, 192, 255], +"hsla(240, 100%, 37.5%)", [0, 0, 192, 255], +"hsla(270, 100%, 37.5%)", [96, 0, 192, 255], +"hsla(300, 100%, 37.5%)", [192, 0, 192, 255], +"hsla(330, 100%, 37.5%)", [192, 0, 96, 255], +"hsla(0, 0%, 50%)", [128, 128, 128, 255], +"hsla(30, 0%, 50%)", [128, 128, 128, 255], +"hsla(60, 0%, 50%)", [128, 128, 128, 255], +"hsla(90, 0%, 50%)", [128, 128, 128, 255], +"hsla(120, 0%, 50%)", [128, 128, 128, 255], +"hsla(150, 0%, 50%)", [128, 128, 128, 255], +"hsla(180, 0%, 50%)", [128, 128, 128, 255], +"hsla(210, 0%, 50%)", [128, 128, 128, 255], +"hsla(240, 0%, 50%)", [128, 128, 128, 255], +"hsla(270, 0%, 50%)", [128, 128, 128, 255], +"hsla(300, 0%, 50%)", [128, 128, 128, 255], +"hsla(330, 0%, 50%)", [128, 128, 128, 255], +"hsla(0, 12.5%, 50%)", [144, 112, 112, 255], +"hsla(30, 12.5%, 50%)", [144, 128, 112, 255], +"hsla(60, 12.5%, 50%)", [144, 144, 112, 255], +"hsla(90, 12.5%, 50%)", [128, 144, 112, 255], +"hsla(120, 12.5%, 50%)", [112, 144, 112, 255], +"hsla(150, 12.5%, 50%)", [112, 144, 128, 255], +"hsla(180, 12.5%, 50%)", [112, 144, 144, 255], +"hsla(210, 12.5%, 50%)", [112, 128, 144, 255], +"hsla(240, 12.5%, 50%)", [112, 112, 144, 255], +"hsla(270, 12.5%, 50%)", [128, 112, 144, 255], +"hsla(300, 12.5%, 50%)", [144, 112, 144, 255], +"hsla(330, 12.5%, 50%)", [144, 112, 128, 255], +"hsla(0, 25%, 50%)", [160, 96, 96, 255], +"hsla(30, 25%, 50%)", [160, 128, 96, 255], +"hsla(60, 25%, 50%)", [160, 160, 96, 255], +"hsla(90, 25%, 50%)", [128, 160, 96, 255], +"hsla(120, 25%, 50%)", [96, 160, 96, 255], +"hsla(150, 25%, 50%)", [96, 160, 128, 255], +"hsla(180, 25%, 50%)", [96, 160, 160, 255], +"hsla(210, 25%, 50%)", [96, 128, 160, 255], +"hsla(240, 25%, 50%)", [96, 96, 160, 255], +"hsla(270, 25%, 50%)", [128, 96, 160, 255], +"hsla(300, 25%, 50%)", [160, 96, 160, 255], +"hsla(330, 25%, 50%)", [160, 96, 128, 255], +"hsla(0, 37.5%, 50%)", [176, 80, 80, 255], +"hsla(30, 37.5%, 50%)", [176, 128, 80, 255], +"hsla(60, 37.5%, 50%)", [176, 176, 80, 255], +"hsla(90, 37.5%, 50%)", [128, 176, 80, 255], +"hsla(120, 37.5%, 50%)", [80, 176, 80, 255], +"hsla(150, 37.5%, 50%)", [80, 176, 128, 255], +"hsla(180, 37.5%, 50%)", [80, 176, 176, 255], +"hsla(210, 37.5%, 50%)", [80, 128, 176, 255], +"hsla(240, 37.5%, 50%)", [80, 80, 176, 255], +"hsla(270, 37.5%, 50%)", [128, 80, 176, 255], +"hsla(300, 37.5%, 50%)", [176, 80, 176, 255], +"hsla(330, 37.5%, 50%)", [176, 80, 128, 255], +"hsla(0, 50%, 50%)", [192, 64, 64, 255], +"hsla(30, 50%, 50%)", [192, 128, 64, 255], +"hsla(60, 50%, 50%)", [192, 192, 64, 255], +"hsla(90, 50%, 50%)", [128, 192, 64, 255], +"hsla(120, 50%, 50%)", [64, 192, 64, 255], +"hsla(150, 50%, 50%)", [64, 192, 128, 255], +"hsla(180, 50%, 50%)", [64, 192, 192, 255], +"hsla(210, 50%, 50%)", [64, 128, 192, 255], +"hsla(240, 50%, 50%)", [64, 64, 192, 255], +"hsla(270, 50%, 50%)", [128, 64, 192, 255], +"hsla(300, 50%, 50%)", [192, 64, 192, 255], +"hsla(330, 50%, 50%)", [192, 64, 128, 255], +"hsla(0, 62.5%, 50%)", [208, 48, 48, 255], +"hsla(30, 62.5%, 50%)", [208, 128, 48, 255], +"hsla(60, 62.5%, 50%)", [208, 208, 48, 255], +"hsla(90, 62.5%, 50%)", [128, 208, 48, 255], +"hsla(120, 62.5%, 50%)", [48, 208, 48, 255], +"hsla(150, 62.5%, 50%)", [48, 208, 128, 255], +"hsla(180, 62.5%, 50%)", [48, 208, 208, 255], +"hsla(210, 62.5%, 50%)", [48, 128, 208, 255], +"hsla(240, 62.5%, 50%)", [48, 48, 208, 255], +"hsla(270, 62.5%, 50%)", [128, 48, 208, 255], +"hsla(300, 62.5%, 50%)", [208, 48, 208, 255], +"hsla(330, 62.5%, 50%)", [208, 48, 128, 255], +"hsla(0, 75%, 50%)", [224, 32, 32, 255], +"hsla(30, 75%, 50%)", [224, 128, 32, 255], +"hsla(60, 75%, 50%)", [224, 224, 32, 255], +"hsla(90, 75%, 50%)", [128, 224, 32, 255], +"hsla(120, 75%, 50%)", [32, 224, 32, 255], +"hsla(150, 75%, 50%)", [32, 224, 128, 255], +"hsla(180, 75%, 50%)", [32, 224, 224, 255], +"hsla(210, 75%, 50%)", [32, 128, 224, 255], +"hsla(240, 75%, 50%)", [32, 32, 224, 255], +"hsla(270, 75%, 50%)", [128, 32, 224, 255], +"hsla(300, 75%, 50%)", [224, 32, 224, 255], +"hsla(330, 75%, 50%)", [224, 32, 128, 255], +"hsla(0, 87.5%, 50%)", [240, 16, 16, 255], +"hsla(30, 87.5%, 50%)", [240, 128, 16, 255], +"hsla(60, 87.5%, 50%)", [240, 240, 16, 255], +"hsla(90, 87.5%, 50%)", [128, 240, 16, 255], +"hsla(120, 87.5%, 50%)", [16, 240, 16, 255], +"hsla(150, 87.5%, 50%)", [16, 240, 128, 255], +"hsla(180, 87.5%, 50%)", [16, 240, 240, 255], +"hsla(210, 87.5%, 50%)", [16, 128, 240, 255], +"hsla(240, 87.5%, 50%)", [16, 16, 240, 255], +"hsla(270, 87.5%, 50%)", [128, 16, 240, 255], +"hsla(300, 87.5%, 50%)", [240, 16, 240, 255], +"hsla(330, 87.5%, 50%)", [240, 16, 128, 255], +"hsla(0, 100%, 50%)", [255, 0, 0, 255], +"hsla(30, 100%, 50%)", [255, 128, 0, 255], +"hsla(60, 100%, 50%)", [255, 255, 0, 255], +"hsla(90, 100%, 50%)", [128, 255, 0, 255], +"hsla(120, 100%, 50%)", [0, 255, 0, 255], +"hsla(150, 100%, 50%)", [0, 255, 128, 255], +"hsla(180, 100%, 50%)", [0, 255, 255, 255], +"hsla(210, 100%, 50%)", [0, 128, 255, 255], +"hsla(240, 100%, 50%)", [0, 0, 255, 255], +"hsla(270, 100%, 50%)", [128, 0, 255, 255], +"hsla(300, 100%, 50%)", [255, 0, 255, 255], +"hsla(330, 100%, 50%)", [255, 0, 128, 255], +"hsla(0, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(30, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(60, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(90, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(120, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(150, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(180, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(210, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(240, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(270, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(300, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(330, 0%, 62.5%)", [160, 160, 160, 255], +"hsla(0, 12.5%, 62.5%)", [172, 148, 148, 255], +"hsla(30, 12.5%, 62.5%)", [172, 160, 148, 255], +"hsla(60, 12.5%, 62.5%)", [172, 172, 148, 255], +"hsla(90, 12.5%, 62.5%)", [160, 172, 148, 255], +"hsla(120, 12.5%, 62.5%)", [148, 172, 148, 255], +"hsla(150, 12.5%, 62.5%)", [148, 172, 160, 255], +"hsla(180, 12.5%, 62.5%)", [148, 172, 172, 255], +"hsla(210, 12.5%, 62.5%)", [148, 160, 172, 255], +"hsla(240, 12.5%, 62.5%)", [148, 148, 172, 255], +"hsla(270, 12.5%, 62.5%)", [160, 148, 172, 255], +"hsla(300, 12.5%, 62.5%)", [172, 148, 172, 255], +"hsla(330, 12.5%, 62.5%)", [172, 148, 160, 255], +"hsla(0, 25%, 62.5%)", [184, 136, 136, 255], +"hsla(30, 25%, 62.5%)", [184, 160, 136, 255], +"hsla(60, 25%, 62.5%)", [184, 184, 136, 255], +"hsla(90, 25%, 62.5%)", [160, 184, 136, 255], +"hsla(120, 25%, 62.5%)", [136, 184, 136, 255], +"hsla(150, 25%, 62.5%)", [136, 184, 160, 255], +"hsla(180, 25%, 62.5%)", [136, 184, 184, 255], +"hsla(210, 25%, 62.5%)", [136, 160, 184, 255], +"hsla(240, 25%, 62.5%)", [136, 136, 184, 255], +"hsla(270, 25%, 62.5%)", [160, 136, 184, 255], +"hsla(300, 25%, 62.5%)", [184, 136, 184, 255], +"hsla(330, 25%, 62.5%)", [184, 136, 160, 255], +"hsla(0, 37.5%, 62.5%)", [196, 124, 124, 255], +"hsla(30, 37.5%, 62.5%)", [196, 160, 124, 255], +"hsla(60, 37.5%, 62.5%)", [196, 196, 124, 255], +"hsla(90, 37.5%, 62.5%)", [160, 196, 124, 255], +"hsla(120, 37.5%, 62.5%)", [124, 196, 124, 255], +"hsla(150, 37.5%, 62.5%)", [124, 196, 160, 255], +"hsla(180, 37.5%, 62.5%)", [124, 196, 196, 255], +"hsla(210, 37.5%, 62.5%)", [124, 160, 196, 255], +"hsla(240, 37.5%, 62.5%)", [124, 124, 196, 255], +"hsla(270, 37.5%, 62.5%)", [160, 124, 196, 255], +"hsla(300, 37.5%, 62.5%)", [196, 124, 196, 255], +"hsla(330, 37.5%, 62.5%)", [196, 124, 160, 255], +"hsla(0, 50%, 62.5%)", [208, 112, 112, 255], +"hsla(30, 50%, 62.5%)", [208, 160, 112, 255], +"hsla(60, 50%, 62.5%)", [208, 208, 112, 255], +"hsla(90, 50%, 62.5%)", [160, 208, 112, 255], +"hsla(120, 50%, 62.5%)", [112, 208, 112, 255], +"hsla(150, 50%, 62.5%)", [112, 208, 160, 255], +"hsla(180, 50%, 62.5%)", [112, 208, 208, 255], +"hsla(210, 50%, 62.5%)", [112, 160, 208, 255], +"hsla(240, 50%, 62.5%)", [112, 112, 208, 255], +"hsla(270, 50%, 62.5%)", [160, 112, 208, 255], +"hsla(300, 50%, 62.5%)", [208, 112, 208, 255], +"hsla(330, 50%, 62.5%)", [208, 112, 160, 255], +"hsla(0, 62.5%, 62.5%)", [220, 100, 100, 255], +"hsla(30, 62.5%, 62.5%)", [220, 160, 100, 255], +"hsla(60, 62.5%, 62.5%)", [220, 220, 100, 255], +"hsla(90, 62.5%, 62.5%)", [160, 220, 100, 255], +"hsla(120, 62.5%, 62.5%)", [100, 220, 100, 255], +"hsla(150, 62.5%, 62.5%)", [100, 220, 160, 255], +"hsla(180, 62.5%, 62.5%)", [100, 220, 220, 255], +"hsla(210, 62.5%, 62.5%)", [100, 160, 220, 255], +"hsla(240, 62.5%, 62.5%)", [100, 100, 220, 255], +"hsla(270, 62.5%, 62.5%)", [160, 100, 220, 255], +"hsla(300, 62.5%, 62.5%)", [220, 100, 220, 255], +"hsla(330, 62.5%, 62.5%)", [220, 100, 160, 255], +"hsla(0, 75%, 62.5%)", [232, 88, 88, 255], +"hsla(30, 75%, 62.5%)", [232, 160, 88, 255], +"hsla(60, 75%, 62.5%)", [232, 232, 88, 255], +"hsla(90, 75%, 62.5%)", [160, 232, 88, 255], +"hsla(120, 75%, 62.5%)", [88, 232, 88, 255], +"hsla(150, 75%, 62.5%)", [88, 232, 160, 255], +"hsla(180, 75%, 62.5%)", [88, 232, 232, 255], +"hsla(210, 75%, 62.5%)", [88, 160, 232, 255], +"hsla(240, 75%, 62.5%)", [88, 88, 232, 255], +"hsla(270, 75%, 62.5%)", [160, 88, 232, 255], +"hsla(300, 75%, 62.5%)", [232, 88, 232, 255], +"hsla(330, 75%, 62.5%)", [232, 88, 160, 255], +"hsla(0, 87.5%, 62.5%)", [244, 76, 76, 255], +"hsla(30, 87.5%, 62.5%)", [244, 160, 76, 255], +"hsla(60, 87.5%, 62.5%)", [244, 244, 76, 255], +"hsla(90, 87.5%, 62.5%)", [160, 244, 76, 255], +"hsla(120, 87.5%, 62.5%)", [76, 244, 76, 255], +"hsla(150, 87.5%, 62.5%)", [76, 244, 160, 255], +"hsla(180, 87.5%, 62.5%)", [76, 244, 244, 255], +"hsla(210, 87.5%, 62.5%)", [76, 160, 244, 255], +"hsla(240, 87.5%, 62.5%)", [76, 76, 244, 255], +"hsla(270, 87.5%, 62.5%)", [160, 76, 244, 255], +"hsla(300, 87.5%, 62.5%)", [244, 76, 244, 255], +"hsla(330, 87.5%, 62.5%)", [244, 76, 160, 255], +"hsla(0, 100%, 62.5%)", [255, 64, 64, 255], +"hsla(30, 100%, 62.5%)", [255, 160, 64, 255], +"hsla(60, 100%, 62.5%)", [255, 255, 64, 255], +"hsla(90, 100%, 62.5%)", [160, 255, 64, 255], +"hsla(120, 100%, 62.5%)", [64, 255, 64, 255], +"hsla(150, 100%, 62.5%)", [64, 255, 160, 255], +"hsla(180, 100%, 62.5%)", [64, 255, 255, 255], +"hsla(210, 100%, 62.5%)", [64, 160, 255, 255], +"hsla(240, 100%, 62.5%)", [64, 64, 255, 255], +"hsla(270, 100%, 62.5%)", [160, 64, 255, 255], +"hsla(300, 100%, 62.5%)", [255, 64, 255, 255], +"hsla(330, 100%, 62.5%)", [255, 64, 160, 255], +"hsla(0, 0%, 75%)", [192, 192, 192, 255], +"hsla(30, 0%, 75%)", [192, 192, 192, 255], +"hsla(60, 0%, 75%)", [192, 192, 192, 255], +"hsla(90, 0%, 75%)", [192, 192, 192, 255], +"hsla(120, 0%, 75%)", [192, 192, 192, 255], +"hsla(150, 0%, 75%)", [192, 192, 192, 255], +"hsla(180, 0%, 75%)", [192, 192, 192, 255], +"hsla(210, 0%, 75%)", [192, 192, 192, 255], +"hsla(240, 0%, 75%)", [192, 192, 192, 255], +"hsla(270, 0%, 75%)", [192, 192, 192, 255], +"hsla(300, 0%, 75%)", [192, 192, 192, 255], +"hsla(330, 0%, 75%)", [192, 192, 192, 255], +"hsla(0, 12.5%, 75%)", [200, 184, 184, 255], +"hsla(30, 12.5%, 75%)", [200, 192, 184, 255], +"hsla(60, 12.5%, 75%)", [200, 200, 184, 255], +"hsla(90, 12.5%, 75%)", [192, 200, 184, 255], +"hsla(120, 12.5%, 75%)", [184, 200, 184, 255], +"hsla(150, 12.5%, 75%)", [184, 200, 192, 255], +"hsla(180, 12.5%, 75%)", [184, 200, 200, 255], +"hsla(210, 12.5%, 75%)", [184, 192, 200, 255], +"hsla(240, 12.5%, 75%)", [184, 184, 200, 255], +"hsla(270, 12.5%, 75%)", [192, 184, 200, 255], +"hsla(300, 12.5%, 75%)", [200, 184, 200, 255], +"hsla(330, 12.5%, 75%)", [200, 184, 192, 255], +"hsla(0, 25%, 75%)", [208, 176, 176, 255], +"hsla(30, 25%, 75%)", [208, 192, 176, 255], +"hsla(60, 25%, 75%)", [208, 208, 176, 255], +"hsla(90, 25%, 75%)", [192, 208, 176, 255], +"hsla(120, 25%, 75%)", [176, 208, 176, 255], +"hsla(150, 25%, 75%)", [176, 208, 192, 255], +"hsla(180, 25%, 75%)", [176, 208, 208, 255], +"hsla(210, 25%, 75%)", [176, 192, 208, 255], +"hsla(240, 25%, 75%)", [176, 176, 208, 255], +"hsla(270, 25%, 75%)", [192, 176, 208, 255], +"hsla(300, 25%, 75%)", [208, 176, 208, 255], +"hsla(330, 25%, 75%)", [208, 176, 192, 255], +"hsla(0, 37.5%, 75%)", [216, 168, 168, 255], +"hsla(30, 37.5%, 75%)", [216, 192, 168, 255], +"hsla(60, 37.5%, 75%)", [216, 216, 168, 255], +"hsla(90, 37.5%, 75%)", [192, 216, 168, 255], +"hsla(120, 37.5%, 75%)", [168, 216, 168, 255], +"hsla(150, 37.5%, 75%)", [168, 216, 192, 255], +"hsla(180, 37.5%, 75%)", [168, 216, 216, 255], +"hsla(210, 37.5%, 75%)", [168, 192, 216, 255], +"hsla(240, 37.5%, 75%)", [168, 168, 216, 255], +"hsla(270, 37.5%, 75%)", [192, 168, 216, 255], +"hsla(300, 37.5%, 75%)", [216, 168, 216, 255], +"hsla(330, 37.5%, 75%)", [216, 168, 192, 255], +"hsla(0, 50%, 75%)", [224, 160, 160, 255], +"hsla(30, 50%, 75%)", [224, 192, 160, 255], +"hsla(60, 50%, 75%)", [224, 224, 160, 255], +"hsla(90, 50%, 75%)", [192, 224, 160, 255], +"hsla(120, 50%, 75%)", [160, 224, 160, 255], +"hsla(150, 50%, 75%)", [160, 224, 192, 255], +"hsla(180, 50%, 75%)", [160, 224, 224, 255], +"hsla(210, 50%, 75%)", [160, 192, 224, 255], +"hsla(240, 50%, 75%)", [160, 160, 224, 255], +"hsla(270, 50%, 75%)", [192, 160, 224, 255], +"hsla(300, 50%, 75%)", [224, 160, 224, 255], +"hsla(330, 50%, 75%)", [224, 160, 192, 255], +"hsla(0, 62.5%, 75%)", [232, 152, 152, 255], +"hsla(30, 62.5%, 75%)", [232, 192, 152, 255], +"hsla(60, 62.5%, 75%)", [232, 232, 152, 255], +"hsla(90, 62.5%, 75%)", [192, 232, 152, 255], +"hsla(120, 62.5%, 75%)", [152, 232, 152, 255], +"hsla(150, 62.5%, 75%)", [152, 232, 192, 255], +"hsla(180, 62.5%, 75%)", [152, 232, 232, 255], +"hsla(210, 62.5%, 75%)", [152, 192, 232, 255], +"hsla(240, 62.5%, 75%)", [152, 152, 232, 255], +"hsla(270, 62.5%, 75%)", [192, 152, 232, 255], +"hsla(300, 62.5%, 75%)", [232, 152, 232, 255], +"hsla(330, 62.5%, 75%)", [232, 152, 192, 255], +"hsla(0, 75%, 75%)", [240, 144, 144, 255], +"hsla(30, 75%, 75%)", [240, 192, 144, 255], +"hsla(60, 75%, 75%)", [240, 240, 144, 255], +"hsla(90, 75%, 75%)", [192, 240, 144, 255], +"hsla(120, 75%, 75%)", [144, 240, 144, 255], +"hsla(150, 75%, 75%)", [144, 240, 192, 255], +"hsla(180, 75%, 75%)", [144, 240, 240, 255], +"hsla(210, 75%, 75%)", [144, 192, 240, 255], +"hsla(240, 75%, 75%)", [144, 144, 240, 255], +"hsla(270, 75%, 75%)", [192, 144, 240, 255], +"hsla(300, 75%, 75%)", [240, 144, 240, 255], +"hsla(330, 75%, 75%)", [240, 144, 192, 255], +"hsla(0, 87.5%, 75%)", [248, 136, 136, 255], +"hsla(30, 87.5%, 75%)", [248, 192, 136, 255], +"hsla(60, 87.5%, 75%)", [248, 248, 136, 255], +"hsla(90, 87.5%, 75%)", [192, 248, 136, 255], +"hsla(120, 87.5%, 75%)", [136, 248, 136, 255], +"hsla(150, 87.5%, 75%)", [136, 248, 192, 255], +"hsla(180, 87.5%, 75%)", [136, 248, 248, 255], +"hsla(210, 87.5%, 75%)", [136, 192, 248, 255], +"hsla(240, 87.5%, 75%)", [136, 136, 248, 255], +"hsla(270, 87.5%, 75%)", [192, 136, 248, 255], +"hsla(300, 87.5%, 75%)", [248, 136, 248, 255], +"hsla(330, 87.5%, 75%)", [248, 136, 192, 255], +"hsla(0, 100%, 75%)", [255, 128, 128, 255], +"hsla(30, 100%, 75%)", [255, 192, 128, 255], +"hsla(60, 100%, 75%)", [255, 255, 128, 255], +"hsla(90, 100%, 75%)", [192, 255, 128, 255], +"hsla(120, 100%, 75%)", [128, 255, 128, 255], +"hsla(150, 100%, 75%)", [128, 255, 192, 255], +"hsla(180, 100%, 75%)", [128, 255, 255, 255], +"hsla(210, 100%, 75%)", [128, 192, 255, 255], +"hsla(240, 100%, 75%)", [128, 128, 255, 255], +"hsla(270, 100%, 75%)", [192, 128, 255, 255], +"hsla(300, 100%, 75%)", [255, 128, 255, 255], +"hsla(330, 100%, 75%)", [255, 128, 192, 255], +"hsla(0, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(30, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(60, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(90, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(120, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(150, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(180, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(210, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(240, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(270, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(300, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(330, 0%, 87.5%)", [224, 224, 224, 255], +"hsla(0, 12.5%, 87.5%)", [228, 220, 220, 255], +"hsla(30, 12.5%, 87.5%)", [228, 224, 220, 255], +"hsla(60, 12.5%, 87.5%)", [228, 228, 220, 255], +"hsla(90, 12.5%, 87.5%)", [224, 228, 220, 255], +"hsla(120, 12.5%, 87.5%)", [220, 228, 220, 255], +"hsla(150, 12.5%, 87.5%)", [220, 228, 224, 255], +"hsla(180, 12.5%, 87.5%)", [220, 228, 228, 255], +"hsla(210, 12.5%, 87.5%)", [220, 224, 228, 255], +"hsla(240, 12.5%, 87.5%)", [220, 220, 228, 255], +"hsla(270, 12.5%, 87.5%)", [224, 220, 228, 255], +"hsla(300, 12.5%, 87.5%)", [228, 220, 228, 255], +"hsla(330, 12.5%, 87.5%)", [228, 220, 224, 255], +"hsla(0, 25%, 87.5%)", [232, 216, 216, 255], +"hsla(30, 25%, 87.5%)", [232, 224, 216, 255], +"hsla(60, 25%, 87.5%)", [232, 232, 216, 255], +"hsla(90, 25%, 87.5%)", [224, 232, 216, 255], +"hsla(120, 25%, 87.5%)", [216, 232, 216, 255], +"hsla(150, 25%, 87.5%)", [216, 232, 224, 255], +"hsla(180, 25%, 87.5%)", [216, 232, 232, 255], +"hsla(210, 25%, 87.5%)", [216, 224, 232, 255], +"hsla(240, 25%, 87.5%)", [216, 216, 232, 255], +"hsla(270, 25%, 87.5%)", [224, 216, 232, 255], +"hsla(300, 25%, 87.5%)", [232, 216, 232, 255], +"hsla(330, 25%, 87.5%)", [232, 216, 224, 255], +"hsla(0, 37.5%, 87.5%)", [236, 212, 212, 255], +"hsla(30, 37.5%, 87.5%)", [236, 224, 212, 255], +"hsla(60, 37.5%, 87.5%)", [236, 236, 212, 255], +"hsla(90, 37.5%, 87.5%)", [224, 236, 212, 255], +"hsla(120, 37.5%, 87.5%)", [212, 236, 212, 255], +"hsla(150, 37.5%, 87.5%)", [212, 236, 224, 255], +"hsla(180, 37.5%, 87.5%)", [212, 236, 236, 255], +"hsla(210, 37.5%, 87.5%)", [212, 224, 236, 255], +"hsla(240, 37.5%, 87.5%)", [212, 212, 236, 255], +"hsla(270, 37.5%, 87.5%)", [224, 212, 236, 255], +"hsla(300, 37.5%, 87.5%)", [236, 212, 236, 255], +"hsla(330, 37.5%, 87.5%)", [236, 212, 224, 255], +"hsla(0, 50%, 87.5%)", [240, 208, 208, 255], +"hsla(30, 50%, 87.5%)", [240, 224, 208, 255], +"hsla(60, 50%, 87.5%)", [240, 240, 208, 255], +"hsla(90, 50%, 87.5%)", [224, 240, 208, 255], +"hsla(120, 50%, 87.5%)", [208, 240, 208, 255], +"hsla(150, 50%, 87.5%)", [208, 240, 224, 255], +"hsla(180, 50%, 87.5%)", [208, 240, 240, 255], +"hsla(210, 50%, 87.5%)", [208, 224, 240, 255], +"hsla(240, 50%, 87.5%)", [208, 208, 240, 255], +"hsla(270, 50%, 87.5%)", [224, 208, 240, 255], +"hsla(300, 50%, 87.5%)", [240, 208, 240, 255], +"hsla(330, 50%, 87.5%)", [240, 208, 224, 255], +"hsla(0, 62.5%, 87.5%)", [244, 204, 204, 255], +"hsla(30, 62.5%, 87.5%)", [244, 224, 204, 255], +"hsla(60, 62.5%, 87.5%)", [244, 244, 204, 255], +"hsla(90, 62.5%, 87.5%)", [224, 244, 204, 255], +"hsla(120, 62.5%, 87.5%)", [204, 244, 204, 255], +"hsla(150, 62.5%, 87.5%)", [204, 244, 224, 255], +"hsla(180, 62.5%, 87.5%)", [204, 244, 244, 255], +"hsla(210, 62.5%, 87.5%)", [204, 224, 244, 255], +"hsla(240, 62.5%, 87.5%)", [204, 204, 244, 255], +"hsla(270, 62.5%, 87.5%)", [224, 204, 244, 255], +"hsla(300, 62.5%, 87.5%)", [244, 204, 244, 255], +"hsla(330, 62.5%, 87.5%)", [244, 204, 224, 255], +"hsla(0, 75%, 87.5%)", [248, 200, 200, 255], +"hsla(30, 75%, 87.5%)", [248, 224, 200, 255], +"hsla(60, 75%, 87.5%)", [248, 248, 200, 255], +"hsla(90, 75%, 87.5%)", [224, 248, 200, 255], +"hsla(120, 75%, 87.5%)", [200, 248, 200, 255], +"hsla(150, 75%, 87.5%)", [200, 248, 224, 255], +"hsla(180, 75%, 87.5%)", [200, 248, 248, 255], +"hsla(210, 75%, 87.5%)", [200, 224, 248, 255], +"hsla(240, 75%, 87.5%)", [200, 200, 248, 255], +"hsla(270, 75%, 87.5%)", [224, 200, 248, 255], +"hsla(300, 75%, 87.5%)", [248, 200, 248, 255], +"hsla(330, 75%, 87.5%)", [248, 200, 224, 255], +"hsla(0, 87.5%, 87.5%)", [252, 196, 196, 255], +"hsla(30, 87.5%, 87.5%)", [252, 224, 196, 255], +"hsla(60, 87.5%, 87.5%)", [252, 252, 196, 255], +"hsla(90, 87.5%, 87.5%)", [224, 252, 196, 255], +"hsla(120, 87.5%, 87.5%)", [196, 252, 196, 255], +"hsla(150, 87.5%, 87.5%)", [196, 252, 224, 255], +"hsla(180, 87.5%, 87.5%)", [196, 252, 252, 255], +"hsla(210, 87.5%, 87.5%)", [196, 224, 252, 255], +"hsla(240, 87.5%, 87.5%)", [196, 196, 252, 255], +"hsla(270, 87.5%, 87.5%)", [224, 196, 252, 255], +"hsla(300, 87.5%, 87.5%)", [252, 196, 252, 255], +"hsla(330, 87.5%, 87.5%)", [252, 196, 224, 255], +"hsla(0, 100%, 87.5%)", [255, 192, 192, 255], +"hsla(30, 100%, 87.5%)", [255, 224, 192, 255], +"hsla(60, 100%, 87.5%)", [255, 255, 192, 255], +"hsla(90, 100%, 87.5%)", [224, 255, 192, 255], +"hsla(120, 100%, 87.5%)", [192, 255, 192, 255], +"hsla(150, 100%, 87.5%)", [192, 255, 224, 255], +"hsla(180, 100%, 87.5%)", [192, 255, 255, 255], +"hsla(210, 100%, 87.5%)", [192, 224, 255, 255], +"hsla(240, 100%, 87.5%)", [192, 192, 255, 255], +"hsla(270, 100%, 87.5%)", [224, 192, 255, 255], +"hsla(300, 100%, 87.5%)", [255, 192, 255, 255], +"hsla(330, 100%, 87.5%)", [255, 192, 224, 255], +"hsla(0, 0%, 100%)", [255, 255, 255, 255], +"hsla(30, 0%, 100%)", [255, 255, 255, 255], +"hsla(60, 0%, 100%)", [255, 255, 255, 255], +"hsla(90, 0%, 100%)", [255, 255, 255, 255], +"hsla(120, 0%, 100%)", [255, 255, 255, 255], +"hsla(150, 0%, 100%)", [255, 255, 255, 255], +"hsla(180, 0%, 100%)", [255, 255, 255, 255], +"hsla(210, 0%, 100%)", [255, 255, 255, 255], +"hsla(240, 0%, 100%)", [255, 255, 255, 255], +"hsla(270, 0%, 100%)", [255, 255, 255, 255], +"hsla(300, 0%, 100%)", [255, 255, 255, 255], +"hsla(330, 0%, 100%)", [255, 255, 255, 255], +"hsla(0, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(30, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(60, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(90, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(120, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(150, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(180, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(210, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(240, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(270, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(300, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(330, 12.5%, 100%)", [255, 255, 255, 255], +"hsla(0, 25%, 100%)", [255, 255, 255, 255], +"hsla(30, 25%, 100%)", [255, 255, 255, 255], +"hsla(60, 25%, 100%)", [255, 255, 255, 255], +"hsla(90, 25%, 100%)", [255, 255, 255, 255], +"hsla(120, 25%, 100%)", [255, 255, 255, 255], +"hsla(150, 25%, 100%)", [255, 255, 255, 255], +"hsla(180, 25%, 100%)", [255, 255, 255, 255], +"hsla(210, 25%, 100%)", [255, 255, 255, 255], +"hsla(240, 25%, 100%)", [255, 255, 255, 255], +"hsla(270, 25%, 100%)", [255, 255, 255, 255], +"hsla(300, 25%, 100%)", [255, 255, 255, 255], +"hsla(330, 25%, 100%)", [255, 255, 255, 255], +"hsla(0, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(30, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(60, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(90, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(120, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(150, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(180, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(210, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(240, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(270, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(300, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(330, 37.5%, 100%)", [255, 255, 255, 255], +"hsla(0, 50%, 100%)", [255, 255, 255, 255], +"hsla(30, 50%, 100%)", [255, 255, 255, 255], +"hsla(60, 50%, 100%)", [255, 255, 255, 255], +"hsla(90, 50%, 100%)", [255, 255, 255, 255], +"hsla(120, 50%, 100%)", [255, 255, 255, 255], +"hsla(150, 50%, 100%)", [255, 255, 255, 255], +"hsla(180, 50%, 100%)", [255, 255, 255, 255], +"hsla(210, 50%, 100%)", [255, 255, 255, 255], +"hsla(240, 50%, 100%)", [255, 255, 255, 255], +"hsla(270, 50%, 100%)", [255, 255, 255, 255], +"hsla(300, 50%, 100%)", [255, 255, 255, 255], +"hsla(330, 50%, 100%)", [255, 255, 255, 255], +"hsla(0, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(30, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(60, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(90, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(120, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(150, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(180, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(210, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(240, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(270, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(300, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(330, 62.5%, 100%)", [255, 255, 255, 255], +"hsla(0, 75%, 100%)", [255, 255, 255, 255], +"hsla(30, 75%, 100%)", [255, 255, 255, 255], +"hsla(60, 75%, 100%)", [255, 255, 255, 255], +"hsla(90, 75%, 100%)", [255, 255, 255, 255], +"hsla(120, 75%, 100%)", [255, 255, 255, 255], +"hsla(150, 75%, 100%)", [255, 255, 255, 255], +"hsla(180, 75%, 100%)", [255, 255, 255, 255], +"hsla(210, 75%, 100%)", [255, 255, 255, 255], +"hsla(240, 75%, 100%)", [255, 255, 255, 255], +"hsla(270, 75%, 100%)", [255, 255, 255, 255], +"hsla(300, 75%, 100%)", [255, 255, 255, 255], +"hsla(330, 75%, 100%)", [255, 255, 255, 255], +"hsla(0, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(30, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(60, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(90, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(120, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(150, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(180, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(210, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(240, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(270, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(300, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(330, 87.5%, 100%)", [255, 255, 255, 255], +"hsla(0, 100%, 100%)", [255, 255, 255, 255], +"hsla(30, 100%, 100%)", [255, 255, 255, 255], +"hsla(60, 100%, 100%)", [255, 255, 255, 255], +"hsla(90, 100%, 100%)", [255, 255, 255, 255], +"hsla(120, 100%, 100%)", [255, 255, 255, 255], +"hsla(150, 100%, 100%)", [255, 255, 255, 255], +"hsla(180, 100%, 100%)", [255, 255, 255, 255], +"hsla(210, 100%, 100%)", [255, 255, 255, 255], +"hsla(240, 100%, 100%)", [255, 255, 255, 255], +"hsla(270, 100%, 100%)", [255, 255, 255, 255], +"hsla(300, 100%, 100%)", [255, 255, 255, 255], +"hsla(330, 100%, 100%)", [255, 255, 255, 255], "hsla(0, 0%, 0%, 1.0)", [0, 0, 0, 255], "hsla(30, 0%, 0%, 1.0)", [0, 0, 0, 255], "hsla(60, 0%, 0%, 1.0)", [0, 0, 0, 255], @@ -3886,5 +7774,7781 @@ "hsla(240, 100%, 100%, 0.0)", [255, 255, 255, 0], "hsla(270, 100%, 100%, 0.0)", [255, 255, 255, 0], "hsla(300, 100%, 100%, 0.0)", [255, 255, 255, 0], -"hsla(330, 100%, 100%, 0.0)", [255, 255, 255, 0] +"hsla(330, 100%, 100%, 0.0)", [255, 255, 255, 0], +"hsl(0 0% 0%)", [0, 0, 0, 255], +"hsl(30 0% 0%)", [0, 0, 0, 255], +"hsl(60 0% 0%)", [0, 0, 0, 255], +"hsl(90 0% 0%)", [0, 0, 0, 255], +"hsl(120 0% 0%)", [0, 0, 0, 255], +"hsl(150 0% 0%)", [0, 0, 0, 255], +"hsl(180 0% 0%)", [0, 0, 0, 255], +"hsl(210 0% 0%)", [0, 0, 0, 255], +"hsl(240 0% 0%)", [0, 0, 0, 255], +"hsl(270 0% 0%)", [0, 0, 0, 255], +"hsl(300 0% 0%)", [0, 0, 0, 255], +"hsl(330 0% 0%)", [0, 0, 0, 255], +"hsl(0 12.5% 0%)", [0, 0, 0, 255], +"hsl(30 12.5% 0%)", [0, 0, 0, 255], +"hsl(60 12.5% 0%)", [0, 0, 0, 255], +"hsl(90 12.5% 0%)", [0, 0, 0, 255], +"hsl(120 12.5% 0%)", [0, 0, 0, 255], +"hsl(150 12.5% 0%)", [0, 0, 0, 255], +"hsl(180 12.5% 0%)", [0, 0, 0, 255], +"hsl(210 12.5% 0%)", [0, 0, 0, 255], +"hsl(240 12.5% 0%)", [0, 0, 0, 255], +"hsl(270 12.5% 0%)", [0, 0, 0, 255], +"hsl(300 12.5% 0%)", [0, 0, 0, 255], +"hsl(330 12.5% 0%)", [0, 0, 0, 255], +"hsl(0 25% 0%)", [0, 0, 0, 255], +"hsl(30 25% 0%)", [0, 0, 0, 255], +"hsl(60 25% 0%)", [0, 0, 0, 255], +"hsl(90 25% 0%)", [0, 0, 0, 255], +"hsl(120 25% 0%)", [0, 0, 0, 255], +"hsl(150 25% 0%)", [0, 0, 0, 255], +"hsl(180 25% 0%)", [0, 0, 0, 255], +"hsl(210 25% 0%)", [0, 0, 0, 255], +"hsl(240 25% 0%)", [0, 0, 0, 255], +"hsl(270 25% 0%)", [0, 0, 0, 255], +"hsl(300 25% 0%)", [0, 0, 0, 255], +"hsl(330 25% 0%)", [0, 0, 0, 255], +"hsl(0 37.5% 0%)", [0, 0, 0, 255], +"hsl(30 37.5% 0%)", [0, 0, 0, 255], +"hsl(60 37.5% 0%)", [0, 0, 0, 255], +"hsl(90 37.5% 0%)", [0, 0, 0, 255], +"hsl(120 37.5% 0%)", [0, 0, 0, 255], +"hsl(150 37.5% 0%)", [0, 0, 0, 255], +"hsl(180 37.5% 0%)", [0, 0, 0, 255], +"hsl(210 37.5% 0%)", [0, 0, 0, 255], +"hsl(240 37.5% 0%)", [0, 0, 0, 255], +"hsl(270 37.5% 0%)", [0, 0, 0, 255], +"hsl(300 37.5% 0%)", [0, 0, 0, 255], +"hsl(330 37.5% 0%)", [0, 0, 0, 255], +"hsl(0 50% 0%)", [0, 0, 0, 255], +"hsl(30 50% 0%)", [0, 0, 0, 255], +"hsl(60 50% 0%)", [0, 0, 0, 255], +"hsl(90 50% 0%)", [0, 0, 0, 255], +"hsl(120 50% 0%)", [0, 0, 0, 255], +"hsl(150 50% 0%)", [0, 0, 0, 255], +"hsl(180 50% 0%)", [0, 0, 0, 255], +"hsl(210 50% 0%)", [0, 0, 0, 255], +"hsl(240 50% 0%)", [0, 0, 0, 255], +"hsl(270 50% 0%)", [0, 0, 0, 255], +"hsl(300 50% 0%)", [0, 0, 0, 255], +"hsl(330 50% 0%)", [0, 0, 0, 255], +"hsl(0 62.5% 0%)", [0, 0, 0, 255], +"hsl(30 62.5% 0%)", [0, 0, 0, 255], +"hsl(60 62.5% 0%)", [0, 0, 0, 255], +"hsl(90 62.5% 0%)", [0, 0, 0, 255], +"hsl(120 62.5% 0%)", [0, 0, 0, 255], +"hsl(150 62.5% 0%)", [0, 0, 0, 255], +"hsl(180 62.5% 0%)", [0, 0, 0, 255], +"hsl(210 62.5% 0%)", [0, 0, 0, 255], +"hsl(240 62.5% 0%)", [0, 0, 0, 255], +"hsl(270 62.5% 0%)", [0, 0, 0, 255], +"hsl(300 62.5% 0%)", [0, 0, 0, 255], +"hsl(330 62.5% 0%)", [0, 0, 0, 255], +"hsl(0 75% 0%)", [0, 0, 0, 255], +"hsl(30 75% 0%)", [0, 0, 0, 255], +"hsl(60 75% 0%)", [0, 0, 0, 255], +"hsl(90 75% 0%)", [0, 0, 0, 255], +"hsl(120 75% 0%)", [0, 0, 0, 255], +"hsl(150 75% 0%)", [0, 0, 0, 255], +"hsl(180 75% 0%)", [0, 0, 0, 255], +"hsl(210 75% 0%)", [0, 0, 0, 255], +"hsl(240 75% 0%)", [0, 0, 0, 255], +"hsl(270 75% 0%)", [0, 0, 0, 255], +"hsl(300 75% 0%)", [0, 0, 0, 255], +"hsl(330 75% 0%)", [0, 0, 0, 255], +"hsl(0 87.5% 0%)", [0, 0, 0, 255], +"hsl(30 87.5% 0%)", [0, 0, 0, 255], +"hsl(60 87.5% 0%)", [0, 0, 0, 255], +"hsl(90 87.5% 0%)", [0, 0, 0, 255], +"hsl(120 87.5% 0%)", [0, 0, 0, 255], +"hsl(150 87.5% 0%)", [0, 0, 0, 255], +"hsl(180 87.5% 0%)", [0, 0, 0, 255], +"hsl(210 87.5% 0%)", [0, 0, 0, 255], +"hsl(240 87.5% 0%)", [0, 0, 0, 255], +"hsl(270 87.5% 0%)", [0, 0, 0, 255], +"hsl(300 87.5% 0%)", [0, 0, 0, 255], +"hsl(330 87.5% 0%)", [0, 0, 0, 255], +"hsl(0 100% 0%)", [0, 0, 0, 255], +"hsl(30 100% 0%)", [0, 0, 0, 255], +"hsl(60 100% 0%)", [0, 0, 0, 255], +"hsl(90 100% 0%)", [0, 0, 0, 255], +"hsl(120 100% 0%)", [0, 0, 0, 255], +"hsl(150 100% 0%)", [0, 0, 0, 255], +"hsl(180 100% 0%)", [0, 0, 0, 255], +"hsl(210 100% 0%)", [0, 0, 0, 255], +"hsl(240 100% 0%)", [0, 0, 0, 255], +"hsl(270 100% 0%)", [0, 0, 0, 255], +"hsl(300 100% 0%)", [0, 0, 0, 255], +"hsl(330 100% 0%)", [0, 0, 0, 255], +"hsl(0 0% 12.5%)", [32, 32, 32, 255], +"hsl(30 0% 12.5%)", [32, 32, 32, 255], +"hsl(60 0% 12.5%)", [32, 32, 32, 255], +"hsl(90 0% 12.5%)", [32, 32, 32, 255], +"hsl(120 0% 12.5%)", [32, 32, 32, 255], +"hsl(150 0% 12.5%)", [32, 32, 32, 255], +"hsl(180 0% 12.5%)", [32, 32, 32, 255], +"hsl(210 0% 12.5%)", [32, 32, 32, 255], +"hsl(240 0% 12.5%)", [32, 32, 32, 255], +"hsl(270 0% 12.5%)", [32, 32, 32, 255], +"hsl(300 0% 12.5%)", [32, 32, 32, 255], +"hsl(330 0% 12.5%)", [32, 32, 32, 255], +"hsl(0 12.5% 12.5%)", [36, 28, 28, 255], +"hsl(30 12.5% 12.5%)", [36, 32, 28, 255], +"hsl(60 12.5% 12.5%)", [36, 36, 28, 255], +"hsl(90 12.5% 12.5%)", [32, 36, 28, 255], +"hsl(120 12.5% 12.5%)", [28, 36, 28, 255], +"hsl(150 12.5% 12.5%)", [28, 36, 32, 255], +"hsl(180 12.5% 12.5%)", [28, 36, 36, 255], +"hsl(210 12.5% 12.5%)", [28, 32, 36, 255], +"hsl(240 12.5% 12.5%)", [28, 28, 36, 255], +"hsl(270 12.5% 12.5%)", [32, 28, 36, 255], +"hsl(300 12.5% 12.5%)", [36, 28, 36, 255], +"hsl(330 12.5% 12.5%)", [36, 28, 32, 255], +"hsl(0 25% 12.5%)", [40, 24, 24, 255], +"hsl(30 25% 12.5%)", [40, 32, 24, 255], +"hsl(60 25% 12.5%)", [40, 40, 24, 255], +"hsl(90 25% 12.5%)", [32, 40, 24, 255], +"hsl(120 25% 12.5%)", [24, 40, 24, 255], +"hsl(150 25% 12.5%)", [24, 40, 32, 255], +"hsl(180 25% 12.5%)", [24, 40, 40, 255], +"hsl(210 25% 12.5%)", [24, 32, 40, 255], +"hsl(240 25% 12.5%)", [24, 24, 40, 255], +"hsl(270 25% 12.5%)", [32, 24, 40, 255], +"hsl(300 25% 12.5%)", [40, 24, 40, 255], +"hsl(330 25% 12.5%)", [40, 24, 32, 255], +"hsl(0 37.5% 12.5%)", [44, 20, 20, 255], +"hsl(30 37.5% 12.5%)", [44, 32, 20, 255], +"hsl(60 37.5% 12.5%)", [44, 44, 20, 255], +"hsl(90 37.5% 12.5%)", [32, 44, 20, 255], +"hsl(120 37.5% 12.5%)", [20, 44, 20, 255], +"hsl(150 37.5% 12.5%)", [20, 44, 32, 255], +"hsl(180 37.5% 12.5%)", [20, 44, 44, 255], +"hsl(210 37.5% 12.5%)", [20, 32, 44, 255], +"hsl(240 37.5% 12.5%)", [20, 20, 44, 255], +"hsl(270 37.5% 12.5%)", [32, 20, 44, 255], +"hsl(300 37.5% 12.5%)", [44, 20, 44, 255], +"hsl(330 37.5% 12.5%)", [44, 20, 32, 255], +"hsl(0 50% 12.5%)", [48, 16, 16, 255], +"hsl(30 50% 12.5%)", [48, 32, 16, 255], +"hsl(60 50% 12.5%)", [48, 48, 16, 255], +"hsl(90 50% 12.5%)", [32, 48, 16, 255], +"hsl(120 50% 12.5%)", [16, 48, 16, 255], +"hsl(150 50% 12.5%)", [16, 48, 32, 255], +"hsl(180 50% 12.5%)", [16, 48, 48, 255], +"hsl(210 50% 12.5%)", [16, 32, 48, 255], +"hsl(240 50% 12.5%)", [16, 16, 48, 255], +"hsl(270 50% 12.5%)", [32, 16, 48, 255], +"hsl(300 50% 12.5%)", [48, 16, 48, 255], +"hsl(330 50% 12.5%)", [48, 16, 32, 255], +"hsl(0 62.5% 12.5%)", [52, 12, 12, 255], +"hsl(30 62.5% 12.5%)", [52, 32, 12, 255], +"hsl(60 62.5% 12.5%)", [52, 52, 12, 255], +"hsl(90 62.5% 12.5%)", [32, 52, 12, 255], +"hsl(120 62.5% 12.5%)", [12, 52, 12, 255], +"hsl(150 62.5% 12.5%)", [12, 52, 32, 255], +"hsl(180 62.5% 12.5%)", [12, 52, 52, 255], +"hsl(210 62.5% 12.5%)", [12, 32, 52, 255], +"hsl(240 62.5% 12.5%)", [12, 12, 52, 255], +"hsl(270 62.5% 12.5%)", [32, 12, 52, 255], +"hsl(300 62.5% 12.5%)", [52, 12, 52, 255], +"hsl(330 62.5% 12.5%)", [52, 12, 32, 255], +"hsl(0 75% 12.5%)", [56, 8, 8, 255], +"hsl(30 75% 12.5%)", [56, 32, 8, 255], +"hsl(60 75% 12.5%)", [56, 56, 8, 255], +"hsl(90 75% 12.5%)", [32, 56, 8, 255], +"hsl(120 75% 12.5%)", [8, 56, 8, 255], +"hsl(150 75% 12.5%)", [8, 56, 32, 255], +"hsl(180 75% 12.5%)", [8, 56, 56, 255], +"hsl(210 75% 12.5%)", [8, 32, 56, 255], +"hsl(240 75% 12.5%)", [8, 8, 56, 255], +"hsl(270 75% 12.5%)", [32, 8, 56, 255], +"hsl(300 75% 12.5%)", [56, 8, 56, 255], +"hsl(330 75% 12.5%)", [56, 8, 32, 255], +"hsl(0 87.5% 12.5%)", [60, 4, 4, 255], +"hsl(30 87.5% 12.5%)", [60, 32, 4, 255], +"hsl(60 87.5% 12.5%)", [60, 60, 4, 255], +"hsl(90 87.5% 12.5%)", [32, 60, 4, 255], +"hsl(120 87.5% 12.5%)", [4, 60, 4, 255], +"hsl(150 87.5% 12.5%)", [4, 60, 32, 255], +"hsl(180 87.5% 12.5%)", [4, 60, 60, 255], +"hsl(210 87.5% 12.5%)", [4, 32, 60, 255], +"hsl(240 87.5% 12.5%)", [4, 4, 60, 255], +"hsl(270 87.5% 12.5%)", [32, 4, 60, 255], +"hsl(300 87.5% 12.5%)", [60, 4, 60, 255], +"hsl(330 87.5% 12.5%)", [60, 4, 32, 255], +"hsl(0 100% 12.5%)", [64, 0, 0, 255], +"hsl(30 100% 12.5%)", [64, 32, 0, 255], +"hsl(60 100% 12.5%)", [64, 64, 0, 255], +"hsl(90 100% 12.5%)", [32, 64, 0, 255], +"hsl(120 100% 12.5%)", [0, 64, 0, 255], +"hsl(150 100% 12.5%)", [0, 64, 32, 255], +"hsl(180 100% 12.5%)", [0, 64, 64, 255], +"hsl(210 100% 12.5%)", [0, 32, 64, 255], +"hsl(240 100% 12.5%)", [0, 0, 64, 255], +"hsl(270 100% 12.5%)", [32, 0, 64, 255], +"hsl(300 100% 12.5%)", [64, 0, 64, 255], +"hsl(330 100% 12.5%)", [64, 0, 32, 255], +"hsl(0 0% 25%)", [64, 64, 64, 255], +"hsl(30 0% 25%)", [64, 64, 64, 255], +"hsl(60 0% 25%)", [64, 64, 64, 255], +"hsl(90 0% 25%)", [64, 64, 64, 255], +"hsl(120 0% 25%)", [64, 64, 64, 255], +"hsl(150 0% 25%)", [64, 64, 64, 255], +"hsl(180 0% 25%)", [64, 64, 64, 255], +"hsl(210 0% 25%)", [64, 64, 64, 255], +"hsl(240 0% 25%)", [64, 64, 64, 255], +"hsl(270 0% 25%)", [64, 64, 64, 255], +"hsl(300 0% 25%)", [64, 64, 64, 255], +"hsl(330 0% 25%)", [64, 64, 64, 255], +"hsl(0 12.5% 25%)", [72, 56, 56, 255], +"hsl(30 12.5% 25%)", [72, 64, 56, 255], +"hsl(60 12.5% 25%)", [72, 72, 56, 255], +"hsl(90 12.5% 25%)", [64, 72, 56, 255], +"hsl(120 12.5% 25%)", [56, 72, 56, 255], +"hsl(150 12.5% 25%)", [56, 72, 64, 255], +"hsl(180 12.5% 25%)", [56, 72, 72, 255], +"hsl(210 12.5% 25%)", [56, 64, 72, 255], +"hsl(240 12.5% 25%)", [56, 56, 72, 255], +"hsl(270 12.5% 25%)", [64, 56, 72, 255], +"hsl(300 12.5% 25%)", [72, 56, 72, 255], +"hsl(330 12.5% 25%)", [72, 56, 64, 255], +"hsl(0 25% 25%)", [80, 48, 48, 255], +"hsl(30 25% 25%)", [80, 64, 48, 255], +"hsl(60 25% 25%)", [80, 80, 48, 255], +"hsl(90 25% 25%)", [64, 80, 48, 255], +"hsl(120 25% 25%)", [48, 80, 48, 255], +"hsl(150 25% 25%)", [48, 80, 64, 255], +"hsl(180 25% 25%)", [48, 80, 80, 255], +"hsl(210 25% 25%)", [48, 64, 80, 255], +"hsl(240 25% 25%)", [48, 48, 80, 255], +"hsl(270 25% 25%)", [64, 48, 80, 255], +"hsl(300 25% 25%)", [80, 48, 80, 255], +"hsl(330 25% 25%)", [80, 48, 64, 255], +"hsl(0 37.5% 25%)", [88, 40, 40, 255], +"hsl(30 37.5% 25%)", [88, 64, 40, 255], +"hsl(60 37.5% 25%)", [88, 88, 40, 255], +"hsl(90 37.5% 25%)", [64, 88, 40, 255], +"hsl(120 37.5% 25%)", [40, 88, 40, 255], +"hsl(150 37.5% 25%)", [40, 88, 64, 255], +"hsl(180 37.5% 25%)", [40, 88, 88, 255], +"hsl(210 37.5% 25%)", [40, 64, 88, 255], +"hsl(240 37.5% 25%)", [40, 40, 88, 255], +"hsl(270 37.5% 25%)", [64, 40, 88, 255], +"hsl(300 37.5% 25%)", [88, 40, 88, 255], +"hsl(330 37.5% 25%)", [88, 40, 64, 255], +"hsl(0 50% 25%)", [96, 32, 32, 255], +"hsl(30 50% 25%)", [96, 64, 32, 255], +"hsl(60 50% 25%)", [96, 96, 32, 255], +"hsl(90 50% 25%)", [64, 96, 32, 255], +"hsl(120 50% 25%)", [32, 96, 32, 255], +"hsl(150 50% 25%)", [32, 96, 64, 255], +"hsl(180 50% 25%)", [32, 96, 96, 255], +"hsl(210 50% 25%)", [32, 64, 96, 255], +"hsl(240 50% 25%)", [32, 32, 96, 255], +"hsl(270 50% 25%)", [64, 32, 96, 255], +"hsl(300 50% 25%)", [96, 32, 96, 255], +"hsl(330 50% 25%)", [96, 32, 64, 255], +"hsl(0 62.5% 25%)", [104, 24, 24, 255], +"hsl(30 62.5% 25%)", [104, 64, 24, 255], +"hsl(60 62.5% 25%)", [104, 104, 24, 255], +"hsl(90 62.5% 25%)", [64, 104, 24, 255], +"hsl(120 62.5% 25%)", [24, 104, 24, 255], +"hsl(150 62.5% 25%)", [24, 104, 64, 255], +"hsl(180 62.5% 25%)", [24, 104, 104, 255], +"hsl(210 62.5% 25%)", [24, 64, 104, 255], +"hsl(240 62.5% 25%)", [24, 24, 104, 255], +"hsl(270 62.5% 25%)", [64, 24, 104, 255], +"hsl(300 62.5% 25%)", [104, 24, 104, 255], +"hsl(330 62.5% 25%)", [104, 24, 64, 255], +"hsl(0 75% 25%)", [112, 16, 16, 255], +"hsl(30 75% 25%)", [112, 64, 16, 255], +"hsl(60 75% 25%)", [112, 112, 16, 255], +"hsl(90 75% 25%)", [64, 112, 16, 255], +"hsl(120 75% 25%)", [16, 112, 16, 255], +"hsl(150 75% 25%)", [16, 112, 64, 255], +"hsl(180 75% 25%)", [16, 112, 112, 255], +"hsl(210 75% 25%)", [16, 64, 112, 255], +"hsl(240 75% 25%)", [16, 16, 112, 255], +"hsl(270 75% 25%)", [64, 16, 112, 255], +"hsl(300 75% 25%)", [112, 16, 112, 255], +"hsl(330 75% 25%)", [112, 16, 64, 255], +"hsl(0 87.5% 25%)", [120, 8, 8, 255], +"hsl(30 87.5% 25%)", [120, 64, 8, 255], +"hsl(60 87.5% 25%)", [120, 120, 8, 255], +"hsl(90 87.5% 25%)", [64, 120, 8, 255], +"hsl(120 87.5% 25%)", [8, 120, 8, 255], +"hsl(150 87.5% 25%)", [8, 120, 64, 255], +"hsl(180 87.5% 25%)", [8, 120, 120, 255], +"hsl(210 87.5% 25%)", [8, 64, 120, 255], +"hsl(240 87.5% 25%)", [8, 8, 120, 255], +"hsl(270 87.5% 25%)", [64, 8, 120, 255], +"hsl(300 87.5% 25%)", [120, 8, 120, 255], +"hsl(330 87.5% 25%)", [120, 8, 64, 255], +"hsl(0 100% 25%)", [128, 0, 0, 255], +"hsl(30 100% 25%)", [128, 64, 0, 255], +"hsl(60 100% 25%)", [128, 128, 0, 255], +"hsl(90 100% 25%)", [64, 128, 0, 255], +"hsl(120 100% 25%)", [0, 128, 0, 255], +"hsl(150 100% 25%)", [0, 128, 64, 255], +"hsl(180 100% 25%)", [0, 128, 128, 255], +"hsl(210 100% 25%)", [0, 64, 128, 255], +"hsl(240 100% 25%)", [0, 0, 128, 255], +"hsl(270 100% 25%)", [64, 0, 128, 255], +"hsl(300 100% 25%)", [128, 0, 128, 255], +"hsl(330 100% 25%)", [128, 0, 64, 255], +"hsl(0 0% 37.5%)", [96, 96, 96, 255], +"hsl(30 0% 37.5%)", [96, 96, 96, 255], +"hsl(60 0% 37.5%)", [96, 96, 96, 255], +"hsl(90 0% 37.5%)", [96, 96, 96, 255], +"hsl(120 0% 37.5%)", [96, 96, 96, 255], +"hsl(150 0% 37.5%)", [96, 96, 96, 255], +"hsl(180 0% 37.5%)", [96, 96, 96, 255], +"hsl(210 0% 37.5%)", [96, 96, 96, 255], +"hsl(240 0% 37.5%)", [96, 96, 96, 255], +"hsl(270 0% 37.5%)", [96, 96, 96, 255], +"hsl(300 0% 37.5%)", [96, 96, 96, 255], +"hsl(330 0% 37.5%)", [96, 96, 96, 255], +"hsl(0 12.5% 37.5%)", [108, 84, 84, 255], +"hsl(30 12.5% 37.5%)", [108, 96, 84, 255], +"hsl(60 12.5% 37.5%)", [108, 108, 84, 255], +"hsl(90 12.5% 37.5%)", [96, 108, 84, 255], +"hsl(120 12.5% 37.5%)", [84, 108, 84, 255], +"hsl(150 12.5% 37.5%)", [84, 108, 96, 255], +"hsl(180 12.5% 37.5%)", [84, 108, 108, 255], +"hsl(210 12.5% 37.5%)", [84, 96, 108, 255], +"hsl(240 12.5% 37.5%)", [84, 84, 108, 255], +"hsl(270 12.5% 37.5%)", [96, 84, 108, 255], +"hsl(300 12.5% 37.5%)", [108, 84, 108, 255], +"hsl(330 12.5% 37.5%)", [108, 84, 96, 255], +"hsl(0 25% 37.5%)", [120, 72, 72, 255], +"hsl(30 25% 37.5%)", [120, 96, 72, 255], +"hsl(60 25% 37.5%)", [120, 120, 72, 255], +"hsl(90 25% 37.5%)", [96, 120, 72, 255], +"hsl(120 25% 37.5%)", [72, 120, 72, 255], +"hsl(150 25% 37.5%)", [72, 120, 96, 255], +"hsl(180 25% 37.5%)", [72, 120, 120, 255], +"hsl(210 25% 37.5%)", [72, 96, 120, 255], +"hsl(240 25% 37.5%)", [72, 72, 120, 255], +"hsl(270 25% 37.5%)", [96, 72, 120, 255], +"hsl(300 25% 37.5%)", [120, 72, 120, 255], +"hsl(330 25% 37.5%)", [120, 72, 96, 255], +"hsl(0 37.5% 37.5%)", [132, 60, 60, 255], +"hsl(30 37.5% 37.5%)", [132, 96, 60, 255], +"hsl(60 37.5% 37.5%)", [132, 132, 60, 255], +"hsl(90 37.5% 37.5%)", [96, 132, 60, 255], +"hsl(120 37.5% 37.5%)", [60, 132, 60, 255], +"hsl(150 37.5% 37.5%)", [60, 132, 96, 255], +"hsl(180 37.5% 37.5%)", [60, 132, 132, 255], +"hsl(210 37.5% 37.5%)", [60, 96, 132, 255], +"hsl(240 37.5% 37.5%)", [60, 60, 132, 255], +"hsl(270 37.5% 37.5%)", [96, 60, 132, 255], +"hsl(300 37.5% 37.5%)", [132, 60, 132, 255], +"hsl(330 37.5% 37.5%)", [132, 60, 96, 255], +"hsl(0 50% 37.5%)", [144, 48, 48, 255], +"hsl(30 50% 37.5%)", [144, 96, 48, 255], +"hsl(60 50% 37.5%)", [144, 144, 48, 255], +"hsl(90 50% 37.5%)", [96, 144, 48, 255], +"hsl(120 50% 37.5%)", [48, 144, 48, 255], +"hsl(150 50% 37.5%)", [48, 144, 96, 255], +"hsl(180 50% 37.5%)", [48, 144, 144, 255], +"hsl(210 50% 37.5%)", [48, 96, 144, 255], +"hsl(240 50% 37.5%)", [48, 48, 144, 255], +"hsl(270 50% 37.5%)", [96, 48, 144, 255], +"hsl(300 50% 37.5%)", [144, 48, 144, 255], +"hsl(330 50% 37.5%)", [144, 48, 96, 255], +"hsl(0 62.5% 37.5%)", [156, 36, 36, 255], +"hsl(30 62.5% 37.5%)", [156, 96, 36, 255], +"hsl(60 62.5% 37.5%)", [156, 156, 36, 255], +"hsl(90 62.5% 37.5%)", [96, 156, 36, 255], +"hsl(120 62.5% 37.5%)", [36, 156, 36, 255], +"hsl(150 62.5% 37.5%)", [36, 156, 96, 255], +"hsl(180 62.5% 37.5%)", [36, 156, 156, 255], +"hsl(210 62.5% 37.5%)", [36, 96, 156, 255], +"hsl(240 62.5% 37.5%)", [36, 36, 156, 255], +"hsl(270 62.5% 37.5%)", [96, 36, 156, 255], +"hsl(300 62.5% 37.5%)", [156, 36, 156, 255], +"hsl(330 62.5% 37.5%)", [156, 36, 96, 255], +"hsl(0 75% 37.5%)", [168, 24, 24, 255], +"hsl(30 75% 37.5%)", [168, 96, 24, 255], +"hsl(60 75% 37.5%)", [168, 168, 24, 255], +"hsl(90 75% 37.5%)", [96, 168, 24, 255], +"hsl(120 75% 37.5%)", [24, 168, 24, 255], +"hsl(150 75% 37.5%)", [24, 168, 96, 255], +"hsl(180 75% 37.5%)", [24, 168, 168, 255], +"hsl(210 75% 37.5%)", [24, 96, 168, 255], +"hsl(240 75% 37.5%)", [24, 24, 168, 255], +"hsl(270 75% 37.5%)", [96, 24, 168, 255], +"hsl(300 75% 37.5%)", [168, 24, 168, 255], +"hsl(330 75% 37.5%)", [168, 24, 96, 255], +"hsl(0 87.5% 37.5%)", [180, 12, 12, 255], +"hsl(30 87.5% 37.5%)", [180, 96, 12, 255], +"hsl(60 87.5% 37.5%)", [180, 180, 12, 255], +"hsl(90 87.5% 37.5%)", [96, 180, 12, 255], +"hsl(120 87.5% 37.5%)", [12, 180, 12, 255], +"hsl(150 87.5% 37.5%)", [12, 180, 96, 255], +"hsl(180 87.5% 37.5%)", [12, 180, 180, 255], +"hsl(210 87.5% 37.5%)", [12, 96, 180, 255], +"hsl(240 87.5% 37.5%)", [12, 12, 180, 255], +"hsl(270 87.5% 37.5%)", [96, 12, 180, 255], +"hsl(300 87.5% 37.5%)", [180, 12, 180, 255], +"hsl(330 87.5% 37.5%)", [180, 12, 96, 255], +"hsl(0 100% 37.5%)", [192, 0, 0, 255], +"hsl(30 100% 37.5%)", [192, 96, 0, 255], +"hsl(60 100% 37.5%)", [192, 192, 0, 255], +"hsl(90 100% 37.5%)", [96, 192, 0, 255], +"hsl(120 100% 37.5%)", [0, 192, 0, 255], +"hsl(150 100% 37.5%)", [0, 192, 96, 255], +"hsl(180 100% 37.5%)", [0, 192, 192, 255], +"hsl(210 100% 37.5%)", [0, 96, 192, 255], +"hsl(240 100% 37.5%)", [0, 0, 192, 255], +"hsl(270 100% 37.5%)", [96, 0, 192, 255], +"hsl(300 100% 37.5%)", [192, 0, 192, 255], +"hsl(330 100% 37.5%)", [192, 0, 96, 255], +"hsl(0 0% 50%)", [128, 128, 128, 255], +"hsl(30 0% 50%)", [128, 128, 128, 255], +"hsl(60 0% 50%)", [128, 128, 128, 255], +"hsl(90 0% 50%)", [128, 128, 128, 255], +"hsl(120 0% 50%)", [128, 128, 128, 255], +"hsl(150 0% 50%)", [128, 128, 128, 255], +"hsl(180 0% 50%)", [128, 128, 128, 255], +"hsl(210 0% 50%)", [128, 128, 128, 255], +"hsl(240 0% 50%)", [128, 128, 128, 255], +"hsl(270 0% 50%)", [128, 128, 128, 255], +"hsl(300 0% 50%)", [128, 128, 128, 255], +"hsl(330 0% 50%)", [128, 128, 128, 255], +"hsl(0 12.5% 50%)", [144, 112, 112, 255], +"hsl(30 12.5% 50%)", [144, 128, 112, 255], +"hsl(60 12.5% 50%)", [144, 144, 112, 255], +"hsl(90 12.5% 50%)", [128, 144, 112, 255], +"hsl(120 12.5% 50%)", [112, 144, 112, 255], +"hsl(150 12.5% 50%)", [112, 144, 128, 255], +"hsl(180 12.5% 50%)", [112, 144, 144, 255], +"hsl(210 12.5% 50%)", [112, 128, 144, 255], +"hsl(240 12.5% 50%)", [112, 112, 144, 255], +"hsl(270 12.5% 50%)", [128, 112, 144, 255], +"hsl(300 12.5% 50%)", [144, 112, 144, 255], +"hsl(330 12.5% 50%)", [144, 112, 128, 255], +"hsl(0 25% 50%)", [160, 96, 96, 255], +"hsl(30 25% 50%)", [160, 128, 96, 255], +"hsl(60 25% 50%)", [160, 160, 96, 255], +"hsl(90 25% 50%)", [128, 160, 96, 255], +"hsl(120 25% 50%)", [96, 160, 96, 255], +"hsl(150 25% 50%)", [96, 160, 128, 255], +"hsl(180 25% 50%)", [96, 160, 160, 255], +"hsl(210 25% 50%)", [96, 128, 160, 255], +"hsl(240 25% 50%)", [96, 96, 160, 255], +"hsl(270 25% 50%)", [128, 96, 160, 255], +"hsl(300 25% 50%)", [160, 96, 160, 255], +"hsl(330 25% 50%)", [160, 96, 128, 255], +"hsl(0 37.5% 50%)", [176, 80, 80, 255], +"hsl(30 37.5% 50%)", [176, 128, 80, 255], +"hsl(60 37.5% 50%)", [176, 176, 80, 255], +"hsl(90 37.5% 50%)", [128, 176, 80, 255], +"hsl(120 37.5% 50%)", [80, 176, 80, 255], +"hsl(150 37.5% 50%)", [80, 176, 128, 255], +"hsl(180 37.5% 50%)", [80, 176, 176, 255], +"hsl(210 37.5% 50%)", [80, 128, 176, 255], +"hsl(240 37.5% 50%)", [80, 80, 176, 255], +"hsl(270 37.5% 50%)", [128, 80, 176, 255], +"hsl(300 37.5% 50%)", [176, 80, 176, 255], +"hsl(330 37.5% 50%)", [176, 80, 128, 255], +"hsl(0 50% 50%)", [192, 64, 64, 255], +"hsl(30 50% 50%)", [192, 128, 64, 255], +"hsl(60 50% 50%)", [192, 192, 64, 255], +"hsl(90 50% 50%)", [128, 192, 64, 255], +"hsl(120 50% 50%)", [64, 192, 64, 255], +"hsl(150 50% 50%)", [64, 192, 128, 255], +"hsl(180 50% 50%)", [64, 192, 192, 255], +"hsl(210 50% 50%)", [64, 128, 192, 255], +"hsl(240 50% 50%)", [64, 64, 192, 255], +"hsl(270 50% 50%)", [128, 64, 192, 255], +"hsl(300 50% 50%)", [192, 64, 192, 255], +"hsl(330 50% 50%)", [192, 64, 128, 255], +"hsl(0 62.5% 50%)", [208, 48, 48, 255], +"hsl(30 62.5% 50%)", [208, 128, 48, 255], +"hsl(60 62.5% 50%)", [208, 208, 48, 255], +"hsl(90 62.5% 50%)", [128, 208, 48, 255], +"hsl(120 62.5% 50%)", [48, 208, 48, 255], +"hsl(150 62.5% 50%)", [48, 208, 128, 255], +"hsl(180 62.5% 50%)", [48, 208, 208, 255], +"hsl(210 62.5% 50%)", [48, 128, 208, 255], +"hsl(240 62.5% 50%)", [48, 48, 208, 255], +"hsl(270 62.5% 50%)", [128, 48, 208, 255], +"hsl(300 62.5% 50%)", [208, 48, 208, 255], +"hsl(330 62.5% 50%)", [208, 48, 128, 255], +"hsl(0 75% 50%)", [224, 32, 32, 255], +"hsl(30 75% 50%)", [224, 128, 32, 255], +"hsl(60 75% 50%)", [224, 224, 32, 255], +"hsl(90 75% 50%)", [128, 224, 32, 255], +"hsl(120 75% 50%)", [32, 224, 32, 255], +"hsl(150 75% 50%)", [32, 224, 128, 255], +"hsl(180 75% 50%)", [32, 224, 224, 255], +"hsl(210 75% 50%)", [32, 128, 224, 255], +"hsl(240 75% 50%)", [32, 32, 224, 255], +"hsl(270 75% 50%)", [128, 32, 224, 255], +"hsl(300 75% 50%)", [224, 32, 224, 255], +"hsl(330 75% 50%)", [224, 32, 128, 255], +"hsl(0 87.5% 50%)", [240, 16, 16, 255], +"hsl(30 87.5% 50%)", [240, 128, 16, 255], +"hsl(60 87.5% 50%)", [240, 240, 16, 255], +"hsl(90 87.5% 50%)", [128, 240, 16, 255], +"hsl(120 87.5% 50%)", [16, 240, 16, 255], +"hsl(150 87.5% 50%)", [16, 240, 128, 255], +"hsl(180 87.5% 50%)", [16, 240, 240, 255], +"hsl(210 87.5% 50%)", [16, 128, 240, 255], +"hsl(240 87.5% 50%)", [16, 16, 240, 255], +"hsl(270 87.5% 50%)", [128, 16, 240, 255], +"hsl(300 87.5% 50%)", [240, 16, 240, 255], +"hsl(330 87.5% 50%)", [240, 16, 128, 255], +"hsl(0 100% 50%)", [255, 0, 0, 255], +"hsl(30 100% 50%)", [255, 128, 0, 255], +"hsl(60 100% 50%)", [255, 255, 0, 255], +"hsl(90 100% 50%)", [128, 255, 0, 255], +"hsl(120 100% 50%)", [0, 255, 0, 255], +"hsl(150 100% 50%)", [0, 255, 128, 255], +"hsl(180 100% 50%)", [0, 255, 255, 255], +"hsl(210 100% 50%)", [0, 128, 255, 255], +"hsl(240 100% 50%)", [0, 0, 255, 255], +"hsl(270 100% 50%)", [128, 0, 255, 255], +"hsl(300 100% 50%)", [255, 0, 255, 255], +"hsl(330 100% 50%)", [255, 0, 128, 255], +"hsl(0 0% 62.5%)", [160, 160, 160, 255], +"hsl(30 0% 62.5%)", [160, 160, 160, 255], +"hsl(60 0% 62.5%)", [160, 160, 160, 255], +"hsl(90 0% 62.5%)", [160, 160, 160, 255], +"hsl(120 0% 62.5%)", [160, 160, 160, 255], +"hsl(150 0% 62.5%)", [160, 160, 160, 255], +"hsl(180 0% 62.5%)", [160, 160, 160, 255], +"hsl(210 0% 62.5%)", [160, 160, 160, 255], +"hsl(240 0% 62.5%)", [160, 160, 160, 255], +"hsl(270 0% 62.5%)", [160, 160, 160, 255], +"hsl(300 0% 62.5%)", [160, 160, 160, 255], +"hsl(330 0% 62.5%)", [160, 160, 160, 255], +"hsl(0 12.5% 62.5%)", [172, 148, 148, 255], +"hsl(30 12.5% 62.5%)", [172, 160, 148, 255], +"hsl(60 12.5% 62.5%)", [172, 172, 148, 255], +"hsl(90 12.5% 62.5%)", [160, 172, 148, 255], +"hsl(120 12.5% 62.5%)", [148, 172, 148, 255], +"hsl(150 12.5% 62.5%)", [148, 172, 160, 255], +"hsl(180 12.5% 62.5%)", [148, 172, 172, 255], +"hsl(210 12.5% 62.5%)", [148, 160, 172, 255], +"hsl(240 12.5% 62.5%)", [148, 148, 172, 255], +"hsl(270 12.5% 62.5%)", [160, 148, 172, 255], +"hsl(300 12.5% 62.5%)", [172, 148, 172, 255], +"hsl(330 12.5% 62.5%)", [172, 148, 160, 255], +"hsl(0 25% 62.5%)", [184, 136, 136, 255], +"hsl(30 25% 62.5%)", [184, 160, 136, 255], +"hsl(60 25% 62.5%)", [184, 184, 136, 255], +"hsl(90 25% 62.5%)", [160, 184, 136, 255], +"hsl(120 25% 62.5%)", [136, 184, 136, 255], +"hsl(150 25% 62.5%)", [136, 184, 160, 255], +"hsl(180 25% 62.5%)", [136, 184, 184, 255], +"hsl(210 25% 62.5%)", [136, 160, 184, 255], +"hsl(240 25% 62.5%)", [136, 136, 184, 255], +"hsl(270 25% 62.5%)", [160, 136, 184, 255], +"hsl(300 25% 62.5%)", [184, 136, 184, 255], +"hsl(330 25% 62.5%)", [184, 136, 160, 255], +"hsl(0 37.5% 62.5%)", [196, 124, 124, 255], +"hsl(30 37.5% 62.5%)", [196, 160, 124, 255], +"hsl(60 37.5% 62.5%)", [196, 196, 124, 255], +"hsl(90 37.5% 62.5%)", [160, 196, 124, 255], +"hsl(120 37.5% 62.5%)", [124, 196, 124, 255], +"hsl(150 37.5% 62.5%)", [124, 196, 160, 255], +"hsl(180 37.5% 62.5%)", [124, 196, 196, 255], +"hsl(210 37.5% 62.5%)", [124, 160, 196, 255], +"hsl(240 37.5% 62.5%)", [124, 124, 196, 255], +"hsl(270 37.5% 62.5%)", [160, 124, 196, 255], +"hsl(300 37.5% 62.5%)", [196, 124, 196, 255], +"hsl(330 37.5% 62.5%)", [196, 124, 160, 255], +"hsl(0 50% 62.5%)", [208, 112, 112, 255], +"hsl(30 50% 62.5%)", [208, 160, 112, 255], +"hsl(60 50% 62.5%)", [208, 208, 112, 255], +"hsl(90 50% 62.5%)", [160, 208, 112, 255], +"hsl(120 50% 62.5%)", [112, 208, 112, 255], +"hsl(150 50% 62.5%)", [112, 208, 160, 255], +"hsl(180 50% 62.5%)", [112, 208, 208, 255], +"hsl(210 50% 62.5%)", [112, 160, 208, 255], +"hsl(240 50% 62.5%)", [112, 112, 208, 255], +"hsl(270 50% 62.5%)", [160, 112, 208, 255], +"hsl(300 50% 62.5%)", [208, 112, 208, 255], +"hsl(330 50% 62.5%)", [208, 112, 160, 255], +"hsl(0 62.5% 62.5%)", [220, 100, 100, 255], +"hsl(30 62.5% 62.5%)", [220, 160, 100, 255], +"hsl(60 62.5% 62.5%)", [220, 220, 100, 255], +"hsl(90 62.5% 62.5%)", [160, 220, 100, 255], +"hsl(120 62.5% 62.5%)", [100, 220, 100, 255], +"hsl(150 62.5% 62.5%)", [100, 220, 160, 255], +"hsl(180 62.5% 62.5%)", [100, 220, 220, 255], +"hsl(210 62.5% 62.5%)", [100, 160, 220, 255], +"hsl(240 62.5% 62.5%)", [100, 100, 220, 255], +"hsl(270 62.5% 62.5%)", [160, 100, 220, 255], +"hsl(300 62.5% 62.5%)", [220, 100, 220, 255], +"hsl(330 62.5% 62.5%)", [220, 100, 160, 255], +"hsl(0 75% 62.5%)", [232, 88, 88, 255], +"hsl(30 75% 62.5%)", [232, 160, 88, 255], +"hsl(60 75% 62.5%)", [232, 232, 88, 255], +"hsl(90 75% 62.5%)", [160, 232, 88, 255], +"hsl(120 75% 62.5%)", [88, 232, 88, 255], +"hsl(150 75% 62.5%)", [88, 232, 160, 255], +"hsl(180 75% 62.5%)", [88, 232, 232, 255], +"hsl(210 75% 62.5%)", [88, 160, 232, 255], +"hsl(240 75% 62.5%)", [88, 88, 232, 255], +"hsl(270 75% 62.5%)", [160, 88, 232, 255], +"hsl(300 75% 62.5%)", [232, 88, 232, 255], +"hsl(330 75% 62.5%)", [232, 88, 160, 255], +"hsl(0 87.5% 62.5%)", [244, 76, 76, 255], +"hsl(30 87.5% 62.5%)", [244, 160, 76, 255], +"hsl(60 87.5% 62.5%)", [244, 244, 76, 255], +"hsl(90 87.5% 62.5%)", [160, 244, 76, 255], +"hsl(120 87.5% 62.5%)", [76, 244, 76, 255], +"hsl(150 87.5% 62.5%)", [76, 244, 160, 255], +"hsl(180 87.5% 62.5%)", [76, 244, 244, 255], +"hsl(210 87.5% 62.5%)", [76, 160, 244, 255], +"hsl(240 87.5% 62.5%)", [76, 76, 244, 255], +"hsl(270 87.5% 62.5%)", [160, 76, 244, 255], +"hsl(300 87.5% 62.5%)", [244, 76, 244, 255], +"hsl(330 87.5% 62.5%)", [244, 76, 160, 255], +"hsl(0 100% 62.5%)", [255, 64, 64, 255], +"hsl(30 100% 62.5%)", [255, 160, 64, 255], +"hsl(60 100% 62.5%)", [255, 255, 64, 255], +"hsl(90 100% 62.5%)", [160, 255, 64, 255], +"hsl(120 100% 62.5%)", [64, 255, 64, 255], +"hsl(150 100% 62.5%)", [64, 255, 160, 255], +"hsl(180 100% 62.5%)", [64, 255, 255, 255], +"hsl(210 100% 62.5%)", [64, 160, 255, 255], +"hsl(240 100% 62.5%)", [64, 64, 255, 255], +"hsl(270 100% 62.5%)", [160, 64, 255, 255], +"hsl(300 100% 62.5%)", [255, 64, 255, 255], +"hsl(330 100% 62.5%)", [255, 64, 160, 255], +"hsl(0 0% 75%)", [192, 192, 192, 255], +"hsl(30 0% 75%)", [192, 192, 192, 255], +"hsl(60 0% 75%)", [192, 192, 192, 255], +"hsl(90 0% 75%)", [192, 192, 192, 255], +"hsl(120 0% 75%)", [192, 192, 192, 255], +"hsl(150 0% 75%)", [192, 192, 192, 255], +"hsl(180 0% 75%)", [192, 192, 192, 255], +"hsl(210 0% 75%)", [192, 192, 192, 255], +"hsl(240 0% 75%)", [192, 192, 192, 255], +"hsl(270 0% 75%)", [192, 192, 192, 255], +"hsl(300 0% 75%)", [192, 192, 192, 255], +"hsl(330 0% 75%)", [192, 192, 192, 255], +"hsl(0 12.5% 75%)", [200, 184, 184, 255], +"hsl(30 12.5% 75%)", [200, 192, 184, 255], +"hsl(60 12.5% 75%)", [200, 200, 184, 255], +"hsl(90 12.5% 75%)", [192, 200, 184, 255], +"hsl(120 12.5% 75%)", [184, 200, 184, 255], +"hsl(150 12.5% 75%)", [184, 200, 192, 255], +"hsl(180 12.5% 75%)", [184, 200, 200, 255], +"hsl(210 12.5% 75%)", [184, 192, 200, 255], +"hsl(240 12.5% 75%)", [184, 184, 200, 255], +"hsl(270 12.5% 75%)", [192, 184, 200, 255], +"hsl(300 12.5% 75%)", [200, 184, 200, 255], +"hsl(330 12.5% 75%)", [200, 184, 192, 255], +"hsl(0 25% 75%)", [208, 176, 176, 255], +"hsl(30 25% 75%)", [208, 192, 176, 255], +"hsl(60 25% 75%)", [208, 208, 176, 255], +"hsl(90 25% 75%)", [192, 208, 176, 255], +"hsl(120 25% 75%)", [176, 208, 176, 255], +"hsl(150 25% 75%)", [176, 208, 192, 255], +"hsl(180 25% 75%)", [176, 208, 208, 255], +"hsl(210 25% 75%)", [176, 192, 208, 255], +"hsl(240 25% 75%)", [176, 176, 208, 255], +"hsl(270 25% 75%)", [192, 176, 208, 255], +"hsl(300 25% 75%)", [208, 176, 208, 255], +"hsl(330 25% 75%)", [208, 176, 192, 255], +"hsl(0 37.5% 75%)", [216, 168, 168, 255], +"hsl(30 37.5% 75%)", [216, 192, 168, 255], +"hsl(60 37.5% 75%)", [216, 216, 168, 255], +"hsl(90 37.5% 75%)", [192, 216, 168, 255], +"hsl(120 37.5% 75%)", [168, 216, 168, 255], +"hsl(150 37.5% 75%)", [168, 216, 192, 255], +"hsl(180 37.5% 75%)", [168, 216, 216, 255], +"hsl(210 37.5% 75%)", [168, 192, 216, 255], +"hsl(240 37.5% 75%)", [168, 168, 216, 255], +"hsl(270 37.5% 75%)", [192, 168, 216, 255], +"hsl(300 37.5% 75%)", [216, 168, 216, 255], +"hsl(330 37.5% 75%)", [216, 168, 192, 255], +"hsl(0 50% 75%)", [224, 160, 160, 255], +"hsl(30 50% 75%)", [224, 192, 160, 255], +"hsl(60 50% 75%)", [224, 224, 160, 255], +"hsl(90 50% 75%)", [192, 224, 160, 255], +"hsl(120 50% 75%)", [160, 224, 160, 255], +"hsl(150 50% 75%)", [160, 224, 192, 255], +"hsl(180 50% 75%)", [160, 224, 224, 255], +"hsl(210 50% 75%)", [160, 192, 224, 255], +"hsl(240 50% 75%)", [160, 160, 224, 255], +"hsl(270 50% 75%)", [192, 160, 224, 255], +"hsl(300 50% 75%)", [224, 160, 224, 255], +"hsl(330 50% 75%)", [224, 160, 192, 255], +"hsl(0 62.5% 75%)", [232, 152, 152, 255], +"hsl(30 62.5% 75%)", [232, 192, 152, 255], +"hsl(60 62.5% 75%)", [232, 232, 152, 255], +"hsl(90 62.5% 75%)", [192, 232, 152, 255], +"hsl(120 62.5% 75%)", [152, 232, 152, 255], +"hsl(150 62.5% 75%)", [152, 232, 192, 255], +"hsl(180 62.5% 75%)", [152, 232, 232, 255], +"hsl(210 62.5% 75%)", [152, 192, 232, 255], +"hsl(240 62.5% 75%)", [152, 152, 232, 255], +"hsl(270 62.5% 75%)", [192, 152, 232, 255], +"hsl(300 62.5% 75%)", [232, 152, 232, 255], +"hsl(330 62.5% 75%)", [232, 152, 192, 255], +"hsl(0 75% 75%)", [240, 144, 144, 255], +"hsl(30 75% 75%)", [240, 192, 144, 255], +"hsl(60 75% 75%)", [240, 240, 144, 255], +"hsl(90 75% 75%)", [192, 240, 144, 255], +"hsl(120 75% 75%)", [144, 240, 144, 255], +"hsl(150 75% 75%)", [144, 240, 192, 255], +"hsl(180 75% 75%)", [144, 240, 240, 255], +"hsl(210 75% 75%)", [144, 192, 240, 255], +"hsl(240 75% 75%)", [144, 144, 240, 255], +"hsl(270 75% 75%)", [192, 144, 240, 255], +"hsl(300 75% 75%)", [240, 144, 240, 255], +"hsl(330 75% 75%)", [240, 144, 192, 255], +"hsl(0 87.5% 75%)", [248, 136, 136, 255], +"hsl(30 87.5% 75%)", [248, 192, 136, 255], +"hsl(60 87.5% 75%)", [248, 248, 136, 255], +"hsl(90 87.5% 75%)", [192, 248, 136, 255], +"hsl(120 87.5% 75%)", [136, 248, 136, 255], +"hsl(150 87.5% 75%)", [136, 248, 192, 255], +"hsl(180 87.5% 75%)", [136, 248, 248, 255], +"hsl(210 87.5% 75%)", [136, 192, 248, 255], +"hsl(240 87.5% 75%)", [136, 136, 248, 255], +"hsl(270 87.5% 75%)", [192, 136, 248, 255], +"hsl(300 87.5% 75%)", [248, 136, 248, 255], +"hsl(330 87.5% 75%)", [248, 136, 192, 255], +"hsl(0 100% 75%)", [255, 128, 128, 255], +"hsl(30 100% 75%)", [255, 192, 128, 255], +"hsl(60 100% 75%)", [255, 255, 128, 255], +"hsl(90 100% 75%)", [192, 255, 128, 255], +"hsl(120 100% 75%)", [128, 255, 128, 255], +"hsl(150 100% 75%)", [128, 255, 192, 255], +"hsl(180 100% 75%)", [128, 255, 255, 255], +"hsl(210 100% 75%)", [128, 192, 255, 255], +"hsl(240 100% 75%)", [128, 128, 255, 255], +"hsl(270 100% 75%)", [192, 128, 255, 255], +"hsl(300 100% 75%)", [255, 128, 255, 255], +"hsl(330 100% 75%)", [255, 128, 192, 255], +"hsl(0 0% 87.5%)", [224, 224, 224, 255], +"hsl(30 0% 87.5%)", [224, 224, 224, 255], +"hsl(60 0% 87.5%)", [224, 224, 224, 255], +"hsl(90 0% 87.5%)", [224, 224, 224, 255], +"hsl(120 0% 87.5%)", [224, 224, 224, 255], +"hsl(150 0% 87.5%)", [224, 224, 224, 255], +"hsl(180 0% 87.5%)", [224, 224, 224, 255], +"hsl(210 0% 87.5%)", [224, 224, 224, 255], +"hsl(240 0% 87.5%)", [224, 224, 224, 255], +"hsl(270 0% 87.5%)", [224, 224, 224, 255], +"hsl(300 0% 87.5%)", [224, 224, 224, 255], +"hsl(330 0% 87.5%)", [224, 224, 224, 255], +"hsl(0 12.5% 87.5%)", [228, 220, 220, 255], +"hsl(30 12.5% 87.5%)", [228, 224, 220, 255], +"hsl(60 12.5% 87.5%)", [228, 228, 220, 255], +"hsl(90 12.5% 87.5%)", [224, 228, 220, 255], +"hsl(120 12.5% 87.5%)", [220, 228, 220, 255], +"hsl(150 12.5% 87.5%)", [220, 228, 224, 255], +"hsl(180 12.5% 87.5%)", [220, 228, 228, 255], +"hsl(210 12.5% 87.5%)", [220, 224, 228, 255], +"hsl(240 12.5% 87.5%)", [220, 220, 228, 255], +"hsl(270 12.5% 87.5%)", [224, 220, 228, 255], +"hsl(300 12.5% 87.5%)", [228, 220, 228, 255], +"hsl(330 12.5% 87.5%)", [228, 220, 224, 255], +"hsl(0 25% 87.5%)", [232, 216, 216, 255], +"hsl(30 25% 87.5%)", [232, 224, 216, 255], +"hsl(60 25% 87.5%)", [232, 232, 216, 255], +"hsl(90 25% 87.5%)", [224, 232, 216, 255], +"hsl(120 25% 87.5%)", [216, 232, 216, 255], +"hsl(150 25% 87.5%)", [216, 232, 224, 255], +"hsl(180 25% 87.5%)", [216, 232, 232, 255], +"hsl(210 25% 87.5%)", [216, 224, 232, 255], +"hsl(240 25% 87.5%)", [216, 216, 232, 255], +"hsl(270 25% 87.5%)", [224, 216, 232, 255], +"hsl(300 25% 87.5%)", [232, 216, 232, 255], +"hsl(330 25% 87.5%)", [232, 216, 224, 255], +"hsl(0 37.5% 87.5%)", [236, 212, 212, 255], +"hsl(30 37.5% 87.5%)", [236, 224, 212, 255], +"hsl(60 37.5% 87.5%)", [236, 236, 212, 255], +"hsl(90 37.5% 87.5%)", [224, 236, 212, 255], +"hsl(120 37.5% 87.5%)", [212, 236, 212, 255], +"hsl(150 37.5% 87.5%)", [212, 236, 224, 255], +"hsl(180 37.5% 87.5%)", [212, 236, 236, 255], +"hsl(210 37.5% 87.5%)", [212, 224, 236, 255], +"hsl(240 37.5% 87.5%)", [212, 212, 236, 255], +"hsl(270 37.5% 87.5%)", [224, 212, 236, 255], +"hsl(300 37.5% 87.5%)", [236, 212, 236, 255], +"hsl(330 37.5% 87.5%)", [236, 212, 224, 255], +"hsl(0 50% 87.5%)", [240, 208, 208, 255], +"hsl(30 50% 87.5%)", [240, 224, 208, 255], +"hsl(60 50% 87.5%)", [240, 240, 208, 255], +"hsl(90 50% 87.5%)", [224, 240, 208, 255], +"hsl(120 50% 87.5%)", [208, 240, 208, 255], +"hsl(150 50% 87.5%)", [208, 240, 224, 255], +"hsl(180 50% 87.5%)", [208, 240, 240, 255], +"hsl(210 50% 87.5%)", [208, 224, 240, 255], +"hsl(240 50% 87.5%)", [208, 208, 240, 255], +"hsl(270 50% 87.5%)", [224, 208, 240, 255], +"hsl(300 50% 87.5%)", [240, 208, 240, 255], +"hsl(330 50% 87.5%)", [240, 208, 224, 255], +"hsl(0 62.5% 87.5%)", [244, 204, 204, 255], +"hsl(30 62.5% 87.5%)", [244, 224, 204, 255], +"hsl(60 62.5% 87.5%)", [244, 244, 204, 255], +"hsl(90 62.5% 87.5%)", [224, 244, 204, 255], +"hsl(120 62.5% 87.5%)", [204, 244, 204, 255], +"hsl(150 62.5% 87.5%)", [204, 244, 224, 255], +"hsl(180 62.5% 87.5%)", [204, 244, 244, 255], +"hsl(210 62.5% 87.5%)", [204, 224, 244, 255], +"hsl(240 62.5% 87.5%)", [204, 204, 244, 255], +"hsl(270 62.5% 87.5%)", [224, 204, 244, 255], +"hsl(300 62.5% 87.5%)", [244, 204, 244, 255], +"hsl(330 62.5% 87.5%)", [244, 204, 224, 255], +"hsl(0 75% 87.5%)", [248, 200, 200, 255], +"hsl(30 75% 87.5%)", [248, 224, 200, 255], +"hsl(60 75% 87.5%)", [248, 248, 200, 255], +"hsl(90 75% 87.5%)", [224, 248, 200, 255], +"hsl(120 75% 87.5%)", [200, 248, 200, 255], +"hsl(150 75% 87.5%)", [200, 248, 224, 255], +"hsl(180 75% 87.5%)", [200, 248, 248, 255], +"hsl(210 75% 87.5%)", [200, 224, 248, 255], +"hsl(240 75% 87.5%)", [200, 200, 248, 255], +"hsl(270 75% 87.5%)", [224, 200, 248, 255], +"hsl(300 75% 87.5%)", [248, 200, 248, 255], +"hsl(330 75% 87.5%)", [248, 200, 224, 255], +"hsl(0 87.5% 87.5%)", [252, 196, 196, 255], +"hsl(30 87.5% 87.5%)", [252, 224, 196, 255], +"hsl(60 87.5% 87.5%)", [252, 252, 196, 255], +"hsl(90 87.5% 87.5%)", [224, 252, 196, 255], +"hsl(120 87.5% 87.5%)", [196, 252, 196, 255], +"hsl(150 87.5% 87.5%)", [196, 252, 224, 255], +"hsl(180 87.5% 87.5%)", [196, 252, 252, 255], +"hsl(210 87.5% 87.5%)", [196, 224, 252, 255], +"hsl(240 87.5% 87.5%)", [196, 196, 252, 255], +"hsl(270 87.5% 87.5%)", [224, 196, 252, 255], +"hsl(300 87.5% 87.5%)", [252, 196, 252, 255], +"hsl(330 87.5% 87.5%)", [252, 196, 224, 255], +"hsl(0 100% 87.5%)", [255, 192, 192, 255], +"hsl(30 100% 87.5%)", [255, 224, 192, 255], +"hsl(60 100% 87.5%)", [255, 255, 192, 255], +"hsl(90 100% 87.5%)", [224, 255, 192, 255], +"hsl(120 100% 87.5%)", [192, 255, 192, 255], +"hsl(150 100% 87.5%)", [192, 255, 224, 255], +"hsl(180 100% 87.5%)", [192, 255, 255, 255], +"hsl(210 100% 87.5%)", [192, 224, 255, 255], +"hsl(240 100% 87.5%)", [192, 192, 255, 255], +"hsl(270 100% 87.5%)", [224, 192, 255, 255], +"hsl(300 100% 87.5%)", [255, 192, 255, 255], +"hsl(330 100% 87.5%)", [255, 192, 224, 255], +"hsl(0 0% 100%)", [255, 255, 255, 255], +"hsl(30 0% 100%)", [255, 255, 255, 255], +"hsl(60 0% 100%)", [255, 255, 255, 255], +"hsl(90 0% 100%)", [255, 255, 255, 255], +"hsl(120 0% 100%)", [255, 255, 255, 255], +"hsl(150 0% 100%)", [255, 255, 255, 255], +"hsl(180 0% 100%)", [255, 255, 255, 255], +"hsl(210 0% 100%)", [255, 255, 255, 255], +"hsl(240 0% 100%)", [255, 255, 255, 255], +"hsl(270 0% 100%)", [255, 255, 255, 255], +"hsl(300 0% 100%)", [255, 255, 255, 255], +"hsl(330 0% 100%)", [255, 255, 255, 255], +"hsl(0 12.5% 100%)", [255, 255, 255, 255], +"hsl(30 12.5% 100%)", [255, 255, 255, 255], +"hsl(60 12.5% 100%)", [255, 255, 255, 255], +"hsl(90 12.5% 100%)", [255, 255, 255, 255], +"hsl(120 12.5% 100%)", [255, 255, 255, 255], +"hsl(150 12.5% 100%)", [255, 255, 255, 255], +"hsl(180 12.5% 100%)", [255, 255, 255, 255], +"hsl(210 12.5% 100%)", [255, 255, 255, 255], +"hsl(240 12.5% 100%)", [255, 255, 255, 255], +"hsl(270 12.5% 100%)", [255, 255, 255, 255], +"hsl(300 12.5% 100%)", [255, 255, 255, 255], +"hsl(330 12.5% 100%)", [255, 255, 255, 255], +"hsl(0 25% 100%)", [255, 255, 255, 255], +"hsl(30 25% 100%)", [255, 255, 255, 255], +"hsl(60 25% 100%)", [255, 255, 255, 255], +"hsl(90 25% 100%)", [255, 255, 255, 255], +"hsl(120 25% 100%)", [255, 255, 255, 255], +"hsl(150 25% 100%)", [255, 255, 255, 255], +"hsl(180 25% 100%)", [255, 255, 255, 255], +"hsl(210 25% 100%)", [255, 255, 255, 255], +"hsl(240 25% 100%)", [255, 255, 255, 255], +"hsl(270 25% 100%)", [255, 255, 255, 255], +"hsl(300 25% 100%)", [255, 255, 255, 255], +"hsl(330 25% 100%)", [255, 255, 255, 255], +"hsl(0 37.5% 100%)", [255, 255, 255, 255], +"hsl(30 37.5% 100%)", [255, 255, 255, 255], +"hsl(60 37.5% 100%)", [255, 255, 255, 255], +"hsl(90 37.5% 100%)", [255, 255, 255, 255], +"hsl(120 37.5% 100%)", [255, 255, 255, 255], +"hsl(150 37.5% 100%)", [255, 255, 255, 255], +"hsl(180 37.5% 100%)", [255, 255, 255, 255], +"hsl(210 37.5% 100%)", [255, 255, 255, 255], +"hsl(240 37.5% 100%)", [255, 255, 255, 255], +"hsl(270 37.5% 100%)", [255, 255, 255, 255], +"hsl(300 37.5% 100%)", [255, 255, 255, 255], +"hsl(330 37.5% 100%)", [255, 255, 255, 255], +"hsl(0 50% 100%)", [255, 255, 255, 255], +"hsl(30 50% 100%)", [255, 255, 255, 255], +"hsl(60 50% 100%)", [255, 255, 255, 255], +"hsl(90 50% 100%)", [255, 255, 255, 255], +"hsl(120 50% 100%)", [255, 255, 255, 255], +"hsl(150 50% 100%)", [255, 255, 255, 255], +"hsl(180 50% 100%)", [255, 255, 255, 255], +"hsl(210 50% 100%)", [255, 255, 255, 255], +"hsl(240 50% 100%)", [255, 255, 255, 255], +"hsl(270 50% 100%)", [255, 255, 255, 255], +"hsl(300 50% 100%)", [255, 255, 255, 255], +"hsl(330 50% 100%)", [255, 255, 255, 255], +"hsl(0 62.5% 100%)", [255, 255, 255, 255], +"hsl(30 62.5% 100%)", [255, 255, 255, 255], +"hsl(60 62.5% 100%)", [255, 255, 255, 255], +"hsl(90 62.5% 100%)", [255, 255, 255, 255], +"hsl(120 62.5% 100%)", [255, 255, 255, 255], +"hsl(150 62.5% 100%)", [255, 255, 255, 255], +"hsl(180 62.5% 100%)", [255, 255, 255, 255], +"hsl(210 62.5% 100%)", [255, 255, 255, 255], +"hsl(240 62.5% 100%)", [255, 255, 255, 255], +"hsl(270 62.5% 100%)", [255, 255, 255, 255], +"hsl(300 62.5% 100%)", [255, 255, 255, 255], +"hsl(330 62.5% 100%)", [255, 255, 255, 255], +"hsl(0 75% 100%)", [255, 255, 255, 255], +"hsl(30 75% 100%)", [255, 255, 255, 255], +"hsl(60 75% 100%)", [255, 255, 255, 255], +"hsl(90 75% 100%)", [255, 255, 255, 255], +"hsl(120 75% 100%)", [255, 255, 255, 255], +"hsl(150 75% 100%)", [255, 255, 255, 255], +"hsl(180 75% 100%)", [255, 255, 255, 255], +"hsl(210 75% 100%)", [255, 255, 255, 255], +"hsl(240 75% 100%)", [255, 255, 255, 255], +"hsl(270 75% 100%)", [255, 255, 255, 255], +"hsl(300 75% 100%)", [255, 255, 255, 255], +"hsl(330 75% 100%)", [255, 255, 255, 255], +"hsl(0 87.5% 100%)", [255, 255, 255, 255], +"hsl(30 87.5% 100%)", [255, 255, 255, 255], +"hsl(60 87.5% 100%)", [255, 255, 255, 255], +"hsl(90 87.5% 100%)", [255, 255, 255, 255], +"hsl(120 87.5% 100%)", [255, 255, 255, 255], +"hsl(150 87.5% 100%)", [255, 255, 255, 255], +"hsl(180 87.5% 100%)", [255, 255, 255, 255], +"hsl(210 87.5% 100%)", [255, 255, 255, 255], +"hsl(240 87.5% 100%)", [255, 255, 255, 255], +"hsl(270 87.5% 100%)", [255, 255, 255, 255], +"hsl(300 87.5% 100%)", [255, 255, 255, 255], +"hsl(330 87.5% 100%)", [255, 255, 255, 255], +"hsl(0 100% 100%)", [255, 255, 255, 255], +"hsl(30 100% 100%)", [255, 255, 255, 255], +"hsl(60 100% 100%)", [255, 255, 255, 255], +"hsl(90 100% 100%)", [255, 255, 255, 255], +"hsl(120 100% 100%)", [255, 255, 255, 255], +"hsl(150 100% 100%)", [255, 255, 255, 255], +"hsl(180 100% 100%)", [255, 255, 255, 255], +"hsl(210 100% 100%)", [255, 255, 255, 255], +"hsl(240 100% 100%)", [255, 255, 255, 255], +"hsl(270 100% 100%)", [255, 255, 255, 255], +"hsl(300 100% 100%)", [255, 255, 255, 255], +"hsl(330 100% 100%)", [255, 255, 255, 255], +"hsl(0 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(30 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(60 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(90 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(120 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(150 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(180 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(210 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(240 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(270 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(300 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(330 0% 0% / 1.0)", [0, 0, 0, 255], +"hsl(0 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(30 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(60 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(90 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(120 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(150 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(180 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(210 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(240 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(270 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(300 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(330 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(0 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(30 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(60 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(90 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(120 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(150 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(180 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(210 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(240 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(270 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(300 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(330 25% 0% / 1.0)", [0, 0, 0, 255], +"hsl(0 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(30 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(60 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(90 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(120 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(150 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(180 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(210 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(240 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(270 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(300 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(330 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(0 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(30 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(60 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(90 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(120 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(150 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(180 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(210 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(240 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(270 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(300 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(330 50% 0% / 1.0)", [0, 0, 0, 255], +"hsl(0 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(30 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(60 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(90 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(120 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(150 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(180 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(210 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(240 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(270 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(300 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(330 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(0 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(30 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(60 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(90 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(120 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(150 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(180 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(210 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(240 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(270 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(300 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(330 75% 0% / 1.0)", [0, 0, 0, 255], +"hsl(0 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(30 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(60 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(90 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(120 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(150 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(180 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(210 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(240 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(270 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(300 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(330 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsl(0 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(30 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(60 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(90 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(120 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(150 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(180 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(210 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(240 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(270 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(300 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(330 100% 0% / 1.0)", [0, 0, 0, 255], +"hsl(0 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(30 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(60 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(90 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(120 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(150 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(180 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(210 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(240 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(270 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(300 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(330 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsl(0 12.5% 12.5% / 1.0)", [36, 28, 28, 255], +"hsl(30 12.5% 12.5% / 1.0)", [36, 32, 28, 255], +"hsl(60 12.5% 12.5% / 1.0)", [36, 36, 28, 255], +"hsl(90 12.5% 12.5% / 1.0)", [32, 36, 28, 255], +"hsl(120 12.5% 12.5% / 1.0)", [28, 36, 28, 255], +"hsl(150 12.5% 12.5% / 1.0)", [28, 36, 32, 255], +"hsl(180 12.5% 12.5% / 1.0)", [28, 36, 36, 255], +"hsl(210 12.5% 12.5% / 1.0)", [28, 32, 36, 255], +"hsl(240 12.5% 12.5% / 1.0)", [28, 28, 36, 255], +"hsl(270 12.5% 12.5% / 1.0)", [32, 28, 36, 255], +"hsl(300 12.5% 12.5% / 1.0)", [36, 28, 36, 255], +"hsl(330 12.5% 12.5% / 1.0)", [36, 28, 32, 255], +"hsl(0 25% 12.5% / 1.0)", [40, 24, 24, 255], +"hsl(30 25% 12.5% / 1.0)", [40, 32, 24, 255], +"hsl(60 25% 12.5% / 1.0)", [40, 40, 24, 255], +"hsl(90 25% 12.5% / 1.0)", [32, 40, 24, 255], +"hsl(120 25% 12.5% / 1.0)", [24, 40, 24, 255], +"hsl(150 25% 12.5% / 1.0)", [24, 40, 32, 255], +"hsl(180 25% 12.5% / 1.0)", [24, 40, 40, 255], +"hsl(210 25% 12.5% / 1.0)", [24, 32, 40, 255], +"hsl(240 25% 12.5% / 1.0)", [24, 24, 40, 255], +"hsl(270 25% 12.5% / 1.0)", [32, 24, 40, 255], +"hsl(300 25% 12.5% / 1.0)", [40, 24, 40, 255], +"hsl(330 25% 12.5% / 1.0)", [40, 24, 32, 255], +"hsl(0 37.5% 12.5% / 1.0)", [44, 20, 20, 255], +"hsl(30 37.5% 12.5% / 1.0)", [44, 32, 20, 255], +"hsl(60 37.5% 12.5% / 1.0)", [44, 44, 20, 255], +"hsl(90 37.5% 12.5% / 1.0)", [32, 44, 20, 255], +"hsl(120 37.5% 12.5% / 1.0)", [20, 44, 20, 255], +"hsl(150 37.5% 12.5% / 1.0)", [20, 44, 32, 255], +"hsl(180 37.5% 12.5% / 1.0)", [20, 44, 44, 255], +"hsl(210 37.5% 12.5% / 1.0)", [20, 32, 44, 255], +"hsl(240 37.5% 12.5% / 1.0)", [20, 20, 44, 255], +"hsl(270 37.5% 12.5% / 1.0)", [32, 20, 44, 255], +"hsl(300 37.5% 12.5% / 1.0)", [44, 20, 44, 255], +"hsl(330 37.5% 12.5% / 1.0)", [44, 20, 32, 255], +"hsl(0 50% 12.5% / 1.0)", [48, 16, 16, 255], +"hsl(30 50% 12.5% / 1.0)", [48, 32, 16, 255], +"hsl(60 50% 12.5% / 1.0)", [48, 48, 16, 255], +"hsl(90 50% 12.5% / 1.0)", [32, 48, 16, 255], +"hsl(120 50% 12.5% / 1.0)", [16, 48, 16, 255], +"hsl(150 50% 12.5% / 1.0)", [16, 48, 32, 255], +"hsl(180 50% 12.5% / 1.0)", [16, 48, 48, 255], +"hsl(210 50% 12.5% / 1.0)", [16, 32, 48, 255], +"hsl(240 50% 12.5% / 1.0)", [16, 16, 48, 255], +"hsl(270 50% 12.5% / 1.0)", [32, 16, 48, 255], +"hsl(300 50% 12.5% / 1.0)", [48, 16, 48, 255], +"hsl(330 50% 12.5% / 1.0)", [48, 16, 32, 255], +"hsl(0 62.5% 12.5% / 1.0)", [52, 12, 12, 255], +"hsl(30 62.5% 12.5% / 1.0)", [52, 32, 12, 255], +"hsl(60 62.5% 12.5% / 1.0)", [52, 52, 12, 255], +"hsl(90 62.5% 12.5% / 1.0)", [32, 52, 12, 255], +"hsl(120 62.5% 12.5% / 1.0)", [12, 52, 12, 255], +"hsl(150 62.5% 12.5% / 1.0)", [12, 52, 32, 255], +"hsl(180 62.5% 12.5% / 1.0)", [12, 52, 52, 255], +"hsl(210 62.5% 12.5% / 1.0)", [12, 32, 52, 255], +"hsl(240 62.5% 12.5% / 1.0)", [12, 12, 52, 255], +"hsl(270 62.5% 12.5% / 1.0)", [32, 12, 52, 255], +"hsl(300 62.5% 12.5% / 1.0)", [52, 12, 52, 255], +"hsl(330 62.5% 12.5% / 1.0)", [52, 12, 32, 255], +"hsl(0 75% 12.5% / 1.0)", [56, 8, 8, 255], +"hsl(30 75% 12.5% / 1.0)", [56, 32, 8, 255], +"hsl(60 75% 12.5% / 1.0)", [56, 56, 8, 255], +"hsl(90 75% 12.5% / 1.0)", [32, 56, 8, 255], +"hsl(120 75% 12.5% / 1.0)", [8, 56, 8, 255], +"hsl(150 75% 12.5% / 1.0)", [8, 56, 32, 255], +"hsl(180 75% 12.5% / 1.0)", [8, 56, 56, 255], +"hsl(210 75% 12.5% / 1.0)", [8, 32, 56, 255], +"hsl(240 75% 12.5% / 1.0)", [8, 8, 56, 255], +"hsl(270 75% 12.5% / 1.0)", [32, 8, 56, 255], +"hsl(300 75% 12.5% / 1.0)", [56, 8, 56, 255], +"hsl(330 75% 12.5% / 1.0)", [56, 8, 32, 255], +"hsl(0 87.5% 12.5% / 1.0)", [60, 4, 4, 255], +"hsl(30 87.5% 12.5% / 1.0)", [60, 32, 4, 255], +"hsl(60 87.5% 12.5% / 1.0)", [60, 60, 4, 255], +"hsl(90 87.5% 12.5% / 1.0)", [32, 60, 4, 255], +"hsl(120 87.5% 12.5% / 1.0)", [4, 60, 4, 255], +"hsl(150 87.5% 12.5% / 1.0)", [4, 60, 32, 255], +"hsl(180 87.5% 12.5% / 1.0)", [4, 60, 60, 255], +"hsl(210 87.5% 12.5% / 1.0)", [4, 32, 60, 255], +"hsl(240 87.5% 12.5% / 1.0)", [4, 4, 60, 255], +"hsl(270 87.5% 12.5% / 1.0)", [32, 4, 60, 255], +"hsl(300 87.5% 12.5% / 1.0)", [60, 4, 60, 255], +"hsl(330 87.5% 12.5% / 1.0)", [60, 4, 32, 255], +"hsl(0 100% 12.5% / 1.0)", [64, 0, 0, 255], +"hsl(30 100% 12.5% / 1.0)", [64, 32, 0, 255], +"hsl(60 100% 12.5% / 1.0)", [64, 64, 0, 255], +"hsl(90 100% 12.5% / 1.0)", [32, 64, 0, 255], +"hsl(120 100% 12.5% / 1.0)", [0, 64, 0, 255], +"hsl(150 100% 12.5% / 1.0)", [0, 64, 32, 255], +"hsl(180 100% 12.5% / 1.0)", [0, 64, 64, 255], +"hsl(210 100% 12.5% / 1.0)", [0, 32, 64, 255], +"hsl(240 100% 12.5% / 1.0)", [0, 0, 64, 255], +"hsl(270 100% 12.5% / 1.0)", [32, 0, 64, 255], +"hsl(300 100% 12.5% / 1.0)", [64, 0, 64, 255], +"hsl(330 100% 12.5% / 1.0)", [64, 0, 32, 255], +"hsl(0 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(30 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(60 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(90 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(120 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(150 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(180 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(210 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(240 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(270 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(300 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(330 0% 25% / 1.0)", [64, 64, 64, 255], +"hsl(0 12.5% 25% / 1.0)", [72, 56, 56, 255], +"hsl(30 12.5% 25% / 1.0)", [72, 64, 56, 255], +"hsl(60 12.5% 25% / 1.0)", [72, 72, 56, 255], +"hsl(90 12.5% 25% / 1.0)", [64, 72, 56, 255], +"hsl(120 12.5% 25% / 1.0)", [56, 72, 56, 255], +"hsl(150 12.5% 25% / 1.0)", [56, 72, 64, 255], +"hsl(180 12.5% 25% / 1.0)", [56, 72, 72, 255], +"hsl(210 12.5% 25% / 1.0)", [56, 64, 72, 255], +"hsl(240 12.5% 25% / 1.0)", [56, 56, 72, 255], +"hsl(270 12.5% 25% / 1.0)", [64, 56, 72, 255], +"hsl(300 12.5% 25% / 1.0)", [72, 56, 72, 255], +"hsl(330 12.5% 25% / 1.0)", [72, 56, 64, 255], +"hsl(0 25% 25% / 1.0)", [80, 48, 48, 255], +"hsl(30 25% 25% / 1.0)", [80, 64, 48, 255], +"hsl(60 25% 25% / 1.0)", [80, 80, 48, 255], +"hsl(90 25% 25% / 1.0)", [64, 80, 48, 255], +"hsl(120 25% 25% / 1.0)", [48, 80, 48, 255], +"hsl(150 25% 25% / 1.0)", [48, 80, 64, 255], +"hsl(180 25% 25% / 1.0)", [48, 80, 80, 255], +"hsl(210 25% 25% / 1.0)", [48, 64, 80, 255], +"hsl(240 25% 25% / 1.0)", [48, 48, 80, 255], +"hsl(270 25% 25% / 1.0)", [64, 48, 80, 255], +"hsl(300 25% 25% / 1.0)", [80, 48, 80, 255], +"hsl(330 25% 25% / 1.0)", [80, 48, 64, 255], +"hsl(0 37.5% 25% / 1.0)", [88, 40, 40, 255], +"hsl(30 37.5% 25% / 1.0)", [88, 64, 40, 255], +"hsl(60 37.5% 25% / 1.0)", [88, 88, 40, 255], +"hsl(90 37.5% 25% / 1.0)", [64, 88, 40, 255], +"hsl(120 37.5% 25% / 1.0)", [40, 88, 40, 255], +"hsl(150 37.5% 25% / 1.0)", [40, 88, 64, 255], +"hsl(180 37.5% 25% / 1.0)", [40, 88, 88, 255], +"hsl(210 37.5% 25% / 1.0)", [40, 64, 88, 255], +"hsl(240 37.5% 25% / 1.0)", [40, 40, 88, 255], +"hsl(270 37.5% 25% / 1.0)", [64, 40, 88, 255], +"hsl(300 37.5% 25% / 1.0)", [88, 40, 88, 255], +"hsl(330 37.5% 25% / 1.0)", [88, 40, 64, 255], +"hsl(0 50% 25% / 1.0)", [96, 32, 32, 255], +"hsl(30 50% 25% / 1.0)", [96, 64, 32, 255], +"hsl(60 50% 25% / 1.0)", [96, 96, 32, 255], +"hsl(90 50% 25% / 1.0)", [64, 96, 32, 255], +"hsl(120 50% 25% / 1.0)", [32, 96, 32, 255], +"hsl(150 50% 25% / 1.0)", [32, 96, 64, 255], +"hsl(180 50% 25% / 1.0)", [32, 96, 96, 255], +"hsl(210 50% 25% / 1.0)", [32, 64, 96, 255], +"hsl(240 50% 25% / 1.0)", [32, 32, 96, 255], +"hsl(270 50% 25% / 1.0)", [64, 32, 96, 255], +"hsl(300 50% 25% / 1.0)", [96, 32, 96, 255], +"hsl(330 50% 25% / 1.0)", [96, 32, 64, 255], +"hsl(0 62.5% 25% / 1.0)", [104, 24, 24, 255], +"hsl(30 62.5% 25% / 1.0)", [104, 64, 24, 255], +"hsl(60 62.5% 25% / 1.0)", [104, 104, 24, 255], +"hsl(90 62.5% 25% / 1.0)", [64, 104, 24, 255], +"hsl(120 62.5% 25% / 1.0)", [24, 104, 24, 255], +"hsl(150 62.5% 25% / 1.0)", [24, 104, 64, 255], +"hsl(180 62.5% 25% / 1.0)", [24, 104, 104, 255], +"hsl(210 62.5% 25% / 1.0)", [24, 64, 104, 255], +"hsl(240 62.5% 25% / 1.0)", [24, 24, 104, 255], +"hsl(270 62.5% 25% / 1.0)", [64, 24, 104, 255], +"hsl(300 62.5% 25% / 1.0)", [104, 24, 104, 255], +"hsl(330 62.5% 25% / 1.0)", [104, 24, 64, 255], +"hsl(0 75% 25% / 1.0)", [112, 16, 16, 255], +"hsl(30 75% 25% / 1.0)", [112, 64, 16, 255], +"hsl(60 75% 25% / 1.0)", [112, 112, 16, 255], +"hsl(90 75% 25% / 1.0)", [64, 112, 16, 255], +"hsl(120 75% 25% / 1.0)", [16, 112, 16, 255], +"hsl(150 75% 25% / 1.0)", [16, 112, 64, 255], +"hsl(180 75% 25% / 1.0)", [16, 112, 112, 255], +"hsl(210 75% 25% / 1.0)", [16, 64, 112, 255], +"hsl(240 75% 25% / 1.0)", [16, 16, 112, 255], +"hsl(270 75% 25% / 1.0)", [64, 16, 112, 255], +"hsl(300 75% 25% / 1.0)", [112, 16, 112, 255], +"hsl(330 75% 25% / 1.0)", [112, 16, 64, 255], +"hsl(0 87.5% 25% / 1.0)", [120, 8, 8, 255], +"hsl(30 87.5% 25% / 1.0)", [120, 64, 8, 255], +"hsl(60 87.5% 25% / 1.0)", [120, 120, 8, 255], +"hsl(90 87.5% 25% / 1.0)", [64, 120, 8, 255], +"hsl(120 87.5% 25% / 1.0)", [8, 120, 8, 255], +"hsl(150 87.5% 25% / 1.0)", [8, 120, 64, 255], +"hsl(180 87.5% 25% / 1.0)", [8, 120, 120, 255], +"hsl(210 87.5% 25% / 1.0)", [8, 64, 120, 255], +"hsl(240 87.5% 25% / 1.0)", [8, 8, 120, 255], +"hsl(270 87.5% 25% / 1.0)", [64, 8, 120, 255], +"hsl(300 87.5% 25% / 1.0)", [120, 8, 120, 255], +"hsl(330 87.5% 25% / 1.0)", [120, 8, 64, 255], +"hsl(0 100% 25% / 1.0)", [128, 0, 0, 255], +"hsl(30 100% 25% / 1.0)", [128, 64, 0, 255], +"hsl(60 100% 25% / 1.0)", [128, 128, 0, 255], +"hsl(90 100% 25% / 1.0)", [64, 128, 0, 255], +"hsl(120 100% 25% / 1.0)", [0, 128, 0, 255], +"hsl(150 100% 25% / 1.0)", [0, 128, 64, 255], +"hsl(180 100% 25% / 1.0)", [0, 128, 128, 255], +"hsl(210 100% 25% / 1.0)", [0, 64, 128, 255], +"hsl(240 100% 25% / 1.0)", [0, 0, 128, 255], +"hsl(270 100% 25% / 1.0)", [64, 0, 128, 255], +"hsl(300 100% 25% / 1.0)", [128, 0, 128, 255], +"hsl(330 100% 25% / 1.0)", [128, 0, 64, 255], +"hsl(0 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(30 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(60 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(90 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(120 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(150 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(180 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(210 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(240 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(270 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(300 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(330 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsl(0 12.5% 37.5% / 1.0)", [108, 84, 84, 255], +"hsl(30 12.5% 37.5% / 1.0)", [108, 96, 84, 255], +"hsl(60 12.5% 37.5% / 1.0)", [108, 108, 84, 255], +"hsl(90 12.5% 37.5% / 1.0)", [96, 108, 84, 255], +"hsl(120 12.5% 37.5% / 1.0)", [84, 108, 84, 255], +"hsl(150 12.5% 37.5% / 1.0)", [84, 108, 96, 255], +"hsl(180 12.5% 37.5% / 1.0)", [84, 108, 108, 255], +"hsl(210 12.5% 37.5% / 1.0)", [84, 96, 108, 255], +"hsl(240 12.5% 37.5% / 1.0)", [84, 84, 108, 255], +"hsl(270 12.5% 37.5% / 1.0)", [96, 84, 108, 255], +"hsl(300 12.5% 37.5% / 1.0)", [108, 84, 108, 255], +"hsl(330 12.5% 37.5% / 1.0)", [108, 84, 96, 255], +"hsl(0 25% 37.5% / 1.0)", [120, 72, 72, 255], +"hsl(30 25% 37.5% / 1.0)", [120, 96, 72, 255], +"hsl(60 25% 37.5% / 1.0)", [120, 120, 72, 255], +"hsl(90 25% 37.5% / 1.0)", [96, 120, 72, 255], +"hsl(120 25% 37.5% / 1.0)", [72, 120, 72, 255], +"hsl(150 25% 37.5% / 1.0)", [72, 120, 96, 255], +"hsl(180 25% 37.5% / 1.0)", [72, 120, 120, 255], +"hsl(210 25% 37.5% / 1.0)", [72, 96, 120, 255], +"hsl(240 25% 37.5% / 1.0)", [72, 72, 120, 255], +"hsl(270 25% 37.5% / 1.0)", [96, 72, 120, 255], +"hsl(300 25% 37.5% / 1.0)", [120, 72, 120, 255], +"hsl(330 25% 37.5% / 1.0)", [120, 72, 96, 255], +"hsl(0 37.5% 37.5% / 1.0)", [132, 60, 60, 255], +"hsl(30 37.5% 37.5% / 1.0)", [132, 96, 60, 255], +"hsl(60 37.5% 37.5% / 1.0)", [132, 132, 60, 255], +"hsl(90 37.5% 37.5% / 1.0)", [96, 132, 60, 255], +"hsl(120 37.5% 37.5% / 1.0)", [60, 132, 60, 255], +"hsl(150 37.5% 37.5% / 1.0)", [60, 132, 96, 255], +"hsl(180 37.5% 37.5% / 1.0)", [60, 132, 132, 255], +"hsl(210 37.5% 37.5% / 1.0)", [60, 96, 132, 255], +"hsl(240 37.5% 37.5% / 1.0)", [60, 60, 132, 255], +"hsl(270 37.5% 37.5% / 1.0)", [96, 60, 132, 255], +"hsl(300 37.5% 37.5% / 1.0)", [132, 60, 132, 255], +"hsl(330 37.5% 37.5% / 1.0)", [132, 60, 96, 255], +"hsl(0 50% 37.5% / 1.0)", [144, 48, 48, 255], +"hsl(30 50% 37.5% / 1.0)", [144, 96, 48, 255], +"hsl(60 50% 37.5% / 1.0)", [144, 144, 48, 255], +"hsl(90 50% 37.5% / 1.0)", [96, 144, 48, 255], +"hsl(120 50% 37.5% / 1.0)", [48, 144, 48, 255], +"hsl(150 50% 37.5% / 1.0)", [48, 144, 96, 255], +"hsl(180 50% 37.5% / 1.0)", [48, 144, 144, 255], +"hsl(210 50% 37.5% / 1.0)", [48, 96, 144, 255], +"hsl(240 50% 37.5% / 1.0)", [48, 48, 144, 255], +"hsl(270 50% 37.5% / 1.0)", [96, 48, 144, 255], +"hsl(300 50% 37.5% / 1.0)", [144, 48, 144, 255], +"hsl(330 50% 37.5% / 1.0)", [144, 48, 96, 255], +"hsl(0 62.5% 37.5% / 1.0)", [156, 36, 36, 255], +"hsl(30 62.5% 37.5% / 1.0)", [156, 96, 36, 255], +"hsl(60 62.5% 37.5% / 1.0)", [156, 156, 36, 255], +"hsl(90 62.5% 37.5% / 1.0)", [96, 156, 36, 255], +"hsl(120 62.5% 37.5% / 1.0)", [36, 156, 36, 255], +"hsl(150 62.5% 37.5% / 1.0)", [36, 156, 96, 255], +"hsl(180 62.5% 37.5% / 1.0)", [36, 156, 156, 255], +"hsl(210 62.5% 37.5% / 1.0)", [36, 96, 156, 255], +"hsl(240 62.5% 37.5% / 1.0)", [36, 36, 156, 255], +"hsl(270 62.5% 37.5% / 1.0)", [96, 36, 156, 255], +"hsl(300 62.5% 37.5% / 1.0)", [156, 36, 156, 255], +"hsl(330 62.5% 37.5% / 1.0)", [156, 36, 96, 255], +"hsl(0 75% 37.5% / 1.0)", [168, 24, 24, 255], +"hsl(30 75% 37.5% / 1.0)", [168, 96, 24, 255], +"hsl(60 75% 37.5% / 1.0)", [168, 168, 24, 255], +"hsl(90 75% 37.5% / 1.0)", [96, 168, 24, 255], +"hsl(120 75% 37.5% / 1.0)", [24, 168, 24, 255], +"hsl(150 75% 37.5% / 1.0)", [24, 168, 96, 255], +"hsl(180 75% 37.5% / 1.0)", [24, 168, 168, 255], +"hsl(210 75% 37.5% / 1.0)", [24, 96, 168, 255], +"hsl(240 75% 37.5% / 1.0)", [24, 24, 168, 255], +"hsl(270 75% 37.5% / 1.0)", [96, 24, 168, 255], +"hsl(300 75% 37.5% / 1.0)", [168, 24, 168, 255], +"hsl(330 75% 37.5% / 1.0)", [168, 24, 96, 255], +"hsl(0 87.5% 37.5% / 1.0)", [180, 12, 12, 255], +"hsl(30 87.5% 37.5% / 1.0)", [180, 96, 12, 255], +"hsl(60 87.5% 37.5% / 1.0)", [180, 180, 12, 255], +"hsl(90 87.5% 37.5% / 1.0)", [96, 180, 12, 255], +"hsl(120 87.5% 37.5% / 1.0)", [12, 180, 12, 255], +"hsl(150 87.5% 37.5% / 1.0)", [12, 180, 96, 255], +"hsl(180 87.5% 37.5% / 1.0)", [12, 180, 180, 255], +"hsl(210 87.5% 37.5% / 1.0)", [12, 96, 180, 255], +"hsl(240 87.5% 37.5% / 1.0)", [12, 12, 180, 255], +"hsl(270 87.5% 37.5% / 1.0)", [96, 12, 180, 255], +"hsl(300 87.5% 37.5% / 1.0)", [180, 12, 180, 255], +"hsl(330 87.5% 37.5% / 1.0)", [180, 12, 96, 255], +"hsl(0 100% 37.5% / 1.0)", [192, 0, 0, 255], +"hsl(30 100% 37.5% / 1.0)", [192, 96, 0, 255], +"hsl(60 100% 37.5% / 1.0)", [192, 192, 0, 255], +"hsl(90 100% 37.5% / 1.0)", [96, 192, 0, 255], +"hsl(120 100% 37.5% / 1.0)", [0, 192, 0, 255], +"hsl(150 100% 37.5% / 1.0)", [0, 192, 96, 255], +"hsl(180 100% 37.5% / 1.0)", [0, 192, 192, 255], +"hsl(210 100% 37.5% / 1.0)", [0, 96, 192, 255], +"hsl(240 100% 37.5% / 1.0)", [0, 0, 192, 255], +"hsl(270 100% 37.5% / 1.0)", [96, 0, 192, 255], +"hsl(300 100% 37.5% / 1.0)", [192, 0, 192, 255], +"hsl(330 100% 37.5% / 1.0)", [192, 0, 96, 255], +"hsl(0 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(30 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(60 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(90 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(120 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(150 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(180 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(210 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(240 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(270 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(300 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(330 0% 50% / 1.0)", [128, 128, 128, 255], +"hsl(0 12.5% 50% / 1.0)", [144, 112, 112, 255], +"hsl(30 12.5% 50% / 1.0)", [144, 128, 112, 255], +"hsl(60 12.5% 50% / 1.0)", [144, 144, 112, 255], +"hsl(90 12.5% 50% / 1.0)", [128, 144, 112, 255], +"hsl(120 12.5% 50% / 1.0)", [112, 144, 112, 255], +"hsl(150 12.5% 50% / 1.0)", [112, 144, 128, 255], +"hsl(180 12.5% 50% / 1.0)", [112, 144, 144, 255], +"hsl(210 12.5% 50% / 1.0)", [112, 128, 144, 255], +"hsl(240 12.5% 50% / 1.0)", [112, 112, 144, 255], +"hsl(270 12.5% 50% / 1.0)", [128, 112, 144, 255], +"hsl(300 12.5% 50% / 1.0)", [144, 112, 144, 255], +"hsl(330 12.5% 50% / 1.0)", [144, 112, 128, 255], +"hsl(0 25% 50% / 1.0)", [160, 96, 96, 255], +"hsl(30 25% 50% / 1.0)", [160, 128, 96, 255], +"hsl(60 25% 50% / 1.0)", [160, 160, 96, 255], +"hsl(90 25% 50% / 1.0)", [128, 160, 96, 255], +"hsl(120 25% 50% / 1.0)", [96, 160, 96, 255], +"hsl(150 25% 50% / 1.0)", [96, 160, 128, 255], +"hsl(180 25% 50% / 1.0)", [96, 160, 160, 255], +"hsl(210 25% 50% / 1.0)", [96, 128, 160, 255], +"hsl(240 25% 50% / 1.0)", [96, 96, 160, 255], +"hsl(270 25% 50% / 1.0)", [128, 96, 160, 255], +"hsl(300 25% 50% / 1.0)", [160, 96, 160, 255], +"hsl(330 25% 50% / 1.0)", [160, 96, 128, 255], +"hsl(0 37.5% 50% / 1.0)", [176, 80, 80, 255], +"hsl(30 37.5% 50% / 1.0)", [176, 128, 80, 255], +"hsl(60 37.5% 50% / 1.0)", [176, 176, 80, 255], +"hsl(90 37.5% 50% / 1.0)", [128, 176, 80, 255], +"hsl(120 37.5% 50% / 1.0)", [80, 176, 80, 255], +"hsl(150 37.5% 50% / 1.0)", [80, 176, 128, 255], +"hsl(180 37.5% 50% / 1.0)", [80, 176, 176, 255], +"hsl(210 37.5% 50% / 1.0)", [80, 128, 176, 255], +"hsl(240 37.5% 50% / 1.0)", [80, 80, 176, 255], +"hsl(270 37.5% 50% / 1.0)", [128, 80, 176, 255], +"hsl(300 37.5% 50% / 1.0)", [176, 80, 176, 255], +"hsl(330 37.5% 50% / 1.0)", [176, 80, 128, 255], +"hsl(0 50% 50% / 1.0)", [192, 64, 64, 255], +"hsl(30 50% 50% / 1.0)", [192, 128, 64, 255], +"hsl(60 50% 50% / 1.0)", [192, 192, 64, 255], +"hsl(90 50% 50% / 1.0)", [128, 192, 64, 255], +"hsl(120 50% 50% / 1.0)", [64, 192, 64, 255], +"hsl(150 50% 50% / 1.0)", [64, 192, 128, 255], +"hsl(180 50% 50% / 1.0)", [64, 192, 192, 255], +"hsl(210 50% 50% / 1.0)", [64, 128, 192, 255], +"hsl(240 50% 50% / 1.0)", [64, 64, 192, 255], +"hsl(270 50% 50% / 1.0)", [128, 64, 192, 255], +"hsl(300 50% 50% / 1.0)", [192, 64, 192, 255], +"hsl(330 50% 50% / 1.0)", [192, 64, 128, 255], +"hsl(0 62.5% 50% / 1.0)", [208, 48, 48, 255], +"hsl(30 62.5% 50% / 1.0)", [208, 128, 48, 255], +"hsl(60 62.5% 50% / 1.0)", [208, 208, 48, 255], +"hsl(90 62.5% 50% / 1.0)", [128, 208, 48, 255], +"hsl(120 62.5% 50% / 1.0)", [48, 208, 48, 255], +"hsl(150 62.5% 50% / 1.0)", [48, 208, 128, 255], +"hsl(180 62.5% 50% / 1.0)", [48, 208, 208, 255], +"hsl(210 62.5% 50% / 1.0)", [48, 128, 208, 255], +"hsl(240 62.5% 50% / 1.0)", [48, 48, 208, 255], +"hsl(270 62.5% 50% / 1.0)", [128, 48, 208, 255], +"hsl(300 62.5% 50% / 1.0)", [208, 48, 208, 255], +"hsl(330 62.5% 50% / 1.0)", [208, 48, 128, 255], +"hsl(0 75% 50% / 1.0)", [224, 32, 32, 255], +"hsl(30 75% 50% / 1.0)", [224, 128, 32, 255], +"hsl(60 75% 50% / 1.0)", [224, 224, 32, 255], +"hsl(90 75% 50% / 1.0)", [128, 224, 32, 255], +"hsl(120 75% 50% / 1.0)", [32, 224, 32, 255], +"hsl(150 75% 50% / 1.0)", [32, 224, 128, 255], +"hsl(180 75% 50% / 1.0)", [32, 224, 224, 255], +"hsl(210 75% 50% / 1.0)", [32, 128, 224, 255], +"hsl(240 75% 50% / 1.0)", [32, 32, 224, 255], +"hsl(270 75% 50% / 1.0)", [128, 32, 224, 255], +"hsl(300 75% 50% / 1.0)", [224, 32, 224, 255], +"hsl(330 75% 50% / 1.0)", [224, 32, 128, 255], +"hsl(0 87.5% 50% / 1.0)", [240, 16, 16, 255], +"hsl(30 87.5% 50% / 1.0)", [240, 128, 16, 255], +"hsl(60 87.5% 50% / 1.0)", [240, 240, 16, 255], +"hsl(90 87.5% 50% / 1.0)", [128, 240, 16, 255], +"hsl(120 87.5% 50% / 1.0)", [16, 240, 16, 255], +"hsl(150 87.5% 50% / 1.0)", [16, 240, 128, 255], +"hsl(180 87.5% 50% / 1.0)", [16, 240, 240, 255], +"hsl(210 87.5% 50% / 1.0)", [16, 128, 240, 255], +"hsl(240 87.5% 50% / 1.0)", [16, 16, 240, 255], +"hsl(270 87.5% 50% / 1.0)", [128, 16, 240, 255], +"hsl(300 87.5% 50% / 1.0)", [240, 16, 240, 255], +"hsl(330 87.5% 50% / 1.0)", [240, 16, 128, 255], +"hsl(0 100% 50% / 1.0)", [255, 0, 0, 255], +"hsl(30 100% 50% / 1.0)", [255, 128, 0, 255], +"hsl(60 100% 50% / 1.0)", [255, 255, 0, 255], +"hsl(90 100% 50% / 1.0)", [128, 255, 0, 255], +"hsl(120 100% 50% / 1.0)", [0, 255, 0, 255], +"hsl(150 100% 50% / 1.0)", [0, 255, 128, 255], +"hsl(180 100% 50% / 1.0)", [0, 255, 255, 255], +"hsl(210 100% 50% / 1.0)", [0, 128, 255, 255], +"hsl(240 100% 50% / 1.0)", [0, 0, 255, 255], +"hsl(270 100% 50% / 1.0)", [128, 0, 255, 255], +"hsl(300 100% 50% / 1.0)", [255, 0, 255, 255], +"hsl(330 100% 50% / 1.0)", [255, 0, 128, 255], +"hsl(0 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(30 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(60 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(90 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(120 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(150 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(180 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(210 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(240 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(270 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(300 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(330 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsl(0 12.5% 62.5% / 1.0)", [172, 148, 148, 255], +"hsl(30 12.5% 62.5% / 1.0)", [172, 160, 148, 255], +"hsl(60 12.5% 62.5% / 1.0)", [172, 172, 148, 255], +"hsl(90 12.5% 62.5% / 1.0)", [160, 172, 148, 255], +"hsl(120 12.5% 62.5% / 1.0)", [148, 172, 148, 255], +"hsl(150 12.5% 62.5% / 1.0)", [148, 172, 160, 255], +"hsl(180 12.5% 62.5% / 1.0)", [148, 172, 172, 255], +"hsl(210 12.5% 62.5% / 1.0)", [148, 160, 172, 255], +"hsl(240 12.5% 62.5% / 1.0)", [148, 148, 172, 255], +"hsl(270 12.5% 62.5% / 1.0)", [160, 148, 172, 255], +"hsl(300 12.5% 62.5% / 1.0)", [172, 148, 172, 255], +"hsl(330 12.5% 62.5% / 1.0)", [172, 148, 160, 255], +"hsl(0 25% 62.5% / 1.0)", [184, 136, 136, 255], +"hsl(30 25% 62.5% / 1.0)", [184, 160, 136, 255], +"hsl(60 25% 62.5% / 1.0)", [184, 184, 136, 255], +"hsl(90 25% 62.5% / 1.0)", [160, 184, 136, 255], +"hsl(120 25% 62.5% / 1.0)", [136, 184, 136, 255], +"hsl(150 25% 62.5% / 1.0)", [136, 184, 160, 255], +"hsl(180 25% 62.5% / 1.0)", [136, 184, 184, 255], +"hsl(210 25% 62.5% / 1.0)", [136, 160, 184, 255], +"hsl(240 25% 62.5% / 1.0)", [136, 136, 184, 255], +"hsl(270 25% 62.5% / 1.0)", [160, 136, 184, 255], +"hsl(300 25% 62.5% / 1.0)", [184, 136, 184, 255], +"hsl(330 25% 62.5% / 1.0)", [184, 136, 160, 255], +"hsl(0 37.5% 62.5% / 1.0)", [196, 124, 124, 255], +"hsl(30 37.5% 62.5% / 1.0)", [196, 160, 124, 255], +"hsl(60 37.5% 62.5% / 1.0)", [196, 196, 124, 255], +"hsl(90 37.5% 62.5% / 1.0)", [160, 196, 124, 255], +"hsl(120 37.5% 62.5% / 1.0)", [124, 196, 124, 255], +"hsl(150 37.5% 62.5% / 1.0)", [124, 196, 160, 255], +"hsl(180 37.5% 62.5% / 1.0)", [124, 196, 196, 255], +"hsl(210 37.5% 62.5% / 1.0)", [124, 160, 196, 255], +"hsl(240 37.5% 62.5% / 1.0)", [124, 124, 196, 255], +"hsl(270 37.5% 62.5% / 1.0)", [160, 124, 196, 255], +"hsl(300 37.5% 62.5% / 1.0)", [196, 124, 196, 255], +"hsl(330 37.5% 62.5% / 1.0)", [196, 124, 160, 255], +"hsl(0 50% 62.5% / 1.0)", [208, 112, 112, 255], +"hsl(30 50% 62.5% / 1.0)", [208, 160, 112, 255], +"hsl(60 50% 62.5% / 1.0)", [208, 208, 112, 255], +"hsl(90 50% 62.5% / 1.0)", [160, 208, 112, 255], +"hsl(120 50% 62.5% / 1.0)", [112, 208, 112, 255], +"hsl(150 50% 62.5% / 1.0)", [112, 208, 160, 255], +"hsl(180 50% 62.5% / 1.0)", [112, 208, 208, 255], +"hsl(210 50% 62.5% / 1.0)", [112, 160, 208, 255], +"hsl(240 50% 62.5% / 1.0)", [112, 112, 208, 255], +"hsl(270 50% 62.5% / 1.0)", [160, 112, 208, 255], +"hsl(300 50% 62.5% / 1.0)", [208, 112, 208, 255], +"hsl(330 50% 62.5% / 1.0)", [208, 112, 160, 255], +"hsl(0 62.5% 62.5% / 1.0)", [220, 100, 100, 255], +"hsl(30 62.5% 62.5% / 1.0)", [220, 160, 100, 255], +"hsl(60 62.5% 62.5% / 1.0)", [220, 220, 100, 255], +"hsl(90 62.5% 62.5% / 1.0)", [160, 220, 100, 255], +"hsl(120 62.5% 62.5% / 1.0)", [100, 220, 100, 255], +"hsl(150 62.5% 62.5% / 1.0)", [100, 220, 160, 255], +"hsl(180 62.5% 62.5% / 1.0)", [100, 220, 220, 255], +"hsl(210 62.5% 62.5% / 1.0)", [100, 160, 220, 255], +"hsl(240 62.5% 62.5% / 1.0)", [100, 100, 220, 255], +"hsl(270 62.5% 62.5% / 1.0)", [160, 100, 220, 255], +"hsl(300 62.5% 62.5% / 1.0)", [220, 100, 220, 255], +"hsl(330 62.5% 62.5% / 1.0)", [220, 100, 160, 255], +"hsl(0 75% 62.5% / 1.0)", [232, 88, 88, 255], +"hsl(30 75% 62.5% / 1.0)", [232, 160, 88, 255], +"hsl(60 75% 62.5% / 1.0)", [232, 232, 88, 255], +"hsl(90 75% 62.5% / 1.0)", [160, 232, 88, 255], +"hsl(120 75% 62.5% / 1.0)", [88, 232, 88, 255], +"hsl(150 75% 62.5% / 1.0)", [88, 232, 160, 255], +"hsl(180 75% 62.5% / 1.0)", [88, 232, 232, 255], +"hsl(210 75% 62.5% / 1.0)", [88, 160, 232, 255], +"hsl(240 75% 62.5% / 1.0)", [88, 88, 232, 255], +"hsl(270 75% 62.5% / 1.0)", [160, 88, 232, 255], +"hsl(300 75% 62.5% / 1.0)", [232, 88, 232, 255], +"hsl(330 75% 62.5% / 1.0)", [232, 88, 160, 255], +"hsl(0 87.5% 62.5% / 1.0)", [244, 76, 76, 255], +"hsl(30 87.5% 62.5% / 1.0)", [244, 160, 76, 255], +"hsl(60 87.5% 62.5% / 1.0)", [244, 244, 76, 255], +"hsl(90 87.5% 62.5% / 1.0)", [160, 244, 76, 255], +"hsl(120 87.5% 62.5% / 1.0)", [76, 244, 76, 255], +"hsl(150 87.5% 62.5% / 1.0)", [76, 244, 160, 255], +"hsl(180 87.5% 62.5% / 1.0)", [76, 244, 244, 255], +"hsl(210 87.5% 62.5% / 1.0)", [76, 160, 244, 255], +"hsl(240 87.5% 62.5% / 1.0)", [76, 76, 244, 255], +"hsl(270 87.5% 62.5% / 1.0)", [160, 76, 244, 255], +"hsl(300 87.5% 62.5% / 1.0)", [244, 76, 244, 255], +"hsl(330 87.5% 62.5% / 1.0)", [244, 76, 160, 255], +"hsl(0 100% 62.5% / 1.0)", [255, 64, 64, 255], +"hsl(30 100% 62.5% / 1.0)", [255, 160, 64, 255], +"hsl(60 100% 62.5% / 1.0)", [255, 255, 64, 255], +"hsl(90 100% 62.5% / 1.0)", [160, 255, 64, 255], +"hsl(120 100% 62.5% / 1.0)", [64, 255, 64, 255], +"hsl(150 100% 62.5% / 1.0)", [64, 255, 160, 255], +"hsl(180 100% 62.5% / 1.0)", [64, 255, 255, 255], +"hsl(210 100% 62.5% / 1.0)", [64, 160, 255, 255], +"hsl(240 100% 62.5% / 1.0)", [64, 64, 255, 255], +"hsl(270 100% 62.5% / 1.0)", [160, 64, 255, 255], +"hsl(300 100% 62.5% / 1.0)", [255, 64, 255, 255], +"hsl(330 100% 62.5% / 1.0)", [255, 64, 160, 255], +"hsl(0 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(30 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(60 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(90 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(120 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(150 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(180 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(210 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(240 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(270 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(300 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(330 0% 75% / 1.0)", [192, 192, 192, 255], +"hsl(0 12.5% 75% / 1.0)", [200, 184, 184, 255], +"hsl(30 12.5% 75% / 1.0)", [200, 192, 184, 255], +"hsl(60 12.5% 75% / 1.0)", [200, 200, 184, 255], +"hsl(90 12.5% 75% / 1.0)", [192, 200, 184, 255], +"hsl(120 12.5% 75% / 1.0)", [184, 200, 184, 255], +"hsl(150 12.5% 75% / 1.0)", [184, 200, 192, 255], +"hsl(180 12.5% 75% / 1.0)", [184, 200, 200, 255], +"hsl(210 12.5% 75% / 1.0)", [184, 192, 200, 255], +"hsl(240 12.5% 75% / 1.0)", [184, 184, 200, 255], +"hsl(270 12.5% 75% / 1.0)", [192, 184, 200, 255], +"hsl(300 12.5% 75% / 1.0)", [200, 184, 200, 255], +"hsl(330 12.5% 75% / 1.0)", [200, 184, 192, 255], +"hsl(0 25% 75% / 1.0)", [208, 176, 176, 255], +"hsl(30 25% 75% / 1.0)", [208, 192, 176, 255], +"hsl(60 25% 75% / 1.0)", [208, 208, 176, 255], +"hsl(90 25% 75% / 1.0)", [192, 208, 176, 255], +"hsl(120 25% 75% / 1.0)", [176, 208, 176, 255], +"hsl(150 25% 75% / 1.0)", [176, 208, 192, 255], +"hsl(180 25% 75% / 1.0)", [176, 208, 208, 255], +"hsl(210 25% 75% / 1.0)", [176, 192, 208, 255], +"hsl(240 25% 75% / 1.0)", [176, 176, 208, 255], +"hsl(270 25% 75% / 1.0)", [192, 176, 208, 255], +"hsl(300 25% 75% / 1.0)", [208, 176, 208, 255], +"hsl(330 25% 75% / 1.0)", [208, 176, 192, 255], +"hsl(0 37.5% 75% / 1.0)", [216, 168, 168, 255], +"hsl(30 37.5% 75% / 1.0)", [216, 192, 168, 255], +"hsl(60 37.5% 75% / 1.0)", [216, 216, 168, 255], +"hsl(90 37.5% 75% / 1.0)", [192, 216, 168, 255], +"hsl(120 37.5% 75% / 1.0)", [168, 216, 168, 255], +"hsl(150 37.5% 75% / 1.0)", [168, 216, 192, 255], +"hsl(180 37.5% 75% / 1.0)", [168, 216, 216, 255], +"hsl(210 37.5% 75% / 1.0)", [168, 192, 216, 255], +"hsl(240 37.5% 75% / 1.0)", [168, 168, 216, 255], +"hsl(270 37.5% 75% / 1.0)", [192, 168, 216, 255], +"hsl(300 37.5% 75% / 1.0)", [216, 168, 216, 255], +"hsl(330 37.5% 75% / 1.0)", [216, 168, 192, 255], +"hsl(0 50% 75% / 1.0)", [224, 160, 160, 255], +"hsl(30 50% 75% / 1.0)", [224, 192, 160, 255], +"hsl(60 50% 75% / 1.0)", [224, 224, 160, 255], +"hsl(90 50% 75% / 1.0)", [192, 224, 160, 255], +"hsl(120 50% 75% / 1.0)", [160, 224, 160, 255], +"hsl(150 50% 75% / 1.0)", [160, 224, 192, 255], +"hsl(180 50% 75% / 1.0)", [160, 224, 224, 255], +"hsl(210 50% 75% / 1.0)", [160, 192, 224, 255], +"hsl(240 50% 75% / 1.0)", [160, 160, 224, 255], +"hsl(270 50% 75% / 1.0)", [192, 160, 224, 255], +"hsl(300 50% 75% / 1.0)", [224, 160, 224, 255], +"hsl(330 50% 75% / 1.0)", [224, 160, 192, 255], +"hsl(0 62.5% 75% / 1.0)", [232, 152, 152, 255], +"hsl(30 62.5% 75% / 1.0)", [232, 192, 152, 255], +"hsl(60 62.5% 75% / 1.0)", [232, 232, 152, 255], +"hsl(90 62.5% 75% / 1.0)", [192, 232, 152, 255], +"hsl(120 62.5% 75% / 1.0)", [152, 232, 152, 255], +"hsl(150 62.5% 75% / 1.0)", [152, 232, 192, 255], +"hsl(180 62.5% 75% / 1.0)", [152, 232, 232, 255], +"hsl(210 62.5% 75% / 1.0)", [152, 192, 232, 255], +"hsl(240 62.5% 75% / 1.0)", [152, 152, 232, 255], +"hsl(270 62.5% 75% / 1.0)", [192, 152, 232, 255], +"hsl(300 62.5% 75% / 1.0)", [232, 152, 232, 255], +"hsl(330 62.5% 75% / 1.0)", [232, 152, 192, 255], +"hsl(0 75% 75% / 1.0)", [240, 144, 144, 255], +"hsl(30 75% 75% / 1.0)", [240, 192, 144, 255], +"hsl(60 75% 75% / 1.0)", [240, 240, 144, 255], +"hsl(90 75% 75% / 1.0)", [192, 240, 144, 255], +"hsl(120 75% 75% / 1.0)", [144, 240, 144, 255], +"hsl(150 75% 75% / 1.0)", [144, 240, 192, 255], +"hsl(180 75% 75% / 1.0)", [144, 240, 240, 255], +"hsl(210 75% 75% / 1.0)", [144, 192, 240, 255], +"hsl(240 75% 75% / 1.0)", [144, 144, 240, 255], +"hsl(270 75% 75% / 1.0)", [192, 144, 240, 255], +"hsl(300 75% 75% / 1.0)", [240, 144, 240, 255], +"hsl(330 75% 75% / 1.0)", [240, 144, 192, 255], +"hsl(0 87.5% 75% / 1.0)", [248, 136, 136, 255], +"hsl(30 87.5% 75% / 1.0)", [248, 192, 136, 255], +"hsl(60 87.5% 75% / 1.0)", [248, 248, 136, 255], +"hsl(90 87.5% 75% / 1.0)", [192, 248, 136, 255], +"hsl(120 87.5% 75% / 1.0)", [136, 248, 136, 255], +"hsl(150 87.5% 75% / 1.0)", [136, 248, 192, 255], +"hsl(180 87.5% 75% / 1.0)", [136, 248, 248, 255], +"hsl(210 87.5% 75% / 1.0)", [136, 192, 248, 255], +"hsl(240 87.5% 75% / 1.0)", [136, 136, 248, 255], +"hsl(270 87.5% 75% / 1.0)", [192, 136, 248, 255], +"hsl(300 87.5% 75% / 1.0)", [248, 136, 248, 255], +"hsl(330 87.5% 75% / 1.0)", [248, 136, 192, 255], +"hsl(0 100% 75% / 1.0)", [255, 128, 128, 255], +"hsl(30 100% 75% / 1.0)", [255, 192, 128, 255], +"hsl(60 100% 75% / 1.0)", [255, 255, 128, 255], +"hsl(90 100% 75% / 1.0)", [192, 255, 128, 255], +"hsl(120 100% 75% / 1.0)", [128, 255, 128, 255], +"hsl(150 100% 75% / 1.0)", [128, 255, 192, 255], +"hsl(180 100% 75% / 1.0)", [128, 255, 255, 255], +"hsl(210 100% 75% / 1.0)", [128, 192, 255, 255], +"hsl(240 100% 75% / 1.0)", [128, 128, 255, 255], +"hsl(270 100% 75% / 1.0)", [192, 128, 255, 255], +"hsl(300 100% 75% / 1.0)", [255, 128, 255, 255], +"hsl(330 100% 75% / 1.0)", [255, 128, 192, 255], +"hsl(0 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(30 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(60 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(90 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(120 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(150 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(180 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(210 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(240 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(270 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(300 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(330 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsl(0 12.5% 87.5% / 1.0)", [228, 220, 220, 255], +"hsl(30 12.5% 87.5% / 1.0)", [228, 224, 220, 255], +"hsl(60 12.5% 87.5% / 1.0)", [228, 228, 220, 255], +"hsl(90 12.5% 87.5% / 1.0)", [224, 228, 220, 255], +"hsl(120 12.5% 87.5% / 1.0)", [220, 228, 220, 255], +"hsl(150 12.5% 87.5% / 1.0)", [220, 228, 224, 255], +"hsl(180 12.5% 87.5% / 1.0)", [220, 228, 228, 255], +"hsl(210 12.5% 87.5% / 1.0)", [220, 224, 228, 255], +"hsl(240 12.5% 87.5% / 1.0)", [220, 220, 228, 255], +"hsl(270 12.5% 87.5% / 1.0)", [224, 220, 228, 255], +"hsl(300 12.5% 87.5% / 1.0)", [228, 220, 228, 255], +"hsl(330 12.5% 87.5% / 1.0)", [228, 220, 224, 255], +"hsl(0 25% 87.5% / 1.0)", [232, 216, 216, 255], +"hsl(30 25% 87.5% / 1.0)", [232, 224, 216, 255], +"hsl(60 25% 87.5% / 1.0)", [232, 232, 216, 255], +"hsl(90 25% 87.5% / 1.0)", [224, 232, 216, 255], +"hsl(120 25% 87.5% / 1.0)", [216, 232, 216, 255], +"hsl(150 25% 87.5% / 1.0)", [216, 232, 224, 255], +"hsl(180 25% 87.5% / 1.0)", [216, 232, 232, 255], +"hsl(210 25% 87.5% / 1.0)", [216, 224, 232, 255], +"hsl(240 25% 87.5% / 1.0)", [216, 216, 232, 255], +"hsl(270 25% 87.5% / 1.0)", [224, 216, 232, 255], +"hsl(300 25% 87.5% / 1.0)", [232, 216, 232, 255], +"hsl(330 25% 87.5% / 1.0)", [232, 216, 224, 255], +"hsl(0 37.5% 87.5% / 1.0)", [236, 212, 212, 255], +"hsl(30 37.5% 87.5% / 1.0)", [236, 224, 212, 255], +"hsl(60 37.5% 87.5% / 1.0)", [236, 236, 212, 255], +"hsl(90 37.5% 87.5% / 1.0)", [224, 236, 212, 255], +"hsl(120 37.5% 87.5% / 1.0)", [212, 236, 212, 255], +"hsl(150 37.5% 87.5% / 1.0)", [212, 236, 224, 255], +"hsl(180 37.5% 87.5% / 1.0)", [212, 236, 236, 255], +"hsl(210 37.5% 87.5% / 1.0)", [212, 224, 236, 255], +"hsl(240 37.5% 87.5% / 1.0)", [212, 212, 236, 255], +"hsl(270 37.5% 87.5% / 1.0)", [224, 212, 236, 255], +"hsl(300 37.5% 87.5% / 1.0)", [236, 212, 236, 255], +"hsl(330 37.5% 87.5% / 1.0)", [236, 212, 224, 255], +"hsl(0 50% 87.5% / 1.0)", [240, 208, 208, 255], +"hsl(30 50% 87.5% / 1.0)", [240, 224, 208, 255], +"hsl(60 50% 87.5% / 1.0)", [240, 240, 208, 255], +"hsl(90 50% 87.5% / 1.0)", [224, 240, 208, 255], +"hsl(120 50% 87.5% / 1.0)", [208, 240, 208, 255], +"hsl(150 50% 87.5% / 1.0)", [208, 240, 224, 255], +"hsl(180 50% 87.5% / 1.0)", [208, 240, 240, 255], +"hsl(210 50% 87.5% / 1.0)", [208, 224, 240, 255], +"hsl(240 50% 87.5% / 1.0)", [208, 208, 240, 255], +"hsl(270 50% 87.5% / 1.0)", [224, 208, 240, 255], +"hsl(300 50% 87.5% / 1.0)", [240, 208, 240, 255], +"hsl(330 50% 87.5% / 1.0)", [240, 208, 224, 255], +"hsl(0 62.5% 87.5% / 1.0)", [244, 204, 204, 255], +"hsl(30 62.5% 87.5% / 1.0)", [244, 224, 204, 255], +"hsl(60 62.5% 87.5% / 1.0)", [244, 244, 204, 255], +"hsl(90 62.5% 87.5% / 1.0)", [224, 244, 204, 255], +"hsl(120 62.5% 87.5% / 1.0)", [204, 244, 204, 255], +"hsl(150 62.5% 87.5% / 1.0)", [204, 244, 224, 255], +"hsl(180 62.5% 87.5% / 1.0)", [204, 244, 244, 255], +"hsl(210 62.5% 87.5% / 1.0)", [204, 224, 244, 255], +"hsl(240 62.5% 87.5% / 1.0)", [204, 204, 244, 255], +"hsl(270 62.5% 87.5% / 1.0)", [224, 204, 244, 255], +"hsl(300 62.5% 87.5% / 1.0)", [244, 204, 244, 255], +"hsl(330 62.5% 87.5% / 1.0)", [244, 204, 224, 255], +"hsl(0 75% 87.5% / 1.0)", [248, 200, 200, 255], +"hsl(30 75% 87.5% / 1.0)", [248, 224, 200, 255], +"hsl(60 75% 87.5% / 1.0)", [248, 248, 200, 255], +"hsl(90 75% 87.5% / 1.0)", [224, 248, 200, 255], +"hsl(120 75% 87.5% / 1.0)", [200, 248, 200, 255], +"hsl(150 75% 87.5% / 1.0)", [200, 248, 224, 255], +"hsl(180 75% 87.5% / 1.0)", [200, 248, 248, 255], +"hsl(210 75% 87.5% / 1.0)", [200, 224, 248, 255], +"hsl(240 75% 87.5% / 1.0)", [200, 200, 248, 255], +"hsl(270 75% 87.5% / 1.0)", [224, 200, 248, 255], +"hsl(300 75% 87.5% / 1.0)", [248, 200, 248, 255], +"hsl(330 75% 87.5% / 1.0)", [248, 200, 224, 255], +"hsl(0 87.5% 87.5% / 1.0)", [252, 196, 196, 255], +"hsl(30 87.5% 87.5% / 1.0)", [252, 224, 196, 255], +"hsl(60 87.5% 87.5% / 1.0)", [252, 252, 196, 255], +"hsl(90 87.5% 87.5% / 1.0)", [224, 252, 196, 255], +"hsl(120 87.5% 87.5% / 1.0)", [196, 252, 196, 255], +"hsl(150 87.5% 87.5% / 1.0)", [196, 252, 224, 255], +"hsl(180 87.5% 87.5% / 1.0)", [196, 252, 252, 255], +"hsl(210 87.5% 87.5% / 1.0)", [196, 224, 252, 255], +"hsl(240 87.5% 87.5% / 1.0)", [196, 196, 252, 255], +"hsl(270 87.5% 87.5% / 1.0)", [224, 196, 252, 255], +"hsl(300 87.5% 87.5% / 1.0)", [252, 196, 252, 255], +"hsl(330 87.5% 87.5% / 1.0)", [252, 196, 224, 255], +"hsl(0 100% 87.5% / 1.0)", [255, 192, 192, 255], +"hsl(30 100% 87.5% / 1.0)", [255, 224, 192, 255], +"hsl(60 100% 87.5% / 1.0)", [255, 255, 192, 255], +"hsl(90 100% 87.5% / 1.0)", [224, 255, 192, 255], +"hsl(120 100% 87.5% / 1.0)", [192, 255, 192, 255], +"hsl(150 100% 87.5% / 1.0)", [192, 255, 224, 255], +"hsl(180 100% 87.5% / 1.0)", [192, 255, 255, 255], +"hsl(210 100% 87.5% / 1.0)", [192, 224, 255, 255], +"hsl(240 100% 87.5% / 1.0)", [192, 192, 255, 255], +"hsl(270 100% 87.5% / 1.0)", [224, 192, 255, 255], +"hsl(300 100% 87.5% / 1.0)", [255, 192, 255, 255], +"hsl(330 100% 87.5% / 1.0)", [255, 192, 224, 255], +"hsl(0 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(30 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(60 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(90 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(120 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(150 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(180 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(210 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(240 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(270 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(300 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(330 0% 100% / 1.0)", [255, 255, 255, 255], +"hsl(0 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(30 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(60 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(90 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(120 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(150 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(180 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(210 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(240 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(270 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(300 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(330 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(0 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(30 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(60 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(90 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(120 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(150 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(180 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(210 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(240 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(270 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(300 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(330 25% 100% / 1.0)", [255, 255, 255, 255], +"hsl(0 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(30 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(60 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(90 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(120 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(150 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(180 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(210 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(240 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(270 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(300 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(330 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(0 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(30 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(60 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(90 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(120 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(150 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(180 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(210 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(240 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(270 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(300 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(330 50% 100% / 1.0)", [255, 255, 255, 255], +"hsl(0 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(30 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(60 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(90 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(120 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(150 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(180 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(210 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(240 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(270 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(300 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(330 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(0 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(30 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(60 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(90 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(120 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(150 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(180 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(210 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(240 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(270 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(300 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(330 75% 100% / 1.0)", [255, 255, 255, 255], +"hsl(0 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(30 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(60 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(90 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(120 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(150 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(180 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(210 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(240 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(270 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(300 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(330 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsl(0 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(30 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(60 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(90 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(120 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(150 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(180 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(210 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(240 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(270 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(300 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(330 100% 100% / 1.0)", [255, 255, 255, 255], +"hsl(0 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(30 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(60 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(90 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(120 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(150 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(180 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(210 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(240 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(270 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(300 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(330 0% 0% / 0.25)", [0, 0, 0, 64], +"hsl(0 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(30 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(60 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(90 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(120 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(150 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(180 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(210 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(240 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(270 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(300 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(330 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(0 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(30 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(60 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(90 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(120 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(150 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(180 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(210 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(240 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(270 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(300 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(330 25% 0% / 0.25)", [0, 0, 0, 64], +"hsl(0 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(30 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(60 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(90 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(120 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(150 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(180 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(210 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(240 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(270 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(300 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(330 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(0 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(30 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(60 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(90 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(120 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(150 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(180 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(210 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(240 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(270 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(300 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(330 50% 0% / 0.25)", [0, 0, 0, 64], +"hsl(0 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(30 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(60 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(90 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(120 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(150 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(180 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(210 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(240 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(270 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(300 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(330 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(0 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(30 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(60 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(90 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(120 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(150 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(180 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(210 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(240 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(270 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(300 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(330 75% 0% / 0.25)", [0, 0, 0, 64], +"hsl(0 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(30 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(60 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(90 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(120 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(150 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(180 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(210 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(240 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(270 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(300 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(330 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsl(0 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(30 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(60 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(90 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(120 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(150 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(180 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(210 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(240 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(270 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(300 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(330 100% 0% / 0.25)", [0, 0, 0, 64], +"hsl(0 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(30 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(60 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(90 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(120 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(150 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(180 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(210 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(240 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(270 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(300 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(330 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsl(0 12.5% 12.5% / 0.25)", [36, 28, 28, 64], +"hsl(30 12.5% 12.5% / 0.25)", [36, 32, 28, 64], +"hsl(60 12.5% 12.5% / 0.25)", [36, 36, 28, 64], +"hsl(90 12.5% 12.5% / 0.25)", [32, 36, 28, 64], +"hsl(120 12.5% 12.5% / 0.25)", [28, 36, 28, 64], +"hsl(150 12.5% 12.5% / 0.25)", [28, 36, 32, 64], +"hsl(180 12.5% 12.5% / 0.25)", [28, 36, 36, 64], +"hsl(210 12.5% 12.5% / 0.25)", [28, 32, 36, 64], +"hsl(240 12.5% 12.5% / 0.25)", [28, 28, 36, 64], +"hsl(270 12.5% 12.5% / 0.25)", [32, 28, 36, 64], +"hsl(300 12.5% 12.5% / 0.25)", [36, 28, 36, 64], +"hsl(330 12.5% 12.5% / 0.25)", [36, 28, 32, 64], +"hsl(0 25% 12.5% / 0.25)", [40, 24, 24, 64], +"hsl(30 25% 12.5% / 0.25)", [40, 32, 24, 64], +"hsl(60 25% 12.5% / 0.25)", [40, 40, 24, 64], +"hsl(90 25% 12.5% / 0.25)", [32, 40, 24, 64], +"hsl(120 25% 12.5% / 0.25)", [24, 40, 24, 64], +"hsl(150 25% 12.5% / 0.25)", [24, 40, 32, 64], +"hsl(180 25% 12.5% / 0.25)", [24, 40, 40, 64], +"hsl(210 25% 12.5% / 0.25)", [24, 32, 40, 64], +"hsl(240 25% 12.5% / 0.25)", [24, 24, 40, 64], +"hsl(270 25% 12.5% / 0.25)", [32, 24, 40, 64], +"hsl(300 25% 12.5% / 0.25)", [40, 24, 40, 64], +"hsl(330 25% 12.5% / 0.25)", [40, 24, 32, 64], +"hsl(0 37.5% 12.5% / 0.25)", [44, 20, 20, 64], +"hsl(30 37.5% 12.5% / 0.25)", [44, 32, 20, 64], +"hsl(60 37.5% 12.5% / 0.25)", [44, 44, 20, 64], +"hsl(90 37.5% 12.5% / 0.25)", [32, 44, 20, 64], +"hsl(120 37.5% 12.5% / 0.25)", [20, 44, 20, 64], +"hsl(150 37.5% 12.5% / 0.25)", [20, 44, 32, 64], +"hsl(180 37.5% 12.5% / 0.25)", [20, 44, 44, 64], +"hsl(210 37.5% 12.5% / 0.25)", [20, 32, 44, 64], +"hsl(240 37.5% 12.5% / 0.25)", [20, 20, 44, 64], +"hsl(270 37.5% 12.5% / 0.25)", [32, 20, 44, 64], +"hsl(300 37.5% 12.5% / 0.25)", [44, 20, 44, 64], +"hsl(330 37.5% 12.5% / 0.25)", [44, 20, 32, 64], +"hsl(0 50% 12.5% / 0.25)", [48, 16, 16, 64], +"hsl(30 50% 12.5% / 0.25)", [48, 32, 16, 64], +"hsl(60 50% 12.5% / 0.25)", [48, 48, 16, 64], +"hsl(90 50% 12.5% / 0.25)", [32, 48, 16, 64], +"hsl(120 50% 12.5% / 0.25)", [16, 48, 16, 64], +"hsl(150 50% 12.5% / 0.25)", [16, 48, 32, 64], +"hsl(180 50% 12.5% / 0.25)", [16, 48, 48, 64], +"hsl(210 50% 12.5% / 0.25)", [16, 32, 48, 64], +"hsl(240 50% 12.5% / 0.25)", [16, 16, 48, 64], +"hsl(270 50% 12.5% / 0.25)", [32, 16, 48, 64], +"hsl(300 50% 12.5% / 0.25)", [48, 16, 48, 64], +"hsl(330 50% 12.5% / 0.25)", [48, 16, 32, 64], +"hsl(0 62.5% 12.5% / 0.25)", [52, 12, 12, 64], +"hsl(30 62.5% 12.5% / 0.25)", [52, 32, 12, 64], +"hsl(60 62.5% 12.5% / 0.25)", [52, 52, 12, 64], +"hsl(90 62.5% 12.5% / 0.25)", [32, 52, 12, 64], +"hsl(120 62.5% 12.5% / 0.25)", [12, 52, 12, 64], +"hsl(150 62.5% 12.5% / 0.25)", [12, 52, 32, 64], +"hsl(180 62.5% 12.5% / 0.25)", [12, 52, 52, 64], +"hsl(210 62.5% 12.5% / 0.25)", [12, 32, 52, 64], +"hsl(240 62.5% 12.5% / 0.25)", [12, 12, 52, 64], +"hsl(270 62.5% 12.5% / 0.25)", [32, 12, 52, 64], +"hsl(300 62.5% 12.5% / 0.25)", [52, 12, 52, 64], +"hsl(330 62.5% 12.5% / 0.25)", [52, 12, 32, 64], +"hsl(0 75% 12.5% / 0.25)", [56, 8, 8, 64], +"hsl(30 75% 12.5% / 0.25)", [56, 32, 8, 64], +"hsl(60 75% 12.5% / 0.25)", [56, 56, 8, 64], +"hsl(90 75% 12.5% / 0.25)", [32, 56, 8, 64], +"hsl(120 75% 12.5% / 0.25)", [8, 56, 8, 64], +"hsl(150 75% 12.5% / 0.25)", [8, 56, 32, 64], +"hsl(180 75% 12.5% / 0.25)", [8, 56, 56, 64], +"hsl(210 75% 12.5% / 0.25)", [8, 32, 56, 64], +"hsl(240 75% 12.5% / 0.25)", [8, 8, 56, 64], +"hsl(270 75% 12.5% / 0.25)", [32, 8, 56, 64], +"hsl(300 75% 12.5% / 0.25)", [56, 8, 56, 64], +"hsl(330 75% 12.5% / 0.25)", [56, 8, 32, 64], +"hsl(0 87.5% 12.5% / 0.25)", [60, 4, 4, 64], +"hsl(30 87.5% 12.5% / 0.25)", [60, 32, 4, 64], +"hsl(60 87.5% 12.5% / 0.25)", [60, 60, 4, 64], +"hsl(90 87.5% 12.5% / 0.25)", [32, 60, 4, 64], +"hsl(120 87.5% 12.5% / 0.25)", [4, 60, 4, 64], +"hsl(150 87.5% 12.5% / 0.25)", [4, 60, 32, 64], +"hsl(180 87.5% 12.5% / 0.25)", [4, 60, 60, 64], +"hsl(210 87.5% 12.5% / 0.25)", [4, 32, 60, 64], +"hsl(240 87.5% 12.5% / 0.25)", [4, 4, 60, 64], +"hsl(270 87.5% 12.5% / 0.25)", [32, 4, 60, 64], +"hsl(300 87.5% 12.5% / 0.25)", [60, 4, 60, 64], +"hsl(330 87.5% 12.5% / 0.25)", [60, 4, 32, 64], +"hsl(0 100% 12.5% / 0.25)", [64, 0, 0, 64], +"hsl(30 100% 12.5% / 0.25)", [64, 32, 0, 64], +"hsl(60 100% 12.5% / 0.25)", [64, 64, 0, 64], +"hsl(90 100% 12.5% / 0.25)", [32, 64, 0, 64], +"hsl(120 100% 12.5% / 0.25)", [0, 64, 0, 64], +"hsl(150 100% 12.5% / 0.25)", [0, 64, 32, 64], +"hsl(180 100% 12.5% / 0.25)", [0, 64, 64, 64], +"hsl(210 100% 12.5% / 0.25)", [0, 32, 64, 64], +"hsl(240 100% 12.5% / 0.25)", [0, 0, 64, 64], +"hsl(270 100% 12.5% / 0.25)", [32, 0, 64, 64], +"hsl(300 100% 12.5% / 0.25)", [64, 0, 64, 64], +"hsl(330 100% 12.5% / 0.25)", [64, 0, 32, 64], +"hsl(0 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(30 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(60 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(90 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(120 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(150 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(180 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(210 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(240 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(270 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(300 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(330 0% 25% / 0.25)", [64, 64, 64, 64], +"hsl(0 12.5% 25% / 0.25)", [72, 56, 56, 64], +"hsl(30 12.5% 25% / 0.25)", [72, 64, 56, 64], +"hsl(60 12.5% 25% / 0.25)", [72, 72, 56, 64], +"hsl(90 12.5% 25% / 0.25)", [64, 72, 56, 64], +"hsl(120 12.5% 25% / 0.25)", [56, 72, 56, 64], +"hsl(150 12.5% 25% / 0.25)", [56, 72, 64, 64], +"hsl(180 12.5% 25% / 0.25)", [56, 72, 72, 64], +"hsl(210 12.5% 25% / 0.25)", [56, 64, 72, 64], +"hsl(240 12.5% 25% / 0.25)", [56, 56, 72, 64], +"hsl(270 12.5% 25% / 0.25)", [64, 56, 72, 64], +"hsl(300 12.5% 25% / 0.25)", [72, 56, 72, 64], +"hsl(330 12.5% 25% / 0.25)", [72, 56, 64, 64], +"hsl(0 25% 25% / 0.25)", [80, 48, 48, 64], +"hsl(30 25% 25% / 0.25)", [80, 64, 48, 64], +"hsl(60 25% 25% / 0.25)", [80, 80, 48, 64], +"hsl(90 25% 25% / 0.25)", [64, 80, 48, 64], +"hsl(120 25% 25% / 0.25)", [48, 80, 48, 64], +"hsl(150 25% 25% / 0.25)", [48, 80, 64, 64], +"hsl(180 25% 25% / 0.25)", [48, 80, 80, 64], +"hsl(210 25% 25% / 0.25)", [48, 64, 80, 64], +"hsl(240 25% 25% / 0.25)", [48, 48, 80, 64], +"hsl(270 25% 25% / 0.25)", [64, 48, 80, 64], +"hsl(300 25% 25% / 0.25)", [80, 48, 80, 64], +"hsl(330 25% 25% / 0.25)", [80, 48, 64, 64], +"hsl(0 37.5% 25% / 0.25)", [88, 40, 40, 64], +"hsl(30 37.5% 25% / 0.25)", [88, 64, 40, 64], +"hsl(60 37.5% 25% / 0.25)", [88, 88, 40, 64], +"hsl(90 37.5% 25% / 0.25)", [64, 88, 40, 64], +"hsl(120 37.5% 25% / 0.25)", [40, 88, 40, 64], +"hsl(150 37.5% 25% / 0.25)", [40, 88, 64, 64], +"hsl(180 37.5% 25% / 0.25)", [40, 88, 88, 64], +"hsl(210 37.5% 25% / 0.25)", [40, 64, 88, 64], +"hsl(240 37.5% 25% / 0.25)", [40, 40, 88, 64], +"hsl(270 37.5% 25% / 0.25)", [64, 40, 88, 64], +"hsl(300 37.5% 25% / 0.25)", [88, 40, 88, 64], +"hsl(330 37.5% 25% / 0.25)", [88, 40, 64, 64], +"hsl(0 50% 25% / 0.25)", [96, 32, 32, 64], +"hsl(30 50% 25% / 0.25)", [96, 64, 32, 64], +"hsl(60 50% 25% / 0.25)", [96, 96, 32, 64], +"hsl(90 50% 25% / 0.25)", [64, 96, 32, 64], +"hsl(120 50% 25% / 0.25)", [32, 96, 32, 64], +"hsl(150 50% 25% / 0.25)", [32, 96, 64, 64], +"hsl(180 50% 25% / 0.25)", [32, 96, 96, 64], +"hsl(210 50% 25% / 0.25)", [32, 64, 96, 64], +"hsl(240 50% 25% / 0.25)", [32, 32, 96, 64], +"hsl(270 50% 25% / 0.25)", [64, 32, 96, 64], +"hsl(300 50% 25% / 0.25)", [96, 32, 96, 64], +"hsl(330 50% 25% / 0.25)", [96, 32, 64, 64], +"hsl(0 62.5% 25% / 0.25)", [104, 24, 24, 64], +"hsl(30 62.5% 25% / 0.25)", [104, 64, 24, 64], +"hsl(60 62.5% 25% / 0.25)", [104, 104, 24, 64], +"hsl(90 62.5% 25% / 0.25)", [64, 104, 24, 64], +"hsl(120 62.5% 25% / 0.25)", [24, 104, 24, 64], +"hsl(150 62.5% 25% / 0.25)", [24, 104, 64, 64], +"hsl(180 62.5% 25% / 0.25)", [24, 104, 104, 64], +"hsl(210 62.5% 25% / 0.25)", [24, 64, 104, 64], +"hsl(240 62.5% 25% / 0.25)", [24, 24, 104, 64], +"hsl(270 62.5% 25% / 0.25)", [64, 24, 104, 64], +"hsl(300 62.5% 25% / 0.25)", [104, 24, 104, 64], +"hsl(330 62.5% 25% / 0.25)", [104, 24, 64, 64], +"hsl(0 75% 25% / 0.25)", [112, 16, 16, 64], +"hsl(30 75% 25% / 0.25)", [112, 64, 16, 64], +"hsl(60 75% 25% / 0.25)", [112, 112, 16, 64], +"hsl(90 75% 25% / 0.25)", [64, 112, 16, 64], +"hsl(120 75% 25% / 0.25)", [16, 112, 16, 64], +"hsl(150 75% 25% / 0.25)", [16, 112, 64, 64], +"hsl(180 75% 25% / 0.25)", [16, 112, 112, 64], +"hsl(210 75% 25% / 0.25)", [16, 64, 112, 64], +"hsl(240 75% 25% / 0.25)", [16, 16, 112, 64], +"hsl(270 75% 25% / 0.25)", [64, 16, 112, 64], +"hsl(300 75% 25% / 0.25)", [112, 16, 112, 64], +"hsl(330 75% 25% / 0.25)", [112, 16, 64, 64], +"hsl(0 87.5% 25% / 0.25)", [120, 8, 8, 64], +"hsl(30 87.5% 25% / 0.25)", [120, 64, 8, 64], +"hsl(60 87.5% 25% / 0.25)", [120, 120, 8, 64], +"hsl(90 87.5% 25% / 0.25)", [64, 120, 8, 64], +"hsl(120 87.5% 25% / 0.25)", [8, 120, 8, 64], +"hsl(150 87.5% 25% / 0.25)", [8, 120, 64, 64], +"hsl(180 87.5% 25% / 0.25)", [8, 120, 120, 64], +"hsl(210 87.5% 25% / 0.25)", [8, 64, 120, 64], +"hsl(240 87.5% 25% / 0.25)", [8, 8, 120, 64], +"hsl(270 87.5% 25% / 0.25)", [64, 8, 120, 64], +"hsl(300 87.5% 25% / 0.25)", [120, 8, 120, 64], +"hsl(330 87.5% 25% / 0.25)", [120, 8, 64, 64], +"hsl(0 100% 25% / 0.25)", [128, 0, 0, 64], +"hsl(30 100% 25% / 0.25)", [128, 64, 0, 64], +"hsl(60 100% 25% / 0.25)", [128, 128, 0, 64], +"hsl(90 100% 25% / 0.25)", [64, 128, 0, 64], +"hsl(120 100% 25% / 0.25)", [0, 128, 0, 64], +"hsl(150 100% 25% / 0.25)", [0, 128, 64, 64], +"hsl(180 100% 25% / 0.25)", [0, 128, 128, 64], +"hsl(210 100% 25% / 0.25)", [0, 64, 128, 64], +"hsl(240 100% 25% / 0.25)", [0, 0, 128, 64], +"hsl(270 100% 25% / 0.25)", [64, 0, 128, 64], +"hsl(300 100% 25% / 0.25)", [128, 0, 128, 64], +"hsl(330 100% 25% / 0.25)", [128, 0, 64, 64], +"hsl(0 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(30 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(60 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(90 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(120 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(150 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(180 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(210 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(240 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(270 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(300 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(330 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsl(0 12.5% 37.5% / 0.25)", [108, 84, 84, 64], +"hsl(30 12.5% 37.5% / 0.25)", [108, 96, 84, 64], +"hsl(60 12.5% 37.5% / 0.25)", [108, 108, 84, 64], +"hsl(90 12.5% 37.5% / 0.25)", [96, 108, 84, 64], +"hsl(120 12.5% 37.5% / 0.25)", [84, 108, 84, 64], +"hsl(150 12.5% 37.5% / 0.25)", [84, 108, 96, 64], +"hsl(180 12.5% 37.5% / 0.25)", [84, 108, 108, 64], +"hsl(210 12.5% 37.5% / 0.25)", [84, 96, 108, 64], +"hsl(240 12.5% 37.5% / 0.25)", [84, 84, 108, 64], +"hsl(270 12.5% 37.5% / 0.25)", [96, 84, 108, 64], +"hsl(300 12.5% 37.5% / 0.25)", [108, 84, 108, 64], +"hsl(330 12.5% 37.5% / 0.25)", [108, 84, 96, 64], +"hsl(0 25% 37.5% / 0.25)", [120, 72, 72, 64], +"hsl(30 25% 37.5% / 0.25)", [120, 96, 72, 64], +"hsl(60 25% 37.5% / 0.25)", [120, 120, 72, 64], +"hsl(90 25% 37.5% / 0.25)", [96, 120, 72, 64], +"hsl(120 25% 37.5% / 0.25)", [72, 120, 72, 64], +"hsl(150 25% 37.5% / 0.25)", [72, 120, 96, 64], +"hsl(180 25% 37.5% / 0.25)", [72, 120, 120, 64], +"hsl(210 25% 37.5% / 0.25)", [72, 96, 120, 64], +"hsl(240 25% 37.5% / 0.25)", [72, 72, 120, 64], +"hsl(270 25% 37.5% / 0.25)", [96, 72, 120, 64], +"hsl(300 25% 37.5% / 0.25)", [120, 72, 120, 64], +"hsl(330 25% 37.5% / 0.25)", [120, 72, 96, 64], +"hsl(0 37.5% 37.5% / 0.25)", [132, 60, 60, 64], +"hsl(30 37.5% 37.5% / 0.25)", [132, 96, 60, 64], +"hsl(60 37.5% 37.5% / 0.25)", [132, 132, 60, 64], +"hsl(90 37.5% 37.5% / 0.25)", [96, 132, 60, 64], +"hsl(120 37.5% 37.5% / 0.25)", [60, 132, 60, 64], +"hsl(150 37.5% 37.5% / 0.25)", [60, 132, 96, 64], +"hsl(180 37.5% 37.5% / 0.25)", [60, 132, 132, 64], +"hsl(210 37.5% 37.5% / 0.25)", [60, 96, 132, 64], +"hsl(240 37.5% 37.5% / 0.25)", [60, 60, 132, 64], +"hsl(270 37.5% 37.5% / 0.25)", [96, 60, 132, 64], +"hsl(300 37.5% 37.5% / 0.25)", [132, 60, 132, 64], +"hsl(330 37.5% 37.5% / 0.25)", [132, 60, 96, 64], +"hsl(0 50% 37.5% / 0.25)", [144, 48, 48, 64], +"hsl(30 50% 37.5% / 0.25)", [144, 96, 48, 64], +"hsl(60 50% 37.5% / 0.25)", [144, 144, 48, 64], +"hsl(90 50% 37.5% / 0.25)", [96, 144, 48, 64], +"hsl(120 50% 37.5% / 0.25)", [48, 144, 48, 64], +"hsl(150 50% 37.5% / 0.25)", [48, 144, 96, 64], +"hsl(180 50% 37.5% / 0.25)", [48, 144, 144, 64], +"hsl(210 50% 37.5% / 0.25)", [48, 96, 144, 64], +"hsl(240 50% 37.5% / 0.25)", [48, 48, 144, 64], +"hsl(270 50% 37.5% / 0.25)", [96, 48, 144, 64], +"hsl(300 50% 37.5% / 0.25)", [144, 48, 144, 64], +"hsl(330 50% 37.5% / 0.25)", [144, 48, 96, 64], +"hsl(0 62.5% 37.5% / 0.25)", [156, 36, 36, 64], +"hsl(30 62.5% 37.5% / 0.25)", [156, 96, 36, 64], +"hsl(60 62.5% 37.5% / 0.25)", [156, 156, 36, 64], +"hsl(90 62.5% 37.5% / 0.25)", [96, 156, 36, 64], +"hsl(120 62.5% 37.5% / 0.25)", [36, 156, 36, 64], +"hsl(150 62.5% 37.5% / 0.25)", [36, 156, 96, 64], +"hsl(180 62.5% 37.5% / 0.25)", [36, 156, 156, 64], +"hsl(210 62.5% 37.5% / 0.25)", [36, 96, 156, 64], +"hsl(240 62.5% 37.5% / 0.25)", [36, 36, 156, 64], +"hsl(270 62.5% 37.5% / 0.25)", [96, 36, 156, 64], +"hsl(300 62.5% 37.5% / 0.25)", [156, 36, 156, 64], +"hsl(330 62.5% 37.5% / 0.25)", [156, 36, 96, 64], +"hsl(0 75% 37.5% / 0.25)", [168, 24, 24, 64], +"hsl(30 75% 37.5% / 0.25)", [168, 96, 24, 64], +"hsl(60 75% 37.5% / 0.25)", [168, 168, 24, 64], +"hsl(90 75% 37.5% / 0.25)", [96, 168, 24, 64], +"hsl(120 75% 37.5% / 0.25)", [24, 168, 24, 64], +"hsl(150 75% 37.5% / 0.25)", [24, 168, 96, 64], +"hsl(180 75% 37.5% / 0.25)", [24, 168, 168, 64], +"hsl(210 75% 37.5% / 0.25)", [24, 96, 168, 64], +"hsl(240 75% 37.5% / 0.25)", [24, 24, 168, 64], +"hsl(270 75% 37.5% / 0.25)", [96, 24, 168, 64], +"hsl(300 75% 37.5% / 0.25)", [168, 24, 168, 64], +"hsl(330 75% 37.5% / 0.25)", [168, 24, 96, 64], +"hsl(0 87.5% 37.5% / 0.25)", [180, 12, 12, 64], +"hsl(30 87.5% 37.5% / 0.25)", [180, 96, 12, 64], +"hsl(60 87.5% 37.5% / 0.25)", [180, 180, 12, 64], +"hsl(90 87.5% 37.5% / 0.25)", [96, 180, 12, 64], +"hsl(120 87.5% 37.5% / 0.25)", [12, 180, 12, 64], +"hsl(150 87.5% 37.5% / 0.25)", [12, 180, 96, 64], +"hsl(180 87.5% 37.5% / 0.25)", [12, 180, 180, 64], +"hsl(210 87.5% 37.5% / 0.25)", [12, 96, 180, 64], +"hsl(240 87.5% 37.5% / 0.25)", [12, 12, 180, 64], +"hsl(270 87.5% 37.5% / 0.25)", [96, 12, 180, 64], +"hsl(300 87.5% 37.5% / 0.25)", [180, 12, 180, 64], +"hsl(330 87.5% 37.5% / 0.25)", [180, 12, 96, 64], +"hsl(0 100% 37.5% / 0.25)", [192, 0, 0, 64], +"hsl(30 100% 37.5% / 0.25)", [192, 96, 0, 64], +"hsl(60 100% 37.5% / 0.25)", [192, 192, 0, 64], +"hsl(90 100% 37.5% / 0.25)", [96, 192, 0, 64], +"hsl(120 100% 37.5% / 0.25)", [0, 192, 0, 64], +"hsl(150 100% 37.5% / 0.25)", [0, 192, 96, 64], +"hsl(180 100% 37.5% / 0.25)", [0, 192, 192, 64], +"hsl(210 100% 37.5% / 0.25)", [0, 96, 192, 64], +"hsl(240 100% 37.5% / 0.25)", [0, 0, 192, 64], +"hsl(270 100% 37.5% / 0.25)", [96, 0, 192, 64], +"hsl(300 100% 37.5% / 0.25)", [192, 0, 192, 64], +"hsl(330 100% 37.5% / 0.25)", [192, 0, 96, 64], +"hsl(0 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(30 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(60 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(90 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(120 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(150 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(180 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(210 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(240 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(270 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(300 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(330 0% 50% / 0.25)", [128, 128, 128, 64], +"hsl(0 12.5% 50% / 0.25)", [144, 112, 112, 64], +"hsl(30 12.5% 50% / 0.25)", [144, 128, 112, 64], +"hsl(60 12.5% 50% / 0.25)", [144, 144, 112, 64], +"hsl(90 12.5% 50% / 0.25)", [128, 144, 112, 64], +"hsl(120 12.5% 50% / 0.25)", [112, 144, 112, 64], +"hsl(150 12.5% 50% / 0.25)", [112, 144, 128, 64], +"hsl(180 12.5% 50% / 0.25)", [112, 144, 144, 64], +"hsl(210 12.5% 50% / 0.25)", [112, 128, 144, 64], +"hsl(240 12.5% 50% / 0.25)", [112, 112, 144, 64], +"hsl(270 12.5% 50% / 0.25)", [128, 112, 144, 64], +"hsl(300 12.5% 50% / 0.25)", [144, 112, 144, 64], +"hsl(330 12.5% 50% / 0.25)", [144, 112, 128, 64], +"hsl(0 25% 50% / 0.25)", [160, 96, 96, 64], +"hsl(30 25% 50% / 0.25)", [160, 128, 96, 64], +"hsl(60 25% 50% / 0.25)", [160, 160, 96, 64], +"hsl(90 25% 50% / 0.25)", [128, 160, 96, 64], +"hsl(120 25% 50% / 0.25)", [96, 160, 96, 64], +"hsl(150 25% 50% / 0.25)", [96, 160, 128, 64], +"hsl(180 25% 50% / 0.25)", [96, 160, 160, 64], +"hsl(210 25% 50% / 0.25)", [96, 128, 160, 64], +"hsl(240 25% 50% / 0.25)", [96, 96, 160, 64], +"hsl(270 25% 50% / 0.25)", [128, 96, 160, 64], +"hsl(300 25% 50% / 0.25)", [160, 96, 160, 64], +"hsl(330 25% 50% / 0.25)", [160, 96, 128, 64], +"hsl(0 37.5% 50% / 0.25)", [176, 80, 80, 64], +"hsl(30 37.5% 50% / 0.25)", [176, 128, 80, 64], +"hsl(60 37.5% 50% / 0.25)", [176, 176, 80, 64], +"hsl(90 37.5% 50% / 0.25)", [128, 176, 80, 64], +"hsl(120 37.5% 50% / 0.25)", [80, 176, 80, 64], +"hsl(150 37.5% 50% / 0.25)", [80, 176, 128, 64], +"hsl(180 37.5% 50% / 0.25)", [80, 176, 176, 64], +"hsl(210 37.5% 50% / 0.25)", [80, 128, 176, 64], +"hsl(240 37.5% 50% / 0.25)", [80, 80, 176, 64], +"hsl(270 37.5% 50% / 0.25)", [128, 80, 176, 64], +"hsl(300 37.5% 50% / 0.25)", [176, 80, 176, 64], +"hsl(330 37.5% 50% / 0.25)", [176, 80, 128, 64], +"hsl(0 50% 50% / 0.25)", [192, 64, 64, 64], +"hsl(30 50% 50% / 0.25)", [192, 128, 64, 64], +"hsl(60 50% 50% / 0.25)", [192, 192, 64, 64], +"hsl(90 50% 50% / 0.25)", [128, 192, 64, 64], +"hsl(120 50% 50% / 0.25)", [64, 192, 64, 64], +"hsl(150 50% 50% / 0.25)", [64, 192, 128, 64], +"hsl(180 50% 50% / 0.25)", [64, 192, 192, 64], +"hsl(210 50% 50% / 0.25)", [64, 128, 192, 64], +"hsl(240 50% 50% / 0.25)", [64, 64, 192, 64], +"hsl(270 50% 50% / 0.25)", [128, 64, 192, 64], +"hsl(300 50% 50% / 0.25)", [192, 64, 192, 64], +"hsl(330 50% 50% / 0.25)", [192, 64, 128, 64], +"hsl(0 62.5% 50% / 0.25)", [208, 48, 48, 64], +"hsl(30 62.5% 50% / 0.25)", [208, 128, 48, 64], +"hsl(60 62.5% 50% / 0.25)", [208, 208, 48, 64], +"hsl(90 62.5% 50% / 0.25)", [128, 208, 48, 64], +"hsl(120 62.5% 50% / 0.25)", [48, 208, 48, 64], +"hsl(150 62.5% 50% / 0.25)", [48, 208, 128, 64], +"hsl(180 62.5% 50% / 0.25)", [48, 208, 208, 64], +"hsl(210 62.5% 50% / 0.25)", [48, 128, 208, 64], +"hsl(240 62.5% 50% / 0.25)", [48, 48, 208, 64], +"hsl(270 62.5% 50% / 0.25)", [128, 48, 208, 64], +"hsl(300 62.5% 50% / 0.25)", [208, 48, 208, 64], +"hsl(330 62.5% 50% / 0.25)", [208, 48, 128, 64], +"hsl(0 75% 50% / 0.25)", [224, 32, 32, 64], +"hsl(30 75% 50% / 0.25)", [224, 128, 32, 64], +"hsl(60 75% 50% / 0.25)", [224, 224, 32, 64], +"hsl(90 75% 50% / 0.25)", [128, 224, 32, 64], +"hsl(120 75% 50% / 0.25)", [32, 224, 32, 64], +"hsl(150 75% 50% / 0.25)", [32, 224, 128, 64], +"hsl(180 75% 50% / 0.25)", [32, 224, 224, 64], +"hsl(210 75% 50% / 0.25)", [32, 128, 224, 64], +"hsl(240 75% 50% / 0.25)", [32, 32, 224, 64], +"hsl(270 75% 50% / 0.25)", [128, 32, 224, 64], +"hsl(300 75% 50% / 0.25)", [224, 32, 224, 64], +"hsl(330 75% 50% / 0.25)", [224, 32, 128, 64], +"hsl(0 87.5% 50% / 0.25)", [240, 16, 16, 64], +"hsl(30 87.5% 50% / 0.25)", [240, 128, 16, 64], +"hsl(60 87.5% 50% / 0.25)", [240, 240, 16, 64], +"hsl(90 87.5% 50% / 0.25)", [128, 240, 16, 64], +"hsl(120 87.5% 50% / 0.25)", [16, 240, 16, 64], +"hsl(150 87.5% 50% / 0.25)", [16, 240, 128, 64], +"hsl(180 87.5% 50% / 0.25)", [16, 240, 240, 64], +"hsl(210 87.5% 50% / 0.25)", [16, 128, 240, 64], +"hsl(240 87.5% 50% / 0.25)", [16, 16, 240, 64], +"hsl(270 87.5% 50% / 0.25)", [128, 16, 240, 64], +"hsl(300 87.5% 50% / 0.25)", [240, 16, 240, 64], +"hsl(330 87.5% 50% / 0.25)", [240, 16, 128, 64], +"hsl(0 100% 50% / 0.25)", [255, 0, 0, 64], +"hsl(30 100% 50% / 0.25)", [255, 128, 0, 64], +"hsl(60 100% 50% / 0.25)", [255, 255, 0, 64], +"hsl(90 100% 50% / 0.25)", [128, 255, 0, 64], +"hsl(120 100% 50% / 0.25)", [0, 255, 0, 64], +"hsl(150 100% 50% / 0.25)", [0, 255, 128, 64], +"hsl(180 100% 50% / 0.25)", [0, 255, 255, 64], +"hsl(210 100% 50% / 0.25)", [0, 128, 255, 64], +"hsl(240 100% 50% / 0.25)", [0, 0, 255, 64], +"hsl(270 100% 50% / 0.25)", [128, 0, 255, 64], +"hsl(300 100% 50% / 0.25)", [255, 0, 255, 64], +"hsl(330 100% 50% / 0.25)", [255, 0, 128, 64], +"hsl(0 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(30 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(60 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(90 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(120 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(150 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(180 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(210 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(240 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(270 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(300 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(330 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsl(0 12.5% 62.5% / 0.25)", [172, 148, 148, 64], +"hsl(30 12.5% 62.5% / 0.25)", [172, 160, 148, 64], +"hsl(60 12.5% 62.5% / 0.25)", [172, 172, 148, 64], +"hsl(90 12.5% 62.5% / 0.25)", [160, 172, 148, 64], +"hsl(120 12.5% 62.5% / 0.25)", [148, 172, 148, 64], +"hsl(150 12.5% 62.5% / 0.25)", [148, 172, 160, 64], +"hsl(180 12.5% 62.5% / 0.25)", [148, 172, 172, 64], +"hsl(210 12.5% 62.5% / 0.25)", [148, 160, 172, 64], +"hsl(240 12.5% 62.5% / 0.25)", [148, 148, 172, 64], +"hsl(270 12.5% 62.5% / 0.25)", [160, 148, 172, 64], +"hsl(300 12.5% 62.5% / 0.25)", [172, 148, 172, 64], +"hsl(330 12.5% 62.5% / 0.25)", [172, 148, 160, 64], +"hsl(0 25% 62.5% / 0.25)", [184, 136, 136, 64], +"hsl(30 25% 62.5% / 0.25)", [184, 160, 136, 64], +"hsl(60 25% 62.5% / 0.25)", [184, 184, 136, 64], +"hsl(90 25% 62.5% / 0.25)", [160, 184, 136, 64], +"hsl(120 25% 62.5% / 0.25)", [136, 184, 136, 64], +"hsl(150 25% 62.5% / 0.25)", [136, 184, 160, 64], +"hsl(180 25% 62.5% / 0.25)", [136, 184, 184, 64], +"hsl(210 25% 62.5% / 0.25)", [136, 160, 184, 64], +"hsl(240 25% 62.5% / 0.25)", [136, 136, 184, 64], +"hsl(270 25% 62.5% / 0.25)", [160, 136, 184, 64], +"hsl(300 25% 62.5% / 0.25)", [184, 136, 184, 64], +"hsl(330 25% 62.5% / 0.25)", [184, 136, 160, 64], +"hsl(0 37.5% 62.5% / 0.25)", [196, 124, 124, 64], +"hsl(30 37.5% 62.5% / 0.25)", [196, 160, 124, 64], +"hsl(60 37.5% 62.5% / 0.25)", [196, 196, 124, 64], +"hsl(90 37.5% 62.5% / 0.25)", [160, 196, 124, 64], +"hsl(120 37.5% 62.5% / 0.25)", [124, 196, 124, 64], +"hsl(150 37.5% 62.5% / 0.25)", [124, 196, 160, 64], +"hsl(180 37.5% 62.5% / 0.25)", [124, 196, 196, 64], +"hsl(210 37.5% 62.5% / 0.25)", [124, 160, 196, 64], +"hsl(240 37.5% 62.5% / 0.25)", [124, 124, 196, 64], +"hsl(270 37.5% 62.5% / 0.25)", [160, 124, 196, 64], +"hsl(300 37.5% 62.5% / 0.25)", [196, 124, 196, 64], +"hsl(330 37.5% 62.5% / 0.25)", [196, 124, 160, 64], +"hsl(0 50% 62.5% / 0.25)", [208, 112, 112, 64], +"hsl(30 50% 62.5% / 0.25)", [208, 160, 112, 64], +"hsl(60 50% 62.5% / 0.25)", [208, 208, 112, 64], +"hsl(90 50% 62.5% / 0.25)", [160, 208, 112, 64], +"hsl(120 50% 62.5% / 0.25)", [112, 208, 112, 64], +"hsl(150 50% 62.5% / 0.25)", [112, 208, 160, 64], +"hsl(180 50% 62.5% / 0.25)", [112, 208, 208, 64], +"hsl(210 50% 62.5% / 0.25)", [112, 160, 208, 64], +"hsl(240 50% 62.5% / 0.25)", [112, 112, 208, 64], +"hsl(270 50% 62.5% / 0.25)", [160, 112, 208, 64], +"hsl(300 50% 62.5% / 0.25)", [208, 112, 208, 64], +"hsl(330 50% 62.5% / 0.25)", [208, 112, 160, 64], +"hsl(0 62.5% 62.5% / 0.25)", [220, 100, 100, 64], +"hsl(30 62.5% 62.5% / 0.25)", [220, 160, 100, 64], +"hsl(60 62.5% 62.5% / 0.25)", [220, 220, 100, 64], +"hsl(90 62.5% 62.5% / 0.25)", [160, 220, 100, 64], +"hsl(120 62.5% 62.5% / 0.25)", [100, 220, 100, 64], +"hsl(150 62.5% 62.5% / 0.25)", [100, 220, 160, 64], +"hsl(180 62.5% 62.5% / 0.25)", [100, 220, 220, 64], +"hsl(210 62.5% 62.5% / 0.25)", [100, 160, 220, 64], +"hsl(240 62.5% 62.5% / 0.25)", [100, 100, 220, 64], +"hsl(270 62.5% 62.5% / 0.25)", [160, 100, 220, 64], +"hsl(300 62.5% 62.5% / 0.25)", [220, 100, 220, 64], +"hsl(330 62.5% 62.5% / 0.25)", [220, 100, 160, 64], +"hsl(0 75% 62.5% / 0.25)", [232, 88, 88, 64], +"hsl(30 75% 62.5% / 0.25)", [232, 160, 88, 64], +"hsl(60 75% 62.5% / 0.25)", [232, 232, 88, 64], +"hsl(90 75% 62.5% / 0.25)", [160, 232, 88, 64], +"hsl(120 75% 62.5% / 0.25)", [88, 232, 88, 64], +"hsl(150 75% 62.5% / 0.25)", [88, 232, 160, 64], +"hsl(180 75% 62.5% / 0.25)", [88, 232, 232, 64], +"hsl(210 75% 62.5% / 0.25)", [88, 160, 232, 64], +"hsl(240 75% 62.5% / 0.25)", [88, 88, 232, 64], +"hsl(270 75% 62.5% / 0.25)", [160, 88, 232, 64], +"hsl(300 75% 62.5% / 0.25)", [232, 88, 232, 64], +"hsl(330 75% 62.5% / 0.25)", [232, 88, 160, 64], +"hsl(0 87.5% 62.5% / 0.25)", [244, 76, 76, 64], +"hsl(30 87.5% 62.5% / 0.25)", [244, 160, 76, 64], +"hsl(60 87.5% 62.5% / 0.25)", [244, 244, 76, 64], +"hsl(90 87.5% 62.5% / 0.25)", [160, 244, 76, 64], +"hsl(120 87.5% 62.5% / 0.25)", [76, 244, 76, 64], +"hsl(150 87.5% 62.5% / 0.25)", [76, 244, 160, 64], +"hsl(180 87.5% 62.5% / 0.25)", [76, 244, 244, 64], +"hsl(210 87.5% 62.5% / 0.25)", [76, 160, 244, 64], +"hsl(240 87.5% 62.5% / 0.25)", [76, 76, 244, 64], +"hsl(270 87.5% 62.5% / 0.25)", [160, 76, 244, 64], +"hsl(300 87.5% 62.5% / 0.25)", [244, 76, 244, 64], +"hsl(330 87.5% 62.5% / 0.25)", [244, 76, 160, 64], +"hsl(0 100% 62.5% / 0.25)", [255, 64, 64, 64], +"hsl(30 100% 62.5% / 0.25)", [255, 160, 64, 64], +"hsl(60 100% 62.5% / 0.25)", [255, 255, 64, 64], +"hsl(90 100% 62.5% / 0.25)", [160, 255, 64, 64], +"hsl(120 100% 62.5% / 0.25)", [64, 255, 64, 64], +"hsl(150 100% 62.5% / 0.25)", [64, 255, 160, 64], +"hsl(180 100% 62.5% / 0.25)", [64, 255, 255, 64], +"hsl(210 100% 62.5% / 0.25)", [64, 160, 255, 64], +"hsl(240 100% 62.5% / 0.25)", [64, 64, 255, 64], +"hsl(270 100% 62.5% / 0.25)", [160, 64, 255, 64], +"hsl(300 100% 62.5% / 0.25)", [255, 64, 255, 64], +"hsl(330 100% 62.5% / 0.25)", [255, 64, 160, 64], +"hsl(0 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(30 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(60 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(90 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(120 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(150 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(180 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(210 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(240 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(270 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(300 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(330 0% 75% / 0.25)", [192, 192, 192, 64], +"hsl(0 12.5% 75% / 0.25)", [200, 184, 184, 64], +"hsl(30 12.5% 75% / 0.25)", [200, 192, 184, 64], +"hsl(60 12.5% 75% / 0.25)", [200, 200, 184, 64], +"hsl(90 12.5% 75% / 0.25)", [192, 200, 184, 64], +"hsl(120 12.5% 75% / 0.25)", [184, 200, 184, 64], +"hsl(150 12.5% 75% / 0.25)", [184, 200, 192, 64], +"hsl(180 12.5% 75% / 0.25)", [184, 200, 200, 64], +"hsl(210 12.5% 75% / 0.25)", [184, 192, 200, 64], +"hsl(240 12.5% 75% / 0.25)", [184, 184, 200, 64], +"hsl(270 12.5% 75% / 0.25)", [192, 184, 200, 64], +"hsl(300 12.5% 75% / 0.25)", [200, 184, 200, 64], +"hsl(330 12.5% 75% / 0.25)", [200, 184, 192, 64], +"hsl(0 25% 75% / 0.25)", [208, 176, 176, 64], +"hsl(30 25% 75% / 0.25)", [208, 192, 176, 64], +"hsl(60 25% 75% / 0.25)", [208, 208, 176, 64], +"hsl(90 25% 75% / 0.25)", [192, 208, 176, 64], +"hsl(120 25% 75% / 0.25)", [176, 208, 176, 64], +"hsl(150 25% 75% / 0.25)", [176, 208, 192, 64], +"hsl(180 25% 75% / 0.25)", [176, 208, 208, 64], +"hsl(210 25% 75% / 0.25)", [176, 192, 208, 64], +"hsl(240 25% 75% / 0.25)", [176, 176, 208, 64], +"hsl(270 25% 75% / 0.25)", [192, 176, 208, 64], +"hsl(300 25% 75% / 0.25)", [208, 176, 208, 64], +"hsl(330 25% 75% / 0.25)", [208, 176, 192, 64], +"hsl(0 37.5% 75% / 0.25)", [216, 168, 168, 64], +"hsl(30 37.5% 75% / 0.25)", [216, 192, 168, 64], +"hsl(60 37.5% 75% / 0.25)", [216, 216, 168, 64], +"hsl(90 37.5% 75% / 0.25)", [192, 216, 168, 64], +"hsl(120 37.5% 75% / 0.25)", [168, 216, 168, 64], +"hsl(150 37.5% 75% / 0.25)", [168, 216, 192, 64], +"hsl(180 37.5% 75% / 0.25)", [168, 216, 216, 64], +"hsl(210 37.5% 75% / 0.25)", [168, 192, 216, 64], +"hsl(240 37.5% 75% / 0.25)", [168, 168, 216, 64], +"hsl(270 37.5% 75% / 0.25)", [192, 168, 216, 64], +"hsl(300 37.5% 75% / 0.25)", [216, 168, 216, 64], +"hsl(330 37.5% 75% / 0.25)", [216, 168, 192, 64], +"hsl(0 50% 75% / 0.25)", [224, 160, 160, 64], +"hsl(30 50% 75% / 0.25)", [224, 192, 160, 64], +"hsl(60 50% 75% / 0.25)", [224, 224, 160, 64], +"hsl(90 50% 75% / 0.25)", [192, 224, 160, 64], +"hsl(120 50% 75% / 0.25)", [160, 224, 160, 64], +"hsl(150 50% 75% / 0.25)", [160, 224, 192, 64], +"hsl(180 50% 75% / 0.25)", [160, 224, 224, 64], +"hsl(210 50% 75% / 0.25)", [160, 192, 224, 64], +"hsl(240 50% 75% / 0.25)", [160, 160, 224, 64], +"hsl(270 50% 75% / 0.25)", [192, 160, 224, 64], +"hsl(300 50% 75% / 0.25)", [224, 160, 224, 64], +"hsl(330 50% 75% / 0.25)", [224, 160, 192, 64], +"hsl(0 62.5% 75% / 0.25)", [232, 152, 152, 64], +"hsl(30 62.5% 75% / 0.25)", [232, 192, 152, 64], +"hsl(60 62.5% 75% / 0.25)", [232, 232, 152, 64], +"hsl(90 62.5% 75% / 0.25)", [192, 232, 152, 64], +"hsl(120 62.5% 75% / 0.25)", [152, 232, 152, 64], +"hsl(150 62.5% 75% / 0.25)", [152, 232, 192, 64], +"hsl(180 62.5% 75% / 0.25)", [152, 232, 232, 64], +"hsl(210 62.5% 75% / 0.25)", [152, 192, 232, 64], +"hsl(240 62.5% 75% / 0.25)", [152, 152, 232, 64], +"hsl(270 62.5% 75% / 0.25)", [192, 152, 232, 64], +"hsl(300 62.5% 75% / 0.25)", [232, 152, 232, 64], +"hsl(330 62.5% 75% / 0.25)", [232, 152, 192, 64], +"hsl(0 75% 75% / 0.25)", [240, 144, 144, 64], +"hsl(30 75% 75% / 0.25)", [240, 192, 144, 64], +"hsl(60 75% 75% / 0.25)", [240, 240, 144, 64], +"hsl(90 75% 75% / 0.25)", [192, 240, 144, 64], +"hsl(120 75% 75% / 0.25)", [144, 240, 144, 64], +"hsl(150 75% 75% / 0.25)", [144, 240, 192, 64], +"hsl(180 75% 75% / 0.25)", [144, 240, 240, 64], +"hsl(210 75% 75% / 0.25)", [144, 192, 240, 64], +"hsl(240 75% 75% / 0.25)", [144, 144, 240, 64], +"hsl(270 75% 75% / 0.25)", [192, 144, 240, 64], +"hsl(300 75% 75% / 0.25)", [240, 144, 240, 64], +"hsl(330 75% 75% / 0.25)", [240, 144, 192, 64], +"hsl(0 87.5% 75% / 0.25)", [248, 136, 136, 64], +"hsl(30 87.5% 75% / 0.25)", [248, 192, 136, 64], +"hsl(60 87.5% 75% / 0.25)", [248, 248, 136, 64], +"hsl(90 87.5% 75% / 0.25)", [192, 248, 136, 64], +"hsl(120 87.5% 75% / 0.25)", [136, 248, 136, 64], +"hsl(150 87.5% 75% / 0.25)", [136, 248, 192, 64], +"hsl(180 87.5% 75% / 0.25)", [136, 248, 248, 64], +"hsl(210 87.5% 75% / 0.25)", [136, 192, 248, 64], +"hsl(240 87.5% 75% / 0.25)", [136, 136, 248, 64], +"hsl(270 87.5% 75% / 0.25)", [192, 136, 248, 64], +"hsl(300 87.5% 75% / 0.25)", [248, 136, 248, 64], +"hsl(330 87.5% 75% / 0.25)", [248, 136, 192, 64], +"hsl(0 100% 75% / 0.25)", [255, 128, 128, 64], +"hsl(30 100% 75% / 0.25)", [255, 192, 128, 64], +"hsl(60 100% 75% / 0.25)", [255, 255, 128, 64], +"hsl(90 100% 75% / 0.25)", [192, 255, 128, 64], +"hsl(120 100% 75% / 0.25)", [128, 255, 128, 64], +"hsl(150 100% 75% / 0.25)", [128, 255, 192, 64], +"hsl(180 100% 75% / 0.25)", [128, 255, 255, 64], +"hsl(210 100% 75% / 0.25)", [128, 192, 255, 64], +"hsl(240 100% 75% / 0.25)", [128, 128, 255, 64], +"hsl(270 100% 75% / 0.25)", [192, 128, 255, 64], +"hsl(300 100% 75% / 0.25)", [255, 128, 255, 64], +"hsl(330 100% 75% / 0.25)", [255, 128, 192, 64], +"hsl(0 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(30 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(60 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(90 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(120 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(150 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(180 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(210 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(240 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(270 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(300 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(330 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsl(0 12.5% 87.5% / 0.25)", [228, 220, 220, 64], +"hsl(30 12.5% 87.5% / 0.25)", [228, 224, 220, 64], +"hsl(60 12.5% 87.5% / 0.25)", [228, 228, 220, 64], +"hsl(90 12.5% 87.5% / 0.25)", [224, 228, 220, 64], +"hsl(120 12.5% 87.5% / 0.25)", [220, 228, 220, 64], +"hsl(150 12.5% 87.5% / 0.25)", [220, 228, 224, 64], +"hsl(180 12.5% 87.5% / 0.25)", [220, 228, 228, 64], +"hsl(210 12.5% 87.5% / 0.25)", [220, 224, 228, 64], +"hsl(240 12.5% 87.5% / 0.25)", [220, 220, 228, 64], +"hsl(270 12.5% 87.5% / 0.25)", [224, 220, 228, 64], +"hsl(300 12.5% 87.5% / 0.25)", [228, 220, 228, 64], +"hsl(330 12.5% 87.5% / 0.25)", [228, 220, 224, 64], +"hsl(0 25% 87.5% / 0.25)", [232, 216, 216, 64], +"hsl(30 25% 87.5% / 0.25)", [232, 224, 216, 64], +"hsl(60 25% 87.5% / 0.25)", [232, 232, 216, 64], +"hsl(90 25% 87.5% / 0.25)", [224, 232, 216, 64], +"hsl(120 25% 87.5% / 0.25)", [216, 232, 216, 64], +"hsl(150 25% 87.5% / 0.25)", [216, 232, 224, 64], +"hsl(180 25% 87.5% / 0.25)", [216, 232, 232, 64], +"hsl(210 25% 87.5% / 0.25)", [216, 224, 232, 64], +"hsl(240 25% 87.5% / 0.25)", [216, 216, 232, 64], +"hsl(270 25% 87.5% / 0.25)", [224, 216, 232, 64], +"hsl(300 25% 87.5% / 0.25)", [232, 216, 232, 64], +"hsl(330 25% 87.5% / 0.25)", [232, 216, 224, 64], +"hsl(0 37.5% 87.5% / 0.25)", [236, 212, 212, 64], +"hsl(30 37.5% 87.5% / 0.25)", [236, 224, 212, 64], +"hsl(60 37.5% 87.5% / 0.25)", [236, 236, 212, 64], +"hsl(90 37.5% 87.5% / 0.25)", [224, 236, 212, 64], +"hsl(120 37.5% 87.5% / 0.25)", [212, 236, 212, 64], +"hsl(150 37.5% 87.5% / 0.25)", [212, 236, 224, 64], +"hsl(180 37.5% 87.5% / 0.25)", [212, 236, 236, 64], +"hsl(210 37.5% 87.5% / 0.25)", [212, 224, 236, 64], +"hsl(240 37.5% 87.5% / 0.25)", [212, 212, 236, 64], +"hsl(270 37.5% 87.5% / 0.25)", [224, 212, 236, 64], +"hsl(300 37.5% 87.5% / 0.25)", [236, 212, 236, 64], +"hsl(330 37.5% 87.5% / 0.25)", [236, 212, 224, 64], +"hsl(0 50% 87.5% / 0.25)", [240, 208, 208, 64], +"hsl(30 50% 87.5% / 0.25)", [240, 224, 208, 64], +"hsl(60 50% 87.5% / 0.25)", [240, 240, 208, 64], +"hsl(90 50% 87.5% / 0.25)", [224, 240, 208, 64], +"hsl(120 50% 87.5% / 0.25)", [208, 240, 208, 64], +"hsl(150 50% 87.5% / 0.25)", [208, 240, 224, 64], +"hsl(180 50% 87.5% / 0.25)", [208, 240, 240, 64], +"hsl(210 50% 87.5% / 0.25)", [208, 224, 240, 64], +"hsl(240 50% 87.5% / 0.25)", [208, 208, 240, 64], +"hsl(270 50% 87.5% / 0.25)", [224, 208, 240, 64], +"hsl(300 50% 87.5% / 0.25)", [240, 208, 240, 64], +"hsl(330 50% 87.5% / 0.25)", [240, 208, 224, 64], +"hsl(0 62.5% 87.5% / 0.25)", [244, 204, 204, 64], +"hsl(30 62.5% 87.5% / 0.25)", [244, 224, 204, 64], +"hsl(60 62.5% 87.5% / 0.25)", [244, 244, 204, 64], +"hsl(90 62.5% 87.5% / 0.25)", [224, 244, 204, 64], +"hsl(120 62.5% 87.5% / 0.25)", [204, 244, 204, 64], +"hsl(150 62.5% 87.5% / 0.25)", [204, 244, 224, 64], +"hsl(180 62.5% 87.5% / 0.25)", [204, 244, 244, 64], +"hsl(210 62.5% 87.5% / 0.25)", [204, 224, 244, 64], +"hsl(240 62.5% 87.5% / 0.25)", [204, 204, 244, 64], +"hsl(270 62.5% 87.5% / 0.25)", [224, 204, 244, 64], +"hsl(300 62.5% 87.5% / 0.25)", [244, 204, 244, 64], +"hsl(330 62.5% 87.5% / 0.25)", [244, 204, 224, 64], +"hsl(0 75% 87.5% / 0.25)", [248, 200, 200, 64], +"hsl(30 75% 87.5% / 0.25)", [248, 224, 200, 64], +"hsl(60 75% 87.5% / 0.25)", [248, 248, 200, 64], +"hsl(90 75% 87.5% / 0.25)", [224, 248, 200, 64], +"hsl(120 75% 87.5% / 0.25)", [200, 248, 200, 64], +"hsl(150 75% 87.5% / 0.25)", [200, 248, 224, 64], +"hsl(180 75% 87.5% / 0.25)", [200, 248, 248, 64], +"hsl(210 75% 87.5% / 0.25)", [200, 224, 248, 64], +"hsl(240 75% 87.5% / 0.25)", [200, 200, 248, 64], +"hsl(270 75% 87.5% / 0.25)", [224, 200, 248, 64], +"hsl(300 75% 87.5% / 0.25)", [248, 200, 248, 64], +"hsl(330 75% 87.5% / 0.25)", [248, 200, 224, 64], +"hsl(0 87.5% 87.5% / 0.25)", [252, 196, 196, 64], +"hsl(30 87.5% 87.5% / 0.25)", [252, 224, 196, 64], +"hsl(60 87.5% 87.5% / 0.25)", [252, 252, 196, 64], +"hsl(90 87.5% 87.5% / 0.25)", [224, 252, 196, 64], +"hsl(120 87.5% 87.5% / 0.25)", [196, 252, 196, 64], +"hsl(150 87.5% 87.5% / 0.25)", [196, 252, 224, 64], +"hsl(180 87.5% 87.5% / 0.25)", [196, 252, 252, 64], +"hsl(210 87.5% 87.5% / 0.25)", [196, 224, 252, 64], +"hsl(240 87.5% 87.5% / 0.25)", [196, 196, 252, 64], +"hsl(270 87.5% 87.5% / 0.25)", [224, 196, 252, 64], +"hsl(300 87.5% 87.5% / 0.25)", [252, 196, 252, 64], +"hsl(330 87.5% 87.5% / 0.25)", [252, 196, 224, 64], +"hsl(0 100% 87.5% / 0.25)", [255, 192, 192, 64], +"hsl(30 100% 87.5% / 0.25)", [255, 224, 192, 64], +"hsl(60 100% 87.5% / 0.25)", [255, 255, 192, 64], +"hsl(90 100% 87.5% / 0.25)", [224, 255, 192, 64], +"hsl(120 100% 87.5% / 0.25)", [192, 255, 192, 64], +"hsl(150 100% 87.5% / 0.25)", [192, 255, 224, 64], +"hsl(180 100% 87.5% / 0.25)", [192, 255, 255, 64], +"hsl(210 100% 87.5% / 0.25)", [192, 224, 255, 64], +"hsl(240 100% 87.5% / 0.25)", [192, 192, 255, 64], +"hsl(270 100% 87.5% / 0.25)", [224, 192, 255, 64], +"hsl(300 100% 87.5% / 0.25)", [255, 192, 255, 64], +"hsl(330 100% 87.5% / 0.25)", [255, 192, 224, 64], +"hsl(0 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(30 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(60 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(90 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(120 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(150 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(180 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(210 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(240 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(270 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(300 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(330 0% 100% / 0.25)", [255, 255, 255, 64], +"hsl(0 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(30 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(60 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(90 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(120 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(150 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(180 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(210 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(240 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(270 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(300 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(330 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(0 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(30 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(60 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(90 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(120 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(150 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(180 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(210 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(240 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(270 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(300 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(330 25% 100% / 0.25)", [255, 255, 255, 64], +"hsl(0 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(30 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(60 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(90 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(120 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(150 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(180 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(210 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(240 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(270 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(300 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(330 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(0 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(30 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(60 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(90 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(120 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(150 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(180 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(210 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(240 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(270 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(300 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(330 50% 100% / 0.25)", [255, 255, 255, 64], +"hsl(0 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(30 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(60 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(90 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(120 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(150 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(180 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(210 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(240 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(270 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(300 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(330 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(0 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(30 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(60 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(90 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(120 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(150 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(180 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(210 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(240 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(270 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(300 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(330 75% 100% / 0.25)", [255, 255, 255, 64], +"hsl(0 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(30 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(60 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(90 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(120 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(150 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(180 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(210 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(240 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(270 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(300 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(330 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsl(0 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(30 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(60 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(90 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(120 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(150 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(180 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(210 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(240 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(270 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(300 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(330 100% 100% / 0.25)", [255, 255, 255, 64], +"hsl(0 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(30 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(60 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(90 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(120 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(150 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(180 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(210 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(240 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(270 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(300 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(330 0% 0% / 0.0)", [0, 0, 0, 0], +"hsl(0 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(30 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(60 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(90 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(120 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(150 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(180 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(210 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(240 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(270 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(300 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(330 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(0 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(30 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(60 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(90 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(120 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(150 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(180 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(210 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(240 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(270 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(300 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(330 25% 0% / 0.0)", [0, 0, 0, 0], +"hsl(0 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(30 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(60 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(90 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(120 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(150 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(180 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(210 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(240 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(270 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(300 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(330 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(0 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(30 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(60 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(90 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(120 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(150 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(180 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(210 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(240 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(270 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(300 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(330 50% 0% / 0.0)", [0, 0, 0, 0], +"hsl(0 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(30 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(60 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(90 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(120 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(150 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(180 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(210 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(240 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(270 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(300 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(330 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(0 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(30 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(60 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(90 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(120 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(150 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(180 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(210 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(240 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(270 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(300 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(330 75% 0% / 0.0)", [0, 0, 0, 0], +"hsl(0 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(30 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(60 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(90 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(120 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(150 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(180 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(210 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(240 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(270 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(300 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(330 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsl(0 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(30 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(60 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(90 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(120 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(150 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(180 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(210 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(240 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(270 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(300 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(330 100% 0% / 0.0)", [0, 0, 0, 0], +"hsl(0 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(30 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(60 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(90 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(120 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(150 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(180 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(210 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(240 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(270 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(300 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(330 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsl(0 12.5% 12.5% / 0.0)", [36, 28, 28, 0], +"hsl(30 12.5% 12.5% / 0.0)", [36, 32, 28, 0], +"hsl(60 12.5% 12.5% / 0.0)", [36, 36, 28, 0], +"hsl(90 12.5% 12.5% / 0.0)", [32, 36, 28, 0], +"hsl(120 12.5% 12.5% / 0.0)", [28, 36, 28, 0], +"hsl(150 12.5% 12.5% / 0.0)", [28, 36, 32, 0], +"hsl(180 12.5% 12.5% / 0.0)", [28, 36, 36, 0], +"hsl(210 12.5% 12.5% / 0.0)", [28, 32, 36, 0], +"hsl(240 12.5% 12.5% / 0.0)", [28, 28, 36, 0], +"hsl(270 12.5% 12.5% / 0.0)", [32, 28, 36, 0], +"hsl(300 12.5% 12.5% / 0.0)", [36, 28, 36, 0], +"hsl(330 12.5% 12.5% / 0.0)", [36, 28, 32, 0], +"hsl(0 25% 12.5% / 0.0)", [40, 24, 24, 0], +"hsl(30 25% 12.5% / 0.0)", [40, 32, 24, 0], +"hsl(60 25% 12.5% / 0.0)", [40, 40, 24, 0], +"hsl(90 25% 12.5% / 0.0)", [32, 40, 24, 0], +"hsl(120 25% 12.5% / 0.0)", [24, 40, 24, 0], +"hsl(150 25% 12.5% / 0.0)", [24, 40, 32, 0], +"hsl(180 25% 12.5% / 0.0)", [24, 40, 40, 0], +"hsl(210 25% 12.5% / 0.0)", [24, 32, 40, 0], +"hsl(240 25% 12.5% / 0.0)", [24, 24, 40, 0], +"hsl(270 25% 12.5% / 0.0)", [32, 24, 40, 0], +"hsl(300 25% 12.5% / 0.0)", [40, 24, 40, 0], +"hsl(330 25% 12.5% / 0.0)", [40, 24, 32, 0], +"hsl(0 37.5% 12.5% / 0.0)", [44, 20, 20, 0], +"hsl(30 37.5% 12.5% / 0.0)", [44, 32, 20, 0], +"hsl(60 37.5% 12.5% / 0.0)", [44, 44, 20, 0], +"hsl(90 37.5% 12.5% / 0.0)", [32, 44, 20, 0], +"hsl(120 37.5% 12.5% / 0.0)", [20, 44, 20, 0], +"hsl(150 37.5% 12.5% / 0.0)", [20, 44, 32, 0], +"hsl(180 37.5% 12.5% / 0.0)", [20, 44, 44, 0], +"hsl(210 37.5% 12.5% / 0.0)", [20, 32, 44, 0], +"hsl(240 37.5% 12.5% / 0.0)", [20, 20, 44, 0], +"hsl(270 37.5% 12.5% / 0.0)", [32, 20, 44, 0], +"hsl(300 37.5% 12.5% / 0.0)", [44, 20, 44, 0], +"hsl(330 37.5% 12.5% / 0.0)", [44, 20, 32, 0], +"hsl(0 50% 12.5% / 0.0)", [48, 16, 16, 0], +"hsl(30 50% 12.5% / 0.0)", [48, 32, 16, 0], +"hsl(60 50% 12.5% / 0.0)", [48, 48, 16, 0], +"hsl(90 50% 12.5% / 0.0)", [32, 48, 16, 0], +"hsl(120 50% 12.5% / 0.0)", [16, 48, 16, 0], +"hsl(150 50% 12.5% / 0.0)", [16, 48, 32, 0], +"hsl(180 50% 12.5% / 0.0)", [16, 48, 48, 0], +"hsl(210 50% 12.5% / 0.0)", [16, 32, 48, 0], +"hsl(240 50% 12.5% / 0.0)", [16, 16, 48, 0], +"hsl(270 50% 12.5% / 0.0)", [32, 16, 48, 0], +"hsl(300 50% 12.5% / 0.0)", [48, 16, 48, 0], +"hsl(330 50% 12.5% / 0.0)", [48, 16, 32, 0], +"hsl(0 62.5% 12.5% / 0.0)", [52, 12, 12, 0], +"hsl(30 62.5% 12.5% / 0.0)", [52, 32, 12, 0], +"hsl(60 62.5% 12.5% / 0.0)", [52, 52, 12, 0], +"hsl(90 62.5% 12.5% / 0.0)", [32, 52, 12, 0], +"hsl(120 62.5% 12.5% / 0.0)", [12, 52, 12, 0], +"hsl(150 62.5% 12.5% / 0.0)", [12, 52, 32, 0], +"hsl(180 62.5% 12.5% / 0.0)", [12, 52, 52, 0], +"hsl(210 62.5% 12.5% / 0.0)", [12, 32, 52, 0], +"hsl(240 62.5% 12.5% / 0.0)", [12, 12, 52, 0], +"hsl(270 62.5% 12.5% / 0.0)", [32, 12, 52, 0], +"hsl(300 62.5% 12.5% / 0.0)", [52, 12, 52, 0], +"hsl(330 62.5% 12.5% / 0.0)", [52, 12, 32, 0], +"hsl(0 75% 12.5% / 0.0)", [56, 8, 8, 0], +"hsl(30 75% 12.5% / 0.0)", [56, 32, 8, 0], +"hsl(60 75% 12.5% / 0.0)", [56, 56, 8, 0], +"hsl(90 75% 12.5% / 0.0)", [32, 56, 8, 0], +"hsl(120 75% 12.5% / 0.0)", [8, 56, 8, 0], +"hsl(150 75% 12.5% / 0.0)", [8, 56, 32, 0], +"hsl(180 75% 12.5% / 0.0)", [8, 56, 56, 0], +"hsl(210 75% 12.5% / 0.0)", [8, 32, 56, 0], +"hsl(240 75% 12.5% / 0.0)", [8, 8, 56, 0], +"hsl(270 75% 12.5% / 0.0)", [32, 8, 56, 0], +"hsl(300 75% 12.5% / 0.0)", [56, 8, 56, 0], +"hsl(330 75% 12.5% / 0.0)", [56, 8, 32, 0], +"hsl(0 87.5% 12.5% / 0.0)", [60, 4, 4, 0], +"hsl(30 87.5% 12.5% / 0.0)", [60, 32, 4, 0], +"hsl(60 87.5% 12.5% / 0.0)", [60, 60, 4, 0], +"hsl(90 87.5% 12.5% / 0.0)", [32, 60, 4, 0], +"hsl(120 87.5% 12.5% / 0.0)", [4, 60, 4, 0], +"hsl(150 87.5% 12.5% / 0.0)", [4, 60, 32, 0], +"hsl(180 87.5% 12.5% / 0.0)", [4, 60, 60, 0], +"hsl(210 87.5% 12.5% / 0.0)", [4, 32, 60, 0], +"hsl(240 87.5% 12.5% / 0.0)", [4, 4, 60, 0], +"hsl(270 87.5% 12.5% / 0.0)", [32, 4, 60, 0], +"hsl(300 87.5% 12.5% / 0.0)", [60, 4, 60, 0], +"hsl(330 87.5% 12.5% / 0.0)", [60, 4, 32, 0], +"hsl(0 100% 12.5% / 0.0)", [64, 0, 0, 0], +"hsl(30 100% 12.5% / 0.0)", [64, 32, 0, 0], +"hsl(60 100% 12.5% / 0.0)", [64, 64, 0, 0], +"hsl(90 100% 12.5% / 0.0)", [32, 64, 0, 0], +"hsl(120 100% 12.5% / 0.0)", [0, 64, 0, 0], +"hsl(150 100% 12.5% / 0.0)", [0, 64, 32, 0], +"hsl(180 100% 12.5% / 0.0)", [0, 64, 64, 0], +"hsl(210 100% 12.5% / 0.0)", [0, 32, 64, 0], +"hsl(240 100% 12.5% / 0.0)", [0, 0, 64, 0], +"hsl(270 100% 12.5% / 0.0)", [32, 0, 64, 0], +"hsl(300 100% 12.5% / 0.0)", [64, 0, 64, 0], +"hsl(330 100% 12.5% / 0.0)", [64, 0, 32, 0], +"hsl(0 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(30 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(60 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(90 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(120 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(150 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(180 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(210 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(240 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(270 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(300 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(330 0% 25% / 0.0)", [64, 64, 64, 0], +"hsl(0 12.5% 25% / 0.0)", [72, 56, 56, 0], +"hsl(30 12.5% 25% / 0.0)", [72, 64, 56, 0], +"hsl(60 12.5% 25% / 0.0)", [72, 72, 56, 0], +"hsl(90 12.5% 25% / 0.0)", [64, 72, 56, 0], +"hsl(120 12.5% 25% / 0.0)", [56, 72, 56, 0], +"hsl(150 12.5% 25% / 0.0)", [56, 72, 64, 0], +"hsl(180 12.5% 25% / 0.0)", [56, 72, 72, 0], +"hsl(210 12.5% 25% / 0.0)", [56, 64, 72, 0], +"hsl(240 12.5% 25% / 0.0)", [56, 56, 72, 0], +"hsl(270 12.5% 25% / 0.0)", [64, 56, 72, 0], +"hsl(300 12.5% 25% / 0.0)", [72, 56, 72, 0], +"hsl(330 12.5% 25% / 0.0)", [72, 56, 64, 0], +"hsl(0 25% 25% / 0.0)", [80, 48, 48, 0], +"hsl(30 25% 25% / 0.0)", [80, 64, 48, 0], +"hsl(60 25% 25% / 0.0)", [80, 80, 48, 0], +"hsl(90 25% 25% / 0.0)", [64, 80, 48, 0], +"hsl(120 25% 25% / 0.0)", [48, 80, 48, 0], +"hsl(150 25% 25% / 0.0)", [48, 80, 64, 0], +"hsl(180 25% 25% / 0.0)", [48, 80, 80, 0], +"hsl(210 25% 25% / 0.0)", [48, 64, 80, 0], +"hsl(240 25% 25% / 0.0)", [48, 48, 80, 0], +"hsl(270 25% 25% / 0.0)", [64, 48, 80, 0], +"hsl(300 25% 25% / 0.0)", [80, 48, 80, 0], +"hsl(330 25% 25% / 0.0)", [80, 48, 64, 0], +"hsl(0 37.5% 25% / 0.0)", [88, 40, 40, 0], +"hsl(30 37.5% 25% / 0.0)", [88, 64, 40, 0], +"hsl(60 37.5% 25% / 0.0)", [88, 88, 40, 0], +"hsl(90 37.5% 25% / 0.0)", [64, 88, 40, 0], +"hsl(120 37.5% 25% / 0.0)", [40, 88, 40, 0], +"hsl(150 37.5% 25% / 0.0)", [40, 88, 64, 0], +"hsl(180 37.5% 25% / 0.0)", [40, 88, 88, 0], +"hsl(210 37.5% 25% / 0.0)", [40, 64, 88, 0], +"hsl(240 37.5% 25% / 0.0)", [40, 40, 88, 0], +"hsl(270 37.5% 25% / 0.0)", [64, 40, 88, 0], +"hsl(300 37.5% 25% / 0.0)", [88, 40, 88, 0], +"hsl(330 37.5% 25% / 0.0)", [88, 40, 64, 0], +"hsl(0 50% 25% / 0.0)", [96, 32, 32, 0], +"hsl(30 50% 25% / 0.0)", [96, 64, 32, 0], +"hsl(60 50% 25% / 0.0)", [96, 96, 32, 0], +"hsl(90 50% 25% / 0.0)", [64, 96, 32, 0], +"hsl(120 50% 25% / 0.0)", [32, 96, 32, 0], +"hsl(150 50% 25% / 0.0)", [32, 96, 64, 0], +"hsl(180 50% 25% / 0.0)", [32, 96, 96, 0], +"hsl(210 50% 25% / 0.0)", [32, 64, 96, 0], +"hsl(240 50% 25% / 0.0)", [32, 32, 96, 0], +"hsl(270 50% 25% / 0.0)", [64, 32, 96, 0], +"hsl(300 50% 25% / 0.0)", [96, 32, 96, 0], +"hsl(330 50% 25% / 0.0)", [96, 32, 64, 0], +"hsl(0 62.5% 25% / 0.0)", [104, 24, 24, 0], +"hsl(30 62.5% 25% / 0.0)", [104, 64, 24, 0], +"hsl(60 62.5% 25% / 0.0)", [104, 104, 24, 0], +"hsl(90 62.5% 25% / 0.0)", [64, 104, 24, 0], +"hsl(120 62.5% 25% / 0.0)", [24, 104, 24, 0], +"hsl(150 62.5% 25% / 0.0)", [24, 104, 64, 0], +"hsl(180 62.5% 25% / 0.0)", [24, 104, 104, 0], +"hsl(210 62.5% 25% / 0.0)", [24, 64, 104, 0], +"hsl(240 62.5% 25% / 0.0)", [24, 24, 104, 0], +"hsl(270 62.5% 25% / 0.0)", [64, 24, 104, 0], +"hsl(300 62.5% 25% / 0.0)", [104, 24, 104, 0], +"hsl(330 62.5% 25% / 0.0)", [104, 24, 64, 0], +"hsl(0 75% 25% / 0.0)", [112, 16, 16, 0], +"hsl(30 75% 25% / 0.0)", [112, 64, 16, 0], +"hsl(60 75% 25% / 0.0)", [112, 112, 16, 0], +"hsl(90 75% 25% / 0.0)", [64, 112, 16, 0], +"hsl(120 75% 25% / 0.0)", [16, 112, 16, 0], +"hsl(150 75% 25% / 0.0)", [16, 112, 64, 0], +"hsl(180 75% 25% / 0.0)", [16, 112, 112, 0], +"hsl(210 75% 25% / 0.0)", [16, 64, 112, 0], +"hsl(240 75% 25% / 0.0)", [16, 16, 112, 0], +"hsl(270 75% 25% / 0.0)", [64, 16, 112, 0], +"hsl(300 75% 25% / 0.0)", [112, 16, 112, 0], +"hsl(330 75% 25% / 0.0)", [112, 16, 64, 0], +"hsl(0 87.5% 25% / 0.0)", [120, 8, 8, 0], +"hsl(30 87.5% 25% / 0.0)", [120, 64, 8, 0], +"hsl(60 87.5% 25% / 0.0)", [120, 120, 8, 0], +"hsl(90 87.5% 25% / 0.0)", [64, 120, 8, 0], +"hsl(120 87.5% 25% / 0.0)", [8, 120, 8, 0], +"hsl(150 87.5% 25% / 0.0)", [8, 120, 64, 0], +"hsl(180 87.5% 25% / 0.0)", [8, 120, 120, 0], +"hsl(210 87.5% 25% / 0.0)", [8, 64, 120, 0], +"hsl(240 87.5% 25% / 0.0)", [8, 8, 120, 0], +"hsl(270 87.5% 25% / 0.0)", [64, 8, 120, 0], +"hsl(300 87.5% 25% / 0.0)", [120, 8, 120, 0], +"hsl(330 87.5% 25% / 0.0)", [120, 8, 64, 0], +"hsl(0 100% 25% / 0.0)", [128, 0, 0, 0], +"hsl(30 100% 25% / 0.0)", [128, 64, 0, 0], +"hsl(60 100% 25% / 0.0)", [128, 128, 0, 0], +"hsl(90 100% 25% / 0.0)", [64, 128, 0, 0], +"hsl(120 100% 25% / 0.0)", [0, 128, 0, 0], +"hsl(150 100% 25% / 0.0)", [0, 128, 64, 0], +"hsl(180 100% 25% / 0.0)", [0, 128, 128, 0], +"hsl(210 100% 25% / 0.0)", [0, 64, 128, 0], +"hsl(240 100% 25% / 0.0)", [0, 0, 128, 0], +"hsl(270 100% 25% / 0.0)", [64, 0, 128, 0], +"hsl(300 100% 25% / 0.0)", [128, 0, 128, 0], +"hsl(330 100% 25% / 0.0)", [128, 0, 64, 0], +"hsl(0 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(30 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(60 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(90 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(120 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(150 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(180 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(210 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(240 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(270 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(300 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(330 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsl(0 12.5% 37.5% / 0.0)", [108, 84, 84, 0], +"hsl(30 12.5% 37.5% / 0.0)", [108, 96, 84, 0], +"hsl(60 12.5% 37.5% / 0.0)", [108, 108, 84, 0], +"hsl(90 12.5% 37.5% / 0.0)", [96, 108, 84, 0], +"hsl(120 12.5% 37.5% / 0.0)", [84, 108, 84, 0], +"hsl(150 12.5% 37.5% / 0.0)", [84, 108, 96, 0], +"hsl(180 12.5% 37.5% / 0.0)", [84, 108, 108, 0], +"hsl(210 12.5% 37.5% / 0.0)", [84, 96, 108, 0], +"hsl(240 12.5% 37.5% / 0.0)", [84, 84, 108, 0], +"hsl(270 12.5% 37.5% / 0.0)", [96, 84, 108, 0], +"hsl(300 12.5% 37.5% / 0.0)", [108, 84, 108, 0], +"hsl(330 12.5% 37.5% / 0.0)", [108, 84, 96, 0], +"hsl(0 25% 37.5% / 0.0)", [120, 72, 72, 0], +"hsl(30 25% 37.5% / 0.0)", [120, 96, 72, 0], +"hsl(60 25% 37.5% / 0.0)", [120, 120, 72, 0], +"hsl(90 25% 37.5% / 0.0)", [96, 120, 72, 0], +"hsl(120 25% 37.5% / 0.0)", [72, 120, 72, 0], +"hsl(150 25% 37.5% / 0.0)", [72, 120, 96, 0], +"hsl(180 25% 37.5% / 0.0)", [72, 120, 120, 0], +"hsl(210 25% 37.5% / 0.0)", [72, 96, 120, 0], +"hsl(240 25% 37.5% / 0.0)", [72, 72, 120, 0], +"hsl(270 25% 37.5% / 0.0)", [96, 72, 120, 0], +"hsl(300 25% 37.5% / 0.0)", [120, 72, 120, 0], +"hsl(330 25% 37.5% / 0.0)", [120, 72, 96, 0], +"hsl(0 37.5% 37.5% / 0.0)", [132, 60, 60, 0], +"hsl(30 37.5% 37.5% / 0.0)", [132, 96, 60, 0], +"hsl(60 37.5% 37.5% / 0.0)", [132, 132, 60, 0], +"hsl(90 37.5% 37.5% / 0.0)", [96, 132, 60, 0], +"hsl(120 37.5% 37.5% / 0.0)", [60, 132, 60, 0], +"hsl(150 37.5% 37.5% / 0.0)", [60, 132, 96, 0], +"hsl(180 37.5% 37.5% / 0.0)", [60, 132, 132, 0], +"hsl(210 37.5% 37.5% / 0.0)", [60, 96, 132, 0], +"hsl(240 37.5% 37.5% / 0.0)", [60, 60, 132, 0], +"hsl(270 37.5% 37.5% / 0.0)", [96, 60, 132, 0], +"hsl(300 37.5% 37.5% / 0.0)", [132, 60, 132, 0], +"hsl(330 37.5% 37.5% / 0.0)", [132, 60, 96, 0], +"hsl(0 50% 37.5% / 0.0)", [144, 48, 48, 0], +"hsl(30 50% 37.5% / 0.0)", [144, 96, 48, 0], +"hsl(60 50% 37.5% / 0.0)", [144, 144, 48, 0], +"hsl(90 50% 37.5% / 0.0)", [96, 144, 48, 0], +"hsl(120 50% 37.5% / 0.0)", [48, 144, 48, 0], +"hsl(150 50% 37.5% / 0.0)", [48, 144, 96, 0], +"hsl(180 50% 37.5% / 0.0)", [48, 144, 144, 0], +"hsl(210 50% 37.5% / 0.0)", [48, 96, 144, 0], +"hsl(240 50% 37.5% / 0.0)", [48, 48, 144, 0], +"hsl(270 50% 37.5% / 0.0)", [96, 48, 144, 0], +"hsl(300 50% 37.5% / 0.0)", [144, 48, 144, 0], +"hsl(330 50% 37.5% / 0.0)", [144, 48, 96, 0], +"hsl(0 62.5% 37.5% / 0.0)", [156, 36, 36, 0], +"hsl(30 62.5% 37.5% / 0.0)", [156, 96, 36, 0], +"hsl(60 62.5% 37.5% / 0.0)", [156, 156, 36, 0], +"hsl(90 62.5% 37.5% / 0.0)", [96, 156, 36, 0], +"hsl(120 62.5% 37.5% / 0.0)", [36, 156, 36, 0], +"hsl(150 62.5% 37.5% / 0.0)", [36, 156, 96, 0], +"hsl(180 62.5% 37.5% / 0.0)", [36, 156, 156, 0], +"hsl(210 62.5% 37.5% / 0.0)", [36, 96, 156, 0], +"hsl(240 62.5% 37.5% / 0.0)", [36, 36, 156, 0], +"hsl(270 62.5% 37.5% / 0.0)", [96, 36, 156, 0], +"hsl(300 62.5% 37.5% / 0.0)", [156, 36, 156, 0], +"hsl(330 62.5% 37.5% / 0.0)", [156, 36, 96, 0], +"hsl(0 75% 37.5% / 0.0)", [168, 24, 24, 0], +"hsl(30 75% 37.5% / 0.0)", [168, 96, 24, 0], +"hsl(60 75% 37.5% / 0.0)", [168, 168, 24, 0], +"hsl(90 75% 37.5% / 0.0)", [96, 168, 24, 0], +"hsl(120 75% 37.5% / 0.0)", [24, 168, 24, 0], +"hsl(150 75% 37.5% / 0.0)", [24, 168, 96, 0], +"hsl(180 75% 37.5% / 0.0)", [24, 168, 168, 0], +"hsl(210 75% 37.5% / 0.0)", [24, 96, 168, 0], +"hsl(240 75% 37.5% / 0.0)", [24, 24, 168, 0], +"hsl(270 75% 37.5% / 0.0)", [96, 24, 168, 0], +"hsl(300 75% 37.5% / 0.0)", [168, 24, 168, 0], +"hsl(330 75% 37.5% / 0.0)", [168, 24, 96, 0], +"hsl(0 87.5% 37.5% / 0.0)", [180, 12, 12, 0], +"hsl(30 87.5% 37.5% / 0.0)", [180, 96, 12, 0], +"hsl(60 87.5% 37.5% / 0.0)", [180, 180, 12, 0], +"hsl(90 87.5% 37.5% / 0.0)", [96, 180, 12, 0], +"hsl(120 87.5% 37.5% / 0.0)", [12, 180, 12, 0], +"hsl(150 87.5% 37.5% / 0.0)", [12, 180, 96, 0], +"hsl(180 87.5% 37.5% / 0.0)", [12, 180, 180, 0], +"hsl(210 87.5% 37.5% / 0.0)", [12, 96, 180, 0], +"hsl(240 87.5% 37.5% / 0.0)", [12, 12, 180, 0], +"hsl(270 87.5% 37.5% / 0.0)", [96, 12, 180, 0], +"hsl(300 87.5% 37.5% / 0.0)", [180, 12, 180, 0], +"hsl(330 87.5% 37.5% / 0.0)", [180, 12, 96, 0], +"hsl(0 100% 37.5% / 0.0)", [192, 0, 0, 0], +"hsl(30 100% 37.5% / 0.0)", [192, 96, 0, 0], +"hsl(60 100% 37.5% / 0.0)", [192, 192, 0, 0], +"hsl(90 100% 37.5% / 0.0)", [96, 192, 0, 0], +"hsl(120 100% 37.5% / 0.0)", [0, 192, 0, 0], +"hsl(150 100% 37.5% / 0.0)", [0, 192, 96, 0], +"hsl(180 100% 37.5% / 0.0)", [0, 192, 192, 0], +"hsl(210 100% 37.5% / 0.0)", [0, 96, 192, 0], +"hsl(240 100% 37.5% / 0.0)", [0, 0, 192, 0], +"hsl(270 100% 37.5% / 0.0)", [96, 0, 192, 0], +"hsl(300 100% 37.5% / 0.0)", [192, 0, 192, 0], +"hsl(330 100% 37.5% / 0.0)", [192, 0, 96, 0], +"hsl(0 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(30 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(60 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(90 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(120 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(150 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(180 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(210 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(240 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(270 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(300 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(330 0% 50% / 0.0)", [128, 128, 128, 0], +"hsl(0 12.5% 50% / 0.0)", [144, 112, 112, 0], +"hsl(30 12.5% 50% / 0.0)", [144, 128, 112, 0], +"hsl(60 12.5% 50% / 0.0)", [144, 144, 112, 0], +"hsl(90 12.5% 50% / 0.0)", [128, 144, 112, 0], +"hsl(120 12.5% 50% / 0.0)", [112, 144, 112, 0], +"hsl(150 12.5% 50% / 0.0)", [112, 144, 128, 0], +"hsl(180 12.5% 50% / 0.0)", [112, 144, 144, 0], +"hsl(210 12.5% 50% / 0.0)", [112, 128, 144, 0], +"hsl(240 12.5% 50% / 0.0)", [112, 112, 144, 0], +"hsl(270 12.5% 50% / 0.0)", [128, 112, 144, 0], +"hsl(300 12.5% 50% / 0.0)", [144, 112, 144, 0], +"hsl(330 12.5% 50% / 0.0)", [144, 112, 128, 0], +"hsl(0 25% 50% / 0.0)", [160, 96, 96, 0], +"hsl(30 25% 50% / 0.0)", [160, 128, 96, 0], +"hsl(60 25% 50% / 0.0)", [160, 160, 96, 0], +"hsl(90 25% 50% / 0.0)", [128, 160, 96, 0], +"hsl(120 25% 50% / 0.0)", [96, 160, 96, 0], +"hsl(150 25% 50% / 0.0)", [96, 160, 128, 0], +"hsl(180 25% 50% / 0.0)", [96, 160, 160, 0], +"hsl(210 25% 50% / 0.0)", [96, 128, 160, 0], +"hsl(240 25% 50% / 0.0)", [96, 96, 160, 0], +"hsl(270 25% 50% / 0.0)", [128, 96, 160, 0], +"hsl(300 25% 50% / 0.0)", [160, 96, 160, 0], +"hsl(330 25% 50% / 0.0)", [160, 96, 128, 0], +"hsl(0 37.5% 50% / 0.0)", [176, 80, 80, 0], +"hsl(30 37.5% 50% / 0.0)", [176, 128, 80, 0], +"hsl(60 37.5% 50% / 0.0)", [176, 176, 80, 0], +"hsl(90 37.5% 50% / 0.0)", [128, 176, 80, 0], +"hsl(120 37.5% 50% / 0.0)", [80, 176, 80, 0], +"hsl(150 37.5% 50% / 0.0)", [80, 176, 128, 0], +"hsl(180 37.5% 50% / 0.0)", [80, 176, 176, 0], +"hsl(210 37.5% 50% / 0.0)", [80, 128, 176, 0], +"hsl(240 37.5% 50% / 0.0)", [80, 80, 176, 0], +"hsl(270 37.5% 50% / 0.0)", [128, 80, 176, 0], +"hsl(300 37.5% 50% / 0.0)", [176, 80, 176, 0], +"hsl(330 37.5% 50% / 0.0)", [176, 80, 128, 0], +"hsl(0 50% 50% / 0.0)", [192, 64, 64, 0], +"hsl(30 50% 50% / 0.0)", [192, 128, 64, 0], +"hsl(60 50% 50% / 0.0)", [192, 192, 64, 0], +"hsl(90 50% 50% / 0.0)", [128, 192, 64, 0], +"hsl(120 50% 50% / 0.0)", [64, 192, 64, 0], +"hsl(150 50% 50% / 0.0)", [64, 192, 128, 0], +"hsl(180 50% 50% / 0.0)", [64, 192, 192, 0], +"hsl(210 50% 50% / 0.0)", [64, 128, 192, 0], +"hsl(240 50% 50% / 0.0)", [64, 64, 192, 0], +"hsl(270 50% 50% / 0.0)", [128, 64, 192, 0], +"hsl(300 50% 50% / 0.0)", [192, 64, 192, 0], +"hsl(330 50% 50% / 0.0)", [192, 64, 128, 0], +"hsl(0 62.5% 50% / 0.0)", [208, 48, 48, 0], +"hsl(30 62.5% 50% / 0.0)", [208, 128, 48, 0], +"hsl(60 62.5% 50% / 0.0)", [208, 208, 48, 0], +"hsl(90 62.5% 50% / 0.0)", [128, 208, 48, 0], +"hsl(120 62.5% 50% / 0.0)", [48, 208, 48, 0], +"hsl(150 62.5% 50% / 0.0)", [48, 208, 128, 0], +"hsl(180 62.5% 50% / 0.0)", [48, 208, 208, 0], +"hsl(210 62.5% 50% / 0.0)", [48, 128, 208, 0], +"hsl(240 62.5% 50% / 0.0)", [48, 48, 208, 0], +"hsl(270 62.5% 50% / 0.0)", [128, 48, 208, 0], +"hsl(300 62.5% 50% / 0.0)", [208, 48, 208, 0], +"hsl(330 62.5% 50% / 0.0)", [208, 48, 128, 0], +"hsl(0 75% 50% / 0.0)", [224, 32, 32, 0], +"hsl(30 75% 50% / 0.0)", [224, 128, 32, 0], +"hsl(60 75% 50% / 0.0)", [224, 224, 32, 0], +"hsl(90 75% 50% / 0.0)", [128, 224, 32, 0], +"hsl(120 75% 50% / 0.0)", [32, 224, 32, 0], +"hsl(150 75% 50% / 0.0)", [32, 224, 128, 0], +"hsl(180 75% 50% / 0.0)", [32, 224, 224, 0], +"hsl(210 75% 50% / 0.0)", [32, 128, 224, 0], +"hsl(240 75% 50% / 0.0)", [32, 32, 224, 0], +"hsl(270 75% 50% / 0.0)", [128, 32, 224, 0], +"hsl(300 75% 50% / 0.0)", [224, 32, 224, 0], +"hsl(330 75% 50% / 0.0)", [224, 32, 128, 0], +"hsl(0 87.5% 50% / 0.0)", [240, 16, 16, 0], +"hsl(30 87.5% 50% / 0.0)", [240, 128, 16, 0], +"hsl(60 87.5% 50% / 0.0)", [240, 240, 16, 0], +"hsl(90 87.5% 50% / 0.0)", [128, 240, 16, 0], +"hsl(120 87.5% 50% / 0.0)", [16, 240, 16, 0], +"hsl(150 87.5% 50% / 0.0)", [16, 240, 128, 0], +"hsl(180 87.5% 50% / 0.0)", [16, 240, 240, 0], +"hsl(210 87.5% 50% / 0.0)", [16, 128, 240, 0], +"hsl(240 87.5% 50% / 0.0)", [16, 16, 240, 0], +"hsl(270 87.5% 50% / 0.0)", [128, 16, 240, 0], +"hsl(300 87.5% 50% / 0.0)", [240, 16, 240, 0], +"hsl(330 87.5% 50% / 0.0)", [240, 16, 128, 0], +"hsl(0 100% 50% / 0.0)", [255, 0, 0, 0], +"hsl(30 100% 50% / 0.0)", [255, 128, 0, 0], +"hsl(60 100% 50% / 0.0)", [255, 255, 0, 0], +"hsl(90 100% 50% / 0.0)", [128, 255, 0, 0], +"hsl(120 100% 50% / 0.0)", [0, 255, 0, 0], +"hsl(150 100% 50% / 0.0)", [0, 255, 128, 0], +"hsl(180 100% 50% / 0.0)", [0, 255, 255, 0], +"hsl(210 100% 50% / 0.0)", [0, 128, 255, 0], +"hsl(240 100% 50% / 0.0)", [0, 0, 255, 0], +"hsl(270 100% 50% / 0.0)", [128, 0, 255, 0], +"hsl(300 100% 50% / 0.0)", [255, 0, 255, 0], +"hsl(330 100% 50% / 0.0)", [255, 0, 128, 0], +"hsl(0 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(30 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(60 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(90 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(120 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(150 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(180 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(210 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(240 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(270 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(300 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(330 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsl(0 12.5% 62.5% / 0.0)", [172, 148, 148, 0], +"hsl(30 12.5% 62.5% / 0.0)", [172, 160, 148, 0], +"hsl(60 12.5% 62.5% / 0.0)", [172, 172, 148, 0], +"hsl(90 12.5% 62.5% / 0.0)", [160, 172, 148, 0], +"hsl(120 12.5% 62.5% / 0.0)", [148, 172, 148, 0], +"hsl(150 12.5% 62.5% / 0.0)", [148, 172, 160, 0], +"hsl(180 12.5% 62.5% / 0.0)", [148, 172, 172, 0], +"hsl(210 12.5% 62.5% / 0.0)", [148, 160, 172, 0], +"hsl(240 12.5% 62.5% / 0.0)", [148, 148, 172, 0], +"hsl(270 12.5% 62.5% / 0.0)", [160, 148, 172, 0], +"hsl(300 12.5% 62.5% / 0.0)", [172, 148, 172, 0], +"hsl(330 12.5% 62.5% / 0.0)", [172, 148, 160, 0], +"hsl(0 25% 62.5% / 0.0)", [184, 136, 136, 0], +"hsl(30 25% 62.5% / 0.0)", [184, 160, 136, 0], +"hsl(60 25% 62.5% / 0.0)", [184, 184, 136, 0], +"hsl(90 25% 62.5% / 0.0)", [160, 184, 136, 0], +"hsl(120 25% 62.5% / 0.0)", [136, 184, 136, 0], +"hsl(150 25% 62.5% / 0.0)", [136, 184, 160, 0], +"hsl(180 25% 62.5% / 0.0)", [136, 184, 184, 0], +"hsl(210 25% 62.5% / 0.0)", [136, 160, 184, 0], +"hsl(240 25% 62.5% / 0.0)", [136, 136, 184, 0], +"hsl(270 25% 62.5% / 0.0)", [160, 136, 184, 0], +"hsl(300 25% 62.5% / 0.0)", [184, 136, 184, 0], +"hsl(330 25% 62.5% / 0.0)", [184, 136, 160, 0], +"hsl(0 37.5% 62.5% / 0.0)", [196, 124, 124, 0], +"hsl(30 37.5% 62.5% / 0.0)", [196, 160, 124, 0], +"hsl(60 37.5% 62.5% / 0.0)", [196, 196, 124, 0], +"hsl(90 37.5% 62.5% / 0.0)", [160, 196, 124, 0], +"hsl(120 37.5% 62.5% / 0.0)", [124, 196, 124, 0], +"hsl(150 37.5% 62.5% / 0.0)", [124, 196, 160, 0], +"hsl(180 37.5% 62.5% / 0.0)", [124, 196, 196, 0], +"hsl(210 37.5% 62.5% / 0.0)", [124, 160, 196, 0], +"hsl(240 37.5% 62.5% / 0.0)", [124, 124, 196, 0], +"hsl(270 37.5% 62.5% / 0.0)", [160, 124, 196, 0], +"hsl(300 37.5% 62.5% / 0.0)", [196, 124, 196, 0], +"hsl(330 37.5% 62.5% / 0.0)", [196, 124, 160, 0], +"hsl(0 50% 62.5% / 0.0)", [208, 112, 112, 0], +"hsl(30 50% 62.5% / 0.0)", [208, 160, 112, 0], +"hsl(60 50% 62.5% / 0.0)", [208, 208, 112, 0], +"hsl(90 50% 62.5% / 0.0)", [160, 208, 112, 0], +"hsl(120 50% 62.5% / 0.0)", [112, 208, 112, 0], +"hsl(150 50% 62.5% / 0.0)", [112, 208, 160, 0], +"hsl(180 50% 62.5% / 0.0)", [112, 208, 208, 0], +"hsl(210 50% 62.5% / 0.0)", [112, 160, 208, 0], +"hsl(240 50% 62.5% / 0.0)", [112, 112, 208, 0], +"hsl(270 50% 62.5% / 0.0)", [160, 112, 208, 0], +"hsl(300 50% 62.5% / 0.0)", [208, 112, 208, 0], +"hsl(330 50% 62.5% / 0.0)", [208, 112, 160, 0], +"hsl(0 62.5% 62.5% / 0.0)", [220, 100, 100, 0], +"hsl(30 62.5% 62.5% / 0.0)", [220, 160, 100, 0], +"hsl(60 62.5% 62.5% / 0.0)", [220, 220, 100, 0], +"hsl(90 62.5% 62.5% / 0.0)", [160, 220, 100, 0], +"hsl(120 62.5% 62.5% / 0.0)", [100, 220, 100, 0], +"hsl(150 62.5% 62.5% / 0.0)", [100, 220, 160, 0], +"hsl(180 62.5% 62.5% / 0.0)", [100, 220, 220, 0], +"hsl(210 62.5% 62.5% / 0.0)", [100, 160, 220, 0], +"hsl(240 62.5% 62.5% / 0.0)", [100, 100, 220, 0], +"hsl(270 62.5% 62.5% / 0.0)", [160, 100, 220, 0], +"hsl(300 62.5% 62.5% / 0.0)", [220, 100, 220, 0], +"hsl(330 62.5% 62.5% / 0.0)", [220, 100, 160, 0], +"hsl(0 75% 62.5% / 0.0)", [232, 88, 88, 0], +"hsl(30 75% 62.5% / 0.0)", [232, 160, 88, 0], +"hsl(60 75% 62.5% / 0.0)", [232, 232, 88, 0], +"hsl(90 75% 62.5% / 0.0)", [160, 232, 88, 0], +"hsl(120 75% 62.5% / 0.0)", [88, 232, 88, 0], +"hsl(150 75% 62.5% / 0.0)", [88, 232, 160, 0], +"hsl(180 75% 62.5% / 0.0)", [88, 232, 232, 0], +"hsl(210 75% 62.5% / 0.0)", [88, 160, 232, 0], +"hsl(240 75% 62.5% / 0.0)", [88, 88, 232, 0], +"hsl(270 75% 62.5% / 0.0)", [160, 88, 232, 0], +"hsl(300 75% 62.5% / 0.0)", [232, 88, 232, 0], +"hsl(330 75% 62.5% / 0.0)", [232, 88, 160, 0], +"hsl(0 87.5% 62.5% / 0.0)", [244, 76, 76, 0], +"hsl(30 87.5% 62.5% / 0.0)", [244, 160, 76, 0], +"hsl(60 87.5% 62.5% / 0.0)", [244, 244, 76, 0], +"hsl(90 87.5% 62.5% / 0.0)", [160, 244, 76, 0], +"hsl(120 87.5% 62.5% / 0.0)", [76, 244, 76, 0], +"hsl(150 87.5% 62.5% / 0.0)", [76, 244, 160, 0], +"hsl(180 87.5% 62.5% / 0.0)", [76, 244, 244, 0], +"hsl(210 87.5% 62.5% / 0.0)", [76, 160, 244, 0], +"hsl(240 87.5% 62.5% / 0.0)", [76, 76, 244, 0], +"hsl(270 87.5% 62.5% / 0.0)", [160, 76, 244, 0], +"hsl(300 87.5% 62.5% / 0.0)", [244, 76, 244, 0], +"hsl(330 87.5% 62.5% / 0.0)", [244, 76, 160, 0], +"hsl(0 100% 62.5% / 0.0)", [255, 64, 64, 0], +"hsl(30 100% 62.5% / 0.0)", [255, 160, 64, 0], +"hsl(60 100% 62.5% / 0.0)", [255, 255, 64, 0], +"hsl(90 100% 62.5% / 0.0)", [160, 255, 64, 0], +"hsl(120 100% 62.5% / 0.0)", [64, 255, 64, 0], +"hsl(150 100% 62.5% / 0.0)", [64, 255, 160, 0], +"hsl(180 100% 62.5% / 0.0)", [64, 255, 255, 0], +"hsl(210 100% 62.5% / 0.0)", [64, 160, 255, 0], +"hsl(240 100% 62.5% / 0.0)", [64, 64, 255, 0], +"hsl(270 100% 62.5% / 0.0)", [160, 64, 255, 0], +"hsl(300 100% 62.5% / 0.0)", [255, 64, 255, 0], +"hsl(330 100% 62.5% / 0.0)", [255, 64, 160, 0], +"hsl(0 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(30 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(60 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(90 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(120 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(150 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(180 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(210 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(240 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(270 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(300 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(330 0% 75% / 0.0)", [192, 192, 192, 0], +"hsl(0 12.5% 75% / 0.0)", [200, 184, 184, 0], +"hsl(30 12.5% 75% / 0.0)", [200, 192, 184, 0], +"hsl(60 12.5% 75% / 0.0)", [200, 200, 184, 0], +"hsl(90 12.5% 75% / 0.0)", [192, 200, 184, 0], +"hsl(120 12.5% 75% / 0.0)", [184, 200, 184, 0], +"hsl(150 12.5% 75% / 0.0)", [184, 200, 192, 0], +"hsl(180 12.5% 75% / 0.0)", [184, 200, 200, 0], +"hsl(210 12.5% 75% / 0.0)", [184, 192, 200, 0], +"hsl(240 12.5% 75% / 0.0)", [184, 184, 200, 0], +"hsl(270 12.5% 75% / 0.0)", [192, 184, 200, 0], +"hsl(300 12.5% 75% / 0.0)", [200, 184, 200, 0], +"hsl(330 12.5% 75% / 0.0)", [200, 184, 192, 0], +"hsl(0 25% 75% / 0.0)", [208, 176, 176, 0], +"hsl(30 25% 75% / 0.0)", [208, 192, 176, 0], +"hsl(60 25% 75% / 0.0)", [208, 208, 176, 0], +"hsl(90 25% 75% / 0.0)", [192, 208, 176, 0], +"hsl(120 25% 75% / 0.0)", [176, 208, 176, 0], +"hsl(150 25% 75% / 0.0)", [176, 208, 192, 0], +"hsl(180 25% 75% / 0.0)", [176, 208, 208, 0], +"hsl(210 25% 75% / 0.0)", [176, 192, 208, 0], +"hsl(240 25% 75% / 0.0)", [176, 176, 208, 0], +"hsl(270 25% 75% / 0.0)", [192, 176, 208, 0], +"hsl(300 25% 75% / 0.0)", [208, 176, 208, 0], +"hsl(330 25% 75% / 0.0)", [208, 176, 192, 0], +"hsl(0 37.5% 75% / 0.0)", [216, 168, 168, 0], +"hsl(30 37.5% 75% / 0.0)", [216, 192, 168, 0], +"hsl(60 37.5% 75% / 0.0)", [216, 216, 168, 0], +"hsl(90 37.5% 75% / 0.0)", [192, 216, 168, 0], +"hsl(120 37.5% 75% / 0.0)", [168, 216, 168, 0], +"hsl(150 37.5% 75% / 0.0)", [168, 216, 192, 0], +"hsl(180 37.5% 75% / 0.0)", [168, 216, 216, 0], +"hsl(210 37.5% 75% / 0.0)", [168, 192, 216, 0], +"hsl(240 37.5% 75% / 0.0)", [168, 168, 216, 0], +"hsl(270 37.5% 75% / 0.0)", [192, 168, 216, 0], +"hsl(300 37.5% 75% / 0.0)", [216, 168, 216, 0], +"hsl(330 37.5% 75% / 0.0)", [216, 168, 192, 0], +"hsl(0 50% 75% / 0.0)", [224, 160, 160, 0], +"hsl(30 50% 75% / 0.0)", [224, 192, 160, 0], +"hsl(60 50% 75% / 0.0)", [224, 224, 160, 0], +"hsl(90 50% 75% / 0.0)", [192, 224, 160, 0], +"hsl(120 50% 75% / 0.0)", [160, 224, 160, 0], +"hsl(150 50% 75% / 0.0)", [160, 224, 192, 0], +"hsl(180 50% 75% / 0.0)", [160, 224, 224, 0], +"hsl(210 50% 75% / 0.0)", [160, 192, 224, 0], +"hsl(240 50% 75% / 0.0)", [160, 160, 224, 0], +"hsl(270 50% 75% / 0.0)", [192, 160, 224, 0], +"hsl(300 50% 75% / 0.0)", [224, 160, 224, 0], +"hsl(330 50% 75% / 0.0)", [224, 160, 192, 0], +"hsl(0 62.5% 75% / 0.0)", [232, 152, 152, 0], +"hsl(30 62.5% 75% / 0.0)", [232, 192, 152, 0], +"hsl(60 62.5% 75% / 0.0)", [232, 232, 152, 0], +"hsl(90 62.5% 75% / 0.0)", [192, 232, 152, 0], +"hsl(120 62.5% 75% / 0.0)", [152, 232, 152, 0], +"hsl(150 62.5% 75% / 0.0)", [152, 232, 192, 0], +"hsl(180 62.5% 75% / 0.0)", [152, 232, 232, 0], +"hsl(210 62.5% 75% / 0.0)", [152, 192, 232, 0], +"hsl(240 62.5% 75% / 0.0)", [152, 152, 232, 0], +"hsl(270 62.5% 75% / 0.0)", [192, 152, 232, 0], +"hsl(300 62.5% 75% / 0.0)", [232, 152, 232, 0], +"hsl(330 62.5% 75% / 0.0)", [232, 152, 192, 0], +"hsl(0 75% 75% / 0.0)", [240, 144, 144, 0], +"hsl(30 75% 75% / 0.0)", [240, 192, 144, 0], +"hsl(60 75% 75% / 0.0)", [240, 240, 144, 0], +"hsl(90 75% 75% / 0.0)", [192, 240, 144, 0], +"hsl(120 75% 75% / 0.0)", [144, 240, 144, 0], +"hsl(150 75% 75% / 0.0)", [144, 240, 192, 0], +"hsl(180 75% 75% / 0.0)", [144, 240, 240, 0], +"hsl(210 75% 75% / 0.0)", [144, 192, 240, 0], +"hsl(240 75% 75% / 0.0)", [144, 144, 240, 0], +"hsl(270 75% 75% / 0.0)", [192, 144, 240, 0], +"hsl(300 75% 75% / 0.0)", [240, 144, 240, 0], +"hsl(330 75% 75% / 0.0)", [240, 144, 192, 0], +"hsl(0 87.5% 75% / 0.0)", [248, 136, 136, 0], +"hsl(30 87.5% 75% / 0.0)", [248, 192, 136, 0], +"hsl(60 87.5% 75% / 0.0)", [248, 248, 136, 0], +"hsl(90 87.5% 75% / 0.0)", [192, 248, 136, 0], +"hsl(120 87.5% 75% / 0.0)", [136, 248, 136, 0], +"hsl(150 87.5% 75% / 0.0)", [136, 248, 192, 0], +"hsl(180 87.5% 75% / 0.0)", [136, 248, 248, 0], +"hsl(210 87.5% 75% / 0.0)", [136, 192, 248, 0], +"hsl(240 87.5% 75% / 0.0)", [136, 136, 248, 0], +"hsl(270 87.5% 75% / 0.0)", [192, 136, 248, 0], +"hsl(300 87.5% 75% / 0.0)", [248, 136, 248, 0], +"hsl(330 87.5% 75% / 0.0)", [248, 136, 192, 0], +"hsl(0 100% 75% / 0.0)", [255, 128, 128, 0], +"hsl(30 100% 75% / 0.0)", [255, 192, 128, 0], +"hsl(60 100% 75% / 0.0)", [255, 255, 128, 0], +"hsl(90 100% 75% / 0.0)", [192, 255, 128, 0], +"hsl(120 100% 75% / 0.0)", [128, 255, 128, 0], +"hsl(150 100% 75% / 0.0)", [128, 255, 192, 0], +"hsl(180 100% 75% / 0.0)", [128, 255, 255, 0], +"hsl(210 100% 75% / 0.0)", [128, 192, 255, 0], +"hsl(240 100% 75% / 0.0)", [128, 128, 255, 0], +"hsl(270 100% 75% / 0.0)", [192, 128, 255, 0], +"hsl(300 100% 75% / 0.0)", [255, 128, 255, 0], +"hsl(330 100% 75% / 0.0)", [255, 128, 192, 0], +"hsl(0 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(30 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(60 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(90 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(120 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(150 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(180 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(210 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(240 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(270 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(300 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(330 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsl(0 12.5% 87.5% / 0.0)", [228, 220, 220, 0], +"hsl(30 12.5% 87.5% / 0.0)", [228, 224, 220, 0], +"hsl(60 12.5% 87.5% / 0.0)", [228, 228, 220, 0], +"hsl(90 12.5% 87.5% / 0.0)", [224, 228, 220, 0], +"hsl(120 12.5% 87.5% / 0.0)", [220, 228, 220, 0], +"hsl(150 12.5% 87.5% / 0.0)", [220, 228, 224, 0], +"hsl(180 12.5% 87.5% / 0.0)", [220, 228, 228, 0], +"hsl(210 12.5% 87.5% / 0.0)", [220, 224, 228, 0], +"hsl(240 12.5% 87.5% / 0.0)", [220, 220, 228, 0], +"hsl(270 12.5% 87.5% / 0.0)", [224, 220, 228, 0], +"hsl(300 12.5% 87.5% / 0.0)", [228, 220, 228, 0], +"hsl(330 12.5% 87.5% / 0.0)", [228, 220, 224, 0], +"hsl(0 25% 87.5% / 0.0)", [232, 216, 216, 0], +"hsl(30 25% 87.5% / 0.0)", [232, 224, 216, 0], +"hsl(60 25% 87.5% / 0.0)", [232, 232, 216, 0], +"hsl(90 25% 87.5% / 0.0)", [224, 232, 216, 0], +"hsl(120 25% 87.5% / 0.0)", [216, 232, 216, 0], +"hsl(150 25% 87.5% / 0.0)", [216, 232, 224, 0], +"hsl(180 25% 87.5% / 0.0)", [216, 232, 232, 0], +"hsl(210 25% 87.5% / 0.0)", [216, 224, 232, 0], +"hsl(240 25% 87.5% / 0.0)", [216, 216, 232, 0], +"hsl(270 25% 87.5% / 0.0)", [224, 216, 232, 0], +"hsl(300 25% 87.5% / 0.0)", [232, 216, 232, 0], +"hsl(330 25% 87.5% / 0.0)", [232, 216, 224, 0], +"hsl(0 37.5% 87.5% / 0.0)", [236, 212, 212, 0], +"hsl(30 37.5% 87.5% / 0.0)", [236, 224, 212, 0], +"hsl(60 37.5% 87.5% / 0.0)", [236, 236, 212, 0], +"hsl(90 37.5% 87.5% / 0.0)", [224, 236, 212, 0], +"hsl(120 37.5% 87.5% / 0.0)", [212, 236, 212, 0], +"hsl(150 37.5% 87.5% / 0.0)", [212, 236, 224, 0], +"hsl(180 37.5% 87.5% / 0.0)", [212, 236, 236, 0], +"hsl(210 37.5% 87.5% / 0.0)", [212, 224, 236, 0], +"hsl(240 37.5% 87.5% / 0.0)", [212, 212, 236, 0], +"hsl(270 37.5% 87.5% / 0.0)", [224, 212, 236, 0], +"hsl(300 37.5% 87.5% / 0.0)", [236, 212, 236, 0], +"hsl(330 37.5% 87.5% / 0.0)", [236, 212, 224, 0], +"hsl(0 50% 87.5% / 0.0)", [240, 208, 208, 0], +"hsl(30 50% 87.5% / 0.0)", [240, 224, 208, 0], +"hsl(60 50% 87.5% / 0.0)", [240, 240, 208, 0], +"hsl(90 50% 87.5% / 0.0)", [224, 240, 208, 0], +"hsl(120 50% 87.5% / 0.0)", [208, 240, 208, 0], +"hsl(150 50% 87.5% / 0.0)", [208, 240, 224, 0], +"hsl(180 50% 87.5% / 0.0)", [208, 240, 240, 0], +"hsl(210 50% 87.5% / 0.0)", [208, 224, 240, 0], +"hsl(240 50% 87.5% / 0.0)", [208, 208, 240, 0], +"hsl(270 50% 87.5% / 0.0)", [224, 208, 240, 0], +"hsl(300 50% 87.5% / 0.0)", [240, 208, 240, 0], +"hsl(330 50% 87.5% / 0.0)", [240, 208, 224, 0], +"hsl(0 62.5% 87.5% / 0.0)", [244, 204, 204, 0], +"hsl(30 62.5% 87.5% / 0.0)", [244, 224, 204, 0], +"hsl(60 62.5% 87.5% / 0.0)", [244, 244, 204, 0], +"hsl(90 62.5% 87.5% / 0.0)", [224, 244, 204, 0], +"hsl(120 62.5% 87.5% / 0.0)", [204, 244, 204, 0], +"hsl(150 62.5% 87.5% / 0.0)", [204, 244, 224, 0], +"hsl(180 62.5% 87.5% / 0.0)", [204, 244, 244, 0], +"hsl(210 62.5% 87.5% / 0.0)", [204, 224, 244, 0], +"hsl(240 62.5% 87.5% / 0.0)", [204, 204, 244, 0], +"hsl(270 62.5% 87.5% / 0.0)", [224, 204, 244, 0], +"hsl(300 62.5% 87.5% / 0.0)", [244, 204, 244, 0], +"hsl(330 62.5% 87.5% / 0.0)", [244, 204, 224, 0], +"hsl(0 75% 87.5% / 0.0)", [248, 200, 200, 0], +"hsl(30 75% 87.5% / 0.0)", [248, 224, 200, 0], +"hsl(60 75% 87.5% / 0.0)", [248, 248, 200, 0], +"hsl(90 75% 87.5% / 0.0)", [224, 248, 200, 0], +"hsl(120 75% 87.5% / 0.0)", [200, 248, 200, 0], +"hsl(150 75% 87.5% / 0.0)", [200, 248, 224, 0], +"hsl(180 75% 87.5% / 0.0)", [200, 248, 248, 0], +"hsl(210 75% 87.5% / 0.0)", [200, 224, 248, 0], +"hsl(240 75% 87.5% / 0.0)", [200, 200, 248, 0], +"hsl(270 75% 87.5% / 0.0)", [224, 200, 248, 0], +"hsl(300 75% 87.5% / 0.0)", [248, 200, 248, 0], +"hsl(330 75% 87.5% / 0.0)", [248, 200, 224, 0], +"hsl(0 87.5% 87.5% / 0.0)", [252, 196, 196, 0], +"hsl(30 87.5% 87.5% / 0.0)", [252, 224, 196, 0], +"hsl(60 87.5% 87.5% / 0.0)", [252, 252, 196, 0], +"hsl(90 87.5% 87.5% / 0.0)", [224, 252, 196, 0], +"hsl(120 87.5% 87.5% / 0.0)", [196, 252, 196, 0], +"hsl(150 87.5% 87.5% / 0.0)", [196, 252, 224, 0], +"hsl(180 87.5% 87.5% / 0.0)", [196, 252, 252, 0], +"hsl(210 87.5% 87.5% / 0.0)", [196, 224, 252, 0], +"hsl(240 87.5% 87.5% / 0.0)", [196, 196, 252, 0], +"hsl(270 87.5% 87.5% / 0.0)", [224, 196, 252, 0], +"hsl(300 87.5% 87.5% / 0.0)", [252, 196, 252, 0], +"hsl(330 87.5% 87.5% / 0.0)", [252, 196, 224, 0], +"hsl(0 100% 87.5% / 0.0)", [255, 192, 192, 0], +"hsl(30 100% 87.5% / 0.0)", [255, 224, 192, 0], +"hsl(60 100% 87.5% / 0.0)", [255, 255, 192, 0], +"hsl(90 100% 87.5% / 0.0)", [224, 255, 192, 0], +"hsl(120 100% 87.5% / 0.0)", [192, 255, 192, 0], +"hsl(150 100% 87.5% / 0.0)", [192, 255, 224, 0], +"hsl(180 100% 87.5% / 0.0)", [192, 255, 255, 0], +"hsl(210 100% 87.5% / 0.0)", [192, 224, 255, 0], +"hsl(240 100% 87.5% / 0.0)", [192, 192, 255, 0], +"hsl(270 100% 87.5% / 0.0)", [224, 192, 255, 0], +"hsl(300 100% 87.5% / 0.0)", [255, 192, 255, 0], +"hsl(330 100% 87.5% / 0.0)", [255, 192, 224, 0], +"hsl(0 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(30 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(60 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(90 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(120 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(150 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(180 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(210 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(240 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(270 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(300 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(330 0% 100% / 0.0)", [255, 255, 255, 0], +"hsl(0 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(30 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(60 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(90 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(120 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(150 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(180 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(210 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(240 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(270 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(300 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(330 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(0 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(30 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(60 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(90 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(120 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(150 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(180 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(210 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(240 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(270 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(300 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(330 25% 100% / 0.0)", [255, 255, 255, 0], +"hsl(0 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(30 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(60 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(90 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(120 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(150 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(180 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(210 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(240 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(270 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(300 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(330 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(0 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(30 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(60 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(90 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(120 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(150 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(180 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(210 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(240 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(270 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(300 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(330 50% 100% / 0.0)", [255, 255, 255, 0], +"hsl(0 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(30 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(60 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(90 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(120 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(150 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(180 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(210 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(240 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(270 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(300 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(330 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(0 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(30 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(60 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(90 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(120 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(150 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(180 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(210 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(240 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(270 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(300 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(330 75% 100% / 0.0)", [255, 255, 255, 0], +"hsl(0 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(30 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(60 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(90 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(120 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(150 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(180 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(210 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(240 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(270 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(300 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(330 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsl(0 100% 100% / 0.0)", [255, 255, 255, 0], +"hsl(30 100% 100% / 0.0)", [255, 255, 255, 0], +"hsl(60 100% 100% / 0.0)", [255, 255, 255, 0], +"hsl(90 100% 100% / 0.0)", [255, 255, 255, 0], +"hsl(120 100% 100% / 0.0)", [255, 255, 255, 0], +"hsl(150 100% 100% / 0.0)", [255, 255, 255, 0], +"hsl(180 100% 100% / 0.0)", [255, 255, 255, 0], +"hsl(210 100% 100% / 0.0)", [255, 255, 255, 0], +"hsl(240 100% 100% / 0.0)", [255, 255, 255, 0], +"hsl(270 100% 100% / 0.0)", [255, 255, 255, 0], +"hsl(300 100% 100% / 0.0)", [255, 255, 255, 0], +"hsl(330 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(0 0% 0%)", [0, 0, 0, 255], +"hsla(30 0% 0%)", [0, 0, 0, 255], +"hsla(60 0% 0%)", [0, 0, 0, 255], +"hsla(90 0% 0%)", [0, 0, 0, 255], +"hsla(120 0% 0%)", [0, 0, 0, 255], +"hsla(150 0% 0%)", [0, 0, 0, 255], +"hsla(180 0% 0%)", [0, 0, 0, 255], +"hsla(210 0% 0%)", [0, 0, 0, 255], +"hsla(240 0% 0%)", [0, 0, 0, 255], +"hsla(270 0% 0%)", [0, 0, 0, 255], +"hsla(300 0% 0%)", [0, 0, 0, 255], +"hsla(330 0% 0%)", [0, 0, 0, 255], +"hsla(0 12.5% 0%)", [0, 0, 0, 255], +"hsla(30 12.5% 0%)", [0, 0, 0, 255], +"hsla(60 12.5% 0%)", [0, 0, 0, 255], +"hsla(90 12.5% 0%)", [0, 0, 0, 255], +"hsla(120 12.5% 0%)", [0, 0, 0, 255], +"hsla(150 12.5% 0%)", [0, 0, 0, 255], +"hsla(180 12.5% 0%)", [0, 0, 0, 255], +"hsla(210 12.5% 0%)", [0, 0, 0, 255], +"hsla(240 12.5% 0%)", [0, 0, 0, 255], +"hsla(270 12.5% 0%)", [0, 0, 0, 255], +"hsla(300 12.5% 0%)", [0, 0, 0, 255], +"hsla(330 12.5% 0%)", [0, 0, 0, 255], +"hsla(0 25% 0%)", [0, 0, 0, 255], +"hsla(30 25% 0%)", [0, 0, 0, 255], +"hsla(60 25% 0%)", [0, 0, 0, 255], +"hsla(90 25% 0%)", [0, 0, 0, 255], +"hsla(120 25% 0%)", [0, 0, 0, 255], +"hsla(150 25% 0%)", [0, 0, 0, 255], +"hsla(180 25% 0%)", [0, 0, 0, 255], +"hsla(210 25% 0%)", [0, 0, 0, 255], +"hsla(240 25% 0%)", [0, 0, 0, 255], +"hsla(270 25% 0%)", [0, 0, 0, 255], +"hsla(300 25% 0%)", [0, 0, 0, 255], +"hsla(330 25% 0%)", [0, 0, 0, 255], +"hsla(0 37.5% 0%)", [0, 0, 0, 255], +"hsla(30 37.5% 0%)", [0, 0, 0, 255], +"hsla(60 37.5% 0%)", [0, 0, 0, 255], +"hsla(90 37.5% 0%)", [0, 0, 0, 255], +"hsla(120 37.5% 0%)", [0, 0, 0, 255], +"hsla(150 37.5% 0%)", [0, 0, 0, 255], +"hsla(180 37.5% 0%)", [0, 0, 0, 255], +"hsla(210 37.5% 0%)", [0, 0, 0, 255], +"hsla(240 37.5% 0%)", [0, 0, 0, 255], +"hsla(270 37.5% 0%)", [0, 0, 0, 255], +"hsla(300 37.5% 0%)", [0, 0, 0, 255], +"hsla(330 37.5% 0%)", [0, 0, 0, 255], +"hsla(0 50% 0%)", [0, 0, 0, 255], +"hsla(30 50% 0%)", [0, 0, 0, 255], +"hsla(60 50% 0%)", [0, 0, 0, 255], +"hsla(90 50% 0%)", [0, 0, 0, 255], +"hsla(120 50% 0%)", [0, 0, 0, 255], +"hsla(150 50% 0%)", [0, 0, 0, 255], +"hsla(180 50% 0%)", [0, 0, 0, 255], +"hsla(210 50% 0%)", [0, 0, 0, 255], +"hsla(240 50% 0%)", [0, 0, 0, 255], +"hsla(270 50% 0%)", [0, 0, 0, 255], +"hsla(300 50% 0%)", [0, 0, 0, 255], +"hsla(330 50% 0%)", [0, 0, 0, 255], +"hsla(0 62.5% 0%)", [0, 0, 0, 255], +"hsla(30 62.5% 0%)", [0, 0, 0, 255], +"hsla(60 62.5% 0%)", [0, 0, 0, 255], +"hsla(90 62.5% 0%)", [0, 0, 0, 255], +"hsla(120 62.5% 0%)", [0, 0, 0, 255], +"hsla(150 62.5% 0%)", [0, 0, 0, 255], +"hsla(180 62.5% 0%)", [0, 0, 0, 255], +"hsla(210 62.5% 0%)", [0, 0, 0, 255], +"hsla(240 62.5% 0%)", [0, 0, 0, 255], +"hsla(270 62.5% 0%)", [0, 0, 0, 255], +"hsla(300 62.5% 0%)", [0, 0, 0, 255], +"hsla(330 62.5% 0%)", [0, 0, 0, 255], +"hsla(0 75% 0%)", [0, 0, 0, 255], +"hsla(30 75% 0%)", [0, 0, 0, 255], +"hsla(60 75% 0%)", [0, 0, 0, 255], +"hsla(90 75% 0%)", [0, 0, 0, 255], +"hsla(120 75% 0%)", [0, 0, 0, 255], +"hsla(150 75% 0%)", [0, 0, 0, 255], +"hsla(180 75% 0%)", [0, 0, 0, 255], +"hsla(210 75% 0%)", [0, 0, 0, 255], +"hsla(240 75% 0%)", [0, 0, 0, 255], +"hsla(270 75% 0%)", [0, 0, 0, 255], +"hsla(300 75% 0%)", [0, 0, 0, 255], +"hsla(330 75% 0%)", [0, 0, 0, 255], +"hsla(0 87.5% 0%)", [0, 0, 0, 255], +"hsla(30 87.5% 0%)", [0, 0, 0, 255], +"hsla(60 87.5% 0%)", [0, 0, 0, 255], +"hsla(90 87.5% 0%)", [0, 0, 0, 255], +"hsla(120 87.5% 0%)", [0, 0, 0, 255], +"hsla(150 87.5% 0%)", [0, 0, 0, 255], +"hsla(180 87.5% 0%)", [0, 0, 0, 255], +"hsla(210 87.5% 0%)", [0, 0, 0, 255], +"hsla(240 87.5% 0%)", [0, 0, 0, 255], +"hsla(270 87.5% 0%)", [0, 0, 0, 255], +"hsla(300 87.5% 0%)", [0, 0, 0, 255], +"hsla(330 87.5% 0%)", [0, 0, 0, 255], +"hsla(0 100% 0%)", [0, 0, 0, 255], +"hsla(30 100% 0%)", [0, 0, 0, 255], +"hsla(60 100% 0%)", [0, 0, 0, 255], +"hsla(90 100% 0%)", [0, 0, 0, 255], +"hsla(120 100% 0%)", [0, 0, 0, 255], +"hsla(150 100% 0%)", [0, 0, 0, 255], +"hsla(180 100% 0%)", [0, 0, 0, 255], +"hsla(210 100% 0%)", [0, 0, 0, 255], +"hsla(240 100% 0%)", [0, 0, 0, 255], +"hsla(270 100% 0%)", [0, 0, 0, 255], +"hsla(300 100% 0%)", [0, 0, 0, 255], +"hsla(330 100% 0%)", [0, 0, 0, 255], +"hsla(0 0% 12.5%)", [32, 32, 32, 255], +"hsla(30 0% 12.5%)", [32, 32, 32, 255], +"hsla(60 0% 12.5%)", [32, 32, 32, 255], +"hsla(90 0% 12.5%)", [32, 32, 32, 255], +"hsla(120 0% 12.5%)", [32, 32, 32, 255], +"hsla(150 0% 12.5%)", [32, 32, 32, 255], +"hsla(180 0% 12.5%)", [32, 32, 32, 255], +"hsla(210 0% 12.5%)", [32, 32, 32, 255], +"hsla(240 0% 12.5%)", [32, 32, 32, 255], +"hsla(270 0% 12.5%)", [32, 32, 32, 255], +"hsla(300 0% 12.5%)", [32, 32, 32, 255], +"hsla(330 0% 12.5%)", [32, 32, 32, 255], +"hsla(0 12.5% 12.5%)", [36, 28, 28, 255], +"hsla(30 12.5% 12.5%)", [36, 32, 28, 255], +"hsla(60 12.5% 12.5%)", [36, 36, 28, 255], +"hsla(90 12.5% 12.5%)", [32, 36, 28, 255], +"hsla(120 12.5% 12.5%)", [28, 36, 28, 255], +"hsla(150 12.5% 12.5%)", [28, 36, 32, 255], +"hsla(180 12.5% 12.5%)", [28, 36, 36, 255], +"hsla(210 12.5% 12.5%)", [28, 32, 36, 255], +"hsla(240 12.5% 12.5%)", [28, 28, 36, 255], +"hsla(270 12.5% 12.5%)", [32, 28, 36, 255], +"hsla(300 12.5% 12.5%)", [36, 28, 36, 255], +"hsla(330 12.5% 12.5%)", [36, 28, 32, 255], +"hsla(0 25% 12.5%)", [40, 24, 24, 255], +"hsla(30 25% 12.5%)", [40, 32, 24, 255], +"hsla(60 25% 12.5%)", [40, 40, 24, 255], +"hsla(90 25% 12.5%)", [32, 40, 24, 255], +"hsla(120 25% 12.5%)", [24, 40, 24, 255], +"hsla(150 25% 12.5%)", [24, 40, 32, 255], +"hsla(180 25% 12.5%)", [24, 40, 40, 255], +"hsla(210 25% 12.5%)", [24, 32, 40, 255], +"hsla(240 25% 12.5%)", [24, 24, 40, 255], +"hsla(270 25% 12.5%)", [32, 24, 40, 255], +"hsla(300 25% 12.5%)", [40, 24, 40, 255], +"hsla(330 25% 12.5%)", [40, 24, 32, 255], +"hsla(0 37.5% 12.5%)", [44, 20, 20, 255], +"hsla(30 37.5% 12.5%)", [44, 32, 20, 255], +"hsla(60 37.5% 12.5%)", [44, 44, 20, 255], +"hsla(90 37.5% 12.5%)", [32, 44, 20, 255], +"hsla(120 37.5% 12.5%)", [20, 44, 20, 255], +"hsla(150 37.5% 12.5%)", [20, 44, 32, 255], +"hsla(180 37.5% 12.5%)", [20, 44, 44, 255], +"hsla(210 37.5% 12.5%)", [20, 32, 44, 255], +"hsla(240 37.5% 12.5%)", [20, 20, 44, 255], +"hsla(270 37.5% 12.5%)", [32, 20, 44, 255], +"hsla(300 37.5% 12.5%)", [44, 20, 44, 255], +"hsla(330 37.5% 12.5%)", [44, 20, 32, 255], +"hsla(0 50% 12.5%)", [48, 16, 16, 255], +"hsla(30 50% 12.5%)", [48, 32, 16, 255], +"hsla(60 50% 12.5%)", [48, 48, 16, 255], +"hsla(90 50% 12.5%)", [32, 48, 16, 255], +"hsla(120 50% 12.5%)", [16, 48, 16, 255], +"hsla(150 50% 12.5%)", [16, 48, 32, 255], +"hsla(180 50% 12.5%)", [16, 48, 48, 255], +"hsla(210 50% 12.5%)", [16, 32, 48, 255], +"hsla(240 50% 12.5%)", [16, 16, 48, 255], +"hsla(270 50% 12.5%)", [32, 16, 48, 255], +"hsla(300 50% 12.5%)", [48, 16, 48, 255], +"hsla(330 50% 12.5%)", [48, 16, 32, 255], +"hsla(0 62.5% 12.5%)", [52, 12, 12, 255], +"hsla(30 62.5% 12.5%)", [52, 32, 12, 255], +"hsla(60 62.5% 12.5%)", [52, 52, 12, 255], +"hsla(90 62.5% 12.5%)", [32, 52, 12, 255], +"hsla(120 62.5% 12.5%)", [12, 52, 12, 255], +"hsla(150 62.5% 12.5%)", [12, 52, 32, 255], +"hsla(180 62.5% 12.5%)", [12, 52, 52, 255], +"hsla(210 62.5% 12.5%)", [12, 32, 52, 255], +"hsla(240 62.5% 12.5%)", [12, 12, 52, 255], +"hsla(270 62.5% 12.5%)", [32, 12, 52, 255], +"hsla(300 62.5% 12.5%)", [52, 12, 52, 255], +"hsla(330 62.5% 12.5%)", [52, 12, 32, 255], +"hsla(0 75% 12.5%)", [56, 8, 8, 255], +"hsla(30 75% 12.5%)", [56, 32, 8, 255], +"hsla(60 75% 12.5%)", [56, 56, 8, 255], +"hsla(90 75% 12.5%)", [32, 56, 8, 255], +"hsla(120 75% 12.5%)", [8, 56, 8, 255], +"hsla(150 75% 12.5%)", [8, 56, 32, 255], +"hsla(180 75% 12.5%)", [8, 56, 56, 255], +"hsla(210 75% 12.5%)", [8, 32, 56, 255], +"hsla(240 75% 12.5%)", [8, 8, 56, 255], +"hsla(270 75% 12.5%)", [32, 8, 56, 255], +"hsla(300 75% 12.5%)", [56, 8, 56, 255], +"hsla(330 75% 12.5%)", [56, 8, 32, 255], +"hsla(0 87.5% 12.5%)", [60, 4, 4, 255], +"hsla(30 87.5% 12.5%)", [60, 32, 4, 255], +"hsla(60 87.5% 12.5%)", [60, 60, 4, 255], +"hsla(90 87.5% 12.5%)", [32, 60, 4, 255], +"hsla(120 87.5% 12.5%)", [4, 60, 4, 255], +"hsla(150 87.5% 12.5%)", [4, 60, 32, 255], +"hsla(180 87.5% 12.5%)", [4, 60, 60, 255], +"hsla(210 87.5% 12.5%)", [4, 32, 60, 255], +"hsla(240 87.5% 12.5%)", [4, 4, 60, 255], +"hsla(270 87.5% 12.5%)", [32, 4, 60, 255], +"hsla(300 87.5% 12.5%)", [60, 4, 60, 255], +"hsla(330 87.5% 12.5%)", [60, 4, 32, 255], +"hsla(0 100% 12.5%)", [64, 0, 0, 255], +"hsla(30 100% 12.5%)", [64, 32, 0, 255], +"hsla(60 100% 12.5%)", [64, 64, 0, 255], +"hsla(90 100% 12.5%)", [32, 64, 0, 255], +"hsla(120 100% 12.5%)", [0, 64, 0, 255], +"hsla(150 100% 12.5%)", [0, 64, 32, 255], +"hsla(180 100% 12.5%)", [0, 64, 64, 255], +"hsla(210 100% 12.5%)", [0, 32, 64, 255], +"hsla(240 100% 12.5%)", [0, 0, 64, 255], +"hsla(270 100% 12.5%)", [32, 0, 64, 255], +"hsla(300 100% 12.5%)", [64, 0, 64, 255], +"hsla(330 100% 12.5%)", [64, 0, 32, 255], +"hsla(0 0% 25%)", [64, 64, 64, 255], +"hsla(30 0% 25%)", [64, 64, 64, 255], +"hsla(60 0% 25%)", [64, 64, 64, 255], +"hsla(90 0% 25%)", [64, 64, 64, 255], +"hsla(120 0% 25%)", [64, 64, 64, 255], +"hsla(150 0% 25%)", [64, 64, 64, 255], +"hsla(180 0% 25%)", [64, 64, 64, 255], +"hsla(210 0% 25%)", [64, 64, 64, 255], +"hsla(240 0% 25%)", [64, 64, 64, 255], +"hsla(270 0% 25%)", [64, 64, 64, 255], +"hsla(300 0% 25%)", [64, 64, 64, 255], +"hsla(330 0% 25%)", [64, 64, 64, 255], +"hsla(0 12.5% 25%)", [72, 56, 56, 255], +"hsla(30 12.5% 25%)", [72, 64, 56, 255], +"hsla(60 12.5% 25%)", [72, 72, 56, 255], +"hsla(90 12.5% 25%)", [64, 72, 56, 255], +"hsla(120 12.5% 25%)", [56, 72, 56, 255], +"hsla(150 12.5% 25%)", [56, 72, 64, 255], +"hsla(180 12.5% 25%)", [56, 72, 72, 255], +"hsla(210 12.5% 25%)", [56, 64, 72, 255], +"hsla(240 12.5% 25%)", [56, 56, 72, 255], +"hsla(270 12.5% 25%)", [64, 56, 72, 255], +"hsla(300 12.5% 25%)", [72, 56, 72, 255], +"hsla(330 12.5% 25%)", [72, 56, 64, 255], +"hsla(0 25% 25%)", [80, 48, 48, 255], +"hsla(30 25% 25%)", [80, 64, 48, 255], +"hsla(60 25% 25%)", [80, 80, 48, 255], +"hsla(90 25% 25%)", [64, 80, 48, 255], +"hsla(120 25% 25%)", [48, 80, 48, 255], +"hsla(150 25% 25%)", [48, 80, 64, 255], +"hsla(180 25% 25%)", [48, 80, 80, 255], +"hsla(210 25% 25%)", [48, 64, 80, 255], +"hsla(240 25% 25%)", [48, 48, 80, 255], +"hsla(270 25% 25%)", [64, 48, 80, 255], +"hsla(300 25% 25%)", [80, 48, 80, 255], +"hsla(330 25% 25%)", [80, 48, 64, 255], +"hsla(0 37.5% 25%)", [88, 40, 40, 255], +"hsla(30 37.5% 25%)", [88, 64, 40, 255], +"hsla(60 37.5% 25%)", [88, 88, 40, 255], +"hsla(90 37.5% 25%)", [64, 88, 40, 255], +"hsla(120 37.5% 25%)", [40, 88, 40, 255], +"hsla(150 37.5% 25%)", [40, 88, 64, 255], +"hsla(180 37.5% 25%)", [40, 88, 88, 255], +"hsla(210 37.5% 25%)", [40, 64, 88, 255], +"hsla(240 37.5% 25%)", [40, 40, 88, 255], +"hsla(270 37.5% 25%)", [64, 40, 88, 255], +"hsla(300 37.5% 25%)", [88, 40, 88, 255], +"hsla(330 37.5% 25%)", [88, 40, 64, 255], +"hsla(0 50% 25%)", [96, 32, 32, 255], +"hsla(30 50% 25%)", [96, 64, 32, 255], +"hsla(60 50% 25%)", [96, 96, 32, 255], +"hsla(90 50% 25%)", [64, 96, 32, 255], +"hsla(120 50% 25%)", [32, 96, 32, 255], +"hsla(150 50% 25%)", [32, 96, 64, 255], +"hsla(180 50% 25%)", [32, 96, 96, 255], +"hsla(210 50% 25%)", [32, 64, 96, 255], +"hsla(240 50% 25%)", [32, 32, 96, 255], +"hsla(270 50% 25%)", [64, 32, 96, 255], +"hsla(300 50% 25%)", [96, 32, 96, 255], +"hsla(330 50% 25%)", [96, 32, 64, 255], +"hsla(0 62.5% 25%)", [104, 24, 24, 255], +"hsla(30 62.5% 25%)", [104, 64, 24, 255], +"hsla(60 62.5% 25%)", [104, 104, 24, 255], +"hsla(90 62.5% 25%)", [64, 104, 24, 255], +"hsla(120 62.5% 25%)", [24, 104, 24, 255], +"hsla(150 62.5% 25%)", [24, 104, 64, 255], +"hsla(180 62.5% 25%)", [24, 104, 104, 255], +"hsla(210 62.5% 25%)", [24, 64, 104, 255], +"hsla(240 62.5% 25%)", [24, 24, 104, 255], +"hsla(270 62.5% 25%)", [64, 24, 104, 255], +"hsla(300 62.5% 25%)", [104, 24, 104, 255], +"hsla(330 62.5% 25%)", [104, 24, 64, 255], +"hsla(0 75% 25%)", [112, 16, 16, 255], +"hsla(30 75% 25%)", [112, 64, 16, 255], +"hsla(60 75% 25%)", [112, 112, 16, 255], +"hsla(90 75% 25%)", [64, 112, 16, 255], +"hsla(120 75% 25%)", [16, 112, 16, 255], +"hsla(150 75% 25%)", [16, 112, 64, 255], +"hsla(180 75% 25%)", [16, 112, 112, 255], +"hsla(210 75% 25%)", [16, 64, 112, 255], +"hsla(240 75% 25%)", [16, 16, 112, 255], +"hsla(270 75% 25%)", [64, 16, 112, 255], +"hsla(300 75% 25%)", [112, 16, 112, 255], +"hsla(330 75% 25%)", [112, 16, 64, 255], +"hsla(0 87.5% 25%)", [120, 8, 8, 255], +"hsla(30 87.5% 25%)", [120, 64, 8, 255], +"hsla(60 87.5% 25%)", [120, 120, 8, 255], +"hsla(90 87.5% 25%)", [64, 120, 8, 255], +"hsla(120 87.5% 25%)", [8, 120, 8, 255], +"hsla(150 87.5% 25%)", [8, 120, 64, 255], +"hsla(180 87.5% 25%)", [8, 120, 120, 255], +"hsla(210 87.5% 25%)", [8, 64, 120, 255], +"hsla(240 87.5% 25%)", [8, 8, 120, 255], +"hsla(270 87.5% 25%)", [64, 8, 120, 255], +"hsla(300 87.5% 25%)", [120, 8, 120, 255], +"hsla(330 87.5% 25%)", [120, 8, 64, 255], +"hsla(0 100% 25%)", [128, 0, 0, 255], +"hsla(30 100% 25%)", [128, 64, 0, 255], +"hsla(60 100% 25%)", [128, 128, 0, 255], +"hsla(90 100% 25%)", [64, 128, 0, 255], +"hsla(120 100% 25%)", [0, 128, 0, 255], +"hsla(150 100% 25%)", [0, 128, 64, 255], +"hsla(180 100% 25%)", [0, 128, 128, 255], +"hsla(210 100% 25%)", [0, 64, 128, 255], +"hsla(240 100% 25%)", [0, 0, 128, 255], +"hsla(270 100% 25%)", [64, 0, 128, 255], +"hsla(300 100% 25%)", [128, 0, 128, 255], +"hsla(330 100% 25%)", [128, 0, 64, 255], +"hsla(0 0% 37.5%)", [96, 96, 96, 255], +"hsla(30 0% 37.5%)", [96, 96, 96, 255], +"hsla(60 0% 37.5%)", [96, 96, 96, 255], +"hsla(90 0% 37.5%)", [96, 96, 96, 255], +"hsla(120 0% 37.5%)", [96, 96, 96, 255], +"hsla(150 0% 37.5%)", [96, 96, 96, 255], +"hsla(180 0% 37.5%)", [96, 96, 96, 255], +"hsla(210 0% 37.5%)", [96, 96, 96, 255], +"hsla(240 0% 37.5%)", [96, 96, 96, 255], +"hsla(270 0% 37.5%)", [96, 96, 96, 255], +"hsla(300 0% 37.5%)", [96, 96, 96, 255], +"hsla(330 0% 37.5%)", [96, 96, 96, 255], +"hsla(0 12.5% 37.5%)", [108, 84, 84, 255], +"hsla(30 12.5% 37.5%)", [108, 96, 84, 255], +"hsla(60 12.5% 37.5%)", [108, 108, 84, 255], +"hsla(90 12.5% 37.5%)", [96, 108, 84, 255], +"hsla(120 12.5% 37.5%)", [84, 108, 84, 255], +"hsla(150 12.5% 37.5%)", [84, 108, 96, 255], +"hsla(180 12.5% 37.5%)", [84, 108, 108, 255], +"hsla(210 12.5% 37.5%)", [84, 96, 108, 255], +"hsla(240 12.5% 37.5%)", [84, 84, 108, 255], +"hsla(270 12.5% 37.5%)", [96, 84, 108, 255], +"hsla(300 12.5% 37.5%)", [108, 84, 108, 255], +"hsla(330 12.5% 37.5%)", [108, 84, 96, 255], +"hsla(0 25% 37.5%)", [120, 72, 72, 255], +"hsla(30 25% 37.5%)", [120, 96, 72, 255], +"hsla(60 25% 37.5%)", [120, 120, 72, 255], +"hsla(90 25% 37.5%)", [96, 120, 72, 255], +"hsla(120 25% 37.5%)", [72, 120, 72, 255], +"hsla(150 25% 37.5%)", [72, 120, 96, 255], +"hsla(180 25% 37.5%)", [72, 120, 120, 255], +"hsla(210 25% 37.5%)", [72, 96, 120, 255], +"hsla(240 25% 37.5%)", [72, 72, 120, 255], +"hsla(270 25% 37.5%)", [96, 72, 120, 255], +"hsla(300 25% 37.5%)", [120, 72, 120, 255], +"hsla(330 25% 37.5%)", [120, 72, 96, 255], +"hsla(0 37.5% 37.5%)", [132, 60, 60, 255], +"hsla(30 37.5% 37.5%)", [132, 96, 60, 255], +"hsla(60 37.5% 37.5%)", [132, 132, 60, 255], +"hsla(90 37.5% 37.5%)", [96, 132, 60, 255], +"hsla(120 37.5% 37.5%)", [60, 132, 60, 255], +"hsla(150 37.5% 37.5%)", [60, 132, 96, 255], +"hsla(180 37.5% 37.5%)", [60, 132, 132, 255], +"hsla(210 37.5% 37.5%)", [60, 96, 132, 255], +"hsla(240 37.5% 37.5%)", [60, 60, 132, 255], +"hsla(270 37.5% 37.5%)", [96, 60, 132, 255], +"hsla(300 37.5% 37.5%)", [132, 60, 132, 255], +"hsla(330 37.5% 37.5%)", [132, 60, 96, 255], +"hsla(0 50% 37.5%)", [144, 48, 48, 255], +"hsla(30 50% 37.5%)", [144, 96, 48, 255], +"hsla(60 50% 37.5%)", [144, 144, 48, 255], +"hsla(90 50% 37.5%)", [96, 144, 48, 255], +"hsla(120 50% 37.5%)", [48, 144, 48, 255], +"hsla(150 50% 37.5%)", [48, 144, 96, 255], +"hsla(180 50% 37.5%)", [48, 144, 144, 255], +"hsla(210 50% 37.5%)", [48, 96, 144, 255], +"hsla(240 50% 37.5%)", [48, 48, 144, 255], +"hsla(270 50% 37.5%)", [96, 48, 144, 255], +"hsla(300 50% 37.5%)", [144, 48, 144, 255], +"hsla(330 50% 37.5%)", [144, 48, 96, 255], +"hsla(0 62.5% 37.5%)", [156, 36, 36, 255], +"hsla(30 62.5% 37.5%)", [156, 96, 36, 255], +"hsla(60 62.5% 37.5%)", [156, 156, 36, 255], +"hsla(90 62.5% 37.5%)", [96, 156, 36, 255], +"hsla(120 62.5% 37.5%)", [36, 156, 36, 255], +"hsla(150 62.5% 37.5%)", [36, 156, 96, 255], +"hsla(180 62.5% 37.5%)", [36, 156, 156, 255], +"hsla(210 62.5% 37.5%)", [36, 96, 156, 255], +"hsla(240 62.5% 37.5%)", [36, 36, 156, 255], +"hsla(270 62.5% 37.5%)", [96, 36, 156, 255], +"hsla(300 62.5% 37.5%)", [156, 36, 156, 255], +"hsla(330 62.5% 37.5%)", [156, 36, 96, 255], +"hsla(0 75% 37.5%)", [168, 24, 24, 255], +"hsla(30 75% 37.5%)", [168, 96, 24, 255], +"hsla(60 75% 37.5%)", [168, 168, 24, 255], +"hsla(90 75% 37.5%)", [96, 168, 24, 255], +"hsla(120 75% 37.5%)", [24, 168, 24, 255], +"hsla(150 75% 37.5%)", [24, 168, 96, 255], +"hsla(180 75% 37.5%)", [24, 168, 168, 255], +"hsla(210 75% 37.5%)", [24, 96, 168, 255], +"hsla(240 75% 37.5%)", [24, 24, 168, 255], +"hsla(270 75% 37.5%)", [96, 24, 168, 255], +"hsla(300 75% 37.5%)", [168, 24, 168, 255], +"hsla(330 75% 37.5%)", [168, 24, 96, 255], +"hsla(0 87.5% 37.5%)", [180, 12, 12, 255], +"hsla(30 87.5% 37.5%)", [180, 96, 12, 255], +"hsla(60 87.5% 37.5%)", [180, 180, 12, 255], +"hsla(90 87.5% 37.5%)", [96, 180, 12, 255], +"hsla(120 87.5% 37.5%)", [12, 180, 12, 255], +"hsla(150 87.5% 37.5%)", [12, 180, 96, 255], +"hsla(180 87.5% 37.5%)", [12, 180, 180, 255], +"hsla(210 87.5% 37.5%)", [12, 96, 180, 255], +"hsla(240 87.5% 37.5%)", [12, 12, 180, 255], +"hsla(270 87.5% 37.5%)", [96, 12, 180, 255], +"hsla(300 87.5% 37.5%)", [180, 12, 180, 255], +"hsla(330 87.5% 37.5%)", [180, 12, 96, 255], +"hsla(0 100% 37.5%)", [192, 0, 0, 255], +"hsla(30 100% 37.5%)", [192, 96, 0, 255], +"hsla(60 100% 37.5%)", [192, 192, 0, 255], +"hsla(90 100% 37.5%)", [96, 192, 0, 255], +"hsla(120 100% 37.5%)", [0, 192, 0, 255], +"hsla(150 100% 37.5%)", [0, 192, 96, 255], +"hsla(180 100% 37.5%)", [0, 192, 192, 255], +"hsla(210 100% 37.5%)", [0, 96, 192, 255], +"hsla(240 100% 37.5%)", [0, 0, 192, 255], +"hsla(270 100% 37.5%)", [96, 0, 192, 255], +"hsla(300 100% 37.5%)", [192, 0, 192, 255], +"hsla(330 100% 37.5%)", [192, 0, 96, 255], +"hsla(0 0% 50%)", [128, 128, 128, 255], +"hsla(30 0% 50%)", [128, 128, 128, 255], +"hsla(60 0% 50%)", [128, 128, 128, 255], +"hsla(90 0% 50%)", [128, 128, 128, 255], +"hsla(120 0% 50%)", [128, 128, 128, 255], +"hsla(150 0% 50%)", [128, 128, 128, 255], +"hsla(180 0% 50%)", [128, 128, 128, 255], +"hsla(210 0% 50%)", [128, 128, 128, 255], +"hsla(240 0% 50%)", [128, 128, 128, 255], +"hsla(270 0% 50%)", [128, 128, 128, 255], +"hsla(300 0% 50%)", [128, 128, 128, 255], +"hsla(330 0% 50%)", [128, 128, 128, 255], +"hsla(0 12.5% 50%)", [144, 112, 112, 255], +"hsla(30 12.5% 50%)", [144, 128, 112, 255], +"hsla(60 12.5% 50%)", [144, 144, 112, 255], +"hsla(90 12.5% 50%)", [128, 144, 112, 255], +"hsla(120 12.5% 50%)", [112, 144, 112, 255], +"hsla(150 12.5% 50%)", [112, 144, 128, 255], +"hsla(180 12.5% 50%)", [112, 144, 144, 255], +"hsla(210 12.5% 50%)", [112, 128, 144, 255], +"hsla(240 12.5% 50%)", [112, 112, 144, 255], +"hsla(270 12.5% 50%)", [128, 112, 144, 255], +"hsla(300 12.5% 50%)", [144, 112, 144, 255], +"hsla(330 12.5% 50%)", [144, 112, 128, 255], +"hsla(0 25% 50%)", [160, 96, 96, 255], +"hsla(30 25% 50%)", [160, 128, 96, 255], +"hsla(60 25% 50%)", [160, 160, 96, 255], +"hsla(90 25% 50%)", [128, 160, 96, 255], +"hsla(120 25% 50%)", [96, 160, 96, 255], +"hsla(150 25% 50%)", [96, 160, 128, 255], +"hsla(180 25% 50%)", [96, 160, 160, 255], +"hsla(210 25% 50%)", [96, 128, 160, 255], +"hsla(240 25% 50%)", [96, 96, 160, 255], +"hsla(270 25% 50%)", [128, 96, 160, 255], +"hsla(300 25% 50%)", [160, 96, 160, 255], +"hsla(330 25% 50%)", [160, 96, 128, 255], +"hsla(0 37.5% 50%)", [176, 80, 80, 255], +"hsla(30 37.5% 50%)", [176, 128, 80, 255], +"hsla(60 37.5% 50%)", [176, 176, 80, 255], +"hsla(90 37.5% 50%)", [128, 176, 80, 255], +"hsla(120 37.5% 50%)", [80, 176, 80, 255], +"hsla(150 37.5% 50%)", [80, 176, 128, 255], +"hsla(180 37.5% 50%)", [80, 176, 176, 255], +"hsla(210 37.5% 50%)", [80, 128, 176, 255], +"hsla(240 37.5% 50%)", [80, 80, 176, 255], +"hsla(270 37.5% 50%)", [128, 80, 176, 255], +"hsla(300 37.5% 50%)", [176, 80, 176, 255], +"hsla(330 37.5% 50%)", [176, 80, 128, 255], +"hsla(0 50% 50%)", [192, 64, 64, 255], +"hsla(30 50% 50%)", [192, 128, 64, 255], +"hsla(60 50% 50%)", [192, 192, 64, 255], +"hsla(90 50% 50%)", [128, 192, 64, 255], +"hsla(120 50% 50%)", [64, 192, 64, 255], +"hsla(150 50% 50%)", [64, 192, 128, 255], +"hsla(180 50% 50%)", [64, 192, 192, 255], +"hsla(210 50% 50%)", [64, 128, 192, 255], +"hsla(240 50% 50%)", [64, 64, 192, 255], +"hsla(270 50% 50%)", [128, 64, 192, 255], +"hsla(300 50% 50%)", [192, 64, 192, 255], +"hsla(330 50% 50%)", [192, 64, 128, 255], +"hsla(0 62.5% 50%)", [208, 48, 48, 255], +"hsla(30 62.5% 50%)", [208, 128, 48, 255], +"hsla(60 62.5% 50%)", [208, 208, 48, 255], +"hsla(90 62.5% 50%)", [128, 208, 48, 255], +"hsla(120 62.5% 50%)", [48, 208, 48, 255], +"hsla(150 62.5% 50%)", [48, 208, 128, 255], +"hsla(180 62.5% 50%)", [48, 208, 208, 255], +"hsla(210 62.5% 50%)", [48, 128, 208, 255], +"hsla(240 62.5% 50%)", [48, 48, 208, 255], +"hsla(270 62.5% 50%)", [128, 48, 208, 255], +"hsla(300 62.5% 50%)", [208, 48, 208, 255], +"hsla(330 62.5% 50%)", [208, 48, 128, 255], +"hsla(0 75% 50%)", [224, 32, 32, 255], +"hsla(30 75% 50%)", [224, 128, 32, 255], +"hsla(60 75% 50%)", [224, 224, 32, 255], +"hsla(90 75% 50%)", [128, 224, 32, 255], +"hsla(120 75% 50%)", [32, 224, 32, 255], +"hsla(150 75% 50%)", [32, 224, 128, 255], +"hsla(180 75% 50%)", [32, 224, 224, 255], +"hsla(210 75% 50%)", [32, 128, 224, 255], +"hsla(240 75% 50%)", [32, 32, 224, 255], +"hsla(270 75% 50%)", [128, 32, 224, 255], +"hsla(300 75% 50%)", [224, 32, 224, 255], +"hsla(330 75% 50%)", [224, 32, 128, 255], +"hsla(0 87.5% 50%)", [240, 16, 16, 255], +"hsla(30 87.5% 50%)", [240, 128, 16, 255], +"hsla(60 87.5% 50%)", [240, 240, 16, 255], +"hsla(90 87.5% 50%)", [128, 240, 16, 255], +"hsla(120 87.5% 50%)", [16, 240, 16, 255], +"hsla(150 87.5% 50%)", [16, 240, 128, 255], +"hsla(180 87.5% 50%)", [16, 240, 240, 255], +"hsla(210 87.5% 50%)", [16, 128, 240, 255], +"hsla(240 87.5% 50%)", [16, 16, 240, 255], +"hsla(270 87.5% 50%)", [128, 16, 240, 255], +"hsla(300 87.5% 50%)", [240, 16, 240, 255], +"hsla(330 87.5% 50%)", [240, 16, 128, 255], +"hsla(0 100% 50%)", [255, 0, 0, 255], +"hsla(30 100% 50%)", [255, 128, 0, 255], +"hsla(60 100% 50%)", [255, 255, 0, 255], +"hsla(90 100% 50%)", [128, 255, 0, 255], +"hsla(120 100% 50%)", [0, 255, 0, 255], +"hsla(150 100% 50%)", [0, 255, 128, 255], +"hsla(180 100% 50%)", [0, 255, 255, 255], +"hsla(210 100% 50%)", [0, 128, 255, 255], +"hsla(240 100% 50%)", [0, 0, 255, 255], +"hsla(270 100% 50%)", [128, 0, 255, 255], +"hsla(300 100% 50%)", [255, 0, 255, 255], +"hsla(330 100% 50%)", [255, 0, 128, 255], +"hsla(0 0% 62.5%)", [160, 160, 160, 255], +"hsla(30 0% 62.5%)", [160, 160, 160, 255], +"hsla(60 0% 62.5%)", [160, 160, 160, 255], +"hsla(90 0% 62.5%)", [160, 160, 160, 255], +"hsla(120 0% 62.5%)", [160, 160, 160, 255], +"hsla(150 0% 62.5%)", [160, 160, 160, 255], +"hsla(180 0% 62.5%)", [160, 160, 160, 255], +"hsla(210 0% 62.5%)", [160, 160, 160, 255], +"hsla(240 0% 62.5%)", [160, 160, 160, 255], +"hsla(270 0% 62.5%)", [160, 160, 160, 255], +"hsla(300 0% 62.5%)", [160, 160, 160, 255], +"hsla(330 0% 62.5%)", [160, 160, 160, 255], +"hsla(0 12.5% 62.5%)", [172, 148, 148, 255], +"hsla(30 12.5% 62.5%)", [172, 160, 148, 255], +"hsla(60 12.5% 62.5%)", [172, 172, 148, 255], +"hsla(90 12.5% 62.5%)", [160, 172, 148, 255], +"hsla(120 12.5% 62.5%)", [148, 172, 148, 255], +"hsla(150 12.5% 62.5%)", [148, 172, 160, 255], +"hsla(180 12.5% 62.5%)", [148, 172, 172, 255], +"hsla(210 12.5% 62.5%)", [148, 160, 172, 255], +"hsla(240 12.5% 62.5%)", [148, 148, 172, 255], +"hsla(270 12.5% 62.5%)", [160, 148, 172, 255], +"hsla(300 12.5% 62.5%)", [172, 148, 172, 255], +"hsla(330 12.5% 62.5%)", [172, 148, 160, 255], +"hsla(0 25% 62.5%)", [184, 136, 136, 255], +"hsla(30 25% 62.5%)", [184, 160, 136, 255], +"hsla(60 25% 62.5%)", [184, 184, 136, 255], +"hsla(90 25% 62.5%)", [160, 184, 136, 255], +"hsla(120 25% 62.5%)", [136, 184, 136, 255], +"hsla(150 25% 62.5%)", [136, 184, 160, 255], +"hsla(180 25% 62.5%)", [136, 184, 184, 255], +"hsla(210 25% 62.5%)", [136, 160, 184, 255], +"hsla(240 25% 62.5%)", [136, 136, 184, 255], +"hsla(270 25% 62.5%)", [160, 136, 184, 255], +"hsla(300 25% 62.5%)", [184, 136, 184, 255], +"hsla(330 25% 62.5%)", [184, 136, 160, 255], +"hsla(0 37.5% 62.5%)", [196, 124, 124, 255], +"hsla(30 37.5% 62.5%)", [196, 160, 124, 255], +"hsla(60 37.5% 62.5%)", [196, 196, 124, 255], +"hsla(90 37.5% 62.5%)", [160, 196, 124, 255], +"hsla(120 37.5% 62.5%)", [124, 196, 124, 255], +"hsla(150 37.5% 62.5%)", [124, 196, 160, 255], +"hsla(180 37.5% 62.5%)", [124, 196, 196, 255], +"hsla(210 37.5% 62.5%)", [124, 160, 196, 255], +"hsla(240 37.5% 62.5%)", [124, 124, 196, 255], +"hsla(270 37.5% 62.5%)", [160, 124, 196, 255], +"hsla(300 37.5% 62.5%)", [196, 124, 196, 255], +"hsla(330 37.5% 62.5%)", [196, 124, 160, 255], +"hsla(0 50% 62.5%)", [208, 112, 112, 255], +"hsla(30 50% 62.5%)", [208, 160, 112, 255], +"hsla(60 50% 62.5%)", [208, 208, 112, 255], +"hsla(90 50% 62.5%)", [160, 208, 112, 255], +"hsla(120 50% 62.5%)", [112, 208, 112, 255], +"hsla(150 50% 62.5%)", [112, 208, 160, 255], +"hsla(180 50% 62.5%)", [112, 208, 208, 255], +"hsla(210 50% 62.5%)", [112, 160, 208, 255], +"hsla(240 50% 62.5%)", [112, 112, 208, 255], +"hsla(270 50% 62.5%)", [160, 112, 208, 255], +"hsla(300 50% 62.5%)", [208, 112, 208, 255], +"hsla(330 50% 62.5%)", [208, 112, 160, 255], +"hsla(0 62.5% 62.5%)", [220, 100, 100, 255], +"hsla(30 62.5% 62.5%)", [220, 160, 100, 255], +"hsla(60 62.5% 62.5%)", [220, 220, 100, 255], +"hsla(90 62.5% 62.5%)", [160, 220, 100, 255], +"hsla(120 62.5% 62.5%)", [100, 220, 100, 255], +"hsla(150 62.5% 62.5%)", [100, 220, 160, 255], +"hsla(180 62.5% 62.5%)", [100, 220, 220, 255], +"hsla(210 62.5% 62.5%)", [100, 160, 220, 255], +"hsla(240 62.5% 62.5%)", [100, 100, 220, 255], +"hsla(270 62.5% 62.5%)", [160, 100, 220, 255], +"hsla(300 62.5% 62.5%)", [220, 100, 220, 255], +"hsla(330 62.5% 62.5%)", [220, 100, 160, 255], +"hsla(0 75% 62.5%)", [232, 88, 88, 255], +"hsla(30 75% 62.5%)", [232, 160, 88, 255], +"hsla(60 75% 62.5%)", [232, 232, 88, 255], +"hsla(90 75% 62.5%)", [160, 232, 88, 255], +"hsla(120 75% 62.5%)", [88, 232, 88, 255], +"hsla(150 75% 62.5%)", [88, 232, 160, 255], +"hsla(180 75% 62.5%)", [88, 232, 232, 255], +"hsla(210 75% 62.5%)", [88, 160, 232, 255], +"hsla(240 75% 62.5%)", [88, 88, 232, 255], +"hsla(270 75% 62.5%)", [160, 88, 232, 255], +"hsla(300 75% 62.5%)", [232, 88, 232, 255], +"hsla(330 75% 62.5%)", [232, 88, 160, 255], +"hsla(0 87.5% 62.5%)", [244, 76, 76, 255], +"hsla(30 87.5% 62.5%)", [244, 160, 76, 255], +"hsla(60 87.5% 62.5%)", [244, 244, 76, 255], +"hsla(90 87.5% 62.5%)", [160, 244, 76, 255], +"hsla(120 87.5% 62.5%)", [76, 244, 76, 255], +"hsla(150 87.5% 62.5%)", [76, 244, 160, 255], +"hsla(180 87.5% 62.5%)", [76, 244, 244, 255], +"hsla(210 87.5% 62.5%)", [76, 160, 244, 255], +"hsla(240 87.5% 62.5%)", [76, 76, 244, 255], +"hsla(270 87.5% 62.5%)", [160, 76, 244, 255], +"hsla(300 87.5% 62.5%)", [244, 76, 244, 255], +"hsla(330 87.5% 62.5%)", [244, 76, 160, 255], +"hsla(0 100% 62.5%)", [255, 64, 64, 255], +"hsla(30 100% 62.5%)", [255, 160, 64, 255], +"hsla(60 100% 62.5%)", [255, 255, 64, 255], +"hsla(90 100% 62.5%)", [160, 255, 64, 255], +"hsla(120 100% 62.5%)", [64, 255, 64, 255], +"hsla(150 100% 62.5%)", [64, 255, 160, 255], +"hsla(180 100% 62.5%)", [64, 255, 255, 255], +"hsla(210 100% 62.5%)", [64, 160, 255, 255], +"hsla(240 100% 62.5%)", [64, 64, 255, 255], +"hsla(270 100% 62.5%)", [160, 64, 255, 255], +"hsla(300 100% 62.5%)", [255, 64, 255, 255], +"hsla(330 100% 62.5%)", [255, 64, 160, 255], +"hsla(0 0% 75%)", [192, 192, 192, 255], +"hsla(30 0% 75%)", [192, 192, 192, 255], +"hsla(60 0% 75%)", [192, 192, 192, 255], +"hsla(90 0% 75%)", [192, 192, 192, 255], +"hsla(120 0% 75%)", [192, 192, 192, 255], +"hsla(150 0% 75%)", [192, 192, 192, 255], +"hsla(180 0% 75%)", [192, 192, 192, 255], +"hsla(210 0% 75%)", [192, 192, 192, 255], +"hsla(240 0% 75%)", [192, 192, 192, 255], +"hsla(270 0% 75%)", [192, 192, 192, 255], +"hsla(300 0% 75%)", [192, 192, 192, 255], +"hsla(330 0% 75%)", [192, 192, 192, 255], +"hsla(0 12.5% 75%)", [200, 184, 184, 255], +"hsla(30 12.5% 75%)", [200, 192, 184, 255], +"hsla(60 12.5% 75%)", [200, 200, 184, 255], +"hsla(90 12.5% 75%)", [192, 200, 184, 255], +"hsla(120 12.5% 75%)", [184, 200, 184, 255], +"hsla(150 12.5% 75%)", [184, 200, 192, 255], +"hsla(180 12.5% 75%)", [184, 200, 200, 255], +"hsla(210 12.5% 75%)", [184, 192, 200, 255], +"hsla(240 12.5% 75%)", [184, 184, 200, 255], +"hsla(270 12.5% 75%)", [192, 184, 200, 255], +"hsla(300 12.5% 75%)", [200, 184, 200, 255], +"hsla(330 12.5% 75%)", [200, 184, 192, 255], +"hsla(0 25% 75%)", [208, 176, 176, 255], +"hsla(30 25% 75%)", [208, 192, 176, 255], +"hsla(60 25% 75%)", [208, 208, 176, 255], +"hsla(90 25% 75%)", [192, 208, 176, 255], +"hsla(120 25% 75%)", [176, 208, 176, 255], +"hsla(150 25% 75%)", [176, 208, 192, 255], +"hsla(180 25% 75%)", [176, 208, 208, 255], +"hsla(210 25% 75%)", [176, 192, 208, 255], +"hsla(240 25% 75%)", [176, 176, 208, 255], +"hsla(270 25% 75%)", [192, 176, 208, 255], +"hsla(300 25% 75%)", [208, 176, 208, 255], +"hsla(330 25% 75%)", [208, 176, 192, 255], +"hsla(0 37.5% 75%)", [216, 168, 168, 255], +"hsla(30 37.5% 75%)", [216, 192, 168, 255], +"hsla(60 37.5% 75%)", [216, 216, 168, 255], +"hsla(90 37.5% 75%)", [192, 216, 168, 255], +"hsla(120 37.5% 75%)", [168, 216, 168, 255], +"hsla(150 37.5% 75%)", [168, 216, 192, 255], +"hsla(180 37.5% 75%)", [168, 216, 216, 255], +"hsla(210 37.5% 75%)", [168, 192, 216, 255], +"hsla(240 37.5% 75%)", [168, 168, 216, 255], +"hsla(270 37.5% 75%)", [192, 168, 216, 255], +"hsla(300 37.5% 75%)", [216, 168, 216, 255], +"hsla(330 37.5% 75%)", [216, 168, 192, 255], +"hsla(0 50% 75%)", [224, 160, 160, 255], +"hsla(30 50% 75%)", [224, 192, 160, 255], +"hsla(60 50% 75%)", [224, 224, 160, 255], +"hsla(90 50% 75%)", [192, 224, 160, 255], +"hsla(120 50% 75%)", [160, 224, 160, 255], +"hsla(150 50% 75%)", [160, 224, 192, 255], +"hsla(180 50% 75%)", [160, 224, 224, 255], +"hsla(210 50% 75%)", [160, 192, 224, 255], +"hsla(240 50% 75%)", [160, 160, 224, 255], +"hsla(270 50% 75%)", [192, 160, 224, 255], +"hsla(300 50% 75%)", [224, 160, 224, 255], +"hsla(330 50% 75%)", [224, 160, 192, 255], +"hsla(0 62.5% 75%)", [232, 152, 152, 255], +"hsla(30 62.5% 75%)", [232, 192, 152, 255], +"hsla(60 62.5% 75%)", [232, 232, 152, 255], +"hsla(90 62.5% 75%)", [192, 232, 152, 255], +"hsla(120 62.5% 75%)", [152, 232, 152, 255], +"hsla(150 62.5% 75%)", [152, 232, 192, 255], +"hsla(180 62.5% 75%)", [152, 232, 232, 255], +"hsla(210 62.5% 75%)", [152, 192, 232, 255], +"hsla(240 62.5% 75%)", [152, 152, 232, 255], +"hsla(270 62.5% 75%)", [192, 152, 232, 255], +"hsla(300 62.5% 75%)", [232, 152, 232, 255], +"hsla(330 62.5% 75%)", [232, 152, 192, 255], +"hsla(0 75% 75%)", [240, 144, 144, 255], +"hsla(30 75% 75%)", [240, 192, 144, 255], +"hsla(60 75% 75%)", [240, 240, 144, 255], +"hsla(90 75% 75%)", [192, 240, 144, 255], +"hsla(120 75% 75%)", [144, 240, 144, 255], +"hsla(150 75% 75%)", [144, 240, 192, 255], +"hsla(180 75% 75%)", [144, 240, 240, 255], +"hsla(210 75% 75%)", [144, 192, 240, 255], +"hsla(240 75% 75%)", [144, 144, 240, 255], +"hsla(270 75% 75%)", [192, 144, 240, 255], +"hsla(300 75% 75%)", [240, 144, 240, 255], +"hsla(330 75% 75%)", [240, 144, 192, 255], +"hsla(0 87.5% 75%)", [248, 136, 136, 255], +"hsla(30 87.5% 75%)", [248, 192, 136, 255], +"hsla(60 87.5% 75%)", [248, 248, 136, 255], +"hsla(90 87.5% 75%)", [192, 248, 136, 255], +"hsla(120 87.5% 75%)", [136, 248, 136, 255], +"hsla(150 87.5% 75%)", [136, 248, 192, 255], +"hsla(180 87.5% 75%)", [136, 248, 248, 255], +"hsla(210 87.5% 75%)", [136, 192, 248, 255], +"hsla(240 87.5% 75%)", [136, 136, 248, 255], +"hsla(270 87.5% 75%)", [192, 136, 248, 255], +"hsla(300 87.5% 75%)", [248, 136, 248, 255], +"hsla(330 87.5% 75%)", [248, 136, 192, 255], +"hsla(0 100% 75%)", [255, 128, 128, 255], +"hsla(30 100% 75%)", [255, 192, 128, 255], +"hsla(60 100% 75%)", [255, 255, 128, 255], +"hsla(90 100% 75%)", [192, 255, 128, 255], +"hsla(120 100% 75%)", [128, 255, 128, 255], +"hsla(150 100% 75%)", [128, 255, 192, 255], +"hsla(180 100% 75%)", [128, 255, 255, 255], +"hsla(210 100% 75%)", [128, 192, 255, 255], +"hsla(240 100% 75%)", [128, 128, 255, 255], +"hsla(270 100% 75%)", [192, 128, 255, 255], +"hsla(300 100% 75%)", [255, 128, 255, 255], +"hsla(330 100% 75%)", [255, 128, 192, 255], +"hsla(0 0% 87.5%)", [224, 224, 224, 255], +"hsla(30 0% 87.5%)", [224, 224, 224, 255], +"hsla(60 0% 87.5%)", [224, 224, 224, 255], +"hsla(90 0% 87.5%)", [224, 224, 224, 255], +"hsla(120 0% 87.5%)", [224, 224, 224, 255], +"hsla(150 0% 87.5%)", [224, 224, 224, 255], +"hsla(180 0% 87.5%)", [224, 224, 224, 255], +"hsla(210 0% 87.5%)", [224, 224, 224, 255], +"hsla(240 0% 87.5%)", [224, 224, 224, 255], +"hsla(270 0% 87.5%)", [224, 224, 224, 255], +"hsla(300 0% 87.5%)", [224, 224, 224, 255], +"hsla(330 0% 87.5%)", [224, 224, 224, 255], +"hsla(0 12.5% 87.5%)", [228, 220, 220, 255], +"hsla(30 12.5% 87.5%)", [228, 224, 220, 255], +"hsla(60 12.5% 87.5%)", [228, 228, 220, 255], +"hsla(90 12.5% 87.5%)", [224, 228, 220, 255], +"hsla(120 12.5% 87.5%)", [220, 228, 220, 255], +"hsla(150 12.5% 87.5%)", [220, 228, 224, 255], +"hsla(180 12.5% 87.5%)", [220, 228, 228, 255], +"hsla(210 12.5% 87.5%)", [220, 224, 228, 255], +"hsla(240 12.5% 87.5%)", [220, 220, 228, 255], +"hsla(270 12.5% 87.5%)", [224, 220, 228, 255], +"hsla(300 12.5% 87.5%)", [228, 220, 228, 255], +"hsla(330 12.5% 87.5%)", [228, 220, 224, 255], +"hsla(0 25% 87.5%)", [232, 216, 216, 255], +"hsla(30 25% 87.5%)", [232, 224, 216, 255], +"hsla(60 25% 87.5%)", [232, 232, 216, 255], +"hsla(90 25% 87.5%)", [224, 232, 216, 255], +"hsla(120 25% 87.5%)", [216, 232, 216, 255], +"hsla(150 25% 87.5%)", [216, 232, 224, 255], +"hsla(180 25% 87.5%)", [216, 232, 232, 255], +"hsla(210 25% 87.5%)", [216, 224, 232, 255], +"hsla(240 25% 87.5%)", [216, 216, 232, 255], +"hsla(270 25% 87.5%)", [224, 216, 232, 255], +"hsla(300 25% 87.5%)", [232, 216, 232, 255], +"hsla(330 25% 87.5%)", [232, 216, 224, 255], +"hsla(0 37.5% 87.5%)", [236, 212, 212, 255], +"hsla(30 37.5% 87.5%)", [236, 224, 212, 255], +"hsla(60 37.5% 87.5%)", [236, 236, 212, 255], +"hsla(90 37.5% 87.5%)", [224, 236, 212, 255], +"hsla(120 37.5% 87.5%)", [212, 236, 212, 255], +"hsla(150 37.5% 87.5%)", [212, 236, 224, 255], +"hsla(180 37.5% 87.5%)", [212, 236, 236, 255], +"hsla(210 37.5% 87.5%)", [212, 224, 236, 255], +"hsla(240 37.5% 87.5%)", [212, 212, 236, 255], +"hsla(270 37.5% 87.5%)", [224, 212, 236, 255], +"hsla(300 37.5% 87.5%)", [236, 212, 236, 255], +"hsla(330 37.5% 87.5%)", [236, 212, 224, 255], +"hsla(0 50% 87.5%)", [240, 208, 208, 255], +"hsla(30 50% 87.5%)", [240, 224, 208, 255], +"hsla(60 50% 87.5%)", [240, 240, 208, 255], +"hsla(90 50% 87.5%)", [224, 240, 208, 255], +"hsla(120 50% 87.5%)", [208, 240, 208, 255], +"hsla(150 50% 87.5%)", [208, 240, 224, 255], +"hsla(180 50% 87.5%)", [208, 240, 240, 255], +"hsla(210 50% 87.5%)", [208, 224, 240, 255], +"hsla(240 50% 87.5%)", [208, 208, 240, 255], +"hsla(270 50% 87.5%)", [224, 208, 240, 255], +"hsla(300 50% 87.5%)", [240, 208, 240, 255], +"hsla(330 50% 87.5%)", [240, 208, 224, 255], +"hsla(0 62.5% 87.5%)", [244, 204, 204, 255], +"hsla(30 62.5% 87.5%)", [244, 224, 204, 255], +"hsla(60 62.5% 87.5%)", [244, 244, 204, 255], +"hsla(90 62.5% 87.5%)", [224, 244, 204, 255], +"hsla(120 62.5% 87.5%)", [204, 244, 204, 255], +"hsla(150 62.5% 87.5%)", [204, 244, 224, 255], +"hsla(180 62.5% 87.5%)", [204, 244, 244, 255], +"hsla(210 62.5% 87.5%)", [204, 224, 244, 255], +"hsla(240 62.5% 87.5%)", [204, 204, 244, 255], +"hsla(270 62.5% 87.5%)", [224, 204, 244, 255], +"hsla(300 62.5% 87.5%)", [244, 204, 244, 255], +"hsla(330 62.5% 87.5%)", [244, 204, 224, 255], +"hsla(0 75% 87.5%)", [248, 200, 200, 255], +"hsla(30 75% 87.5%)", [248, 224, 200, 255], +"hsla(60 75% 87.5%)", [248, 248, 200, 255], +"hsla(90 75% 87.5%)", [224, 248, 200, 255], +"hsla(120 75% 87.5%)", [200, 248, 200, 255], +"hsla(150 75% 87.5%)", [200, 248, 224, 255], +"hsla(180 75% 87.5%)", [200, 248, 248, 255], +"hsla(210 75% 87.5%)", [200, 224, 248, 255], +"hsla(240 75% 87.5%)", [200, 200, 248, 255], +"hsla(270 75% 87.5%)", [224, 200, 248, 255], +"hsla(300 75% 87.5%)", [248, 200, 248, 255], +"hsla(330 75% 87.5%)", [248, 200, 224, 255], +"hsla(0 87.5% 87.5%)", [252, 196, 196, 255], +"hsla(30 87.5% 87.5%)", [252, 224, 196, 255], +"hsla(60 87.5% 87.5%)", [252, 252, 196, 255], +"hsla(90 87.5% 87.5%)", [224, 252, 196, 255], +"hsla(120 87.5% 87.5%)", [196, 252, 196, 255], +"hsla(150 87.5% 87.5%)", [196, 252, 224, 255], +"hsla(180 87.5% 87.5%)", [196, 252, 252, 255], +"hsla(210 87.5% 87.5%)", [196, 224, 252, 255], +"hsla(240 87.5% 87.5%)", [196, 196, 252, 255], +"hsla(270 87.5% 87.5%)", [224, 196, 252, 255], +"hsla(300 87.5% 87.5%)", [252, 196, 252, 255], +"hsla(330 87.5% 87.5%)", [252, 196, 224, 255], +"hsla(0 100% 87.5%)", [255, 192, 192, 255], +"hsla(30 100% 87.5%)", [255, 224, 192, 255], +"hsla(60 100% 87.5%)", [255, 255, 192, 255], +"hsla(90 100% 87.5%)", [224, 255, 192, 255], +"hsla(120 100% 87.5%)", [192, 255, 192, 255], +"hsla(150 100% 87.5%)", [192, 255, 224, 255], +"hsla(180 100% 87.5%)", [192, 255, 255, 255], +"hsla(210 100% 87.5%)", [192, 224, 255, 255], +"hsla(240 100% 87.5%)", [192, 192, 255, 255], +"hsla(270 100% 87.5%)", [224, 192, 255, 255], +"hsla(300 100% 87.5%)", [255, 192, 255, 255], +"hsla(330 100% 87.5%)", [255, 192, 224, 255], +"hsla(0 0% 100%)", [255, 255, 255, 255], +"hsla(30 0% 100%)", [255, 255, 255, 255], +"hsla(60 0% 100%)", [255, 255, 255, 255], +"hsla(90 0% 100%)", [255, 255, 255, 255], +"hsla(120 0% 100%)", [255, 255, 255, 255], +"hsla(150 0% 100%)", [255, 255, 255, 255], +"hsla(180 0% 100%)", [255, 255, 255, 255], +"hsla(210 0% 100%)", [255, 255, 255, 255], +"hsla(240 0% 100%)", [255, 255, 255, 255], +"hsla(270 0% 100%)", [255, 255, 255, 255], +"hsla(300 0% 100%)", [255, 255, 255, 255], +"hsla(330 0% 100%)", [255, 255, 255, 255], +"hsla(0 12.5% 100%)", [255, 255, 255, 255], +"hsla(30 12.5% 100%)", [255, 255, 255, 255], +"hsla(60 12.5% 100%)", [255, 255, 255, 255], +"hsla(90 12.5% 100%)", [255, 255, 255, 255], +"hsla(120 12.5% 100%)", [255, 255, 255, 255], +"hsla(150 12.5% 100%)", [255, 255, 255, 255], +"hsla(180 12.5% 100%)", [255, 255, 255, 255], +"hsla(210 12.5% 100%)", [255, 255, 255, 255], +"hsla(240 12.5% 100%)", [255, 255, 255, 255], +"hsla(270 12.5% 100%)", [255, 255, 255, 255], +"hsla(300 12.5% 100%)", [255, 255, 255, 255], +"hsla(330 12.5% 100%)", [255, 255, 255, 255], +"hsla(0 25% 100%)", [255, 255, 255, 255], +"hsla(30 25% 100%)", [255, 255, 255, 255], +"hsla(60 25% 100%)", [255, 255, 255, 255], +"hsla(90 25% 100%)", [255, 255, 255, 255], +"hsla(120 25% 100%)", [255, 255, 255, 255], +"hsla(150 25% 100%)", [255, 255, 255, 255], +"hsla(180 25% 100%)", [255, 255, 255, 255], +"hsla(210 25% 100%)", [255, 255, 255, 255], +"hsla(240 25% 100%)", [255, 255, 255, 255], +"hsla(270 25% 100%)", [255, 255, 255, 255], +"hsla(300 25% 100%)", [255, 255, 255, 255], +"hsla(330 25% 100%)", [255, 255, 255, 255], +"hsla(0 37.5% 100%)", [255, 255, 255, 255], +"hsla(30 37.5% 100%)", [255, 255, 255, 255], +"hsla(60 37.5% 100%)", [255, 255, 255, 255], +"hsla(90 37.5% 100%)", [255, 255, 255, 255], +"hsla(120 37.5% 100%)", [255, 255, 255, 255], +"hsla(150 37.5% 100%)", [255, 255, 255, 255], +"hsla(180 37.5% 100%)", [255, 255, 255, 255], +"hsla(210 37.5% 100%)", [255, 255, 255, 255], +"hsla(240 37.5% 100%)", [255, 255, 255, 255], +"hsla(270 37.5% 100%)", [255, 255, 255, 255], +"hsla(300 37.5% 100%)", [255, 255, 255, 255], +"hsla(330 37.5% 100%)", [255, 255, 255, 255], +"hsla(0 50% 100%)", [255, 255, 255, 255], +"hsla(30 50% 100%)", [255, 255, 255, 255], +"hsla(60 50% 100%)", [255, 255, 255, 255], +"hsla(90 50% 100%)", [255, 255, 255, 255], +"hsla(120 50% 100%)", [255, 255, 255, 255], +"hsla(150 50% 100%)", [255, 255, 255, 255], +"hsla(180 50% 100%)", [255, 255, 255, 255], +"hsla(210 50% 100%)", [255, 255, 255, 255], +"hsla(240 50% 100%)", [255, 255, 255, 255], +"hsla(270 50% 100%)", [255, 255, 255, 255], +"hsla(300 50% 100%)", [255, 255, 255, 255], +"hsla(330 50% 100%)", [255, 255, 255, 255], +"hsla(0 62.5% 100%)", [255, 255, 255, 255], +"hsla(30 62.5% 100%)", [255, 255, 255, 255], +"hsla(60 62.5% 100%)", [255, 255, 255, 255], +"hsla(90 62.5% 100%)", [255, 255, 255, 255], +"hsla(120 62.5% 100%)", [255, 255, 255, 255], +"hsla(150 62.5% 100%)", [255, 255, 255, 255], +"hsla(180 62.5% 100%)", [255, 255, 255, 255], +"hsla(210 62.5% 100%)", [255, 255, 255, 255], +"hsla(240 62.5% 100%)", [255, 255, 255, 255], +"hsla(270 62.5% 100%)", [255, 255, 255, 255], +"hsla(300 62.5% 100%)", [255, 255, 255, 255], +"hsla(330 62.5% 100%)", [255, 255, 255, 255], +"hsla(0 75% 100%)", [255, 255, 255, 255], +"hsla(30 75% 100%)", [255, 255, 255, 255], +"hsla(60 75% 100%)", [255, 255, 255, 255], +"hsla(90 75% 100%)", [255, 255, 255, 255], +"hsla(120 75% 100%)", [255, 255, 255, 255], +"hsla(150 75% 100%)", [255, 255, 255, 255], +"hsla(180 75% 100%)", [255, 255, 255, 255], +"hsla(210 75% 100%)", [255, 255, 255, 255], +"hsla(240 75% 100%)", [255, 255, 255, 255], +"hsla(270 75% 100%)", [255, 255, 255, 255], +"hsla(300 75% 100%)", [255, 255, 255, 255], +"hsla(330 75% 100%)", [255, 255, 255, 255], +"hsla(0 87.5% 100%)", [255, 255, 255, 255], +"hsla(30 87.5% 100%)", [255, 255, 255, 255], +"hsla(60 87.5% 100%)", [255, 255, 255, 255], +"hsla(90 87.5% 100%)", [255, 255, 255, 255], +"hsla(120 87.5% 100%)", [255, 255, 255, 255], +"hsla(150 87.5% 100%)", [255, 255, 255, 255], +"hsla(180 87.5% 100%)", [255, 255, 255, 255], +"hsla(210 87.5% 100%)", [255, 255, 255, 255], +"hsla(240 87.5% 100%)", [255, 255, 255, 255], +"hsla(270 87.5% 100%)", [255, 255, 255, 255], +"hsla(300 87.5% 100%)", [255, 255, 255, 255], +"hsla(330 87.5% 100%)", [255, 255, 255, 255], +"hsla(0 100% 100%)", [255, 255, 255, 255], +"hsla(30 100% 100%)", [255, 255, 255, 255], +"hsla(60 100% 100%)", [255, 255, 255, 255], +"hsla(90 100% 100%)", [255, 255, 255, 255], +"hsla(120 100% 100%)", [255, 255, 255, 255], +"hsla(150 100% 100%)", [255, 255, 255, 255], +"hsla(180 100% 100%)", [255, 255, 255, 255], +"hsla(210 100% 100%)", [255, 255, 255, 255], +"hsla(240 100% 100%)", [255, 255, 255, 255], +"hsla(270 100% 100%)", [255, 255, 255, 255], +"hsla(300 100% 100%)", [255, 255, 255, 255], +"hsla(330 100% 100%)", [255, 255, 255, 255], +"hsla(0 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(30 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(60 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(90 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(120 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(150 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(180 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(210 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(240 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(270 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(300 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(330 0% 0% / 1.0)", [0, 0, 0, 255], +"hsla(0 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(30 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(60 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(90 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(120 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(150 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(180 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(210 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(240 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(270 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(300 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(330 12.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(0 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(30 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(60 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(90 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(120 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(150 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(180 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(210 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(240 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(270 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(300 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(330 25% 0% / 1.0)", [0, 0, 0, 255], +"hsla(0 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(30 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(60 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(90 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(120 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(150 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(180 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(210 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(240 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(270 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(300 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(330 37.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(0 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(30 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(60 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(90 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(120 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(150 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(180 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(210 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(240 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(270 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(300 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(330 50% 0% / 1.0)", [0, 0, 0, 255], +"hsla(0 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(30 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(60 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(90 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(120 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(150 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(180 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(210 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(240 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(270 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(300 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(330 62.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(0 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(30 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(60 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(90 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(120 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(150 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(180 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(210 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(240 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(270 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(300 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(330 75% 0% / 1.0)", [0, 0, 0, 255], +"hsla(0 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(30 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(60 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(90 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(120 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(150 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(180 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(210 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(240 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(270 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(300 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(330 87.5% 0% / 1.0)", [0, 0, 0, 255], +"hsla(0 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(30 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(60 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(90 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(120 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(150 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(180 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(210 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(240 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(270 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(300 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(330 100% 0% / 1.0)", [0, 0, 0, 255], +"hsla(0 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(30 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(60 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(90 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(120 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(150 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(180 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(210 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(240 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(270 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(300 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(330 0% 12.5% / 1.0)", [32, 32, 32, 255], +"hsla(0 12.5% 12.5% / 1.0)", [36, 28, 28, 255], +"hsla(30 12.5% 12.5% / 1.0)", [36, 32, 28, 255], +"hsla(60 12.5% 12.5% / 1.0)", [36, 36, 28, 255], +"hsla(90 12.5% 12.5% / 1.0)", [32, 36, 28, 255], +"hsla(120 12.5% 12.5% / 1.0)", [28, 36, 28, 255], +"hsla(150 12.5% 12.5% / 1.0)", [28, 36, 32, 255], +"hsla(180 12.5% 12.5% / 1.0)", [28, 36, 36, 255], +"hsla(210 12.5% 12.5% / 1.0)", [28, 32, 36, 255], +"hsla(240 12.5% 12.5% / 1.0)", [28, 28, 36, 255], +"hsla(270 12.5% 12.5% / 1.0)", [32, 28, 36, 255], +"hsla(300 12.5% 12.5% / 1.0)", [36, 28, 36, 255], +"hsla(330 12.5% 12.5% / 1.0)", [36, 28, 32, 255], +"hsla(0 25% 12.5% / 1.0)", [40, 24, 24, 255], +"hsla(30 25% 12.5% / 1.0)", [40, 32, 24, 255], +"hsla(60 25% 12.5% / 1.0)", [40, 40, 24, 255], +"hsla(90 25% 12.5% / 1.0)", [32, 40, 24, 255], +"hsla(120 25% 12.5% / 1.0)", [24, 40, 24, 255], +"hsla(150 25% 12.5% / 1.0)", [24, 40, 32, 255], +"hsla(180 25% 12.5% / 1.0)", [24, 40, 40, 255], +"hsla(210 25% 12.5% / 1.0)", [24, 32, 40, 255], +"hsla(240 25% 12.5% / 1.0)", [24, 24, 40, 255], +"hsla(270 25% 12.5% / 1.0)", [32, 24, 40, 255], +"hsla(300 25% 12.5% / 1.0)", [40, 24, 40, 255], +"hsla(330 25% 12.5% / 1.0)", [40, 24, 32, 255], +"hsla(0 37.5% 12.5% / 1.0)", [44, 20, 20, 255], +"hsla(30 37.5% 12.5% / 1.0)", [44, 32, 20, 255], +"hsla(60 37.5% 12.5% / 1.0)", [44, 44, 20, 255], +"hsla(90 37.5% 12.5% / 1.0)", [32, 44, 20, 255], +"hsla(120 37.5% 12.5% / 1.0)", [20, 44, 20, 255], +"hsla(150 37.5% 12.5% / 1.0)", [20, 44, 32, 255], +"hsla(180 37.5% 12.5% / 1.0)", [20, 44, 44, 255], +"hsla(210 37.5% 12.5% / 1.0)", [20, 32, 44, 255], +"hsla(240 37.5% 12.5% / 1.0)", [20, 20, 44, 255], +"hsla(270 37.5% 12.5% / 1.0)", [32, 20, 44, 255], +"hsla(300 37.5% 12.5% / 1.0)", [44, 20, 44, 255], +"hsla(330 37.5% 12.5% / 1.0)", [44, 20, 32, 255], +"hsla(0 50% 12.5% / 1.0)", [48, 16, 16, 255], +"hsla(30 50% 12.5% / 1.0)", [48, 32, 16, 255], +"hsla(60 50% 12.5% / 1.0)", [48, 48, 16, 255], +"hsla(90 50% 12.5% / 1.0)", [32, 48, 16, 255], +"hsla(120 50% 12.5% / 1.0)", [16, 48, 16, 255], +"hsla(150 50% 12.5% / 1.0)", [16, 48, 32, 255], +"hsla(180 50% 12.5% / 1.0)", [16, 48, 48, 255], +"hsla(210 50% 12.5% / 1.0)", [16, 32, 48, 255], +"hsla(240 50% 12.5% / 1.0)", [16, 16, 48, 255], +"hsla(270 50% 12.5% / 1.0)", [32, 16, 48, 255], +"hsla(300 50% 12.5% / 1.0)", [48, 16, 48, 255], +"hsla(330 50% 12.5% / 1.0)", [48, 16, 32, 255], +"hsla(0 62.5% 12.5% / 1.0)", [52, 12, 12, 255], +"hsla(30 62.5% 12.5% / 1.0)", [52, 32, 12, 255], +"hsla(60 62.5% 12.5% / 1.0)", [52, 52, 12, 255], +"hsla(90 62.5% 12.5% / 1.0)", [32, 52, 12, 255], +"hsla(120 62.5% 12.5% / 1.0)", [12, 52, 12, 255], +"hsla(150 62.5% 12.5% / 1.0)", [12, 52, 32, 255], +"hsla(180 62.5% 12.5% / 1.0)", [12, 52, 52, 255], +"hsla(210 62.5% 12.5% / 1.0)", [12, 32, 52, 255], +"hsla(240 62.5% 12.5% / 1.0)", [12, 12, 52, 255], +"hsla(270 62.5% 12.5% / 1.0)", [32, 12, 52, 255], +"hsla(300 62.5% 12.5% / 1.0)", [52, 12, 52, 255], +"hsla(330 62.5% 12.5% / 1.0)", [52, 12, 32, 255], +"hsla(0 75% 12.5% / 1.0)", [56, 8, 8, 255], +"hsla(30 75% 12.5% / 1.0)", [56, 32, 8, 255], +"hsla(60 75% 12.5% / 1.0)", [56, 56, 8, 255], +"hsla(90 75% 12.5% / 1.0)", [32, 56, 8, 255], +"hsla(120 75% 12.5% / 1.0)", [8, 56, 8, 255], +"hsla(150 75% 12.5% / 1.0)", [8, 56, 32, 255], +"hsla(180 75% 12.5% / 1.0)", [8, 56, 56, 255], +"hsla(210 75% 12.5% / 1.0)", [8, 32, 56, 255], +"hsla(240 75% 12.5% / 1.0)", [8, 8, 56, 255], +"hsla(270 75% 12.5% / 1.0)", [32, 8, 56, 255], +"hsla(300 75% 12.5% / 1.0)", [56, 8, 56, 255], +"hsla(330 75% 12.5% / 1.0)", [56, 8, 32, 255], +"hsla(0 87.5% 12.5% / 1.0)", [60, 4, 4, 255], +"hsla(30 87.5% 12.5% / 1.0)", [60, 32, 4, 255], +"hsla(60 87.5% 12.5% / 1.0)", [60, 60, 4, 255], +"hsla(90 87.5% 12.5% / 1.0)", [32, 60, 4, 255], +"hsla(120 87.5% 12.5% / 1.0)", [4, 60, 4, 255], +"hsla(150 87.5% 12.5% / 1.0)", [4, 60, 32, 255], +"hsla(180 87.5% 12.5% / 1.0)", [4, 60, 60, 255], +"hsla(210 87.5% 12.5% / 1.0)", [4, 32, 60, 255], +"hsla(240 87.5% 12.5% / 1.0)", [4, 4, 60, 255], +"hsla(270 87.5% 12.5% / 1.0)", [32, 4, 60, 255], +"hsla(300 87.5% 12.5% / 1.0)", [60, 4, 60, 255], +"hsla(330 87.5% 12.5% / 1.0)", [60, 4, 32, 255], +"hsla(0 100% 12.5% / 1.0)", [64, 0, 0, 255], +"hsla(30 100% 12.5% / 1.0)", [64, 32, 0, 255], +"hsla(60 100% 12.5% / 1.0)", [64, 64, 0, 255], +"hsla(90 100% 12.5% / 1.0)", [32, 64, 0, 255], +"hsla(120 100% 12.5% / 1.0)", [0, 64, 0, 255], +"hsla(150 100% 12.5% / 1.0)", [0, 64, 32, 255], +"hsla(180 100% 12.5% / 1.0)", [0, 64, 64, 255], +"hsla(210 100% 12.5% / 1.0)", [0, 32, 64, 255], +"hsla(240 100% 12.5% / 1.0)", [0, 0, 64, 255], +"hsla(270 100% 12.5% / 1.0)", [32, 0, 64, 255], +"hsla(300 100% 12.5% / 1.0)", [64, 0, 64, 255], +"hsla(330 100% 12.5% / 1.0)", [64, 0, 32, 255], +"hsla(0 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(30 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(60 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(90 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(120 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(150 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(180 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(210 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(240 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(270 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(300 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(330 0% 25% / 1.0)", [64, 64, 64, 255], +"hsla(0 12.5% 25% / 1.0)", [72, 56, 56, 255], +"hsla(30 12.5% 25% / 1.0)", [72, 64, 56, 255], +"hsla(60 12.5% 25% / 1.0)", [72, 72, 56, 255], +"hsla(90 12.5% 25% / 1.0)", [64, 72, 56, 255], +"hsla(120 12.5% 25% / 1.0)", [56, 72, 56, 255], +"hsla(150 12.5% 25% / 1.0)", [56, 72, 64, 255], +"hsla(180 12.5% 25% / 1.0)", [56, 72, 72, 255], +"hsla(210 12.5% 25% / 1.0)", [56, 64, 72, 255], +"hsla(240 12.5% 25% / 1.0)", [56, 56, 72, 255], +"hsla(270 12.5% 25% / 1.0)", [64, 56, 72, 255], +"hsla(300 12.5% 25% / 1.0)", [72, 56, 72, 255], +"hsla(330 12.5% 25% / 1.0)", [72, 56, 64, 255], +"hsla(0 25% 25% / 1.0)", [80, 48, 48, 255], +"hsla(30 25% 25% / 1.0)", [80, 64, 48, 255], +"hsla(60 25% 25% / 1.0)", [80, 80, 48, 255], +"hsla(90 25% 25% / 1.0)", [64, 80, 48, 255], +"hsla(120 25% 25% / 1.0)", [48, 80, 48, 255], +"hsla(150 25% 25% / 1.0)", [48, 80, 64, 255], +"hsla(180 25% 25% / 1.0)", [48, 80, 80, 255], +"hsla(210 25% 25% / 1.0)", [48, 64, 80, 255], +"hsla(240 25% 25% / 1.0)", [48, 48, 80, 255], +"hsla(270 25% 25% / 1.0)", [64, 48, 80, 255], +"hsla(300 25% 25% / 1.0)", [80, 48, 80, 255], +"hsla(330 25% 25% / 1.0)", [80, 48, 64, 255], +"hsla(0 37.5% 25% / 1.0)", [88, 40, 40, 255], +"hsla(30 37.5% 25% / 1.0)", [88, 64, 40, 255], +"hsla(60 37.5% 25% / 1.0)", [88, 88, 40, 255], +"hsla(90 37.5% 25% / 1.0)", [64, 88, 40, 255], +"hsla(120 37.5% 25% / 1.0)", [40, 88, 40, 255], +"hsla(150 37.5% 25% / 1.0)", [40, 88, 64, 255], +"hsla(180 37.5% 25% / 1.0)", [40, 88, 88, 255], +"hsla(210 37.5% 25% / 1.0)", [40, 64, 88, 255], +"hsla(240 37.5% 25% / 1.0)", [40, 40, 88, 255], +"hsla(270 37.5% 25% / 1.0)", [64, 40, 88, 255], +"hsla(300 37.5% 25% / 1.0)", [88, 40, 88, 255], +"hsla(330 37.5% 25% / 1.0)", [88, 40, 64, 255], +"hsla(0 50% 25% / 1.0)", [96, 32, 32, 255], +"hsla(30 50% 25% / 1.0)", [96, 64, 32, 255], +"hsla(60 50% 25% / 1.0)", [96, 96, 32, 255], +"hsla(90 50% 25% / 1.0)", [64, 96, 32, 255], +"hsla(120 50% 25% / 1.0)", [32, 96, 32, 255], +"hsla(150 50% 25% / 1.0)", [32, 96, 64, 255], +"hsla(180 50% 25% / 1.0)", [32, 96, 96, 255], +"hsla(210 50% 25% / 1.0)", [32, 64, 96, 255], +"hsla(240 50% 25% / 1.0)", [32, 32, 96, 255], +"hsla(270 50% 25% / 1.0)", [64, 32, 96, 255], +"hsla(300 50% 25% / 1.0)", [96, 32, 96, 255], +"hsla(330 50% 25% / 1.0)", [96, 32, 64, 255], +"hsla(0 62.5% 25% / 1.0)", [104, 24, 24, 255], +"hsla(30 62.5% 25% / 1.0)", [104, 64, 24, 255], +"hsla(60 62.5% 25% / 1.0)", [104, 104, 24, 255], +"hsla(90 62.5% 25% / 1.0)", [64, 104, 24, 255], +"hsla(120 62.5% 25% / 1.0)", [24, 104, 24, 255], +"hsla(150 62.5% 25% / 1.0)", [24, 104, 64, 255], +"hsla(180 62.5% 25% / 1.0)", [24, 104, 104, 255], +"hsla(210 62.5% 25% / 1.0)", [24, 64, 104, 255], +"hsla(240 62.5% 25% / 1.0)", [24, 24, 104, 255], +"hsla(270 62.5% 25% / 1.0)", [64, 24, 104, 255], +"hsla(300 62.5% 25% / 1.0)", [104, 24, 104, 255], +"hsla(330 62.5% 25% / 1.0)", [104, 24, 64, 255], +"hsla(0 75% 25% / 1.0)", [112, 16, 16, 255], +"hsla(30 75% 25% / 1.0)", [112, 64, 16, 255], +"hsla(60 75% 25% / 1.0)", [112, 112, 16, 255], +"hsla(90 75% 25% / 1.0)", [64, 112, 16, 255], +"hsla(120 75% 25% / 1.0)", [16, 112, 16, 255], +"hsla(150 75% 25% / 1.0)", [16, 112, 64, 255], +"hsla(180 75% 25% / 1.0)", [16, 112, 112, 255], +"hsla(210 75% 25% / 1.0)", [16, 64, 112, 255], +"hsla(240 75% 25% / 1.0)", [16, 16, 112, 255], +"hsla(270 75% 25% / 1.0)", [64, 16, 112, 255], +"hsla(300 75% 25% / 1.0)", [112, 16, 112, 255], +"hsla(330 75% 25% / 1.0)", [112, 16, 64, 255], +"hsla(0 87.5% 25% / 1.0)", [120, 8, 8, 255], +"hsla(30 87.5% 25% / 1.0)", [120, 64, 8, 255], +"hsla(60 87.5% 25% / 1.0)", [120, 120, 8, 255], +"hsla(90 87.5% 25% / 1.0)", [64, 120, 8, 255], +"hsla(120 87.5% 25% / 1.0)", [8, 120, 8, 255], +"hsla(150 87.5% 25% / 1.0)", [8, 120, 64, 255], +"hsla(180 87.5% 25% / 1.0)", [8, 120, 120, 255], +"hsla(210 87.5% 25% / 1.0)", [8, 64, 120, 255], +"hsla(240 87.5% 25% / 1.0)", [8, 8, 120, 255], +"hsla(270 87.5% 25% / 1.0)", [64, 8, 120, 255], +"hsla(300 87.5% 25% / 1.0)", [120, 8, 120, 255], +"hsla(330 87.5% 25% / 1.0)", [120, 8, 64, 255], +"hsla(0 100% 25% / 1.0)", [128, 0, 0, 255], +"hsla(30 100% 25% / 1.0)", [128, 64, 0, 255], +"hsla(60 100% 25% / 1.0)", [128, 128, 0, 255], +"hsla(90 100% 25% / 1.0)", [64, 128, 0, 255], +"hsla(120 100% 25% / 1.0)", [0, 128, 0, 255], +"hsla(150 100% 25% / 1.0)", [0, 128, 64, 255], +"hsla(180 100% 25% / 1.0)", [0, 128, 128, 255], +"hsla(210 100% 25% / 1.0)", [0, 64, 128, 255], +"hsla(240 100% 25% / 1.0)", [0, 0, 128, 255], +"hsla(270 100% 25% / 1.0)", [64, 0, 128, 255], +"hsla(300 100% 25% / 1.0)", [128, 0, 128, 255], +"hsla(330 100% 25% / 1.0)", [128, 0, 64, 255], +"hsla(0 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(30 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(60 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(90 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(120 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(150 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(180 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(210 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(240 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(270 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(300 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(330 0% 37.5% / 1.0)", [96, 96, 96, 255], +"hsla(0 12.5% 37.5% / 1.0)", [108, 84, 84, 255], +"hsla(30 12.5% 37.5% / 1.0)", [108, 96, 84, 255], +"hsla(60 12.5% 37.5% / 1.0)", [108, 108, 84, 255], +"hsla(90 12.5% 37.5% / 1.0)", [96, 108, 84, 255], +"hsla(120 12.5% 37.5% / 1.0)", [84, 108, 84, 255], +"hsla(150 12.5% 37.5% / 1.0)", [84, 108, 96, 255], +"hsla(180 12.5% 37.5% / 1.0)", [84, 108, 108, 255], +"hsla(210 12.5% 37.5% / 1.0)", [84, 96, 108, 255], +"hsla(240 12.5% 37.5% / 1.0)", [84, 84, 108, 255], +"hsla(270 12.5% 37.5% / 1.0)", [96, 84, 108, 255], +"hsla(300 12.5% 37.5% / 1.0)", [108, 84, 108, 255], +"hsla(330 12.5% 37.5% / 1.0)", [108, 84, 96, 255], +"hsla(0 25% 37.5% / 1.0)", [120, 72, 72, 255], +"hsla(30 25% 37.5% / 1.0)", [120, 96, 72, 255], +"hsla(60 25% 37.5% / 1.0)", [120, 120, 72, 255], +"hsla(90 25% 37.5% / 1.0)", [96, 120, 72, 255], +"hsla(120 25% 37.5% / 1.0)", [72, 120, 72, 255], +"hsla(150 25% 37.5% / 1.0)", [72, 120, 96, 255], +"hsla(180 25% 37.5% / 1.0)", [72, 120, 120, 255], +"hsla(210 25% 37.5% / 1.0)", [72, 96, 120, 255], +"hsla(240 25% 37.5% / 1.0)", [72, 72, 120, 255], +"hsla(270 25% 37.5% / 1.0)", [96, 72, 120, 255], +"hsla(300 25% 37.5% / 1.0)", [120, 72, 120, 255], +"hsla(330 25% 37.5% / 1.0)", [120, 72, 96, 255], +"hsla(0 37.5% 37.5% / 1.0)", [132, 60, 60, 255], +"hsla(30 37.5% 37.5% / 1.0)", [132, 96, 60, 255], +"hsla(60 37.5% 37.5% / 1.0)", [132, 132, 60, 255], +"hsla(90 37.5% 37.5% / 1.0)", [96, 132, 60, 255], +"hsla(120 37.5% 37.5% / 1.0)", [60, 132, 60, 255], +"hsla(150 37.5% 37.5% / 1.0)", [60, 132, 96, 255], +"hsla(180 37.5% 37.5% / 1.0)", [60, 132, 132, 255], +"hsla(210 37.5% 37.5% / 1.0)", [60, 96, 132, 255], +"hsla(240 37.5% 37.5% / 1.0)", [60, 60, 132, 255], +"hsla(270 37.5% 37.5% / 1.0)", [96, 60, 132, 255], +"hsla(300 37.5% 37.5% / 1.0)", [132, 60, 132, 255], +"hsla(330 37.5% 37.5% / 1.0)", [132, 60, 96, 255], +"hsla(0 50% 37.5% / 1.0)", [144, 48, 48, 255], +"hsla(30 50% 37.5% / 1.0)", [144, 96, 48, 255], +"hsla(60 50% 37.5% / 1.0)", [144, 144, 48, 255], +"hsla(90 50% 37.5% / 1.0)", [96, 144, 48, 255], +"hsla(120 50% 37.5% / 1.0)", [48, 144, 48, 255], +"hsla(150 50% 37.5% / 1.0)", [48, 144, 96, 255], +"hsla(180 50% 37.5% / 1.0)", [48, 144, 144, 255], +"hsla(210 50% 37.5% / 1.0)", [48, 96, 144, 255], +"hsla(240 50% 37.5% / 1.0)", [48, 48, 144, 255], +"hsla(270 50% 37.5% / 1.0)", [96, 48, 144, 255], +"hsla(300 50% 37.5% / 1.0)", [144, 48, 144, 255], +"hsla(330 50% 37.5% / 1.0)", [144, 48, 96, 255], +"hsla(0 62.5% 37.5% / 1.0)", [156, 36, 36, 255], +"hsla(30 62.5% 37.5% / 1.0)", [156, 96, 36, 255], +"hsla(60 62.5% 37.5% / 1.0)", [156, 156, 36, 255], +"hsla(90 62.5% 37.5% / 1.0)", [96, 156, 36, 255], +"hsla(120 62.5% 37.5% / 1.0)", [36, 156, 36, 255], +"hsla(150 62.5% 37.5% / 1.0)", [36, 156, 96, 255], +"hsla(180 62.5% 37.5% / 1.0)", [36, 156, 156, 255], +"hsla(210 62.5% 37.5% / 1.0)", [36, 96, 156, 255], +"hsla(240 62.5% 37.5% / 1.0)", [36, 36, 156, 255], +"hsla(270 62.5% 37.5% / 1.0)", [96, 36, 156, 255], +"hsla(300 62.5% 37.5% / 1.0)", [156, 36, 156, 255], +"hsla(330 62.5% 37.5% / 1.0)", [156, 36, 96, 255], +"hsla(0 75% 37.5% / 1.0)", [168, 24, 24, 255], +"hsla(30 75% 37.5% / 1.0)", [168, 96, 24, 255], +"hsla(60 75% 37.5% / 1.0)", [168, 168, 24, 255], +"hsla(90 75% 37.5% / 1.0)", [96, 168, 24, 255], +"hsla(120 75% 37.5% / 1.0)", [24, 168, 24, 255], +"hsla(150 75% 37.5% / 1.0)", [24, 168, 96, 255], +"hsla(180 75% 37.5% / 1.0)", [24, 168, 168, 255], +"hsla(210 75% 37.5% / 1.0)", [24, 96, 168, 255], +"hsla(240 75% 37.5% / 1.0)", [24, 24, 168, 255], +"hsla(270 75% 37.5% / 1.0)", [96, 24, 168, 255], +"hsla(300 75% 37.5% / 1.0)", [168, 24, 168, 255], +"hsla(330 75% 37.5% / 1.0)", [168, 24, 96, 255], +"hsla(0 87.5% 37.5% / 1.0)", [180, 12, 12, 255], +"hsla(30 87.5% 37.5% / 1.0)", [180, 96, 12, 255], +"hsla(60 87.5% 37.5% / 1.0)", [180, 180, 12, 255], +"hsla(90 87.5% 37.5% / 1.0)", [96, 180, 12, 255], +"hsla(120 87.5% 37.5% / 1.0)", [12, 180, 12, 255], +"hsla(150 87.5% 37.5% / 1.0)", [12, 180, 96, 255], +"hsla(180 87.5% 37.5% / 1.0)", [12, 180, 180, 255], +"hsla(210 87.5% 37.5% / 1.0)", [12, 96, 180, 255], +"hsla(240 87.5% 37.5% / 1.0)", [12, 12, 180, 255], +"hsla(270 87.5% 37.5% / 1.0)", [96, 12, 180, 255], +"hsla(300 87.5% 37.5% / 1.0)", [180, 12, 180, 255], +"hsla(330 87.5% 37.5% / 1.0)", [180, 12, 96, 255], +"hsla(0 100% 37.5% / 1.0)", [192, 0, 0, 255], +"hsla(30 100% 37.5% / 1.0)", [192, 96, 0, 255], +"hsla(60 100% 37.5% / 1.0)", [192, 192, 0, 255], +"hsla(90 100% 37.5% / 1.0)", [96, 192, 0, 255], +"hsla(120 100% 37.5% / 1.0)", [0, 192, 0, 255], +"hsla(150 100% 37.5% / 1.0)", [0, 192, 96, 255], +"hsla(180 100% 37.5% / 1.0)", [0, 192, 192, 255], +"hsla(210 100% 37.5% / 1.0)", [0, 96, 192, 255], +"hsla(240 100% 37.5% / 1.0)", [0, 0, 192, 255], +"hsla(270 100% 37.5% / 1.0)", [96, 0, 192, 255], +"hsla(300 100% 37.5% / 1.0)", [192, 0, 192, 255], +"hsla(330 100% 37.5% / 1.0)", [192, 0, 96, 255], +"hsla(0 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(30 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(60 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(90 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(120 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(150 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(180 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(210 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(240 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(270 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(300 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(330 0% 50% / 1.0)", [128, 128, 128, 255], +"hsla(0 12.5% 50% / 1.0)", [144, 112, 112, 255], +"hsla(30 12.5% 50% / 1.0)", [144, 128, 112, 255], +"hsla(60 12.5% 50% / 1.0)", [144, 144, 112, 255], +"hsla(90 12.5% 50% / 1.0)", [128, 144, 112, 255], +"hsla(120 12.5% 50% / 1.0)", [112, 144, 112, 255], +"hsla(150 12.5% 50% / 1.0)", [112, 144, 128, 255], +"hsla(180 12.5% 50% / 1.0)", [112, 144, 144, 255], +"hsla(210 12.5% 50% / 1.0)", [112, 128, 144, 255], +"hsla(240 12.5% 50% / 1.0)", [112, 112, 144, 255], +"hsla(270 12.5% 50% / 1.0)", [128, 112, 144, 255], +"hsla(300 12.5% 50% / 1.0)", [144, 112, 144, 255], +"hsla(330 12.5% 50% / 1.0)", [144, 112, 128, 255], +"hsla(0 25% 50% / 1.0)", [160, 96, 96, 255], +"hsla(30 25% 50% / 1.0)", [160, 128, 96, 255], +"hsla(60 25% 50% / 1.0)", [160, 160, 96, 255], +"hsla(90 25% 50% / 1.0)", [128, 160, 96, 255], +"hsla(120 25% 50% / 1.0)", [96, 160, 96, 255], +"hsla(150 25% 50% / 1.0)", [96, 160, 128, 255], +"hsla(180 25% 50% / 1.0)", [96, 160, 160, 255], +"hsla(210 25% 50% / 1.0)", [96, 128, 160, 255], +"hsla(240 25% 50% / 1.0)", [96, 96, 160, 255], +"hsla(270 25% 50% / 1.0)", [128, 96, 160, 255], +"hsla(300 25% 50% / 1.0)", [160, 96, 160, 255], +"hsla(330 25% 50% / 1.0)", [160, 96, 128, 255], +"hsla(0 37.5% 50% / 1.0)", [176, 80, 80, 255], +"hsla(30 37.5% 50% / 1.0)", [176, 128, 80, 255], +"hsla(60 37.5% 50% / 1.0)", [176, 176, 80, 255], +"hsla(90 37.5% 50% / 1.0)", [128, 176, 80, 255], +"hsla(120 37.5% 50% / 1.0)", [80, 176, 80, 255], +"hsla(150 37.5% 50% / 1.0)", [80, 176, 128, 255], +"hsla(180 37.5% 50% / 1.0)", [80, 176, 176, 255], +"hsla(210 37.5% 50% / 1.0)", [80, 128, 176, 255], +"hsla(240 37.5% 50% / 1.0)", [80, 80, 176, 255], +"hsla(270 37.5% 50% / 1.0)", [128, 80, 176, 255], +"hsla(300 37.5% 50% / 1.0)", [176, 80, 176, 255], +"hsla(330 37.5% 50% / 1.0)", [176, 80, 128, 255], +"hsla(0 50% 50% / 1.0)", [192, 64, 64, 255], +"hsla(30 50% 50% / 1.0)", [192, 128, 64, 255], +"hsla(60 50% 50% / 1.0)", [192, 192, 64, 255], +"hsla(90 50% 50% / 1.0)", [128, 192, 64, 255], +"hsla(120 50% 50% / 1.0)", [64, 192, 64, 255], +"hsla(150 50% 50% / 1.0)", [64, 192, 128, 255], +"hsla(180 50% 50% / 1.0)", [64, 192, 192, 255], +"hsla(210 50% 50% / 1.0)", [64, 128, 192, 255], +"hsla(240 50% 50% / 1.0)", [64, 64, 192, 255], +"hsla(270 50% 50% / 1.0)", [128, 64, 192, 255], +"hsla(300 50% 50% / 1.0)", [192, 64, 192, 255], +"hsla(330 50% 50% / 1.0)", [192, 64, 128, 255], +"hsla(0 62.5% 50% / 1.0)", [208, 48, 48, 255], +"hsla(30 62.5% 50% / 1.0)", [208, 128, 48, 255], +"hsla(60 62.5% 50% / 1.0)", [208, 208, 48, 255], +"hsla(90 62.5% 50% / 1.0)", [128, 208, 48, 255], +"hsla(120 62.5% 50% / 1.0)", [48, 208, 48, 255], +"hsla(150 62.5% 50% / 1.0)", [48, 208, 128, 255], +"hsla(180 62.5% 50% / 1.0)", [48, 208, 208, 255], +"hsla(210 62.5% 50% / 1.0)", [48, 128, 208, 255], +"hsla(240 62.5% 50% / 1.0)", [48, 48, 208, 255], +"hsla(270 62.5% 50% / 1.0)", [128, 48, 208, 255], +"hsla(300 62.5% 50% / 1.0)", [208, 48, 208, 255], +"hsla(330 62.5% 50% / 1.0)", [208, 48, 128, 255], +"hsla(0 75% 50% / 1.0)", [224, 32, 32, 255], +"hsla(30 75% 50% / 1.0)", [224, 128, 32, 255], +"hsla(60 75% 50% / 1.0)", [224, 224, 32, 255], +"hsla(90 75% 50% / 1.0)", [128, 224, 32, 255], +"hsla(120 75% 50% / 1.0)", [32, 224, 32, 255], +"hsla(150 75% 50% / 1.0)", [32, 224, 128, 255], +"hsla(180 75% 50% / 1.0)", [32, 224, 224, 255], +"hsla(210 75% 50% / 1.0)", [32, 128, 224, 255], +"hsla(240 75% 50% / 1.0)", [32, 32, 224, 255], +"hsla(270 75% 50% / 1.0)", [128, 32, 224, 255], +"hsla(300 75% 50% / 1.0)", [224, 32, 224, 255], +"hsla(330 75% 50% / 1.0)", [224, 32, 128, 255], +"hsla(0 87.5% 50% / 1.0)", [240, 16, 16, 255], +"hsla(30 87.5% 50% / 1.0)", [240, 128, 16, 255], +"hsla(60 87.5% 50% / 1.0)", [240, 240, 16, 255], +"hsla(90 87.5% 50% / 1.0)", [128, 240, 16, 255], +"hsla(120 87.5% 50% / 1.0)", [16, 240, 16, 255], +"hsla(150 87.5% 50% / 1.0)", [16, 240, 128, 255], +"hsla(180 87.5% 50% / 1.0)", [16, 240, 240, 255], +"hsla(210 87.5% 50% / 1.0)", [16, 128, 240, 255], +"hsla(240 87.5% 50% / 1.0)", [16, 16, 240, 255], +"hsla(270 87.5% 50% / 1.0)", [128, 16, 240, 255], +"hsla(300 87.5% 50% / 1.0)", [240, 16, 240, 255], +"hsla(330 87.5% 50% / 1.0)", [240, 16, 128, 255], +"hsla(0 100% 50% / 1.0)", [255, 0, 0, 255], +"hsla(30 100% 50% / 1.0)", [255, 128, 0, 255], +"hsla(60 100% 50% / 1.0)", [255, 255, 0, 255], +"hsla(90 100% 50% / 1.0)", [128, 255, 0, 255], +"hsla(120 100% 50% / 1.0)", [0, 255, 0, 255], +"hsla(150 100% 50% / 1.0)", [0, 255, 128, 255], +"hsla(180 100% 50% / 1.0)", [0, 255, 255, 255], +"hsla(210 100% 50% / 1.0)", [0, 128, 255, 255], +"hsla(240 100% 50% / 1.0)", [0, 0, 255, 255], +"hsla(270 100% 50% / 1.0)", [128, 0, 255, 255], +"hsla(300 100% 50% / 1.0)", [255, 0, 255, 255], +"hsla(330 100% 50% / 1.0)", [255, 0, 128, 255], +"hsla(0 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(30 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(60 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(90 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(120 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(150 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(180 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(210 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(240 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(270 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(300 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(330 0% 62.5% / 1.0)", [160, 160, 160, 255], +"hsla(0 12.5% 62.5% / 1.0)", [172, 148, 148, 255], +"hsla(30 12.5% 62.5% / 1.0)", [172, 160, 148, 255], +"hsla(60 12.5% 62.5% / 1.0)", [172, 172, 148, 255], +"hsla(90 12.5% 62.5% / 1.0)", [160, 172, 148, 255], +"hsla(120 12.5% 62.5% / 1.0)", [148, 172, 148, 255], +"hsla(150 12.5% 62.5% / 1.0)", [148, 172, 160, 255], +"hsla(180 12.5% 62.5% / 1.0)", [148, 172, 172, 255], +"hsla(210 12.5% 62.5% / 1.0)", [148, 160, 172, 255], +"hsla(240 12.5% 62.5% / 1.0)", [148, 148, 172, 255], +"hsla(270 12.5% 62.5% / 1.0)", [160, 148, 172, 255], +"hsla(300 12.5% 62.5% / 1.0)", [172, 148, 172, 255], +"hsla(330 12.5% 62.5% / 1.0)", [172, 148, 160, 255], +"hsla(0 25% 62.5% / 1.0)", [184, 136, 136, 255], +"hsla(30 25% 62.5% / 1.0)", [184, 160, 136, 255], +"hsla(60 25% 62.5% / 1.0)", [184, 184, 136, 255], +"hsla(90 25% 62.5% / 1.0)", [160, 184, 136, 255], +"hsla(120 25% 62.5% / 1.0)", [136, 184, 136, 255], +"hsla(150 25% 62.5% / 1.0)", [136, 184, 160, 255], +"hsla(180 25% 62.5% / 1.0)", [136, 184, 184, 255], +"hsla(210 25% 62.5% / 1.0)", [136, 160, 184, 255], +"hsla(240 25% 62.5% / 1.0)", [136, 136, 184, 255], +"hsla(270 25% 62.5% / 1.0)", [160, 136, 184, 255], +"hsla(300 25% 62.5% / 1.0)", [184, 136, 184, 255], +"hsla(330 25% 62.5% / 1.0)", [184, 136, 160, 255], +"hsla(0 37.5% 62.5% / 1.0)", [196, 124, 124, 255], +"hsla(30 37.5% 62.5% / 1.0)", [196, 160, 124, 255], +"hsla(60 37.5% 62.5% / 1.0)", [196, 196, 124, 255], +"hsla(90 37.5% 62.5% / 1.0)", [160, 196, 124, 255], +"hsla(120 37.5% 62.5% / 1.0)", [124, 196, 124, 255], +"hsla(150 37.5% 62.5% / 1.0)", [124, 196, 160, 255], +"hsla(180 37.5% 62.5% / 1.0)", [124, 196, 196, 255], +"hsla(210 37.5% 62.5% / 1.0)", [124, 160, 196, 255], +"hsla(240 37.5% 62.5% / 1.0)", [124, 124, 196, 255], +"hsla(270 37.5% 62.5% / 1.0)", [160, 124, 196, 255], +"hsla(300 37.5% 62.5% / 1.0)", [196, 124, 196, 255], +"hsla(330 37.5% 62.5% / 1.0)", [196, 124, 160, 255], +"hsla(0 50% 62.5% / 1.0)", [208, 112, 112, 255], +"hsla(30 50% 62.5% / 1.0)", [208, 160, 112, 255], +"hsla(60 50% 62.5% / 1.0)", [208, 208, 112, 255], +"hsla(90 50% 62.5% / 1.0)", [160, 208, 112, 255], +"hsla(120 50% 62.5% / 1.0)", [112, 208, 112, 255], +"hsla(150 50% 62.5% / 1.0)", [112, 208, 160, 255], +"hsla(180 50% 62.5% / 1.0)", [112, 208, 208, 255], +"hsla(210 50% 62.5% / 1.0)", [112, 160, 208, 255], +"hsla(240 50% 62.5% / 1.0)", [112, 112, 208, 255], +"hsla(270 50% 62.5% / 1.0)", [160, 112, 208, 255], +"hsla(300 50% 62.5% / 1.0)", [208, 112, 208, 255], +"hsla(330 50% 62.5% / 1.0)", [208, 112, 160, 255], +"hsla(0 62.5% 62.5% / 1.0)", [220, 100, 100, 255], +"hsla(30 62.5% 62.5% / 1.0)", [220, 160, 100, 255], +"hsla(60 62.5% 62.5% / 1.0)", [220, 220, 100, 255], +"hsla(90 62.5% 62.5% / 1.0)", [160, 220, 100, 255], +"hsla(120 62.5% 62.5% / 1.0)", [100, 220, 100, 255], +"hsla(150 62.5% 62.5% / 1.0)", [100, 220, 160, 255], +"hsla(180 62.5% 62.5% / 1.0)", [100, 220, 220, 255], +"hsla(210 62.5% 62.5% / 1.0)", [100, 160, 220, 255], +"hsla(240 62.5% 62.5% / 1.0)", [100, 100, 220, 255], +"hsla(270 62.5% 62.5% / 1.0)", [160, 100, 220, 255], +"hsla(300 62.5% 62.5% / 1.0)", [220, 100, 220, 255], +"hsla(330 62.5% 62.5% / 1.0)", [220, 100, 160, 255], +"hsla(0 75% 62.5% / 1.0)", [232, 88, 88, 255], +"hsla(30 75% 62.5% / 1.0)", [232, 160, 88, 255], +"hsla(60 75% 62.5% / 1.0)", [232, 232, 88, 255], +"hsla(90 75% 62.5% / 1.0)", [160, 232, 88, 255], +"hsla(120 75% 62.5% / 1.0)", [88, 232, 88, 255], +"hsla(150 75% 62.5% / 1.0)", [88, 232, 160, 255], +"hsla(180 75% 62.5% / 1.0)", [88, 232, 232, 255], +"hsla(210 75% 62.5% / 1.0)", [88, 160, 232, 255], +"hsla(240 75% 62.5% / 1.0)", [88, 88, 232, 255], +"hsla(270 75% 62.5% / 1.0)", [160, 88, 232, 255], +"hsla(300 75% 62.5% / 1.0)", [232, 88, 232, 255], +"hsla(330 75% 62.5% / 1.0)", [232, 88, 160, 255], +"hsla(0 87.5% 62.5% / 1.0)", [244, 76, 76, 255], +"hsla(30 87.5% 62.5% / 1.0)", [244, 160, 76, 255], +"hsla(60 87.5% 62.5% / 1.0)", [244, 244, 76, 255], +"hsla(90 87.5% 62.5% / 1.0)", [160, 244, 76, 255], +"hsla(120 87.5% 62.5% / 1.0)", [76, 244, 76, 255], +"hsla(150 87.5% 62.5% / 1.0)", [76, 244, 160, 255], +"hsla(180 87.5% 62.5% / 1.0)", [76, 244, 244, 255], +"hsla(210 87.5% 62.5% / 1.0)", [76, 160, 244, 255], +"hsla(240 87.5% 62.5% / 1.0)", [76, 76, 244, 255], +"hsla(270 87.5% 62.5% / 1.0)", [160, 76, 244, 255], +"hsla(300 87.5% 62.5% / 1.0)", [244, 76, 244, 255], +"hsla(330 87.5% 62.5% / 1.0)", [244, 76, 160, 255], +"hsla(0 100% 62.5% / 1.0)", [255, 64, 64, 255], +"hsla(30 100% 62.5% / 1.0)", [255, 160, 64, 255], +"hsla(60 100% 62.5% / 1.0)", [255, 255, 64, 255], +"hsla(90 100% 62.5% / 1.0)", [160, 255, 64, 255], +"hsla(120 100% 62.5% / 1.0)", [64, 255, 64, 255], +"hsla(150 100% 62.5% / 1.0)", [64, 255, 160, 255], +"hsla(180 100% 62.5% / 1.0)", [64, 255, 255, 255], +"hsla(210 100% 62.5% / 1.0)", [64, 160, 255, 255], +"hsla(240 100% 62.5% / 1.0)", [64, 64, 255, 255], +"hsla(270 100% 62.5% / 1.0)", [160, 64, 255, 255], +"hsla(300 100% 62.5% / 1.0)", [255, 64, 255, 255], +"hsla(330 100% 62.5% / 1.0)", [255, 64, 160, 255], +"hsla(0 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(30 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(60 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(90 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(120 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(150 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(180 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(210 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(240 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(270 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(300 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(330 0% 75% / 1.0)", [192, 192, 192, 255], +"hsla(0 12.5% 75% / 1.0)", [200, 184, 184, 255], +"hsla(30 12.5% 75% / 1.0)", [200, 192, 184, 255], +"hsla(60 12.5% 75% / 1.0)", [200, 200, 184, 255], +"hsla(90 12.5% 75% / 1.0)", [192, 200, 184, 255], +"hsla(120 12.5% 75% / 1.0)", [184, 200, 184, 255], +"hsla(150 12.5% 75% / 1.0)", [184, 200, 192, 255], +"hsla(180 12.5% 75% / 1.0)", [184, 200, 200, 255], +"hsla(210 12.5% 75% / 1.0)", [184, 192, 200, 255], +"hsla(240 12.5% 75% / 1.0)", [184, 184, 200, 255], +"hsla(270 12.5% 75% / 1.0)", [192, 184, 200, 255], +"hsla(300 12.5% 75% / 1.0)", [200, 184, 200, 255], +"hsla(330 12.5% 75% / 1.0)", [200, 184, 192, 255], +"hsla(0 25% 75% / 1.0)", [208, 176, 176, 255], +"hsla(30 25% 75% / 1.0)", [208, 192, 176, 255], +"hsla(60 25% 75% / 1.0)", [208, 208, 176, 255], +"hsla(90 25% 75% / 1.0)", [192, 208, 176, 255], +"hsla(120 25% 75% / 1.0)", [176, 208, 176, 255], +"hsla(150 25% 75% / 1.0)", [176, 208, 192, 255], +"hsla(180 25% 75% / 1.0)", [176, 208, 208, 255], +"hsla(210 25% 75% / 1.0)", [176, 192, 208, 255], +"hsla(240 25% 75% / 1.0)", [176, 176, 208, 255], +"hsla(270 25% 75% / 1.0)", [192, 176, 208, 255], +"hsla(300 25% 75% / 1.0)", [208, 176, 208, 255], +"hsla(330 25% 75% / 1.0)", [208, 176, 192, 255], +"hsla(0 37.5% 75% / 1.0)", [216, 168, 168, 255], +"hsla(30 37.5% 75% / 1.0)", [216, 192, 168, 255], +"hsla(60 37.5% 75% / 1.0)", [216, 216, 168, 255], +"hsla(90 37.5% 75% / 1.0)", [192, 216, 168, 255], +"hsla(120 37.5% 75% / 1.0)", [168, 216, 168, 255], +"hsla(150 37.5% 75% / 1.0)", [168, 216, 192, 255], +"hsla(180 37.5% 75% / 1.0)", [168, 216, 216, 255], +"hsla(210 37.5% 75% / 1.0)", [168, 192, 216, 255], +"hsla(240 37.5% 75% / 1.0)", [168, 168, 216, 255], +"hsla(270 37.5% 75% / 1.0)", [192, 168, 216, 255], +"hsla(300 37.5% 75% / 1.0)", [216, 168, 216, 255], +"hsla(330 37.5% 75% / 1.0)", [216, 168, 192, 255], +"hsla(0 50% 75% / 1.0)", [224, 160, 160, 255], +"hsla(30 50% 75% / 1.0)", [224, 192, 160, 255], +"hsla(60 50% 75% / 1.0)", [224, 224, 160, 255], +"hsla(90 50% 75% / 1.0)", [192, 224, 160, 255], +"hsla(120 50% 75% / 1.0)", [160, 224, 160, 255], +"hsla(150 50% 75% / 1.0)", [160, 224, 192, 255], +"hsla(180 50% 75% / 1.0)", [160, 224, 224, 255], +"hsla(210 50% 75% / 1.0)", [160, 192, 224, 255], +"hsla(240 50% 75% / 1.0)", [160, 160, 224, 255], +"hsla(270 50% 75% / 1.0)", [192, 160, 224, 255], +"hsla(300 50% 75% / 1.0)", [224, 160, 224, 255], +"hsla(330 50% 75% / 1.0)", [224, 160, 192, 255], +"hsla(0 62.5% 75% / 1.0)", [232, 152, 152, 255], +"hsla(30 62.5% 75% / 1.0)", [232, 192, 152, 255], +"hsla(60 62.5% 75% / 1.0)", [232, 232, 152, 255], +"hsla(90 62.5% 75% / 1.0)", [192, 232, 152, 255], +"hsla(120 62.5% 75% / 1.0)", [152, 232, 152, 255], +"hsla(150 62.5% 75% / 1.0)", [152, 232, 192, 255], +"hsla(180 62.5% 75% / 1.0)", [152, 232, 232, 255], +"hsla(210 62.5% 75% / 1.0)", [152, 192, 232, 255], +"hsla(240 62.5% 75% / 1.0)", [152, 152, 232, 255], +"hsla(270 62.5% 75% / 1.0)", [192, 152, 232, 255], +"hsla(300 62.5% 75% / 1.0)", [232, 152, 232, 255], +"hsla(330 62.5% 75% / 1.0)", [232, 152, 192, 255], +"hsla(0 75% 75% / 1.0)", [240, 144, 144, 255], +"hsla(30 75% 75% / 1.0)", [240, 192, 144, 255], +"hsla(60 75% 75% / 1.0)", [240, 240, 144, 255], +"hsla(90 75% 75% / 1.0)", [192, 240, 144, 255], +"hsla(120 75% 75% / 1.0)", [144, 240, 144, 255], +"hsla(150 75% 75% / 1.0)", [144, 240, 192, 255], +"hsla(180 75% 75% / 1.0)", [144, 240, 240, 255], +"hsla(210 75% 75% / 1.0)", [144, 192, 240, 255], +"hsla(240 75% 75% / 1.0)", [144, 144, 240, 255], +"hsla(270 75% 75% / 1.0)", [192, 144, 240, 255], +"hsla(300 75% 75% / 1.0)", [240, 144, 240, 255], +"hsla(330 75% 75% / 1.0)", [240, 144, 192, 255], +"hsla(0 87.5% 75% / 1.0)", [248, 136, 136, 255], +"hsla(30 87.5% 75% / 1.0)", [248, 192, 136, 255], +"hsla(60 87.5% 75% / 1.0)", [248, 248, 136, 255], +"hsla(90 87.5% 75% / 1.0)", [192, 248, 136, 255], +"hsla(120 87.5% 75% / 1.0)", [136, 248, 136, 255], +"hsla(150 87.5% 75% / 1.0)", [136, 248, 192, 255], +"hsla(180 87.5% 75% / 1.0)", [136, 248, 248, 255], +"hsla(210 87.5% 75% / 1.0)", [136, 192, 248, 255], +"hsla(240 87.5% 75% / 1.0)", [136, 136, 248, 255], +"hsla(270 87.5% 75% / 1.0)", [192, 136, 248, 255], +"hsla(300 87.5% 75% / 1.0)", [248, 136, 248, 255], +"hsla(330 87.5% 75% / 1.0)", [248, 136, 192, 255], +"hsla(0 100% 75% / 1.0)", [255, 128, 128, 255], +"hsla(30 100% 75% / 1.0)", [255, 192, 128, 255], +"hsla(60 100% 75% / 1.0)", [255, 255, 128, 255], +"hsla(90 100% 75% / 1.0)", [192, 255, 128, 255], +"hsla(120 100% 75% / 1.0)", [128, 255, 128, 255], +"hsla(150 100% 75% / 1.0)", [128, 255, 192, 255], +"hsla(180 100% 75% / 1.0)", [128, 255, 255, 255], +"hsla(210 100% 75% / 1.0)", [128, 192, 255, 255], +"hsla(240 100% 75% / 1.0)", [128, 128, 255, 255], +"hsla(270 100% 75% / 1.0)", [192, 128, 255, 255], +"hsla(300 100% 75% / 1.0)", [255, 128, 255, 255], +"hsla(330 100% 75% / 1.0)", [255, 128, 192, 255], +"hsla(0 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(30 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(60 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(90 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(120 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(150 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(180 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(210 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(240 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(270 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(300 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(330 0% 87.5% / 1.0)", [224, 224, 224, 255], +"hsla(0 12.5% 87.5% / 1.0)", [228, 220, 220, 255], +"hsla(30 12.5% 87.5% / 1.0)", [228, 224, 220, 255], +"hsla(60 12.5% 87.5% / 1.0)", [228, 228, 220, 255], +"hsla(90 12.5% 87.5% / 1.0)", [224, 228, 220, 255], +"hsla(120 12.5% 87.5% / 1.0)", [220, 228, 220, 255], +"hsla(150 12.5% 87.5% / 1.0)", [220, 228, 224, 255], +"hsla(180 12.5% 87.5% / 1.0)", [220, 228, 228, 255], +"hsla(210 12.5% 87.5% / 1.0)", [220, 224, 228, 255], +"hsla(240 12.5% 87.5% / 1.0)", [220, 220, 228, 255], +"hsla(270 12.5% 87.5% / 1.0)", [224, 220, 228, 255], +"hsla(300 12.5% 87.5% / 1.0)", [228, 220, 228, 255], +"hsla(330 12.5% 87.5% / 1.0)", [228, 220, 224, 255], +"hsla(0 25% 87.5% / 1.0)", [232, 216, 216, 255], +"hsla(30 25% 87.5% / 1.0)", [232, 224, 216, 255], +"hsla(60 25% 87.5% / 1.0)", [232, 232, 216, 255], +"hsla(90 25% 87.5% / 1.0)", [224, 232, 216, 255], +"hsla(120 25% 87.5% / 1.0)", [216, 232, 216, 255], +"hsla(150 25% 87.5% / 1.0)", [216, 232, 224, 255], +"hsla(180 25% 87.5% / 1.0)", [216, 232, 232, 255], +"hsla(210 25% 87.5% / 1.0)", [216, 224, 232, 255], +"hsla(240 25% 87.5% / 1.0)", [216, 216, 232, 255], +"hsla(270 25% 87.5% / 1.0)", [224, 216, 232, 255], +"hsla(300 25% 87.5% / 1.0)", [232, 216, 232, 255], +"hsla(330 25% 87.5% / 1.0)", [232, 216, 224, 255], +"hsla(0 37.5% 87.5% / 1.0)", [236, 212, 212, 255], +"hsla(30 37.5% 87.5% / 1.0)", [236, 224, 212, 255], +"hsla(60 37.5% 87.5% / 1.0)", [236, 236, 212, 255], +"hsla(90 37.5% 87.5% / 1.0)", [224, 236, 212, 255], +"hsla(120 37.5% 87.5% / 1.0)", [212, 236, 212, 255], +"hsla(150 37.5% 87.5% / 1.0)", [212, 236, 224, 255], +"hsla(180 37.5% 87.5% / 1.0)", [212, 236, 236, 255], +"hsla(210 37.5% 87.5% / 1.0)", [212, 224, 236, 255], +"hsla(240 37.5% 87.5% / 1.0)", [212, 212, 236, 255], +"hsla(270 37.5% 87.5% / 1.0)", [224, 212, 236, 255], +"hsla(300 37.5% 87.5% / 1.0)", [236, 212, 236, 255], +"hsla(330 37.5% 87.5% / 1.0)", [236, 212, 224, 255], +"hsla(0 50% 87.5% / 1.0)", [240, 208, 208, 255], +"hsla(30 50% 87.5% / 1.0)", [240, 224, 208, 255], +"hsla(60 50% 87.5% / 1.0)", [240, 240, 208, 255], +"hsla(90 50% 87.5% / 1.0)", [224, 240, 208, 255], +"hsla(120 50% 87.5% / 1.0)", [208, 240, 208, 255], +"hsla(150 50% 87.5% / 1.0)", [208, 240, 224, 255], +"hsla(180 50% 87.5% / 1.0)", [208, 240, 240, 255], +"hsla(210 50% 87.5% / 1.0)", [208, 224, 240, 255], +"hsla(240 50% 87.5% / 1.0)", [208, 208, 240, 255], +"hsla(270 50% 87.5% / 1.0)", [224, 208, 240, 255], +"hsla(300 50% 87.5% / 1.0)", [240, 208, 240, 255], +"hsla(330 50% 87.5% / 1.0)", [240, 208, 224, 255], +"hsla(0 62.5% 87.5% / 1.0)", [244, 204, 204, 255], +"hsla(30 62.5% 87.5% / 1.0)", [244, 224, 204, 255], +"hsla(60 62.5% 87.5% / 1.0)", [244, 244, 204, 255], +"hsla(90 62.5% 87.5% / 1.0)", [224, 244, 204, 255], +"hsla(120 62.5% 87.5% / 1.0)", [204, 244, 204, 255], +"hsla(150 62.5% 87.5% / 1.0)", [204, 244, 224, 255], +"hsla(180 62.5% 87.5% / 1.0)", [204, 244, 244, 255], +"hsla(210 62.5% 87.5% / 1.0)", [204, 224, 244, 255], +"hsla(240 62.5% 87.5% / 1.0)", [204, 204, 244, 255], +"hsla(270 62.5% 87.5% / 1.0)", [224, 204, 244, 255], +"hsla(300 62.5% 87.5% / 1.0)", [244, 204, 244, 255], +"hsla(330 62.5% 87.5% / 1.0)", [244, 204, 224, 255], +"hsla(0 75% 87.5% / 1.0)", [248, 200, 200, 255], +"hsla(30 75% 87.5% / 1.0)", [248, 224, 200, 255], +"hsla(60 75% 87.5% / 1.0)", [248, 248, 200, 255], +"hsla(90 75% 87.5% / 1.0)", [224, 248, 200, 255], +"hsla(120 75% 87.5% / 1.0)", [200, 248, 200, 255], +"hsla(150 75% 87.5% / 1.0)", [200, 248, 224, 255], +"hsla(180 75% 87.5% / 1.0)", [200, 248, 248, 255], +"hsla(210 75% 87.5% / 1.0)", [200, 224, 248, 255], +"hsla(240 75% 87.5% / 1.0)", [200, 200, 248, 255], +"hsla(270 75% 87.5% / 1.0)", [224, 200, 248, 255], +"hsla(300 75% 87.5% / 1.0)", [248, 200, 248, 255], +"hsla(330 75% 87.5% / 1.0)", [248, 200, 224, 255], +"hsla(0 87.5% 87.5% / 1.0)", [252, 196, 196, 255], +"hsla(30 87.5% 87.5% / 1.0)", [252, 224, 196, 255], +"hsla(60 87.5% 87.5% / 1.0)", [252, 252, 196, 255], +"hsla(90 87.5% 87.5% / 1.0)", [224, 252, 196, 255], +"hsla(120 87.5% 87.5% / 1.0)", [196, 252, 196, 255], +"hsla(150 87.5% 87.5% / 1.0)", [196, 252, 224, 255], +"hsla(180 87.5% 87.5% / 1.0)", [196, 252, 252, 255], +"hsla(210 87.5% 87.5% / 1.0)", [196, 224, 252, 255], +"hsla(240 87.5% 87.5% / 1.0)", [196, 196, 252, 255], +"hsla(270 87.5% 87.5% / 1.0)", [224, 196, 252, 255], +"hsla(300 87.5% 87.5% / 1.0)", [252, 196, 252, 255], +"hsla(330 87.5% 87.5% / 1.0)", [252, 196, 224, 255], +"hsla(0 100% 87.5% / 1.0)", [255, 192, 192, 255], +"hsla(30 100% 87.5% / 1.0)", [255, 224, 192, 255], +"hsla(60 100% 87.5% / 1.0)", [255, 255, 192, 255], +"hsla(90 100% 87.5% / 1.0)", [224, 255, 192, 255], +"hsla(120 100% 87.5% / 1.0)", [192, 255, 192, 255], +"hsla(150 100% 87.5% / 1.0)", [192, 255, 224, 255], +"hsla(180 100% 87.5% / 1.0)", [192, 255, 255, 255], +"hsla(210 100% 87.5% / 1.0)", [192, 224, 255, 255], +"hsla(240 100% 87.5% / 1.0)", [192, 192, 255, 255], +"hsla(270 100% 87.5% / 1.0)", [224, 192, 255, 255], +"hsla(300 100% 87.5% / 1.0)", [255, 192, 255, 255], +"hsla(330 100% 87.5% / 1.0)", [255, 192, 224, 255], +"hsla(0 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(30 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(60 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(90 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(120 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(150 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(180 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(210 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(240 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(270 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(300 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(330 0% 100% / 1.0)", [255, 255, 255, 255], +"hsla(0 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(30 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(60 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(90 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(120 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(150 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(180 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(210 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(240 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(270 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(300 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(330 12.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(0 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(30 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(60 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(90 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(120 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(150 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(180 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(210 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(240 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(270 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(300 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(330 25% 100% / 1.0)", [255, 255, 255, 255], +"hsla(0 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(30 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(60 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(90 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(120 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(150 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(180 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(210 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(240 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(270 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(300 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(330 37.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(0 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(30 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(60 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(90 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(120 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(150 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(180 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(210 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(240 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(270 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(300 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(330 50% 100% / 1.0)", [255, 255, 255, 255], +"hsla(0 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(30 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(60 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(90 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(120 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(150 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(180 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(210 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(240 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(270 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(300 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(330 62.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(0 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(30 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(60 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(90 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(120 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(150 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(180 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(210 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(240 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(270 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(300 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(330 75% 100% / 1.0)", [255, 255, 255, 255], +"hsla(0 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(30 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(60 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(90 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(120 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(150 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(180 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(210 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(240 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(270 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(300 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(330 87.5% 100% / 1.0)", [255, 255, 255, 255], +"hsla(0 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(30 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(60 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(90 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(120 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(150 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(180 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(210 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(240 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(270 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(300 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(330 100% 100% / 1.0)", [255, 255, 255, 255], +"hsla(0 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(30 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(60 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(90 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(120 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(150 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(180 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(210 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(240 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(270 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(300 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(330 0% 0% / 0.25)", [0, 0, 0, 64], +"hsla(0 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(30 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(60 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(90 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(120 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(150 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(180 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(210 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(240 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(270 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(300 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(330 12.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(0 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(30 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(60 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(90 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(120 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(150 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(180 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(210 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(240 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(270 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(300 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(330 25% 0% / 0.25)", [0, 0, 0, 64], +"hsla(0 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(30 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(60 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(90 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(120 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(150 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(180 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(210 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(240 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(270 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(300 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(330 37.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(0 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(30 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(60 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(90 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(120 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(150 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(180 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(210 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(240 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(270 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(300 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(330 50% 0% / 0.25)", [0, 0, 0, 64], +"hsla(0 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(30 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(60 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(90 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(120 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(150 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(180 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(210 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(240 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(270 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(300 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(330 62.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(0 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(30 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(60 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(90 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(120 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(150 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(180 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(210 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(240 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(270 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(300 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(330 75% 0% / 0.25)", [0, 0, 0, 64], +"hsla(0 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(30 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(60 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(90 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(120 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(150 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(180 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(210 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(240 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(270 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(300 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(330 87.5% 0% / 0.25)", [0, 0, 0, 64], +"hsla(0 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(30 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(60 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(90 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(120 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(150 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(180 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(210 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(240 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(270 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(300 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(330 100% 0% / 0.25)", [0, 0, 0, 64], +"hsla(0 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(30 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(60 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(90 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(120 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(150 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(180 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(210 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(240 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(270 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(300 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(330 0% 12.5% / 0.25)", [32, 32, 32, 64], +"hsla(0 12.5% 12.5% / 0.25)", [36, 28, 28, 64], +"hsla(30 12.5% 12.5% / 0.25)", [36, 32, 28, 64], +"hsla(60 12.5% 12.5% / 0.25)", [36, 36, 28, 64], +"hsla(90 12.5% 12.5% / 0.25)", [32, 36, 28, 64], +"hsla(120 12.5% 12.5% / 0.25)", [28, 36, 28, 64], +"hsla(150 12.5% 12.5% / 0.25)", [28, 36, 32, 64], +"hsla(180 12.5% 12.5% / 0.25)", [28, 36, 36, 64], +"hsla(210 12.5% 12.5% / 0.25)", [28, 32, 36, 64], +"hsla(240 12.5% 12.5% / 0.25)", [28, 28, 36, 64], +"hsla(270 12.5% 12.5% / 0.25)", [32, 28, 36, 64], +"hsla(300 12.5% 12.5% / 0.25)", [36, 28, 36, 64], +"hsla(330 12.5% 12.5% / 0.25)", [36, 28, 32, 64], +"hsla(0 25% 12.5% / 0.25)", [40, 24, 24, 64], +"hsla(30 25% 12.5% / 0.25)", [40, 32, 24, 64], +"hsla(60 25% 12.5% / 0.25)", [40, 40, 24, 64], +"hsla(90 25% 12.5% / 0.25)", [32, 40, 24, 64], +"hsla(120 25% 12.5% / 0.25)", [24, 40, 24, 64], +"hsla(150 25% 12.5% / 0.25)", [24, 40, 32, 64], +"hsla(180 25% 12.5% / 0.25)", [24, 40, 40, 64], +"hsla(210 25% 12.5% / 0.25)", [24, 32, 40, 64], +"hsla(240 25% 12.5% / 0.25)", [24, 24, 40, 64], +"hsla(270 25% 12.5% / 0.25)", [32, 24, 40, 64], +"hsla(300 25% 12.5% / 0.25)", [40, 24, 40, 64], +"hsla(330 25% 12.5% / 0.25)", [40, 24, 32, 64], +"hsla(0 37.5% 12.5% / 0.25)", [44, 20, 20, 64], +"hsla(30 37.5% 12.5% / 0.25)", [44, 32, 20, 64], +"hsla(60 37.5% 12.5% / 0.25)", [44, 44, 20, 64], +"hsla(90 37.5% 12.5% / 0.25)", [32, 44, 20, 64], +"hsla(120 37.5% 12.5% / 0.25)", [20, 44, 20, 64], +"hsla(150 37.5% 12.5% / 0.25)", [20, 44, 32, 64], +"hsla(180 37.5% 12.5% / 0.25)", [20, 44, 44, 64], +"hsla(210 37.5% 12.5% / 0.25)", [20, 32, 44, 64], +"hsla(240 37.5% 12.5% / 0.25)", [20, 20, 44, 64], +"hsla(270 37.5% 12.5% / 0.25)", [32, 20, 44, 64], +"hsla(300 37.5% 12.5% / 0.25)", [44, 20, 44, 64], +"hsla(330 37.5% 12.5% / 0.25)", [44, 20, 32, 64], +"hsla(0 50% 12.5% / 0.25)", [48, 16, 16, 64], +"hsla(30 50% 12.5% / 0.25)", [48, 32, 16, 64], +"hsla(60 50% 12.5% / 0.25)", [48, 48, 16, 64], +"hsla(90 50% 12.5% / 0.25)", [32, 48, 16, 64], +"hsla(120 50% 12.5% / 0.25)", [16, 48, 16, 64], +"hsla(150 50% 12.5% / 0.25)", [16, 48, 32, 64], +"hsla(180 50% 12.5% / 0.25)", [16, 48, 48, 64], +"hsla(210 50% 12.5% / 0.25)", [16, 32, 48, 64], +"hsla(240 50% 12.5% / 0.25)", [16, 16, 48, 64], +"hsla(270 50% 12.5% / 0.25)", [32, 16, 48, 64], +"hsla(300 50% 12.5% / 0.25)", [48, 16, 48, 64], +"hsla(330 50% 12.5% / 0.25)", [48, 16, 32, 64], +"hsla(0 62.5% 12.5% / 0.25)", [52, 12, 12, 64], +"hsla(30 62.5% 12.5% / 0.25)", [52, 32, 12, 64], +"hsla(60 62.5% 12.5% / 0.25)", [52, 52, 12, 64], +"hsla(90 62.5% 12.5% / 0.25)", [32, 52, 12, 64], +"hsla(120 62.5% 12.5% / 0.25)", [12, 52, 12, 64], +"hsla(150 62.5% 12.5% / 0.25)", [12, 52, 32, 64], +"hsla(180 62.5% 12.5% / 0.25)", [12, 52, 52, 64], +"hsla(210 62.5% 12.5% / 0.25)", [12, 32, 52, 64], +"hsla(240 62.5% 12.5% / 0.25)", [12, 12, 52, 64], +"hsla(270 62.5% 12.5% / 0.25)", [32, 12, 52, 64], +"hsla(300 62.5% 12.5% / 0.25)", [52, 12, 52, 64], +"hsla(330 62.5% 12.5% / 0.25)", [52, 12, 32, 64], +"hsla(0 75% 12.5% / 0.25)", [56, 8, 8, 64], +"hsla(30 75% 12.5% / 0.25)", [56, 32, 8, 64], +"hsla(60 75% 12.5% / 0.25)", [56, 56, 8, 64], +"hsla(90 75% 12.5% / 0.25)", [32, 56, 8, 64], +"hsla(120 75% 12.5% / 0.25)", [8, 56, 8, 64], +"hsla(150 75% 12.5% / 0.25)", [8, 56, 32, 64], +"hsla(180 75% 12.5% / 0.25)", [8, 56, 56, 64], +"hsla(210 75% 12.5% / 0.25)", [8, 32, 56, 64], +"hsla(240 75% 12.5% / 0.25)", [8, 8, 56, 64], +"hsla(270 75% 12.5% / 0.25)", [32, 8, 56, 64], +"hsla(300 75% 12.5% / 0.25)", [56, 8, 56, 64], +"hsla(330 75% 12.5% / 0.25)", [56, 8, 32, 64], +"hsla(0 87.5% 12.5% / 0.25)", [60, 4, 4, 64], +"hsla(30 87.5% 12.5% / 0.25)", [60, 32, 4, 64], +"hsla(60 87.5% 12.5% / 0.25)", [60, 60, 4, 64], +"hsla(90 87.5% 12.5% / 0.25)", [32, 60, 4, 64], +"hsla(120 87.5% 12.5% / 0.25)", [4, 60, 4, 64], +"hsla(150 87.5% 12.5% / 0.25)", [4, 60, 32, 64], +"hsla(180 87.5% 12.5% / 0.25)", [4, 60, 60, 64], +"hsla(210 87.5% 12.5% / 0.25)", [4, 32, 60, 64], +"hsla(240 87.5% 12.5% / 0.25)", [4, 4, 60, 64], +"hsla(270 87.5% 12.5% / 0.25)", [32, 4, 60, 64], +"hsla(300 87.5% 12.5% / 0.25)", [60, 4, 60, 64], +"hsla(330 87.5% 12.5% / 0.25)", [60, 4, 32, 64], +"hsla(0 100% 12.5% / 0.25)", [64, 0, 0, 64], +"hsla(30 100% 12.5% / 0.25)", [64, 32, 0, 64], +"hsla(60 100% 12.5% / 0.25)", [64, 64, 0, 64], +"hsla(90 100% 12.5% / 0.25)", [32, 64, 0, 64], +"hsla(120 100% 12.5% / 0.25)", [0, 64, 0, 64], +"hsla(150 100% 12.5% / 0.25)", [0, 64, 32, 64], +"hsla(180 100% 12.5% / 0.25)", [0, 64, 64, 64], +"hsla(210 100% 12.5% / 0.25)", [0, 32, 64, 64], +"hsla(240 100% 12.5% / 0.25)", [0, 0, 64, 64], +"hsla(270 100% 12.5% / 0.25)", [32, 0, 64, 64], +"hsla(300 100% 12.5% / 0.25)", [64, 0, 64, 64], +"hsla(330 100% 12.5% / 0.25)", [64, 0, 32, 64], +"hsla(0 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(30 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(60 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(90 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(120 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(150 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(180 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(210 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(240 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(270 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(300 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(330 0% 25% / 0.25)", [64, 64, 64, 64], +"hsla(0 12.5% 25% / 0.25)", [72, 56, 56, 64], +"hsla(30 12.5% 25% / 0.25)", [72, 64, 56, 64], +"hsla(60 12.5% 25% / 0.25)", [72, 72, 56, 64], +"hsla(90 12.5% 25% / 0.25)", [64, 72, 56, 64], +"hsla(120 12.5% 25% / 0.25)", [56, 72, 56, 64], +"hsla(150 12.5% 25% / 0.25)", [56, 72, 64, 64], +"hsla(180 12.5% 25% / 0.25)", [56, 72, 72, 64], +"hsla(210 12.5% 25% / 0.25)", [56, 64, 72, 64], +"hsla(240 12.5% 25% / 0.25)", [56, 56, 72, 64], +"hsla(270 12.5% 25% / 0.25)", [64, 56, 72, 64], +"hsla(300 12.5% 25% / 0.25)", [72, 56, 72, 64], +"hsla(330 12.5% 25% / 0.25)", [72, 56, 64, 64], +"hsla(0 25% 25% / 0.25)", [80, 48, 48, 64], +"hsla(30 25% 25% / 0.25)", [80, 64, 48, 64], +"hsla(60 25% 25% / 0.25)", [80, 80, 48, 64], +"hsla(90 25% 25% / 0.25)", [64, 80, 48, 64], +"hsla(120 25% 25% / 0.25)", [48, 80, 48, 64], +"hsla(150 25% 25% / 0.25)", [48, 80, 64, 64], +"hsla(180 25% 25% / 0.25)", [48, 80, 80, 64], +"hsla(210 25% 25% / 0.25)", [48, 64, 80, 64], +"hsla(240 25% 25% / 0.25)", [48, 48, 80, 64], +"hsla(270 25% 25% / 0.25)", [64, 48, 80, 64], +"hsla(300 25% 25% / 0.25)", [80, 48, 80, 64], +"hsla(330 25% 25% / 0.25)", [80, 48, 64, 64], +"hsla(0 37.5% 25% / 0.25)", [88, 40, 40, 64], +"hsla(30 37.5% 25% / 0.25)", [88, 64, 40, 64], +"hsla(60 37.5% 25% / 0.25)", [88, 88, 40, 64], +"hsla(90 37.5% 25% / 0.25)", [64, 88, 40, 64], +"hsla(120 37.5% 25% / 0.25)", [40, 88, 40, 64], +"hsla(150 37.5% 25% / 0.25)", [40, 88, 64, 64], +"hsla(180 37.5% 25% / 0.25)", [40, 88, 88, 64], +"hsla(210 37.5% 25% / 0.25)", [40, 64, 88, 64], +"hsla(240 37.5% 25% / 0.25)", [40, 40, 88, 64], +"hsla(270 37.5% 25% / 0.25)", [64, 40, 88, 64], +"hsla(300 37.5% 25% / 0.25)", [88, 40, 88, 64], +"hsla(330 37.5% 25% / 0.25)", [88, 40, 64, 64], +"hsla(0 50% 25% / 0.25)", [96, 32, 32, 64], +"hsla(30 50% 25% / 0.25)", [96, 64, 32, 64], +"hsla(60 50% 25% / 0.25)", [96, 96, 32, 64], +"hsla(90 50% 25% / 0.25)", [64, 96, 32, 64], +"hsla(120 50% 25% / 0.25)", [32, 96, 32, 64], +"hsla(150 50% 25% / 0.25)", [32, 96, 64, 64], +"hsla(180 50% 25% / 0.25)", [32, 96, 96, 64], +"hsla(210 50% 25% / 0.25)", [32, 64, 96, 64], +"hsla(240 50% 25% / 0.25)", [32, 32, 96, 64], +"hsla(270 50% 25% / 0.25)", [64, 32, 96, 64], +"hsla(300 50% 25% / 0.25)", [96, 32, 96, 64], +"hsla(330 50% 25% / 0.25)", [96, 32, 64, 64], +"hsla(0 62.5% 25% / 0.25)", [104, 24, 24, 64], +"hsla(30 62.5% 25% / 0.25)", [104, 64, 24, 64], +"hsla(60 62.5% 25% / 0.25)", [104, 104, 24, 64], +"hsla(90 62.5% 25% / 0.25)", [64, 104, 24, 64], +"hsla(120 62.5% 25% / 0.25)", [24, 104, 24, 64], +"hsla(150 62.5% 25% / 0.25)", [24, 104, 64, 64], +"hsla(180 62.5% 25% / 0.25)", [24, 104, 104, 64], +"hsla(210 62.5% 25% / 0.25)", [24, 64, 104, 64], +"hsla(240 62.5% 25% / 0.25)", [24, 24, 104, 64], +"hsla(270 62.5% 25% / 0.25)", [64, 24, 104, 64], +"hsla(300 62.5% 25% / 0.25)", [104, 24, 104, 64], +"hsla(330 62.5% 25% / 0.25)", [104, 24, 64, 64], +"hsla(0 75% 25% / 0.25)", [112, 16, 16, 64], +"hsla(30 75% 25% / 0.25)", [112, 64, 16, 64], +"hsla(60 75% 25% / 0.25)", [112, 112, 16, 64], +"hsla(90 75% 25% / 0.25)", [64, 112, 16, 64], +"hsla(120 75% 25% / 0.25)", [16, 112, 16, 64], +"hsla(150 75% 25% / 0.25)", [16, 112, 64, 64], +"hsla(180 75% 25% / 0.25)", [16, 112, 112, 64], +"hsla(210 75% 25% / 0.25)", [16, 64, 112, 64], +"hsla(240 75% 25% / 0.25)", [16, 16, 112, 64], +"hsla(270 75% 25% / 0.25)", [64, 16, 112, 64], +"hsla(300 75% 25% / 0.25)", [112, 16, 112, 64], +"hsla(330 75% 25% / 0.25)", [112, 16, 64, 64], +"hsla(0 87.5% 25% / 0.25)", [120, 8, 8, 64], +"hsla(30 87.5% 25% / 0.25)", [120, 64, 8, 64], +"hsla(60 87.5% 25% / 0.25)", [120, 120, 8, 64], +"hsla(90 87.5% 25% / 0.25)", [64, 120, 8, 64], +"hsla(120 87.5% 25% / 0.25)", [8, 120, 8, 64], +"hsla(150 87.5% 25% / 0.25)", [8, 120, 64, 64], +"hsla(180 87.5% 25% / 0.25)", [8, 120, 120, 64], +"hsla(210 87.5% 25% / 0.25)", [8, 64, 120, 64], +"hsla(240 87.5% 25% / 0.25)", [8, 8, 120, 64], +"hsla(270 87.5% 25% / 0.25)", [64, 8, 120, 64], +"hsla(300 87.5% 25% / 0.25)", [120, 8, 120, 64], +"hsla(330 87.5% 25% / 0.25)", [120, 8, 64, 64], +"hsla(0 100% 25% / 0.25)", [128, 0, 0, 64], +"hsla(30 100% 25% / 0.25)", [128, 64, 0, 64], +"hsla(60 100% 25% / 0.25)", [128, 128, 0, 64], +"hsla(90 100% 25% / 0.25)", [64, 128, 0, 64], +"hsla(120 100% 25% / 0.25)", [0, 128, 0, 64], +"hsla(150 100% 25% / 0.25)", [0, 128, 64, 64], +"hsla(180 100% 25% / 0.25)", [0, 128, 128, 64], +"hsla(210 100% 25% / 0.25)", [0, 64, 128, 64], +"hsla(240 100% 25% / 0.25)", [0, 0, 128, 64], +"hsla(270 100% 25% / 0.25)", [64, 0, 128, 64], +"hsla(300 100% 25% / 0.25)", [128, 0, 128, 64], +"hsla(330 100% 25% / 0.25)", [128, 0, 64, 64], +"hsla(0 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(30 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(60 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(90 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(120 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(150 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(180 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(210 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(240 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(270 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(300 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(330 0% 37.5% / 0.25)", [96, 96, 96, 64], +"hsla(0 12.5% 37.5% / 0.25)", [108, 84, 84, 64], +"hsla(30 12.5% 37.5% / 0.25)", [108, 96, 84, 64], +"hsla(60 12.5% 37.5% / 0.25)", [108, 108, 84, 64], +"hsla(90 12.5% 37.5% / 0.25)", [96, 108, 84, 64], +"hsla(120 12.5% 37.5% / 0.25)", [84, 108, 84, 64], +"hsla(150 12.5% 37.5% / 0.25)", [84, 108, 96, 64], +"hsla(180 12.5% 37.5% / 0.25)", [84, 108, 108, 64], +"hsla(210 12.5% 37.5% / 0.25)", [84, 96, 108, 64], +"hsla(240 12.5% 37.5% / 0.25)", [84, 84, 108, 64], +"hsla(270 12.5% 37.5% / 0.25)", [96, 84, 108, 64], +"hsla(300 12.5% 37.5% / 0.25)", [108, 84, 108, 64], +"hsla(330 12.5% 37.5% / 0.25)", [108, 84, 96, 64], +"hsla(0 25% 37.5% / 0.25)", [120, 72, 72, 64], +"hsla(30 25% 37.5% / 0.25)", [120, 96, 72, 64], +"hsla(60 25% 37.5% / 0.25)", [120, 120, 72, 64], +"hsla(90 25% 37.5% / 0.25)", [96, 120, 72, 64], +"hsla(120 25% 37.5% / 0.25)", [72, 120, 72, 64], +"hsla(150 25% 37.5% / 0.25)", [72, 120, 96, 64], +"hsla(180 25% 37.5% / 0.25)", [72, 120, 120, 64], +"hsla(210 25% 37.5% / 0.25)", [72, 96, 120, 64], +"hsla(240 25% 37.5% / 0.25)", [72, 72, 120, 64], +"hsla(270 25% 37.5% / 0.25)", [96, 72, 120, 64], +"hsla(300 25% 37.5% / 0.25)", [120, 72, 120, 64], +"hsla(330 25% 37.5% / 0.25)", [120, 72, 96, 64], +"hsla(0 37.5% 37.5% / 0.25)", [132, 60, 60, 64], +"hsla(30 37.5% 37.5% / 0.25)", [132, 96, 60, 64], +"hsla(60 37.5% 37.5% / 0.25)", [132, 132, 60, 64], +"hsla(90 37.5% 37.5% / 0.25)", [96, 132, 60, 64], +"hsla(120 37.5% 37.5% / 0.25)", [60, 132, 60, 64], +"hsla(150 37.5% 37.5% / 0.25)", [60, 132, 96, 64], +"hsla(180 37.5% 37.5% / 0.25)", [60, 132, 132, 64], +"hsla(210 37.5% 37.5% / 0.25)", [60, 96, 132, 64], +"hsla(240 37.5% 37.5% / 0.25)", [60, 60, 132, 64], +"hsla(270 37.5% 37.5% / 0.25)", [96, 60, 132, 64], +"hsla(300 37.5% 37.5% / 0.25)", [132, 60, 132, 64], +"hsla(330 37.5% 37.5% / 0.25)", [132, 60, 96, 64], +"hsla(0 50% 37.5% / 0.25)", [144, 48, 48, 64], +"hsla(30 50% 37.5% / 0.25)", [144, 96, 48, 64], +"hsla(60 50% 37.5% / 0.25)", [144, 144, 48, 64], +"hsla(90 50% 37.5% / 0.25)", [96, 144, 48, 64], +"hsla(120 50% 37.5% / 0.25)", [48, 144, 48, 64], +"hsla(150 50% 37.5% / 0.25)", [48, 144, 96, 64], +"hsla(180 50% 37.5% / 0.25)", [48, 144, 144, 64], +"hsla(210 50% 37.5% / 0.25)", [48, 96, 144, 64], +"hsla(240 50% 37.5% / 0.25)", [48, 48, 144, 64], +"hsla(270 50% 37.5% / 0.25)", [96, 48, 144, 64], +"hsla(300 50% 37.5% / 0.25)", [144, 48, 144, 64], +"hsla(330 50% 37.5% / 0.25)", [144, 48, 96, 64], +"hsla(0 62.5% 37.5% / 0.25)", [156, 36, 36, 64], +"hsla(30 62.5% 37.5% / 0.25)", [156, 96, 36, 64], +"hsla(60 62.5% 37.5% / 0.25)", [156, 156, 36, 64], +"hsla(90 62.5% 37.5% / 0.25)", [96, 156, 36, 64], +"hsla(120 62.5% 37.5% / 0.25)", [36, 156, 36, 64], +"hsla(150 62.5% 37.5% / 0.25)", [36, 156, 96, 64], +"hsla(180 62.5% 37.5% / 0.25)", [36, 156, 156, 64], +"hsla(210 62.5% 37.5% / 0.25)", [36, 96, 156, 64], +"hsla(240 62.5% 37.5% / 0.25)", [36, 36, 156, 64], +"hsla(270 62.5% 37.5% / 0.25)", [96, 36, 156, 64], +"hsla(300 62.5% 37.5% / 0.25)", [156, 36, 156, 64], +"hsla(330 62.5% 37.5% / 0.25)", [156, 36, 96, 64], +"hsla(0 75% 37.5% / 0.25)", [168, 24, 24, 64], +"hsla(30 75% 37.5% / 0.25)", [168, 96, 24, 64], +"hsla(60 75% 37.5% / 0.25)", [168, 168, 24, 64], +"hsla(90 75% 37.5% / 0.25)", [96, 168, 24, 64], +"hsla(120 75% 37.5% / 0.25)", [24, 168, 24, 64], +"hsla(150 75% 37.5% / 0.25)", [24, 168, 96, 64], +"hsla(180 75% 37.5% / 0.25)", [24, 168, 168, 64], +"hsla(210 75% 37.5% / 0.25)", [24, 96, 168, 64], +"hsla(240 75% 37.5% / 0.25)", [24, 24, 168, 64], +"hsla(270 75% 37.5% / 0.25)", [96, 24, 168, 64], +"hsla(300 75% 37.5% / 0.25)", [168, 24, 168, 64], +"hsla(330 75% 37.5% / 0.25)", [168, 24, 96, 64], +"hsla(0 87.5% 37.5% / 0.25)", [180, 12, 12, 64], +"hsla(30 87.5% 37.5% / 0.25)", [180, 96, 12, 64], +"hsla(60 87.5% 37.5% / 0.25)", [180, 180, 12, 64], +"hsla(90 87.5% 37.5% / 0.25)", [96, 180, 12, 64], +"hsla(120 87.5% 37.5% / 0.25)", [12, 180, 12, 64], +"hsla(150 87.5% 37.5% / 0.25)", [12, 180, 96, 64], +"hsla(180 87.5% 37.5% / 0.25)", [12, 180, 180, 64], +"hsla(210 87.5% 37.5% / 0.25)", [12, 96, 180, 64], +"hsla(240 87.5% 37.5% / 0.25)", [12, 12, 180, 64], +"hsla(270 87.5% 37.5% / 0.25)", [96, 12, 180, 64], +"hsla(300 87.5% 37.5% / 0.25)", [180, 12, 180, 64], +"hsla(330 87.5% 37.5% / 0.25)", [180, 12, 96, 64], +"hsla(0 100% 37.5% / 0.25)", [192, 0, 0, 64], +"hsla(30 100% 37.5% / 0.25)", [192, 96, 0, 64], +"hsla(60 100% 37.5% / 0.25)", [192, 192, 0, 64], +"hsla(90 100% 37.5% / 0.25)", [96, 192, 0, 64], +"hsla(120 100% 37.5% / 0.25)", [0, 192, 0, 64], +"hsla(150 100% 37.5% / 0.25)", [0, 192, 96, 64], +"hsla(180 100% 37.5% / 0.25)", [0, 192, 192, 64], +"hsla(210 100% 37.5% / 0.25)", [0, 96, 192, 64], +"hsla(240 100% 37.5% / 0.25)", [0, 0, 192, 64], +"hsla(270 100% 37.5% / 0.25)", [96, 0, 192, 64], +"hsla(300 100% 37.5% / 0.25)", [192, 0, 192, 64], +"hsla(330 100% 37.5% / 0.25)", [192, 0, 96, 64], +"hsla(0 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(30 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(60 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(90 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(120 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(150 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(180 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(210 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(240 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(270 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(300 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(330 0% 50% / 0.25)", [128, 128, 128, 64], +"hsla(0 12.5% 50% / 0.25)", [144, 112, 112, 64], +"hsla(30 12.5% 50% / 0.25)", [144, 128, 112, 64], +"hsla(60 12.5% 50% / 0.25)", [144, 144, 112, 64], +"hsla(90 12.5% 50% / 0.25)", [128, 144, 112, 64], +"hsla(120 12.5% 50% / 0.25)", [112, 144, 112, 64], +"hsla(150 12.5% 50% / 0.25)", [112, 144, 128, 64], +"hsla(180 12.5% 50% / 0.25)", [112, 144, 144, 64], +"hsla(210 12.5% 50% / 0.25)", [112, 128, 144, 64], +"hsla(240 12.5% 50% / 0.25)", [112, 112, 144, 64], +"hsla(270 12.5% 50% / 0.25)", [128, 112, 144, 64], +"hsla(300 12.5% 50% / 0.25)", [144, 112, 144, 64], +"hsla(330 12.5% 50% / 0.25)", [144, 112, 128, 64], +"hsla(0 25% 50% / 0.25)", [160, 96, 96, 64], +"hsla(30 25% 50% / 0.25)", [160, 128, 96, 64], +"hsla(60 25% 50% / 0.25)", [160, 160, 96, 64], +"hsla(90 25% 50% / 0.25)", [128, 160, 96, 64], +"hsla(120 25% 50% / 0.25)", [96, 160, 96, 64], +"hsla(150 25% 50% / 0.25)", [96, 160, 128, 64], +"hsla(180 25% 50% / 0.25)", [96, 160, 160, 64], +"hsla(210 25% 50% / 0.25)", [96, 128, 160, 64], +"hsla(240 25% 50% / 0.25)", [96, 96, 160, 64], +"hsla(270 25% 50% / 0.25)", [128, 96, 160, 64], +"hsla(300 25% 50% / 0.25)", [160, 96, 160, 64], +"hsla(330 25% 50% / 0.25)", [160, 96, 128, 64], +"hsla(0 37.5% 50% / 0.25)", [176, 80, 80, 64], +"hsla(30 37.5% 50% / 0.25)", [176, 128, 80, 64], +"hsla(60 37.5% 50% / 0.25)", [176, 176, 80, 64], +"hsla(90 37.5% 50% / 0.25)", [128, 176, 80, 64], +"hsla(120 37.5% 50% / 0.25)", [80, 176, 80, 64], +"hsla(150 37.5% 50% / 0.25)", [80, 176, 128, 64], +"hsla(180 37.5% 50% / 0.25)", [80, 176, 176, 64], +"hsla(210 37.5% 50% / 0.25)", [80, 128, 176, 64], +"hsla(240 37.5% 50% / 0.25)", [80, 80, 176, 64], +"hsla(270 37.5% 50% / 0.25)", [128, 80, 176, 64], +"hsla(300 37.5% 50% / 0.25)", [176, 80, 176, 64], +"hsla(330 37.5% 50% / 0.25)", [176, 80, 128, 64], +"hsla(0 50% 50% / 0.25)", [192, 64, 64, 64], +"hsla(30 50% 50% / 0.25)", [192, 128, 64, 64], +"hsla(60 50% 50% / 0.25)", [192, 192, 64, 64], +"hsla(90 50% 50% / 0.25)", [128, 192, 64, 64], +"hsla(120 50% 50% / 0.25)", [64, 192, 64, 64], +"hsla(150 50% 50% / 0.25)", [64, 192, 128, 64], +"hsla(180 50% 50% / 0.25)", [64, 192, 192, 64], +"hsla(210 50% 50% / 0.25)", [64, 128, 192, 64], +"hsla(240 50% 50% / 0.25)", [64, 64, 192, 64], +"hsla(270 50% 50% / 0.25)", [128, 64, 192, 64], +"hsla(300 50% 50% / 0.25)", [192, 64, 192, 64], +"hsla(330 50% 50% / 0.25)", [192, 64, 128, 64], +"hsla(0 62.5% 50% / 0.25)", [208, 48, 48, 64], +"hsla(30 62.5% 50% / 0.25)", [208, 128, 48, 64], +"hsla(60 62.5% 50% / 0.25)", [208, 208, 48, 64], +"hsla(90 62.5% 50% / 0.25)", [128, 208, 48, 64], +"hsla(120 62.5% 50% / 0.25)", [48, 208, 48, 64], +"hsla(150 62.5% 50% / 0.25)", [48, 208, 128, 64], +"hsla(180 62.5% 50% / 0.25)", [48, 208, 208, 64], +"hsla(210 62.5% 50% / 0.25)", [48, 128, 208, 64], +"hsla(240 62.5% 50% / 0.25)", [48, 48, 208, 64], +"hsla(270 62.5% 50% / 0.25)", [128, 48, 208, 64], +"hsla(300 62.5% 50% / 0.25)", [208, 48, 208, 64], +"hsla(330 62.5% 50% / 0.25)", [208, 48, 128, 64], +"hsla(0 75% 50% / 0.25)", [224, 32, 32, 64], +"hsla(30 75% 50% / 0.25)", [224, 128, 32, 64], +"hsla(60 75% 50% / 0.25)", [224, 224, 32, 64], +"hsla(90 75% 50% / 0.25)", [128, 224, 32, 64], +"hsla(120 75% 50% / 0.25)", [32, 224, 32, 64], +"hsla(150 75% 50% / 0.25)", [32, 224, 128, 64], +"hsla(180 75% 50% / 0.25)", [32, 224, 224, 64], +"hsla(210 75% 50% / 0.25)", [32, 128, 224, 64], +"hsla(240 75% 50% / 0.25)", [32, 32, 224, 64], +"hsla(270 75% 50% / 0.25)", [128, 32, 224, 64], +"hsla(300 75% 50% / 0.25)", [224, 32, 224, 64], +"hsla(330 75% 50% / 0.25)", [224, 32, 128, 64], +"hsla(0 87.5% 50% / 0.25)", [240, 16, 16, 64], +"hsla(30 87.5% 50% / 0.25)", [240, 128, 16, 64], +"hsla(60 87.5% 50% / 0.25)", [240, 240, 16, 64], +"hsla(90 87.5% 50% / 0.25)", [128, 240, 16, 64], +"hsla(120 87.5% 50% / 0.25)", [16, 240, 16, 64], +"hsla(150 87.5% 50% / 0.25)", [16, 240, 128, 64], +"hsla(180 87.5% 50% / 0.25)", [16, 240, 240, 64], +"hsla(210 87.5% 50% / 0.25)", [16, 128, 240, 64], +"hsla(240 87.5% 50% / 0.25)", [16, 16, 240, 64], +"hsla(270 87.5% 50% / 0.25)", [128, 16, 240, 64], +"hsla(300 87.5% 50% / 0.25)", [240, 16, 240, 64], +"hsla(330 87.5% 50% / 0.25)", [240, 16, 128, 64], +"hsla(0 100% 50% / 0.25)", [255, 0, 0, 64], +"hsla(30 100% 50% / 0.25)", [255, 128, 0, 64], +"hsla(60 100% 50% / 0.25)", [255, 255, 0, 64], +"hsla(90 100% 50% / 0.25)", [128, 255, 0, 64], +"hsla(120 100% 50% / 0.25)", [0, 255, 0, 64], +"hsla(150 100% 50% / 0.25)", [0, 255, 128, 64], +"hsla(180 100% 50% / 0.25)", [0, 255, 255, 64], +"hsla(210 100% 50% / 0.25)", [0, 128, 255, 64], +"hsla(240 100% 50% / 0.25)", [0, 0, 255, 64], +"hsla(270 100% 50% / 0.25)", [128, 0, 255, 64], +"hsla(300 100% 50% / 0.25)", [255, 0, 255, 64], +"hsla(330 100% 50% / 0.25)", [255, 0, 128, 64], +"hsla(0 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(30 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(60 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(90 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(120 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(150 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(180 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(210 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(240 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(270 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(300 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(330 0% 62.5% / 0.25)", [160, 160, 160, 64], +"hsla(0 12.5% 62.5% / 0.25)", [172, 148, 148, 64], +"hsla(30 12.5% 62.5% / 0.25)", [172, 160, 148, 64], +"hsla(60 12.5% 62.5% / 0.25)", [172, 172, 148, 64], +"hsla(90 12.5% 62.5% / 0.25)", [160, 172, 148, 64], +"hsla(120 12.5% 62.5% / 0.25)", [148, 172, 148, 64], +"hsla(150 12.5% 62.5% / 0.25)", [148, 172, 160, 64], +"hsla(180 12.5% 62.5% / 0.25)", [148, 172, 172, 64], +"hsla(210 12.5% 62.5% / 0.25)", [148, 160, 172, 64], +"hsla(240 12.5% 62.5% / 0.25)", [148, 148, 172, 64], +"hsla(270 12.5% 62.5% / 0.25)", [160, 148, 172, 64], +"hsla(300 12.5% 62.5% / 0.25)", [172, 148, 172, 64], +"hsla(330 12.5% 62.5% / 0.25)", [172, 148, 160, 64], +"hsla(0 25% 62.5% / 0.25)", [184, 136, 136, 64], +"hsla(30 25% 62.5% / 0.25)", [184, 160, 136, 64], +"hsla(60 25% 62.5% / 0.25)", [184, 184, 136, 64], +"hsla(90 25% 62.5% / 0.25)", [160, 184, 136, 64], +"hsla(120 25% 62.5% / 0.25)", [136, 184, 136, 64], +"hsla(150 25% 62.5% / 0.25)", [136, 184, 160, 64], +"hsla(180 25% 62.5% / 0.25)", [136, 184, 184, 64], +"hsla(210 25% 62.5% / 0.25)", [136, 160, 184, 64], +"hsla(240 25% 62.5% / 0.25)", [136, 136, 184, 64], +"hsla(270 25% 62.5% / 0.25)", [160, 136, 184, 64], +"hsla(300 25% 62.5% / 0.25)", [184, 136, 184, 64], +"hsla(330 25% 62.5% / 0.25)", [184, 136, 160, 64], +"hsla(0 37.5% 62.5% / 0.25)", [196, 124, 124, 64], +"hsla(30 37.5% 62.5% / 0.25)", [196, 160, 124, 64], +"hsla(60 37.5% 62.5% / 0.25)", [196, 196, 124, 64], +"hsla(90 37.5% 62.5% / 0.25)", [160, 196, 124, 64], +"hsla(120 37.5% 62.5% / 0.25)", [124, 196, 124, 64], +"hsla(150 37.5% 62.5% / 0.25)", [124, 196, 160, 64], +"hsla(180 37.5% 62.5% / 0.25)", [124, 196, 196, 64], +"hsla(210 37.5% 62.5% / 0.25)", [124, 160, 196, 64], +"hsla(240 37.5% 62.5% / 0.25)", [124, 124, 196, 64], +"hsla(270 37.5% 62.5% / 0.25)", [160, 124, 196, 64], +"hsla(300 37.5% 62.5% / 0.25)", [196, 124, 196, 64], +"hsla(330 37.5% 62.5% / 0.25)", [196, 124, 160, 64], +"hsla(0 50% 62.5% / 0.25)", [208, 112, 112, 64], +"hsla(30 50% 62.5% / 0.25)", [208, 160, 112, 64], +"hsla(60 50% 62.5% / 0.25)", [208, 208, 112, 64], +"hsla(90 50% 62.5% / 0.25)", [160, 208, 112, 64], +"hsla(120 50% 62.5% / 0.25)", [112, 208, 112, 64], +"hsla(150 50% 62.5% / 0.25)", [112, 208, 160, 64], +"hsla(180 50% 62.5% / 0.25)", [112, 208, 208, 64], +"hsla(210 50% 62.5% / 0.25)", [112, 160, 208, 64], +"hsla(240 50% 62.5% / 0.25)", [112, 112, 208, 64], +"hsla(270 50% 62.5% / 0.25)", [160, 112, 208, 64], +"hsla(300 50% 62.5% / 0.25)", [208, 112, 208, 64], +"hsla(330 50% 62.5% / 0.25)", [208, 112, 160, 64], +"hsla(0 62.5% 62.5% / 0.25)", [220, 100, 100, 64], +"hsla(30 62.5% 62.5% / 0.25)", [220, 160, 100, 64], +"hsla(60 62.5% 62.5% / 0.25)", [220, 220, 100, 64], +"hsla(90 62.5% 62.5% / 0.25)", [160, 220, 100, 64], +"hsla(120 62.5% 62.5% / 0.25)", [100, 220, 100, 64], +"hsla(150 62.5% 62.5% / 0.25)", [100, 220, 160, 64], +"hsla(180 62.5% 62.5% / 0.25)", [100, 220, 220, 64], +"hsla(210 62.5% 62.5% / 0.25)", [100, 160, 220, 64], +"hsla(240 62.5% 62.5% / 0.25)", [100, 100, 220, 64], +"hsla(270 62.5% 62.5% / 0.25)", [160, 100, 220, 64], +"hsla(300 62.5% 62.5% / 0.25)", [220, 100, 220, 64], +"hsla(330 62.5% 62.5% / 0.25)", [220, 100, 160, 64], +"hsla(0 75% 62.5% / 0.25)", [232, 88, 88, 64], +"hsla(30 75% 62.5% / 0.25)", [232, 160, 88, 64], +"hsla(60 75% 62.5% / 0.25)", [232, 232, 88, 64], +"hsla(90 75% 62.5% / 0.25)", [160, 232, 88, 64], +"hsla(120 75% 62.5% / 0.25)", [88, 232, 88, 64], +"hsla(150 75% 62.5% / 0.25)", [88, 232, 160, 64], +"hsla(180 75% 62.5% / 0.25)", [88, 232, 232, 64], +"hsla(210 75% 62.5% / 0.25)", [88, 160, 232, 64], +"hsla(240 75% 62.5% / 0.25)", [88, 88, 232, 64], +"hsla(270 75% 62.5% / 0.25)", [160, 88, 232, 64], +"hsla(300 75% 62.5% / 0.25)", [232, 88, 232, 64], +"hsla(330 75% 62.5% / 0.25)", [232, 88, 160, 64], +"hsla(0 87.5% 62.5% / 0.25)", [244, 76, 76, 64], +"hsla(30 87.5% 62.5% / 0.25)", [244, 160, 76, 64], +"hsla(60 87.5% 62.5% / 0.25)", [244, 244, 76, 64], +"hsla(90 87.5% 62.5% / 0.25)", [160, 244, 76, 64], +"hsla(120 87.5% 62.5% / 0.25)", [76, 244, 76, 64], +"hsla(150 87.5% 62.5% / 0.25)", [76, 244, 160, 64], +"hsla(180 87.5% 62.5% / 0.25)", [76, 244, 244, 64], +"hsla(210 87.5% 62.5% / 0.25)", [76, 160, 244, 64], +"hsla(240 87.5% 62.5% / 0.25)", [76, 76, 244, 64], +"hsla(270 87.5% 62.5% / 0.25)", [160, 76, 244, 64], +"hsla(300 87.5% 62.5% / 0.25)", [244, 76, 244, 64], +"hsla(330 87.5% 62.5% / 0.25)", [244, 76, 160, 64], +"hsla(0 100% 62.5% / 0.25)", [255, 64, 64, 64], +"hsla(30 100% 62.5% / 0.25)", [255, 160, 64, 64], +"hsla(60 100% 62.5% / 0.25)", [255, 255, 64, 64], +"hsla(90 100% 62.5% / 0.25)", [160, 255, 64, 64], +"hsla(120 100% 62.5% / 0.25)", [64, 255, 64, 64], +"hsla(150 100% 62.5% / 0.25)", [64, 255, 160, 64], +"hsla(180 100% 62.5% / 0.25)", [64, 255, 255, 64], +"hsla(210 100% 62.5% / 0.25)", [64, 160, 255, 64], +"hsla(240 100% 62.5% / 0.25)", [64, 64, 255, 64], +"hsla(270 100% 62.5% / 0.25)", [160, 64, 255, 64], +"hsla(300 100% 62.5% / 0.25)", [255, 64, 255, 64], +"hsla(330 100% 62.5% / 0.25)", [255, 64, 160, 64], +"hsla(0 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(30 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(60 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(90 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(120 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(150 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(180 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(210 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(240 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(270 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(300 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(330 0% 75% / 0.25)", [192, 192, 192, 64], +"hsla(0 12.5% 75% / 0.25)", [200, 184, 184, 64], +"hsla(30 12.5% 75% / 0.25)", [200, 192, 184, 64], +"hsla(60 12.5% 75% / 0.25)", [200, 200, 184, 64], +"hsla(90 12.5% 75% / 0.25)", [192, 200, 184, 64], +"hsla(120 12.5% 75% / 0.25)", [184, 200, 184, 64], +"hsla(150 12.5% 75% / 0.25)", [184, 200, 192, 64], +"hsla(180 12.5% 75% / 0.25)", [184, 200, 200, 64], +"hsla(210 12.5% 75% / 0.25)", [184, 192, 200, 64], +"hsla(240 12.5% 75% / 0.25)", [184, 184, 200, 64], +"hsla(270 12.5% 75% / 0.25)", [192, 184, 200, 64], +"hsla(300 12.5% 75% / 0.25)", [200, 184, 200, 64], +"hsla(330 12.5% 75% / 0.25)", [200, 184, 192, 64], +"hsla(0 25% 75% / 0.25)", [208, 176, 176, 64], +"hsla(30 25% 75% / 0.25)", [208, 192, 176, 64], +"hsla(60 25% 75% / 0.25)", [208, 208, 176, 64], +"hsla(90 25% 75% / 0.25)", [192, 208, 176, 64], +"hsla(120 25% 75% / 0.25)", [176, 208, 176, 64], +"hsla(150 25% 75% / 0.25)", [176, 208, 192, 64], +"hsla(180 25% 75% / 0.25)", [176, 208, 208, 64], +"hsla(210 25% 75% / 0.25)", [176, 192, 208, 64], +"hsla(240 25% 75% / 0.25)", [176, 176, 208, 64], +"hsla(270 25% 75% / 0.25)", [192, 176, 208, 64], +"hsla(300 25% 75% / 0.25)", [208, 176, 208, 64], +"hsla(330 25% 75% / 0.25)", [208, 176, 192, 64], +"hsla(0 37.5% 75% / 0.25)", [216, 168, 168, 64], +"hsla(30 37.5% 75% / 0.25)", [216, 192, 168, 64], +"hsla(60 37.5% 75% / 0.25)", [216, 216, 168, 64], +"hsla(90 37.5% 75% / 0.25)", [192, 216, 168, 64], +"hsla(120 37.5% 75% / 0.25)", [168, 216, 168, 64], +"hsla(150 37.5% 75% / 0.25)", [168, 216, 192, 64], +"hsla(180 37.5% 75% / 0.25)", [168, 216, 216, 64], +"hsla(210 37.5% 75% / 0.25)", [168, 192, 216, 64], +"hsla(240 37.5% 75% / 0.25)", [168, 168, 216, 64], +"hsla(270 37.5% 75% / 0.25)", [192, 168, 216, 64], +"hsla(300 37.5% 75% / 0.25)", [216, 168, 216, 64], +"hsla(330 37.5% 75% / 0.25)", [216, 168, 192, 64], +"hsla(0 50% 75% / 0.25)", [224, 160, 160, 64], +"hsla(30 50% 75% / 0.25)", [224, 192, 160, 64], +"hsla(60 50% 75% / 0.25)", [224, 224, 160, 64], +"hsla(90 50% 75% / 0.25)", [192, 224, 160, 64], +"hsla(120 50% 75% / 0.25)", [160, 224, 160, 64], +"hsla(150 50% 75% / 0.25)", [160, 224, 192, 64], +"hsla(180 50% 75% / 0.25)", [160, 224, 224, 64], +"hsla(210 50% 75% / 0.25)", [160, 192, 224, 64], +"hsla(240 50% 75% / 0.25)", [160, 160, 224, 64], +"hsla(270 50% 75% / 0.25)", [192, 160, 224, 64], +"hsla(300 50% 75% / 0.25)", [224, 160, 224, 64], +"hsla(330 50% 75% / 0.25)", [224, 160, 192, 64], +"hsla(0 62.5% 75% / 0.25)", [232, 152, 152, 64], +"hsla(30 62.5% 75% / 0.25)", [232, 192, 152, 64], +"hsla(60 62.5% 75% / 0.25)", [232, 232, 152, 64], +"hsla(90 62.5% 75% / 0.25)", [192, 232, 152, 64], +"hsla(120 62.5% 75% / 0.25)", [152, 232, 152, 64], +"hsla(150 62.5% 75% / 0.25)", [152, 232, 192, 64], +"hsla(180 62.5% 75% / 0.25)", [152, 232, 232, 64], +"hsla(210 62.5% 75% / 0.25)", [152, 192, 232, 64], +"hsla(240 62.5% 75% / 0.25)", [152, 152, 232, 64], +"hsla(270 62.5% 75% / 0.25)", [192, 152, 232, 64], +"hsla(300 62.5% 75% / 0.25)", [232, 152, 232, 64], +"hsla(330 62.5% 75% / 0.25)", [232, 152, 192, 64], +"hsla(0 75% 75% / 0.25)", [240, 144, 144, 64], +"hsla(30 75% 75% / 0.25)", [240, 192, 144, 64], +"hsla(60 75% 75% / 0.25)", [240, 240, 144, 64], +"hsla(90 75% 75% / 0.25)", [192, 240, 144, 64], +"hsla(120 75% 75% / 0.25)", [144, 240, 144, 64], +"hsla(150 75% 75% / 0.25)", [144, 240, 192, 64], +"hsla(180 75% 75% / 0.25)", [144, 240, 240, 64], +"hsla(210 75% 75% / 0.25)", [144, 192, 240, 64], +"hsla(240 75% 75% / 0.25)", [144, 144, 240, 64], +"hsla(270 75% 75% / 0.25)", [192, 144, 240, 64], +"hsla(300 75% 75% / 0.25)", [240, 144, 240, 64], +"hsla(330 75% 75% / 0.25)", [240, 144, 192, 64], +"hsla(0 87.5% 75% / 0.25)", [248, 136, 136, 64], +"hsla(30 87.5% 75% / 0.25)", [248, 192, 136, 64], +"hsla(60 87.5% 75% / 0.25)", [248, 248, 136, 64], +"hsla(90 87.5% 75% / 0.25)", [192, 248, 136, 64], +"hsla(120 87.5% 75% / 0.25)", [136, 248, 136, 64], +"hsla(150 87.5% 75% / 0.25)", [136, 248, 192, 64], +"hsla(180 87.5% 75% / 0.25)", [136, 248, 248, 64], +"hsla(210 87.5% 75% / 0.25)", [136, 192, 248, 64], +"hsla(240 87.5% 75% / 0.25)", [136, 136, 248, 64], +"hsla(270 87.5% 75% / 0.25)", [192, 136, 248, 64], +"hsla(300 87.5% 75% / 0.25)", [248, 136, 248, 64], +"hsla(330 87.5% 75% / 0.25)", [248, 136, 192, 64], +"hsla(0 100% 75% / 0.25)", [255, 128, 128, 64], +"hsla(30 100% 75% / 0.25)", [255, 192, 128, 64], +"hsla(60 100% 75% / 0.25)", [255, 255, 128, 64], +"hsla(90 100% 75% / 0.25)", [192, 255, 128, 64], +"hsla(120 100% 75% / 0.25)", [128, 255, 128, 64], +"hsla(150 100% 75% / 0.25)", [128, 255, 192, 64], +"hsla(180 100% 75% / 0.25)", [128, 255, 255, 64], +"hsla(210 100% 75% / 0.25)", [128, 192, 255, 64], +"hsla(240 100% 75% / 0.25)", [128, 128, 255, 64], +"hsla(270 100% 75% / 0.25)", [192, 128, 255, 64], +"hsla(300 100% 75% / 0.25)", [255, 128, 255, 64], +"hsla(330 100% 75% / 0.25)", [255, 128, 192, 64], +"hsla(0 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(30 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(60 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(90 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(120 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(150 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(180 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(210 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(240 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(270 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(300 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(330 0% 87.5% / 0.25)", [224, 224, 224, 64], +"hsla(0 12.5% 87.5% / 0.25)", [228, 220, 220, 64], +"hsla(30 12.5% 87.5% / 0.25)", [228, 224, 220, 64], +"hsla(60 12.5% 87.5% / 0.25)", [228, 228, 220, 64], +"hsla(90 12.5% 87.5% / 0.25)", [224, 228, 220, 64], +"hsla(120 12.5% 87.5% / 0.25)", [220, 228, 220, 64], +"hsla(150 12.5% 87.5% / 0.25)", [220, 228, 224, 64], +"hsla(180 12.5% 87.5% / 0.25)", [220, 228, 228, 64], +"hsla(210 12.5% 87.5% / 0.25)", [220, 224, 228, 64], +"hsla(240 12.5% 87.5% / 0.25)", [220, 220, 228, 64], +"hsla(270 12.5% 87.5% / 0.25)", [224, 220, 228, 64], +"hsla(300 12.5% 87.5% / 0.25)", [228, 220, 228, 64], +"hsla(330 12.5% 87.5% / 0.25)", [228, 220, 224, 64], +"hsla(0 25% 87.5% / 0.25)", [232, 216, 216, 64], +"hsla(30 25% 87.5% / 0.25)", [232, 224, 216, 64], +"hsla(60 25% 87.5% / 0.25)", [232, 232, 216, 64], +"hsla(90 25% 87.5% / 0.25)", [224, 232, 216, 64], +"hsla(120 25% 87.5% / 0.25)", [216, 232, 216, 64], +"hsla(150 25% 87.5% / 0.25)", [216, 232, 224, 64], +"hsla(180 25% 87.5% / 0.25)", [216, 232, 232, 64], +"hsla(210 25% 87.5% / 0.25)", [216, 224, 232, 64], +"hsla(240 25% 87.5% / 0.25)", [216, 216, 232, 64], +"hsla(270 25% 87.5% / 0.25)", [224, 216, 232, 64], +"hsla(300 25% 87.5% / 0.25)", [232, 216, 232, 64], +"hsla(330 25% 87.5% / 0.25)", [232, 216, 224, 64], +"hsla(0 37.5% 87.5% / 0.25)", [236, 212, 212, 64], +"hsla(30 37.5% 87.5% / 0.25)", [236, 224, 212, 64], +"hsla(60 37.5% 87.5% / 0.25)", [236, 236, 212, 64], +"hsla(90 37.5% 87.5% / 0.25)", [224, 236, 212, 64], +"hsla(120 37.5% 87.5% / 0.25)", [212, 236, 212, 64], +"hsla(150 37.5% 87.5% / 0.25)", [212, 236, 224, 64], +"hsla(180 37.5% 87.5% / 0.25)", [212, 236, 236, 64], +"hsla(210 37.5% 87.5% / 0.25)", [212, 224, 236, 64], +"hsla(240 37.5% 87.5% / 0.25)", [212, 212, 236, 64], +"hsla(270 37.5% 87.5% / 0.25)", [224, 212, 236, 64], +"hsla(300 37.5% 87.5% / 0.25)", [236, 212, 236, 64], +"hsla(330 37.5% 87.5% / 0.25)", [236, 212, 224, 64], +"hsla(0 50% 87.5% / 0.25)", [240, 208, 208, 64], +"hsla(30 50% 87.5% / 0.25)", [240, 224, 208, 64], +"hsla(60 50% 87.5% / 0.25)", [240, 240, 208, 64], +"hsla(90 50% 87.5% / 0.25)", [224, 240, 208, 64], +"hsla(120 50% 87.5% / 0.25)", [208, 240, 208, 64], +"hsla(150 50% 87.5% / 0.25)", [208, 240, 224, 64], +"hsla(180 50% 87.5% / 0.25)", [208, 240, 240, 64], +"hsla(210 50% 87.5% / 0.25)", [208, 224, 240, 64], +"hsla(240 50% 87.5% / 0.25)", [208, 208, 240, 64], +"hsla(270 50% 87.5% / 0.25)", [224, 208, 240, 64], +"hsla(300 50% 87.5% / 0.25)", [240, 208, 240, 64], +"hsla(330 50% 87.5% / 0.25)", [240, 208, 224, 64], +"hsla(0 62.5% 87.5% / 0.25)", [244, 204, 204, 64], +"hsla(30 62.5% 87.5% / 0.25)", [244, 224, 204, 64], +"hsla(60 62.5% 87.5% / 0.25)", [244, 244, 204, 64], +"hsla(90 62.5% 87.5% / 0.25)", [224, 244, 204, 64], +"hsla(120 62.5% 87.5% / 0.25)", [204, 244, 204, 64], +"hsla(150 62.5% 87.5% / 0.25)", [204, 244, 224, 64], +"hsla(180 62.5% 87.5% / 0.25)", [204, 244, 244, 64], +"hsla(210 62.5% 87.5% / 0.25)", [204, 224, 244, 64], +"hsla(240 62.5% 87.5% / 0.25)", [204, 204, 244, 64], +"hsla(270 62.5% 87.5% / 0.25)", [224, 204, 244, 64], +"hsla(300 62.5% 87.5% / 0.25)", [244, 204, 244, 64], +"hsla(330 62.5% 87.5% / 0.25)", [244, 204, 224, 64], +"hsla(0 75% 87.5% / 0.25)", [248, 200, 200, 64], +"hsla(30 75% 87.5% / 0.25)", [248, 224, 200, 64], +"hsla(60 75% 87.5% / 0.25)", [248, 248, 200, 64], +"hsla(90 75% 87.5% / 0.25)", [224, 248, 200, 64], +"hsla(120 75% 87.5% / 0.25)", [200, 248, 200, 64], +"hsla(150 75% 87.5% / 0.25)", [200, 248, 224, 64], +"hsla(180 75% 87.5% / 0.25)", [200, 248, 248, 64], +"hsla(210 75% 87.5% / 0.25)", [200, 224, 248, 64], +"hsla(240 75% 87.5% / 0.25)", [200, 200, 248, 64], +"hsla(270 75% 87.5% / 0.25)", [224, 200, 248, 64], +"hsla(300 75% 87.5% / 0.25)", [248, 200, 248, 64], +"hsla(330 75% 87.5% / 0.25)", [248, 200, 224, 64], +"hsla(0 87.5% 87.5% / 0.25)", [252, 196, 196, 64], +"hsla(30 87.5% 87.5% / 0.25)", [252, 224, 196, 64], +"hsla(60 87.5% 87.5% / 0.25)", [252, 252, 196, 64], +"hsla(90 87.5% 87.5% / 0.25)", [224, 252, 196, 64], +"hsla(120 87.5% 87.5% / 0.25)", [196, 252, 196, 64], +"hsla(150 87.5% 87.5% / 0.25)", [196, 252, 224, 64], +"hsla(180 87.5% 87.5% / 0.25)", [196, 252, 252, 64], +"hsla(210 87.5% 87.5% / 0.25)", [196, 224, 252, 64], +"hsla(240 87.5% 87.5% / 0.25)", [196, 196, 252, 64], +"hsla(270 87.5% 87.5% / 0.25)", [224, 196, 252, 64], +"hsla(300 87.5% 87.5% / 0.25)", [252, 196, 252, 64], +"hsla(330 87.5% 87.5% / 0.25)", [252, 196, 224, 64], +"hsla(0 100% 87.5% / 0.25)", [255, 192, 192, 64], +"hsla(30 100% 87.5% / 0.25)", [255, 224, 192, 64], +"hsla(60 100% 87.5% / 0.25)", [255, 255, 192, 64], +"hsla(90 100% 87.5% / 0.25)", [224, 255, 192, 64], +"hsla(120 100% 87.5% / 0.25)", [192, 255, 192, 64], +"hsla(150 100% 87.5% / 0.25)", [192, 255, 224, 64], +"hsla(180 100% 87.5% / 0.25)", [192, 255, 255, 64], +"hsla(210 100% 87.5% / 0.25)", [192, 224, 255, 64], +"hsla(240 100% 87.5% / 0.25)", [192, 192, 255, 64], +"hsla(270 100% 87.5% / 0.25)", [224, 192, 255, 64], +"hsla(300 100% 87.5% / 0.25)", [255, 192, 255, 64], +"hsla(330 100% 87.5% / 0.25)", [255, 192, 224, 64], +"hsla(0 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(30 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(60 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(90 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(120 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(150 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(180 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(210 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(240 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(270 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(300 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(330 0% 100% / 0.25)", [255, 255, 255, 64], +"hsla(0 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(30 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(60 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(90 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(120 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(150 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(180 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(210 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(240 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(270 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(300 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(330 12.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(0 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(30 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(60 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(90 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(120 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(150 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(180 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(210 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(240 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(270 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(300 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(330 25% 100% / 0.25)", [255, 255, 255, 64], +"hsla(0 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(30 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(60 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(90 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(120 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(150 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(180 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(210 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(240 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(270 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(300 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(330 37.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(0 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(30 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(60 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(90 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(120 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(150 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(180 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(210 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(240 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(270 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(300 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(330 50% 100% / 0.25)", [255, 255, 255, 64], +"hsla(0 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(30 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(60 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(90 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(120 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(150 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(180 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(210 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(240 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(270 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(300 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(330 62.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(0 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(30 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(60 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(90 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(120 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(150 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(180 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(210 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(240 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(270 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(300 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(330 75% 100% / 0.25)", [255, 255, 255, 64], +"hsla(0 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(30 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(60 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(90 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(120 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(150 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(180 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(210 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(240 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(270 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(300 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(330 87.5% 100% / 0.25)", [255, 255, 255, 64], +"hsla(0 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(30 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(60 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(90 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(120 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(150 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(180 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(210 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(240 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(270 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(300 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(330 100% 100% / 0.25)", [255, 255, 255, 64], +"hsla(0 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(30 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(60 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(90 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(120 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(150 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(180 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(210 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(240 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(270 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(300 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(330 0% 0% / 0.0)", [0, 0, 0, 0], +"hsla(0 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(30 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(60 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(90 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(120 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(150 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(180 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(210 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(240 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(270 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(300 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(330 12.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(0 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(30 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(60 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(90 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(120 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(150 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(180 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(210 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(240 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(270 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(300 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(330 25% 0% / 0.0)", [0, 0, 0, 0], +"hsla(0 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(30 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(60 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(90 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(120 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(150 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(180 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(210 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(240 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(270 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(300 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(330 37.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(0 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(30 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(60 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(90 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(120 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(150 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(180 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(210 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(240 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(270 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(300 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(330 50% 0% / 0.0)", [0, 0, 0, 0], +"hsla(0 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(30 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(60 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(90 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(120 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(150 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(180 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(210 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(240 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(270 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(300 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(330 62.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(0 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(30 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(60 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(90 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(120 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(150 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(180 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(210 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(240 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(270 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(300 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(330 75% 0% / 0.0)", [0, 0, 0, 0], +"hsla(0 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(30 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(60 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(90 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(120 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(150 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(180 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(210 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(240 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(270 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(300 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(330 87.5% 0% / 0.0)", [0, 0, 0, 0], +"hsla(0 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(30 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(60 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(90 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(120 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(150 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(180 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(210 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(240 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(270 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(300 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(330 100% 0% / 0.0)", [0, 0, 0, 0], +"hsla(0 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(30 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(60 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(90 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(120 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(150 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(180 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(210 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(240 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(270 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(300 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(330 0% 12.5% / 0.0)", [32, 32, 32, 0], +"hsla(0 12.5% 12.5% / 0.0)", [36, 28, 28, 0], +"hsla(30 12.5% 12.5% / 0.0)", [36, 32, 28, 0], +"hsla(60 12.5% 12.5% / 0.0)", [36, 36, 28, 0], +"hsla(90 12.5% 12.5% / 0.0)", [32, 36, 28, 0], +"hsla(120 12.5% 12.5% / 0.0)", [28, 36, 28, 0], +"hsla(150 12.5% 12.5% / 0.0)", [28, 36, 32, 0], +"hsla(180 12.5% 12.5% / 0.0)", [28, 36, 36, 0], +"hsla(210 12.5% 12.5% / 0.0)", [28, 32, 36, 0], +"hsla(240 12.5% 12.5% / 0.0)", [28, 28, 36, 0], +"hsla(270 12.5% 12.5% / 0.0)", [32, 28, 36, 0], +"hsla(300 12.5% 12.5% / 0.0)", [36, 28, 36, 0], +"hsla(330 12.5% 12.5% / 0.0)", [36, 28, 32, 0], +"hsla(0 25% 12.5% / 0.0)", [40, 24, 24, 0], +"hsla(30 25% 12.5% / 0.0)", [40, 32, 24, 0], +"hsla(60 25% 12.5% / 0.0)", [40, 40, 24, 0], +"hsla(90 25% 12.5% / 0.0)", [32, 40, 24, 0], +"hsla(120 25% 12.5% / 0.0)", [24, 40, 24, 0], +"hsla(150 25% 12.5% / 0.0)", [24, 40, 32, 0], +"hsla(180 25% 12.5% / 0.0)", [24, 40, 40, 0], +"hsla(210 25% 12.5% / 0.0)", [24, 32, 40, 0], +"hsla(240 25% 12.5% / 0.0)", [24, 24, 40, 0], +"hsla(270 25% 12.5% / 0.0)", [32, 24, 40, 0], +"hsla(300 25% 12.5% / 0.0)", [40, 24, 40, 0], +"hsla(330 25% 12.5% / 0.0)", [40, 24, 32, 0], +"hsla(0 37.5% 12.5% / 0.0)", [44, 20, 20, 0], +"hsla(30 37.5% 12.5% / 0.0)", [44, 32, 20, 0], +"hsla(60 37.5% 12.5% / 0.0)", [44, 44, 20, 0], +"hsla(90 37.5% 12.5% / 0.0)", [32, 44, 20, 0], +"hsla(120 37.5% 12.5% / 0.0)", [20, 44, 20, 0], +"hsla(150 37.5% 12.5% / 0.0)", [20, 44, 32, 0], +"hsla(180 37.5% 12.5% / 0.0)", [20, 44, 44, 0], +"hsla(210 37.5% 12.5% / 0.0)", [20, 32, 44, 0], +"hsla(240 37.5% 12.5% / 0.0)", [20, 20, 44, 0], +"hsla(270 37.5% 12.5% / 0.0)", [32, 20, 44, 0], +"hsla(300 37.5% 12.5% / 0.0)", [44, 20, 44, 0], +"hsla(330 37.5% 12.5% / 0.0)", [44, 20, 32, 0], +"hsla(0 50% 12.5% / 0.0)", [48, 16, 16, 0], +"hsla(30 50% 12.5% / 0.0)", [48, 32, 16, 0], +"hsla(60 50% 12.5% / 0.0)", [48, 48, 16, 0], +"hsla(90 50% 12.5% / 0.0)", [32, 48, 16, 0], +"hsla(120 50% 12.5% / 0.0)", [16, 48, 16, 0], +"hsla(150 50% 12.5% / 0.0)", [16, 48, 32, 0], +"hsla(180 50% 12.5% / 0.0)", [16, 48, 48, 0], +"hsla(210 50% 12.5% / 0.0)", [16, 32, 48, 0], +"hsla(240 50% 12.5% / 0.0)", [16, 16, 48, 0], +"hsla(270 50% 12.5% / 0.0)", [32, 16, 48, 0], +"hsla(300 50% 12.5% / 0.0)", [48, 16, 48, 0], +"hsla(330 50% 12.5% / 0.0)", [48, 16, 32, 0], +"hsla(0 62.5% 12.5% / 0.0)", [52, 12, 12, 0], +"hsla(30 62.5% 12.5% / 0.0)", [52, 32, 12, 0], +"hsla(60 62.5% 12.5% / 0.0)", [52, 52, 12, 0], +"hsla(90 62.5% 12.5% / 0.0)", [32, 52, 12, 0], +"hsla(120 62.5% 12.5% / 0.0)", [12, 52, 12, 0], +"hsla(150 62.5% 12.5% / 0.0)", [12, 52, 32, 0], +"hsla(180 62.5% 12.5% / 0.0)", [12, 52, 52, 0], +"hsla(210 62.5% 12.5% / 0.0)", [12, 32, 52, 0], +"hsla(240 62.5% 12.5% / 0.0)", [12, 12, 52, 0], +"hsla(270 62.5% 12.5% / 0.0)", [32, 12, 52, 0], +"hsla(300 62.5% 12.5% / 0.0)", [52, 12, 52, 0], +"hsla(330 62.5% 12.5% / 0.0)", [52, 12, 32, 0], +"hsla(0 75% 12.5% / 0.0)", [56, 8, 8, 0], +"hsla(30 75% 12.5% / 0.0)", [56, 32, 8, 0], +"hsla(60 75% 12.5% / 0.0)", [56, 56, 8, 0], +"hsla(90 75% 12.5% / 0.0)", [32, 56, 8, 0], +"hsla(120 75% 12.5% / 0.0)", [8, 56, 8, 0], +"hsla(150 75% 12.5% / 0.0)", [8, 56, 32, 0], +"hsla(180 75% 12.5% / 0.0)", [8, 56, 56, 0], +"hsla(210 75% 12.5% / 0.0)", [8, 32, 56, 0], +"hsla(240 75% 12.5% / 0.0)", [8, 8, 56, 0], +"hsla(270 75% 12.5% / 0.0)", [32, 8, 56, 0], +"hsla(300 75% 12.5% / 0.0)", [56, 8, 56, 0], +"hsla(330 75% 12.5% / 0.0)", [56, 8, 32, 0], +"hsla(0 87.5% 12.5% / 0.0)", [60, 4, 4, 0], +"hsla(30 87.5% 12.5% / 0.0)", [60, 32, 4, 0], +"hsla(60 87.5% 12.5% / 0.0)", [60, 60, 4, 0], +"hsla(90 87.5% 12.5% / 0.0)", [32, 60, 4, 0], +"hsla(120 87.5% 12.5% / 0.0)", [4, 60, 4, 0], +"hsla(150 87.5% 12.5% / 0.0)", [4, 60, 32, 0], +"hsla(180 87.5% 12.5% / 0.0)", [4, 60, 60, 0], +"hsla(210 87.5% 12.5% / 0.0)", [4, 32, 60, 0], +"hsla(240 87.5% 12.5% / 0.0)", [4, 4, 60, 0], +"hsla(270 87.5% 12.5% / 0.0)", [32, 4, 60, 0], +"hsla(300 87.5% 12.5% / 0.0)", [60, 4, 60, 0], +"hsla(330 87.5% 12.5% / 0.0)", [60, 4, 32, 0], +"hsla(0 100% 12.5% / 0.0)", [64, 0, 0, 0], +"hsla(30 100% 12.5% / 0.0)", [64, 32, 0, 0], +"hsla(60 100% 12.5% / 0.0)", [64, 64, 0, 0], +"hsla(90 100% 12.5% / 0.0)", [32, 64, 0, 0], +"hsla(120 100% 12.5% / 0.0)", [0, 64, 0, 0], +"hsla(150 100% 12.5% / 0.0)", [0, 64, 32, 0], +"hsla(180 100% 12.5% / 0.0)", [0, 64, 64, 0], +"hsla(210 100% 12.5% / 0.0)", [0, 32, 64, 0], +"hsla(240 100% 12.5% / 0.0)", [0, 0, 64, 0], +"hsla(270 100% 12.5% / 0.0)", [32, 0, 64, 0], +"hsla(300 100% 12.5% / 0.0)", [64, 0, 64, 0], +"hsla(330 100% 12.5% / 0.0)", [64, 0, 32, 0], +"hsla(0 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(30 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(60 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(90 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(120 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(150 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(180 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(210 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(240 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(270 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(300 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(330 0% 25% / 0.0)", [64, 64, 64, 0], +"hsla(0 12.5% 25% / 0.0)", [72, 56, 56, 0], +"hsla(30 12.5% 25% / 0.0)", [72, 64, 56, 0], +"hsla(60 12.5% 25% / 0.0)", [72, 72, 56, 0], +"hsla(90 12.5% 25% / 0.0)", [64, 72, 56, 0], +"hsla(120 12.5% 25% / 0.0)", [56, 72, 56, 0], +"hsla(150 12.5% 25% / 0.0)", [56, 72, 64, 0], +"hsla(180 12.5% 25% / 0.0)", [56, 72, 72, 0], +"hsla(210 12.5% 25% / 0.0)", [56, 64, 72, 0], +"hsla(240 12.5% 25% / 0.0)", [56, 56, 72, 0], +"hsla(270 12.5% 25% / 0.0)", [64, 56, 72, 0], +"hsla(300 12.5% 25% / 0.0)", [72, 56, 72, 0], +"hsla(330 12.5% 25% / 0.0)", [72, 56, 64, 0], +"hsla(0 25% 25% / 0.0)", [80, 48, 48, 0], +"hsla(30 25% 25% / 0.0)", [80, 64, 48, 0], +"hsla(60 25% 25% / 0.0)", [80, 80, 48, 0], +"hsla(90 25% 25% / 0.0)", [64, 80, 48, 0], +"hsla(120 25% 25% / 0.0)", [48, 80, 48, 0], +"hsla(150 25% 25% / 0.0)", [48, 80, 64, 0], +"hsla(180 25% 25% / 0.0)", [48, 80, 80, 0], +"hsla(210 25% 25% / 0.0)", [48, 64, 80, 0], +"hsla(240 25% 25% / 0.0)", [48, 48, 80, 0], +"hsla(270 25% 25% / 0.0)", [64, 48, 80, 0], +"hsla(300 25% 25% / 0.0)", [80, 48, 80, 0], +"hsla(330 25% 25% / 0.0)", [80, 48, 64, 0], +"hsla(0 37.5% 25% / 0.0)", [88, 40, 40, 0], +"hsla(30 37.5% 25% / 0.0)", [88, 64, 40, 0], +"hsla(60 37.5% 25% / 0.0)", [88, 88, 40, 0], +"hsla(90 37.5% 25% / 0.0)", [64, 88, 40, 0], +"hsla(120 37.5% 25% / 0.0)", [40, 88, 40, 0], +"hsla(150 37.5% 25% / 0.0)", [40, 88, 64, 0], +"hsla(180 37.5% 25% / 0.0)", [40, 88, 88, 0], +"hsla(210 37.5% 25% / 0.0)", [40, 64, 88, 0], +"hsla(240 37.5% 25% / 0.0)", [40, 40, 88, 0], +"hsla(270 37.5% 25% / 0.0)", [64, 40, 88, 0], +"hsla(300 37.5% 25% / 0.0)", [88, 40, 88, 0], +"hsla(330 37.5% 25% / 0.0)", [88, 40, 64, 0], +"hsla(0 50% 25% / 0.0)", [96, 32, 32, 0], +"hsla(30 50% 25% / 0.0)", [96, 64, 32, 0], +"hsla(60 50% 25% / 0.0)", [96, 96, 32, 0], +"hsla(90 50% 25% / 0.0)", [64, 96, 32, 0], +"hsla(120 50% 25% / 0.0)", [32, 96, 32, 0], +"hsla(150 50% 25% / 0.0)", [32, 96, 64, 0], +"hsla(180 50% 25% / 0.0)", [32, 96, 96, 0], +"hsla(210 50% 25% / 0.0)", [32, 64, 96, 0], +"hsla(240 50% 25% / 0.0)", [32, 32, 96, 0], +"hsla(270 50% 25% / 0.0)", [64, 32, 96, 0], +"hsla(300 50% 25% / 0.0)", [96, 32, 96, 0], +"hsla(330 50% 25% / 0.0)", [96, 32, 64, 0], +"hsla(0 62.5% 25% / 0.0)", [104, 24, 24, 0], +"hsla(30 62.5% 25% / 0.0)", [104, 64, 24, 0], +"hsla(60 62.5% 25% / 0.0)", [104, 104, 24, 0], +"hsla(90 62.5% 25% / 0.0)", [64, 104, 24, 0], +"hsla(120 62.5% 25% / 0.0)", [24, 104, 24, 0], +"hsla(150 62.5% 25% / 0.0)", [24, 104, 64, 0], +"hsla(180 62.5% 25% / 0.0)", [24, 104, 104, 0], +"hsla(210 62.5% 25% / 0.0)", [24, 64, 104, 0], +"hsla(240 62.5% 25% / 0.0)", [24, 24, 104, 0], +"hsla(270 62.5% 25% / 0.0)", [64, 24, 104, 0], +"hsla(300 62.5% 25% / 0.0)", [104, 24, 104, 0], +"hsla(330 62.5% 25% / 0.0)", [104, 24, 64, 0], +"hsla(0 75% 25% / 0.0)", [112, 16, 16, 0], +"hsla(30 75% 25% / 0.0)", [112, 64, 16, 0], +"hsla(60 75% 25% / 0.0)", [112, 112, 16, 0], +"hsla(90 75% 25% / 0.0)", [64, 112, 16, 0], +"hsla(120 75% 25% / 0.0)", [16, 112, 16, 0], +"hsla(150 75% 25% / 0.0)", [16, 112, 64, 0], +"hsla(180 75% 25% / 0.0)", [16, 112, 112, 0], +"hsla(210 75% 25% / 0.0)", [16, 64, 112, 0], +"hsla(240 75% 25% / 0.0)", [16, 16, 112, 0], +"hsla(270 75% 25% / 0.0)", [64, 16, 112, 0], +"hsla(300 75% 25% / 0.0)", [112, 16, 112, 0], +"hsla(330 75% 25% / 0.0)", [112, 16, 64, 0], +"hsla(0 87.5% 25% / 0.0)", [120, 8, 8, 0], +"hsla(30 87.5% 25% / 0.0)", [120, 64, 8, 0], +"hsla(60 87.5% 25% / 0.0)", [120, 120, 8, 0], +"hsla(90 87.5% 25% / 0.0)", [64, 120, 8, 0], +"hsla(120 87.5% 25% / 0.0)", [8, 120, 8, 0], +"hsla(150 87.5% 25% / 0.0)", [8, 120, 64, 0], +"hsla(180 87.5% 25% / 0.0)", [8, 120, 120, 0], +"hsla(210 87.5% 25% / 0.0)", [8, 64, 120, 0], +"hsla(240 87.5% 25% / 0.0)", [8, 8, 120, 0], +"hsla(270 87.5% 25% / 0.0)", [64, 8, 120, 0], +"hsla(300 87.5% 25% / 0.0)", [120, 8, 120, 0], +"hsla(330 87.5% 25% / 0.0)", [120, 8, 64, 0], +"hsla(0 100% 25% / 0.0)", [128, 0, 0, 0], +"hsla(30 100% 25% / 0.0)", [128, 64, 0, 0], +"hsla(60 100% 25% / 0.0)", [128, 128, 0, 0], +"hsla(90 100% 25% / 0.0)", [64, 128, 0, 0], +"hsla(120 100% 25% / 0.0)", [0, 128, 0, 0], +"hsla(150 100% 25% / 0.0)", [0, 128, 64, 0], +"hsla(180 100% 25% / 0.0)", [0, 128, 128, 0], +"hsla(210 100% 25% / 0.0)", [0, 64, 128, 0], +"hsla(240 100% 25% / 0.0)", [0, 0, 128, 0], +"hsla(270 100% 25% / 0.0)", [64, 0, 128, 0], +"hsla(300 100% 25% / 0.0)", [128, 0, 128, 0], +"hsla(330 100% 25% / 0.0)", [128, 0, 64, 0], +"hsla(0 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(30 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(60 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(90 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(120 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(150 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(180 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(210 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(240 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(270 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(300 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(330 0% 37.5% / 0.0)", [96, 96, 96, 0], +"hsla(0 12.5% 37.5% / 0.0)", [108, 84, 84, 0], +"hsla(30 12.5% 37.5% / 0.0)", [108, 96, 84, 0], +"hsla(60 12.5% 37.5% / 0.0)", [108, 108, 84, 0], +"hsla(90 12.5% 37.5% / 0.0)", [96, 108, 84, 0], +"hsla(120 12.5% 37.5% / 0.0)", [84, 108, 84, 0], +"hsla(150 12.5% 37.5% / 0.0)", [84, 108, 96, 0], +"hsla(180 12.5% 37.5% / 0.0)", [84, 108, 108, 0], +"hsla(210 12.5% 37.5% / 0.0)", [84, 96, 108, 0], +"hsla(240 12.5% 37.5% / 0.0)", [84, 84, 108, 0], +"hsla(270 12.5% 37.5% / 0.0)", [96, 84, 108, 0], +"hsla(300 12.5% 37.5% / 0.0)", [108, 84, 108, 0], +"hsla(330 12.5% 37.5% / 0.0)", [108, 84, 96, 0], +"hsla(0 25% 37.5% / 0.0)", [120, 72, 72, 0], +"hsla(30 25% 37.5% / 0.0)", [120, 96, 72, 0], +"hsla(60 25% 37.5% / 0.0)", [120, 120, 72, 0], +"hsla(90 25% 37.5% / 0.0)", [96, 120, 72, 0], +"hsla(120 25% 37.5% / 0.0)", [72, 120, 72, 0], +"hsla(150 25% 37.5% / 0.0)", [72, 120, 96, 0], +"hsla(180 25% 37.5% / 0.0)", [72, 120, 120, 0], +"hsla(210 25% 37.5% / 0.0)", [72, 96, 120, 0], +"hsla(240 25% 37.5% / 0.0)", [72, 72, 120, 0], +"hsla(270 25% 37.5% / 0.0)", [96, 72, 120, 0], +"hsla(300 25% 37.5% / 0.0)", [120, 72, 120, 0], +"hsla(330 25% 37.5% / 0.0)", [120, 72, 96, 0], +"hsla(0 37.5% 37.5% / 0.0)", [132, 60, 60, 0], +"hsla(30 37.5% 37.5% / 0.0)", [132, 96, 60, 0], +"hsla(60 37.5% 37.5% / 0.0)", [132, 132, 60, 0], +"hsla(90 37.5% 37.5% / 0.0)", [96, 132, 60, 0], +"hsla(120 37.5% 37.5% / 0.0)", [60, 132, 60, 0], +"hsla(150 37.5% 37.5% / 0.0)", [60, 132, 96, 0], +"hsla(180 37.5% 37.5% / 0.0)", [60, 132, 132, 0], +"hsla(210 37.5% 37.5% / 0.0)", [60, 96, 132, 0], +"hsla(240 37.5% 37.5% / 0.0)", [60, 60, 132, 0], +"hsla(270 37.5% 37.5% / 0.0)", [96, 60, 132, 0], +"hsla(300 37.5% 37.5% / 0.0)", [132, 60, 132, 0], +"hsla(330 37.5% 37.5% / 0.0)", [132, 60, 96, 0], +"hsla(0 50% 37.5% / 0.0)", [144, 48, 48, 0], +"hsla(30 50% 37.5% / 0.0)", [144, 96, 48, 0], +"hsla(60 50% 37.5% / 0.0)", [144, 144, 48, 0], +"hsla(90 50% 37.5% / 0.0)", [96, 144, 48, 0], +"hsla(120 50% 37.5% / 0.0)", [48, 144, 48, 0], +"hsla(150 50% 37.5% / 0.0)", [48, 144, 96, 0], +"hsla(180 50% 37.5% / 0.0)", [48, 144, 144, 0], +"hsla(210 50% 37.5% / 0.0)", [48, 96, 144, 0], +"hsla(240 50% 37.5% / 0.0)", [48, 48, 144, 0], +"hsla(270 50% 37.5% / 0.0)", [96, 48, 144, 0], +"hsla(300 50% 37.5% / 0.0)", [144, 48, 144, 0], +"hsla(330 50% 37.5% / 0.0)", [144, 48, 96, 0], +"hsla(0 62.5% 37.5% / 0.0)", [156, 36, 36, 0], +"hsla(30 62.5% 37.5% / 0.0)", [156, 96, 36, 0], +"hsla(60 62.5% 37.5% / 0.0)", [156, 156, 36, 0], +"hsla(90 62.5% 37.5% / 0.0)", [96, 156, 36, 0], +"hsla(120 62.5% 37.5% / 0.0)", [36, 156, 36, 0], +"hsla(150 62.5% 37.5% / 0.0)", [36, 156, 96, 0], +"hsla(180 62.5% 37.5% / 0.0)", [36, 156, 156, 0], +"hsla(210 62.5% 37.5% / 0.0)", [36, 96, 156, 0], +"hsla(240 62.5% 37.5% / 0.0)", [36, 36, 156, 0], +"hsla(270 62.5% 37.5% / 0.0)", [96, 36, 156, 0], +"hsla(300 62.5% 37.5% / 0.0)", [156, 36, 156, 0], +"hsla(330 62.5% 37.5% / 0.0)", [156, 36, 96, 0], +"hsla(0 75% 37.5% / 0.0)", [168, 24, 24, 0], +"hsla(30 75% 37.5% / 0.0)", [168, 96, 24, 0], +"hsla(60 75% 37.5% / 0.0)", [168, 168, 24, 0], +"hsla(90 75% 37.5% / 0.0)", [96, 168, 24, 0], +"hsla(120 75% 37.5% / 0.0)", [24, 168, 24, 0], +"hsla(150 75% 37.5% / 0.0)", [24, 168, 96, 0], +"hsla(180 75% 37.5% / 0.0)", [24, 168, 168, 0], +"hsla(210 75% 37.5% / 0.0)", [24, 96, 168, 0], +"hsla(240 75% 37.5% / 0.0)", [24, 24, 168, 0], +"hsla(270 75% 37.5% / 0.0)", [96, 24, 168, 0], +"hsla(300 75% 37.5% / 0.0)", [168, 24, 168, 0], +"hsla(330 75% 37.5% / 0.0)", [168, 24, 96, 0], +"hsla(0 87.5% 37.5% / 0.0)", [180, 12, 12, 0], +"hsla(30 87.5% 37.5% / 0.0)", [180, 96, 12, 0], +"hsla(60 87.5% 37.5% / 0.0)", [180, 180, 12, 0], +"hsla(90 87.5% 37.5% / 0.0)", [96, 180, 12, 0], +"hsla(120 87.5% 37.5% / 0.0)", [12, 180, 12, 0], +"hsla(150 87.5% 37.5% / 0.0)", [12, 180, 96, 0], +"hsla(180 87.5% 37.5% / 0.0)", [12, 180, 180, 0], +"hsla(210 87.5% 37.5% / 0.0)", [12, 96, 180, 0], +"hsla(240 87.5% 37.5% / 0.0)", [12, 12, 180, 0], +"hsla(270 87.5% 37.5% / 0.0)", [96, 12, 180, 0], +"hsla(300 87.5% 37.5% / 0.0)", [180, 12, 180, 0], +"hsla(330 87.5% 37.5% / 0.0)", [180, 12, 96, 0], +"hsla(0 100% 37.5% / 0.0)", [192, 0, 0, 0], +"hsla(30 100% 37.5% / 0.0)", [192, 96, 0, 0], +"hsla(60 100% 37.5% / 0.0)", [192, 192, 0, 0], +"hsla(90 100% 37.5% / 0.0)", [96, 192, 0, 0], +"hsla(120 100% 37.5% / 0.0)", [0, 192, 0, 0], +"hsla(150 100% 37.5% / 0.0)", [0, 192, 96, 0], +"hsla(180 100% 37.5% / 0.0)", [0, 192, 192, 0], +"hsla(210 100% 37.5% / 0.0)", [0, 96, 192, 0], +"hsla(240 100% 37.5% / 0.0)", [0, 0, 192, 0], +"hsla(270 100% 37.5% / 0.0)", [96, 0, 192, 0], +"hsla(300 100% 37.5% / 0.0)", [192, 0, 192, 0], +"hsla(330 100% 37.5% / 0.0)", [192, 0, 96, 0], +"hsla(0 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(30 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(60 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(90 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(120 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(150 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(180 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(210 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(240 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(270 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(300 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(330 0% 50% / 0.0)", [128, 128, 128, 0], +"hsla(0 12.5% 50% / 0.0)", [144, 112, 112, 0], +"hsla(30 12.5% 50% / 0.0)", [144, 128, 112, 0], +"hsla(60 12.5% 50% / 0.0)", [144, 144, 112, 0], +"hsla(90 12.5% 50% / 0.0)", [128, 144, 112, 0], +"hsla(120 12.5% 50% / 0.0)", [112, 144, 112, 0], +"hsla(150 12.5% 50% / 0.0)", [112, 144, 128, 0], +"hsla(180 12.5% 50% / 0.0)", [112, 144, 144, 0], +"hsla(210 12.5% 50% / 0.0)", [112, 128, 144, 0], +"hsla(240 12.5% 50% / 0.0)", [112, 112, 144, 0], +"hsla(270 12.5% 50% / 0.0)", [128, 112, 144, 0], +"hsla(300 12.5% 50% / 0.0)", [144, 112, 144, 0], +"hsla(330 12.5% 50% / 0.0)", [144, 112, 128, 0], +"hsla(0 25% 50% / 0.0)", [160, 96, 96, 0], +"hsla(30 25% 50% / 0.0)", [160, 128, 96, 0], +"hsla(60 25% 50% / 0.0)", [160, 160, 96, 0], +"hsla(90 25% 50% / 0.0)", [128, 160, 96, 0], +"hsla(120 25% 50% / 0.0)", [96, 160, 96, 0], +"hsla(150 25% 50% / 0.0)", [96, 160, 128, 0], +"hsla(180 25% 50% / 0.0)", [96, 160, 160, 0], +"hsla(210 25% 50% / 0.0)", [96, 128, 160, 0], +"hsla(240 25% 50% / 0.0)", [96, 96, 160, 0], +"hsla(270 25% 50% / 0.0)", [128, 96, 160, 0], +"hsla(300 25% 50% / 0.0)", [160, 96, 160, 0], +"hsla(330 25% 50% / 0.0)", [160, 96, 128, 0], +"hsla(0 37.5% 50% / 0.0)", [176, 80, 80, 0], +"hsla(30 37.5% 50% / 0.0)", [176, 128, 80, 0], +"hsla(60 37.5% 50% / 0.0)", [176, 176, 80, 0], +"hsla(90 37.5% 50% / 0.0)", [128, 176, 80, 0], +"hsla(120 37.5% 50% / 0.0)", [80, 176, 80, 0], +"hsla(150 37.5% 50% / 0.0)", [80, 176, 128, 0], +"hsla(180 37.5% 50% / 0.0)", [80, 176, 176, 0], +"hsla(210 37.5% 50% / 0.0)", [80, 128, 176, 0], +"hsla(240 37.5% 50% / 0.0)", [80, 80, 176, 0], +"hsla(270 37.5% 50% / 0.0)", [128, 80, 176, 0], +"hsla(300 37.5% 50% / 0.0)", [176, 80, 176, 0], +"hsla(330 37.5% 50% / 0.0)", [176, 80, 128, 0], +"hsla(0 50% 50% / 0.0)", [192, 64, 64, 0], +"hsla(30 50% 50% / 0.0)", [192, 128, 64, 0], +"hsla(60 50% 50% / 0.0)", [192, 192, 64, 0], +"hsla(90 50% 50% / 0.0)", [128, 192, 64, 0], +"hsla(120 50% 50% / 0.0)", [64, 192, 64, 0], +"hsla(150 50% 50% / 0.0)", [64, 192, 128, 0], +"hsla(180 50% 50% / 0.0)", [64, 192, 192, 0], +"hsla(210 50% 50% / 0.0)", [64, 128, 192, 0], +"hsla(240 50% 50% / 0.0)", [64, 64, 192, 0], +"hsla(270 50% 50% / 0.0)", [128, 64, 192, 0], +"hsla(300 50% 50% / 0.0)", [192, 64, 192, 0], +"hsla(330 50% 50% / 0.0)", [192, 64, 128, 0], +"hsla(0 62.5% 50% / 0.0)", [208, 48, 48, 0], +"hsla(30 62.5% 50% / 0.0)", [208, 128, 48, 0], +"hsla(60 62.5% 50% / 0.0)", [208, 208, 48, 0], +"hsla(90 62.5% 50% / 0.0)", [128, 208, 48, 0], +"hsla(120 62.5% 50% / 0.0)", [48, 208, 48, 0], +"hsla(150 62.5% 50% / 0.0)", [48, 208, 128, 0], +"hsla(180 62.5% 50% / 0.0)", [48, 208, 208, 0], +"hsla(210 62.5% 50% / 0.0)", [48, 128, 208, 0], +"hsla(240 62.5% 50% / 0.0)", [48, 48, 208, 0], +"hsla(270 62.5% 50% / 0.0)", [128, 48, 208, 0], +"hsla(300 62.5% 50% / 0.0)", [208, 48, 208, 0], +"hsla(330 62.5% 50% / 0.0)", [208, 48, 128, 0], +"hsla(0 75% 50% / 0.0)", [224, 32, 32, 0], +"hsla(30 75% 50% / 0.0)", [224, 128, 32, 0], +"hsla(60 75% 50% / 0.0)", [224, 224, 32, 0], +"hsla(90 75% 50% / 0.0)", [128, 224, 32, 0], +"hsla(120 75% 50% / 0.0)", [32, 224, 32, 0], +"hsla(150 75% 50% / 0.0)", [32, 224, 128, 0], +"hsla(180 75% 50% / 0.0)", [32, 224, 224, 0], +"hsla(210 75% 50% / 0.0)", [32, 128, 224, 0], +"hsla(240 75% 50% / 0.0)", [32, 32, 224, 0], +"hsla(270 75% 50% / 0.0)", [128, 32, 224, 0], +"hsla(300 75% 50% / 0.0)", [224, 32, 224, 0], +"hsla(330 75% 50% / 0.0)", [224, 32, 128, 0], +"hsla(0 87.5% 50% / 0.0)", [240, 16, 16, 0], +"hsla(30 87.5% 50% / 0.0)", [240, 128, 16, 0], +"hsla(60 87.5% 50% / 0.0)", [240, 240, 16, 0], +"hsla(90 87.5% 50% / 0.0)", [128, 240, 16, 0], +"hsla(120 87.5% 50% / 0.0)", [16, 240, 16, 0], +"hsla(150 87.5% 50% / 0.0)", [16, 240, 128, 0], +"hsla(180 87.5% 50% / 0.0)", [16, 240, 240, 0], +"hsla(210 87.5% 50% / 0.0)", [16, 128, 240, 0], +"hsla(240 87.5% 50% / 0.0)", [16, 16, 240, 0], +"hsla(270 87.5% 50% / 0.0)", [128, 16, 240, 0], +"hsla(300 87.5% 50% / 0.0)", [240, 16, 240, 0], +"hsla(330 87.5% 50% / 0.0)", [240, 16, 128, 0], +"hsla(0 100% 50% / 0.0)", [255, 0, 0, 0], +"hsla(30 100% 50% / 0.0)", [255, 128, 0, 0], +"hsla(60 100% 50% / 0.0)", [255, 255, 0, 0], +"hsla(90 100% 50% / 0.0)", [128, 255, 0, 0], +"hsla(120 100% 50% / 0.0)", [0, 255, 0, 0], +"hsla(150 100% 50% / 0.0)", [0, 255, 128, 0], +"hsla(180 100% 50% / 0.0)", [0, 255, 255, 0], +"hsla(210 100% 50% / 0.0)", [0, 128, 255, 0], +"hsla(240 100% 50% / 0.0)", [0, 0, 255, 0], +"hsla(270 100% 50% / 0.0)", [128, 0, 255, 0], +"hsla(300 100% 50% / 0.0)", [255, 0, 255, 0], +"hsla(330 100% 50% / 0.0)", [255, 0, 128, 0], +"hsla(0 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(30 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(60 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(90 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(120 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(150 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(180 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(210 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(240 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(270 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(300 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(330 0% 62.5% / 0.0)", [160, 160, 160, 0], +"hsla(0 12.5% 62.5% / 0.0)", [172, 148, 148, 0], +"hsla(30 12.5% 62.5% / 0.0)", [172, 160, 148, 0], +"hsla(60 12.5% 62.5% / 0.0)", [172, 172, 148, 0], +"hsla(90 12.5% 62.5% / 0.0)", [160, 172, 148, 0], +"hsla(120 12.5% 62.5% / 0.0)", [148, 172, 148, 0], +"hsla(150 12.5% 62.5% / 0.0)", [148, 172, 160, 0], +"hsla(180 12.5% 62.5% / 0.0)", [148, 172, 172, 0], +"hsla(210 12.5% 62.5% / 0.0)", [148, 160, 172, 0], +"hsla(240 12.5% 62.5% / 0.0)", [148, 148, 172, 0], +"hsla(270 12.5% 62.5% / 0.0)", [160, 148, 172, 0], +"hsla(300 12.5% 62.5% / 0.0)", [172, 148, 172, 0], +"hsla(330 12.5% 62.5% / 0.0)", [172, 148, 160, 0], +"hsla(0 25% 62.5% / 0.0)", [184, 136, 136, 0], +"hsla(30 25% 62.5% / 0.0)", [184, 160, 136, 0], +"hsla(60 25% 62.5% / 0.0)", [184, 184, 136, 0], +"hsla(90 25% 62.5% / 0.0)", [160, 184, 136, 0], +"hsla(120 25% 62.5% / 0.0)", [136, 184, 136, 0], +"hsla(150 25% 62.5% / 0.0)", [136, 184, 160, 0], +"hsla(180 25% 62.5% / 0.0)", [136, 184, 184, 0], +"hsla(210 25% 62.5% / 0.0)", [136, 160, 184, 0], +"hsla(240 25% 62.5% / 0.0)", [136, 136, 184, 0], +"hsla(270 25% 62.5% / 0.0)", [160, 136, 184, 0], +"hsla(300 25% 62.5% / 0.0)", [184, 136, 184, 0], +"hsla(330 25% 62.5% / 0.0)", [184, 136, 160, 0], +"hsla(0 37.5% 62.5% / 0.0)", [196, 124, 124, 0], +"hsla(30 37.5% 62.5% / 0.0)", [196, 160, 124, 0], +"hsla(60 37.5% 62.5% / 0.0)", [196, 196, 124, 0], +"hsla(90 37.5% 62.5% / 0.0)", [160, 196, 124, 0], +"hsla(120 37.5% 62.5% / 0.0)", [124, 196, 124, 0], +"hsla(150 37.5% 62.5% / 0.0)", [124, 196, 160, 0], +"hsla(180 37.5% 62.5% / 0.0)", [124, 196, 196, 0], +"hsla(210 37.5% 62.5% / 0.0)", [124, 160, 196, 0], +"hsla(240 37.5% 62.5% / 0.0)", [124, 124, 196, 0], +"hsla(270 37.5% 62.5% / 0.0)", [160, 124, 196, 0], +"hsla(300 37.5% 62.5% / 0.0)", [196, 124, 196, 0], +"hsla(330 37.5% 62.5% / 0.0)", [196, 124, 160, 0], +"hsla(0 50% 62.5% / 0.0)", [208, 112, 112, 0], +"hsla(30 50% 62.5% / 0.0)", [208, 160, 112, 0], +"hsla(60 50% 62.5% / 0.0)", [208, 208, 112, 0], +"hsla(90 50% 62.5% / 0.0)", [160, 208, 112, 0], +"hsla(120 50% 62.5% / 0.0)", [112, 208, 112, 0], +"hsla(150 50% 62.5% / 0.0)", [112, 208, 160, 0], +"hsla(180 50% 62.5% / 0.0)", [112, 208, 208, 0], +"hsla(210 50% 62.5% / 0.0)", [112, 160, 208, 0], +"hsla(240 50% 62.5% / 0.0)", [112, 112, 208, 0], +"hsla(270 50% 62.5% / 0.0)", [160, 112, 208, 0], +"hsla(300 50% 62.5% / 0.0)", [208, 112, 208, 0], +"hsla(330 50% 62.5% / 0.0)", [208, 112, 160, 0], +"hsla(0 62.5% 62.5% / 0.0)", [220, 100, 100, 0], +"hsla(30 62.5% 62.5% / 0.0)", [220, 160, 100, 0], +"hsla(60 62.5% 62.5% / 0.0)", [220, 220, 100, 0], +"hsla(90 62.5% 62.5% / 0.0)", [160, 220, 100, 0], +"hsla(120 62.5% 62.5% / 0.0)", [100, 220, 100, 0], +"hsla(150 62.5% 62.5% / 0.0)", [100, 220, 160, 0], +"hsla(180 62.5% 62.5% / 0.0)", [100, 220, 220, 0], +"hsla(210 62.5% 62.5% / 0.0)", [100, 160, 220, 0], +"hsla(240 62.5% 62.5% / 0.0)", [100, 100, 220, 0], +"hsla(270 62.5% 62.5% / 0.0)", [160, 100, 220, 0], +"hsla(300 62.5% 62.5% / 0.0)", [220, 100, 220, 0], +"hsla(330 62.5% 62.5% / 0.0)", [220, 100, 160, 0], +"hsla(0 75% 62.5% / 0.0)", [232, 88, 88, 0], +"hsla(30 75% 62.5% / 0.0)", [232, 160, 88, 0], +"hsla(60 75% 62.5% / 0.0)", [232, 232, 88, 0], +"hsla(90 75% 62.5% / 0.0)", [160, 232, 88, 0], +"hsla(120 75% 62.5% / 0.0)", [88, 232, 88, 0], +"hsla(150 75% 62.5% / 0.0)", [88, 232, 160, 0], +"hsla(180 75% 62.5% / 0.0)", [88, 232, 232, 0], +"hsla(210 75% 62.5% / 0.0)", [88, 160, 232, 0], +"hsla(240 75% 62.5% / 0.0)", [88, 88, 232, 0], +"hsla(270 75% 62.5% / 0.0)", [160, 88, 232, 0], +"hsla(300 75% 62.5% / 0.0)", [232, 88, 232, 0], +"hsla(330 75% 62.5% / 0.0)", [232, 88, 160, 0], +"hsla(0 87.5% 62.5% / 0.0)", [244, 76, 76, 0], +"hsla(30 87.5% 62.5% / 0.0)", [244, 160, 76, 0], +"hsla(60 87.5% 62.5% / 0.0)", [244, 244, 76, 0], +"hsla(90 87.5% 62.5% / 0.0)", [160, 244, 76, 0], +"hsla(120 87.5% 62.5% / 0.0)", [76, 244, 76, 0], +"hsla(150 87.5% 62.5% / 0.0)", [76, 244, 160, 0], +"hsla(180 87.5% 62.5% / 0.0)", [76, 244, 244, 0], +"hsla(210 87.5% 62.5% / 0.0)", [76, 160, 244, 0], +"hsla(240 87.5% 62.5% / 0.0)", [76, 76, 244, 0], +"hsla(270 87.5% 62.5% / 0.0)", [160, 76, 244, 0], +"hsla(300 87.5% 62.5% / 0.0)", [244, 76, 244, 0], +"hsla(330 87.5% 62.5% / 0.0)", [244, 76, 160, 0], +"hsla(0 100% 62.5% / 0.0)", [255, 64, 64, 0], +"hsla(30 100% 62.5% / 0.0)", [255, 160, 64, 0], +"hsla(60 100% 62.5% / 0.0)", [255, 255, 64, 0], +"hsla(90 100% 62.5% / 0.0)", [160, 255, 64, 0], +"hsla(120 100% 62.5% / 0.0)", [64, 255, 64, 0], +"hsla(150 100% 62.5% / 0.0)", [64, 255, 160, 0], +"hsla(180 100% 62.5% / 0.0)", [64, 255, 255, 0], +"hsla(210 100% 62.5% / 0.0)", [64, 160, 255, 0], +"hsla(240 100% 62.5% / 0.0)", [64, 64, 255, 0], +"hsla(270 100% 62.5% / 0.0)", [160, 64, 255, 0], +"hsla(300 100% 62.5% / 0.0)", [255, 64, 255, 0], +"hsla(330 100% 62.5% / 0.0)", [255, 64, 160, 0], +"hsla(0 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(30 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(60 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(90 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(120 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(150 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(180 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(210 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(240 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(270 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(300 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(330 0% 75% / 0.0)", [192, 192, 192, 0], +"hsla(0 12.5% 75% / 0.0)", [200, 184, 184, 0], +"hsla(30 12.5% 75% / 0.0)", [200, 192, 184, 0], +"hsla(60 12.5% 75% / 0.0)", [200, 200, 184, 0], +"hsla(90 12.5% 75% / 0.0)", [192, 200, 184, 0], +"hsla(120 12.5% 75% / 0.0)", [184, 200, 184, 0], +"hsla(150 12.5% 75% / 0.0)", [184, 200, 192, 0], +"hsla(180 12.5% 75% / 0.0)", [184, 200, 200, 0], +"hsla(210 12.5% 75% / 0.0)", [184, 192, 200, 0], +"hsla(240 12.5% 75% / 0.0)", [184, 184, 200, 0], +"hsla(270 12.5% 75% / 0.0)", [192, 184, 200, 0], +"hsla(300 12.5% 75% / 0.0)", [200, 184, 200, 0], +"hsla(330 12.5% 75% / 0.0)", [200, 184, 192, 0], +"hsla(0 25% 75% / 0.0)", [208, 176, 176, 0], +"hsla(30 25% 75% / 0.0)", [208, 192, 176, 0], +"hsla(60 25% 75% / 0.0)", [208, 208, 176, 0], +"hsla(90 25% 75% / 0.0)", [192, 208, 176, 0], +"hsla(120 25% 75% / 0.0)", [176, 208, 176, 0], +"hsla(150 25% 75% / 0.0)", [176, 208, 192, 0], +"hsla(180 25% 75% / 0.0)", [176, 208, 208, 0], +"hsla(210 25% 75% / 0.0)", [176, 192, 208, 0], +"hsla(240 25% 75% / 0.0)", [176, 176, 208, 0], +"hsla(270 25% 75% / 0.0)", [192, 176, 208, 0], +"hsla(300 25% 75% / 0.0)", [208, 176, 208, 0], +"hsla(330 25% 75% / 0.0)", [208, 176, 192, 0], +"hsla(0 37.5% 75% / 0.0)", [216, 168, 168, 0], +"hsla(30 37.5% 75% / 0.0)", [216, 192, 168, 0], +"hsla(60 37.5% 75% / 0.0)", [216, 216, 168, 0], +"hsla(90 37.5% 75% / 0.0)", [192, 216, 168, 0], +"hsla(120 37.5% 75% / 0.0)", [168, 216, 168, 0], +"hsla(150 37.5% 75% / 0.0)", [168, 216, 192, 0], +"hsla(180 37.5% 75% / 0.0)", [168, 216, 216, 0], +"hsla(210 37.5% 75% / 0.0)", [168, 192, 216, 0], +"hsla(240 37.5% 75% / 0.0)", [168, 168, 216, 0], +"hsla(270 37.5% 75% / 0.0)", [192, 168, 216, 0], +"hsla(300 37.5% 75% / 0.0)", [216, 168, 216, 0], +"hsla(330 37.5% 75% / 0.0)", [216, 168, 192, 0], +"hsla(0 50% 75% / 0.0)", [224, 160, 160, 0], +"hsla(30 50% 75% / 0.0)", [224, 192, 160, 0], +"hsla(60 50% 75% / 0.0)", [224, 224, 160, 0], +"hsla(90 50% 75% / 0.0)", [192, 224, 160, 0], +"hsla(120 50% 75% / 0.0)", [160, 224, 160, 0], +"hsla(150 50% 75% / 0.0)", [160, 224, 192, 0], +"hsla(180 50% 75% / 0.0)", [160, 224, 224, 0], +"hsla(210 50% 75% / 0.0)", [160, 192, 224, 0], +"hsla(240 50% 75% / 0.0)", [160, 160, 224, 0], +"hsla(270 50% 75% / 0.0)", [192, 160, 224, 0], +"hsla(300 50% 75% / 0.0)", [224, 160, 224, 0], +"hsla(330 50% 75% / 0.0)", [224, 160, 192, 0], +"hsla(0 62.5% 75% / 0.0)", [232, 152, 152, 0], +"hsla(30 62.5% 75% / 0.0)", [232, 192, 152, 0], +"hsla(60 62.5% 75% / 0.0)", [232, 232, 152, 0], +"hsla(90 62.5% 75% / 0.0)", [192, 232, 152, 0], +"hsla(120 62.5% 75% / 0.0)", [152, 232, 152, 0], +"hsla(150 62.5% 75% / 0.0)", [152, 232, 192, 0], +"hsla(180 62.5% 75% / 0.0)", [152, 232, 232, 0], +"hsla(210 62.5% 75% / 0.0)", [152, 192, 232, 0], +"hsla(240 62.5% 75% / 0.0)", [152, 152, 232, 0], +"hsla(270 62.5% 75% / 0.0)", [192, 152, 232, 0], +"hsla(300 62.5% 75% / 0.0)", [232, 152, 232, 0], +"hsla(330 62.5% 75% / 0.0)", [232, 152, 192, 0], +"hsla(0 75% 75% / 0.0)", [240, 144, 144, 0], +"hsla(30 75% 75% / 0.0)", [240, 192, 144, 0], +"hsla(60 75% 75% / 0.0)", [240, 240, 144, 0], +"hsla(90 75% 75% / 0.0)", [192, 240, 144, 0], +"hsla(120 75% 75% / 0.0)", [144, 240, 144, 0], +"hsla(150 75% 75% / 0.0)", [144, 240, 192, 0], +"hsla(180 75% 75% / 0.0)", [144, 240, 240, 0], +"hsla(210 75% 75% / 0.0)", [144, 192, 240, 0], +"hsla(240 75% 75% / 0.0)", [144, 144, 240, 0], +"hsla(270 75% 75% / 0.0)", [192, 144, 240, 0], +"hsla(300 75% 75% / 0.0)", [240, 144, 240, 0], +"hsla(330 75% 75% / 0.0)", [240, 144, 192, 0], +"hsla(0 87.5% 75% / 0.0)", [248, 136, 136, 0], +"hsla(30 87.5% 75% / 0.0)", [248, 192, 136, 0], +"hsla(60 87.5% 75% / 0.0)", [248, 248, 136, 0], +"hsla(90 87.5% 75% / 0.0)", [192, 248, 136, 0], +"hsla(120 87.5% 75% / 0.0)", [136, 248, 136, 0], +"hsla(150 87.5% 75% / 0.0)", [136, 248, 192, 0], +"hsla(180 87.5% 75% / 0.0)", [136, 248, 248, 0], +"hsla(210 87.5% 75% / 0.0)", [136, 192, 248, 0], +"hsla(240 87.5% 75% / 0.0)", [136, 136, 248, 0], +"hsla(270 87.5% 75% / 0.0)", [192, 136, 248, 0], +"hsla(300 87.5% 75% / 0.0)", [248, 136, 248, 0], +"hsla(330 87.5% 75% / 0.0)", [248, 136, 192, 0], +"hsla(0 100% 75% / 0.0)", [255, 128, 128, 0], +"hsla(30 100% 75% / 0.0)", [255, 192, 128, 0], +"hsla(60 100% 75% / 0.0)", [255, 255, 128, 0], +"hsla(90 100% 75% / 0.0)", [192, 255, 128, 0], +"hsla(120 100% 75% / 0.0)", [128, 255, 128, 0], +"hsla(150 100% 75% / 0.0)", [128, 255, 192, 0], +"hsla(180 100% 75% / 0.0)", [128, 255, 255, 0], +"hsla(210 100% 75% / 0.0)", [128, 192, 255, 0], +"hsla(240 100% 75% / 0.0)", [128, 128, 255, 0], +"hsla(270 100% 75% / 0.0)", [192, 128, 255, 0], +"hsla(300 100% 75% / 0.0)", [255, 128, 255, 0], +"hsla(330 100% 75% / 0.0)", [255, 128, 192, 0], +"hsla(0 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(30 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(60 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(90 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(120 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(150 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(180 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(210 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(240 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(270 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(300 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(330 0% 87.5% / 0.0)", [224, 224, 224, 0], +"hsla(0 12.5% 87.5% / 0.0)", [228, 220, 220, 0], +"hsla(30 12.5% 87.5% / 0.0)", [228, 224, 220, 0], +"hsla(60 12.5% 87.5% / 0.0)", [228, 228, 220, 0], +"hsla(90 12.5% 87.5% / 0.0)", [224, 228, 220, 0], +"hsla(120 12.5% 87.5% / 0.0)", [220, 228, 220, 0], +"hsla(150 12.5% 87.5% / 0.0)", [220, 228, 224, 0], +"hsla(180 12.5% 87.5% / 0.0)", [220, 228, 228, 0], +"hsla(210 12.5% 87.5% / 0.0)", [220, 224, 228, 0], +"hsla(240 12.5% 87.5% / 0.0)", [220, 220, 228, 0], +"hsla(270 12.5% 87.5% / 0.0)", [224, 220, 228, 0], +"hsla(300 12.5% 87.5% / 0.0)", [228, 220, 228, 0], +"hsla(330 12.5% 87.5% / 0.0)", [228, 220, 224, 0], +"hsla(0 25% 87.5% / 0.0)", [232, 216, 216, 0], +"hsla(30 25% 87.5% / 0.0)", [232, 224, 216, 0], +"hsla(60 25% 87.5% / 0.0)", [232, 232, 216, 0], +"hsla(90 25% 87.5% / 0.0)", [224, 232, 216, 0], +"hsla(120 25% 87.5% / 0.0)", [216, 232, 216, 0], +"hsla(150 25% 87.5% / 0.0)", [216, 232, 224, 0], +"hsla(180 25% 87.5% / 0.0)", [216, 232, 232, 0], +"hsla(210 25% 87.5% / 0.0)", [216, 224, 232, 0], +"hsla(240 25% 87.5% / 0.0)", [216, 216, 232, 0], +"hsla(270 25% 87.5% / 0.0)", [224, 216, 232, 0], +"hsla(300 25% 87.5% / 0.0)", [232, 216, 232, 0], +"hsla(330 25% 87.5% / 0.0)", [232, 216, 224, 0], +"hsla(0 37.5% 87.5% / 0.0)", [236, 212, 212, 0], +"hsla(30 37.5% 87.5% / 0.0)", [236, 224, 212, 0], +"hsla(60 37.5% 87.5% / 0.0)", [236, 236, 212, 0], +"hsla(90 37.5% 87.5% / 0.0)", [224, 236, 212, 0], +"hsla(120 37.5% 87.5% / 0.0)", [212, 236, 212, 0], +"hsla(150 37.5% 87.5% / 0.0)", [212, 236, 224, 0], +"hsla(180 37.5% 87.5% / 0.0)", [212, 236, 236, 0], +"hsla(210 37.5% 87.5% / 0.0)", [212, 224, 236, 0], +"hsla(240 37.5% 87.5% / 0.0)", [212, 212, 236, 0], +"hsla(270 37.5% 87.5% / 0.0)", [224, 212, 236, 0], +"hsla(300 37.5% 87.5% / 0.0)", [236, 212, 236, 0], +"hsla(330 37.5% 87.5% / 0.0)", [236, 212, 224, 0], +"hsla(0 50% 87.5% / 0.0)", [240, 208, 208, 0], +"hsla(30 50% 87.5% / 0.0)", [240, 224, 208, 0], +"hsla(60 50% 87.5% / 0.0)", [240, 240, 208, 0], +"hsla(90 50% 87.5% / 0.0)", [224, 240, 208, 0], +"hsla(120 50% 87.5% / 0.0)", [208, 240, 208, 0], +"hsla(150 50% 87.5% / 0.0)", [208, 240, 224, 0], +"hsla(180 50% 87.5% / 0.0)", [208, 240, 240, 0], +"hsla(210 50% 87.5% / 0.0)", [208, 224, 240, 0], +"hsla(240 50% 87.5% / 0.0)", [208, 208, 240, 0], +"hsla(270 50% 87.5% / 0.0)", [224, 208, 240, 0], +"hsla(300 50% 87.5% / 0.0)", [240, 208, 240, 0], +"hsla(330 50% 87.5% / 0.0)", [240, 208, 224, 0], +"hsla(0 62.5% 87.5% / 0.0)", [244, 204, 204, 0], +"hsla(30 62.5% 87.5% / 0.0)", [244, 224, 204, 0], +"hsla(60 62.5% 87.5% / 0.0)", [244, 244, 204, 0], +"hsla(90 62.5% 87.5% / 0.0)", [224, 244, 204, 0], +"hsla(120 62.5% 87.5% / 0.0)", [204, 244, 204, 0], +"hsla(150 62.5% 87.5% / 0.0)", [204, 244, 224, 0], +"hsla(180 62.5% 87.5% / 0.0)", [204, 244, 244, 0], +"hsla(210 62.5% 87.5% / 0.0)", [204, 224, 244, 0], +"hsla(240 62.5% 87.5% / 0.0)", [204, 204, 244, 0], +"hsla(270 62.5% 87.5% / 0.0)", [224, 204, 244, 0], +"hsla(300 62.5% 87.5% / 0.0)", [244, 204, 244, 0], +"hsla(330 62.5% 87.5% / 0.0)", [244, 204, 224, 0], +"hsla(0 75% 87.5% / 0.0)", [248, 200, 200, 0], +"hsla(30 75% 87.5% / 0.0)", [248, 224, 200, 0], +"hsla(60 75% 87.5% / 0.0)", [248, 248, 200, 0], +"hsla(90 75% 87.5% / 0.0)", [224, 248, 200, 0], +"hsla(120 75% 87.5% / 0.0)", [200, 248, 200, 0], +"hsla(150 75% 87.5% / 0.0)", [200, 248, 224, 0], +"hsla(180 75% 87.5% / 0.0)", [200, 248, 248, 0], +"hsla(210 75% 87.5% / 0.0)", [200, 224, 248, 0], +"hsla(240 75% 87.5% / 0.0)", [200, 200, 248, 0], +"hsla(270 75% 87.5% / 0.0)", [224, 200, 248, 0], +"hsla(300 75% 87.5% / 0.0)", [248, 200, 248, 0], +"hsla(330 75% 87.5% / 0.0)", [248, 200, 224, 0], +"hsla(0 87.5% 87.5% / 0.0)", [252, 196, 196, 0], +"hsla(30 87.5% 87.5% / 0.0)", [252, 224, 196, 0], +"hsla(60 87.5% 87.5% / 0.0)", [252, 252, 196, 0], +"hsla(90 87.5% 87.5% / 0.0)", [224, 252, 196, 0], +"hsla(120 87.5% 87.5% / 0.0)", [196, 252, 196, 0], +"hsla(150 87.5% 87.5% / 0.0)", [196, 252, 224, 0], +"hsla(180 87.5% 87.5% / 0.0)", [196, 252, 252, 0], +"hsla(210 87.5% 87.5% / 0.0)", [196, 224, 252, 0], +"hsla(240 87.5% 87.5% / 0.0)", [196, 196, 252, 0], +"hsla(270 87.5% 87.5% / 0.0)", [224, 196, 252, 0], +"hsla(300 87.5% 87.5% / 0.0)", [252, 196, 252, 0], +"hsla(330 87.5% 87.5% / 0.0)", [252, 196, 224, 0], +"hsla(0 100% 87.5% / 0.0)", [255, 192, 192, 0], +"hsla(30 100% 87.5% / 0.0)", [255, 224, 192, 0], +"hsla(60 100% 87.5% / 0.0)", [255, 255, 192, 0], +"hsla(90 100% 87.5% / 0.0)", [224, 255, 192, 0], +"hsla(120 100% 87.5% / 0.0)", [192, 255, 192, 0], +"hsla(150 100% 87.5% / 0.0)", [192, 255, 224, 0], +"hsla(180 100% 87.5% / 0.0)", [192, 255, 255, 0], +"hsla(210 100% 87.5% / 0.0)", [192, 224, 255, 0], +"hsla(240 100% 87.5% / 0.0)", [192, 192, 255, 0], +"hsla(270 100% 87.5% / 0.0)", [224, 192, 255, 0], +"hsla(300 100% 87.5% / 0.0)", [255, 192, 255, 0], +"hsla(330 100% 87.5% / 0.0)", [255, 192, 224, 0], +"hsla(0 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(30 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(60 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(90 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(120 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(150 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(180 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(210 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(240 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(270 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(300 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(330 0% 100% / 0.0)", [255, 255, 255, 0], +"hsla(0 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(30 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(60 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(90 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(120 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(150 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(180 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(210 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(240 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(270 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(300 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(330 12.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(0 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(30 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(60 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(90 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(120 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(150 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(180 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(210 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(240 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(270 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(300 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(330 25% 100% / 0.0)", [255, 255, 255, 0], +"hsla(0 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(30 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(60 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(90 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(120 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(150 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(180 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(210 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(240 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(270 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(300 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(330 37.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(0 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(30 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(60 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(90 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(120 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(150 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(180 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(210 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(240 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(270 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(300 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(330 50% 100% / 0.0)", [255, 255, 255, 0], +"hsla(0 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(30 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(60 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(90 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(120 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(150 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(180 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(210 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(240 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(270 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(300 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(330 62.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(0 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(30 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(60 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(90 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(120 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(150 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(180 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(210 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(240 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(270 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(300 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(330 75% 100% / 0.0)", [255, 255, 255, 0], +"hsla(0 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(30 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(60 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(90 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(120 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(150 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(180 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(210 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(240 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(270 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(300 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(330 87.5% 100% / 0.0)", [255, 255, 255, 0], +"hsla(0 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(30 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(60 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(90 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(120 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(150 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(180 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(210 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(240 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(270 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(300 100% 100% / 0.0)", [255, 255, 255, 0], +"hsla(330 100% 100% / 0.0)", [255, 255, 255, 0] ] diff --git a/src/css-parsing-tests/make_color3_hsl.py b/src/css-parsing-tests/make_color3_hsl.py index 91a0e3a8..c037bc70 100644 --- a/src/css-parsing-tests/make_color3_hsl.py +++ b/src/css-parsing-tests/make_color3_hsl.py @@ -2,13 +2,15 @@ trim = lambda s: s if not s.endswith('.0') else s[:-2] print('[') print(',\n'.join( - '"hsl%s(%s, %s%%, %s%%%s)", [%s, %s, %s, %s]' % ( - ('a' if a is not None else '', h, trim(str(s/10.)), trim(str(l/10.)), - ', %s' % round(a / 255., 2) if a is not None else '') + f[0] % ( + (n, h, trim(str(s/10.)), trim(str(l/10.)), + f[1] % round(a / 255., 2) if a is not None else '') + tuple(trim(str(min(255, v * 256))) for v in colorsys.hls_to_rgb(h/360., l/1000., s/1000.)) + (a if a is not None else 255,) ) + for f in [('"%s(%s, %s%%, %s%%%s)", [%s, %s, %s, %s]', ', %s'), ('"%s(%s %s%% %s%%%s)", [%s, %s, %s, %s]', ' / %s')] + for n in ["hsl", "hsla"] for a in [None, 255, 64, 0] for l in range(0, 1001, 125) for s in range(0, 1001, 125) From 87a95d0580ea5de1ccc4bb41df9b5227c8b936f4 Mon Sep 17 00:00:00 2001 From: Manuel Woelker Date: Thu, 6 Apr 2017 20:35:57 +0200 Subject: [PATCH 43/43] color: Integrate PR review suggestions (#113) --- src/color.rs | 215 ++++++++++++++++-------------- src/css-parsing-tests/color3.json | 2 + 2 files changed, 116 insertions(+), 101 deletions(-) diff --git a/src/color.rs b/src/color.rs index c015ed2c..b7c01f6c 100644 --- a/src/color.rs +++ b/src/color.rs @@ -400,104 +400,16 @@ fn clamp_f32(val: f32) -> u8 { #[inline] fn parse_color_function(name: &str, arguments: &mut Parser) -> Result { let is_rgb = match_ignore_ascii_case! { name, - "rgba" => true, - "rgb" => true, - "hsl" => false, - "hsla" => false, + "rgb" | "rgba" => true, + "hsl" | "hsla" => false, _ => return Err(()) }; - let red: u8; - let green: u8; - let blue: u8; - let mut uses_commas = false; - if is_rgb { - // Either integers or percentages, but all the same type. - // https://drafts.csswg.org/css-color/#rgb-functions - match try!(arguments.next()) { - Token::Number(NumericValue { value: v, .. }) => { - red = clamp_i32(v as i32); - green = clamp_i32(match try!(arguments.next()) { - Token::Number(NumericValue { value: v, .. }) => v, - Token::Comma => { - uses_commas = true; - try!(arguments.expect_number()) - } - _ => return Err(()) - } as i32); - if uses_commas { - try!(arguments.expect_comma()); - } - blue = clamp_i32(try!(arguments.expect_number()) as i32); - } - Token::Percentage(ref v) => { - red = clamp_f32(v.unit_value); - green = clamp_f32(match try!(arguments.next()) { - Token::Percentage(ref v) => v.unit_value, - Token::Comma => { - uses_commas = true; - try!(arguments.expect_percentage()) - } - _ => return Err(()) - }); - if uses_commas { - try!(arguments.expect_comma()); - } - blue = clamp_f32(try!(arguments.expect_percentage())); - } - _ => return Err(()) - }; + let (red, green, blue, uses_commas) = if is_rgb { + parse_rgb_components_rgb(arguments)? } else { - let hue_degrees = match try!(arguments.next()) { - Token::Number(NumericValue { value: v, .. }) => v, - Token::Dimension(NumericValue { value: v, .. }, unit) => { - match &*unit { - "deg" => v, - "grad" => v * 360. / 400., - "rad" => v * 360. / (2. * PI as f32), - "turn" => v * 360., - _ => return Err(()) - } - } - _ => return Err(()) - }; - // Subtract an integer before rounding, to avoid some rounding errors: - let hue_normalized_degrees = hue_degrees - 360. * (hue_degrees / 360.).floor(); - let hue = hue_normalized_degrees / 360.; - // Saturation and lightness are clamped to 0% ... 100% - // https://drafts.csswg.org/css-color/#the-hsl-notation - let saturation = match try!(arguments.next()) { - Token::Percentage(ref v) => v.unit_value, - Token::Comma => { - uses_commas = true; - try!(arguments.expect_percentage()) - } - _ => return Err(()) - }.max(0.).min(1.); - if uses_commas { - try!(arguments.expect_comma()); - } - let lightness = try!(arguments.expect_percentage()).max(0.).min(1.); - - // https://drafts.csswg.org/css-color/#hsl-color - // except with h pre-multiplied by 3, to avoid some rounding errors. - fn hue_to_rgb(m1: f32, m2: f32, mut h3: f32) -> f32 { - if h3 < 0. { h3 += 3. } - if h3 > 3. { h3 -= 3. } - - if h3 * 2. < 1. { m1 + (m2 - m1) * h3 * 2. } - else if h3 * 2. < 3. { m2 } - else if h3 < 2. { m1 + (m2 - m1) * (2. - h3) * 2. } - else { m1 } - } - let m2 = if lightness <= 0.5 { lightness * (saturation + 1.) } - else { lightness + saturation - lightness * saturation }; - let m1 = lightness * 2. - m2; - let hue_times_3 = hue * 3.; - red = clamp_f32(hue_to_rgb(m1, m2, hue_times_3 + 1.)); - green = clamp_f32(hue_to_rgb(m1, m2, hue_times_3)); - blue = clamp_f32(hue_to_rgb(m1, m2, hue_times_3 - 1.)); - } + parse_rgb_components_hsl(arguments)? + }; let alpha = if !arguments.is_exhausted() { if uses_commas { @@ -524,13 +436,114 @@ fn parse_color_function(name: &str, arguments: &mut Parser) -> Result 255 }; - /* - let alpha = if has_alpha { - try!(arguments.expect_comma()); - clamp_f32(try!(arguments.expect_number())) - } else { - 255 - };*/ try!(arguments.expect_exhausted()); rgba(red, green, blue, alpha) } + + +#[inline] +fn parse_rgb_components_rgb(arguments: &mut Parser) -> Result<(u8, u8, u8, bool), ()> { + let red: u8; + let green: u8; + let blue: u8; + let mut uses_commas = false; + + // Either integers or percentages, but all the same type. + // https://drafts.csswg.org/css-color/#rgb-functions + match try!(arguments.next()) { + Token::Number(NumericValue { value: v, .. }) => { + red = clamp_i32(v as i32); + green = clamp_i32(match try!(arguments.next()) { + Token::Number(NumericValue { value: v, .. }) => v, + Token::Comma => { + uses_commas = true; + try!(arguments.expect_number()) + } + _ => return Err(()) + } as i32); + if uses_commas { + try!(arguments.expect_comma()); + } + blue = clamp_i32(try!(arguments.expect_number()) as i32); + } + Token::Percentage(ref v) => { + red = clamp_f32(v.unit_value); + green = clamp_f32(match try!(arguments.next()) { + Token::Percentage(ref v) => v.unit_value, + Token::Comma => { + uses_commas = true; + try!(arguments.expect_percentage()) + } + _ => return Err(()) + }); + if uses_commas { + try!(arguments.expect_comma()); + } + blue = clamp_f32(try!(arguments.expect_percentage())); + } + _ => return Err(()) + }; + return Ok((red, green, blue, uses_commas)); +} + +#[inline] +fn parse_rgb_components_hsl(arguments: &mut Parser) -> Result<(u8, u8, u8, bool), ()> { + let mut uses_commas = false; + // Hue given as an angle + // https://drafts.csswg.org/css-values/#angles + let hue_degrees = match try!(arguments.next()) { + Token::Number(NumericValue { value: v, .. }) => v, + Token::Dimension(NumericValue { value: v, .. }, unit) => { + match_ignore_ascii_case! { &*unit, + "deg" => v, + "grad" => v * 360. / 400., + "rad" => v * 360. / (2. * PI as f32), + "turn" => v * 360., + _ => return Err(()) + } + } + _ => return Err(()) + }; + // Subtract an integer before rounding, to avoid some rounding errors: + let hue_normalized_degrees = hue_degrees - 360. * (hue_degrees / 360.).floor(); + let hue = hue_normalized_degrees / 360.; + + // Saturation and lightness are clamped to 0% ... 100% + // https://drafts.csswg.org/css-color/#the-hsl-notation + let saturation = match try!(arguments.next()) { + Token::Percentage(ref v) => v.unit_value, + Token::Comma => { + uses_commas = true; + try!(arguments.expect_percentage()) + } + _ => return Err(()) + }; + let saturation = saturation.max(0.).min(1.); + + if uses_commas { + try!(arguments.expect_comma()); + } + + let lightness = try!(arguments.expect_percentage()); + let lightness = lightness.max(0.).min(1.); + + // https://drafts.csswg.org/css-color/#hsl-color + // except with h pre-multiplied by 3, to avoid some rounding errors. + fn hue_to_rgb(m1: f32, m2: f32, mut h3: f32) -> f32 { + if h3 < 0. { h3 += 3. } + if h3 > 3. { h3 -= 3. } + + if h3 * 2. < 1. { m1 + (m2 - m1) * h3 * 2. } + else if h3 * 2. < 3. { m2 } + else if h3 < 2. { m1 + (m2 - m1) * (2. - h3) * 2. } + else { m1 } + } + let m2 = if lightness <= 0.5 { lightness * (saturation + 1.) } + else { lightness + saturation - lightness * saturation }; + let m1 = lightness * 2. - m2; + let hue_times_3 = hue * 3.; + let red = clamp_f32(hue_to_rgb(m1, m2, hue_times_3 + 1.)); + let green = clamp_f32(hue_to_rgb(m1, m2, hue_times_3)); + let blue = clamp_f32(hue_to_rgb(m1, m2, hue_times_3 - 1.)); + return Ok((red, green, blue, uses_commas)); +} diff --git a/src/css-parsing-tests/color3.json b/src/css-parsing-tests/color3.json index ce9e1a23..3a987ccd 100644 --- a/src/css-parsing-tests/color3.json +++ b/src/css-parsing-tests/color3.json @@ -243,6 +243,8 @@ "rgba(10%, 50%, 60%)", [25, 128, 153, 255], "hsla(120deg, 75%, 50%, 0.4)", [32, 224, 32, 102], +"hsla(120DEG, 75%, 50%, 0.4)", [32, 224, 32, 102], +"hsla(120deG, 75%, 50%, 0.4)", [32, 224, 32, 102], "hsla(133.33333333grad, 75%, 50%, 0.6)", [32, 224, 32, 153], "hsla(2.0943951024rad, 75%, 50%, 0.8)", [32, 224, 32, 204], "hsla(0.3333333333turn, 75%, 50%, 1.0)", [32, 224, 32, 255],