1use crate::targets::Browsers;
4
5#[allow(dead_code)]
6#[derive(Clone, Copy, PartialEq)]
7pub enum Feature {
8 AbsFunction,
9 AccentSystemColor,
10 AfarListStyleType,
11 AmharicAbegedeListStyleType,
12 AmharicListStyleType,
13 AnchorSizeSize,
14 AnimationTimelineShorthand,
15 AnyLink,
16 AnyPseudo,
17 ArabicIndicListStyleType,
18 ArmenianListStyleType,
19 AsterisksListStyleType,
20 AutoSize,
21 Autofill,
22 BengaliListStyleType,
23 BinaryListStyleType,
24 BorderImageRepeatRound,
25 BorderImageRepeatSpace,
26 CalcFunction,
27 CambodianListStyleType,
28 CapUnit,
29 CaseInsensitive,
30 ChUnit,
31 CircleListStyleType,
32 CjkDecimalListStyleType,
33 CjkEarthlyBranchListStyleType,
34 CjkHeavenlyStemListStyleType,
35 ClampFunction,
36 ColorFunction,
37 ConicGradient,
38 ContainerQueryLengthUnits,
39 Cue,
40 CueFunction,
41 CustomMediaQueries,
42 DecimalLeadingZeroListStyleType,
43 DecimalListStyleType,
44 DefaultPseudo,
45 DevanagariListStyleType,
46 Dialog,
47 DirSelector,
48 DiscListStyleType,
49 DisclosureClosedListStyleType,
50 DisclosureOpenListStyleType,
51 DoublePositionGradients,
52 EmUnit,
53 EthiopicAbegedeAmEtListStyleType,
54 EthiopicAbegedeGezListStyleType,
55 EthiopicAbegedeListStyleType,
56 EthiopicAbegedeTiErListStyleType,
57 EthiopicAbegedeTiEtListStyleType,
58 EthiopicHalehameAaErListStyleType,
59 EthiopicHalehameAaEtListStyleType,
60 EthiopicHalehameAmEtListStyleType,
61 EthiopicHalehameGezListStyleType,
62 EthiopicHalehameOmEtListStyleType,
63 EthiopicHalehameSidEtListStyleType,
64 EthiopicHalehameSoEtListStyleType,
65 EthiopicHalehameTigListStyleType,
66 EthiopicListStyleType,
67 EthiopicNumericListStyleType,
68 ExUnit,
69 ExtendedSystemFonts,
70 FirstLetter,
71 FirstLine,
72 FitContentFunctionSize,
73 FitContentSize,
74 FocusVisible,
75 FocusWithin,
76 FontFamilySystemUi,
77 FontSizeRem,
78 FontSizeXXXLarge,
79 FontStretchPercentage,
80 FontStyleObliqueAngle,
81 FontWeightNumber,
82 FootnotesListStyleType,
83 FormValidation,
84 Fullscreen,
85 Gencontent,
86 GeorgianListStyleType,
87 GradientInterpolationHints,
88 GujaratiListStyleType,
89 GurmukhiListStyleType,
90 HasSelector,
91 HebrewListStyleType,
92 HexAlphaColors,
93 HiraganaIrohaListStyleType,
94 HiraganaListStyleType,
95 HypotFunction,
96 IcUnit,
97 ImageSet,
98 InOutOfRange,
99 IndeterminatePseudo,
100 IsAnimatableSize,
101 IsSelector,
102 JapaneseFormalListStyleType,
103 JapaneseInformalListStyleType,
104 KannadaListStyleType,
105 KatakanaIrohaListStyleType,
106 KatakanaListStyleType,
107 KhmerListStyleType,
108 KoreanHangulFormalListStyleType,
109 KoreanHanjaFormalListStyleType,
110 KoreanHanjaInformalListStyleType,
111 LabColors,
112 LangSelectorList,
113 LaoListStyleType,
114 LhUnit,
115 LightDark,
116 LinearGradient,
117 LogicalBorderRadius,
118 LogicalBorderShorthand,
119 LogicalBorders,
120 LogicalInset,
121 LogicalMargin,
122 LogicalMarginShorthand,
123 LogicalPadding,
124 LogicalPaddingShorthand,
125 LogicalSize,
126 LogicalTextAlign,
127 LowerAlphaListStyleType,
128 LowerArmenianListStyleType,
129 LowerGreekListStyleType,
130 LowerHexadecimalListStyleType,
131 LowerLatinListStyleType,
132 LowerNorwegianListStyleType,
133 LowerRomanListStyleType,
134 MalayalamListStyleType,
135 MarkerPseudo,
136 MaxContentSize,
137 MaxFunction,
138 MediaIntervalSyntax,
139 MediaRangeSyntax,
140 MinContentSize,
141 MinFunction,
142 ModFunction,
143 MongolianListStyleType,
144 MozAvailableSize,
145 MyanmarListStyleType,
146 Namespaces,
147 Nesting,
148 NoneListStyleType,
149 NotSelectorList,
150 NthChildOf,
151 OctalListStyleType,
152 OklabColors,
153 OptionalPseudo,
154 OriyaListStyleType,
155 OromoListStyleType,
156 OverflowShorthand,
157 P3Colors,
158 PartPseudo,
159 PersianListStyleType,
160 PlaceContent,
161 PlaceItems,
162 PlaceSelf,
163 Placeholder,
164 PlaceholderShown,
165 QUnit,
166 RadialGradient,
167 RcapUnit,
168 RchUnit,
169 ReadOnlyWrite,
170 RemFunction,
171 RemUnit,
172 RepeatingConicGradient,
173 RepeatingLinearGradient,
174 RepeatingRadialGradient,
175 RexUnit,
176 RicUnit,
177 RlhUnit,
178 RoundFunction,
179 Selection,
180 Selectors2,
181 Selectors3,
182 Shadowdomv1,
183 SidamaListStyleType,
184 SignFunction,
185 SimpChineseFormalListStyleType,
186 SimpChineseInformalListStyleType,
187 SomaliListStyleType,
188 SpaceSeparatedColorNotation,
189 SquareListStyleType,
190 StretchSize,
191 StringListStyleType,
192 SymbolsListStyleType,
193 TamilListStyleType,
194 TeluguListStyleType,
195 TextDecorationThicknessPercent,
196 TextDecorationThicknessShorthand,
197 ThaiListStyleType,
198 TibetanListStyleType,
199 TigreListStyleType,
200 TigrinyaErAbegedeListStyleType,
201 TigrinyaErListStyleType,
202 TigrinyaEtAbegedeListStyleType,
203 TigrinyaEtListStyleType,
204 TradChineseFormalListStyleType,
205 TradChineseInformalListStyleType,
206 UpperAlphaListStyleType,
207 UpperArmenianListStyleType,
208 UpperHexadecimalListStyleType,
209 UpperLatinListStyleType,
210 UpperNorwegianListStyleType,
211 UpperRomanListStyleType,
212 VbUnit,
213 VhUnit,
214 ViUnit,
215 ViewportPercentageUnitsDynamic,
216 ViewportPercentageUnitsLarge,
217 ViewportPercentageUnitsSmall,
218 VmaxUnit,
219 VminUnit,
220 VwUnit,
221 WebkitFillAvailableSize,
222 XResolutionUnit,
223}
224
225impl Feature {
226 pub fn is_compatible(&self, browsers: Browsers) -> bool {
227 match self {
228 Feature::Selectors2 => {
229 if let Some(version) = browsers.ie {
230 if version < 458752 {
231 return false;
232 }
233 }
234 if let Some(version) = browsers.edge {
235 if version < 786432 {
236 return false;
237 }
238 }
239 if let Some(version) = browsers.firefox {
240 if version < 131072 {
241 return false;
242 }
243 }
244 if let Some(version) = browsers.chrome {
245 if version < 262144 {
246 return false;
247 }
248 }
249 if let Some(version) = browsers.safari {
250 if version < 196864 {
251 return false;
252 }
253 }
254 if let Some(version) = browsers.opera {
255 if version < 589824 {
256 return false;
257 }
258 }
259 if let Some(version) = browsers.ios_saf {
260 if version < 197120 {
261 return false;
262 }
263 }
264 if let Some(version) = browsers.android {
265 if version < 131328 {
266 return false;
267 }
268 }
269 if let Some(version) = browsers.samsung {
270 if version < 262144 {
271 return false;
272 }
273 }
274 }
275 Feature::Selectors3 => {
276 if let Some(version) = browsers.ie {
277 if version < 589824 {
278 return false;
279 }
280 }
281 if let Some(version) = browsers.edge {
282 if version < 786432 {
283 return false;
284 }
285 }
286 if let Some(version) = browsers.firefox {
287 if version < 197888 {
288 return false;
289 }
290 }
291 if let Some(version) = browsers.chrome {
292 if version < 262144 {
293 return false;
294 }
295 }
296 if let Some(version) = browsers.safari {
297 if version < 197120 {
298 return false;
299 }
300 }
301 if let Some(version) = browsers.opera {
302 if version < 591104 {
303 return false;
304 }
305 }
306 if let Some(version) = browsers.ios_saf {
307 if version < 197120 {
308 return false;
309 }
310 }
311 if let Some(version) = browsers.android {
312 if version < 131328 {
313 return false;
314 }
315 }
316 if let Some(version) = browsers.samsung {
317 if version < 262144 {
318 return false;
319 }
320 }
321 }
322 Feature::Gencontent | Feature::FirstLine => {
323 if let Some(version) = browsers.ie {
324 if version < 589824 {
325 return false;
326 }
327 }
328 if let Some(version) = browsers.edge {
329 if version < 786432 {
330 return false;
331 }
332 }
333 if let Some(version) = browsers.firefox {
334 if version < 131072 {
335 return false;
336 }
337 }
338 if let Some(version) = browsers.chrome {
339 if version < 262144 {
340 return false;
341 }
342 }
343 if let Some(version) = browsers.safari {
344 if version < 196864 {
345 return false;
346 }
347 }
348 if let Some(version) = browsers.opera {
349 if version < 589824 {
350 return false;
351 }
352 }
353 if let Some(version) = browsers.ios_saf {
354 if version < 197120 {
355 return false;
356 }
357 }
358 if let Some(version) = browsers.android {
359 if version < 131328 {
360 return false;
361 }
362 }
363 if let Some(version) = browsers.samsung {
364 if version < 262144 {
365 return false;
366 }
367 }
368 }
369 Feature::FirstLetter => {
370 if let Some(version) = browsers.ie {
371 if version < 589824 {
372 return false;
373 }
374 }
375 if let Some(version) = browsers.edge {
376 if version < 786432 {
377 return false;
378 }
379 }
380 if let Some(version) = browsers.firefox {
381 if version < 197888 {
382 return false;
383 }
384 }
385 if let Some(version) = browsers.chrome {
386 if version < 589824 {
387 return false;
388 }
389 }
390 if let Some(version) = browsers.safari {
391 if version < 327936 {
392 return false;
393 }
394 }
395 if let Some(version) = browsers.opera {
396 if version < 722432 {
397 return false;
398 }
399 }
400 if let Some(version) = browsers.ios_saf {
401 if version < 327680 {
402 return false;
403 }
404 }
405 if let Some(version) = browsers.android {
406 if version < 196608 {
407 return false;
408 }
409 }
410 if let Some(version) = browsers.samsung {
411 if version < 262144 {
412 return false;
413 }
414 }
415 }
416 Feature::InOutOfRange => {
417 if let Some(version) = browsers.edge {
418 if version < 5177344 {
419 return false;
420 }
421 }
422 if let Some(version) = browsers.firefox {
423 if version < 3276800 {
424 return false;
425 }
426 }
427 if let Some(version) = browsers.chrome {
428 if version < 3473408 {
429 return false;
430 }
431 }
432 if let Some(version) = browsers.safari {
433 if version < 655616 {
434 return false;
435 }
436 }
437 if let Some(version) = browsers.opera {
438 if version < 2621440 {
439 return false;
440 }
441 }
442 if let Some(version) = browsers.ios_saf {
443 if version < 656128 {
444 return false;
445 }
446 }
447 if let Some(version) = browsers.android {
448 if version < 8388608 {
449 return false;
450 }
451 }
452 if let Some(version) = browsers.samsung {
453 if version < 327680 {
454 return false;
455 }
456 }
457 if browsers.ie.is_some() {
458 return false;
459 }
460 }
461 Feature::FormValidation => {
462 if let Some(version) = browsers.ie {
463 if version < 655360 {
464 return false;
465 }
466 }
467 if let Some(version) = browsers.edge {
468 if version < 786432 {
469 return false;
470 }
471 }
472 if let Some(version) = browsers.firefox {
473 if version < 262144 {
474 return false;
475 }
476 }
477 if let Some(version) = browsers.chrome {
478 if version < 655360 {
479 return false;
480 }
481 }
482 if let Some(version) = browsers.safari {
483 if version < 655616 {
484 return false;
485 }
486 }
487 if let Some(version) = browsers.opera {
488 if version < 655360 {
489 return false;
490 }
491 }
492 if let Some(version) = browsers.ios_saf {
493 if version < 656128 {
494 return false;
495 }
496 }
497 if let Some(version) = browsers.android {
498 if version < 263171 {
499 return false;
500 }
501 }
502 if let Some(version) = browsers.samsung {
503 if version < 262144 {
504 return false;
505 }
506 }
507 }
508 Feature::AnyLink => {
509 if let Some(version) = browsers.edge {
510 if version < 5177344 {
511 return false;
512 }
513 }
514 if let Some(version) = browsers.firefox {
515 if version < 3276800 {
516 return false;
517 }
518 }
519 if let Some(version) = browsers.chrome {
520 if version < 4259840 {
521 return false;
522 }
523 }
524 if let Some(version) = browsers.safari {
525 if version < 589824 {
526 return false;
527 }
528 }
529 if let Some(version) = browsers.opera {
530 if version < 3407872 {
531 return false;
532 }
533 }
534 if let Some(version) = browsers.ios_saf {
535 if version < 589824 {
536 return false;
537 }
538 }
539 if let Some(version) = browsers.android {
540 if version < 8388608 {
541 return false;
542 }
543 }
544 if let Some(version) = browsers.samsung {
545 if version < 590336 {
546 return false;
547 }
548 }
549 if browsers.ie.is_some() {
550 return false;
551 }
552 }
553 Feature::DefaultPseudo => {
554 if let Some(version) = browsers.edge {
555 if version < 5177344 {
556 return false;
557 }
558 }
559 if let Some(version) = browsers.firefox {
560 if version < 262144 {
561 return false;
562 }
563 }
564 if let Some(version) = browsers.chrome {
565 if version < 3342336 {
566 return false;
567 }
568 }
569 if let Some(version) = browsers.safari {
570 if version < 655616 {
571 return false;
572 }
573 }
574 if let Some(version) = browsers.opera {
575 if version < 2490368 {
576 return false;
577 }
578 }
579 if let Some(version) = browsers.ios_saf {
580 if version < 656128 {
581 return false;
582 }
583 }
584 if let Some(version) = browsers.android {
585 if version < 8388608 {
586 return false;
587 }
588 }
589 if let Some(version) = browsers.samsung {
590 if version < 327680 {
591 return false;
592 }
593 }
594 if browsers.ie.is_some() {
595 return false;
596 }
597 }
598 Feature::DirSelector => {
599 if let Some(version) = browsers.edge {
600 if version < 7864320 {
601 return false;
602 }
603 }
604 if let Some(version) = browsers.firefox {
605 if version < 3211264 {
606 return false;
607 }
608 }
609 if let Some(version) = browsers.chrome {
610 if version < 7864320 {
611 return false;
612 }
613 }
614 if let Some(version) = browsers.safari {
615 if version < 1049600 {
616 return false;
617 }
618 }
619 if let Some(version) = browsers.opera {
620 if version < 6946816 {
621 return false;
622 }
623 }
624 if let Some(version) = browsers.ios_saf {
625 if version < 1049600 {
626 return false;
627 }
628 }
629 if let Some(version) = browsers.android {
630 if version < 8388608 {
631 return false;
632 }
633 }
634 if let Some(version) = browsers.samsung {
635 if version < 1638400 {
636 return false;
637 }
638 }
639 if browsers.ie.is_some() {
640 return false;
641 }
642 }
643 Feature::FocusWithin => {
644 if let Some(version) = browsers.edge {
645 if version < 5177344 {
646 return false;
647 }
648 }
649 if let Some(version) = browsers.firefox {
650 if version < 3407872 {
651 return false;
652 }
653 }
654 if let Some(version) = browsers.chrome {
655 if version < 3932160 {
656 return false;
657 }
658 }
659 if let Some(version) = browsers.safari {
660 if version < 655616 {
661 return false;
662 }
663 }
664 if let Some(version) = browsers.opera {
665 if version < 3080192 {
666 return false;
667 }
668 }
669 if let Some(version) = browsers.ios_saf {
670 if version < 656128 {
671 return false;
672 }
673 }
674 if let Some(version) = browsers.android {
675 if version < 8388608 {
676 return false;
677 }
678 }
679 if let Some(version) = browsers.samsung {
680 if version < 524800 {
681 return false;
682 }
683 }
684 if browsers.ie.is_some() {
685 return false;
686 }
687 }
688 Feature::FocusVisible => {
689 if let Some(version) = browsers.edge {
690 if version < 5636096 {
691 return false;
692 }
693 }
694 if let Some(version) = browsers.firefox {
695 if version < 5570560 {
696 return false;
697 }
698 }
699 if let Some(version) = browsers.chrome {
700 if version < 5636096 {
701 return false;
702 }
703 }
704 if let Some(version) = browsers.safari {
705 if version < 984064 {
706 return false;
707 }
708 }
709 if let Some(version) = browsers.opera {
710 if version < 4718592 {
711 return false;
712 }
713 }
714 if let Some(version) = browsers.ios_saf {
715 if version < 984064 {
716 return false;
717 }
718 }
719 if let Some(version) = browsers.android {
720 if version < 8388608 {
721 return false;
722 }
723 }
724 if let Some(version) = browsers.samsung {
725 if version < 917504 {
726 return false;
727 }
728 }
729 if browsers.ie.is_some() {
730 return false;
731 }
732 }
733 Feature::IndeterminatePseudo => {
734 if let Some(version) = browsers.edge {
735 if version < 5177344 {
736 return false;
737 }
738 }
739 if let Some(version) = browsers.firefox {
740 if version < 3342336 {
741 return false;
742 }
743 }
744 if let Some(version) = browsers.chrome {
745 if version < 2555904 {
746 return false;
747 }
748 }
749 if let Some(version) = browsers.safari {
750 if version < 655616 {
751 return false;
752 }
753 }
754 if let Some(version) = browsers.opera {
755 if version < 1703936 {
756 return false;
757 }
758 }
759 if let Some(version) = browsers.ios_saf {
760 if version < 656128 {
761 return false;
762 }
763 }
764 if let Some(version) = browsers.android {
765 if version < 8388608 {
766 return false;
767 }
768 }
769 if let Some(version) = browsers.samsung {
770 if version < 262144 {
771 return false;
772 }
773 }
774 if browsers.ie.is_some() {
775 return false;
776 }
777 }
778 Feature::IsSelector => {
779 if let Some(version) = browsers.edge {
780 if version < 5767168 {
781 return false;
782 }
783 }
784 if let Some(version) = browsers.firefox {
785 if version < 5111808 {
786 return false;
787 }
788 }
789 if let Some(version) = browsers.chrome {
790 if version < 5767168 {
791 return false;
792 }
793 }
794 if let Some(version) = browsers.safari {
795 if version < 917504 {
796 return false;
797 }
798 }
799 if let Some(version) = browsers.opera {
800 if version < 4915200 {
801 return false;
802 }
803 }
804 if let Some(version) = browsers.ios_saf {
805 if version < 917504 {
806 return false;
807 }
808 }
809 if let Some(version) = browsers.android {
810 if version < 8388608 {
811 return false;
812 }
813 }
814 if let Some(version) = browsers.samsung {
815 if version < 983040 {
816 return false;
817 }
818 }
819 if browsers.ie.is_some() {
820 return false;
821 }
822 }
823 Feature::OptionalPseudo => {
824 if let Some(version) = browsers.ie {
825 if version < 655360 {
826 return false;
827 }
828 }
829 if let Some(version) = browsers.edge {
830 if version < 786432 {
831 return false;
832 }
833 }
834 if let Some(version) = browsers.firefox {
835 if version < 262144 {
836 return false;
837 }
838 }
839 if let Some(version) = browsers.chrome {
840 if version < 983040 {
841 return false;
842 }
843 }
844 if let Some(version) = browsers.safari {
845 if version < 327680 {
846 return false;
847 }
848 }
849 if let Some(version) = browsers.opera {
850 if version < 983040 {
851 return false;
852 }
853 }
854 if let Some(version) = browsers.ios_saf {
855 if version < 327680 {
856 return false;
857 }
858 }
859 if let Some(version) = browsers.android {
860 if version < 131840 {
861 return false;
862 }
863 }
864 if let Some(version) = browsers.samsung {
865 if version < 262144 {
866 return false;
867 }
868 }
869 }
870 Feature::PlaceholderShown => {
871 if let Some(version) = browsers.edge {
872 if version < 5177344 {
873 return false;
874 }
875 }
876 if let Some(version) = browsers.firefox {
877 if version < 3342336 {
878 return false;
879 }
880 }
881 if let Some(version) = browsers.chrome {
882 if version < 3080192 {
883 return false;
884 }
885 }
886 if let Some(version) = browsers.safari {
887 if version < 589824 {
888 return false;
889 }
890 }
891 if let Some(version) = browsers.opera {
892 if version < 2228224 {
893 return false;
894 }
895 }
896 if let Some(version) = browsers.ios_saf {
897 if version < 589824 {
898 return false;
899 }
900 }
901 if let Some(version) = browsers.android {
902 if version < 8388608 {
903 return false;
904 }
905 }
906 if let Some(version) = browsers.samsung {
907 if version < 327680 {
908 return false;
909 }
910 }
911 if browsers.ie.is_some() {
912 return false;
913 }
914 }
915 Feature::Dialog => {
916 if let Some(version) = browsers.edge {
917 if version < 5177344 {
918 return false;
919 }
920 }
921 if let Some(version) = browsers.firefox {
922 if version < 6422528 {
923 return false;
924 }
925 }
926 if let Some(version) = browsers.chrome {
927 if version < 2424832 {
928 return false;
929 }
930 }
931 if let Some(version) = browsers.safari {
932 if version < 984064 {
933 return false;
934 }
935 }
936 if let Some(version) = browsers.opera {
937 if version < 1572864 {
938 return false;
939 }
940 }
941 if let Some(version) = browsers.ios_saf {
942 if version < 984064 {
943 return false;
944 }
945 }
946 if let Some(version) = browsers.android {
947 if version < 8388608 {
948 return false;
949 }
950 }
951 if let Some(version) = browsers.samsung {
952 if version < 262144 {
953 return false;
954 }
955 }
956 if browsers.ie.is_some() {
957 return false;
958 }
959 }
960 Feature::Fullscreen => {
961 if let Some(version) = browsers.edge {
962 if version < 5177344 {
963 return false;
964 }
965 }
966 if let Some(version) = browsers.firefox {
967 if version < 4194304 {
968 return false;
969 }
970 }
971 if let Some(version) = browsers.chrome {
972 if version < 4653056 {
973 return false;
974 }
975 }
976 if let Some(version) = browsers.safari {
977 if version < 1049600 {
978 return false;
979 }
980 }
981 if let Some(version) = browsers.opera {
982 if version < 786688 {
983 return false;
984 }
985 }
986 if let Some(version) = browsers.samsung {
987 if version < 655616 {
988 return false;
989 }
990 }
991 if browsers.android.is_some() || browsers.ie.is_some() || browsers.ios_saf.is_some() {
992 return false;
993 }
994 }
995 Feature::MarkerPseudo => {
996 if let Some(version) = browsers.edge {
997 if version < 5636096 {
998 return false;
999 }
1000 }
1001 if let Some(version) = browsers.firefox {
1002 if version < 4456448 {
1003 return false;
1004 }
1005 }
1006 if let Some(version) = browsers.chrome {
1007 if version < 5636096 {
1008 return false;
1009 }
1010 }
1011 if let Some(version) = browsers.safari {
1012 if version < 721152 {
1013 return false;
1014 }
1015 }
1016 if let Some(version) = browsers.opera {
1017 if version < 4718592 {
1018 return false;
1019 }
1020 }
1021 if let Some(version) = browsers.ios_saf {
1022 if version < 721664 {
1023 return false;
1024 }
1025 }
1026 if let Some(version) = browsers.android {
1027 if version < 8388608 {
1028 return false;
1029 }
1030 }
1031 if let Some(version) = browsers.samsung {
1032 if version < 917504 {
1033 return false;
1034 }
1035 }
1036 if browsers.ie.is_some() {
1037 return false;
1038 }
1039 }
1040 Feature::Placeholder => {
1041 if let Some(version) = browsers.edge {
1042 if version < 5177344 {
1043 return false;
1044 }
1045 }
1046 if let Some(version) = browsers.firefox {
1047 if version < 3342336 {
1048 return false;
1049 }
1050 }
1051 if let Some(version) = browsers.chrome {
1052 if version < 3735552 {
1053 return false;
1054 }
1055 }
1056 if let Some(version) = browsers.safari {
1057 if version < 655616 {
1058 return false;
1059 }
1060 }
1061 if let Some(version) = browsers.opera {
1062 if version < 2883584 {
1063 return false;
1064 }
1065 }
1066 if let Some(version) = browsers.ios_saf {
1067 if version < 656128 {
1068 return false;
1069 }
1070 }
1071 if let Some(version) = browsers.android {
1072 if version < 8388608 {
1073 return false;
1074 }
1075 }
1076 if let Some(version) = browsers.samsung {
1077 if version < 459264 {
1078 return false;
1079 }
1080 }
1081 if browsers.ie.is_some() {
1082 return false;
1083 }
1084 }
1085 Feature::Selection => {
1086 if let Some(version) = browsers.ie {
1087 if version < 589824 {
1088 return false;
1089 }
1090 }
1091 if let Some(version) = browsers.edge {
1092 if version < 786432 {
1093 return false;
1094 }
1095 }
1096 if let Some(version) = browsers.firefox {
1097 if version < 4063232 {
1098 return false;
1099 }
1100 }
1101 if let Some(version) = browsers.chrome {
1102 if version < 262144 {
1103 return false;
1104 }
1105 }
1106 if let Some(version) = browsers.safari {
1107 if version < 196864 {
1108 return false;
1109 }
1110 }
1111 if let Some(version) = browsers.opera {
1112 if version < 591104 {
1113 return false;
1114 }
1115 }
1116 if let Some(version) = browsers.android {
1117 if version < 263168 {
1118 return false;
1119 }
1120 }
1121 if let Some(version) = browsers.samsung {
1122 if version < 262144 {
1123 return false;
1124 }
1125 }
1126 if browsers.ios_saf.is_some() {
1127 return false;
1128 }
1129 }
1130 Feature::CaseInsensitive => {
1131 if let Some(version) = browsers.edge {
1132 if version < 5177344 {
1133 return false;
1134 }
1135 }
1136 if let Some(version) = browsers.firefox {
1137 if version < 3080192 {
1138 return false;
1139 }
1140 }
1141 if let Some(version) = browsers.chrome {
1142 if version < 3211264 {
1143 return false;
1144 }
1145 }
1146 if let Some(version) = browsers.safari {
1147 if version < 589824 {
1148 return false;
1149 }
1150 }
1151 if let Some(version) = browsers.opera {
1152 if version < 2359296 {
1153 return false;
1154 }
1155 }
1156 if let Some(version) = browsers.ios_saf {
1157 if version < 589824 {
1158 return false;
1159 }
1160 }
1161 if let Some(version) = browsers.android {
1162 if version < 8388608 {
1163 return false;
1164 }
1165 }
1166 if let Some(version) = browsers.samsung {
1167 if version < 327680 {
1168 return false;
1169 }
1170 }
1171 if browsers.ie.is_some() {
1172 return false;
1173 }
1174 }
1175 Feature::ReadOnlyWrite => {
1176 if let Some(version) = browsers.edge {
1177 if version < 851968 {
1178 return false;
1179 }
1180 }
1181 if let Some(version) = browsers.firefox {
1182 if version < 5111808 {
1183 return false;
1184 }
1185 }
1186 if let Some(version) = browsers.chrome {
1187 if version < 2359296 {
1188 return false;
1189 }
1190 }
1191 if let Some(version) = browsers.safari {
1192 if version < 589824 {
1193 return false;
1194 }
1195 }
1196 if let Some(version) = browsers.opera {
1197 if version < 1507328 {
1198 return false;
1199 }
1200 }
1201 if let Some(version) = browsers.ios_saf {
1202 if version < 589824 {
1203 return false;
1204 }
1205 }
1206 if let Some(version) = browsers.android {
1207 if version < 8388608 {
1208 return false;
1209 }
1210 }
1211 if let Some(version) = browsers.samsung {
1212 if version < 262144 {
1213 return false;
1214 }
1215 }
1216 if browsers.ie.is_some() {
1217 return false;
1218 }
1219 }
1220 Feature::Autofill => {
1221 if let Some(version) = browsers.chrome {
1222 if version < 7208960 {
1223 return false;
1224 }
1225 }
1226 if let Some(version) = browsers.edge {
1227 if version < 7208960 {
1228 return false;
1229 }
1230 }
1231 if let Some(version) = browsers.firefox {
1232 if version < 5636096 {
1233 return false;
1234 }
1235 }
1236 if let Some(version) = browsers.opera {
1237 if version < 6291456 {
1238 return false;
1239 }
1240 }
1241 if let Some(version) = browsers.safari {
1242 if version < 983040 {
1243 return false;
1244 }
1245 }
1246 if let Some(version) = browsers.ios_saf {
1247 if version < 983040 {
1248 return false;
1249 }
1250 }
1251 if let Some(version) = browsers.samsung {
1252 if version < 1376256 {
1253 return false;
1254 }
1255 }
1256 if let Some(version) = browsers.android {
1257 if version < 8388608 {
1258 return false;
1259 }
1260 }
1261 if browsers.ie.is_some() {
1262 return false;
1263 }
1264 }
1265 Feature::Namespaces => {
1266 if let Some(version) = browsers.ie {
1267 if version < 589824 {
1268 return false;
1269 }
1270 }
1271 if let Some(version) = browsers.edge {
1272 if version < 786432 {
1273 return false;
1274 }
1275 }
1276 if let Some(version) = browsers.firefox {
1277 if version < 131072 {
1278 return false;
1279 }
1280 }
1281 if let Some(version) = browsers.chrome {
1282 if version < 262144 {
1283 return false;
1284 }
1285 }
1286 if let Some(version) = browsers.safari {
1287 if version < 262144 {
1288 return false;
1289 }
1290 }
1291 if let Some(version) = browsers.opera {
1292 if version < 589824 {
1293 return false;
1294 }
1295 }
1296 if let Some(version) = browsers.ios_saf {
1297 if version < 262656 {
1298 return false;
1299 }
1300 }
1301 if let Some(version) = browsers.android {
1302 if version < 131328 {
1303 return false;
1304 }
1305 }
1306 if let Some(version) = browsers.samsung {
1307 if version < 262144 {
1308 return false;
1309 }
1310 }
1311 }
1312 Feature::Shadowdomv1 => {
1313 if let Some(version) = browsers.edge {
1314 if version < 5177344 {
1315 return false;
1316 }
1317 }
1318 if let Some(version) = browsers.firefox {
1319 if version < 4128768 {
1320 return false;
1321 }
1322 }
1323 if let Some(version) = browsers.chrome {
1324 if version < 3473408 {
1325 return false;
1326 }
1327 }
1328 if let Some(version) = browsers.safari {
1329 if version < 655360 {
1330 return false;
1331 }
1332 }
1333 if let Some(version) = browsers.opera {
1334 if version < 2621440 {
1335 return false;
1336 }
1337 }
1338 if let Some(version) = browsers.ios_saf {
1339 if version < 720896 {
1340 return false;
1341 }
1342 }
1343 if let Some(version) = browsers.android {
1344 if version < 8388608 {
1345 return false;
1346 }
1347 }
1348 if let Some(version) = browsers.samsung {
1349 if version < 393728 {
1350 return false;
1351 }
1352 }
1353 if browsers.ie.is_some() {
1354 return false;
1355 }
1356 }
1357 Feature::HexAlphaColors => {
1358 if let Some(version) = browsers.edge {
1359 if version < 5177344 {
1360 return false;
1361 }
1362 }
1363 if let Some(version) = browsers.firefox {
1364 if version < 3211264 {
1365 return false;
1366 }
1367 }
1368 if let Some(version) = browsers.chrome {
1369 if version < 4063232 {
1370 return false;
1371 }
1372 }
1373 if let Some(version) = browsers.safari {
1374 if version < 655360 {
1375 return false;
1376 }
1377 }
1378 if let Some(version) = browsers.opera {
1379 if version < 3407872 {
1380 return false;
1381 }
1382 }
1383 if let Some(version) = browsers.ios_saf {
1384 if version < 655360 {
1385 return false;
1386 }
1387 }
1388 if let Some(version) = browsers.android {
1389 if version < 8388608 {
1390 return false;
1391 }
1392 }
1393 if let Some(version) = browsers.samsung {
1394 if version < 524800 {
1395 return false;
1396 }
1397 }
1398 if browsers.ie.is_some() {
1399 return false;
1400 }
1401 }
1402 Feature::Nesting => {
1403 if let Some(version) = browsers.edge {
1404 if version < 7864320 {
1405 return false;
1406 }
1407 }
1408 if let Some(version) = browsers.firefox {
1409 if version < 7667712 {
1410 return false;
1411 }
1412 }
1413 if let Some(version) = browsers.chrome {
1414 if version < 7864320 {
1415 return false;
1416 }
1417 }
1418 if let Some(version) = browsers.safari {
1419 if version < 1114624 {
1420 return false;
1421 }
1422 }
1423 if let Some(version) = browsers.opera {
1424 if version < 6946816 {
1425 return false;
1426 }
1427 }
1428 if let Some(version) = browsers.ios_saf {
1429 if version < 1114624 {
1430 return false;
1431 }
1432 }
1433 if let Some(version) = browsers.android {
1434 if version < 8388608 {
1435 return false;
1436 }
1437 }
1438 if browsers.ie.is_some() || browsers.samsung.is_some() {
1439 return false;
1440 }
1441 }
1442 Feature::NotSelectorList => {
1443 if let Some(version) = browsers.edge {
1444 if version < 5767168 {
1445 return false;
1446 }
1447 }
1448 if let Some(version) = browsers.firefox {
1449 if version < 5505024 {
1450 return false;
1451 }
1452 }
1453 if let Some(version) = browsers.chrome {
1454 if version < 5767168 {
1455 return false;
1456 }
1457 }
1458 if let Some(version) = browsers.safari {
1459 if version < 589824 {
1460 return false;
1461 }
1462 }
1463 if let Some(version) = browsers.opera {
1464 if version < 4915200 {
1465 return false;
1466 }
1467 }
1468 if let Some(version) = browsers.ios_saf {
1469 if version < 589824 {
1470 return false;
1471 }
1472 }
1473 if let Some(version) = browsers.android {
1474 if version < 8388608 {
1475 return false;
1476 }
1477 }
1478 if let Some(version) = browsers.samsung {
1479 if version < 983040 {
1480 return false;
1481 }
1482 }
1483 if browsers.ie.is_some() {
1484 return false;
1485 }
1486 }
1487 Feature::HasSelector => {
1488 if let Some(version) = browsers.edge {
1489 if version < 6881280 {
1490 return false;
1491 }
1492 }
1493 if let Some(version) = browsers.firefox {
1494 if version < 7929856 {
1495 return false;
1496 }
1497 }
1498 if let Some(version) = browsers.chrome {
1499 if version < 6881280 {
1500 return false;
1501 }
1502 }
1503 if let Some(version) = browsers.safari {
1504 if version < 984064 {
1505 return false;
1506 }
1507 }
1508 if let Some(version) = browsers.opera {
1509 if version < 5963776 {
1510 return false;
1511 }
1512 }
1513 if let Some(version) = browsers.ios_saf {
1514 if version < 984064 {
1515 return false;
1516 }
1517 }
1518 if let Some(version) = browsers.android {
1519 if version < 8388608 {
1520 return false;
1521 }
1522 }
1523 if let Some(version) = browsers.samsung {
1524 if version < 1310720 {
1525 return false;
1526 }
1527 }
1528 if browsers.ie.is_some() {
1529 return false;
1530 }
1531 }
1532 Feature::FontFamilySystemUi => {
1533 if let Some(version) = browsers.edge {
1534 if version < 5177344 {
1535 return false;
1536 }
1537 }
1538 if let Some(version) = browsers.firefox {
1539 if version < 6029312 {
1540 return false;
1541 }
1542 }
1543 if let Some(version) = browsers.chrome {
1544 if version < 3670016 {
1545 return false;
1546 }
1547 }
1548 if let Some(version) = browsers.safari {
1549 if version < 720896 {
1550 return false;
1551 }
1552 }
1553 if let Some(version) = browsers.opera {
1554 if version < 2818048 {
1555 return false;
1556 }
1557 }
1558 if let Some(version) = browsers.ios_saf {
1559 if version < 720896 {
1560 return false;
1561 }
1562 }
1563 if let Some(version) = browsers.android {
1564 if version < 8388608 {
1565 return false;
1566 }
1567 }
1568 if let Some(version) = browsers.samsung {
1569 if version < 393728 {
1570 return false;
1571 }
1572 }
1573 if browsers.ie.is_some() {
1574 return false;
1575 }
1576 }
1577 Feature::ExtendedSystemFonts => {
1578 if let Some(version) = browsers.safari {
1579 if version < 852224 {
1580 return false;
1581 }
1582 }
1583 if let Some(version) = browsers.ios_saf {
1584 if version < 852992 {
1585 return false;
1586 }
1587 }
1588 if browsers.android.is_some()
1589 || browsers.chrome.is_some()
1590 || browsers.edge.is_some()
1591 || browsers.firefox.is_some()
1592 || browsers.ie.is_some()
1593 || browsers.opera.is_some()
1594 || browsers.samsung.is_some()
1595 {
1596 return false;
1597 }
1598 }
1599 Feature::CalcFunction => {
1600 if let Some(version) = browsers.edge {
1601 if version < 786432 {
1602 return false;
1603 }
1604 }
1605 if let Some(version) = browsers.firefox {
1606 if version < 1048576 {
1607 return false;
1608 }
1609 }
1610 if let Some(version) = browsers.chrome {
1611 if version < 1703936 {
1612 return false;
1613 }
1614 }
1615 if let Some(version) = browsers.safari {
1616 if version < 393472 {
1617 return false;
1618 }
1619 }
1620 if let Some(version) = browsers.opera {
1621 if version < 983040 {
1622 return false;
1623 }
1624 }
1625 if let Some(version) = browsers.ios_saf {
1626 if version < 458752 {
1627 return false;
1628 }
1629 }
1630 if let Some(version) = browsers.android {
1631 if version < 8388608 {
1632 return false;
1633 }
1634 }
1635 if let Some(version) = browsers.samsung {
1636 if version < 262144 {
1637 return false;
1638 }
1639 }
1640 if browsers.ie.is_some() {
1641 return false;
1642 }
1643 }
1644 Feature::CustomMediaQueries | Feature::FitContentFunctionSize | Feature::StretchSize => return false,
1645 Feature::DoublePositionGradients => {
1646 if let Some(version) = browsers.chrome {
1647 if version < 4653056 {
1648 return false;
1649 }
1650 }
1651 if let Some(version) = browsers.edge {
1652 if version < 5177344 {
1653 return false;
1654 }
1655 }
1656 if let Some(version) = browsers.firefox {
1657 if version < 4194304 {
1658 return false;
1659 }
1660 }
1661 if let Some(version) = browsers.opera {
1662 if version < 3276800 {
1663 return false;
1664 }
1665 }
1666 if let Some(version) = browsers.safari {
1667 if version < 786688 {
1668 return false;
1669 }
1670 }
1671 if let Some(version) = browsers.ios_saf {
1672 if version < 786944 {
1673 return false;
1674 }
1675 }
1676 if let Some(version) = browsers.samsung {
1677 if version < 655360 {
1678 return false;
1679 }
1680 }
1681 if let Some(version) = browsers.android {
1682 if version < 4653056 {
1683 return false;
1684 }
1685 }
1686 if browsers.ie.is_some() {
1687 return false;
1688 }
1689 }
1690 Feature::ClampFunction => {
1691 if let Some(version) = browsers.chrome {
1692 if version < 5177344 {
1693 return false;
1694 }
1695 }
1696 if let Some(version) = browsers.edge {
1697 if version < 5177344 {
1698 return false;
1699 }
1700 }
1701 if let Some(version) = browsers.firefox {
1702 if version < 5177344 {
1703 return false;
1704 }
1705 }
1706 if let Some(version) = browsers.opera {
1707 if version < 3735552 {
1708 return false;
1709 }
1710 }
1711 if let Some(version) = browsers.safari {
1712 if version < 852224 {
1713 return false;
1714 }
1715 }
1716 if let Some(version) = browsers.ios_saf {
1717 if version < 852992 {
1718 return false;
1719 }
1720 }
1721 if let Some(version) = browsers.samsung {
1722 if version < 786432 {
1723 return false;
1724 }
1725 }
1726 if let Some(version) = browsers.android {
1727 if version < 5177344 {
1728 return false;
1729 }
1730 }
1731 if browsers.ie.is_some() {
1732 return false;
1733 }
1734 }
1735 Feature::PlaceSelf | Feature::PlaceItems => {
1736 if let Some(version) = browsers.chrome {
1737 if version < 3866624 {
1738 return false;
1739 }
1740 }
1741 if let Some(version) = browsers.edge {
1742 if version < 5177344 {
1743 return false;
1744 }
1745 }
1746 if let Some(version) = browsers.firefox {
1747 if version < 2949120 {
1748 return false;
1749 }
1750 }
1751 if let Some(version) = browsers.opera {
1752 if version < 2818048 {
1753 return false;
1754 }
1755 }
1756 if let Some(version) = browsers.safari {
1757 if version < 720896 {
1758 return false;
1759 }
1760 }
1761 if let Some(version) = browsers.ios_saf {
1762 if version < 720896 {
1763 return false;
1764 }
1765 }
1766 if let Some(version) = browsers.samsung {
1767 if version < 458752 {
1768 return false;
1769 }
1770 }
1771 if let Some(version) = browsers.android {
1772 if version < 3866624 {
1773 return false;
1774 }
1775 }
1776 if browsers.ie.is_some() {
1777 return false;
1778 }
1779 }
1780 Feature::PlaceContent => {
1781 if let Some(version) = browsers.chrome {
1782 if version < 3866624 {
1783 return false;
1784 }
1785 }
1786 if let Some(version) = browsers.edge {
1787 if version < 5177344 {
1788 return false;
1789 }
1790 }
1791 if let Some(version) = browsers.firefox {
1792 if version < 2949120 {
1793 return false;
1794 }
1795 }
1796 if let Some(version) = browsers.opera {
1797 if version < 2818048 {
1798 return false;
1799 }
1800 }
1801 if let Some(version) = browsers.safari {
1802 if version < 589824 {
1803 return false;
1804 }
1805 }
1806 if let Some(version) = browsers.ios_saf {
1807 if version < 589824 {
1808 return false;
1809 }
1810 }
1811 if let Some(version) = browsers.samsung {
1812 if version < 458752 {
1813 return false;
1814 }
1815 }
1816 if let Some(version) = browsers.android {
1817 if version < 3866624 {
1818 return false;
1819 }
1820 }
1821 if browsers.ie.is_some() {
1822 return false;
1823 }
1824 }
1825 Feature::OverflowShorthand => {
1826 if let Some(version) = browsers.chrome {
1827 if version < 4456448 {
1828 return false;
1829 }
1830 }
1831 if let Some(version) = browsers.edge {
1832 if version < 5177344 {
1833 return false;
1834 }
1835 }
1836 if let Some(version) = browsers.firefox {
1837 if version < 3997696 {
1838 return false;
1839 }
1840 }
1841 if let Some(version) = browsers.opera {
1842 if version < 3145728 {
1843 return false;
1844 }
1845 }
1846 if let Some(version) = browsers.safari {
1847 if version < 852224 {
1848 return false;
1849 }
1850 }
1851 if let Some(version) = browsers.ios_saf {
1852 if version < 852992 {
1853 return false;
1854 }
1855 }
1856 if let Some(version) = browsers.samsung {
1857 if version < 655360 {
1858 return false;
1859 }
1860 }
1861 if let Some(version) = browsers.android {
1862 if version < 4456448 {
1863 return false;
1864 }
1865 }
1866 if browsers.ie.is_some() {
1867 return false;
1868 }
1869 }
1870 Feature::MediaRangeSyntax => {
1871 if let Some(version) = browsers.chrome {
1872 if version < 6815744 {
1873 return false;
1874 }
1875 }
1876 if let Some(version) = browsers.edge {
1877 if version < 6815744 {
1878 return false;
1879 }
1880 }
1881 if let Some(version) = browsers.firefox {
1882 if version < 4128768 {
1883 return false;
1884 }
1885 }
1886 if let Some(version) = browsers.opera {
1887 if version < 4653056 {
1888 return false;
1889 }
1890 }
1891 if let Some(version) = browsers.safari {
1892 if version < 1049600 {
1893 return false;
1894 }
1895 }
1896 if let Some(version) = browsers.ios_saf {
1897 if version < 1049600 {
1898 return false;
1899 }
1900 }
1901 if let Some(version) = browsers.samsung {
1902 if version < 1310720 {
1903 return false;
1904 }
1905 }
1906 if let Some(version) = browsers.android {
1907 if version < 6815744 {
1908 return false;
1909 }
1910 }
1911 if browsers.ie.is_some() {
1912 return false;
1913 }
1914 }
1915 Feature::MediaIntervalSyntax => {
1916 if let Some(version) = browsers.chrome {
1917 if version < 6815744 {
1918 return false;
1919 }
1920 }
1921 if let Some(version) = browsers.edge {
1922 if version < 6815744 {
1923 return false;
1924 }
1925 }
1926 if let Some(version) = browsers.firefox {
1927 if version < 6684672 {
1928 return false;
1929 }
1930 }
1931 if let Some(version) = browsers.opera {
1932 if version < 4653056 {
1933 return false;
1934 }
1935 }
1936 if let Some(version) = browsers.safari {
1937 if version < 1049600 {
1938 return false;
1939 }
1940 }
1941 if let Some(version) = browsers.ios_saf {
1942 if version < 1049600 {
1943 return false;
1944 }
1945 }
1946 if let Some(version) = browsers.samsung {
1947 if version < 1310720 {
1948 return false;
1949 }
1950 }
1951 if let Some(version) = browsers.android {
1952 if version < 6815744 {
1953 return false;
1954 }
1955 }
1956 if browsers.ie.is_some() {
1957 return false;
1958 }
1959 }
1960 Feature::LogicalBorders => {
1961 if let Some(version) = browsers.chrome {
1962 if version < 4521984 {
1963 return false;
1964 }
1965 }
1966 if let Some(version) = browsers.edge {
1967 if version < 5177344 {
1968 return false;
1969 }
1970 }
1971 if let Some(version) = browsers.firefox {
1972 if version < 2686976 {
1973 return false;
1974 }
1975 }
1976 if let Some(version) = browsers.opera {
1977 if version < 3145728 {
1978 return false;
1979 }
1980 }
1981 if let Some(version) = browsers.safari {
1982 if version < 786688 {
1983 return false;
1984 }
1985 }
1986 if let Some(version) = browsers.ios_saf {
1987 if version < 786944 {
1988 return false;
1989 }
1990 }
1991 if let Some(version) = browsers.samsung {
1992 if version < 655360 {
1993 return false;
1994 }
1995 }
1996 if let Some(version) = browsers.android {
1997 if version < 4521984 {
1998 return false;
1999 }
2000 }
2001 if browsers.ie.is_some() {
2002 return false;
2003 }
2004 }
2005 Feature::LogicalBorderShorthand | Feature::LogicalMarginShorthand | Feature::LogicalPaddingShorthand => {
2006 if let Some(version) = browsers.chrome {
2007 if version < 5701632 {
2008 return false;
2009 }
2010 }
2011 if let Some(version) = browsers.edge {
2012 if version < 5701632 {
2013 return false;
2014 }
2015 }
2016 if let Some(version) = browsers.firefox {
2017 if version < 4325376 {
2018 return false;
2019 }
2020 }
2021 if let Some(version) = browsers.opera {
2022 if version < 4063232 {
2023 return false;
2024 }
2025 }
2026 if let Some(version) = browsers.safari {
2027 if version < 917760 {
2028 return false;
2029 }
2030 }
2031 if let Some(version) = browsers.ios_saf {
2032 if version < 918784 {
2033 return false;
2034 }
2035 }
2036 if let Some(version) = browsers.samsung {
2037 if version < 917504 {
2038 return false;
2039 }
2040 }
2041 if let Some(version) = browsers.android {
2042 if version < 5701632 {
2043 return false;
2044 }
2045 }
2046 if browsers.ie.is_some() {
2047 return false;
2048 }
2049 }
2050 Feature::LogicalBorderRadius => {
2051 if let Some(version) = browsers.chrome {
2052 if version < 5832704 {
2053 return false;
2054 }
2055 }
2056 if let Some(version) = browsers.edge {
2057 if version < 5832704 {
2058 return false;
2059 }
2060 }
2061 if let Some(version) = browsers.firefox {
2062 if version < 4325376 {
2063 return false;
2064 }
2065 }
2066 if let Some(version) = browsers.opera {
2067 if version < 4128768 {
2068 return false;
2069 }
2070 }
2071 if let Some(version) = browsers.safari {
2072 if version < 983040 {
2073 return false;
2074 }
2075 }
2076 if let Some(version) = browsers.ios_saf {
2077 if version < 983040 {
2078 return false;
2079 }
2080 }
2081 if let Some(version) = browsers.samsung {
2082 if version < 983040 {
2083 return false;
2084 }
2085 }
2086 if let Some(version) = browsers.android {
2087 if version < 5832704 {
2088 return false;
2089 }
2090 }
2091 if browsers.ie.is_some() {
2092 return false;
2093 }
2094 }
2095 Feature::LogicalMargin | Feature::LogicalPadding => {
2096 if let Some(version) = browsers.chrome {
2097 if version < 4521984 {
2098 return false;
2099 }
2100 }
2101 if let Some(version) = browsers.edge {
2102 if version < 5177344 {
2103 return false;
2104 }
2105 }
2106 if let Some(version) = browsers.firefox {
2107 if version < 2686976 {
2108 return false;
2109 }
2110 }
2111 if let Some(version) = browsers.opera {
2112 if version < 3145728 {
2113 return false;
2114 }
2115 }
2116 if let Some(version) = browsers.safari {
2117 if version < 786688 {
2118 return false;
2119 }
2120 }
2121 if let Some(version) = browsers.ios_saf {
2122 if version < 786944 {
2123 return false;
2124 }
2125 }
2126 if let Some(version) = browsers.samsung {
2127 if version < 655360 {
2128 return false;
2129 }
2130 }
2131 if let Some(version) = browsers.android {
2132 if version < 5701632 {
2133 return false;
2134 }
2135 }
2136 if browsers.ie.is_some() {
2137 return false;
2138 }
2139 }
2140 Feature::LogicalInset => {
2141 if let Some(version) = browsers.chrome {
2142 if version < 5701632 {
2143 return false;
2144 }
2145 }
2146 if let Some(version) = browsers.edge {
2147 if version < 5701632 {
2148 return false;
2149 }
2150 }
2151 if let Some(version) = browsers.firefox {
2152 if version < 4128768 {
2153 return false;
2154 }
2155 }
2156 if let Some(version) = browsers.opera {
2157 if version < 4063232 {
2158 return false;
2159 }
2160 }
2161 if let Some(version) = browsers.safari {
2162 if version < 917760 {
2163 return false;
2164 }
2165 }
2166 if let Some(version) = browsers.ios_saf {
2167 if version < 918784 {
2168 return false;
2169 }
2170 }
2171 if let Some(version) = browsers.samsung {
2172 if version < 917504 {
2173 return false;
2174 }
2175 }
2176 if let Some(version) = browsers.android {
2177 if version < 5701632 {
2178 return false;
2179 }
2180 }
2181 if browsers.ie.is_some() {
2182 return false;
2183 }
2184 }
2185 Feature::LogicalSize => {
2186 if let Some(version) = browsers.chrome {
2187 if version < 3735552 {
2188 return false;
2189 }
2190 }
2191 if let Some(version) = browsers.edge {
2192 if version < 5177344 {
2193 return false;
2194 }
2195 }
2196 if let Some(version) = browsers.firefox {
2197 if version < 2686976 {
2198 return false;
2199 }
2200 }
2201 if let Some(version) = browsers.opera {
2202 if version < 2818048 {
2203 return false;
2204 }
2205 }
2206 if let Some(version) = browsers.safari {
2207 if version < 786688 {
2208 return false;
2209 }
2210 }
2211 if let Some(version) = browsers.ios_saf {
2212 if version < 786944 {
2213 return false;
2214 }
2215 }
2216 if let Some(version) = browsers.samsung {
2217 if version < 327680 {
2218 return false;
2219 }
2220 }
2221 if let Some(version) = browsers.android {
2222 if version < 3735552 {
2223 return false;
2224 }
2225 }
2226 if browsers.ie.is_some() {
2227 return false;
2228 }
2229 }
2230 Feature::LogicalTextAlign => {
2231 if let Some(version) = browsers.chrome {
2232 if version < 1179648 {
2233 return false;
2234 }
2235 }
2236 if let Some(version) = browsers.edge {
2237 if version < 5177344 {
2238 return false;
2239 }
2240 }
2241 if let Some(version) = browsers.firefox {
2242 if version < 262144 {
2243 return false;
2244 }
2245 }
2246 if let Some(version) = browsers.opera {
2247 if version < 917504 {
2248 return false;
2249 }
2250 }
2251 if let Some(version) = browsers.safari {
2252 if version < 196864 {
2253 return false;
2254 }
2255 }
2256 if let Some(version) = browsers.ios_saf {
2257 if version < 131072 {
2258 return false;
2259 }
2260 }
2261 if let Some(version) = browsers.samsung {
2262 if version < 65536 {
2263 return false;
2264 }
2265 }
2266 if let Some(version) = browsers.android {
2267 if version < 2424832 {
2268 return false;
2269 }
2270 }
2271 if browsers.ie.is_some() {
2272 return false;
2273 }
2274 }
2275 Feature::LabColors => {
2276 if let Some(version) = browsers.chrome {
2277 if version < 7274496 {
2278 return false;
2279 }
2280 }
2281 if let Some(version) = browsers.edge {
2282 if version < 7274496 {
2283 return false;
2284 }
2285 }
2286 if let Some(version) = browsers.firefox {
2287 if version < 7405568 {
2288 return false;
2289 }
2290 }
2291 if let Some(version) = browsers.opera {
2292 if version < 4915200 {
2293 return false;
2294 }
2295 }
2296 if let Some(version) = browsers.safari {
2297 if version < 983040 {
2298 return false;
2299 }
2300 }
2301 if let Some(version) = browsers.ios_saf {
2302 if version < 983040 {
2303 return false;
2304 }
2305 }
2306 if let Some(version) = browsers.samsung {
2307 if version < 1441792 {
2308 return false;
2309 }
2310 }
2311 if let Some(version) = browsers.android {
2312 if version < 7274496 {
2313 return false;
2314 }
2315 }
2316 if browsers.ie.is_some() {
2317 return false;
2318 }
2319 }
2320 Feature::OklabColors => {
2321 if let Some(version) = browsers.chrome {
2322 if version < 7274496 {
2323 return false;
2324 }
2325 }
2326 if let Some(version) = browsers.edge {
2327 if version < 7274496 {
2328 return false;
2329 }
2330 }
2331 if let Some(version) = browsers.firefox {
2332 if version < 7405568 {
2333 return false;
2334 }
2335 }
2336 if let Some(version) = browsers.opera {
2337 if version < 4915200 {
2338 return false;
2339 }
2340 }
2341 if let Some(version) = browsers.safari {
2342 if version < 984064 {
2343 return false;
2344 }
2345 }
2346 if let Some(version) = browsers.ios_saf {
2347 if version < 984064 {
2348 return false;
2349 }
2350 }
2351 if let Some(version) = browsers.samsung {
2352 if version < 1441792 {
2353 return false;
2354 }
2355 }
2356 if let Some(version) = browsers.android {
2357 if version < 7274496 {
2358 return false;
2359 }
2360 }
2361 if browsers.ie.is_some() {
2362 return false;
2363 }
2364 }
2365 Feature::ColorFunction => {
2366 if let Some(version) = browsers.chrome {
2367 if version < 7274496 {
2368 return false;
2369 }
2370 }
2371 if let Some(version) = browsers.edge {
2372 if version < 7274496 {
2373 return false;
2374 }
2375 }
2376 if let Some(version) = browsers.firefox {
2377 if version < 7405568 {
2378 return false;
2379 }
2380 }
2381 if let Some(version) = browsers.opera {
2382 if version < 4915200 {
2383 return false;
2384 }
2385 }
2386 if let Some(version) = browsers.safari {
2387 if version < 655616 {
2388 return false;
2389 }
2390 }
2391 if let Some(version) = browsers.ios_saf {
2392 if version < 656128 {
2393 return false;
2394 }
2395 }
2396 if let Some(version) = browsers.samsung {
2397 if version < 1441792 {
2398 return false;
2399 }
2400 }
2401 if let Some(version) = browsers.android {
2402 if version < 7274496 {
2403 return false;
2404 }
2405 }
2406 if browsers.ie.is_some() {
2407 return false;
2408 }
2409 }
2410 Feature::SpaceSeparatedColorNotation => {
2411 if let Some(version) = browsers.chrome {
2412 if version < 4259840 {
2413 return false;
2414 }
2415 }
2416 if let Some(version) = browsers.edge {
2417 if version < 5177344 {
2418 return false;
2419 }
2420 }
2421 if let Some(version) = browsers.firefox {
2422 if version < 3407872 {
2423 return false;
2424 }
2425 }
2426 if let Some(version) = browsers.opera {
2427 if version < 3080192 {
2428 return false;
2429 }
2430 }
2431 if let Some(version) = browsers.safari {
2432 if version < 786688 {
2433 return false;
2434 }
2435 }
2436 if let Some(version) = browsers.ios_saf {
2437 if version < 786944 {
2438 return false;
2439 }
2440 }
2441 if let Some(version) = browsers.samsung {
2442 if version < 589824 {
2443 return false;
2444 }
2445 }
2446 if let Some(version) = browsers.android {
2447 if version < 4259840 {
2448 return false;
2449 }
2450 }
2451 if browsers.ie.is_some() {
2452 return false;
2453 }
2454 }
2455 Feature::TextDecorationThicknessPercent => {
2456 if let Some(version) = browsers.chrome {
2457 if version < 5701632 {
2458 return false;
2459 }
2460 }
2461 if let Some(version) = browsers.edge {
2462 if version < 5701632 {
2463 return false;
2464 }
2465 }
2466 if let Some(version) = browsers.firefox {
2467 if version < 5177344 {
2468 return false;
2469 }
2470 }
2471 if let Some(version) = browsers.opera {
2472 if version < 4063232 {
2473 return false;
2474 }
2475 }
2476 if let Some(version) = browsers.safari {
2477 if version < 1115136 {
2478 return false;
2479 }
2480 }
2481 if let Some(version) = browsers.ios_saf {
2482 if version < 1115136 {
2483 return false;
2484 }
2485 }
2486 if let Some(version) = browsers.samsung {
2487 if version < 917504 {
2488 return false;
2489 }
2490 }
2491 if let Some(version) = browsers.android {
2492 if version < 5701632 {
2493 return false;
2494 }
2495 }
2496 if browsers.ie.is_some() {
2497 return false;
2498 }
2499 }
2500 Feature::TextDecorationThicknessShorthand => {
2501 if let Some(version) = browsers.chrome {
2502 if version < 5701632 {
2503 return false;
2504 }
2505 }
2506 if let Some(version) = browsers.edge {
2507 if version < 5701632 {
2508 return false;
2509 }
2510 }
2511 if let Some(version) = browsers.firefox {
2512 if version < 5177344 {
2513 return false;
2514 }
2515 }
2516 if let Some(version) = browsers.opera {
2517 if version < 4063232 {
2518 return false;
2519 }
2520 }
2521 if let Some(version) = browsers.samsung {
2522 if version < 917504 {
2523 return false;
2524 }
2525 }
2526 if let Some(version) = browsers.android {
2527 if version < 5701632 {
2528 return false;
2529 }
2530 }
2531 if browsers.ie.is_some() || browsers.ios_saf.is_some() || browsers.safari.is_some() {
2532 return false;
2533 }
2534 }
2535 Feature::Cue => {
2536 if let Some(version) = browsers.chrome {
2537 if version < 1703936 {
2538 return false;
2539 }
2540 }
2541 if let Some(version) = browsers.edge {
2542 if version < 5177344 {
2543 return false;
2544 }
2545 }
2546 if let Some(version) = browsers.firefox {
2547 if version < 3604480 {
2548 return false;
2549 }
2550 }
2551 if let Some(version) = browsers.opera {
2552 if version < 917504 {
2553 return false;
2554 }
2555 }
2556 if let Some(version) = browsers.safari {
2557 if version < 458752 {
2558 return false;
2559 }
2560 }
2561 if let Some(version) = browsers.ios_saf {
2562 if version < 458752 {
2563 return false;
2564 }
2565 }
2566 if let Some(version) = browsers.samsung {
2567 if version < 66816 {
2568 return false;
2569 }
2570 }
2571 if let Some(version) = browsers.android {
2572 if version < 263168 {
2573 return false;
2574 }
2575 }
2576 if browsers.ie.is_some() {
2577 return false;
2578 }
2579 }
2580 Feature::CueFunction => {
2581 if let Some(version) = browsers.chrome {
2582 if version < 1703936 {
2583 return false;
2584 }
2585 }
2586 if let Some(version) = browsers.edge {
2587 if version < 5177344 {
2588 return false;
2589 }
2590 }
2591 if let Some(version) = browsers.opera {
2592 if version < 917504 {
2593 return false;
2594 }
2595 }
2596 if let Some(version) = browsers.safari {
2597 if version < 458752 {
2598 return false;
2599 }
2600 }
2601 if let Some(version) = browsers.ios_saf {
2602 if version < 458752 {
2603 return false;
2604 }
2605 }
2606 if let Some(version) = browsers.samsung {
2607 if version < 66816 {
2608 return false;
2609 }
2610 }
2611 if let Some(version) = browsers.android {
2612 if version < 263168 {
2613 return false;
2614 }
2615 }
2616 if browsers.firefox.is_some() || browsers.ie.is_some() {
2617 return false;
2618 }
2619 }
2620 Feature::AnyPseudo => {
2621 if let Some(version) = browsers.chrome {
2622 if version < 1179648 {
2623 return false;
2624 }
2625 }
2626 if let Some(version) = browsers.edge {
2627 if version < 5177344 {
2628 return false;
2629 }
2630 }
2631 if let Some(version) = browsers.firefox {
2632 if version < 262144 {
2633 return false;
2634 }
2635 }
2636 if let Some(version) = browsers.opera {
2637 if version < 917504 {
2638 return false;
2639 }
2640 }
2641 if let Some(version) = browsers.safari {
2642 if version < 327680 {
2643 return false;
2644 }
2645 }
2646 if let Some(version) = browsers.ios_saf {
2647 if version < 327680 {
2648 return false;
2649 }
2650 }
2651 if let Some(version) = browsers.samsung {
2652 if version < 65536 {
2653 return false;
2654 }
2655 }
2656 if let Some(version) = browsers.android {
2657 if version < 2424832 {
2658 return false;
2659 }
2660 }
2661 if browsers.ie.is_some() {
2662 return false;
2663 }
2664 }
2665 Feature::PartPseudo => {
2666 if let Some(version) = browsers.chrome {
2667 if version < 4784128 {
2668 return false;
2669 }
2670 }
2671 if let Some(version) = browsers.edge {
2672 if version < 5177344 {
2673 return false;
2674 }
2675 }
2676 if let Some(version) = browsers.firefox {
2677 if version < 5177344 {
2678 return false;
2679 }
2680 }
2681 if let Some(version) = browsers.opera {
2682 if version < 3407872 {
2683 return false;
2684 }
2685 }
2686 if let Some(version) = browsers.safari {
2687 if version < 852224 {
2688 return false;
2689 }
2690 }
2691 if let Some(version) = browsers.ios_saf {
2692 if version < 852992 {
2693 return false;
2694 }
2695 }
2696 if let Some(version) = browsers.samsung {
2697 if version < 720896 {
2698 return false;
2699 }
2700 }
2701 if let Some(version) = browsers.android {
2702 if version < 4784128 {
2703 return false;
2704 }
2705 }
2706 if browsers.ie.is_some() {
2707 return false;
2708 }
2709 }
2710 Feature::ImageSet => {
2711 if let Some(version) = browsers.chrome {
2712 if version < 1638400 {
2713 return false;
2714 }
2715 }
2716 if let Some(version) = browsers.edge {
2717 if version < 5177344 {
2718 return false;
2719 }
2720 }
2721 if let Some(version) = browsers.firefox {
2722 if version < 5767168 {
2723 return false;
2724 }
2725 }
2726 if let Some(version) = browsers.opera {
2727 if version < 917504 {
2728 return false;
2729 }
2730 }
2731 if let Some(version) = browsers.safari {
2732 if version < 393216 {
2733 return false;
2734 }
2735 }
2736 if let Some(version) = browsers.ios_saf {
2737 if version < 393216 {
2738 return false;
2739 }
2740 }
2741 if let Some(version) = browsers.samsung {
2742 if version < 66816 {
2743 return false;
2744 }
2745 }
2746 if let Some(version) = browsers.android {
2747 if version < 263168 {
2748 return false;
2749 }
2750 }
2751 if browsers.ie.is_some() {
2752 return false;
2753 }
2754 }
2755 Feature::XResolutionUnit => {
2756 if let Some(version) = browsers.chrome {
2757 if version < 4456448 {
2758 return false;
2759 }
2760 }
2761 if let Some(version) = browsers.edge {
2762 if version < 5177344 {
2763 return false;
2764 }
2765 }
2766 if let Some(version) = browsers.firefox {
2767 if version < 4063232 {
2768 return false;
2769 }
2770 }
2771 if let Some(version) = browsers.opera {
2772 if version < 3145728 {
2773 return false;
2774 }
2775 }
2776 if let Some(version) = browsers.samsung {
2777 if version < 655360 {
2778 return false;
2779 }
2780 }
2781 if let Some(version) = browsers.android {
2782 if version < 4456448 {
2783 return false;
2784 }
2785 }
2786 if browsers.ie.is_some() || browsers.ios_saf.is_some() || browsers.safari.is_some() {
2787 return false;
2788 }
2789 }
2790 Feature::NthChildOf => {
2791 if let Some(version) = browsers.chrome {
2792 if version < 7274496 {
2793 return false;
2794 }
2795 }
2796 if let Some(version) = browsers.edge {
2797 if version < 7274496 {
2798 return false;
2799 }
2800 }
2801 if let Some(version) = browsers.firefox {
2802 if version < 7405568 {
2803 return false;
2804 }
2805 }
2806 if let Some(version) = browsers.opera {
2807 if version < 4915200 {
2808 return false;
2809 }
2810 }
2811 if let Some(version) = browsers.safari {
2812 if version < 589824 {
2813 return false;
2814 }
2815 }
2816 if let Some(version) = browsers.ios_saf {
2817 if version < 589824 {
2818 return false;
2819 }
2820 }
2821 if let Some(version) = browsers.samsung {
2822 if version < 1441792 {
2823 return false;
2824 }
2825 }
2826 if let Some(version) = browsers.android {
2827 if version < 7274496 {
2828 return false;
2829 }
2830 }
2831 if browsers.ie.is_some() {
2832 return false;
2833 }
2834 }
2835 Feature::MinFunction | Feature::MaxFunction => {
2836 if let Some(version) = browsers.chrome {
2837 if version < 5177344 {
2838 return false;
2839 }
2840 }
2841 if let Some(version) = browsers.edge {
2842 if version < 5177344 {
2843 return false;
2844 }
2845 }
2846 if let Some(version) = browsers.firefox {
2847 if version < 5177344 {
2848 return false;
2849 }
2850 }
2851 if let Some(version) = browsers.opera {
2852 if version < 3735552 {
2853 return false;
2854 }
2855 }
2856 if let Some(version) = browsers.safari {
2857 if version < 721152 {
2858 return false;
2859 }
2860 }
2861 if let Some(version) = browsers.ios_saf {
2862 if version < 721664 {
2863 return false;
2864 }
2865 }
2866 if let Some(version) = browsers.samsung {
2867 if version < 786432 {
2868 return false;
2869 }
2870 }
2871 if let Some(version) = browsers.android {
2872 if version < 5177344 {
2873 return false;
2874 }
2875 }
2876 if browsers.ie.is_some() {
2877 return false;
2878 }
2879 }
2880 Feature::RoundFunction | Feature::RemFunction | Feature::ModFunction => {
2881 if let Some(version) = browsers.chrome {
2882 if version < 8192000 {
2883 return false;
2884 }
2885 }
2886 if let Some(version) = browsers.edge {
2887 if version < 8192000 {
2888 return false;
2889 }
2890 }
2891 if let Some(version) = browsers.firefox {
2892 if version < 7733248 {
2893 return false;
2894 }
2895 }
2896 if let Some(version) = browsers.opera {
2897 if version < 5439488 {
2898 return false;
2899 }
2900 }
2901 if let Some(version) = browsers.safari {
2902 if version < 984064 {
2903 return false;
2904 }
2905 }
2906 if let Some(version) = browsers.ios_saf {
2907 if version < 984064 {
2908 return false;
2909 }
2910 }
2911 if let Some(version) = browsers.samsung {
2912 if version < 1769472 {
2913 return false;
2914 }
2915 }
2916 if let Some(version) = browsers.android {
2917 if version < 8192000 {
2918 return false;
2919 }
2920 }
2921 if browsers.ie.is_some() {
2922 return false;
2923 }
2924 }
2925 Feature::AbsFunction | Feature::SignFunction => {
2926 if let Some(version) = browsers.firefox {
2927 if version < 7733248 {
2928 return false;
2929 }
2930 }
2931 if let Some(version) = browsers.safari {
2932 if version < 984064 {
2933 return false;
2934 }
2935 }
2936 if let Some(version) = browsers.ios_saf {
2937 if version < 984064 {
2938 return false;
2939 }
2940 }
2941 if browsers.android.is_some()
2942 || browsers.chrome.is_some()
2943 || browsers.edge.is_some()
2944 || browsers.ie.is_some()
2945 || browsers.opera.is_some()
2946 || browsers.samsung.is_some()
2947 {
2948 return false;
2949 }
2950 }
2951 Feature::HypotFunction => {
2952 if let Some(version) = browsers.chrome {
2953 if version < 7864320 {
2954 return false;
2955 }
2956 }
2957 if let Some(version) = browsers.edge {
2958 if version < 7864320 {
2959 return false;
2960 }
2961 }
2962 if let Some(version) = browsers.firefox {
2963 if version < 7733248 {
2964 return false;
2965 }
2966 }
2967 if let Some(version) = browsers.opera {
2968 if version < 5242880 {
2969 return false;
2970 }
2971 }
2972 if let Some(version) = browsers.safari {
2973 if version < 984064 {
2974 return false;
2975 }
2976 }
2977 if let Some(version) = browsers.ios_saf {
2978 if version < 984064 {
2979 return false;
2980 }
2981 }
2982 if let Some(version) = browsers.samsung {
2983 if version < 1638400 {
2984 return false;
2985 }
2986 }
2987 if let Some(version) = browsers.android {
2988 if version < 7864320 {
2989 return false;
2990 }
2991 }
2992 if browsers.ie.is_some() {
2993 return false;
2994 }
2995 }
2996 Feature::GradientInterpolationHints => {
2997 if let Some(version) = browsers.chrome {
2998 if version < 2621440 {
2999 return false;
3000 }
3001 }
3002 if let Some(version) = browsers.edge {
3003 if version < 5177344 {
3004 return false;
3005 }
3006 }
3007 if let Some(version) = browsers.firefox {
3008 if version < 2359296 {
3009 return false;
3010 }
3011 }
3012 if let Some(version) = browsers.opera {
3013 if version < 1769472 {
3014 return false;
3015 }
3016 }
3017 if let Some(version) = browsers.safari {
3018 if version < 458752 {
3019 return false;
3020 }
3021 }
3022 if let Some(version) = browsers.ios_saf {
3023 if version < 458752 {
3024 return false;
3025 }
3026 }
3027 if let Some(version) = browsers.samsung {
3028 if version < 262144 {
3029 return false;
3030 }
3031 }
3032 if let Some(version) = browsers.android {
3033 if version < 2621440 {
3034 return false;
3035 }
3036 }
3037 if browsers.ie.is_some() {
3038 return false;
3039 }
3040 }
3041 Feature::BorderImageRepeatRound => {
3042 if let Some(version) = browsers.chrome {
3043 if version < 1966080 {
3044 return false;
3045 }
3046 }
3047 if let Some(version) = browsers.edge {
3048 if version < 786432 {
3049 return false;
3050 }
3051 }
3052 if let Some(version) = browsers.firefox {
3053 if version < 983040 {
3054 return false;
3055 }
3056 }
3057 if let Some(version) = browsers.ie {
3058 if version < 720896 {
3059 return false;
3060 }
3061 }
3062 if let Some(version) = browsers.opera {
3063 if version < 1179648 {
3064 return false;
3065 }
3066 }
3067 if let Some(version) = browsers.safari {
3068 if version < 590080 {
3069 return false;
3070 }
3071 }
3072 if let Some(version) = browsers.ios_saf {
3073 if version < 590592 {
3074 return false;
3075 }
3076 }
3077 if let Some(version) = browsers.samsung {
3078 if version < 131072 {
3079 return false;
3080 }
3081 }
3082 if let Some(version) = browsers.android {
3083 if version < 263168 {
3084 return false;
3085 }
3086 }
3087 }
3088 Feature::BorderImageRepeatSpace => {
3089 if let Some(version) = browsers.chrome {
3090 if version < 3670016 {
3091 return false;
3092 }
3093 }
3094 if let Some(version) = browsers.edge {
3095 if version < 786432 {
3096 return false;
3097 }
3098 }
3099 if let Some(version) = browsers.firefox {
3100 if version < 3276800 {
3101 return false;
3102 }
3103 }
3104 if let Some(version) = browsers.ie {
3105 if version < 720896 {
3106 return false;
3107 }
3108 }
3109 if let Some(version) = browsers.opera {
3110 if version < 2818048 {
3111 return false;
3112 }
3113 }
3114 if let Some(version) = browsers.safari {
3115 if version < 590080 {
3116 return false;
3117 }
3118 }
3119 if let Some(version) = browsers.ios_saf {
3120 if version < 590592 {
3121 return false;
3122 }
3123 }
3124 if let Some(version) = browsers.samsung {
3125 if version < 393216 {
3126 return false;
3127 }
3128 }
3129 if let Some(version) = browsers.android {
3130 if version < 3670016 {
3131 return false;
3132 }
3133 }
3134 }
3135 Feature::FontSizeRem => {
3136 if let Some(version) = browsers.chrome {
3137 if version < 2752512 {
3138 return false;
3139 }
3140 }
3141 if let Some(version) = browsers.edge {
3142 if version < 786432 {
3143 return false;
3144 }
3145 }
3146 if let Some(version) = browsers.firefox {
3147 if version < 2031616 {
3148 return false;
3149 }
3150 }
3151 if let Some(version) = browsers.ie {
3152 if version < 589824 {
3153 return false;
3154 }
3155 }
3156 if let Some(version) = browsers.opera {
3157 if version < 1835008 {
3158 return false;
3159 }
3160 }
3161 if let Some(version) = browsers.safari {
3162 if version < 458752 {
3163 return false;
3164 }
3165 }
3166 if let Some(version) = browsers.ios_saf {
3167 if version < 458752 {
3168 return false;
3169 }
3170 }
3171 if let Some(version) = browsers.samsung {
3172 if version < 262144 {
3173 return false;
3174 }
3175 }
3176 if let Some(version) = browsers.android {
3177 if version < 2752512 {
3178 return false;
3179 }
3180 }
3181 }
3182 Feature::FontSizeXXXLarge => {
3183 if let Some(version) = browsers.chrome {
3184 if version < 5177344 {
3185 return false;
3186 }
3187 }
3188 if let Some(version) = browsers.edge {
3189 if version < 5177344 {
3190 return false;
3191 }
3192 }
3193 if let Some(version) = browsers.firefox {
3194 if version < 5177344 {
3195 return false;
3196 }
3197 }
3198 if let Some(version) = browsers.opera {
3199 if version < 3735552 {
3200 return false;
3201 }
3202 }
3203 if let Some(version) = browsers.safari {
3204 if version < 1049600 {
3205 return false;
3206 }
3207 }
3208 if let Some(version) = browsers.ios_saf {
3209 if version < 1049600 {
3210 return false;
3211 }
3212 }
3213 if let Some(version) = browsers.samsung {
3214 if version < 786432 {
3215 return false;
3216 }
3217 }
3218 if let Some(version) = browsers.android {
3219 if version < 5177344 {
3220 return false;
3221 }
3222 }
3223 if browsers.ie.is_some() {
3224 return false;
3225 }
3226 }
3227 Feature::FontStyleObliqueAngle => {
3228 if let Some(version) = browsers.chrome {
3229 if version < 4063232 {
3230 return false;
3231 }
3232 }
3233 if let Some(version) = browsers.edge {
3234 if version < 5177344 {
3235 return false;
3236 }
3237 }
3238 if let Some(version) = browsers.firefox {
3239 if version < 3997696 {
3240 return false;
3241 }
3242 }
3243 if let Some(version) = browsers.opera {
3244 if version < 3014656 {
3245 return false;
3246 }
3247 }
3248 if let Some(version) = browsers.safari {
3249 if version < 721152 {
3250 return false;
3251 }
3252 }
3253 if let Some(version) = browsers.ios_saf {
3254 if version < 721664 {
3255 return false;
3256 }
3257 }
3258 if let Some(version) = browsers.samsung {
3259 if version < 524288 {
3260 return false;
3261 }
3262 }
3263 if let Some(version) = browsers.android {
3264 if version < 4063232 {
3265 return false;
3266 }
3267 }
3268 if browsers.ie.is_some() {
3269 return false;
3270 }
3271 }
3272 Feature::FontWeightNumber => {
3273 if let Some(version) = browsers.chrome {
3274 if version < 4063232 {
3275 return false;
3276 }
3277 }
3278 if let Some(version) = browsers.edge {
3279 if version < 1114112 {
3280 return false;
3281 }
3282 }
3283 if let Some(version) = browsers.firefox {
3284 if version < 3997696 {
3285 return false;
3286 }
3287 }
3288 if let Some(version) = browsers.opera {
3289 if version < 3014656 {
3290 return false;
3291 }
3292 }
3293 if let Some(version) = browsers.safari {
3294 if version < 720896 {
3295 return false;
3296 }
3297 }
3298 if let Some(version) = browsers.ios_saf {
3299 if version < 720896 {
3300 return false;
3301 }
3302 }
3303 if let Some(version) = browsers.samsung {
3304 if version < 524288 {
3305 return false;
3306 }
3307 }
3308 if let Some(version) = browsers.android {
3309 if version < 4063232 {
3310 return false;
3311 }
3312 }
3313 if browsers.ie.is_some() {
3314 return false;
3315 }
3316 }
3317 Feature::FontStretchPercentage => {
3318 if let Some(version) = browsers.chrome {
3319 if version < 4063232 {
3320 return false;
3321 }
3322 }
3323 if let Some(version) = browsers.edge {
3324 if version < 1179648 {
3325 return false;
3326 }
3327 }
3328 if let Some(version) = browsers.firefox {
3329 if version < 3997696 {
3330 return false;
3331 }
3332 }
3333 if let Some(version) = browsers.opera {
3334 if version < 3014656 {
3335 return false;
3336 }
3337 }
3338 if let Some(version) = browsers.safari {
3339 if version < 721152 {
3340 return false;
3341 }
3342 }
3343 if let Some(version) = browsers.ios_saf {
3344 if version < 721664 {
3345 return false;
3346 }
3347 }
3348 if let Some(version) = browsers.samsung {
3349 if version < 524288 {
3350 return false;
3351 }
3352 }
3353 if let Some(version) = browsers.android {
3354 if version < 4063232 {
3355 return false;
3356 }
3357 }
3358 if browsers.ie.is_some() {
3359 return false;
3360 }
3361 }
3362 Feature::LightDark => {
3363 if let Some(version) = browsers.chrome {
3364 if version < 8060928 {
3365 return false;
3366 }
3367 }
3368 if let Some(version) = browsers.edge {
3369 if version < 8060928 {
3370 return false;
3371 }
3372 }
3373 if let Some(version) = browsers.firefox {
3374 if version < 7864320 {
3375 return false;
3376 }
3377 }
3378 if let Some(version) = browsers.opera {
3379 if version < 5373952 {
3380 return false;
3381 }
3382 }
3383 if let Some(version) = browsers.safari {
3384 if version < 1115392 {
3385 return false;
3386 }
3387 }
3388 if let Some(version) = browsers.ios_saf {
3389 if version < 1115392 {
3390 return false;
3391 }
3392 }
3393 if let Some(version) = browsers.samsung {
3394 if version < 1769472 {
3395 return false;
3396 }
3397 }
3398 if let Some(version) = browsers.android {
3399 if version < 8060928 {
3400 return false;
3401 }
3402 }
3403 if browsers.ie.is_some() {
3404 return false;
3405 }
3406 }
3407 Feature::AccentSystemColor => {
3408 if let Some(version) = browsers.firefox {
3409 if version < 6750208 {
3410 return false;
3411 }
3412 }
3413 if let Some(version) = browsers.safari {
3414 if version < 1049856 {
3415 return false;
3416 }
3417 }
3418 if let Some(version) = browsers.ios_saf {
3419 if version < 1049856 {
3420 return false;
3421 }
3422 }
3423 if browsers.android.is_some()
3424 || browsers.chrome.is_some()
3425 || browsers.edge.is_some()
3426 || browsers.ie.is_some()
3427 || browsers.opera.is_some()
3428 || browsers.samsung.is_some()
3429 {
3430 return false;
3431 }
3432 }
3433 Feature::AnimationTimelineShorthand => {
3434 if let Some(version) = browsers.chrome {
3435 if version < 7536640 {
3436 return false;
3437 }
3438 }
3439 if let Some(version) = browsers.edge {
3440 if version < 7536640 {
3441 return false;
3442 }
3443 }
3444 if let Some(version) = browsers.opera {
3445 if version < 5046272 {
3446 return false;
3447 }
3448 }
3449 if let Some(version) = browsers.samsung {
3450 if version < 1507328 {
3451 return false;
3452 }
3453 }
3454 if let Some(version) = browsers.android {
3455 if version < 7536640 {
3456 return false;
3457 }
3458 }
3459 if browsers.firefox.is_some()
3460 || browsers.ie.is_some()
3461 || browsers.ios_saf.is_some()
3462 || browsers.safari.is_some()
3463 {
3464 return false;
3465 }
3466 }
3467 Feature::QUnit => {
3468 if let Some(version) = browsers.chrome {
3469 if version < 4128768 {
3470 return false;
3471 }
3472 }
3473 if let Some(version) = browsers.edge {
3474 if version < 5177344 {
3475 return false;
3476 }
3477 }
3478 if let Some(version) = browsers.firefox {
3479 if version < 3211264 {
3480 return false;
3481 }
3482 }
3483 if let Some(version) = browsers.opera {
3484 if version < 3014656 {
3485 return false;
3486 }
3487 }
3488 if let Some(version) = browsers.safari {
3489 if version < 852224 {
3490 return false;
3491 }
3492 }
3493 if let Some(version) = browsers.ios_saf {
3494 if version < 852992 {
3495 return false;
3496 }
3497 }
3498 if let Some(version) = browsers.samsung {
3499 if version < 524288 {
3500 return false;
3501 }
3502 }
3503 if let Some(version) = browsers.android {
3504 if version < 4128768 {
3505 return false;
3506 }
3507 }
3508 if browsers.ie.is_some() {
3509 return false;
3510 }
3511 }
3512 Feature::CapUnit => {
3513 if let Some(version) = browsers.chrome {
3514 if version < 7733248 {
3515 return false;
3516 }
3517 }
3518 if let Some(version) = browsers.edge {
3519 if version < 7733248 {
3520 return false;
3521 }
3522 }
3523 if let Some(version) = browsers.firefox {
3524 if version < 6356992 {
3525 return false;
3526 }
3527 }
3528 if let Some(version) = browsers.opera {
3529 if version < 5177344 {
3530 return false;
3531 }
3532 }
3533 if let Some(version) = browsers.safari {
3534 if version < 1114624 {
3535 return false;
3536 }
3537 }
3538 if let Some(version) = browsers.ios_saf {
3539 if version < 1114624 {
3540 return false;
3541 }
3542 }
3543 if let Some(version) = browsers.samsung {
3544 if version < 1638400 {
3545 return false;
3546 }
3547 }
3548 if let Some(version) = browsers.android {
3549 if version < 7733248 {
3550 return false;
3551 }
3552 }
3553 if browsers.ie.is_some() {
3554 return false;
3555 }
3556 }
3557 Feature::ChUnit => {
3558 if let Some(version) = browsers.chrome {
3559 if version < 1769472 {
3560 return false;
3561 }
3562 }
3563 if let Some(version) = browsers.edge {
3564 if version < 786432 {
3565 return false;
3566 }
3567 }
3568 if let Some(version) = browsers.firefox {
3569 if version < 262144 {
3570 return false;
3571 }
3572 }
3573 if let Some(version) = browsers.ie {
3574 if version < 589824 {
3575 return false;
3576 }
3577 }
3578 if let Some(version) = browsers.opera {
3579 if version < 983040 {
3580 return false;
3581 }
3582 }
3583 if let Some(version) = browsers.safari {
3584 if version < 458752 {
3585 return false;
3586 }
3587 }
3588 if let Some(version) = browsers.ios_saf {
3589 if version < 458752 {
3590 return false;
3591 }
3592 }
3593 if let Some(version) = browsers.samsung {
3594 if version < 66816 {
3595 return false;
3596 }
3597 }
3598 if let Some(version) = browsers.android {
3599 if version < 263168 {
3600 return false;
3601 }
3602 }
3603 }
3604 Feature::ContainerQueryLengthUnits => {
3605 if let Some(version) = browsers.chrome {
3606 if version < 6881280 {
3607 return false;
3608 }
3609 }
3610 if let Some(version) = browsers.edge {
3611 if version < 6881280 {
3612 return false;
3613 }
3614 }
3615 if let Some(version) = browsers.firefox {
3616 if version < 7208960 {
3617 return false;
3618 }
3619 }
3620 if let Some(version) = browsers.opera {
3621 if version < 4718592 {
3622 return false;
3623 }
3624 }
3625 if let Some(version) = browsers.safari {
3626 if version < 1048576 {
3627 return false;
3628 }
3629 }
3630 if let Some(version) = browsers.ios_saf {
3631 if version < 1048576 {
3632 return false;
3633 }
3634 }
3635 if let Some(version) = browsers.samsung {
3636 if version < 1310720 {
3637 return false;
3638 }
3639 }
3640 if let Some(version) = browsers.android {
3641 if version < 6881280 {
3642 return false;
3643 }
3644 }
3645 if browsers.ie.is_some() {
3646 return false;
3647 }
3648 }
3649 Feature::EmUnit => {
3650 if let Some(version) = browsers.chrome {
3651 if version < 1179648 {
3652 return false;
3653 }
3654 }
3655 if let Some(version) = browsers.edge {
3656 if version < 786432 {
3657 return false;
3658 }
3659 }
3660 if let Some(version) = browsers.firefox {
3661 if version < 262144 {
3662 return false;
3663 }
3664 }
3665 if let Some(version) = browsers.ie {
3666 if version < 196608 {
3667 return false;
3668 }
3669 }
3670 if let Some(version) = browsers.opera {
3671 if version < 655616 {
3672 return false;
3673 }
3674 }
3675 if let Some(version) = browsers.safari {
3676 if version < 65536 {
3677 return false;
3678 }
3679 }
3680 if let Some(version) = browsers.ios_saf {
3681 if version < 65536 {
3682 return false;
3683 }
3684 }
3685 if let Some(version) = browsers.samsung {
3686 if version < 65536 {
3687 return false;
3688 }
3689 }
3690 if let Some(version) = browsers.android {
3691 if version < 65536 {
3692 return false;
3693 }
3694 }
3695 }
3696 Feature::ExUnit
3697 | Feature::CircleListStyleType
3698 | Feature::DecimalListStyleType
3699 | Feature::DiscListStyleType
3700 | Feature::SquareListStyleType => {
3701 if let Some(version) = browsers.chrome {
3702 if version < 1179648 {
3703 return false;
3704 }
3705 }
3706 if let Some(version) = browsers.edge {
3707 if version < 786432 {
3708 return false;
3709 }
3710 }
3711 if let Some(version) = browsers.firefox {
3712 if version < 262144 {
3713 return false;
3714 }
3715 }
3716 if let Some(version) = browsers.ie {
3717 if version < 262144 {
3718 return false;
3719 }
3720 }
3721 if let Some(version) = browsers.opera {
3722 if version < 655616 {
3723 return false;
3724 }
3725 }
3726 if let Some(version) = browsers.safari {
3727 if version < 65536 {
3728 return false;
3729 }
3730 }
3731 if let Some(version) = browsers.ios_saf {
3732 if version < 65536 {
3733 return false;
3734 }
3735 }
3736 if let Some(version) = browsers.samsung {
3737 if version < 65536 {
3738 return false;
3739 }
3740 }
3741 if let Some(version) = browsers.android {
3742 if version < 263168 {
3743 return false;
3744 }
3745 }
3746 }
3747 Feature::IcUnit => {
3748 if let Some(version) = browsers.chrome {
3749 if version < 6946816 {
3750 return false;
3751 }
3752 }
3753 if let Some(version) = browsers.edge {
3754 if version < 6946816 {
3755 return false;
3756 }
3757 }
3758 if let Some(version) = browsers.firefox {
3759 if version < 6356992 {
3760 return false;
3761 }
3762 }
3763 if let Some(version) = browsers.opera {
3764 if version < 4718592 {
3765 return false;
3766 }
3767 }
3768 if let Some(version) = browsers.safari {
3769 if version < 984064 {
3770 return false;
3771 }
3772 }
3773 if let Some(version) = browsers.ios_saf {
3774 if version < 984064 {
3775 return false;
3776 }
3777 }
3778 if let Some(version) = browsers.samsung {
3779 if version < 1310720 {
3780 return false;
3781 }
3782 }
3783 if let Some(version) = browsers.android {
3784 if version < 6946816 {
3785 return false;
3786 }
3787 }
3788 if browsers.ie.is_some() {
3789 return false;
3790 }
3791 }
3792 Feature::LhUnit => {
3793 if let Some(version) = browsers.chrome {
3794 if version < 7143424 {
3795 return false;
3796 }
3797 }
3798 if let Some(version) = browsers.edge {
3799 if version < 7143424 {
3800 return false;
3801 }
3802 }
3803 if let Some(version) = browsers.firefox {
3804 if version < 7864320 {
3805 return false;
3806 }
3807 }
3808 if let Some(version) = browsers.opera {
3809 if version < 4849664 {
3810 return false;
3811 }
3812 }
3813 if let Some(version) = browsers.safari {
3814 if version < 1049600 {
3815 return false;
3816 }
3817 }
3818 if let Some(version) = browsers.ios_saf {
3819 if version < 1049600 {
3820 return false;
3821 }
3822 }
3823 if let Some(version) = browsers.samsung {
3824 if version < 1376256 {
3825 return false;
3826 }
3827 }
3828 if let Some(version) = browsers.android {
3829 if version < 7143424 {
3830 return false;
3831 }
3832 }
3833 if browsers.ie.is_some() {
3834 return false;
3835 }
3836 }
3837 Feature::RcapUnit => {
3838 if let Some(version) = browsers.chrome {
3839 if version < 7733248 {
3840 return false;
3841 }
3842 }
3843 if let Some(version) = browsers.edge {
3844 if version < 7733248 {
3845 return false;
3846 }
3847 }
3848 if let Some(version) = browsers.opera {
3849 if version < 5177344 {
3850 return false;
3851 }
3852 }
3853 if let Some(version) = browsers.safari {
3854 if version < 1114624 {
3855 return false;
3856 }
3857 }
3858 if let Some(version) = browsers.ios_saf {
3859 if version < 1114624 {
3860 return false;
3861 }
3862 }
3863 if let Some(version) = browsers.samsung {
3864 if version < 1638400 {
3865 return false;
3866 }
3867 }
3868 if let Some(version) = browsers.android {
3869 if version < 7733248 {
3870 return false;
3871 }
3872 }
3873 if browsers.firefox.is_some() || browsers.ie.is_some() {
3874 return false;
3875 }
3876 }
3877 Feature::RchUnit | Feature::RexUnit | Feature::RicUnit => {
3878 if let Some(version) = browsers.chrome {
3879 if version < 7274496 {
3880 return false;
3881 }
3882 }
3883 if let Some(version) = browsers.edge {
3884 if version < 7274496 {
3885 return false;
3886 }
3887 }
3888 if let Some(version) = browsers.opera {
3889 if version < 4915200 {
3890 return false;
3891 }
3892 }
3893 if let Some(version) = browsers.safari {
3894 if version < 1114624 {
3895 return false;
3896 }
3897 }
3898 if let Some(version) = browsers.ios_saf {
3899 if version < 1114624 {
3900 return false;
3901 }
3902 }
3903 if let Some(version) = browsers.samsung {
3904 if version < 1441792 {
3905 return false;
3906 }
3907 }
3908 if let Some(version) = browsers.android {
3909 if version < 7274496 {
3910 return false;
3911 }
3912 }
3913 if browsers.firefox.is_some() || browsers.ie.is_some() {
3914 return false;
3915 }
3916 }
3917 Feature::RemUnit => {
3918 if let Some(version) = browsers.chrome {
3919 if version < 1179648 {
3920 return false;
3921 }
3922 }
3923 if let Some(version) = browsers.edge {
3924 if version < 786432 {
3925 return false;
3926 }
3927 }
3928 if let Some(version) = browsers.firefox {
3929 if version < 262144 {
3930 return false;
3931 }
3932 }
3933 if let Some(version) = browsers.ie {
3934 if version < 589824 {
3935 return false;
3936 }
3937 }
3938 if let Some(version) = browsers.opera {
3939 if version < 786432 {
3940 return false;
3941 }
3942 }
3943 if let Some(version) = browsers.safari {
3944 if version < 327680 {
3945 return false;
3946 }
3947 }
3948 if let Some(version) = browsers.ios_saf {
3949 if version < 262144 {
3950 return false;
3951 }
3952 }
3953 if let Some(version) = browsers.samsung {
3954 if version < 65536 {
3955 return false;
3956 }
3957 }
3958 if let Some(version) = browsers.android {
3959 if version < 131072 {
3960 return false;
3961 }
3962 }
3963 }
3964 Feature::RlhUnit => {
3965 if let Some(version) = browsers.chrome {
3966 if version < 7274496 {
3967 return false;
3968 }
3969 }
3970 if let Some(version) = browsers.edge {
3971 if version < 7274496 {
3972 return false;
3973 }
3974 }
3975 if let Some(version) = browsers.firefox {
3976 if version < 7864320 {
3977 return false;
3978 }
3979 }
3980 if let Some(version) = browsers.opera {
3981 if version < 4915200 {
3982 return false;
3983 }
3984 }
3985 if let Some(version) = browsers.safari {
3986 if version < 1049600 {
3987 return false;
3988 }
3989 }
3990 if let Some(version) = browsers.ios_saf {
3991 if version < 1049600 {
3992 return false;
3993 }
3994 }
3995 if let Some(version) = browsers.samsung {
3996 if version < 1441792 {
3997 return false;
3998 }
3999 }
4000 if let Some(version) = browsers.android {
4001 if version < 7274496 {
4002 return false;
4003 }
4004 }
4005 if browsers.ie.is_some() {
4006 return false;
4007 }
4008 }
4009 Feature::VbUnit
4010 | Feature::ViUnit
4011 | Feature::ViewportPercentageUnitsDynamic
4012 | Feature::ViewportPercentageUnitsLarge
4013 | Feature::ViewportPercentageUnitsSmall => {
4014 if let Some(version) = browsers.chrome {
4015 if version < 7077888 {
4016 return false;
4017 }
4018 }
4019 if let Some(version) = browsers.edge {
4020 if version < 7077888 {
4021 return false;
4022 }
4023 }
4024 if let Some(version) = browsers.firefox {
4025 if version < 6619136 {
4026 return false;
4027 }
4028 }
4029 if let Some(version) = browsers.opera {
4030 if version < 4784128 {
4031 return false;
4032 }
4033 }
4034 if let Some(version) = browsers.safari {
4035 if version < 984064 {
4036 return false;
4037 }
4038 }
4039 if let Some(version) = browsers.ios_saf {
4040 if version < 984064 {
4041 return false;
4042 }
4043 }
4044 if let Some(version) = browsers.samsung {
4045 if version < 1376256 {
4046 return false;
4047 }
4048 }
4049 if let Some(version) = browsers.android {
4050 if version < 7077888 {
4051 return false;
4052 }
4053 }
4054 if browsers.ie.is_some() {
4055 return false;
4056 }
4057 }
4058 Feature::VhUnit | Feature::VwUnit => {
4059 if let Some(version) = browsers.chrome {
4060 if version < 1638400 {
4061 return false;
4062 }
4063 }
4064 if let Some(version) = browsers.edge {
4065 if version < 786432 {
4066 return false;
4067 }
4068 }
4069 if let Some(version) = browsers.firefox {
4070 if version < 1245184 {
4071 return false;
4072 }
4073 }
4074 if let Some(version) = browsers.ie {
4075 if version < 589824 {
4076 return false;
4077 }
4078 }
4079 if let Some(version) = browsers.opera {
4080 if version < 917504 {
4081 return false;
4082 }
4083 }
4084 if let Some(version) = browsers.safari {
4085 if version < 393216 {
4086 return false;
4087 }
4088 }
4089 if let Some(version) = browsers.ios_saf {
4090 if version < 393216 {
4091 return false;
4092 }
4093 }
4094 if let Some(version) = browsers.samsung {
4095 if version < 66816 {
4096 return false;
4097 }
4098 }
4099 if let Some(version) = browsers.android {
4100 if version < 263168 {
4101 return false;
4102 }
4103 }
4104 }
4105 Feature::VmaxUnit => {
4106 if let Some(version) = browsers.chrome {
4107 if version < 1703936 {
4108 return false;
4109 }
4110 }
4111 if let Some(version) = browsers.edge {
4112 if version < 1048576 {
4113 return false;
4114 }
4115 }
4116 if let Some(version) = browsers.firefox {
4117 if version < 1245184 {
4118 return false;
4119 }
4120 }
4121 if let Some(version) = browsers.opera {
4122 if version < 917504 {
4123 return false;
4124 }
4125 }
4126 if let Some(version) = browsers.safari {
4127 if version < 458752 {
4128 return false;
4129 }
4130 }
4131 if let Some(version) = browsers.ios_saf {
4132 if version < 458752 {
4133 return false;
4134 }
4135 }
4136 if let Some(version) = browsers.samsung {
4137 if version < 66816 {
4138 return false;
4139 }
4140 }
4141 if let Some(version) = browsers.android {
4142 if version < 66816 {
4143 return false;
4144 }
4145 }
4146 if browsers.ie.is_some() {
4147 return false;
4148 }
4149 }
4150 Feature::VminUnit => {
4151 if let Some(version) = browsers.chrome {
4152 if version < 1703936 {
4153 return false;
4154 }
4155 }
4156 if let Some(version) = browsers.edge {
4157 if version < 786432 {
4158 return false;
4159 }
4160 }
4161 if let Some(version) = browsers.firefox {
4162 if version < 1245184 {
4163 return false;
4164 }
4165 }
4166 if let Some(version) = browsers.ie {
4167 if version < 655360 {
4168 return false;
4169 }
4170 }
4171 if let Some(version) = browsers.opera {
4172 if version < 917504 {
4173 return false;
4174 }
4175 }
4176 if let Some(version) = browsers.safari {
4177 if version < 458752 {
4178 return false;
4179 }
4180 }
4181 if let Some(version) = browsers.ios_saf {
4182 if version < 458752 {
4183 return false;
4184 }
4185 }
4186 if let Some(version) = browsers.samsung {
4187 if version < 66816 {
4188 return false;
4189 }
4190 }
4191 if let Some(version) = browsers.android {
4192 if version < 263168 {
4193 return false;
4194 }
4195 }
4196 }
4197 Feature::ConicGradient | Feature::RepeatingConicGradient => {
4198 if let Some(version) = browsers.chrome {
4199 if version < 4521984 {
4200 return false;
4201 }
4202 }
4203 if let Some(version) = browsers.edge {
4204 if version < 5177344 {
4205 return false;
4206 }
4207 }
4208 if let Some(version) = browsers.firefox {
4209 if version < 5439488 {
4210 return false;
4211 }
4212 }
4213 if let Some(version) = browsers.opera {
4214 if version < 3145728 {
4215 return false;
4216 }
4217 }
4218 if let Some(version) = browsers.safari {
4219 if version < 786688 {
4220 return false;
4221 }
4222 }
4223 if let Some(version) = browsers.ios_saf {
4224 if version < 786944 {
4225 return false;
4226 }
4227 }
4228 if let Some(version) = browsers.samsung {
4229 if version < 655360 {
4230 return false;
4231 }
4232 }
4233 if let Some(version) = browsers.android {
4234 if version < 4521984 {
4235 return false;
4236 }
4237 }
4238 if browsers.ie.is_some() {
4239 return false;
4240 }
4241 }
4242 Feature::LinearGradient | Feature::RepeatingLinearGradient => {
4243 if let Some(version) = browsers.chrome {
4244 if version < 1179648 {
4245 return false;
4246 }
4247 }
4248 if let Some(version) = browsers.edge {
4249 if version < 786432 {
4250 return false;
4251 }
4252 }
4253 if let Some(version) = browsers.firefox {
4254 if version < 262144 {
4255 return false;
4256 }
4257 }
4258 if let Some(version) = browsers.ie {
4259 if version < 655360 {
4260 return false;
4261 }
4262 }
4263 if let Some(version) = browsers.opera {
4264 if version < 720896 {
4265 return false;
4266 }
4267 }
4268 if let Some(version) = browsers.safari {
4269 if version < 327936 {
4270 return false;
4271 }
4272 }
4273 if let Some(version) = browsers.ios_saf {
4274 if version < 327680 {
4275 return false;
4276 }
4277 }
4278 if let Some(version) = browsers.samsung {
4279 if version < 65536 {
4280 return false;
4281 }
4282 }
4283 if let Some(version) = browsers.android {
4284 if version < 2424832 {
4285 return false;
4286 }
4287 }
4288 }
4289 Feature::RadialGradient => {
4290 if let Some(version) = browsers.chrome {
4291 if version < 1179648 {
4292 return false;
4293 }
4294 }
4295 if let Some(version) = browsers.edge {
4296 if version < 786432 {
4297 return false;
4298 }
4299 }
4300 if let Some(version) = browsers.firefox {
4301 if version < 262144 {
4302 return false;
4303 }
4304 }
4305 if let Some(version) = browsers.ie {
4306 if version < 655360 {
4307 return false;
4308 }
4309 }
4310 if let Some(version) = browsers.opera {
4311 if version < 786432 {
4312 return false;
4313 }
4314 }
4315 if let Some(version) = browsers.safari {
4316 if version < 327936 {
4317 return false;
4318 }
4319 }
4320 if let Some(version) = browsers.ios_saf {
4321 if version < 327680 {
4322 return false;
4323 }
4324 }
4325 if let Some(version) = browsers.samsung {
4326 if version < 65536 {
4327 return false;
4328 }
4329 }
4330 if let Some(version) = browsers.android {
4331 if version < 2424832 {
4332 return false;
4333 }
4334 }
4335 }
4336 Feature::RepeatingRadialGradient => {
4337 if let Some(version) = browsers.chrome {
4338 if version < 1179648 {
4339 return false;
4340 }
4341 }
4342 if let Some(version) = browsers.edge {
4343 if version < 786432 {
4344 return false;
4345 }
4346 }
4347 if let Some(version) = browsers.firefox {
4348 if version < 655360 {
4349 return false;
4350 }
4351 }
4352 if let Some(version) = browsers.ie {
4353 if version < 655360 {
4354 return false;
4355 }
4356 }
4357 if let Some(version) = browsers.opera {
4358 if version < 786432 {
4359 return false;
4360 }
4361 }
4362 if let Some(version) = browsers.safari {
4363 if version < 327936 {
4364 return false;
4365 }
4366 }
4367 if let Some(version) = browsers.ios_saf {
4368 if version < 327680 {
4369 return false;
4370 }
4371 }
4372 if let Some(version) = browsers.samsung {
4373 if version < 65536 {
4374 return false;
4375 }
4376 }
4377 if let Some(version) = browsers.android {
4378 if version < 263168 {
4379 return false;
4380 }
4381 }
4382 }
4383 Feature::AfarListStyleType
4384 | Feature::AmharicListStyleType
4385 | Feature::AmharicAbegedeListStyleType
4386 | Feature::EthiopicListStyleType
4387 | Feature::EthiopicAbegedeListStyleType
4388 | Feature::EthiopicAbegedeAmEtListStyleType
4389 | Feature::EthiopicAbegedeGezListStyleType
4390 | Feature::EthiopicAbegedeTiErListStyleType
4391 | Feature::EthiopicAbegedeTiEtListStyleType
4392 | Feature::EthiopicHalehameAaErListStyleType
4393 | Feature::EthiopicHalehameAaEtListStyleType
4394 | Feature::EthiopicHalehameAmEtListStyleType
4395 | Feature::EthiopicHalehameGezListStyleType
4396 | Feature::EthiopicHalehameOmEtListStyleType
4397 | Feature::EthiopicHalehameSidEtListStyleType
4398 | Feature::EthiopicHalehameSoEtListStyleType
4399 | Feature::EthiopicHalehameTigListStyleType
4400 | Feature::LowerHexadecimalListStyleType
4401 | Feature::LowerNorwegianListStyleType
4402 | Feature::UpperHexadecimalListStyleType
4403 | Feature::UpperNorwegianListStyleType => {
4404 if let Some(version) = browsers.chrome {
4405 if version < 1179648 {
4406 return false;
4407 }
4408 }
4409 if let Some(version) = browsers.edge {
4410 if version < 5963776 {
4411 return false;
4412 }
4413 }
4414 if let Some(version) = browsers.opera {
4415 if version < 917504 {
4416 return false;
4417 }
4418 }
4419 if let Some(version) = browsers.safari {
4420 if version < 327680 {
4421 return false;
4422 }
4423 }
4424 if let Some(version) = browsers.ios_saf {
4425 if version < 262656 {
4426 return false;
4427 }
4428 }
4429 if let Some(version) = browsers.samsung {
4430 if version < 65536 {
4431 return false;
4432 }
4433 }
4434 if let Some(version) = browsers.android {
4435 if version < 196608 {
4436 return false;
4437 }
4438 }
4439 if browsers.firefox.is_some() || browsers.ie.is_some() {
4440 return false;
4441 }
4442 }
4443 Feature::ArabicIndicListStyleType
4444 | Feature::BengaliListStyleType
4445 | Feature::CjkEarthlyBranchListStyleType
4446 | Feature::CjkHeavenlyStemListStyleType
4447 | Feature::DevanagariListStyleType
4448 | Feature::GujaratiListStyleType
4449 | Feature::GurmukhiListStyleType
4450 | Feature::KannadaListStyleType
4451 | Feature::KhmerListStyleType
4452 | Feature::LaoListStyleType
4453 | Feature::MalayalamListStyleType
4454 | Feature::MyanmarListStyleType
4455 | Feature::OriyaListStyleType
4456 | Feature::PersianListStyleType
4457 | Feature::TeluguListStyleType
4458 | Feature::ThaiListStyleType => {
4459 if let Some(version) = browsers.chrome {
4460 if version < 1179648 {
4461 return false;
4462 }
4463 }
4464 if let Some(version) = browsers.edge {
4465 if version < 5177344 {
4466 return false;
4467 }
4468 }
4469 if let Some(version) = browsers.firefox {
4470 if version < 262144 {
4471 return false;
4472 }
4473 }
4474 if let Some(version) = browsers.opera {
4475 if version < 917504 {
4476 return false;
4477 }
4478 }
4479 if let Some(version) = browsers.safari {
4480 if version < 327680 {
4481 return false;
4482 }
4483 }
4484 if let Some(version) = browsers.ios_saf {
4485 if version < 262656 {
4486 return false;
4487 }
4488 }
4489 if let Some(version) = browsers.samsung {
4490 if version < 65536 {
4491 return false;
4492 }
4493 }
4494 if let Some(version) = browsers.android {
4495 if version < 263168 {
4496 return false;
4497 }
4498 }
4499 if browsers.ie.is_some() {
4500 return false;
4501 }
4502 }
4503 Feature::ArmenianListStyleType
4504 | Feature::DecimalLeadingZeroListStyleType
4505 | Feature::GeorgianListStyleType
4506 | Feature::LowerAlphaListStyleType
4507 | Feature::LowerGreekListStyleType
4508 | Feature::LowerRomanListStyleType
4509 | Feature::UpperAlphaListStyleType
4510 | Feature::UpperLatinListStyleType
4511 | Feature::UpperRomanListStyleType => {
4512 if let Some(version) = browsers.chrome {
4513 if version < 1179648 {
4514 return false;
4515 }
4516 }
4517 if let Some(version) = browsers.edge {
4518 if version < 786432 {
4519 return false;
4520 }
4521 }
4522 if let Some(version) = browsers.firefox {
4523 if version < 262144 {
4524 return false;
4525 }
4526 }
4527 if let Some(version) = browsers.ie {
4528 if version < 524288 {
4529 return false;
4530 }
4531 }
4532 if let Some(version) = browsers.opera {
4533 if version < 655616 {
4534 return false;
4535 }
4536 }
4537 if let Some(version) = browsers.safari {
4538 if version < 65536 {
4539 return false;
4540 }
4541 }
4542 if let Some(version) = browsers.ios_saf {
4543 if version < 65536 {
4544 return false;
4545 }
4546 }
4547 if let Some(version) = browsers.samsung {
4548 if version < 65536 {
4549 return false;
4550 }
4551 }
4552 if let Some(version) = browsers.android {
4553 if version < 263168 {
4554 return false;
4555 }
4556 }
4557 }
4558 Feature::AsterisksListStyleType | Feature::FootnotesListStyleType => {
4559 if let Some(version) = browsers.chrome {
4560 if version < 1179648 {
4561 return false;
4562 }
4563 }
4564 if let Some(version) = browsers.edge {
4565 if version < 5963776 {
4566 return false;
4567 }
4568 }
4569 if let Some(version) = browsers.opera {
4570 if version < 917504 {
4571 return false;
4572 }
4573 }
4574 if let Some(version) = browsers.safari {
4575 if version < 327936 {
4576 return false;
4577 }
4578 }
4579 if let Some(version) = browsers.ios_saf {
4580 if version < 327680 {
4581 return false;
4582 }
4583 }
4584 if let Some(version) = browsers.samsung {
4585 if version < 65536 {
4586 return false;
4587 }
4588 }
4589 if let Some(version) = browsers.android {
4590 if version < 263168 {
4591 return false;
4592 }
4593 }
4594 if browsers.firefox.is_some() || browsers.ie.is_some() {
4595 return false;
4596 }
4597 }
4598 Feature::BinaryListStyleType
4599 | Feature::OctalListStyleType
4600 | Feature::OromoListStyleType
4601 | Feature::SidamaListStyleType
4602 | Feature::SomaliListStyleType
4603 | Feature::TigreListStyleType
4604 | Feature::TigrinyaErListStyleType
4605 | Feature::TigrinyaErAbegedeListStyleType
4606 | Feature::TigrinyaEtListStyleType
4607 | Feature::TigrinyaEtAbegedeListStyleType => {
4608 if let Some(version) = browsers.chrome {
4609 if version < 1179648 {
4610 return false;
4611 }
4612 }
4613 if let Some(version) = browsers.edge {
4614 if version < 5963776 {
4615 return false;
4616 }
4617 }
4618 if let Some(version) = browsers.opera {
4619 if version < 917504 {
4620 return false;
4621 }
4622 }
4623 if let Some(version) = browsers.safari {
4624 if version < 327680 {
4625 return false;
4626 }
4627 }
4628 if let Some(version) = browsers.ios_saf {
4629 if version < 262656 {
4630 return false;
4631 }
4632 }
4633 if let Some(version) = browsers.samsung {
4634 if version < 65536 {
4635 return false;
4636 }
4637 }
4638 if let Some(version) = browsers.android {
4639 if version < 263168 {
4640 return false;
4641 }
4642 }
4643 if browsers.firefox.is_some() || browsers.ie.is_some() {
4644 return false;
4645 }
4646 }
4647 Feature::CambodianListStyleType | Feature::MongolianListStyleType | Feature::TibetanListStyleType => {
4648 if let Some(version) = browsers.chrome {
4649 if version < 1179648 {
4650 return false;
4651 }
4652 }
4653 if let Some(version) = browsers.edge {
4654 if version < 5177344 {
4655 return false;
4656 }
4657 }
4658 if let Some(version) = browsers.firefox {
4659 if version < 2162688 {
4660 return false;
4661 }
4662 }
4663 if let Some(version) = browsers.opera {
4664 if version < 917504 {
4665 return false;
4666 }
4667 }
4668 if let Some(version) = browsers.safari {
4669 if version < 327680 {
4670 return false;
4671 }
4672 }
4673 if let Some(version) = browsers.ios_saf {
4674 if version < 262656 {
4675 return false;
4676 }
4677 }
4678 if let Some(version) = browsers.samsung {
4679 if version < 65536 {
4680 return false;
4681 }
4682 }
4683 if let Some(version) = browsers.android {
4684 if version < 263168 {
4685 return false;
4686 }
4687 }
4688 if browsers.ie.is_some() {
4689 return false;
4690 }
4691 }
4692 Feature::CjkDecimalListStyleType => {
4693 if let Some(version) = browsers.chrome {
4694 if version < 5963776 {
4695 return false;
4696 }
4697 }
4698 if let Some(version) = browsers.edge {
4699 if version < 5963776 {
4700 return false;
4701 }
4702 }
4703 if let Some(version) = browsers.firefox {
4704 if version < 1835008 {
4705 return false;
4706 }
4707 }
4708 if let Some(version) = browsers.opera {
4709 if version < 4194304 {
4710 return false;
4711 }
4712 }
4713 if let Some(version) = browsers.safari {
4714 if version < 983040 {
4715 return false;
4716 }
4717 }
4718 if let Some(version) = browsers.ios_saf {
4719 if version < 983040 {
4720 return false;
4721 }
4722 }
4723 if let Some(version) = browsers.samsung {
4724 if version < 1048576 {
4725 return false;
4726 }
4727 }
4728 if let Some(version) = browsers.android {
4729 if version < 5963776 {
4730 return false;
4731 }
4732 }
4733 if browsers.ie.is_some() {
4734 return false;
4735 }
4736 }
4737 Feature::DisclosureClosedListStyleType | Feature::DisclosureOpenListStyleType => {
4738 if let Some(version) = browsers.chrome {
4739 if version < 5832704 {
4740 return false;
4741 }
4742 }
4743 if let Some(version) = browsers.edge {
4744 if version < 5832704 {
4745 return false;
4746 }
4747 }
4748 if let Some(version) = browsers.firefox {
4749 if version < 2162688 {
4750 return false;
4751 }
4752 }
4753 if let Some(version) = browsers.opera {
4754 if version < 4128768 {
4755 return false;
4756 }
4757 }
4758 if let Some(version) = browsers.safari {
4759 if version < 983040 {
4760 return false;
4761 }
4762 }
4763 if let Some(version) = browsers.ios_saf {
4764 if version < 983040 {
4765 return false;
4766 }
4767 }
4768 if let Some(version) = browsers.samsung {
4769 if version < 983040 {
4770 return false;
4771 }
4772 }
4773 if let Some(version) = browsers.android {
4774 if version < 5832704 {
4775 return false;
4776 }
4777 }
4778 if browsers.ie.is_some() {
4779 return false;
4780 }
4781 }
4782 Feature::EthiopicNumericListStyleType
4783 | Feature::JapaneseFormalListStyleType
4784 | Feature::JapaneseInformalListStyleType
4785 | Feature::TamilListStyleType => {
4786 if let Some(version) = browsers.chrome {
4787 if version < 5963776 {
4788 return false;
4789 }
4790 }
4791 if let Some(version) = browsers.edge {
4792 if version < 5963776 {
4793 return false;
4794 }
4795 }
4796 if let Some(version) = browsers.firefox {
4797 if version < 262144 {
4798 return false;
4799 }
4800 }
4801 if let Some(version) = browsers.opera {
4802 if version < 4194304 {
4803 return false;
4804 }
4805 }
4806 if let Some(version) = browsers.safari {
4807 if version < 983040 {
4808 return false;
4809 }
4810 }
4811 if let Some(version) = browsers.ios_saf {
4812 if version < 983040 {
4813 return false;
4814 }
4815 }
4816 if let Some(version) = browsers.samsung {
4817 if version < 1048576 {
4818 return false;
4819 }
4820 }
4821 if let Some(version) = browsers.android {
4822 if version < 5963776 {
4823 return false;
4824 }
4825 }
4826 if browsers.ie.is_some() {
4827 return false;
4828 }
4829 }
4830 Feature::HebrewListStyleType
4831 | Feature::HiraganaListStyleType
4832 | Feature::HiraganaIrohaListStyleType
4833 | Feature::KatakanaListStyleType
4834 | Feature::KatakanaIrohaListStyleType
4835 | Feature::AutoSize => {
4836 if let Some(version) = browsers.chrome {
4837 if version < 1179648 {
4838 return false;
4839 }
4840 }
4841 if let Some(version) = browsers.edge {
4842 if version < 786432 {
4843 return false;
4844 }
4845 }
4846 if let Some(version) = browsers.firefox {
4847 if version < 262144 {
4848 return false;
4849 }
4850 }
4851 if let Some(version) = browsers.ie {
4852 if version < 720896 {
4853 return false;
4854 }
4855 }
4856 if let Some(version) = browsers.opera {
4857 if version < 917504 {
4858 return false;
4859 }
4860 }
4861 if let Some(version) = browsers.safari {
4862 if version < 65536 {
4863 return false;
4864 }
4865 }
4866 if let Some(version) = browsers.ios_saf {
4867 if version < 65536 {
4868 return false;
4869 }
4870 }
4871 if let Some(version) = browsers.samsung {
4872 if version < 65536 {
4873 return false;
4874 }
4875 }
4876 if let Some(version) = browsers.android {
4877 if version < 263168 {
4878 return false;
4879 }
4880 }
4881 }
4882 Feature::KoreanHangulFormalListStyleType
4883 | Feature::KoreanHanjaFormalListStyleType
4884 | Feature::KoreanHanjaInformalListStyleType => {
4885 if let Some(version) = browsers.chrome {
4886 if version < 2949120 {
4887 return false;
4888 }
4889 }
4890 if let Some(version) = browsers.edge {
4891 if version < 5177344 {
4892 return false;
4893 }
4894 }
4895 if let Some(version) = browsers.firefox {
4896 if version < 1835008 {
4897 return false;
4898 }
4899 }
4900 if let Some(version) = browsers.opera {
4901 if version < 2097152 {
4902 return false;
4903 }
4904 }
4905 if let Some(version) = browsers.safari {
4906 if version < 983040 {
4907 return false;
4908 }
4909 }
4910 if let Some(version) = browsers.ios_saf {
4911 if version < 983040 {
4912 return false;
4913 }
4914 }
4915 if let Some(version) = browsers.samsung {
4916 if version < 327680 {
4917 return false;
4918 }
4919 }
4920 if let Some(version) = browsers.android {
4921 if version < 2949120 {
4922 return false;
4923 }
4924 }
4925 if browsers.ie.is_some() {
4926 return false;
4927 }
4928 }
4929 Feature::LowerArmenianListStyleType | Feature::UpperArmenianListStyleType => {
4930 if let Some(version) = browsers.chrome {
4931 if version < 1179648 {
4932 return false;
4933 }
4934 }
4935 if let Some(version) = browsers.edge {
4936 if version < 5177344 {
4937 return false;
4938 }
4939 }
4940 if let Some(version) = browsers.firefox {
4941 if version < 2162688 {
4942 return false;
4943 }
4944 }
4945 if let Some(version) = browsers.opera {
4946 if version < 917504 {
4947 return false;
4948 }
4949 }
4950 if let Some(version) = browsers.safari {
4951 if version < 327936 {
4952 return false;
4953 }
4954 }
4955 if let Some(version) = browsers.ios_saf {
4956 if version < 327680 {
4957 return false;
4958 }
4959 }
4960 if let Some(version) = browsers.samsung {
4961 if version < 65536 {
4962 return false;
4963 }
4964 }
4965 if let Some(version) = browsers.android {
4966 if version < 263168 {
4967 return false;
4968 }
4969 }
4970 if browsers.ie.is_some() {
4971 return false;
4972 }
4973 }
4974 Feature::LowerLatinListStyleType => {
4975 if let Some(version) = browsers.chrome {
4976 if version < 1179648 {
4977 return false;
4978 }
4979 }
4980 if let Some(version) = browsers.edge {
4981 if version < 786432 {
4982 return false;
4983 }
4984 }
4985 if let Some(version) = browsers.firefox {
4986 if version < 262144 {
4987 return false;
4988 }
4989 }
4990 if let Some(version) = browsers.ie {
4991 if version < 524288 {
4992 return false;
4993 }
4994 }
4995 if let Some(version) = browsers.opera {
4996 if version < 655616 {
4997 return false;
4998 }
4999 }
5000 if let Some(version) = browsers.safari {
5001 if version < 65536 {
5002 return false;
5003 }
5004 }
5005 if let Some(version) = browsers.ios_saf {
5006 if version < 65536 {
5007 return false;
5008 }
5009 }
5010 if let Some(version) = browsers.samsung {
5011 if version < 327680 {
5012 return false;
5013 }
5014 }
5015 if let Some(version) = browsers.android {
5016 if version < 263168 {
5017 return false;
5018 }
5019 }
5020 }
5021 Feature::NoneListStyleType => {
5022 if let Some(version) = browsers.chrome {
5023 if version < 1179648 {
5024 return false;
5025 }
5026 }
5027 if let Some(version) = browsers.edge {
5028 if version < 786432 {
5029 return false;
5030 }
5031 }
5032 if let Some(version) = browsers.firefox {
5033 if version < 5177344 {
5034 return false;
5035 }
5036 }
5037 if let Some(version) = browsers.ie {
5038 if version < 720896 {
5039 return false;
5040 }
5041 }
5042 if let Some(version) = browsers.opera {
5043 if version < 917504 {
5044 return false;
5045 }
5046 }
5047 if let Some(version) = browsers.safari {
5048 if version < 65536 {
5049 return false;
5050 }
5051 }
5052 if let Some(version) = browsers.ios_saf {
5053 if version < 65536 {
5054 return false;
5055 }
5056 }
5057 if let Some(version) = browsers.samsung {
5058 if version < 65536 {
5059 return false;
5060 }
5061 }
5062 if let Some(version) = browsers.android {
5063 if version < 263168 {
5064 return false;
5065 }
5066 }
5067 }
5068 Feature::SimpChineseFormalListStyleType
5069 | Feature::SimpChineseInformalListStyleType
5070 | Feature::TradChineseFormalListStyleType
5071 | Feature::TradChineseInformalListStyleType => {
5072 if let Some(version) = browsers.chrome {
5073 if version < 2949120 {
5074 return false;
5075 }
5076 }
5077 if let Some(version) = browsers.edge {
5078 if version < 5177344 {
5079 return false;
5080 }
5081 }
5082 if let Some(version) = browsers.firefox {
5083 if version < 262144 {
5084 return false;
5085 }
5086 }
5087 if let Some(version) = browsers.opera {
5088 if version < 2097152 {
5089 return false;
5090 }
5091 }
5092 if let Some(version) = browsers.safari {
5093 if version < 983040 {
5094 return false;
5095 }
5096 }
5097 if let Some(version) = browsers.ios_saf {
5098 if version < 983040 {
5099 return false;
5100 }
5101 }
5102 if let Some(version) = browsers.samsung {
5103 if version < 327680 {
5104 return false;
5105 }
5106 }
5107 if let Some(version) = browsers.android {
5108 if version < 2949120 {
5109 return false;
5110 }
5111 }
5112 if browsers.ie.is_some() {
5113 return false;
5114 }
5115 }
5116 Feature::StringListStyleType => {
5117 if let Some(version) = browsers.chrome {
5118 if version < 5177344 {
5119 return false;
5120 }
5121 }
5122 if let Some(version) = browsers.edge {
5123 if version < 5177344 {
5124 return false;
5125 }
5126 }
5127 if let Some(version) = browsers.firefox {
5128 if version < 2555904 {
5129 return false;
5130 }
5131 }
5132 if let Some(version) = browsers.opera {
5133 if version < 3735552 {
5134 return false;
5135 }
5136 }
5137 if let Some(version) = browsers.safari {
5138 if version < 917760 {
5139 return false;
5140 }
5141 }
5142 if let Some(version) = browsers.ios_saf {
5143 if version < 918784 {
5144 return false;
5145 }
5146 }
5147 if let Some(version) = browsers.samsung {
5148 if version < 786432 {
5149 return false;
5150 }
5151 }
5152 if let Some(version) = browsers.android {
5153 if version < 5177344 {
5154 return false;
5155 }
5156 }
5157 if browsers.ie.is_some() {
5158 return false;
5159 }
5160 }
5161 Feature::SymbolsListStyleType => {
5162 if let Some(version) = browsers.firefox {
5163 if version < 2293760 {
5164 return false;
5165 }
5166 }
5167 if browsers.android.is_some()
5168 || browsers.chrome.is_some()
5169 || browsers.edge.is_some()
5170 || browsers.ie.is_some()
5171 || browsers.ios_saf.is_some()
5172 || browsers.opera.is_some()
5173 || browsers.safari.is_some()
5174 || browsers.samsung.is_some()
5175 {
5176 return false;
5177 }
5178 }
5179 Feature::AnchorSizeSize => {
5180 if let Some(version) = browsers.chrome {
5181 if version < 8192000 {
5182 return false;
5183 }
5184 }
5185 if let Some(version) = browsers.edge {
5186 if version < 8192000 {
5187 return false;
5188 }
5189 }
5190 if let Some(version) = browsers.opera {
5191 if version < 5439488 {
5192 return false;
5193 }
5194 }
5195 if let Some(version) = browsers.samsung {
5196 if version < 1769472 {
5197 return false;
5198 }
5199 }
5200 if let Some(version) = browsers.android {
5201 if version < 8192000 {
5202 return false;
5203 }
5204 }
5205 if browsers.firefox.is_some()
5206 || browsers.ie.is_some()
5207 || browsers.ios_saf.is_some()
5208 || browsers.safari.is_some()
5209 {
5210 return false;
5211 }
5212 }
5213 Feature::FitContentSize => {
5214 if let Some(version) = browsers.chrome {
5215 if version < 1638400 {
5216 return false;
5217 }
5218 }
5219 if let Some(version) = browsers.edge {
5220 if version < 5177344 {
5221 return false;
5222 }
5223 }
5224 if let Some(version) = browsers.firefox {
5225 if version < 262144 {
5226 return false;
5227 }
5228 }
5229 if let Some(version) = browsers.opera {
5230 if version < 917504 {
5231 return false;
5232 }
5233 }
5234 if let Some(version) = browsers.safari {
5235 if version < 458752 {
5236 return false;
5237 }
5238 }
5239 if let Some(version) = browsers.ios_saf {
5240 if version < 458752 {
5241 return false;
5242 }
5243 }
5244 if let Some(version) = browsers.samsung {
5245 if version < 66816 {
5246 return false;
5247 }
5248 }
5249 if let Some(version) = browsers.android {
5250 if version < 263168 {
5251 return false;
5252 }
5253 }
5254 if browsers.ie.is_some() {
5255 return false;
5256 }
5257 }
5258 Feature::IsAnimatableSize => {
5259 if let Some(version) = browsers.chrome {
5260 if version < 1703936 {
5261 return false;
5262 }
5263 }
5264 if let Some(version) = browsers.edge {
5265 if version < 786432 {
5266 return false;
5267 }
5268 }
5269 if let Some(version) = browsers.firefox {
5270 if version < 1048576 {
5271 return false;
5272 }
5273 }
5274 if let Some(version) = browsers.ie {
5275 if version < 720896 {
5276 return false;
5277 }
5278 }
5279 if let Some(version) = browsers.opera {
5280 if version < 917504 {
5281 return false;
5282 }
5283 }
5284 if let Some(version) = browsers.safari {
5285 if version < 458752 {
5286 return false;
5287 }
5288 }
5289 if let Some(version) = browsers.ios_saf {
5290 if version < 458752 {
5291 return false;
5292 }
5293 }
5294 if let Some(version) = browsers.samsung {
5295 if version < 66816 {
5296 return false;
5297 }
5298 }
5299 if let Some(version) = browsers.android {
5300 if version < 263168 {
5301 return false;
5302 }
5303 }
5304 }
5305 Feature::MaxContentSize => {
5306 if let Some(version) = browsers.chrome {
5307 if version < 1638400 {
5308 return false;
5309 }
5310 }
5311 if let Some(version) = browsers.edge {
5312 if version < 5177344 {
5313 return false;
5314 }
5315 }
5316 if let Some(version) = browsers.firefox {
5317 if version < 262144 {
5318 return false;
5319 }
5320 }
5321 if let Some(version) = browsers.opera {
5322 if version < 2818048 {
5323 return false;
5324 }
5325 }
5326 if let Some(version) = browsers.safari {
5327 if version < 720896 {
5328 return false;
5329 }
5330 }
5331 if let Some(version) = browsers.ios_saf {
5332 if version < 720896 {
5333 return false;
5334 }
5335 }
5336 if let Some(version) = browsers.samsung {
5337 if version < 66816 {
5338 return false;
5339 }
5340 }
5341 if let Some(version) = browsers.android {
5342 if version < 263168 {
5343 return false;
5344 }
5345 }
5346 if browsers.ie.is_some() {
5347 return false;
5348 }
5349 }
5350 Feature::MinContentSize => {
5351 if let Some(version) = browsers.chrome {
5352 if version < 3014656 {
5353 return false;
5354 }
5355 }
5356 if let Some(version) = browsers.edge {
5357 if version < 5177344 {
5358 return false;
5359 }
5360 }
5361 if let Some(version) = browsers.firefox {
5362 if version < 262144 {
5363 return false;
5364 }
5365 }
5366 if let Some(version) = browsers.opera {
5367 if version < 2162688 {
5368 return false;
5369 }
5370 }
5371 if let Some(version) = browsers.safari {
5372 if version < 720896 {
5373 return false;
5374 }
5375 }
5376 if let Some(version) = browsers.ios_saf {
5377 if version < 720896 {
5378 return false;
5379 }
5380 }
5381 if let Some(version) = browsers.samsung {
5382 if version < 327680 {
5383 return false;
5384 }
5385 }
5386 if let Some(version) = browsers.android {
5387 if version < 3014656 {
5388 return false;
5389 }
5390 }
5391 if browsers.ie.is_some() {
5392 return false;
5393 }
5394 }
5395 Feature::WebkitFillAvailableSize => {
5396 if let Some(version) = browsers.chrome {
5397 if version < 1638400 {
5398 return false;
5399 }
5400 }
5401 if let Some(version) = browsers.edge {
5402 if version < 5177344 {
5403 return false;
5404 }
5405 }
5406 if let Some(version) = browsers.opera {
5407 if version < 917504 {
5408 return false;
5409 }
5410 }
5411 if let Some(version) = browsers.safari {
5412 if version < 458752 {
5413 return false;
5414 }
5415 }
5416 if let Some(version) = browsers.ios_saf {
5417 if version < 458752 {
5418 return false;
5419 }
5420 }
5421 if let Some(version) = browsers.samsung {
5422 if version < 327680 {
5423 return false;
5424 }
5425 }
5426 if let Some(version) = browsers.android {
5427 if version < 263168 {
5428 return false;
5429 }
5430 }
5431 if browsers.firefox.is_some() || browsers.ie.is_some() {
5432 return false;
5433 }
5434 }
5435 Feature::MozAvailableSize => {
5436 if let Some(version) = browsers.firefox {
5437 if version < 262144 {
5438 return false;
5439 }
5440 }
5441 if browsers.android.is_some()
5442 || browsers.chrome.is_some()
5443 || browsers.edge.is_some()
5444 || browsers.ie.is_some()
5445 || browsers.ios_saf.is_some()
5446 || browsers.opera.is_some()
5447 || browsers.safari.is_some()
5448 || browsers.samsung.is_some()
5449 {
5450 return false;
5451 }
5452 }
5453 Feature::P3Colors | Feature::LangSelectorList => {
5454 if let Some(version) = browsers.safari {
5455 if version < 655616 {
5456 return false;
5457 }
5458 }
5459 if let Some(version) = browsers.ios_saf {
5460 if version < 656128 {
5461 return false;
5462 }
5463 }
5464 if browsers.android.is_some()
5465 || browsers.chrome.is_some()
5466 || browsers.edge.is_some()
5467 || browsers.firefox.is_some()
5468 || browsers.ie.is_some()
5469 || browsers.opera.is_some()
5470 || browsers.samsung.is_some()
5471 {
5472 return false;
5473 }
5474 }
5475 }
5476 true
5477 }
5478
5479 pub fn is_partially_compatible(&self, targets: Browsers) -> bool {
5480 let mut browsers = Browsers::default();
5481 if targets.android.is_some() {
5482 browsers.android = targets.android;
5483 if self.is_compatible(browsers) {
5484 return true;
5485 }
5486 browsers.android = None;
5487 }
5488 if targets.chrome.is_some() {
5489 browsers.chrome = targets.chrome;
5490 if self.is_compatible(browsers) {
5491 return true;
5492 }
5493 browsers.chrome = None;
5494 }
5495 if targets.edge.is_some() {
5496 browsers.edge = targets.edge;
5497 if self.is_compatible(browsers) {
5498 return true;
5499 }
5500 browsers.edge = None;
5501 }
5502 if targets.firefox.is_some() {
5503 browsers.firefox = targets.firefox;
5504 if self.is_compatible(browsers) {
5505 return true;
5506 }
5507 browsers.firefox = None;
5508 }
5509 if targets.ie.is_some() {
5510 browsers.ie = targets.ie;
5511 if self.is_compatible(browsers) {
5512 return true;
5513 }
5514 browsers.ie = None;
5515 }
5516 if targets.ios_saf.is_some() {
5517 browsers.ios_saf = targets.ios_saf;
5518 if self.is_compatible(browsers) {
5519 return true;
5520 }
5521 browsers.ios_saf = None;
5522 }
5523 if targets.opera.is_some() {
5524 browsers.opera = targets.opera;
5525 if self.is_compatible(browsers) {
5526 return true;
5527 }
5528 browsers.opera = None;
5529 }
5530 if targets.safari.is_some() {
5531 browsers.safari = targets.safari;
5532 if self.is_compatible(browsers) {
5533 return true;
5534 }
5535 browsers.safari = None;
5536 }
5537 if targets.samsung.is_some() {
5538 browsers.samsung = targets.samsung;
5539 if self.is_compatible(browsers) {
5540 return true;
5541 }
5542 browsers.samsung = None;
5543 }
5544
5545 false
5546 }
5547}