/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "SdkConstants.h"

#include <algorithm>
#include <string>
#include <unordered_map>
#include <vector>

namespace aapt {

static const std::vector<std::pair<uint16_t, size_t>> sAttrIdMap = {
    { 0x021c, 1 },
    { 0x021d, 2 },
    { 0x0269, SDK_CUPCAKE },
    { 0x028d, SDK_DONUT },
    { 0x02ad, SDK_ECLAIR },
    { 0x02b3, SDK_ECLAIR_0_1 },
    { 0x02b5, SDK_ECLAIR_MR1 },
    { 0x02bd, SDK_FROYO },
    { 0x02cb, SDK_GINGERBREAD },
    { 0x0361, SDK_HONEYCOMB },
    { 0x0363, SDK_HONEYCOMB_MR1 },
    { 0x0366, SDK_HONEYCOMB_MR2 },
    { 0x03a6, SDK_ICE_CREAM_SANDWICH },
    { 0x03ae, SDK_JELLY_BEAN },
    { 0x03cc, SDK_JELLY_BEAN_MR1 },
    { 0x03da, SDK_JELLY_BEAN_MR2 },
    { 0x03f1, SDK_KITKAT },
    { 0x03f6, SDK_KITKAT_WATCH },
    { 0x04ce, SDK_LOLLIPOP },
};

static bool lessEntryId(const std::pair<uint16_t, size_t>& p, uint16_t entryId) {
    return p.first < entryId;
}

size_t findAttributeSdkLevel(ResourceId id) {
    if (id.packageId() != 0x01 && id.typeId() != 0x01) {
        return 0;
    }
    auto iter = std::lower_bound(sAttrIdMap.begin(), sAttrIdMap.end(), id.entryId(), lessEntryId);
    if (iter == sAttrIdMap.end()) {
        return SDK_LOLLIPOP_MR1;
    }
    return iter->second;
}

static const std::unordered_map<std::u16string, size_t> sAttrMap = {
    { u"marqueeRepeatLimit", 2 },
    { u"windowNoDisplay", 3 },
    { u"backgroundDimEnabled", 3 },
    { u"inputType", 3 },
    { u"isDefault", 3 },
    { u"windowDisablePreview", 3 },
    { u"privateImeOptions", 3 },
    { u"editorExtras", 3 },
    { u"settingsActivity", 3 },
    { u"fastScrollEnabled", 3 },
    { u"reqTouchScreen", 3 },
    { u"reqKeyboardType", 3 },
    { u"reqHardKeyboard", 3 },
    { u"reqNavigation", 3 },
    { u"windowSoftInputMode", 3 },
    { u"imeFullscreenBackground", 3 },
    { u"noHistory", 3 },
    { u"headerDividersEnabled", 3 },
    { u"footerDividersEnabled", 3 },
    { u"candidatesTextStyleSpans", 3 },
    { u"smoothScrollbar", 3 },
    { u"reqFiveWayNav", 3 },
    { u"keyBackground", 3 },
    { u"keyTextSize", 3 },
    { u"labelTextSize", 3 },
    { u"keyTextColor", 3 },
    { u"keyPreviewLayout", 3 },
    { u"keyPreviewOffset", 3 },
    { u"keyPreviewHeight", 3 },
    { u"verticalCorrection", 3 },
    { u"popupLayout", 3 },
    { u"state_long_pressable", 3 },
    { u"keyWidth", 3 },
    { u"keyHeight", 3 },
    { u"horizontalGap", 3 },
    { u"verticalGap", 3 },
    { u"rowEdgeFlags", 3 },
    { u"codes", 3 },
    { u"popupKeyboard", 3 },
    { u"popupCharacters", 3 },
    { u"keyEdgeFlags", 3 },
    { u"isModifier", 3 },
    { u"isSticky", 3 },
    { u"isRepeatable", 3 },
    { u"iconPreview", 3 },
    { u"keyOutputText", 3 },
    { u"keyLabel", 3 },
    { u"keyIcon", 3 },
    { u"keyboardMode", 3 },
    { u"isScrollContainer", 3 },
    { u"fillEnabled", 3 },
    { u"updatePeriodMillis", 3 },
    { u"initialLayout", 3 },
    { u"voiceSearchMode", 3 },
    { u"voiceLanguageModel", 3 },
    { u"voicePromptText", 3 },
    { u"voiceLanguage", 3 },
    { u"voiceMaxResults", 3 },
    { u"bottomOffset", 3 },
    { u"topOffset", 3 },
    { u"allowSingleTap", 3 },
    { u"handle", 3 },
    { u"content", 3 },
    { u"animateOnClick", 3 },
    { u"configure", 3 },
    { u"hapticFeedbackEnabled", 3 },
    { u"innerRadius", 3 },
    { u"thickness", 3 },
    { u"sharedUserLabel", 3 },
    { u"dropDownWidth", 3 },
    { u"dropDownAnchor", 3 },
    { u"imeOptions", 3 },
    { u"imeActionLabel", 3 },
    { u"imeActionId", 3 },
    { u"imeExtractEnterAnimation", 3 },
    { u"imeExtractExitAnimation", 3 },
    { u"tension", 4 },
    { u"extraTension", 4 },
    { u"anyDensity", 4 },
    { u"searchSuggestThreshold", 4 },
    { u"includeInGlobalSearch", 4 },
    { u"onClick", 4 },
    { u"targetSdkVersion", 4 },
    { u"maxSdkVersion", 4 },
    { u"testOnly", 4 },
    { u"contentDescription", 4 },
    { u"gestureStrokeWidth", 4 },
    { u"gestureColor", 4 },
    { u"uncertainGestureColor", 4 },
    { u"fadeOffset", 4 },
    { u"fadeDuration", 4 },
    { u"gestureStrokeType", 4 },
    { u"gestureStrokeLengthThreshold", 4 },
    { u"gestureStrokeSquarenessThreshold", 4 },
    { u"gestureStrokeAngleThreshold", 4 },
    { u"eventsInterceptionEnabled", 4 },
    { u"fadeEnabled", 4 },
    { u"backupAgent", 4 },
    { u"allowBackup", 4 },
    { u"glEsVersion", 4 },
    { u"queryAfterZeroResults", 4 },
    { u"dropDownHeight", 4 },
    { u"smallScreens", 4 },
    { u"normalScreens", 4 },
    { u"largeScreens", 4 },
    { u"progressBarStyleInverse", 4 },
    { u"progressBarStyleSmallInverse", 4 },
    { u"progressBarStyleLargeInverse", 4 },
    { u"searchSettingsDescription", 4 },
    { u"textColorPrimaryInverseDisableOnly", 4 },
    { u"autoUrlDetect", 4 },
    { u"resizeable", 4 },
    { u"required", 5 },
    { u"accountType", 5 },
    { u"contentAuthority", 5 },
    { u"userVisible", 5 },
    { u"windowShowWallpaper", 5 },
    { u"wallpaperOpenEnterAnimation", 5 },
    { u"wallpaperOpenExitAnimation", 5 },
    { u"wallpaperCloseEnterAnimation", 5 },
    { u"wallpaperCloseExitAnimation", 5 },
    { u"wallpaperIntraOpenEnterAnimation", 5 },
    { u"wallpaperIntraOpenExitAnimation", 5 },
    { u"wallpaperIntraCloseEnterAnimation", 5 },
    { u"wallpaperIntraCloseExitAnimation", 5 },
    { u"supportsUploading", 5 },
    { u"killAfterRestore", 5 },
    { u"restoreNeedsApplication", 5 },
    { u"smallIcon", 5 },
    { u"accountPreferences", 5 },
    { u"textAppearanceSearchResultSubtitle", 5 },
    { u"textAppearanceSearchResultTitle", 5 },
    { u"summaryColumn", 5 },
    { u"detailColumn", 5 },
    { u"detailSocialSummary", 5 },
    { u"thumbnail", 5 },
    { u"detachWallpaper", 5 },
    { u"finishOnCloseSystemDialogs", 5 },
    { u"scrollbarFadeDuration", 5 },
    { u"scrollbarDefaultDelayBeforeFade", 5 },
    { u"fadeScrollbars", 5 },
    { u"colorBackgroundCacheHint", 5 },
    { u"dropDownHorizontalOffset", 5 },
    { u"dropDownVerticalOffset", 5 },
    { u"quickContactBadgeStyleWindowSmall", 6 },
    { u"quickContactBadgeStyleWindowMedium", 6 },
    { u"quickContactBadgeStyleWindowLarge", 6 },
    { u"quickContactBadgeStyleSmallWindowSmall", 6 },
    { u"quickContactBadgeStyleSmallWindowMedium", 6 },
    { u"quickContactBadgeStyleSmallWindowLarge", 6 },
    { u"author", 7 },
    { u"autoStart", 7 },
    { u"expandableListViewWhiteStyle", 8 },
    { u"installLocation", 8 },
    { u"vmSafeMode", 8 },
    { u"webTextViewStyle", 8 },
    { u"restoreAnyVersion", 8 },
    { u"tabStripLeft", 8 },
    { u"tabStripRight", 8 },
    { u"tabStripEnabled", 8 },
    { u"logo", 9 },
    { u"xlargeScreens", 9 },
    { u"immersive", 9 },
    { u"overScrollMode", 9 },
    { u"overScrollHeader", 9 },
    { u"overScrollFooter", 9 },
    { u"filterTouchesWhenObscured", 9 },
    { u"textSelectHandleLeft", 9 },
    { u"textSelectHandleRight", 9 },
    { u"textSelectHandle", 9 },
    { u"textSelectHandleWindowStyle", 9 },
    { u"popupAnimationStyle", 9 },
    { u"screenSize", 9 },
    { u"screenDensity", 9 },
    { u"allContactsName", 11 },
    { u"windowActionBar", 11 },
    { u"actionBarStyle", 11 },
    { u"navigationMode", 11 },
    { u"displayOptions", 11 },
    { u"subtitle", 11 },
    { u"customNavigationLayout", 11 },
    { u"hardwareAccelerated", 11 },
    { u"measureWithLargestChild", 11 },
    { u"animateFirstView", 11 },
    { u"dropDownSpinnerStyle", 11 },
    { u"actionDropDownStyle", 11 },
    { u"actionButtonStyle", 11 },
    { u"showAsAction", 11 },
    { u"previewImage", 11 },
    { u"actionModeBackground", 11 },
    { u"actionModeCloseDrawable", 11 },
    { u"windowActionModeOverlay", 11 },
    { u"valueFrom", 11 },
    { u"valueTo", 11 },
    { u"valueType", 11 },
    { u"propertyName", 11 },
    { u"ordering", 11 },
    { u"fragment", 11 },
    { u"windowActionBarOverlay", 11 },
    { u"fragmentOpenEnterAnimation", 11 },
    { u"fragmentOpenExitAnimation", 11 },
    { u"fragmentCloseEnterAnimation", 11 },
    { u"fragmentCloseExitAnimation", 11 },
    { u"fragmentFadeEnterAnimation", 11 },
    { u"fragmentFadeExitAnimation", 11 },
    { u"actionBarSize", 11 },
    { u"imeSubtypeLocale", 11 },
    { u"imeSubtypeMode", 11 },
    { u"imeSubtypeExtraValue", 11 },
    { u"splitMotionEvents", 11 },
    { u"listChoiceBackgroundIndicator", 11 },
    { u"spinnerMode", 11 },
    { u"animateLayoutChanges", 11 },
    { u"actionBarTabStyle", 11 },
    { u"actionBarTabBarStyle", 11 },
    { u"actionBarTabTextStyle", 11 },
    { u"actionOverflowButtonStyle", 11 },
    { u"actionModeCloseButtonStyle", 11 },
    { u"titleTextStyle", 11 },
    { u"subtitleTextStyle", 11 },
    { u"iconifiedByDefault", 11 },
    { u"actionLayout", 11 },
    { u"actionViewClass", 11 },
    { u"activatedBackgroundIndicator", 11 },
    { u"state_activated", 11 },
    { u"listPopupWindowStyle", 11 },
    { u"popupMenuStyle", 11 },
    { u"textAppearanceLargePopupMenu", 11 },
    { u"textAppearanceSmallPopupMenu", 11 },
    { u"breadCrumbTitle", 11 },
    { u"breadCrumbShortTitle", 11 },
    { u"listDividerAlertDialog", 11 },
    { u"textColorAlertDialogListItem", 11 },
    { u"loopViews", 11 },
    { u"dialogTheme", 11 },
    { u"alertDialogTheme", 11 },
    { u"dividerVertical", 11 },
    { u"homeAsUpIndicator", 11 },
    { u"enterFadeDuration", 11 },
    { u"exitFadeDuration", 11 },
    { u"selectableItemBackground", 11 },
    { u"autoAdvanceViewId", 11 },
    { u"useIntrinsicSizeAsMinimum", 11 },
    { u"actionModeCutDrawable", 11 },
    { u"actionModeCopyDrawable", 11 },
    { u"actionModePasteDrawable", 11 },
    { u"textEditPasteWindowLayout", 11 },
    { u"textEditNoPasteWindowLayout", 11 },
    { u"textIsSelectable", 11 },
    { u"windowEnableSplitTouch", 11 },
    { u"indeterminateProgressStyle", 11 },
    { u"progressBarPadding", 11 },
    { u"animationResolution", 11 },
    { u"state_accelerated", 11 },
    { u"baseline", 11 },
    { u"homeLayout", 11 },
    { u"opacity", 11 },
    { u"alpha", 11 },
    { u"transformPivotX", 11 },
    { u"transformPivotY", 11 },
    { u"translationX", 11 },
    { u"translationY", 11 },
    { u"scaleX", 11 },
    { u"scaleY", 11 },
    { u"rotation", 11 },
    { u"rotationX", 11 },
    { u"rotationY", 11 },
    { u"showDividers", 11 },
    { u"dividerPadding", 11 },
    { u"borderlessButtonStyle", 11 },
    { u"dividerHorizontal", 11 },
    { u"itemPadding", 11 },
    { u"buttonBarStyle", 11 },
    { u"buttonBarButtonStyle", 11 },
    { u"segmentedButtonStyle", 11 },
    { u"staticWallpaperPreview", 11 },
    { u"allowParallelSyncs", 11 },
    { u"isAlwaysSyncable", 11 },
    { u"verticalScrollbarPosition", 11 },
    { u"fastScrollAlwaysVisible", 11 },
    { u"fastScrollThumbDrawable", 11 },
    { u"fastScrollPreviewBackgroundLeft", 11 },
    { u"fastScrollPreviewBackgroundRight", 11 },
    { u"fastScrollTrackDrawable", 11 },
    { u"fastScrollOverlayPosition", 11 },
    { u"customTokens", 11 },
    { u"nextFocusForward", 11 },
    { u"firstDayOfWeek", 11 },
    { u"showWeekNumber", 11 },
    { u"minDate", 11 },
    { u"maxDate", 11 },
    { u"shownWeekCount", 11 },
    { u"selectedWeekBackgroundColor", 11 },
    { u"focusedMonthDateColor", 11 },
    { u"unfocusedMonthDateColor", 11 },
    { u"weekNumberColor", 11 },
    { u"weekSeparatorLineColor", 11 },
    { u"selectedDateVerticalBar", 11 },
    { u"weekDayTextAppearance", 11 },
    { u"dateTextAppearance", 11 },
    { u"solidColor", 11 },
    { u"spinnersShown", 11 },
    { u"calendarViewShown", 11 },
    { u"state_multiline", 11 },
    { u"detailsElementBackground", 11 },
    { u"textColorHighlightInverse", 11 },
    { u"textColorLinkInverse", 11 },
    { u"editTextColor", 11 },
    { u"editTextBackground", 11 },
    { u"horizontalScrollViewStyle", 11 },
    { u"layerType", 11 },
    { u"alertDialogIcon", 11 },
    { u"windowMinWidthMajor", 11 },
    { u"windowMinWidthMinor", 11 },
    { u"queryHint", 11 },
    { u"fastScrollTextColor", 11 },
    { u"largeHeap", 11 },
    { u"windowCloseOnTouchOutside", 11 },
    { u"datePickerStyle", 11 },
    { u"calendarViewStyle", 11 },
    { u"textEditSidePasteWindowLayout", 11 },
    { u"textEditSideNoPasteWindowLayout", 11 },
    { u"actionMenuTextAppearance", 11 },
    { u"actionMenuTextColor", 11 },
    { u"textCursorDrawable", 12 },
    { u"resizeMode", 12 },
    { u"requiresSmallestWidthDp", 12 },
    { u"compatibleWidthLimitDp", 12 },
    { u"largestWidthLimitDp", 12 },
    { u"state_hovered", 13 },
    { u"state_drag_can_accept", 13 },
    { u"state_drag_hovered", 13 },
    { u"stopWithTask", 13 },
    { u"switchTextOn", 13 },
    { u"switchTextOff", 13 },
    { u"switchPreferenceStyle", 13 },
    { u"switchTextAppearance", 13 },
    { u"track", 13 },
    { u"switchMinWidth", 13 },
    { u"switchPadding", 13 },
    { u"thumbTextPadding", 13 },
    { u"textSuggestionsWindowStyle", 13 },
    { u"textEditSuggestionItemLayout", 13 },
    { u"rowCount", 13 },
    { u"rowOrderPreserved", 13 },
    { u"columnCount", 13 },
    { u"columnOrderPreserved", 13 },
    { u"useDefaultMargins", 13 },
    { u"alignmentMode", 13 },
    { u"layout_row", 13 },
    { u"layout_rowSpan", 13 },
    { u"layout_columnSpan", 13 },
    { u"actionModeSelectAllDrawable", 13 },
    { u"isAuxiliary", 13 },
    { u"accessibilityEventTypes", 13 },
    { u"packageNames", 13 },
    { u"accessibilityFeedbackType", 13 },
    { u"notificationTimeout", 13 },
    { u"accessibilityFlags", 13 },
    { u"canRetrieveWindowContent", 13 },
    { u"listPreferredItemHeightLarge", 13 },
    { u"listPreferredItemHeightSmall", 13 },
    { u"actionBarSplitStyle", 13 },
    { u"actionProviderClass", 13 },
    { u"backgroundStacked", 13 },
    { u"backgroundSplit", 13 },
    { u"textAllCaps", 13 },
    { u"colorPressedHighlight", 13 },
    { u"colorLongPressedHighlight", 13 },
    { u"colorFocusedHighlight", 13 },
    { u"colorActivatedHighlight", 13 },
    { u"colorMultiSelectHighlight", 13 },
    { u"drawableStart", 13 },
    { u"drawableEnd", 13 },
    { u"actionModeStyle", 13 },
    { u"minResizeWidth", 13 },
    { u"minResizeHeight", 13 },
    { u"actionBarWidgetTheme", 13 },
    { u"uiOptions", 13 },
    { u"subtypeLocale", 13 },
    { u"subtypeExtraValue", 13 },
    { u"actionBarDivider", 13 },
    { u"actionBarItemBackground", 13 },
    { u"actionModeSplitBackground", 13 },
    { u"textAppearanceListItem", 13 },
    { u"textAppearanceListItemSmall", 13 },
    { u"targetDescriptions", 13 },
    { u"directionDescriptions", 13 },
    { u"overridesImplicitlyEnabledSubtype", 13 },
    { u"listPreferredItemPaddingLeft", 13 },
    { u"listPreferredItemPaddingRight", 13 },
    { u"requiresFadingEdge", 13 },
    { u"publicKey", 13 },
    { u"parentActivityName", 16 },
    { u"isolatedProcess", 16 },
    { u"importantForAccessibility", 16 },
    { u"keyboardLayout", 16 },
    { u"fontFamily", 16 },
    { u"mediaRouteButtonStyle", 16 },
    { u"mediaRouteTypes", 16 },
    { u"supportsRtl", 17 },
    { u"textDirection", 17 },
    { u"textAlignment", 17 },
    { u"layoutDirection", 17 },
    { u"paddingStart", 17 },
    { u"paddingEnd", 17 },
    { u"layout_marginStart", 17 },
    { u"layout_marginEnd", 17 },
    { u"layout_toStartOf", 17 },
    { u"layout_toEndOf", 17 },
    { u"layout_alignStart", 17 },
    { u"layout_alignEnd", 17 },
    { u"layout_alignParentStart", 17 },
    { u"layout_alignParentEnd", 17 },
    { u"listPreferredItemPaddingStart", 17 },
    { u"listPreferredItemPaddingEnd", 17 },
    { u"singleUser", 17 },
    { u"presentationTheme", 17 },
    { u"subtypeId", 17 },
    { u"initialKeyguardLayout", 17 },
    { u"widgetCategory", 17 },
    { u"permissionGroupFlags", 17 },
    { u"labelFor", 17 },
    { u"permissionFlags", 17 },
    { u"checkedTextViewStyle", 17 },
    { u"showOnLockScreen", 17 },
    { u"format12Hour", 17 },
    { u"format24Hour", 17 },
    { u"timeZone", 17 },
    { u"mipMap", 18 },
    { u"mirrorForRtl", 18 },
    { u"windowOverscan", 18 },
    { u"requiredForAllUsers", 18 },
    { u"indicatorStart", 18 },
    { u"indicatorEnd", 18 },
    { u"childIndicatorStart", 18 },
    { u"childIndicatorEnd", 18 },
    { u"restrictedAccountType", 18 },
    { u"requiredAccountType", 18 },
    { u"canRequestTouchExplorationMode", 18 },
    { u"canRequestEnhancedWebAccessibility", 18 },
    { u"canRequestFilterKeyEvents", 18 },
    { u"layoutMode", 18 },
    { u"keySet", 19 },
    { u"targetId", 19 },
    { u"fromScene", 19 },
    { u"toScene", 19 },
    { u"transition", 19 },
    { u"transitionOrdering", 19 },
    { u"fadingMode", 19 },
    { u"startDelay", 19 },
    { u"ssp", 19 },
    { u"sspPrefix", 19 },
    { u"sspPattern", 19 },
    { u"addPrintersActivity", 19 },
    { u"vendor", 19 },
    { u"category", 19 },
    { u"isAsciiCapable", 19 },
    { u"autoMirrored", 19 },
    { u"supportsSwitchingToNextInputMethod", 19 },
    { u"requireDeviceUnlock", 19 },
    { u"apduServiceBanner", 19 },
    { u"accessibilityLiveRegion", 19 },
    { u"windowTranslucentStatus", 19 },
    { u"windowTranslucentNavigation", 19 },
    { u"advancedPrintOptionsActivity", 19 },
    { u"banner", 20 },
    { u"windowSwipeToDismiss", 20 },
    { u"isGame", 20 },
    { u"allowEmbedded", 20 },
    { u"setupActivity", 20 },
    { u"fastScrollStyle", 21 },
    { u"windowContentTransitions", 21 },
    { u"windowContentTransitionManager", 21 },
    { u"translationZ", 21 },
    { u"tintMode", 21 },
    { u"controlX1", 21 },
    { u"controlY1", 21 },
    { u"controlX2", 21 },
    { u"controlY2", 21 },
    { u"transitionName", 21 },
    { u"transitionGroup", 21 },
    { u"viewportWidth", 21 },
    { u"viewportHeight", 21 },
    { u"fillColor", 21 },
    { u"pathData", 21 },
    { u"strokeColor", 21 },
    { u"strokeWidth", 21 },
    { u"trimPathStart", 21 },
    { u"trimPathEnd", 21 },
    { u"trimPathOffset", 21 },
    { u"strokeLineCap", 21 },
    { u"strokeLineJoin", 21 },
    { u"strokeMiterLimit", 21 },
    { u"colorControlNormal", 21 },
    { u"colorControlActivated", 21 },
    { u"colorButtonNormal", 21 },
    { u"colorControlHighlight", 21 },
    { u"persistableMode", 21 },
    { u"titleTextAppearance", 21 },
    { u"subtitleTextAppearance", 21 },
    { u"slideEdge", 21 },
    { u"actionBarTheme", 21 },
    { u"textAppearanceListItemSecondary", 21 },
    { u"colorPrimary", 21 },
    { u"colorPrimaryDark", 21 },
    { u"colorAccent", 21 },
    { u"nestedScrollingEnabled", 21 },
    { u"windowEnterTransition", 21 },
    { u"windowExitTransition", 21 },
    { u"windowSharedElementEnterTransition", 21 },
    { u"windowSharedElementExitTransition", 21 },
    { u"windowAllowReturnTransitionOverlap", 21 },
    { u"windowAllowEnterTransitionOverlap", 21 },
    { u"sessionService", 21 },
    { u"stackViewStyle", 21 },
    { u"switchStyle", 21 },
    { u"elevation", 21 },
    { u"excludeId", 21 },
    { u"excludeClass", 21 },
    { u"hideOnContentScroll", 21 },
    { u"actionOverflowMenuStyle", 21 },
    { u"documentLaunchMode", 21 },
    { u"maxRecents", 21 },
    { u"autoRemoveFromRecents", 21 },
    { u"stateListAnimator", 21 },
    { u"toId", 21 },
    { u"fromId", 21 },
    { u"reversible", 21 },
    { u"splitTrack", 21 },
    { u"targetName", 21 },
    { u"excludeName", 21 },
    { u"matchOrder", 21 },
    { u"windowDrawsSystemBarBackgrounds", 21 },
    { u"statusBarColor", 21 },
    { u"navigationBarColor", 21 },
    { u"contentInsetStart", 21 },
    { u"contentInsetEnd", 21 },
    { u"contentInsetLeft", 21 },
    { u"contentInsetRight", 21 },
    { u"paddingMode", 21 },
    { u"layout_rowWeight", 21 },
    { u"layout_columnWeight", 21 },
    { u"translateX", 21 },
    { u"translateY", 21 },
    { u"selectableItemBackgroundBorderless", 21 },
    { u"elegantTextHeight", 21 },
    { u"searchKeyphraseId", 21 },
    { u"searchKeyphrase", 21 },
    { u"searchKeyphraseSupportedLocales", 21 },
    { u"windowTransitionBackgroundFadeDuration", 21 },
    { u"overlapAnchor", 21 },
    { u"progressTint", 21 },
    { u"progressTintMode", 21 },
    { u"progressBackgroundTint", 21 },
    { u"progressBackgroundTintMode", 21 },
    { u"secondaryProgressTint", 21 },
    { u"secondaryProgressTintMode", 21 },
    { u"indeterminateTint", 21 },
    { u"indeterminateTintMode", 21 },
    { u"backgroundTint", 21 },
    { u"backgroundTintMode", 21 },
    { u"foregroundTint", 21 },
    { u"foregroundTintMode", 21 },
    { u"buttonTint", 21 },
    { u"buttonTintMode", 21 },
    { u"thumbTint", 21 },
    { u"thumbTintMode", 21 },
    { u"fullBackupOnly", 21 },
    { u"propertyXName", 21 },
    { u"propertyYName", 21 },
    { u"relinquishTaskIdentity", 21 },
    { u"tileModeX", 21 },
    { u"tileModeY", 21 },
    { u"actionModeShareDrawable", 21 },
    { u"actionModeFindDrawable", 21 },
    { u"actionModeWebSearchDrawable", 21 },
    { u"transitionVisibilityMode", 21 },
    { u"minimumHorizontalAngle", 21 },
    { u"minimumVerticalAngle", 21 },
    { u"maximumAngle", 21 },
    { u"searchViewStyle", 21 },
    { u"closeIcon", 21 },
    { u"goIcon", 21 },
    { u"searchIcon", 21 },
    { u"voiceIcon", 21 },
    { u"commitIcon", 21 },
    { u"suggestionRowLayout", 21 },
    { u"queryBackground", 21 },
    { u"submitBackground", 21 },
    { u"buttonBarPositiveButtonStyle", 21 },
    { u"buttonBarNeutralButtonStyle", 21 },
    { u"buttonBarNegativeButtonStyle", 21 },
    { u"popupElevation", 21 },
    { u"actionBarPopupTheme", 21 },
    { u"multiArch", 21 },
    { u"touchscreenBlocksFocus", 21 },
    { u"windowElevation", 21 },
    { u"launchTaskBehindTargetAnimation", 21 },
    { u"launchTaskBehindSourceAnimation", 21 },
    { u"restrictionType", 21 },
    { u"dayOfWeekBackground", 21 },
    { u"dayOfWeekTextAppearance", 21 },
    { u"headerMonthTextAppearance", 21 },
    { u"headerDayOfMonthTextAppearance", 21 },
    { u"headerYearTextAppearance", 21 },
    { u"yearListItemTextAppearance", 21 },
    { u"yearListSelectorColor", 21 },
    { u"calendarTextColor", 21 },
    { u"recognitionService", 21 },
    { u"timePickerStyle", 21 },
    { u"timePickerDialogTheme", 21 },
    { u"headerTimeTextAppearance", 21 },
    { u"headerAmPmTextAppearance", 21 },
    { u"numbersTextColor", 21 },
    { u"numbersBackgroundColor", 21 },
    { u"numbersSelectorColor", 21 },
    { u"amPmTextColor", 21 },
    { u"amPmBackgroundColor", 21 },
    { u"searchKeyphraseRecognitionFlags", 21 },
    { u"checkMarkTint", 21 },
    { u"checkMarkTintMode", 21 },
    { u"popupTheme", 21 },
    { u"toolbarStyle", 21 },
    { u"windowClipToOutline", 21 },
    { u"datePickerDialogTheme", 21 },
    { u"showText", 21 },
    { u"windowReturnTransition", 21 },
    { u"windowReenterTransition", 21 },
    { u"windowSharedElementReturnTransition", 21 },
    { u"windowSharedElementReenterTransition", 21 },
    { u"resumeWhilePausing", 21 },
    { u"datePickerMode", 21 },
    { u"timePickerMode", 21 },
    { u"inset", 21 },
    { u"letterSpacing", 21 },
    { u"fontFeatureSettings", 21 },
    { u"outlineProvider", 21 },
    { u"contentAgeHint", 21 },
    { u"country", 21 },
    { u"windowSharedElementsUseOverlay", 21 },
    { u"reparent", 21 },
    { u"reparentWithOverlay", 21 },
    { u"ambientShadowAlpha", 21 },
    { u"spotShadowAlpha", 21 },
    { u"navigationIcon", 21 },
    { u"navigationContentDescription", 21 },
    { u"fragmentExitTransition", 21 },
    { u"fragmentEnterTransition", 21 },
    { u"fragmentSharedElementEnterTransition", 21 },
    { u"fragmentReturnTransition", 21 },
    { u"fragmentSharedElementReturnTransition", 21 },
    { u"fragmentReenterTransition", 21 },
    { u"fragmentAllowEnterTransitionOverlap", 21 },
    { u"fragmentAllowReturnTransitionOverlap", 21 },
    { u"patternPathData", 21 },
    { u"strokeAlpha", 21 },
    { u"fillAlpha", 21 },
    { u"windowActivityTransitions", 21 },
    { u"colorEdgeEffect", 21 }
};

size_t findAttributeSdkLevel(const ResourceName& name) {
    if (name.package != u"android" && name.type != ResourceType::kAttr) {
        return 0;
    }

    auto iter = sAttrMap.find(name.entry);
    if (iter != sAttrMap.end()) {
        return iter->second;
    }
    return SDK_LOLLIPOP_MR1;
}

} // namespace aapt
