lightningcss/
compat.rs

1// This file is autogenerated by build-prefixes.js. DO NOT EDIT!
2
3use 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}