diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100755 index 0000000..4cdabb9 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,8 @@ +FROM golang:1.17 + +ENV DEBIAN_FRONTEND=noninteractive + +ENV PATH=$PATH:~/bin + +COPY . /dockerbuild/app +RUN /dockerbuild/app/build-dev.sh diff --git a/.devcontainer/build-common.sh b/.devcontainer/build-common.sh new file mode 100755 index 0000000..ec1c317 --- /dev/null +++ b/.devcontainer/build-common.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -euxo pipefail + +DIR="$(cd "$(dirname "$0")" && pwd)" + +source "$DIR/utils.sh" + +mkdir -p ~/bin + +# Install goreleaser +download_tgz https://github.com/goreleaser/goreleaser/releases/download/v0.174.2/goreleaser_Linux_x86_64.tar.gz \ + 38155642fb10a75205f20e390474f3bad9fbf61f2614500b02b179d05907348e ~/bin \ + goreleaser diff --git a/.devcontainer/build-dev.sh b/.devcontainer/build-dev.sh new file mode 100755 index 0000000..13eac49 --- /dev/null +++ b/.devcontainer/build-dev.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +set -euxo pipefail + +DIR="$(cd "$(dirname "$0")" && pwd)" + +"$DIR/build-common.sh" + +source "$DIR/utils.sh" + +cat >> ~/.bashrc < /dev/null; then + echo -e "\e[1m\e[31mThis container is outdated. Please rebuild.\e[0m" > /dev/stderr +fi +export BUILD_VERSION_CHECK_DONE=true +EOF + +# Make sure a few common tools are installed +apt-get update +apt-get upgrade -y +apt-get install -y --no-install-recommends curl gettext git gnupg less procps apt-utils locales bash-completion zip unzip + +# Enable bash auto completion +cat >> ~/.bashrc <> /etc/locale.gen +locale-gen en_US.UTF-8 + +# Install diff-so-fancy +DIFF_SO_FANCY_VERSION="1.2.6" +download https://raw.githubusercontent.com/so-fancy/diff-so-fancy/v${DIFF_SO_FANCY_VERSION}/third_party/build_fatpack/diff-so-fancy \ + ed9de2669c789d1aba8456d0a7cf95adb326e220c99af4336405f21add8f0852 /usr/bin/diff-so-fancy +chmod a+x /usr/bin/diff-so-fancy + +# Install protoc +PROTOC_VERSION="3.18.1" +download_zip https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip \ + 220bd1704c73dbf4d0a91399a2ecf9d19938b5cd80c8a38839a023d8b87bb772 /usr/bin/ bin/protoc +chmod a+x /usr/bin/protoc + +go install google.golang.org/protobuf/cmd/protoc-gen-go@latest diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100755 index 0000000..b91e78b --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,16 @@ +{ + "name": "Dev", + "dockerFile": "Dockerfile", + "runArgs": [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined", + // Additionally we copy the .ssh folder into the container (see postCreateCommand below) to + // reuse the host's ssh config and known_hosts. + "-v", "${env:HOME}${env:USERPROFILE}/.ssh:/root/.ssh-localhost:ro", + ], + "postCreateCommand": "mkdir -p ~/.ssh && cp -r ~/.ssh-localhost/* ~/.ssh && chmod 700 ~/.ssh && chmod 600 ~/.ssh/*", + "extensions": [ + "golang.go", + ], +} \ No newline at end of file diff --git a/.devcontainer/utils.sh b/.devcontainer/utils.sh new file mode 100755 index 0000000..1ec0ca8 --- /dev/null +++ b/.devcontainer/utils.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +set -euxo pipefail + +download() { + local url="$1" + local checksum="$2" + local dst="$3" + curl -qsSL -o "$dst" "$url" + echo "$checksum $dst" > "$dst.sum" + sha256sum -c "$dst.sum" + rm -rf "$dst.sum" +} + +download_tgz() { + local url="$1" + local checksum="$2" + local dst="$3" + local tmp="$(mktemp)" + download "$url" "$checksum" "$tmp" + shift 3 + tar -C "$dst" -xzf "$tmp" "$@" + rm -rf "$tmp" +} + +download_zip() { + local url="$1" + local checksum="$2" + local dst="$3" + local tmp="$(mktemp)" + download "$url" "$checksum" "$tmp" + shift 3 + unzip -j "$tmp" "$@" -d "$dst" + rm -rf "$tmp" +} diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..019b3f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +.DS_Store +._* +.Spotlight-V100 +.Trashes +desktop.ini +ehthumbs.db +Thumbs.db +AlbumArt* + +.idea/* +!/.idea/codeStyleSettings.xml +!/.idea/inspectionProfiles +!/.idea/runConfigurations +.idea_* +.vscode +.sublime-* +.settings +atlassian-ide-plugin.xml + +~* +*~ +*.bak +*.orig +*.swp +*.tmp +*.exe + +build/ +dist/ + +/.tmp diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100755 index 0000000..7205a05 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,54 @@ +project_name: androidmanifest-changer +before: + hooks: + - go mod download + - go generate ./... +env: + - CGO_ENABLED=0 +builds: + - id: windows + goos: + - windows + goarch: + - amd64 + ldflags: + - -s -w -X main.version={{.Version}} -X main.commit={{.ShortCommit}} -X main.date={{.Date}} + - id: unix + goos: + - linux + - darwin + goarch: + - amd64 + - arm + - arm64 + goarm: + - 7 + ldflags: + - -s -w -X main.version={{.Version}} -X main.commit={{.ShortCommit}} -X main.date={{.Date}} +archives: + - id: windows + builds: + - windows + format: zip + replacements: + windows: Windows + amd64: x86_64 + - id: unix + builds: + - unix + replacements: + darwin: macOS + linux: Linux + amd64: x86_64 +snapshot: + name_template: "{{ .Tag }}-next" +release: + draft: true +changelog: + sort: asc + filters: + exclude: + - '^docs:' + - '^test:' + - Merge pull request + - Merge branch diff --git a/Configuration.pb.go b/Configuration.pb.go new file mode 100644 index 0000000..d138fd0 --- /dev/null +++ b/Configuration.pb.go @@ -0,0 +1,1315 @@ +// +// Copyright (C) 2017 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. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.18.1 +// source: Configuration.proto + +package main + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Configuration_LayoutDirection int32 + +const ( + Configuration_LAYOUT_DIRECTION_UNSET Configuration_LayoutDirection = 0 + Configuration_LAYOUT_DIRECTION_LTR Configuration_LayoutDirection = 1 + Configuration_LAYOUT_DIRECTION_RTL Configuration_LayoutDirection = 2 +) + +// Enum value maps for Configuration_LayoutDirection. +var ( + Configuration_LayoutDirection_name = map[int32]string{ + 0: "LAYOUT_DIRECTION_UNSET", + 1: "LAYOUT_DIRECTION_LTR", + 2: "LAYOUT_DIRECTION_RTL", + } + Configuration_LayoutDirection_value = map[string]int32{ + "LAYOUT_DIRECTION_UNSET": 0, + "LAYOUT_DIRECTION_LTR": 1, + "LAYOUT_DIRECTION_RTL": 2, + } +) + +func (x Configuration_LayoutDirection) Enum() *Configuration_LayoutDirection { + p := new(Configuration_LayoutDirection) + *p = x + return p +} + +func (x Configuration_LayoutDirection) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_LayoutDirection) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[0].Descriptor() +} + +func (Configuration_LayoutDirection) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[0] +} + +func (x Configuration_LayoutDirection) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_LayoutDirection.Descriptor instead. +func (Configuration_LayoutDirection) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 0} +} + +type Configuration_ScreenLayoutSize int32 + +const ( + Configuration_SCREEN_LAYOUT_SIZE_UNSET Configuration_ScreenLayoutSize = 0 + Configuration_SCREEN_LAYOUT_SIZE_SMALL Configuration_ScreenLayoutSize = 1 + Configuration_SCREEN_LAYOUT_SIZE_NORMAL Configuration_ScreenLayoutSize = 2 + Configuration_SCREEN_LAYOUT_SIZE_LARGE Configuration_ScreenLayoutSize = 3 + Configuration_SCREEN_LAYOUT_SIZE_XLARGE Configuration_ScreenLayoutSize = 4 +) + +// Enum value maps for Configuration_ScreenLayoutSize. +var ( + Configuration_ScreenLayoutSize_name = map[int32]string{ + 0: "SCREEN_LAYOUT_SIZE_UNSET", + 1: "SCREEN_LAYOUT_SIZE_SMALL", + 2: "SCREEN_LAYOUT_SIZE_NORMAL", + 3: "SCREEN_LAYOUT_SIZE_LARGE", + 4: "SCREEN_LAYOUT_SIZE_XLARGE", + } + Configuration_ScreenLayoutSize_value = map[string]int32{ + "SCREEN_LAYOUT_SIZE_UNSET": 0, + "SCREEN_LAYOUT_SIZE_SMALL": 1, + "SCREEN_LAYOUT_SIZE_NORMAL": 2, + "SCREEN_LAYOUT_SIZE_LARGE": 3, + "SCREEN_LAYOUT_SIZE_XLARGE": 4, + } +) + +func (x Configuration_ScreenLayoutSize) Enum() *Configuration_ScreenLayoutSize { + p := new(Configuration_ScreenLayoutSize) + *p = x + return p +} + +func (x Configuration_ScreenLayoutSize) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_ScreenLayoutSize) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[1].Descriptor() +} + +func (Configuration_ScreenLayoutSize) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[1] +} + +func (x Configuration_ScreenLayoutSize) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_ScreenLayoutSize.Descriptor instead. +func (Configuration_ScreenLayoutSize) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 1} +} + +type Configuration_ScreenLayoutLong int32 + +const ( + Configuration_SCREEN_LAYOUT_LONG_UNSET Configuration_ScreenLayoutLong = 0 + Configuration_SCREEN_LAYOUT_LONG_LONG Configuration_ScreenLayoutLong = 1 + Configuration_SCREEN_LAYOUT_LONG_NOTLONG Configuration_ScreenLayoutLong = 2 +) + +// Enum value maps for Configuration_ScreenLayoutLong. +var ( + Configuration_ScreenLayoutLong_name = map[int32]string{ + 0: "SCREEN_LAYOUT_LONG_UNSET", + 1: "SCREEN_LAYOUT_LONG_LONG", + 2: "SCREEN_LAYOUT_LONG_NOTLONG", + } + Configuration_ScreenLayoutLong_value = map[string]int32{ + "SCREEN_LAYOUT_LONG_UNSET": 0, + "SCREEN_LAYOUT_LONG_LONG": 1, + "SCREEN_LAYOUT_LONG_NOTLONG": 2, + } +) + +func (x Configuration_ScreenLayoutLong) Enum() *Configuration_ScreenLayoutLong { + p := new(Configuration_ScreenLayoutLong) + *p = x + return p +} + +func (x Configuration_ScreenLayoutLong) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_ScreenLayoutLong) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[2].Descriptor() +} + +func (Configuration_ScreenLayoutLong) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[2] +} + +func (x Configuration_ScreenLayoutLong) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_ScreenLayoutLong.Descriptor instead. +func (Configuration_ScreenLayoutLong) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 2} +} + +type Configuration_ScreenRound int32 + +const ( + Configuration_SCREEN_ROUND_UNSET Configuration_ScreenRound = 0 + Configuration_SCREEN_ROUND_ROUND Configuration_ScreenRound = 1 + Configuration_SCREEN_ROUND_NOTROUND Configuration_ScreenRound = 2 +) + +// Enum value maps for Configuration_ScreenRound. +var ( + Configuration_ScreenRound_name = map[int32]string{ + 0: "SCREEN_ROUND_UNSET", + 1: "SCREEN_ROUND_ROUND", + 2: "SCREEN_ROUND_NOTROUND", + } + Configuration_ScreenRound_value = map[string]int32{ + "SCREEN_ROUND_UNSET": 0, + "SCREEN_ROUND_ROUND": 1, + "SCREEN_ROUND_NOTROUND": 2, + } +) + +func (x Configuration_ScreenRound) Enum() *Configuration_ScreenRound { + p := new(Configuration_ScreenRound) + *p = x + return p +} + +func (x Configuration_ScreenRound) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_ScreenRound) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[3].Descriptor() +} + +func (Configuration_ScreenRound) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[3] +} + +func (x Configuration_ScreenRound) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_ScreenRound.Descriptor instead. +func (Configuration_ScreenRound) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 3} +} + +type Configuration_WideColorGamut int32 + +const ( + Configuration_WIDE_COLOR_GAMUT_UNSET Configuration_WideColorGamut = 0 + Configuration_WIDE_COLOR_GAMUT_WIDECG Configuration_WideColorGamut = 1 + Configuration_WIDE_COLOR_GAMUT_NOWIDECG Configuration_WideColorGamut = 2 +) + +// Enum value maps for Configuration_WideColorGamut. +var ( + Configuration_WideColorGamut_name = map[int32]string{ + 0: "WIDE_COLOR_GAMUT_UNSET", + 1: "WIDE_COLOR_GAMUT_WIDECG", + 2: "WIDE_COLOR_GAMUT_NOWIDECG", + } + Configuration_WideColorGamut_value = map[string]int32{ + "WIDE_COLOR_GAMUT_UNSET": 0, + "WIDE_COLOR_GAMUT_WIDECG": 1, + "WIDE_COLOR_GAMUT_NOWIDECG": 2, + } +) + +func (x Configuration_WideColorGamut) Enum() *Configuration_WideColorGamut { + p := new(Configuration_WideColorGamut) + *p = x + return p +} + +func (x Configuration_WideColorGamut) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_WideColorGamut) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[4].Descriptor() +} + +func (Configuration_WideColorGamut) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[4] +} + +func (x Configuration_WideColorGamut) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_WideColorGamut.Descriptor instead. +func (Configuration_WideColorGamut) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 4} +} + +type Configuration_Hdr int32 + +const ( + Configuration_HDR_UNSET Configuration_Hdr = 0 + Configuration_HDR_HIGHDR Configuration_Hdr = 1 + Configuration_HDR_LOWDR Configuration_Hdr = 2 +) + +// Enum value maps for Configuration_Hdr. +var ( + Configuration_Hdr_name = map[int32]string{ + 0: "HDR_UNSET", + 1: "HDR_HIGHDR", + 2: "HDR_LOWDR", + } + Configuration_Hdr_value = map[string]int32{ + "HDR_UNSET": 0, + "HDR_HIGHDR": 1, + "HDR_LOWDR": 2, + } +) + +func (x Configuration_Hdr) Enum() *Configuration_Hdr { + p := new(Configuration_Hdr) + *p = x + return p +} + +func (x Configuration_Hdr) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_Hdr) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[5].Descriptor() +} + +func (Configuration_Hdr) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[5] +} + +func (x Configuration_Hdr) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_Hdr.Descriptor instead. +func (Configuration_Hdr) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 5} +} + +type Configuration_Orientation int32 + +const ( + Configuration_ORIENTATION_UNSET Configuration_Orientation = 0 + Configuration_ORIENTATION_PORT Configuration_Orientation = 1 + Configuration_ORIENTATION_LAND Configuration_Orientation = 2 + Configuration_ORIENTATION_SQUARE Configuration_Orientation = 3 +) + +// Enum value maps for Configuration_Orientation. +var ( + Configuration_Orientation_name = map[int32]string{ + 0: "ORIENTATION_UNSET", + 1: "ORIENTATION_PORT", + 2: "ORIENTATION_LAND", + 3: "ORIENTATION_SQUARE", + } + Configuration_Orientation_value = map[string]int32{ + "ORIENTATION_UNSET": 0, + "ORIENTATION_PORT": 1, + "ORIENTATION_LAND": 2, + "ORIENTATION_SQUARE": 3, + } +) + +func (x Configuration_Orientation) Enum() *Configuration_Orientation { + p := new(Configuration_Orientation) + *p = x + return p +} + +func (x Configuration_Orientation) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_Orientation) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[6].Descriptor() +} + +func (Configuration_Orientation) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[6] +} + +func (x Configuration_Orientation) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_Orientation.Descriptor instead. +func (Configuration_Orientation) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 6} +} + +type Configuration_UiModeType int32 + +const ( + Configuration_UI_MODE_TYPE_UNSET Configuration_UiModeType = 0 + Configuration_UI_MODE_TYPE_NORMAL Configuration_UiModeType = 1 + Configuration_UI_MODE_TYPE_DESK Configuration_UiModeType = 2 + Configuration_UI_MODE_TYPE_CAR Configuration_UiModeType = 3 + Configuration_UI_MODE_TYPE_TELEVISION Configuration_UiModeType = 4 + Configuration_UI_MODE_TYPE_APPLIANCE Configuration_UiModeType = 5 + Configuration_UI_MODE_TYPE_WATCH Configuration_UiModeType = 6 + Configuration_UI_MODE_TYPE_VRHEADSET Configuration_UiModeType = 7 +) + +// Enum value maps for Configuration_UiModeType. +var ( + Configuration_UiModeType_name = map[int32]string{ + 0: "UI_MODE_TYPE_UNSET", + 1: "UI_MODE_TYPE_NORMAL", + 2: "UI_MODE_TYPE_DESK", + 3: "UI_MODE_TYPE_CAR", + 4: "UI_MODE_TYPE_TELEVISION", + 5: "UI_MODE_TYPE_APPLIANCE", + 6: "UI_MODE_TYPE_WATCH", + 7: "UI_MODE_TYPE_VRHEADSET", + } + Configuration_UiModeType_value = map[string]int32{ + "UI_MODE_TYPE_UNSET": 0, + "UI_MODE_TYPE_NORMAL": 1, + "UI_MODE_TYPE_DESK": 2, + "UI_MODE_TYPE_CAR": 3, + "UI_MODE_TYPE_TELEVISION": 4, + "UI_MODE_TYPE_APPLIANCE": 5, + "UI_MODE_TYPE_WATCH": 6, + "UI_MODE_TYPE_VRHEADSET": 7, + } +) + +func (x Configuration_UiModeType) Enum() *Configuration_UiModeType { + p := new(Configuration_UiModeType) + *p = x + return p +} + +func (x Configuration_UiModeType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_UiModeType) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[7].Descriptor() +} + +func (Configuration_UiModeType) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[7] +} + +func (x Configuration_UiModeType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_UiModeType.Descriptor instead. +func (Configuration_UiModeType) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 7} +} + +type Configuration_UiModeNight int32 + +const ( + Configuration_UI_MODE_NIGHT_UNSET Configuration_UiModeNight = 0 + Configuration_UI_MODE_NIGHT_NIGHT Configuration_UiModeNight = 1 + Configuration_UI_MODE_NIGHT_NOTNIGHT Configuration_UiModeNight = 2 +) + +// Enum value maps for Configuration_UiModeNight. +var ( + Configuration_UiModeNight_name = map[int32]string{ + 0: "UI_MODE_NIGHT_UNSET", + 1: "UI_MODE_NIGHT_NIGHT", + 2: "UI_MODE_NIGHT_NOTNIGHT", + } + Configuration_UiModeNight_value = map[string]int32{ + "UI_MODE_NIGHT_UNSET": 0, + "UI_MODE_NIGHT_NIGHT": 1, + "UI_MODE_NIGHT_NOTNIGHT": 2, + } +) + +func (x Configuration_UiModeNight) Enum() *Configuration_UiModeNight { + p := new(Configuration_UiModeNight) + *p = x + return p +} + +func (x Configuration_UiModeNight) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_UiModeNight) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[8].Descriptor() +} + +func (Configuration_UiModeNight) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[8] +} + +func (x Configuration_UiModeNight) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_UiModeNight.Descriptor instead. +func (Configuration_UiModeNight) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 8} +} + +type Configuration_Touchscreen int32 + +const ( + Configuration_TOUCHSCREEN_UNSET Configuration_Touchscreen = 0 + Configuration_TOUCHSCREEN_NOTOUCH Configuration_Touchscreen = 1 + Configuration_TOUCHSCREEN_STYLUS Configuration_Touchscreen = 2 + Configuration_TOUCHSCREEN_FINGER Configuration_Touchscreen = 3 +) + +// Enum value maps for Configuration_Touchscreen. +var ( + Configuration_Touchscreen_name = map[int32]string{ + 0: "TOUCHSCREEN_UNSET", + 1: "TOUCHSCREEN_NOTOUCH", + 2: "TOUCHSCREEN_STYLUS", + 3: "TOUCHSCREEN_FINGER", + } + Configuration_Touchscreen_value = map[string]int32{ + "TOUCHSCREEN_UNSET": 0, + "TOUCHSCREEN_NOTOUCH": 1, + "TOUCHSCREEN_STYLUS": 2, + "TOUCHSCREEN_FINGER": 3, + } +) + +func (x Configuration_Touchscreen) Enum() *Configuration_Touchscreen { + p := new(Configuration_Touchscreen) + *p = x + return p +} + +func (x Configuration_Touchscreen) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_Touchscreen) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[9].Descriptor() +} + +func (Configuration_Touchscreen) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[9] +} + +func (x Configuration_Touchscreen) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_Touchscreen.Descriptor instead. +func (Configuration_Touchscreen) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 9} +} + +type Configuration_KeysHidden int32 + +const ( + Configuration_KEYS_HIDDEN_UNSET Configuration_KeysHidden = 0 + Configuration_KEYS_HIDDEN_KEYSEXPOSED Configuration_KeysHidden = 1 + Configuration_KEYS_HIDDEN_KEYSHIDDEN Configuration_KeysHidden = 2 + Configuration_KEYS_HIDDEN_KEYSSOFT Configuration_KeysHidden = 3 +) + +// Enum value maps for Configuration_KeysHidden. +var ( + Configuration_KeysHidden_name = map[int32]string{ + 0: "KEYS_HIDDEN_UNSET", + 1: "KEYS_HIDDEN_KEYSEXPOSED", + 2: "KEYS_HIDDEN_KEYSHIDDEN", + 3: "KEYS_HIDDEN_KEYSSOFT", + } + Configuration_KeysHidden_value = map[string]int32{ + "KEYS_HIDDEN_UNSET": 0, + "KEYS_HIDDEN_KEYSEXPOSED": 1, + "KEYS_HIDDEN_KEYSHIDDEN": 2, + "KEYS_HIDDEN_KEYSSOFT": 3, + } +) + +func (x Configuration_KeysHidden) Enum() *Configuration_KeysHidden { + p := new(Configuration_KeysHidden) + *p = x + return p +} + +func (x Configuration_KeysHidden) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_KeysHidden) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[10].Descriptor() +} + +func (Configuration_KeysHidden) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[10] +} + +func (x Configuration_KeysHidden) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_KeysHidden.Descriptor instead. +func (Configuration_KeysHidden) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 10} +} + +type Configuration_Keyboard int32 + +const ( + Configuration_KEYBOARD_UNSET Configuration_Keyboard = 0 + Configuration_KEYBOARD_NOKEYS Configuration_Keyboard = 1 + Configuration_KEYBOARD_QWERTY Configuration_Keyboard = 2 + Configuration_KEYBOARD_TWELVEKEY Configuration_Keyboard = 3 +) + +// Enum value maps for Configuration_Keyboard. +var ( + Configuration_Keyboard_name = map[int32]string{ + 0: "KEYBOARD_UNSET", + 1: "KEYBOARD_NOKEYS", + 2: "KEYBOARD_QWERTY", + 3: "KEYBOARD_TWELVEKEY", + } + Configuration_Keyboard_value = map[string]int32{ + "KEYBOARD_UNSET": 0, + "KEYBOARD_NOKEYS": 1, + "KEYBOARD_QWERTY": 2, + "KEYBOARD_TWELVEKEY": 3, + } +) + +func (x Configuration_Keyboard) Enum() *Configuration_Keyboard { + p := new(Configuration_Keyboard) + *p = x + return p +} + +func (x Configuration_Keyboard) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_Keyboard) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[11].Descriptor() +} + +func (Configuration_Keyboard) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[11] +} + +func (x Configuration_Keyboard) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_Keyboard.Descriptor instead. +func (Configuration_Keyboard) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 11} +} + +type Configuration_NavHidden int32 + +const ( + Configuration_NAV_HIDDEN_UNSET Configuration_NavHidden = 0 + Configuration_NAV_HIDDEN_NAVEXPOSED Configuration_NavHidden = 1 + Configuration_NAV_HIDDEN_NAVHIDDEN Configuration_NavHidden = 2 +) + +// Enum value maps for Configuration_NavHidden. +var ( + Configuration_NavHidden_name = map[int32]string{ + 0: "NAV_HIDDEN_UNSET", + 1: "NAV_HIDDEN_NAVEXPOSED", + 2: "NAV_HIDDEN_NAVHIDDEN", + } + Configuration_NavHidden_value = map[string]int32{ + "NAV_HIDDEN_UNSET": 0, + "NAV_HIDDEN_NAVEXPOSED": 1, + "NAV_HIDDEN_NAVHIDDEN": 2, + } +) + +func (x Configuration_NavHidden) Enum() *Configuration_NavHidden { + p := new(Configuration_NavHidden) + *p = x + return p +} + +func (x Configuration_NavHidden) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_NavHidden) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[12].Descriptor() +} + +func (Configuration_NavHidden) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[12] +} + +func (x Configuration_NavHidden) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_NavHidden.Descriptor instead. +func (Configuration_NavHidden) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 12} +} + +type Configuration_Navigation int32 + +const ( + Configuration_NAVIGATION_UNSET Configuration_Navigation = 0 + Configuration_NAVIGATION_NONAV Configuration_Navigation = 1 + Configuration_NAVIGATION_DPAD Configuration_Navigation = 2 + Configuration_NAVIGATION_TRACKBALL Configuration_Navigation = 3 + Configuration_NAVIGATION_WHEEL Configuration_Navigation = 4 +) + +// Enum value maps for Configuration_Navigation. +var ( + Configuration_Navigation_name = map[int32]string{ + 0: "NAVIGATION_UNSET", + 1: "NAVIGATION_NONAV", + 2: "NAVIGATION_DPAD", + 3: "NAVIGATION_TRACKBALL", + 4: "NAVIGATION_WHEEL", + } + Configuration_Navigation_value = map[string]int32{ + "NAVIGATION_UNSET": 0, + "NAVIGATION_NONAV": 1, + "NAVIGATION_DPAD": 2, + "NAVIGATION_TRACKBALL": 3, + "NAVIGATION_WHEEL": 4, + } +) + +func (x Configuration_Navigation) Enum() *Configuration_Navigation { + p := new(Configuration_Navigation) + *p = x + return p +} + +func (x Configuration_Navigation) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_Navigation) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[13].Descriptor() +} + +func (Configuration_Navigation) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[13] +} + +func (x Configuration_Navigation) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_Navigation.Descriptor instead. +func (Configuration_Navigation) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 13} +} + +// A description of the requirements a device must have in order for a +// resource to be matched and selected. +type Configuration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Mobile country code. + Mcc uint32 `protobuf:"varint,1,opt,name=mcc,proto3" json:"mcc,omitempty"` + // Mobile network code. + Mnc uint32 `protobuf:"varint,2,opt,name=mnc,proto3" json:"mnc,omitempty"` + // BCP-47 locale tag. + Locale string `protobuf:"bytes,3,opt,name=locale,proto3" json:"locale,omitempty"` + // Left-to-right, right-to-left... + LayoutDirection Configuration_LayoutDirection `protobuf:"varint,4,opt,name=layout_direction,json=layoutDirection,proto3,enum=aapt.pb.Configuration_LayoutDirection" json:"layout_direction,omitempty"` + // Screen width in pixels. Prefer screen_width_dp. + ScreenWidth uint32 `protobuf:"varint,5,opt,name=screen_width,json=screenWidth,proto3" json:"screen_width,omitempty"` + // Screen height in pixels. Prefer screen_height_dp. + ScreenHeight uint32 `protobuf:"varint,6,opt,name=screen_height,json=screenHeight,proto3" json:"screen_height,omitempty"` + // Screen width in density independent pixels (dp). + ScreenWidthDp uint32 `protobuf:"varint,7,opt,name=screen_width_dp,json=screenWidthDp,proto3" json:"screen_width_dp,omitempty"` + // Screen height in density independent pixels (dp). + ScreenHeightDp uint32 `protobuf:"varint,8,opt,name=screen_height_dp,json=screenHeightDp,proto3" json:"screen_height_dp,omitempty"` + // The smallest screen dimension, regardless of orientation, in dp. + SmallestScreenWidthDp uint32 `protobuf:"varint,9,opt,name=smallest_screen_width_dp,json=smallestScreenWidthDp,proto3" json:"smallest_screen_width_dp,omitempty"` + // Whether the device screen is classified as small, normal, large, xlarge. + ScreenLayoutSize Configuration_ScreenLayoutSize `protobuf:"varint,10,opt,name=screen_layout_size,json=screenLayoutSize,proto3,enum=aapt.pb.Configuration_ScreenLayoutSize" json:"screen_layout_size,omitempty"` + // Whether the device screen is long. + ScreenLayoutLong Configuration_ScreenLayoutLong `protobuf:"varint,11,opt,name=screen_layout_long,json=screenLayoutLong,proto3,enum=aapt.pb.Configuration_ScreenLayoutLong" json:"screen_layout_long,omitempty"` + // Whether the screen is round (Android Wear). + ScreenRound Configuration_ScreenRound `protobuf:"varint,12,opt,name=screen_round,json=screenRound,proto3,enum=aapt.pb.Configuration_ScreenRound" json:"screen_round,omitempty"` + // Whether the screen supports wide color gamut. + WideColorGamut Configuration_WideColorGamut `protobuf:"varint,13,opt,name=wide_color_gamut,json=wideColorGamut,proto3,enum=aapt.pb.Configuration_WideColorGamut" json:"wide_color_gamut,omitempty"` + // Whether the screen has high dynamic range. + Hdr Configuration_Hdr `protobuf:"varint,14,opt,name=hdr,proto3,enum=aapt.pb.Configuration_Hdr" json:"hdr,omitempty"` + // Which orientation the device is in (portrait, landscape). + Orientation Configuration_Orientation `protobuf:"varint,15,opt,name=orientation,proto3,enum=aapt.pb.Configuration_Orientation" json:"orientation,omitempty"` + // Which type of UI mode the device is in (television, car, etc.). + UiModeType Configuration_UiModeType `protobuf:"varint,16,opt,name=ui_mode_type,json=uiModeType,proto3,enum=aapt.pb.Configuration_UiModeType" json:"ui_mode_type,omitempty"` + // Whether the device is in night mode. + UiModeNight Configuration_UiModeNight `protobuf:"varint,17,opt,name=ui_mode_night,json=uiModeNight,proto3,enum=aapt.pb.Configuration_UiModeNight" json:"ui_mode_night,omitempty"` + // The device's screen density in dots-per-inch (dpi). + Density uint32 `protobuf:"varint,18,opt,name=density,proto3" json:"density,omitempty"` + // Whether a touchscreen exists, supports a stylus, or finger. + Touchscreen Configuration_Touchscreen `protobuf:"varint,19,opt,name=touchscreen,proto3,enum=aapt.pb.Configuration_Touchscreen" json:"touchscreen,omitempty"` + // Whether the keyboard hardware keys are currently hidden, exposed, or + // if the keyboard is a software keyboard. + KeysHidden Configuration_KeysHidden `protobuf:"varint,20,opt,name=keys_hidden,json=keysHidden,proto3,enum=aapt.pb.Configuration_KeysHidden" json:"keys_hidden,omitempty"` + // The type of keyboard present (none, QWERTY, 12-key). + Keyboard Configuration_Keyboard `protobuf:"varint,21,opt,name=keyboard,proto3,enum=aapt.pb.Configuration_Keyboard" json:"keyboard,omitempty"` + // Whether the navigation is exposed or hidden. + NavHidden Configuration_NavHidden `protobuf:"varint,22,opt,name=nav_hidden,json=navHidden,proto3,enum=aapt.pb.Configuration_NavHidden" json:"nav_hidden,omitempty"` + // The type of navigation present on the device + // (trackball, wheel, dpad, etc.). + Navigation Configuration_Navigation `protobuf:"varint,23,opt,name=navigation,proto3,enum=aapt.pb.Configuration_Navigation" json:"navigation,omitempty"` + // The minimum SDK version of the device. + SdkVersion uint32 `protobuf:"varint,24,opt,name=sdk_version,json=sdkVersion,proto3" json:"sdk_version,omitempty"` + Product string `protobuf:"bytes,25,opt,name=product,proto3" json:"product,omitempty"` +} + +func (x *Configuration) Reset() { + *x = Configuration{} + if protoimpl.UnsafeEnabled { + mi := &file_Configuration_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Configuration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Configuration) ProtoMessage() {} + +func (x *Configuration) ProtoReflect() protoreflect.Message { + mi := &file_Configuration_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Configuration.ProtoReflect.Descriptor instead. +func (*Configuration) Descriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0} +} + +func (x *Configuration) GetMcc() uint32 { + if x != nil { + return x.Mcc + } + return 0 +} + +func (x *Configuration) GetMnc() uint32 { + if x != nil { + return x.Mnc + } + return 0 +} + +func (x *Configuration) GetLocale() string { + if x != nil { + return x.Locale + } + return "" +} + +func (x *Configuration) GetLayoutDirection() Configuration_LayoutDirection { + if x != nil { + return x.LayoutDirection + } + return Configuration_LAYOUT_DIRECTION_UNSET +} + +func (x *Configuration) GetScreenWidth() uint32 { + if x != nil { + return x.ScreenWidth + } + return 0 +} + +func (x *Configuration) GetScreenHeight() uint32 { + if x != nil { + return x.ScreenHeight + } + return 0 +} + +func (x *Configuration) GetScreenWidthDp() uint32 { + if x != nil { + return x.ScreenWidthDp + } + return 0 +} + +func (x *Configuration) GetScreenHeightDp() uint32 { + if x != nil { + return x.ScreenHeightDp + } + return 0 +} + +func (x *Configuration) GetSmallestScreenWidthDp() uint32 { + if x != nil { + return x.SmallestScreenWidthDp + } + return 0 +} + +func (x *Configuration) GetScreenLayoutSize() Configuration_ScreenLayoutSize { + if x != nil { + return x.ScreenLayoutSize + } + return Configuration_SCREEN_LAYOUT_SIZE_UNSET +} + +func (x *Configuration) GetScreenLayoutLong() Configuration_ScreenLayoutLong { + if x != nil { + return x.ScreenLayoutLong + } + return Configuration_SCREEN_LAYOUT_LONG_UNSET +} + +func (x *Configuration) GetScreenRound() Configuration_ScreenRound { + if x != nil { + return x.ScreenRound + } + return Configuration_SCREEN_ROUND_UNSET +} + +func (x *Configuration) GetWideColorGamut() Configuration_WideColorGamut { + if x != nil { + return x.WideColorGamut + } + return Configuration_WIDE_COLOR_GAMUT_UNSET +} + +func (x *Configuration) GetHdr() Configuration_Hdr { + if x != nil { + return x.Hdr + } + return Configuration_HDR_UNSET +} + +func (x *Configuration) GetOrientation() Configuration_Orientation { + if x != nil { + return x.Orientation + } + return Configuration_ORIENTATION_UNSET +} + +func (x *Configuration) GetUiModeType() Configuration_UiModeType { + if x != nil { + return x.UiModeType + } + return Configuration_UI_MODE_TYPE_UNSET +} + +func (x *Configuration) GetUiModeNight() Configuration_UiModeNight { + if x != nil { + return x.UiModeNight + } + return Configuration_UI_MODE_NIGHT_UNSET +} + +func (x *Configuration) GetDensity() uint32 { + if x != nil { + return x.Density + } + return 0 +} + +func (x *Configuration) GetTouchscreen() Configuration_Touchscreen { + if x != nil { + return x.Touchscreen + } + return Configuration_TOUCHSCREEN_UNSET +} + +func (x *Configuration) GetKeysHidden() Configuration_KeysHidden { + if x != nil { + return x.KeysHidden + } + return Configuration_KEYS_HIDDEN_UNSET +} + +func (x *Configuration) GetKeyboard() Configuration_Keyboard { + if x != nil { + return x.Keyboard + } + return Configuration_KEYBOARD_UNSET +} + +func (x *Configuration) GetNavHidden() Configuration_NavHidden { + if x != nil { + return x.NavHidden + } + return Configuration_NAV_HIDDEN_UNSET +} + +func (x *Configuration) GetNavigation() Configuration_Navigation { + if x != nil { + return x.Navigation + } + return Configuration_NAVIGATION_UNSET +} + +func (x *Configuration) GetSdkVersion() uint32 { + if x != nil { + return x.SdkVersion + } + return 0 +} + +func (x *Configuration) GetProduct() string { + if x != nil { + return x.Product + } + return "" +} + +var File_Configuration_proto protoreflect.FileDescriptor + +var file_Configuration_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x22, 0x91, + 0x17, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x63, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, + 0x63, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x6e, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x03, 0x6d, 0x6e, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x51, 0x0a, 0x10, + 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, + 0x61, 0x79, 0x6f, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, + 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x21, 0x0a, 0x0c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x57, 0x69, 0x64, + 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x73, 0x63, 0x72, 0x65, 0x65, + 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x65, 0x65, + 0x6e, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x64, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x57, 0x69, 0x64, 0x74, 0x68, 0x44, 0x70, 0x12, + 0x28, 0x0a, 0x10, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x5f, 0x64, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x73, 0x63, 0x72, 0x65, 0x65, + 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x44, 0x70, 0x12, 0x37, 0x0a, 0x18, 0x73, 0x6d, 0x61, + 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x5f, 0x64, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x73, 0x6d, 0x61, + 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x57, 0x69, 0x64, 0x74, 0x68, + 0x44, 0x70, 0x12, 0x55, 0x0a, 0x12, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x10, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4c, + 0x61, 0x79, 0x6f, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x55, 0x0a, 0x12, 0x73, 0x63, 0x72, + 0x65, 0x65, 0x6e, 0x5f, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x63, + 0x72, 0x65, 0x65, 0x6e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x10, + 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x4c, 0x6f, 0x6e, 0x67, + 0x12, 0x45, 0x0a, 0x0c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, + 0x63, 0x72, 0x65, 0x65, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x0b, 0x73, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x4f, 0x0a, 0x10, 0x77, 0x69, 0x64, 0x65, 0x5f, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x67, 0x61, 0x6d, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x25, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x64, 0x65, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x47, 0x61, 0x6d, 0x75, 0x74, 0x52, 0x0e, 0x77, 0x69, 0x64, 0x65, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x47, 0x61, 0x6d, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x68, 0x64, 0x72, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x64, + 0x72, 0x52, 0x03, 0x68, 0x64, 0x72, 0x12, 0x44, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x0c, + 0x75, 0x69, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x69, 0x4d, 0x6f, 0x64, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x75, 0x69, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x75, 0x69, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x55, 0x69, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x69, 0x67, 0x68, 0x74, 0x52, 0x0b, 0x75, 0x69, + 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6e, + 0x73, 0x69, 0x74, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x64, 0x65, 0x6e, 0x73, + 0x69, 0x74, 0x79, 0x12, 0x44, 0x0a, 0x0b, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x73, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x52, 0x0b, 0x74, 0x6f, + 0x75, 0x63, 0x68, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x42, 0x0a, 0x0b, 0x6b, 0x65, 0x79, + 0x73, 0x5f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65, + 0x6e, 0x52, 0x0a, 0x6b, 0x65, 0x79, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x3b, 0x0a, + 0x08, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x52, 0x08, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x6e, 0x61, + 0x76, 0x5f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x76, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, + 0x52, 0x09, 0x6e, 0x61, 0x76, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x41, 0x0a, 0x0a, 0x6e, + 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x21, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0a, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, + 0x0a, 0x0b, 0x73, 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x18, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x61, 0x0a, 0x0f, 0x4c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, + 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x41, 0x59, 0x4f, + 0x55, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x54, 0x52, + 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x49, 0x52, + 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x54, 0x4c, 0x10, 0x02, 0x22, 0xaa, 0x01, 0x0a, + 0x10, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, + 0x55, 0x54, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, + 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, + 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x1d, 0x0a, + 0x19, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x53, + 0x49, 0x5a, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, + 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x49, + 0x5a, 0x45, 0x5f, 0x4c, 0x41, 0x52, 0x47, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, + 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x49, 0x5a, 0x45, + 0x5f, 0x58, 0x4c, 0x41, 0x52, 0x47, 0x45, 0x10, 0x04, 0x22, 0x6d, 0x0a, 0x10, 0x53, 0x63, 0x72, + 0x65, 0x65, 0x6e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x4c, 0x6f, 0x6e, 0x67, 0x12, 0x1c, 0x0a, + 0x18, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x4c, + 0x4f, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x53, + 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x4c, 0x4f, 0x4e, + 0x47, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x43, 0x52, 0x45, + 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x5f, 0x4e, + 0x4f, 0x54, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x02, 0x22, 0x58, 0x0a, 0x0b, 0x53, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x52, 0x45, 0x45, + 0x4e, 0x5f, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, + 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x43, 0x52, 0x45, 0x45, + 0x4e, 0x5f, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x52, 0x4f, 0x55, 0x4e, 0x44, + 0x10, 0x02, 0x22, 0x68, 0x0a, 0x0e, 0x57, 0x69, 0x64, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x47, + 0x61, 0x6d, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x49, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4c, + 0x4f, 0x52, 0x5f, 0x47, 0x41, 0x4d, 0x55, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, + 0x12, 0x1b, 0x0a, 0x17, 0x57, 0x49, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x47, + 0x41, 0x4d, 0x55, 0x54, 0x5f, 0x57, 0x49, 0x44, 0x45, 0x43, 0x47, 0x10, 0x01, 0x12, 0x1d, 0x0a, + 0x19, 0x57, 0x49, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x47, 0x41, 0x4d, 0x55, + 0x54, 0x5f, 0x4e, 0x4f, 0x57, 0x49, 0x44, 0x45, 0x43, 0x47, 0x10, 0x02, 0x22, 0x33, 0x0a, 0x03, + 0x48, 0x64, 0x72, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x44, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, + 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x48, 0x44, 0x52, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x44, 0x52, + 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x44, 0x52, 0x5f, 0x4c, 0x4f, 0x57, 0x44, 0x52, 0x10, + 0x02, 0x22, 0x68, 0x0a, 0x0b, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x52, 0x49, 0x45, 0x4e, + 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, + 0x10, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x41, 0x4e, + 0x44, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x51, 0x55, 0x41, 0x52, 0x45, 0x10, 0x03, 0x22, 0xd7, 0x01, 0x0a, 0x0a, + 0x55, 0x69, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x49, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, + 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x55, + 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x4b, + 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x43, 0x41, 0x52, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x49, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x56, 0x49, 0x53, + 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x41, 0x4e, 0x43, 0x45, 0x10, + 0x05, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x57, 0x41, 0x54, 0x43, 0x48, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x49, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x52, 0x48, 0x45, 0x41, 0x44, + 0x53, 0x45, 0x54, 0x10, 0x07, 0x22, 0x5b, 0x0a, 0x0b, 0x55, 0x69, 0x4d, 0x6f, 0x64, 0x65, 0x4e, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x4e, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x17, 0x0a, + 0x13, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4e, + 0x49, 0x47, 0x48, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x4e, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x4e, 0x49, 0x47, 0x48, 0x54, + 0x10, 0x02, 0x22, 0x6d, 0x0a, 0x0b, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x73, 0x63, 0x72, 0x65, 0x65, + 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x4f, 0x55, 0x43, 0x48, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, + 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x4f, 0x55, 0x43, + 0x48, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x4f, 0x55, 0x43, 0x48, 0x10, + 0x01, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x4f, 0x55, 0x43, 0x48, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, + 0x5f, 0x53, 0x54, 0x59, 0x4c, 0x55, 0x53, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x4f, 0x55, + 0x43, 0x48, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x46, 0x49, 0x4e, 0x47, 0x45, 0x52, 0x10, + 0x03, 0x22, 0x76, 0x0a, 0x0a, 0x4b, 0x65, 0x79, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, + 0x15, 0x0a, 0x11, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x55, + 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x48, + 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x45, 0x58, 0x50, 0x4f, 0x53, 0x45, + 0x44, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x48, 0x49, 0x44, 0x44, + 0x45, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x10, 0x02, 0x12, + 0x18, 0x0a, 0x14, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x4b, + 0x45, 0x59, 0x53, 0x53, 0x4f, 0x46, 0x54, 0x10, 0x03, 0x22, 0x60, 0x0a, 0x08, 0x4b, 0x65, 0x79, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, + 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4b, 0x45, 0x59, + 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x4e, 0x4f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x01, 0x12, 0x13, + 0x0a, 0x0f, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x51, 0x57, 0x45, 0x52, 0x54, + 0x59, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, + 0x54, 0x57, 0x45, 0x4c, 0x56, 0x45, 0x4b, 0x45, 0x59, 0x10, 0x03, 0x22, 0x56, 0x0a, 0x09, 0x4e, + 0x61, 0x76, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x41, 0x56, 0x5f, + 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x19, + 0x0a, 0x15, 0x4e, 0x41, 0x56, 0x5f, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x4e, 0x41, 0x56, + 0x45, 0x58, 0x50, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x41, 0x56, + 0x5f, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x4e, 0x41, 0x56, 0x48, 0x49, 0x44, 0x44, 0x45, + 0x4e, 0x10, 0x02, 0x22, 0x7d, 0x0a, 0x0a, 0x4e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x41, 0x56, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x41, 0x56, 0x49, 0x47, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x41, 0x56, 0x10, 0x01, 0x12, 0x13, 0x0a, + 0x0f, 0x4e, 0x41, 0x56, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x50, 0x41, 0x44, + 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x41, 0x56, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x42, 0x41, 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, + 0x4e, 0x41, 0x56, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x48, 0x45, 0x45, 0x4c, + 0x10, 0x04, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x2f, 0x3b, 0x6d, 0x61, 0x69, 0x6e, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_Configuration_proto_rawDescOnce sync.Once + file_Configuration_proto_rawDescData = file_Configuration_proto_rawDesc +) + +func file_Configuration_proto_rawDescGZIP() []byte { + file_Configuration_proto_rawDescOnce.Do(func() { + file_Configuration_proto_rawDescData = protoimpl.X.CompressGZIP(file_Configuration_proto_rawDescData) + }) + return file_Configuration_proto_rawDescData +} + +var file_Configuration_proto_enumTypes = make([]protoimpl.EnumInfo, 14) +var file_Configuration_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_Configuration_proto_goTypes = []interface{}{ + (Configuration_LayoutDirection)(0), // 0: aapt.pb.Configuration.LayoutDirection + (Configuration_ScreenLayoutSize)(0), // 1: aapt.pb.Configuration.ScreenLayoutSize + (Configuration_ScreenLayoutLong)(0), // 2: aapt.pb.Configuration.ScreenLayoutLong + (Configuration_ScreenRound)(0), // 3: aapt.pb.Configuration.ScreenRound + (Configuration_WideColorGamut)(0), // 4: aapt.pb.Configuration.WideColorGamut + (Configuration_Hdr)(0), // 5: aapt.pb.Configuration.Hdr + (Configuration_Orientation)(0), // 6: aapt.pb.Configuration.Orientation + (Configuration_UiModeType)(0), // 7: aapt.pb.Configuration.UiModeType + (Configuration_UiModeNight)(0), // 8: aapt.pb.Configuration.UiModeNight + (Configuration_Touchscreen)(0), // 9: aapt.pb.Configuration.Touchscreen + (Configuration_KeysHidden)(0), // 10: aapt.pb.Configuration.KeysHidden + (Configuration_Keyboard)(0), // 11: aapt.pb.Configuration.Keyboard + (Configuration_NavHidden)(0), // 12: aapt.pb.Configuration.NavHidden + (Configuration_Navigation)(0), // 13: aapt.pb.Configuration.Navigation + (*Configuration)(nil), // 14: aapt.pb.Configuration +} +var file_Configuration_proto_depIdxs = []int32{ + 0, // 0: aapt.pb.Configuration.layout_direction:type_name -> aapt.pb.Configuration.LayoutDirection + 1, // 1: aapt.pb.Configuration.screen_layout_size:type_name -> aapt.pb.Configuration.ScreenLayoutSize + 2, // 2: aapt.pb.Configuration.screen_layout_long:type_name -> aapt.pb.Configuration.ScreenLayoutLong + 3, // 3: aapt.pb.Configuration.screen_round:type_name -> aapt.pb.Configuration.ScreenRound + 4, // 4: aapt.pb.Configuration.wide_color_gamut:type_name -> aapt.pb.Configuration.WideColorGamut + 5, // 5: aapt.pb.Configuration.hdr:type_name -> aapt.pb.Configuration.Hdr + 6, // 6: aapt.pb.Configuration.orientation:type_name -> aapt.pb.Configuration.Orientation + 7, // 7: aapt.pb.Configuration.ui_mode_type:type_name -> aapt.pb.Configuration.UiModeType + 8, // 8: aapt.pb.Configuration.ui_mode_night:type_name -> aapt.pb.Configuration.UiModeNight + 9, // 9: aapt.pb.Configuration.touchscreen:type_name -> aapt.pb.Configuration.Touchscreen + 10, // 10: aapt.pb.Configuration.keys_hidden:type_name -> aapt.pb.Configuration.KeysHidden + 11, // 11: aapt.pb.Configuration.keyboard:type_name -> aapt.pb.Configuration.Keyboard + 12, // 12: aapt.pb.Configuration.nav_hidden:type_name -> aapt.pb.Configuration.NavHidden + 13, // 13: aapt.pb.Configuration.navigation:type_name -> aapt.pb.Configuration.Navigation + 14, // [14:14] is the sub-list for method output_type + 14, // [14:14] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name +} + +func init() { file_Configuration_proto_init() } +func file_Configuration_proto_init() { + if File_Configuration_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_Configuration_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Configuration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_Configuration_proto_rawDesc, + NumEnums: 14, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_Configuration_proto_goTypes, + DependencyIndexes: file_Configuration_proto_depIdxs, + EnumInfos: file_Configuration_proto_enumTypes, + MessageInfos: file_Configuration_proto_msgTypes, + }.Build() + File_Configuration_proto = out.File + file_Configuration_proto_rawDesc = nil + file_Configuration_proto_goTypes = nil + file_Configuration_proto_depIdxs = nil +} diff --git a/Configuration.proto b/Configuration.proto new file mode 100755 index 0000000..df7b3d0 --- /dev/null +++ b/Configuration.proto @@ -0,0 +1,206 @@ +/* + * Copyright (C) 2017 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. + */ + +syntax = "proto3"; + +package aapt.pb; + +option go_package = "./;main"; + +// A description of the requirements a device must have in order for a +// resource to be matched and selected. +message Configuration { + enum LayoutDirection { + LAYOUT_DIRECTION_UNSET = 0; + LAYOUT_DIRECTION_LTR = 1; + LAYOUT_DIRECTION_RTL = 2; + } + + enum ScreenLayoutSize { + SCREEN_LAYOUT_SIZE_UNSET = 0; + SCREEN_LAYOUT_SIZE_SMALL = 1; + SCREEN_LAYOUT_SIZE_NORMAL = 2; + SCREEN_LAYOUT_SIZE_LARGE = 3; + SCREEN_LAYOUT_SIZE_XLARGE = 4; + } + + enum ScreenLayoutLong { + SCREEN_LAYOUT_LONG_UNSET = 0; + SCREEN_LAYOUT_LONG_LONG = 1; + SCREEN_LAYOUT_LONG_NOTLONG = 2; + } + + enum ScreenRound { + SCREEN_ROUND_UNSET = 0; + SCREEN_ROUND_ROUND = 1; + SCREEN_ROUND_NOTROUND = 2; + } + + enum WideColorGamut { + WIDE_COLOR_GAMUT_UNSET = 0; + WIDE_COLOR_GAMUT_WIDECG = 1; + WIDE_COLOR_GAMUT_NOWIDECG = 2; + } + + enum Hdr { + HDR_UNSET = 0; + HDR_HIGHDR = 1; + HDR_LOWDR = 2; + } + + enum Orientation { + ORIENTATION_UNSET = 0; + ORIENTATION_PORT = 1; + ORIENTATION_LAND = 2; + ORIENTATION_SQUARE = 3; + } + + enum UiModeType { + UI_MODE_TYPE_UNSET = 0; + UI_MODE_TYPE_NORMAL = 1; + UI_MODE_TYPE_DESK = 2; + UI_MODE_TYPE_CAR = 3; + UI_MODE_TYPE_TELEVISION = 4; + UI_MODE_TYPE_APPLIANCE = 5; + UI_MODE_TYPE_WATCH = 6; + UI_MODE_TYPE_VRHEADSET = 7; + } + + enum UiModeNight { + UI_MODE_NIGHT_UNSET = 0; + UI_MODE_NIGHT_NIGHT = 1; + UI_MODE_NIGHT_NOTNIGHT = 2; + } + + enum Touchscreen { + TOUCHSCREEN_UNSET = 0; + TOUCHSCREEN_NOTOUCH = 1; + TOUCHSCREEN_STYLUS = 2; + TOUCHSCREEN_FINGER = 3; + } + + enum KeysHidden { + KEYS_HIDDEN_UNSET = 0; + KEYS_HIDDEN_KEYSEXPOSED = 1; + KEYS_HIDDEN_KEYSHIDDEN = 2; + KEYS_HIDDEN_KEYSSOFT = 3; + } + + enum Keyboard { + KEYBOARD_UNSET = 0; + KEYBOARD_NOKEYS = 1; + KEYBOARD_QWERTY = 2; + KEYBOARD_TWELVEKEY = 3; + } + + enum NavHidden { + NAV_HIDDEN_UNSET = 0; + NAV_HIDDEN_NAVEXPOSED = 1; + NAV_HIDDEN_NAVHIDDEN = 2; + } + + enum Navigation { + NAVIGATION_UNSET = 0; + NAVIGATION_NONAV = 1; + NAVIGATION_DPAD = 2; + NAVIGATION_TRACKBALL = 3; + NAVIGATION_WHEEL = 4; + } + + // + // Axis/dimensions that are understood by the runtime. + // + + // Mobile country code. + uint32 mcc = 1; + + // Mobile network code. + uint32 mnc = 2; + + // BCP-47 locale tag. + string locale = 3; + + // Left-to-right, right-to-left... + LayoutDirection layout_direction = 4; + + // Screen width in pixels. Prefer screen_width_dp. + uint32 screen_width = 5; + + // Screen height in pixels. Prefer screen_height_dp. + uint32 screen_height = 6; + + // Screen width in density independent pixels (dp). + uint32 screen_width_dp = 7; + + // Screen height in density independent pixels (dp). + uint32 screen_height_dp = 8; + + // The smallest screen dimension, regardless of orientation, in dp. + uint32 smallest_screen_width_dp = 9; + + // Whether the device screen is classified as small, normal, large, xlarge. + ScreenLayoutSize screen_layout_size = 10; + + // Whether the device screen is long. + ScreenLayoutLong screen_layout_long = 11; + + // Whether the screen is round (Android Wear). + ScreenRound screen_round = 12; + + // Whether the screen supports wide color gamut. + WideColorGamut wide_color_gamut = 13; + + // Whether the screen has high dynamic range. + Hdr hdr = 14; + + // Which orientation the device is in (portrait, landscape). + Orientation orientation = 15; + + // Which type of UI mode the device is in (television, car, etc.). + UiModeType ui_mode_type = 16; + + // Whether the device is in night mode. + UiModeNight ui_mode_night = 17; + + // The device's screen density in dots-per-inch (dpi). + uint32 density = 18; + + // Whether a touchscreen exists, supports a stylus, or finger. + Touchscreen touchscreen = 19; + + // Whether the keyboard hardware keys are currently hidden, exposed, or + // if the keyboard is a software keyboard. + KeysHidden keys_hidden = 20; + + // The type of keyboard present (none, QWERTY, 12-key). + Keyboard keyboard = 21; + + // Whether the navigation is exposed or hidden. + NavHidden nav_hidden = 22; + + // The type of navigation present on the device + // (trackball, wheel, dpad, etc.). + Navigation navigation = 23; + + // The minimum SDK version of the device. + uint32 sdk_version = 24; + + // + // Build-time only dimensions. + // + + string product = 25; +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..de4708f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:latest +WORKDIR /app +RUN apt-get -y update && apt-get install -y curl +CMD ["/app/aggregator", "--bind", "0.0.0.0:9000"] diff --git a/Resources.pb.go b/Resources.pb.go new file mode 100644 index 0000000..113d926 --- /dev/null +++ b/Resources.pb.go @@ -0,0 +1,5290 @@ +// +// Copyright (C) 2016 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. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.18.1 +// source: Resources.proto + +package main + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The visibility of the resource outside of its package. +type Visibility_Level int32 + +const ( + // No visibility was explicitly specified. This is typically treated as private. + // The distinction is important when two separate R.java files are generated: a public and + // private one. An unknown visibility, in this case, would cause the resource to be omitted + // from either R.java. + Visibility_UNKNOWN Visibility_Level = 0 + // A resource was explicitly marked as private. This means the resource can not be accessed + // outside of its package unless the @*package:type/entry notation is used (the asterisk being + // the private accessor). If two R.java files are generated (private + public), the resource + // will only be emitted to the private R.java file. + Visibility_PRIVATE Visibility_Level = 1 + // A resource was explicitly marked as public. This means the resource can be accessed + // from any package, and is emitted into all R.java files, public and private. + Visibility_PUBLIC Visibility_Level = 2 +) + +// Enum value maps for Visibility_Level. +var ( + Visibility_Level_name = map[int32]string{ + 0: "UNKNOWN", + 1: "PRIVATE", + 2: "PUBLIC", + } + Visibility_Level_value = map[string]int32{ + "UNKNOWN": 0, + "PRIVATE": 1, + "PUBLIC": 2, + } +) + +func (x Visibility_Level) Enum() *Visibility_Level { + p := new(Visibility_Level) + *p = x + return p +} + +func (x Visibility_Level) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Visibility_Level) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[0].Descriptor() +} + +func (Visibility_Level) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[0] +} + +func (x Visibility_Level) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Visibility_Level.Descriptor instead. +func (Visibility_Level) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{9, 0} +} + +type OverlayableItem_Policy int32 + +const ( + OverlayableItem_NONE OverlayableItem_Policy = 0 + OverlayableItem_PUBLIC OverlayableItem_Policy = 1 + OverlayableItem_SYSTEM OverlayableItem_Policy = 2 + OverlayableItem_VENDOR OverlayableItem_Policy = 3 + OverlayableItem_PRODUCT OverlayableItem_Policy = 4 + OverlayableItem_SIGNATURE OverlayableItem_Policy = 5 + OverlayableItem_ODM OverlayableItem_Policy = 6 + OverlayableItem_OEM OverlayableItem_Policy = 7 + OverlayableItem_ACTOR OverlayableItem_Policy = 8 + OverlayableItem_CONFIG_SIGNATURE OverlayableItem_Policy = 9 +) + +// Enum value maps for OverlayableItem_Policy. +var ( + OverlayableItem_Policy_name = map[int32]string{ + 0: "NONE", + 1: "PUBLIC", + 2: "SYSTEM", + 3: "VENDOR", + 4: "PRODUCT", + 5: "SIGNATURE", + 6: "ODM", + 7: "OEM", + 8: "ACTOR", + 9: "CONFIG_SIGNATURE", + } + OverlayableItem_Policy_value = map[string]int32{ + "NONE": 0, + "PUBLIC": 1, + "SYSTEM": 2, + "VENDOR": 3, + "PRODUCT": 4, + "SIGNATURE": 5, + "ODM": 6, + "OEM": 7, + "ACTOR": 8, + "CONFIG_SIGNATURE": 9, + } +) + +func (x OverlayableItem_Policy) Enum() *OverlayableItem_Policy { + p := new(OverlayableItem_Policy) + *p = x + return p +} + +func (x OverlayableItem_Policy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OverlayableItem_Policy) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[1].Descriptor() +} + +func (OverlayableItem_Policy) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[1] +} + +func (x OverlayableItem_Policy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OverlayableItem_Policy.Descriptor instead. +func (OverlayableItem_Policy) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{12, 0} +} + +type Reference_Type int32 + +const ( + // A plain reference (@package:type/entry). + Reference_REFERENCE Reference_Type = 0 + // A reference to a theme attribute (?package:type/entry). + Reference_ATTRIBUTE Reference_Type = 1 +) + +// Enum value maps for Reference_Type. +var ( + Reference_Type_name = map[int32]string{ + 0: "REFERENCE", + 1: "ATTRIBUTE", + } + Reference_Type_value = map[string]int32{ + "REFERENCE": 0, + "ATTRIBUTE": 1, + } +) + +func (x Reference_Type) Enum() *Reference_Type { + p := new(Reference_Type) + *p = x + return p +} + +func (x Reference_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Reference_Type) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[2].Descriptor() +} + +func (Reference_Type) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[2] +} + +func (x Reference_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Reference_Type.Descriptor instead. +func (Reference_Type) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{21, 0} +} + +type FileReference_Type int32 + +const ( + FileReference_UNKNOWN FileReference_Type = 0 + FileReference_PNG FileReference_Type = 1 + FileReference_BINARY_XML FileReference_Type = 2 + FileReference_PROTO_XML FileReference_Type = 3 +) + +// Enum value maps for FileReference_Type. +var ( + FileReference_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "PNG", + 2: "BINARY_XML", + 3: "PROTO_XML", + } + FileReference_Type_value = map[string]int32{ + "UNKNOWN": 0, + "PNG": 1, + "BINARY_XML": 2, + "PROTO_XML": 3, + } +) + +func (x FileReference_Type) Enum() *FileReference_Type { + p := new(FileReference_Type) + *p = x + return p +} + +func (x FileReference_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FileReference_Type) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[3].Descriptor() +} + +func (FileReference_Type) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[3] +} + +func (x FileReference_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FileReference_Type.Descriptor instead. +func (FileReference_Type) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{26, 0} +} + +// Bitmask of formats allowed for an attribute. +type Attribute_FormatFlags int32 + +const ( + Attribute_NONE Attribute_FormatFlags = 0 // Proto3 requires a default of 0. + Attribute_ANY Attribute_FormatFlags = 65535 // Allows any type except ENUM and FLAGS. + Attribute_REFERENCE Attribute_FormatFlags = 1 // Allows Reference values. + Attribute_STRING Attribute_FormatFlags = 2 // Allows String/StyledString values. + Attribute_INTEGER Attribute_FormatFlags = 4 // Allows any integer BinaryPrimitive values. + Attribute_BOOLEAN Attribute_FormatFlags = 8 // Allows any boolean BinaryPrimitive values. + Attribute_COLOR Attribute_FormatFlags = 16 // Allows any color BinaryPrimitive values. + Attribute_FLOAT Attribute_FormatFlags = 32 // Allows any float BinaryPrimitive values. + Attribute_DIMENSION Attribute_FormatFlags = 64 // Allows any dimension BinaryPrimitive values. + Attribute_FRACTION Attribute_FormatFlags = 128 // Allows any fraction BinaryPrimitive values. + Attribute_ENUM Attribute_FormatFlags = 65536 // Allows enums that are defined in the Attribute's symbols. + // ENUM and FLAGS cannot BOTH be set. + Attribute_FLAGS Attribute_FormatFlags = 131072 // Allows flags that are defined in the Attribute's symbols. +) + +// Enum value maps for Attribute_FormatFlags. +var ( + Attribute_FormatFlags_name = map[int32]string{ + 0: "NONE", + 65535: "ANY", + 1: "REFERENCE", + 2: "STRING", + 4: "INTEGER", + 8: "BOOLEAN", + 16: "COLOR", + 32: "FLOAT", + 64: "DIMENSION", + 128: "FRACTION", + 65536: "ENUM", + 131072: "FLAGS", + } + Attribute_FormatFlags_value = map[string]int32{ + "NONE": 0, + "ANY": 65535, + "REFERENCE": 1, + "STRING": 2, + "INTEGER": 4, + "BOOLEAN": 8, + "COLOR": 16, + "FLOAT": 32, + "DIMENSION": 64, + "FRACTION": 128, + "ENUM": 65536, + "FLAGS": 131072, + } +) + +func (x Attribute_FormatFlags) Enum() *Attribute_FormatFlags { + p := new(Attribute_FormatFlags) + *p = x + return p +} + +func (x Attribute_FormatFlags) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Attribute_FormatFlags) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[4].Descriptor() +} + +func (Attribute_FormatFlags) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[4] +} + +func (x Attribute_FormatFlags) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Attribute_FormatFlags.Descriptor instead. +func (Attribute_FormatFlags) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{28, 0} +} + +// The arity of the plural. +type Plural_Arity int32 + +const ( + Plural_ZERO Plural_Arity = 0 + Plural_ONE Plural_Arity = 1 + Plural_TWO Plural_Arity = 2 + Plural_FEW Plural_Arity = 3 + Plural_MANY Plural_Arity = 4 + Plural_OTHER Plural_Arity = 5 +) + +// Enum value maps for Plural_Arity. +var ( + Plural_Arity_name = map[int32]string{ + 0: "ZERO", + 1: "ONE", + 2: "TWO", + 3: "FEW", + 4: "MANY", + 5: "OTHER", + } + Plural_Arity_value = map[string]int32{ + "ZERO": 0, + "ONE": 1, + "TWO": 2, + "FEW": 3, + "MANY": 4, + "OTHER": 5, + } +) + +func (x Plural_Arity) Enum() *Plural_Arity { + p := new(Plural_Arity) + *p = x + return p +} + +func (x Plural_Arity) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Plural_Arity) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[5].Descriptor() +} + +func (Plural_Arity) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[5] +} + +func (x Plural_Arity) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Plural_Arity.Descriptor instead. +func (Plural_Arity) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{32, 0} +} + +// A string pool that wraps the binary form of the C++ class android::ResStringPool. +type StringPool struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *StringPool) Reset() { + *x = StringPool{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StringPool) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StringPool) ProtoMessage() {} + +func (x *StringPool) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StringPool.ProtoReflect.Descriptor instead. +func (*StringPool) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{0} +} + +func (x *StringPool) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +// The position of a declared entity within a file. +type SourcePosition struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LineNumber uint32 `protobuf:"varint,1,opt,name=line_number,json=lineNumber,proto3" json:"line_number,omitempty"` + ColumnNumber uint32 `protobuf:"varint,2,opt,name=column_number,json=columnNumber,proto3" json:"column_number,omitempty"` +} + +func (x *SourcePosition) Reset() { + *x = SourcePosition{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SourcePosition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SourcePosition) ProtoMessage() {} + +func (x *SourcePosition) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SourcePosition.ProtoReflect.Descriptor instead. +func (*SourcePosition) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{1} +} + +func (x *SourcePosition) GetLineNumber() uint32 { + if x != nil { + return x.LineNumber + } + return 0 +} + +func (x *SourcePosition) GetColumnNumber() uint32 { + if x != nil { + return x.ColumnNumber + } + return 0 +} + +// Developer friendly source file information for an entity in the resource table. +type Source struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The index of the string path within the source string pool of a ResourceTable. + PathIdx uint32 `protobuf:"varint,1,opt,name=path_idx,json=pathIdx,proto3" json:"path_idx,omitempty"` + Position *SourcePosition `protobuf:"bytes,2,opt,name=position,proto3" json:"position,omitempty"` +} + +func (x *Source) Reset() { + *x = Source{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Source) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Source) ProtoMessage() {} + +func (x *Source) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Source.ProtoReflect.Descriptor instead. +func (*Source) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{2} +} + +func (x *Source) GetPathIdx() uint32 { + if x != nil { + return x.PathIdx + } + return 0 +} + +func (x *Source) GetPosition() *SourcePosition { + if x != nil { + return x.Position + } + return nil +} + +// The name and version fingerprint of a build tool. +type ToolFingerprint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tool string `protobuf:"bytes,1,opt,name=tool,proto3" json:"tool,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` +} + +func (x *ToolFingerprint) Reset() { + *x = ToolFingerprint{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ToolFingerprint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ToolFingerprint) ProtoMessage() {} + +func (x *ToolFingerprint) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ToolFingerprint.ProtoReflect.Descriptor instead. +func (*ToolFingerprint) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{3} +} + +func (x *ToolFingerprint) GetTool() string { + if x != nil { + return x.Tool + } + return "" +} + +func (x *ToolFingerprint) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +// Top level message representing a resource table. +type ResourceTable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The string pool containing source paths referenced throughout the resource table. This does + // not end up in the final binary ARSC file. + SourcePool *StringPool `protobuf:"bytes,1,opt,name=source_pool,json=sourcePool,proto3" json:"source_pool,omitempty"` + // Resource definitions corresponding to an Android package. + Package []*Package `protobuf:"bytes,2,rep,name=package,proto3" json:"package,omitempty"` + // The declarations within the resource table. + Overlayable []*Overlayable `protobuf:"bytes,3,rep,name=overlayable,proto3" json:"overlayable,omitempty"` + // The version fingerprints of the tools that built the resource table. + ToolFingerprint []*ToolFingerprint `protobuf:"bytes,4,rep,name=tool_fingerprint,json=toolFingerprint,proto3" json:"tool_fingerprint,omitempty"` +} + +func (x *ResourceTable) Reset() { + *x = ResourceTable{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResourceTable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResourceTable) ProtoMessage() {} + +func (x *ResourceTable) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResourceTable.ProtoReflect.Descriptor instead. +func (*ResourceTable) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{4} +} + +func (x *ResourceTable) GetSourcePool() *StringPool { + if x != nil { + return x.SourcePool + } + return nil +} + +func (x *ResourceTable) GetPackage() []*Package { + if x != nil { + return x.Package + } + return nil +} + +func (x *ResourceTable) GetOverlayable() []*Overlayable { + if x != nil { + return x.Overlayable + } + return nil +} + +func (x *ResourceTable) GetToolFingerprint() []*ToolFingerprint { + if x != nil { + return x.ToolFingerprint + } + return nil +} + +// A package ID in the range [0x00, 0xff]. +type PackageId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *PackageId) Reset() { + *x = PackageId{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PackageId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PackageId) ProtoMessage() {} + +func (x *PackageId) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PackageId.ProtoReflect.Descriptor instead. +func (*PackageId) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{5} +} + +func (x *PackageId) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +// Defines resources for an Android package. +type Package struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The package ID of this package, in the range [0x00, 0xff]. + // - ID 0x00 is reserved for shared libraries, or when the ID is assigned at run-time. + // - ID 0x01 is reserved for the 'android' package (framework). + // - ID range [0x02, 0x7f) is reserved for auto-assignment to shared libraries at run-time. + // - ID 0x7f is reserved for the application package. + // - IDs > 0x7f are reserved for the application as well and are treated as feature splits. + // This may not be set if no ID was assigned. + PackageId *PackageId `protobuf:"bytes,1,opt,name=package_id,json=packageId,proto3" json:"package_id,omitempty"` + // The Java compatible Android package name of the app. + PackageName string `protobuf:"bytes,2,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + // The series of types defined by the package. + Type []*Type `protobuf:"bytes,3,rep,name=type,proto3" json:"type,omitempty"` +} + +func (x *Package) Reset() { + *x = Package{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Package) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Package) ProtoMessage() {} + +func (x *Package) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Package.ProtoReflect.Descriptor instead. +func (*Package) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{6} +} + +func (x *Package) GetPackageId() *PackageId { + if x != nil { + return x.PackageId + } + return nil +} + +func (x *Package) GetPackageName() string { + if x != nil { + return x.PackageName + } + return "" +} + +func (x *Package) GetType() []*Type { + if x != nil { + return x.Type + } + return nil +} + +// A type ID in the range [0x01, 0xff]. +type TypeId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *TypeId) Reset() { + *x = TypeId{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TypeId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TypeId) ProtoMessage() {} + +func (x *TypeId) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TypeId.ProtoReflect.Descriptor instead. +func (*TypeId) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{7} +} + +func (x *TypeId) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +// A set of resources grouped under a common type. Such types include string, layout, xml, dimen, +// attr, etc. This maps to the second part of a resource identifier in Java (R.type.entry). +type Type struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ID of the type. This may not be set if no ID was assigned. + TypeId *TypeId `protobuf:"bytes,1,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` + // The name of the type. This corresponds to the 'type' part of a full resource name of the form + // package:type/entry. The set of legal type names is listed in Resource.cpp. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // The entries defined for this type. + Entry []*Entry `protobuf:"bytes,3,rep,name=entry,proto3" json:"entry,omitempty"` +} + +func (x *Type) Reset() { + *x = Type{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Type) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Type) ProtoMessage() {} + +func (x *Type) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Type.ProtoReflect.Descriptor instead. +func (*Type) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{8} +} + +func (x *Type) GetTypeId() *TypeId { + if x != nil { + return x.TypeId + } + return nil +} + +func (x *Type) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Type) GetEntry() []*Entry { + if x != nil { + return x.Entry + } + return nil +} + +// The Visibility of a symbol/entry (public, private, undefined). +type Visibility struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Level Visibility_Level `protobuf:"varint,1,opt,name=level,proto3,enum=aapt.pb.Visibility_Level" json:"level,omitempty"` + // The path at which this entry's visibility was defined (eg. public.xml). + Source *Source `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` + // The comment associated with the tag. + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment,omitempty"` + // Indicates that the resource id may change across builds and that the public R.java identifier + // for this resource should not be final. This is set to `true` for resources in `staging-group` + // tags. + StagedApi bool `protobuf:"varint,4,opt,name=staged_api,json=stagedApi,proto3" json:"staged_api,omitempty"` +} + +func (x *Visibility) Reset() { + *x = Visibility{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Visibility) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Visibility) ProtoMessage() {} + +func (x *Visibility) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Visibility.ProtoReflect.Descriptor instead. +func (*Visibility) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{9} +} + +func (x *Visibility) GetLevel() Visibility_Level { + if x != nil { + return x.Level + } + return Visibility_UNKNOWN +} + +func (x *Visibility) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Visibility) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Visibility) GetStagedApi() bool { + if x != nil { + return x.StagedApi + } + return false +} + +// Whether a resource comes from a compile-time overlay and is explicitly allowed to not overlay an +// existing resource. +type AllowNew struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where this was defined in source. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comment associated with the declaration. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` +} + +func (x *AllowNew) Reset() { + *x = AllowNew{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AllowNew) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AllowNew) ProtoMessage() {} + +func (x *AllowNew) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AllowNew.ProtoReflect.Descriptor instead. +func (*AllowNew) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{10} +} + +func (x *AllowNew) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *AllowNew) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +// Represents a set of overlayable resources. +type Overlayable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the . + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The location of the declaration in the source. + Source *Source `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` + // The component responsible for enabling and disabling overlays targeting this . + Actor string `protobuf:"bytes,3,opt,name=actor,proto3" json:"actor,omitempty"` +} + +func (x *Overlayable) Reset() { + *x = Overlayable{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Overlayable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Overlayable) ProtoMessage() {} + +func (x *Overlayable) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Overlayable.ProtoReflect.Descriptor instead. +func (*Overlayable) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{11} +} + +func (x *Overlayable) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Overlayable) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Overlayable) GetActor() string { + if x != nil { + return x.Actor + } + return "" +} + +// Represents an overlayable declaration within an tag. +type OverlayableItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The location of the declaration in source. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comment associated with the declaration. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // The policy defined by the enclosing tag of this . + Policy []OverlayableItem_Policy `protobuf:"varint,3,rep,packed,name=policy,proto3,enum=aapt.pb.OverlayableItem_Policy" json:"policy,omitempty"` + // The index into overlayable list that points to the tag that contains + // this . + OverlayableIdx uint32 `protobuf:"varint,4,opt,name=overlayable_idx,json=overlayableIdx,proto3" json:"overlayable_idx,omitempty"` +} + +func (x *OverlayableItem) Reset() { + *x = OverlayableItem{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OverlayableItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OverlayableItem) ProtoMessage() {} + +func (x *OverlayableItem) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OverlayableItem.ProtoReflect.Descriptor instead. +func (*OverlayableItem) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{12} +} + +func (x *OverlayableItem) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *OverlayableItem) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *OverlayableItem) GetPolicy() []OverlayableItem_Policy { + if x != nil { + return x.Policy + } + return nil +} + +func (x *OverlayableItem) GetOverlayableIdx() uint32 { + if x != nil { + return x.OverlayableIdx + } + return 0 +} + +// The staged resource ID definition of a finalized resource. +type StagedId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + StagedId uint32 `protobuf:"varint,2,opt,name=staged_id,json=stagedId,proto3" json:"staged_id,omitempty"` +} + +func (x *StagedId) Reset() { + *x = StagedId{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StagedId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StagedId) ProtoMessage() {} + +func (x *StagedId) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StagedId.ProtoReflect.Descriptor instead. +func (*StagedId) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{13} +} + +func (x *StagedId) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *StagedId) GetStagedId() uint32 { + if x != nil { + return x.StagedId + } + return 0 +} + +// An entry ID in the range [0x0000, 0xffff]. +type EntryId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *EntryId) Reset() { + *x = EntryId{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntryId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntryId) ProtoMessage() {} + +func (x *EntryId) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntryId.ProtoReflect.Descriptor instead. +func (*EntryId) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{14} +} + +func (x *EntryId) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +// An entry declaration. An entry has a full resource ID that is the combination of package ID, +// type ID, and its own entry ID. An entry on its own has no value, but values are defined for +// various configurations/variants. +type Entry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ID of this entry. Together with the package ID and type ID, this forms a full resource ID + // of the form 0xPPTTEEEE, where PP is the package ID, TT is the type ID, and EEEE is the entry + // ID. + // This may not be set if no ID was assigned. + EntryId *EntryId `protobuf:"bytes,1,opt,name=entry_id,json=entryId,proto3" json:"entry_id,omitempty"` + // The name of this entry. This corresponds to the 'entry' part of a full resource name of the + // form package:type/entry. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // The visibility of this entry (public, private, undefined). + Visibility *Visibility `protobuf:"bytes,3,opt,name=visibility,proto3" json:"visibility,omitempty"` + // Whether this resource, when originating from a compile-time overlay, is allowed to NOT overlay + // any existing resources. + AllowNew *AllowNew `protobuf:"bytes,4,opt,name=allow_new,json=allowNew,proto3" json:"allow_new,omitempty"` + // Whether this resource can be overlaid by a runtime resource overlay (RRO). + OverlayableItem *OverlayableItem `protobuf:"bytes,5,opt,name=overlayable_item,json=overlayableItem,proto3" json:"overlayable_item,omitempty"` + // The set of values defined for this entry, each corresponding to a different + // configuration/variant. + ConfigValue []*ConfigValue `protobuf:"bytes,6,rep,name=config_value,json=configValue,proto3" json:"config_value,omitempty"` + // The staged resource ID of this finalized resource. + StagedId *StagedId `protobuf:"bytes,7,opt,name=staged_id,json=stagedId,proto3" json:"staged_id,omitempty"` +} + +func (x *Entry) Reset() { + *x = Entry{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Entry) ProtoMessage() {} + +func (x *Entry) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Entry.ProtoReflect.Descriptor instead. +func (*Entry) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{15} +} + +func (x *Entry) GetEntryId() *EntryId { + if x != nil { + return x.EntryId + } + return nil +} + +func (x *Entry) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Entry) GetVisibility() *Visibility { + if x != nil { + return x.Visibility + } + return nil +} + +func (x *Entry) GetAllowNew() *AllowNew { + if x != nil { + return x.AllowNew + } + return nil +} + +func (x *Entry) GetOverlayableItem() *OverlayableItem { + if x != nil { + return x.OverlayableItem + } + return nil +} + +func (x *Entry) GetConfigValue() []*ConfigValue { + if x != nil { + return x.ConfigValue + } + return nil +} + +func (x *Entry) GetStagedId() *StagedId { + if x != nil { + return x.StagedId + } + return nil +} + +// A Configuration/Value pair. +type ConfigValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Config *Configuration `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + Value *Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *ConfigValue) Reset() { + *x = ConfigValue{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConfigValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigValue) ProtoMessage() {} + +func (x *ConfigValue) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConfigValue.ProtoReflect.Descriptor instead. +func (*ConfigValue) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{16} +} + +func (x *ConfigValue) GetConfig() *Configuration { + if x != nil { + return x.Config + } + return nil +} + +func (x *ConfigValue) GetValue() *Value { + if x != nil { + return x.Value + } + return nil +} + +// The generic meta-data for every value in a resource table. +type Value struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the value was defined. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comment associated with the value. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // Whether the value can be overridden. + Weak bool `protobuf:"varint,3,opt,name=weak,proto3" json:"weak,omitempty"` + // The value is either an Item or a CompoundValue. + // + // Types that are assignable to Value: + // *Value_Item + // *Value_CompoundValue + Value isValue_Value `protobuf_oneof:"value"` +} + +func (x *Value) Reset() { + *x = Value{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Value) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Value) ProtoMessage() {} + +func (x *Value) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Value.ProtoReflect.Descriptor instead. +func (*Value) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{17} +} + +func (x *Value) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Value) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Value) GetWeak() bool { + if x != nil { + return x.Weak + } + return false +} + +func (m *Value) GetValue() isValue_Value { + if m != nil { + return m.Value + } + return nil +} + +func (x *Value) GetItem() *Item { + if x, ok := x.GetValue().(*Value_Item); ok { + return x.Item + } + return nil +} + +func (x *Value) GetCompoundValue() *CompoundValue { + if x, ok := x.GetValue().(*Value_CompoundValue); ok { + return x.CompoundValue + } + return nil +} + +type isValue_Value interface { + isValue_Value() +} + +type Value_Item struct { + Item *Item `protobuf:"bytes,4,opt,name=item,proto3,oneof"` +} + +type Value_CompoundValue struct { + CompoundValue *CompoundValue `protobuf:"bytes,5,opt,name=compound_value,json=compoundValue,proto3,oneof"` +} + +func (*Value_Item) isValue_Value() {} + +func (*Value_CompoundValue) isValue_Value() {} + +// An Item is an abstract type. It represents a value that can appear inline in many places, such +// as XML attribute values or on the right hand side of style attribute definitions. The concrete +// type is one of the types below. Only one can be set. +type Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Value: + // *Item_Ref + // *Item_Str + // *Item_RawStr + // *Item_StyledStr + // *Item_File + // *Item_Id + // *Item_Prim + Value isItem_Value `protobuf_oneof:"value"` +} + +func (x *Item) Reset() { + *x = Item{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Item) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Item) ProtoMessage() {} + +func (x *Item) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Item.ProtoReflect.Descriptor instead. +func (*Item) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{18} +} + +func (m *Item) GetValue() isItem_Value { + if m != nil { + return m.Value + } + return nil +} + +func (x *Item) GetRef() *Reference { + if x, ok := x.GetValue().(*Item_Ref); ok { + return x.Ref + } + return nil +} + +func (x *Item) GetStr() *String { + if x, ok := x.GetValue().(*Item_Str); ok { + return x.Str + } + return nil +} + +func (x *Item) GetRawStr() *RawString { + if x, ok := x.GetValue().(*Item_RawStr); ok { + return x.RawStr + } + return nil +} + +func (x *Item) GetStyledStr() *StyledString { + if x, ok := x.GetValue().(*Item_StyledStr); ok { + return x.StyledStr + } + return nil +} + +func (x *Item) GetFile() *FileReference { + if x, ok := x.GetValue().(*Item_File); ok { + return x.File + } + return nil +} + +func (x *Item) GetId() *Id { + if x, ok := x.GetValue().(*Item_Id); ok { + return x.Id + } + return nil +} + +func (x *Item) GetPrim() *Primitive { + if x, ok := x.GetValue().(*Item_Prim); ok { + return x.Prim + } + return nil +} + +type isItem_Value interface { + isItem_Value() +} + +type Item_Ref struct { + Ref *Reference `protobuf:"bytes,1,opt,name=ref,proto3,oneof"` +} + +type Item_Str struct { + Str *String `protobuf:"bytes,2,opt,name=str,proto3,oneof"` +} + +type Item_RawStr struct { + RawStr *RawString `protobuf:"bytes,3,opt,name=raw_str,json=rawStr,proto3,oneof"` +} + +type Item_StyledStr struct { + StyledStr *StyledString `protobuf:"bytes,4,opt,name=styled_str,json=styledStr,proto3,oneof"` +} + +type Item_File struct { + File *FileReference `protobuf:"bytes,5,opt,name=file,proto3,oneof"` +} + +type Item_Id struct { + Id *Id `protobuf:"bytes,6,opt,name=id,proto3,oneof"` +} + +type Item_Prim struct { + Prim *Primitive `protobuf:"bytes,7,opt,name=prim,proto3,oneof"` +} + +func (*Item_Ref) isItem_Value() {} + +func (*Item_Str) isItem_Value() {} + +func (*Item_RawStr) isItem_Value() {} + +func (*Item_StyledStr) isItem_Value() {} + +func (*Item_File) isItem_Value() {} + +func (*Item_Id) isItem_Value() {} + +func (*Item_Prim) isItem_Value() {} + +// A CompoundValue is an abstract type. It represents a value that is a made of other values. +// These can only usually appear as top-level resources. The concrete type is one of the types +// below. Only one can be set. +type CompoundValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Value: + // *CompoundValue_Attr + // *CompoundValue_Style + // *CompoundValue_Styleable + // *CompoundValue_Array + // *CompoundValue_Plural + // *CompoundValue_Macro + Value isCompoundValue_Value `protobuf_oneof:"value"` +} + +func (x *CompoundValue) Reset() { + *x = CompoundValue{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CompoundValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompoundValue) ProtoMessage() {} + +func (x *CompoundValue) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompoundValue.ProtoReflect.Descriptor instead. +func (*CompoundValue) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{19} +} + +func (m *CompoundValue) GetValue() isCompoundValue_Value { + if m != nil { + return m.Value + } + return nil +} + +func (x *CompoundValue) GetAttr() *Attribute { + if x, ok := x.GetValue().(*CompoundValue_Attr); ok { + return x.Attr + } + return nil +} + +func (x *CompoundValue) GetStyle() *Style { + if x, ok := x.GetValue().(*CompoundValue_Style); ok { + return x.Style + } + return nil +} + +func (x *CompoundValue) GetStyleable() *Styleable { + if x, ok := x.GetValue().(*CompoundValue_Styleable); ok { + return x.Styleable + } + return nil +} + +func (x *CompoundValue) GetArray() *Array { + if x, ok := x.GetValue().(*CompoundValue_Array); ok { + return x.Array + } + return nil +} + +func (x *CompoundValue) GetPlural() *Plural { + if x, ok := x.GetValue().(*CompoundValue_Plural); ok { + return x.Plural + } + return nil +} + +func (x *CompoundValue) GetMacro() *MacroBody { + if x, ok := x.GetValue().(*CompoundValue_Macro); ok { + return x.Macro + } + return nil +} + +type isCompoundValue_Value interface { + isCompoundValue_Value() +} + +type CompoundValue_Attr struct { + Attr *Attribute `protobuf:"bytes,1,opt,name=attr,proto3,oneof"` +} + +type CompoundValue_Style struct { + Style *Style `protobuf:"bytes,2,opt,name=style,proto3,oneof"` +} + +type CompoundValue_Styleable struct { + Styleable *Styleable `protobuf:"bytes,3,opt,name=styleable,proto3,oneof"` +} + +type CompoundValue_Array struct { + Array *Array `protobuf:"bytes,4,opt,name=array,proto3,oneof"` +} + +type CompoundValue_Plural struct { + Plural *Plural `protobuf:"bytes,5,opt,name=plural,proto3,oneof"` +} + +type CompoundValue_Macro struct { + Macro *MacroBody `protobuf:"bytes,6,opt,name=macro,proto3,oneof"` +} + +func (*CompoundValue_Attr) isCompoundValue_Value() {} + +func (*CompoundValue_Style) isCompoundValue_Value() {} + +func (*CompoundValue_Styleable) isCompoundValue_Value() {} + +func (*CompoundValue_Array) isCompoundValue_Value() {} + +func (*CompoundValue_Plural) isCompoundValue_Value() {} + +func (*CompoundValue_Macro) isCompoundValue_Value() {} + +// Message holding a boolean, so it can be optionally encoded. +type Boolean struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *Boolean) Reset() { + *x = Boolean{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Boolean) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Boolean) ProtoMessage() {} + +func (x *Boolean) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Boolean.ProtoReflect.Descriptor instead. +func (*Boolean) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{20} +} + +func (x *Boolean) GetValue() bool { + if x != nil { + return x.Value + } + return false +} + +// A value that is a reference to another resource. This reference can be by name or resource ID. +type Reference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type Reference_Type `protobuf:"varint,1,opt,name=type,proto3,enum=aapt.pb.Reference_Type" json:"type,omitempty"` + // The resource ID (0xPPTTEEEE) of the resource being referred. This is optional. + Id uint32 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` + // The name of the resource being referred. This is optional if the resource ID is set. + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // Whether this reference is referencing a private resource (@*package:type/entry). + Private bool `protobuf:"varint,4,opt,name=private,proto3" json:"private,omitempty"` + // Whether this reference is dynamic. + IsDynamic *Boolean `protobuf:"bytes,5,opt,name=is_dynamic,json=isDynamic,proto3" json:"is_dynamic,omitempty"` + // The type flags used when compiling the reference. Used for substituting the contents of macros. + TypeFlags uint32 `protobuf:"varint,6,opt,name=type_flags,json=typeFlags,proto3" json:"type_flags,omitempty"` + // Whether raw string values would have been accepted in place of this reference definition. Used + // for substituting the contents of macros. + AllowRaw bool `protobuf:"varint,7,opt,name=allow_raw,json=allowRaw,proto3" json:"allow_raw,omitempty"` +} + +func (x *Reference) Reset() { + *x = Reference{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Reference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Reference) ProtoMessage() {} + +func (x *Reference) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Reference.ProtoReflect.Descriptor instead. +func (*Reference) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{21} +} + +func (x *Reference) GetType() Reference_Type { + if x != nil { + return x.Type + } + return Reference_REFERENCE +} + +func (x *Reference) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Reference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Reference) GetPrivate() bool { + if x != nil { + return x.Private + } + return false +} + +func (x *Reference) GetIsDynamic() *Boolean { + if x != nil { + return x.IsDynamic + } + return nil +} + +func (x *Reference) GetTypeFlags() uint32 { + if x != nil { + return x.TypeFlags + } + return 0 +} + +func (x *Reference) GetAllowRaw() bool { + if x != nil { + return x.AllowRaw + } + return false +} + +// A value that represents an ID. This is just a placeholder, as ID values are used to occupy a +// resource ID (0xPPTTEEEE) as a unique identifier. Their value is unimportant. +type Id struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Id) Reset() { + *x = Id{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Id) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Id) ProtoMessage() {} + +func (x *Id) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Id.ProtoReflect.Descriptor instead. +func (*Id) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{22} +} + +// A value that is a string. +type String struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *String) Reset() { + *x = String{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *String) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*String) ProtoMessage() {} + +func (x *String) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use String.ProtoReflect.Descriptor instead. +func (*String) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{23} +} + +func (x *String) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +// A value that is a raw string, which is unescaped/uninterpreted. This is typically used to +// represent the value of a style attribute before the attribute is compiled and the set of +// allowed values is known. +type RawString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *RawString) Reset() { + *x = RawString{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RawString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RawString) ProtoMessage() {} + +func (x *RawString) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RawString.ProtoReflect.Descriptor instead. +func (*RawString) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{24} +} + +func (x *RawString) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +// A string with styling information, like html tags that specify boldness, italics, etc. +type StyledString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The raw text of the string. + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Span []*StyledString_Span `protobuf:"bytes,2,rep,name=span,proto3" json:"span,omitempty"` +} + +func (x *StyledString) Reset() { + *x = StyledString{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StyledString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StyledString) ProtoMessage() {} + +func (x *StyledString) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StyledString.ProtoReflect.Descriptor instead. +func (*StyledString) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{25} +} + +func (x *StyledString) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +func (x *StyledString) GetSpan() []*StyledString_Span { + if x != nil { + return x.Span + } + return nil +} + +// A value that is a reference to an external entity, like an XML file or a PNG. +type FileReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Path to a file within the APK (typically res/type-config/entry.ext). + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + // The type of file this path points to. For UAM bundle, this cannot be + // BINARY_XML. + Type FileReference_Type `protobuf:"varint,2,opt,name=type,proto3,enum=aapt.pb.FileReference_Type" json:"type,omitempty"` +} + +func (x *FileReference) Reset() { + *x = FileReference{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileReference) ProtoMessage() {} + +func (x *FileReference) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileReference.ProtoReflect.Descriptor instead. +func (*FileReference) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{26} +} + +func (x *FileReference) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *FileReference) GetType() FileReference_Type { + if x != nil { + return x.Type + } + return FileReference_UNKNOWN +} + +// A value that represents a primitive data type (float, int, boolean, etc.). +// Refer to Res_value in ResourceTypes.h for info on types and formatting +type Primitive struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to OneofValue: + // *Primitive_NullValue + // *Primitive_EmptyValue + // *Primitive_FloatValue + // *Primitive_DimensionValue + // *Primitive_FractionValue + // *Primitive_IntDecimalValue + // *Primitive_IntHexadecimalValue + // *Primitive_BooleanValue + // *Primitive_ColorArgb8Value + // *Primitive_ColorRgb8Value + // *Primitive_ColorArgb4Value + // *Primitive_ColorRgb4Value + // *Primitive_DimensionValueDeprecated + // *Primitive_FractionValueDeprecated + OneofValue isPrimitive_OneofValue `protobuf_oneof:"oneof_value"` +} + +func (x *Primitive) Reset() { + *x = Primitive{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Primitive) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Primitive) ProtoMessage() {} + +func (x *Primitive) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Primitive.ProtoReflect.Descriptor instead. +func (*Primitive) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{27} +} + +func (m *Primitive) GetOneofValue() isPrimitive_OneofValue { + if m != nil { + return m.OneofValue + } + return nil +} + +func (x *Primitive) GetNullValue() *Primitive_NullType { + if x, ok := x.GetOneofValue().(*Primitive_NullValue); ok { + return x.NullValue + } + return nil +} + +func (x *Primitive) GetEmptyValue() *Primitive_EmptyType { + if x, ok := x.GetOneofValue().(*Primitive_EmptyValue); ok { + return x.EmptyValue + } + return nil +} + +func (x *Primitive) GetFloatValue() float32 { + if x, ok := x.GetOneofValue().(*Primitive_FloatValue); ok { + return x.FloatValue + } + return 0 +} + +func (x *Primitive) GetDimensionValue() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_DimensionValue); ok { + return x.DimensionValue + } + return 0 +} + +func (x *Primitive) GetFractionValue() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_FractionValue); ok { + return x.FractionValue + } + return 0 +} + +func (x *Primitive) GetIntDecimalValue() int32 { + if x, ok := x.GetOneofValue().(*Primitive_IntDecimalValue); ok { + return x.IntDecimalValue + } + return 0 +} + +func (x *Primitive) GetIntHexadecimalValue() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_IntHexadecimalValue); ok { + return x.IntHexadecimalValue + } + return 0 +} + +func (x *Primitive) GetBooleanValue() bool { + if x, ok := x.GetOneofValue().(*Primitive_BooleanValue); ok { + return x.BooleanValue + } + return false +} + +func (x *Primitive) GetColorArgb8Value() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_ColorArgb8Value); ok { + return x.ColorArgb8Value + } + return 0 +} + +func (x *Primitive) GetColorRgb8Value() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_ColorRgb8Value); ok { + return x.ColorRgb8Value + } + return 0 +} + +func (x *Primitive) GetColorArgb4Value() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_ColorArgb4Value); ok { + return x.ColorArgb4Value + } + return 0 +} + +func (x *Primitive) GetColorRgb4Value() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_ColorRgb4Value); ok { + return x.ColorRgb4Value + } + return 0 +} + +// Deprecated: Do not use. +func (x *Primitive) GetDimensionValueDeprecated() float32 { + if x, ok := x.GetOneofValue().(*Primitive_DimensionValueDeprecated); ok { + return x.DimensionValueDeprecated + } + return 0 +} + +// Deprecated: Do not use. +func (x *Primitive) GetFractionValueDeprecated() float32 { + if x, ok := x.GetOneofValue().(*Primitive_FractionValueDeprecated); ok { + return x.FractionValueDeprecated + } + return 0 +} + +type isPrimitive_OneofValue interface { + isPrimitive_OneofValue() +} + +type Primitive_NullValue struct { + NullValue *Primitive_NullType `protobuf:"bytes,1,opt,name=null_value,json=nullValue,proto3,oneof"` +} + +type Primitive_EmptyValue struct { + EmptyValue *Primitive_EmptyType `protobuf:"bytes,2,opt,name=empty_value,json=emptyValue,proto3,oneof"` +} + +type Primitive_FloatValue struct { + FloatValue float32 `protobuf:"fixed32,3,opt,name=float_value,json=floatValue,proto3,oneof"` +} + +type Primitive_DimensionValue struct { + DimensionValue uint32 `protobuf:"varint,13,opt,name=dimension_value,json=dimensionValue,proto3,oneof"` +} + +type Primitive_FractionValue struct { + FractionValue uint32 `protobuf:"varint,14,opt,name=fraction_value,json=fractionValue,proto3,oneof"` +} + +type Primitive_IntDecimalValue struct { + IntDecimalValue int32 `protobuf:"varint,6,opt,name=int_decimal_value,json=intDecimalValue,proto3,oneof"` +} + +type Primitive_IntHexadecimalValue struct { + IntHexadecimalValue uint32 `protobuf:"varint,7,opt,name=int_hexadecimal_value,json=intHexadecimalValue,proto3,oneof"` +} + +type Primitive_BooleanValue struct { + BooleanValue bool `protobuf:"varint,8,opt,name=boolean_value,json=booleanValue,proto3,oneof"` +} + +type Primitive_ColorArgb8Value struct { + ColorArgb8Value uint32 `protobuf:"varint,9,opt,name=color_argb8_value,json=colorArgb8Value,proto3,oneof"` +} + +type Primitive_ColorRgb8Value struct { + ColorRgb8Value uint32 `protobuf:"varint,10,opt,name=color_rgb8_value,json=colorRgb8Value,proto3,oneof"` +} + +type Primitive_ColorArgb4Value struct { + ColorArgb4Value uint32 `protobuf:"varint,11,opt,name=color_argb4_value,json=colorArgb4Value,proto3,oneof"` +} + +type Primitive_ColorRgb4Value struct { + ColorRgb4Value uint32 `protobuf:"varint,12,opt,name=color_rgb4_value,json=colorRgb4Value,proto3,oneof"` +} + +type Primitive_DimensionValueDeprecated struct { + // Deprecated: Do not use. + DimensionValueDeprecated float32 `protobuf:"fixed32,4,opt,name=dimension_value_deprecated,json=dimensionValueDeprecated,proto3,oneof"` +} + +type Primitive_FractionValueDeprecated struct { + // Deprecated: Do not use. + FractionValueDeprecated float32 `protobuf:"fixed32,5,opt,name=fraction_value_deprecated,json=fractionValueDeprecated,proto3,oneof"` +} + +func (*Primitive_NullValue) isPrimitive_OneofValue() {} + +func (*Primitive_EmptyValue) isPrimitive_OneofValue() {} + +func (*Primitive_FloatValue) isPrimitive_OneofValue() {} + +func (*Primitive_DimensionValue) isPrimitive_OneofValue() {} + +func (*Primitive_FractionValue) isPrimitive_OneofValue() {} + +func (*Primitive_IntDecimalValue) isPrimitive_OneofValue() {} + +func (*Primitive_IntHexadecimalValue) isPrimitive_OneofValue() {} + +func (*Primitive_BooleanValue) isPrimitive_OneofValue() {} + +func (*Primitive_ColorArgb8Value) isPrimitive_OneofValue() {} + +func (*Primitive_ColorRgb8Value) isPrimitive_OneofValue() {} + +func (*Primitive_ColorArgb4Value) isPrimitive_OneofValue() {} + +func (*Primitive_ColorRgb4Value) isPrimitive_OneofValue() {} + +func (*Primitive_DimensionValueDeprecated) isPrimitive_OneofValue() {} + +func (*Primitive_FractionValueDeprecated) isPrimitive_OneofValue() {} + +// A value that represents an XML attribute and what values it accepts. +type Attribute struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A bitmask of types that this XML attribute accepts. Corresponds to the flags in the + // enum FormatFlags. + FormatFlags uint32 `protobuf:"varint,1,opt,name=format_flags,json=formatFlags,proto3" json:"format_flags,omitempty"` + // The smallest integer allowed for this XML attribute. Only makes sense if the format includes + // FormatFlags::INTEGER. + MinInt int32 `protobuf:"varint,2,opt,name=min_int,json=minInt,proto3" json:"min_int,omitempty"` + // The largest integer allowed for this XML attribute. Only makes sense if the format includes + // FormatFlags::INTEGER. + MaxInt int32 `protobuf:"varint,3,opt,name=max_int,json=maxInt,proto3" json:"max_int,omitempty"` + // The set of enums/flags defined in this attribute. Only makes sense if the format includes + // either FormatFlags::ENUM or FormatFlags::FLAGS. Having both is an error. + Symbol []*Attribute_Symbol `protobuf:"bytes,4,rep,name=symbol,proto3" json:"symbol,omitempty"` +} + +func (x *Attribute) Reset() { + *x = Attribute{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Attribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Attribute) ProtoMessage() {} + +func (x *Attribute) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Attribute.ProtoReflect.Descriptor instead. +func (*Attribute) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{28} +} + +func (x *Attribute) GetFormatFlags() uint32 { + if x != nil { + return x.FormatFlags + } + return 0 +} + +func (x *Attribute) GetMinInt() int32 { + if x != nil { + return x.MinInt + } + return 0 +} + +func (x *Attribute) GetMaxInt() int32 { + if x != nil { + return x.MaxInt + } + return 0 +} + +func (x *Attribute) GetSymbol() []*Attribute_Symbol { + if x != nil { + return x.Symbol + } + return nil +} + +// A value that represents a style. +type Style struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The optinal style from which this style inherits attributes. + Parent *Reference `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // The source file information of the parent inheritance declaration. + ParentSource *Source `protobuf:"bytes,2,opt,name=parent_source,json=parentSource,proto3" json:"parent_source,omitempty"` + // The set of XML attribute/value pairs for this style. + Entry []*Style_Entry `protobuf:"bytes,3,rep,name=entry,proto3" json:"entry,omitempty"` +} + +func (x *Style) Reset() { + *x = Style{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Style) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Style) ProtoMessage() {} + +func (x *Style) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Style.ProtoReflect.Descriptor instead. +func (*Style) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{29} +} + +func (x *Style) GetParent() *Reference { + if x != nil { + return x.Parent + } + return nil +} + +func (x *Style) GetParentSource() *Source { + if x != nil { + return x.ParentSource + } + return nil +} + +func (x *Style) GetEntry() []*Style_Entry { + if x != nil { + return x.Entry + } + return nil +} + +// A value that represents a XML resource. These are not real resources and +// only end up as Java fields in the generated R.java. They do not end up in the binary ARSC file. +type Styleable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The set of attribute declarations. + Entry []*Styleable_Entry `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"` +} + +func (x *Styleable) Reset() { + *x = Styleable{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Styleable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Styleable) ProtoMessage() {} + +func (x *Styleable) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Styleable.ProtoReflect.Descriptor instead. +func (*Styleable) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{30} +} + +func (x *Styleable) GetEntry() []*Styleable_Entry { + if x != nil { + return x.Entry + } + return nil +} + +// A value that represents an array of resource values. +type Array struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of array elements. + Element []*Array_Element `protobuf:"bytes,1,rep,name=element,proto3" json:"element,omitempty"` +} + +func (x *Array) Reset() { + *x = Array{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Array) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Array) ProtoMessage() {} + +func (x *Array) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Array.ProtoReflect.Descriptor instead. +func (*Array) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{31} +} + +func (x *Array) GetElement() []*Array_Element { + if x != nil { + return x.Element + } + return nil +} + +// A value that represents a string and its many variations based on plurality. +type Plural struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The set of arity/plural mappings. + Entry []*Plural_Entry `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"` +} + +func (x *Plural) Reset() { + *x = Plural{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Plural) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Plural) ProtoMessage() {} + +func (x *Plural) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Plural.ProtoReflect.Descriptor instead. +func (*Plural) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{32} +} + +func (x *Plural) GetEntry() []*Plural_Entry { + if x != nil { + return x.Entry + } + return nil +} + +// Defines an abstract XmlNode that must be either an XmlElement, or +// a text node represented by a string. +type XmlNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Node: + // *XmlNode_Element + // *XmlNode_Text + Node isXmlNode_Node `protobuf_oneof:"node"` + // Source line and column info. + Source *SourcePosition `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` +} + +func (x *XmlNode) Reset() { + *x = XmlNode{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XmlNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlNode) ProtoMessage() {} + +func (x *XmlNode) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlNode.ProtoReflect.Descriptor instead. +func (*XmlNode) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{33} +} + +func (m *XmlNode) GetNode() isXmlNode_Node { + if m != nil { + return m.Node + } + return nil +} + +func (x *XmlNode) GetElement() *XmlElement { + if x, ok := x.GetNode().(*XmlNode_Element); ok { + return x.Element + } + return nil +} + +func (x *XmlNode) GetText() string { + if x, ok := x.GetNode().(*XmlNode_Text); ok { + return x.Text + } + return "" +} + +func (x *XmlNode) GetSource() *SourcePosition { + if x != nil { + return x.Source + } + return nil +} + +type isXmlNode_Node interface { + isXmlNode_Node() +} + +type XmlNode_Element struct { + Element *XmlElement `protobuf:"bytes,1,opt,name=element,proto3,oneof"` +} + +type XmlNode_Text struct { + Text string `protobuf:"bytes,2,opt,name=text,proto3,oneof"` +} + +func (*XmlNode_Element) isXmlNode_Node() {} + +func (*XmlNode_Text) isXmlNode_Node() {} + +// An in an XML document. +type XmlElement struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Namespaces defined on this element. + NamespaceDeclaration []*XmlNamespace `protobuf:"bytes,1,rep,name=namespace_declaration,json=namespaceDeclaration,proto3" json:"namespace_declaration,omitempty"` + // The namespace URI of this element. + NamespaceUri string `protobuf:"bytes,2,opt,name=namespace_uri,json=namespaceUri,proto3" json:"namespace_uri,omitempty"` + // The name of this element. + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // The attributes of this element. + Attribute []*XmlAttribute `protobuf:"bytes,4,rep,name=attribute,proto3" json:"attribute,omitempty"` + // The children of this element. + Child []*XmlNode `protobuf:"bytes,5,rep,name=child,proto3" json:"child,omitempty"` +} + +func (x *XmlElement) Reset() { + *x = XmlElement{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XmlElement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlElement) ProtoMessage() {} + +func (x *XmlElement) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlElement.ProtoReflect.Descriptor instead. +func (*XmlElement) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{34} +} + +func (x *XmlElement) GetNamespaceDeclaration() []*XmlNamespace { + if x != nil { + return x.NamespaceDeclaration + } + return nil +} + +func (x *XmlElement) GetNamespaceUri() string { + if x != nil { + return x.NamespaceUri + } + return "" +} + +func (x *XmlElement) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *XmlElement) GetAttribute() []*XmlAttribute { + if x != nil { + return x.Attribute + } + return nil +} + +func (x *XmlElement) GetChild() []*XmlNode { + if x != nil { + return x.Child + } + return nil +} + +// A namespace declaration on an XmlElement (xmlns:android="http://..."). +type XmlNamespace struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` + Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` + // Source line and column info. + Source *SourcePosition `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` +} + +func (x *XmlNamespace) Reset() { + *x = XmlNamespace{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XmlNamespace) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlNamespace) ProtoMessage() {} + +func (x *XmlNamespace) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlNamespace.ProtoReflect.Descriptor instead. +func (*XmlNamespace) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{35} +} + +func (x *XmlNamespace) GetPrefix() string { + if x != nil { + return x.Prefix + } + return "" +} + +func (x *XmlNamespace) GetUri() string { + if x != nil { + return x.Uri + } + return "" +} + +func (x *XmlNamespace) GetSource() *SourcePosition { + if x != nil { + return x.Source + } + return nil +} + +// An attribute defined on an XmlElement (android:text="..."). +type XmlAttribute struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NamespaceUri string `protobuf:"bytes,1,opt,name=namespace_uri,json=namespaceUri,proto3" json:"namespace_uri,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + // Source line and column info. + Source *SourcePosition `protobuf:"bytes,4,opt,name=source,proto3" json:"source,omitempty"` + // The optional resource ID (0xPPTTEEEE) of the attribute. + ResourceId uint32 `protobuf:"varint,5,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"` + // The optional interpreted/compiled version of the `value` string. + CompiledItem *Item `protobuf:"bytes,6,opt,name=compiled_item,json=compiledItem,proto3" json:"compiled_item,omitempty"` +} + +func (x *XmlAttribute) Reset() { + *x = XmlAttribute{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XmlAttribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlAttribute) ProtoMessage() {} + +func (x *XmlAttribute) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlAttribute.ProtoReflect.Descriptor instead. +func (*XmlAttribute) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{36} +} + +func (x *XmlAttribute) GetNamespaceUri() string { + if x != nil { + return x.NamespaceUri + } + return "" +} + +func (x *XmlAttribute) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *XmlAttribute) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +func (x *XmlAttribute) GetSource() *SourcePosition { + if x != nil { + return x.Source + } + return nil +} + +func (x *XmlAttribute) GetResourceId() uint32 { + if x != nil { + return x.ResourceId + } + return 0 +} + +func (x *XmlAttribute) GetCompiledItem() *Item { + if x != nil { + return x.CompiledItem + } + return nil +} + +type MacroBody struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RawString string `protobuf:"bytes,1,opt,name=raw_string,json=rawString,proto3" json:"raw_string,omitempty"` + StyleString *StyleString `protobuf:"bytes,2,opt,name=style_string,json=styleString,proto3" json:"style_string,omitempty"` + UntranslatableSections []*UntranslatableSection `protobuf:"bytes,3,rep,name=untranslatable_sections,json=untranslatableSections,proto3" json:"untranslatable_sections,omitempty"` + NamespaceStack []*NamespaceAlias `protobuf:"bytes,4,rep,name=namespace_stack,json=namespaceStack,proto3" json:"namespace_stack,omitempty"` + Source *SourcePosition `protobuf:"bytes,5,opt,name=source,proto3" json:"source,omitempty"` +} + +func (x *MacroBody) Reset() { + *x = MacroBody{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MacroBody) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MacroBody) ProtoMessage() {} + +func (x *MacroBody) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MacroBody.ProtoReflect.Descriptor instead. +func (*MacroBody) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{37} +} + +func (x *MacroBody) GetRawString() string { + if x != nil { + return x.RawString + } + return "" +} + +func (x *MacroBody) GetStyleString() *StyleString { + if x != nil { + return x.StyleString + } + return nil +} + +func (x *MacroBody) GetUntranslatableSections() []*UntranslatableSection { + if x != nil { + return x.UntranslatableSections + } + return nil +} + +func (x *MacroBody) GetNamespaceStack() []*NamespaceAlias { + if x != nil { + return x.NamespaceStack + } + return nil +} + +func (x *MacroBody) GetSource() *SourcePosition { + if x != nil { + return x.Source + } + return nil +} + +type NamespaceAlias struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` + PackageName string `protobuf:"bytes,2,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + IsPrivate bool `protobuf:"varint,3,opt,name=is_private,json=isPrivate,proto3" json:"is_private,omitempty"` +} + +func (x *NamespaceAlias) Reset() { + *x = NamespaceAlias{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamespaceAlias) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamespaceAlias) ProtoMessage() {} + +func (x *NamespaceAlias) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamespaceAlias.ProtoReflect.Descriptor instead. +func (*NamespaceAlias) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{38} +} + +func (x *NamespaceAlias) GetPrefix() string { + if x != nil { + return x.Prefix + } + return "" +} + +func (x *NamespaceAlias) GetPackageName() string { + if x != nil { + return x.PackageName + } + return "" +} + +func (x *NamespaceAlias) GetIsPrivate() bool { + if x != nil { + return x.IsPrivate + } + return false +} + +type StyleString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Str string `protobuf:"bytes,1,opt,name=str,proto3" json:"str,omitempty"` + Spans []*StyleString_Span `protobuf:"bytes,2,rep,name=spans,proto3" json:"spans,omitempty"` +} + +func (x *StyleString) Reset() { + *x = StyleString{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StyleString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StyleString) ProtoMessage() {} + +func (x *StyleString) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StyleString.ProtoReflect.Descriptor instead. +func (*StyleString) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{39} +} + +func (x *StyleString) GetStr() string { + if x != nil { + return x.Str + } + return "" +} + +func (x *StyleString) GetSpans() []*StyleString_Span { + if x != nil { + return x.Spans + } + return nil +} + +type UntranslatableSection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StartIndex uint64 `protobuf:"varint,1,opt,name=start_index,json=startIndex,proto3" json:"start_index,omitempty"` + EndIndex uint64 `protobuf:"varint,2,opt,name=end_index,json=endIndex,proto3" json:"end_index,omitempty"` +} + +func (x *UntranslatableSection) Reset() { + *x = UntranslatableSection{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UntranslatableSection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UntranslatableSection) ProtoMessage() {} + +func (x *UntranslatableSection) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UntranslatableSection.ProtoReflect.Descriptor instead. +func (*UntranslatableSection) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{40} +} + +func (x *UntranslatableSection) GetStartIndex() uint64 { + if x != nil { + return x.StartIndex + } + return 0 +} + +func (x *UntranslatableSection) GetEndIndex() uint64 { + if x != nil { + return x.EndIndex + } + return 0 +} + +// A Span marks a region of the string text that is styled. +type StyledString_Span struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the tag, and its attributes, encoded as follows: + // tag_name;attr1=value1;attr2=value2;[...] + Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` + // The first character position this span applies to, in UTF-16 offset. + FirstChar uint32 `protobuf:"varint,2,opt,name=first_char,json=firstChar,proto3" json:"first_char,omitempty"` + // The last character position this span applies to, in UTF-16 offset. + LastChar uint32 `protobuf:"varint,3,opt,name=last_char,json=lastChar,proto3" json:"last_char,omitempty"` +} + +func (x *StyledString_Span) Reset() { + *x = StyledString_Span{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StyledString_Span) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StyledString_Span) ProtoMessage() {} + +func (x *StyledString_Span) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StyledString_Span.ProtoReflect.Descriptor instead. +func (*StyledString_Span) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{25, 0} +} + +func (x *StyledString_Span) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *StyledString_Span) GetFirstChar() uint32 { + if x != nil { + return x.FirstChar + } + return 0 +} + +func (x *StyledString_Span) GetLastChar() uint32 { + if x != nil { + return x.LastChar + } + return 0 +} + +type Primitive_NullType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Primitive_NullType) Reset() { + *x = Primitive_NullType{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Primitive_NullType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Primitive_NullType) ProtoMessage() {} + +func (x *Primitive_NullType) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Primitive_NullType.ProtoReflect.Descriptor instead. +func (*Primitive_NullType) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{27, 0} +} + +type Primitive_EmptyType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Primitive_EmptyType) Reset() { + *x = Primitive_EmptyType{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Primitive_EmptyType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Primitive_EmptyType) ProtoMessage() {} + +func (x *Primitive_EmptyType) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Primitive_EmptyType.ProtoReflect.Descriptor instead. +func (*Primitive_EmptyType) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{27, 1} +} + +// A Symbol used to represent an enum or a flag. +type Attribute_Symbol struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the enum/flag item was defined. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comments associated with the enum or flag. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // The name of the enum/flag as a reference. Enums/flag items are generated as ID resource + // values. + Name *Reference `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // The value of the enum/flag. + Value uint32 `protobuf:"varint,4,opt,name=value,proto3" json:"value,omitempty"` + // The data type of the enum/flag as defined in android::Res_value. + Type uint32 `protobuf:"varint,5,opt,name=type,proto3" json:"type,omitempty"` +} + +func (x *Attribute_Symbol) Reset() { + *x = Attribute_Symbol{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Attribute_Symbol) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Attribute_Symbol) ProtoMessage() {} + +func (x *Attribute_Symbol) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Attribute_Symbol.ProtoReflect.Descriptor instead. +func (*Attribute_Symbol) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{28, 0} +} + +func (x *Attribute_Symbol) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Attribute_Symbol) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Attribute_Symbol) GetName() *Reference { + if x != nil { + return x.Name + } + return nil +} + +func (x *Attribute_Symbol) GetValue() uint32 { + if x != nil { + return x.Value + } + return 0 +} + +func (x *Attribute_Symbol) GetType() uint32 { + if x != nil { + return x.Type + } + return 0 +} + +// An XML attribute/value pair defined in the style. +type Style_Entry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the entry was defined. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comments associated with the entry. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // A reference to the XML attribute. + Key *Reference `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + // The Item defined for this XML attribute. + Item *Item `protobuf:"bytes,4,opt,name=item,proto3" json:"item,omitempty"` +} + +func (x *Style_Entry) Reset() { + *x = Style_Entry{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Style_Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Style_Entry) ProtoMessage() {} + +func (x *Style_Entry) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Style_Entry.ProtoReflect.Descriptor instead. +func (*Style_Entry) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{29, 0} +} + +func (x *Style_Entry) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Style_Entry) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Style_Entry) GetKey() *Reference { + if x != nil { + return x.Key + } + return nil +} + +func (x *Style_Entry) GetItem() *Item { + if x != nil { + return x.Item + } + return nil +} + +// An attribute defined for this styleable. +type Styleable_Entry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the attribute was defined within the block. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comments associated with the declaration. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // The reference to the attribute. + Attr *Reference `protobuf:"bytes,3,opt,name=attr,proto3" json:"attr,omitempty"` +} + +func (x *Styleable_Entry) Reset() { + *x = Styleable_Entry{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Styleable_Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Styleable_Entry) ProtoMessage() {} + +func (x *Styleable_Entry) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Styleable_Entry.ProtoReflect.Descriptor instead. +func (*Styleable_Entry) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{30, 0} +} + +func (x *Styleable_Entry) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Styleable_Entry) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Styleable_Entry) GetAttr() *Reference { + if x != nil { + return x.Attr + } + return nil +} + +// A single element of the array. +type Array_Element struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the element was defined. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comments associated with the element. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // The value assigned to this element. + Item *Item `protobuf:"bytes,3,opt,name=item,proto3" json:"item,omitempty"` +} + +func (x *Array_Element) Reset() { + *x = Array_Element{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Array_Element) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Array_Element) ProtoMessage() {} + +func (x *Array_Element) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Array_Element.ProtoReflect.Descriptor instead. +func (*Array_Element) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{31, 0} +} + +func (x *Array_Element) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Array_Element) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Array_Element) GetItem() *Item { + if x != nil { + return x.Item + } + return nil +} + +// The plural value for a given arity. +type Plural_Entry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the plural was defined. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comments associated with the plural. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // The arity of the plural. + Arity Plural_Arity `protobuf:"varint,3,opt,name=arity,proto3,enum=aapt.pb.Plural_Arity" json:"arity,omitempty"` + // The value assigned to this plural. + Item *Item `protobuf:"bytes,4,opt,name=item,proto3" json:"item,omitempty"` +} + +func (x *Plural_Entry) Reset() { + *x = Plural_Entry{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Plural_Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Plural_Entry) ProtoMessage() {} + +func (x *Plural_Entry) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Plural_Entry.ProtoReflect.Descriptor instead. +func (*Plural_Entry) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{32, 0} +} + +func (x *Plural_Entry) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Plural_Entry) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Plural_Entry) GetArity() Plural_Arity { + if x != nil { + return x.Arity + } + return Plural_ZERO +} + +func (x *Plural_Entry) GetItem() *Item { + if x != nil { + return x.Item + } + return nil +} + +type StyleString_Span struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + StartIndex uint32 `protobuf:"varint,2,opt,name=start_index,json=startIndex,proto3" json:"start_index,omitempty"` + EndIndex uint32 `protobuf:"varint,3,opt,name=end_index,json=endIndex,proto3" json:"end_index,omitempty"` +} + +func (x *StyleString_Span) Reset() { + *x = StyleString_Span{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StyleString_Span) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StyleString_Span) ProtoMessage() {} + +func (x *StyleString_Span) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StyleString_Span.ProtoReflect.Descriptor instead. +func (*StyleString_Span) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{39, 0} +} + +func (x *StyleString_Span) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *StyleString_Span) GetStartIndex() uint32 { + if x != nil { + return x.StartIndex + } + return 0 +} + +func (x *StyleString_Span) GetEndIndex() uint32 { + if x != nil { + return x.EndIndex + } + return 0 +} + +var File_Resources_proto protoreflect.FileDescriptor + +var file_Resources_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x07, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x1a, 0x13, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x20, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x56, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x58, 0x0a, 0x06, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, 0x78, 0x12, 0x33, + 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x0f, 0x54, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6e, 0x67, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x6f, 0x6f, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x6f, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xee, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6f, 0x6c, + 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2a, 0x0a, 0x07, + 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, + 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x6f, 0x76, 0x65, 0x72, + 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x0b, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x43, 0x0a, 0x10, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x52, 0x0f, 0x74, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x22, 0x1b, 0x0a, 0x09, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x82, 0x01, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x31, + 0x0a, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x49, 0x64, 0x52, 0x09, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x18, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x6a, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x52, 0x06, 0x74, 0x79, 0x70, + 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xce, 0x01, + 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x05, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x2e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x27, 0x0a, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x69, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x69, 0x22, + 0x2d, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, + 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x02, 0x22, 0x4d, + 0x0a, 0x08, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x4e, 0x65, 0x77, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x60, 0x0a, + 0x0b, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, + 0xbe, 0x02, 0x0a, 0x0f, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, + 0x27, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, + 0x79, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x78, 0x22, 0x85, 0x01, 0x0a, 0x06, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, + 0x06, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x59, 0x53, + 0x54, 0x45, 0x4d, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x45, 0x4e, 0x44, 0x4f, 0x52, 0x10, + 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x44, 0x55, 0x43, 0x54, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x05, 0x12, 0x07, 0x0a, + 0x03, 0x4f, 0x44, 0x4d, 0x10, 0x06, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x45, 0x4d, 0x10, 0x07, 0x12, + 0x09, 0x0a, 0x05, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, + 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x09, + 0x22, 0x50, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, + 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, + 0x49, 0x64, 0x22, 0x19, 0x0a, 0x07, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0xdb, 0x02, + 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2b, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x61, 0x70, 0x74, + 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x64, 0x52, 0x07, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, + 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2e, 0x0a, + 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x65, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x4e, 0x65, 0x77, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4e, 0x65, 0x77, 0x12, 0x43, 0x0a, + 0x10, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x74, 0x65, + 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x37, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x49, + 0x64, 0x52, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x49, 0x64, 0x22, 0x63, 0x0a, 0x0b, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x61, 0x70, 0x74, + 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0xcd, 0x01, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x77, 0x65, 0x61, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x77, 0x65, 0x61, + 0x6b, 0x12, 0x23, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, + 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x3f, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, + 0x6e, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, + 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, + 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0xba, 0x02, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x03, 0x72, 0x65, 0x66, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x03, 0x72, 0x65, + 0x66, 0x12, 0x23, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x48, + 0x00, 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x2d, 0x0a, 0x07, 0x72, 0x61, 0x77, 0x5f, 0x73, 0x74, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x52, 0x61, 0x77, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x72, + 0x61, 0x77, 0x53, 0x74, 0x72, 0x12, 0x36, 0x0a, 0x0a, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x64, 0x5f, + 0x73, 0x74, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x61, 0x70, 0x74, + 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x72, 0x12, 0x2c, 0x0a, + 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x49, 0x64, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x72, + 0x69, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x48, 0x00, 0x52, 0x04, + 0x70, 0x72, 0x69, 0x6d, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9d, 0x02, + 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x28, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x48, 0x00, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0x26, 0x0a, 0x05, 0x73, 0x74, 0x79, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x74, 0x79, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x48, 0x00, 0x52, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, + 0x06, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x06, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x05, 0x6d, 0x61, 0x63, 0x72, + 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x48, 0x00, 0x52, 0x05, 0x6d, + 0x61, 0x63, 0x72, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x1f, 0x0a, + 0x07, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, + 0x02, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x52, 0x09, 0x69, + 0x73, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, + 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x79, + 0x70, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x5f, 0x72, 0x61, 0x77, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x52, 0x61, 0x77, 0x22, 0x24, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, + 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, + 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, 0x01, 0x22, 0x04, 0x0a, 0x02, 0x49, 0x64, + 0x22, 0x1e, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x21, 0x0a, 0x09, 0x52, 0x61, 0x77, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x64, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, + 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, + 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x1a, 0x54, 0x0a, 0x04, 0x53, 0x70, + 0x61, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x74, 0x61, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x63, 0x68, + 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x43, + 0x68, 0x61, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, + 0x22, 0x91, 0x01, 0x0a, 0x0d, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x46, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, + 0x50, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f, + 0x58, 0x4d, 0x4c, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x58, + 0x4d, 0x4c, 0x10, 0x03, 0x22, 0xee, 0x05, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x3f, 0x0a, 0x0b, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, + 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x29, 0x0a, 0x0f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, + 0x0e, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x27, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x72, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x5f, + 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, + 0x78, 0x61, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x13, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x78, 0x61, + 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, + 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x61, 0x72, 0x67, + 0x62, 0x38, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, + 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x41, 0x72, 0x67, 0x62, 0x38, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x38, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0e, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x67, 0x62, 0x38, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, + 0x11, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x61, 0x72, 0x67, 0x62, 0x34, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x41, 0x72, 0x67, 0x62, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x34, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x67, + 0x62, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x42, 0x0a, 0x1a, 0x64, 0x69, 0x6d, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x42, 0x02, 0x18, 0x01, 0x48, + 0x00, 0x52, 0x18, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x19, 0x66, + 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x42, 0x02, + 0x18, 0x01, 0x48, 0x00, 0x52, 0x17, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x1a, 0x0a, 0x0a, + 0x08, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x0b, 0x0a, 0x09, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xda, 0x03, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x74, 0x12, + 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x53, 0x79, 0x6d, + 0x62, 0x6f, 0x6c, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x1a, 0x9d, 0x01, 0x0a, 0x06, + 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x0b, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x08, 0x0a, 0x04, 0x4e, + 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x03, 0x41, 0x4e, 0x59, 0x10, 0xff, 0xff, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x49, + 0x4e, 0x54, 0x45, 0x47, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, + 0x45, 0x41, 0x4e, 0x10, 0x08, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x10, 0x10, + 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x20, 0x12, 0x0d, 0x0a, 0x09, 0x44, + 0x49, 0x4d, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x40, 0x12, 0x0d, 0x0a, 0x08, 0x46, 0x52, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x80, 0x01, 0x12, 0x0a, 0x0a, 0x04, 0x45, 0x4e, 0x55, + 0x4d, 0x10, 0x80, 0x80, 0x04, 0x12, 0x0b, 0x0a, 0x05, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x10, 0x80, + 0x80, 0x08, 0x22, 0xab, 0x02, 0x0a, 0x05, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, + 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2a, + 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0x93, 0x01, 0x0a, 0x05, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, + 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, + 0x22, 0xaf, 0x01, 0x0a, 0x09, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2e, + 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x61, 0x62, 0x6c, + 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0x72, + 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x61, 0x74, + 0x74, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x61, 0x74, + 0x74, 0x72, 0x22, 0xaa, 0x01, 0x0a, 0x05, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x30, 0x0a, 0x07, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x2e, 0x45, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x6f, + 0x0a, 0x07, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, + 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x04, + 0x69, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, + 0x95, 0x02, 0x0a, 0x06, 0x50, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x05, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x61, 0x70, 0x74, + 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0x9a, 0x01, 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, + 0x75, 0x72, 0x61, 0x6c, 0x2e, 0x41, 0x72, 0x69, 0x74, 0x79, 0x52, 0x05, 0x61, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x21, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, + 0x69, 0x74, 0x65, 0x6d, 0x22, 0x41, 0x0a, 0x05, 0x41, 0x72, 0x69, 0x74, 0x79, 0x12, 0x08, 0x0a, + 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10, 0x01, + 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x45, 0x57, + 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x41, 0x4e, 0x59, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, + 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x05, 0x22, 0x89, 0x01, 0x0a, 0x07, 0x58, 0x6d, 0x6c, 0x4e, + 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x58, + 0x6d, 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6e, + 0x6f, 0x64, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x0a, 0x58, 0x6d, 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x15, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x58, 0x6d, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x14, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, + 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x55, 0x72, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x58, 0x6d, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x05, + 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x58, 0x6d, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x63, + 0x68, 0x69, 0x6c, 0x64, 0x22, 0x69, 0x0a, 0x0c, 0x58, 0x6d, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x2f, + 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, + 0xe3, 0x01, 0x0a, 0x0c, 0x58, 0x6d, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x72, + 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x55, 0x72, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x2f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x32, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x69, 0x74, + 0x65, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, + 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xaf, 0x02, 0x0a, 0x09, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x42, + 0x6f, 0x64, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x61, 0x77, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x61, 0x77, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, + 0x73, 0x74, 0x79, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x17, 0x75, + 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, + 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x75, 0x6e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x6a, 0x0a, 0x0e, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x74, 0x79, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, + 0x05, 0x73, 0x70, 0x61, 0x6e, 0x73, 0x1a, 0x58, 0x0a, 0x04, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x22, 0x55, 0x0a, 0x15, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, + 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x65, + 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x2f, 0x3b, 0x6d, 0x61, + 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_Resources_proto_rawDescOnce sync.Once + file_Resources_proto_rawDescData = file_Resources_proto_rawDesc +) + +func file_Resources_proto_rawDescGZIP() []byte { + file_Resources_proto_rawDescOnce.Do(func() { + file_Resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_Resources_proto_rawDescData) + }) + return file_Resources_proto_rawDescData +} + +var file_Resources_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_Resources_proto_msgTypes = make([]protoimpl.MessageInfo, 50) +var file_Resources_proto_goTypes = []interface{}{ + (Visibility_Level)(0), // 0: aapt.pb.Visibility.Level + (OverlayableItem_Policy)(0), // 1: aapt.pb.OverlayableItem.Policy + (Reference_Type)(0), // 2: aapt.pb.Reference.Type + (FileReference_Type)(0), // 3: aapt.pb.FileReference.Type + (Attribute_FormatFlags)(0), // 4: aapt.pb.Attribute.FormatFlags + (Plural_Arity)(0), // 5: aapt.pb.Plural.Arity + (*StringPool)(nil), // 6: aapt.pb.StringPool + (*SourcePosition)(nil), // 7: aapt.pb.SourcePosition + (*Source)(nil), // 8: aapt.pb.Source + (*ToolFingerprint)(nil), // 9: aapt.pb.ToolFingerprint + (*ResourceTable)(nil), // 10: aapt.pb.ResourceTable + (*PackageId)(nil), // 11: aapt.pb.PackageId + (*Package)(nil), // 12: aapt.pb.Package + (*TypeId)(nil), // 13: aapt.pb.TypeId + (*Type)(nil), // 14: aapt.pb.Type + (*Visibility)(nil), // 15: aapt.pb.Visibility + (*AllowNew)(nil), // 16: aapt.pb.AllowNew + (*Overlayable)(nil), // 17: aapt.pb.Overlayable + (*OverlayableItem)(nil), // 18: aapt.pb.OverlayableItem + (*StagedId)(nil), // 19: aapt.pb.StagedId + (*EntryId)(nil), // 20: aapt.pb.EntryId + (*Entry)(nil), // 21: aapt.pb.Entry + (*ConfigValue)(nil), // 22: aapt.pb.ConfigValue + (*Value)(nil), // 23: aapt.pb.Value + (*Item)(nil), // 24: aapt.pb.Item + (*CompoundValue)(nil), // 25: aapt.pb.CompoundValue + (*Boolean)(nil), // 26: aapt.pb.Boolean + (*Reference)(nil), // 27: aapt.pb.Reference + (*Id)(nil), // 28: aapt.pb.Id + (*String)(nil), // 29: aapt.pb.String + (*RawString)(nil), // 30: aapt.pb.RawString + (*StyledString)(nil), // 31: aapt.pb.StyledString + (*FileReference)(nil), // 32: aapt.pb.FileReference + (*Primitive)(nil), // 33: aapt.pb.Primitive + (*Attribute)(nil), // 34: aapt.pb.Attribute + (*Style)(nil), // 35: aapt.pb.Style + (*Styleable)(nil), // 36: aapt.pb.Styleable + (*Array)(nil), // 37: aapt.pb.Array + (*Plural)(nil), // 38: aapt.pb.Plural + (*XmlNode)(nil), // 39: aapt.pb.XmlNode + (*XmlElement)(nil), // 40: aapt.pb.XmlElement + (*XmlNamespace)(nil), // 41: aapt.pb.XmlNamespace + (*XmlAttribute)(nil), // 42: aapt.pb.XmlAttribute + (*MacroBody)(nil), // 43: aapt.pb.MacroBody + (*NamespaceAlias)(nil), // 44: aapt.pb.NamespaceAlias + (*StyleString)(nil), // 45: aapt.pb.StyleString + (*UntranslatableSection)(nil), // 46: aapt.pb.UntranslatableSection + (*StyledString_Span)(nil), // 47: aapt.pb.StyledString.Span + (*Primitive_NullType)(nil), // 48: aapt.pb.Primitive.NullType + (*Primitive_EmptyType)(nil), // 49: aapt.pb.Primitive.EmptyType + (*Attribute_Symbol)(nil), // 50: aapt.pb.Attribute.Symbol + (*Style_Entry)(nil), // 51: aapt.pb.Style.Entry + (*Styleable_Entry)(nil), // 52: aapt.pb.Styleable.Entry + (*Array_Element)(nil), // 53: aapt.pb.Array.Element + (*Plural_Entry)(nil), // 54: aapt.pb.Plural.Entry + (*StyleString_Span)(nil), // 55: aapt.pb.StyleString.Span + (*Configuration)(nil), // 56: aapt.pb.Configuration +} +var file_Resources_proto_depIdxs = []int32{ + 7, // 0: aapt.pb.Source.position:type_name -> aapt.pb.SourcePosition + 6, // 1: aapt.pb.ResourceTable.source_pool:type_name -> aapt.pb.StringPool + 12, // 2: aapt.pb.ResourceTable.package:type_name -> aapt.pb.Package + 17, // 3: aapt.pb.ResourceTable.overlayable:type_name -> aapt.pb.Overlayable + 9, // 4: aapt.pb.ResourceTable.tool_fingerprint:type_name -> aapt.pb.ToolFingerprint + 11, // 5: aapt.pb.Package.package_id:type_name -> aapt.pb.PackageId + 14, // 6: aapt.pb.Package.type:type_name -> aapt.pb.Type + 13, // 7: aapt.pb.Type.type_id:type_name -> aapt.pb.TypeId + 21, // 8: aapt.pb.Type.entry:type_name -> aapt.pb.Entry + 0, // 9: aapt.pb.Visibility.level:type_name -> aapt.pb.Visibility.Level + 8, // 10: aapt.pb.Visibility.source:type_name -> aapt.pb.Source + 8, // 11: aapt.pb.AllowNew.source:type_name -> aapt.pb.Source + 8, // 12: aapt.pb.Overlayable.source:type_name -> aapt.pb.Source + 8, // 13: aapt.pb.OverlayableItem.source:type_name -> aapt.pb.Source + 1, // 14: aapt.pb.OverlayableItem.policy:type_name -> aapt.pb.OverlayableItem.Policy + 8, // 15: aapt.pb.StagedId.source:type_name -> aapt.pb.Source + 20, // 16: aapt.pb.Entry.entry_id:type_name -> aapt.pb.EntryId + 15, // 17: aapt.pb.Entry.visibility:type_name -> aapt.pb.Visibility + 16, // 18: aapt.pb.Entry.allow_new:type_name -> aapt.pb.AllowNew + 18, // 19: aapt.pb.Entry.overlayable_item:type_name -> aapt.pb.OverlayableItem + 22, // 20: aapt.pb.Entry.config_value:type_name -> aapt.pb.ConfigValue + 19, // 21: aapt.pb.Entry.staged_id:type_name -> aapt.pb.StagedId + 56, // 22: aapt.pb.ConfigValue.config:type_name -> aapt.pb.Configuration + 23, // 23: aapt.pb.ConfigValue.value:type_name -> aapt.pb.Value + 8, // 24: aapt.pb.Value.source:type_name -> aapt.pb.Source + 24, // 25: aapt.pb.Value.item:type_name -> aapt.pb.Item + 25, // 26: aapt.pb.Value.compound_value:type_name -> aapt.pb.CompoundValue + 27, // 27: aapt.pb.Item.ref:type_name -> aapt.pb.Reference + 29, // 28: aapt.pb.Item.str:type_name -> aapt.pb.String + 30, // 29: aapt.pb.Item.raw_str:type_name -> aapt.pb.RawString + 31, // 30: aapt.pb.Item.styled_str:type_name -> aapt.pb.StyledString + 32, // 31: aapt.pb.Item.file:type_name -> aapt.pb.FileReference + 28, // 32: aapt.pb.Item.id:type_name -> aapt.pb.Id + 33, // 33: aapt.pb.Item.prim:type_name -> aapt.pb.Primitive + 34, // 34: aapt.pb.CompoundValue.attr:type_name -> aapt.pb.Attribute + 35, // 35: aapt.pb.CompoundValue.style:type_name -> aapt.pb.Style + 36, // 36: aapt.pb.CompoundValue.styleable:type_name -> aapt.pb.Styleable + 37, // 37: aapt.pb.CompoundValue.array:type_name -> aapt.pb.Array + 38, // 38: aapt.pb.CompoundValue.plural:type_name -> aapt.pb.Plural + 43, // 39: aapt.pb.CompoundValue.macro:type_name -> aapt.pb.MacroBody + 2, // 40: aapt.pb.Reference.type:type_name -> aapt.pb.Reference.Type + 26, // 41: aapt.pb.Reference.is_dynamic:type_name -> aapt.pb.Boolean + 47, // 42: aapt.pb.StyledString.span:type_name -> aapt.pb.StyledString.Span + 3, // 43: aapt.pb.FileReference.type:type_name -> aapt.pb.FileReference.Type + 48, // 44: aapt.pb.Primitive.null_value:type_name -> aapt.pb.Primitive.NullType + 49, // 45: aapt.pb.Primitive.empty_value:type_name -> aapt.pb.Primitive.EmptyType + 50, // 46: aapt.pb.Attribute.symbol:type_name -> aapt.pb.Attribute.Symbol + 27, // 47: aapt.pb.Style.parent:type_name -> aapt.pb.Reference + 8, // 48: aapt.pb.Style.parent_source:type_name -> aapt.pb.Source + 51, // 49: aapt.pb.Style.entry:type_name -> aapt.pb.Style.Entry + 52, // 50: aapt.pb.Styleable.entry:type_name -> aapt.pb.Styleable.Entry + 53, // 51: aapt.pb.Array.element:type_name -> aapt.pb.Array.Element + 54, // 52: aapt.pb.Plural.entry:type_name -> aapt.pb.Plural.Entry + 40, // 53: aapt.pb.XmlNode.element:type_name -> aapt.pb.XmlElement + 7, // 54: aapt.pb.XmlNode.source:type_name -> aapt.pb.SourcePosition + 41, // 55: aapt.pb.XmlElement.namespace_declaration:type_name -> aapt.pb.XmlNamespace + 42, // 56: aapt.pb.XmlElement.attribute:type_name -> aapt.pb.XmlAttribute + 39, // 57: aapt.pb.XmlElement.child:type_name -> aapt.pb.XmlNode + 7, // 58: aapt.pb.XmlNamespace.source:type_name -> aapt.pb.SourcePosition + 7, // 59: aapt.pb.XmlAttribute.source:type_name -> aapt.pb.SourcePosition + 24, // 60: aapt.pb.XmlAttribute.compiled_item:type_name -> aapt.pb.Item + 45, // 61: aapt.pb.MacroBody.style_string:type_name -> aapt.pb.StyleString + 46, // 62: aapt.pb.MacroBody.untranslatable_sections:type_name -> aapt.pb.UntranslatableSection + 44, // 63: aapt.pb.MacroBody.namespace_stack:type_name -> aapt.pb.NamespaceAlias + 7, // 64: aapt.pb.MacroBody.source:type_name -> aapt.pb.SourcePosition + 55, // 65: aapt.pb.StyleString.spans:type_name -> aapt.pb.StyleString.Span + 8, // 66: aapt.pb.Attribute.Symbol.source:type_name -> aapt.pb.Source + 27, // 67: aapt.pb.Attribute.Symbol.name:type_name -> aapt.pb.Reference + 8, // 68: aapt.pb.Style.Entry.source:type_name -> aapt.pb.Source + 27, // 69: aapt.pb.Style.Entry.key:type_name -> aapt.pb.Reference + 24, // 70: aapt.pb.Style.Entry.item:type_name -> aapt.pb.Item + 8, // 71: aapt.pb.Styleable.Entry.source:type_name -> aapt.pb.Source + 27, // 72: aapt.pb.Styleable.Entry.attr:type_name -> aapt.pb.Reference + 8, // 73: aapt.pb.Array.Element.source:type_name -> aapt.pb.Source + 24, // 74: aapt.pb.Array.Element.item:type_name -> aapt.pb.Item + 8, // 75: aapt.pb.Plural.Entry.source:type_name -> aapt.pb.Source + 5, // 76: aapt.pb.Plural.Entry.arity:type_name -> aapt.pb.Plural.Arity + 24, // 77: aapt.pb.Plural.Entry.item:type_name -> aapt.pb.Item + 78, // [78:78] is the sub-list for method output_type + 78, // [78:78] is the sub-list for method input_type + 78, // [78:78] is the sub-list for extension type_name + 78, // [78:78] is the sub-list for extension extendee + 0, // [0:78] is the sub-list for field type_name +} + +func init() { file_Resources_proto_init() } +func file_Resources_proto_init() { + if File_Resources_proto != nil { + return + } + file_Configuration_proto_init() + if !protoimpl.UnsafeEnabled { + file_Resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StringPool); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SourcePosition); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Source); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ToolFingerprint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResourceTable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PackageId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Package); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TypeId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Type); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Visibility); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AllowNew); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Overlayable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OverlayableItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StagedId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntryId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Entry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConfigValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Value); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CompoundValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Boolean); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Reference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Id); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*String); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RawString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StyledString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Primitive); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Attribute); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Style); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Styleable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Array); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Plural); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XmlNode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XmlElement); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XmlNamespace); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XmlAttribute); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MacroBody); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamespaceAlias); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StyleString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UntranslatableSection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StyledString_Span); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Primitive_NullType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Primitive_EmptyType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Attribute_Symbol); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Style_Entry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Styleable_Entry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Array_Element); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Plural_Entry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StyleString_Span); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_Resources_proto_msgTypes[17].OneofWrappers = []interface{}{ + (*Value_Item)(nil), + (*Value_CompoundValue)(nil), + } + file_Resources_proto_msgTypes[18].OneofWrappers = []interface{}{ + (*Item_Ref)(nil), + (*Item_Str)(nil), + (*Item_RawStr)(nil), + (*Item_StyledStr)(nil), + (*Item_File)(nil), + (*Item_Id)(nil), + (*Item_Prim)(nil), + } + file_Resources_proto_msgTypes[19].OneofWrappers = []interface{}{ + (*CompoundValue_Attr)(nil), + (*CompoundValue_Style)(nil), + (*CompoundValue_Styleable)(nil), + (*CompoundValue_Array)(nil), + (*CompoundValue_Plural)(nil), + (*CompoundValue_Macro)(nil), + } + file_Resources_proto_msgTypes[27].OneofWrappers = []interface{}{ + (*Primitive_NullValue)(nil), + (*Primitive_EmptyValue)(nil), + (*Primitive_FloatValue)(nil), + (*Primitive_DimensionValue)(nil), + (*Primitive_FractionValue)(nil), + (*Primitive_IntDecimalValue)(nil), + (*Primitive_IntHexadecimalValue)(nil), + (*Primitive_BooleanValue)(nil), + (*Primitive_ColorArgb8Value)(nil), + (*Primitive_ColorRgb8Value)(nil), + (*Primitive_ColorArgb4Value)(nil), + (*Primitive_ColorRgb4Value)(nil), + (*Primitive_DimensionValueDeprecated)(nil), + (*Primitive_FractionValueDeprecated)(nil), + } + file_Resources_proto_msgTypes[33].OneofWrappers = []interface{}{ + (*XmlNode_Element)(nil), + (*XmlNode_Text)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_Resources_proto_rawDesc, + NumEnums: 6, + NumMessages: 50, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_Resources_proto_goTypes, + DependencyIndexes: file_Resources_proto_depIdxs, + EnumInfos: file_Resources_proto_enumTypes, + MessageInfos: file_Resources_proto_msgTypes, + }.Build() + File_Resources_proto = out.File + file_Resources_proto_rawDesc = nil + file_Resources_proto_goTypes = nil + file_Resources_proto_depIdxs = nil +} diff --git a/Resources.proto b/Resources.proto new file mode 100755 index 0000000..ceedd5d --- /dev/null +++ b/Resources.proto @@ -0,0 +1,639 @@ +/* + * Copyright (C) 2016 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. + */ + +syntax = "proto3"; + +import "Configuration.proto"; + +package aapt.pb; + +option go_package = "./;main"; + +// A string pool that wraps the binary form of the C++ class android::ResStringPool. +message StringPool { + bytes data = 1; +} + +// The position of a declared entity within a file. +message SourcePosition { + uint32 line_number = 1; + uint32 column_number = 2; +} + +// Developer friendly source file information for an entity in the resource table. +message Source { + // The index of the string path within the source string pool of a ResourceTable. + uint32 path_idx = 1; + SourcePosition position = 2; +} + +// The name and version fingerprint of a build tool. +message ToolFingerprint { + string tool = 1; + string version = 2; +} + +// Top level message representing a resource table. +message ResourceTable { + // The string pool containing source paths referenced throughout the resource table. This does + // not end up in the final binary ARSC file. + StringPool source_pool = 1; + + // Resource definitions corresponding to an Android package. + repeated Package package = 2; + + // The declarations within the resource table. + repeated Overlayable overlayable = 3; + + // The version fingerprints of the tools that built the resource table. + repeated ToolFingerprint tool_fingerprint = 4; +} + +// A package ID in the range [0x00, 0xff]. +message PackageId { + uint32 id = 1; +} + +// Defines resources for an Android package. +message Package { + // The package ID of this package, in the range [0x00, 0xff]. + // - ID 0x00 is reserved for shared libraries, or when the ID is assigned at run-time. + // - ID 0x01 is reserved for the 'android' package (framework). + // - ID range [0x02, 0x7f) is reserved for auto-assignment to shared libraries at run-time. + // - ID 0x7f is reserved for the application package. + // - IDs > 0x7f are reserved for the application as well and are treated as feature splits. + // This may not be set if no ID was assigned. + PackageId package_id = 1; + + // The Java compatible Android package name of the app. + string package_name = 2; + + // The series of types defined by the package. + repeated Type type = 3; +} + +// A type ID in the range [0x01, 0xff]. +message TypeId { + uint32 id = 1; +} + +// A set of resources grouped under a common type. Such types include string, layout, xml, dimen, +// attr, etc. This maps to the second part of a resource identifier in Java (R.type.entry). +message Type { + // The ID of the type. This may not be set if no ID was assigned. + TypeId type_id = 1; + + // The name of the type. This corresponds to the 'type' part of a full resource name of the form + // package:type/entry. The set of legal type names is listed in Resource.cpp. + string name = 2; + + // The entries defined for this type. + repeated Entry entry = 3; +} + +// The Visibility of a symbol/entry (public, private, undefined). +message Visibility { + // The visibility of the resource outside of its package. + enum Level { + // No visibility was explicitly specified. This is typically treated as private. + // The distinction is important when two separate R.java files are generated: a public and + // private one. An unknown visibility, in this case, would cause the resource to be omitted + // from either R.java. + UNKNOWN = 0; + + // A resource was explicitly marked as private. This means the resource can not be accessed + // outside of its package unless the @*package:type/entry notation is used (the asterisk being + // the private accessor). If two R.java files are generated (private + public), the resource + // will only be emitted to the private R.java file. + PRIVATE = 1; + + // A resource was explicitly marked as public. This means the resource can be accessed + // from any package, and is emitted into all R.java files, public and private. + PUBLIC = 2; + } + + Level level = 1; + + // The path at which this entry's visibility was defined (eg. public.xml). + Source source = 2; + + // The comment associated with the tag. + string comment = 3; + + // Indicates that the resource id may change across builds and that the public R.java identifier + // for this resource should not be final. This is set to `true` for resources in `staging-group` + // tags. + bool staged_api = 4; +} + +// Whether a resource comes from a compile-time overlay and is explicitly allowed to not overlay an +// existing resource. +message AllowNew { + // Where this was defined in source. + Source source = 1; + + // Any comment associated with the declaration. + string comment = 2; +} + +// Represents a set of overlayable resources. +message Overlayable { + // The name of the . + string name = 1; + + // The location of the declaration in the source. + Source source = 2; + + // The component responsible for enabling and disabling overlays targeting this . + string actor = 3; +} + +// Represents an overlayable declaration within an tag. +message OverlayableItem { + enum Policy { + NONE = 0; + PUBLIC = 1; + SYSTEM = 2; + VENDOR = 3; + PRODUCT = 4; + SIGNATURE = 5; + ODM = 6; + OEM = 7; + ACTOR = 8; + CONFIG_SIGNATURE = 9; + } + + // The location of the declaration in source. + Source source = 1; + + // Any comment associated with the declaration. + string comment = 2; + + // The policy defined by the enclosing tag of this . + repeated Policy policy = 3; + + // The index into overlayable list that points to the tag that contains + // this . + uint32 overlayable_idx = 4; +} + +// The staged resource ID definition of a finalized resource. +message StagedId { + Source source = 1; + uint32 staged_id = 2; +} + +// An entry ID in the range [0x0000, 0xffff]. +message EntryId { + uint32 id = 1; +} + +// An entry declaration. An entry has a full resource ID that is the combination of package ID, +// type ID, and its own entry ID. An entry on its own has no value, but values are defined for +// various configurations/variants. +message Entry { + // The ID of this entry. Together with the package ID and type ID, this forms a full resource ID + // of the form 0xPPTTEEEE, where PP is the package ID, TT is the type ID, and EEEE is the entry + // ID. + // This may not be set if no ID was assigned. + EntryId entry_id = 1; + + // The name of this entry. This corresponds to the 'entry' part of a full resource name of the + // form package:type/entry. + string name = 2; + + // The visibility of this entry (public, private, undefined). + Visibility visibility = 3; + + // Whether this resource, when originating from a compile-time overlay, is allowed to NOT overlay + // any existing resources. + AllowNew allow_new = 4; + + // Whether this resource can be overlaid by a runtime resource overlay (RRO). + OverlayableItem overlayable_item = 5; + + // The set of values defined for this entry, each corresponding to a different + // configuration/variant. + repeated ConfigValue config_value = 6; + + // The staged resource ID of this finalized resource. + StagedId staged_id = 7; +} + +// A Configuration/Value pair. +message ConfigValue { + Configuration config = 1; + Value value = 2; +} + +// The generic meta-data for every value in a resource table. +message Value { + // Where the value was defined. + Source source = 1; + + // Any comment associated with the value. + string comment = 2; + + // Whether the value can be overridden. + bool weak = 3; + + // The value is either an Item or a CompoundValue. + oneof value { + Item item = 4; + CompoundValue compound_value = 5; + } +} + +// An Item is an abstract type. It represents a value that can appear inline in many places, such +// as XML attribute values or on the right hand side of style attribute definitions. The concrete +// type is one of the types below. Only one can be set. +message Item { + oneof value { + Reference ref = 1; + String str = 2; + RawString raw_str = 3; + StyledString styled_str = 4; + FileReference file = 5; + Id id = 6; + Primitive prim = 7; + } +} + +// A CompoundValue is an abstract type. It represents a value that is a made of other values. +// These can only usually appear as top-level resources. The concrete type is one of the types +// below. Only one can be set. +message CompoundValue { + oneof value { + Attribute attr = 1; + Style style = 2; + Styleable styleable = 3; + Array array = 4; + Plural plural = 5; + MacroBody macro = 6; + } +} + +// Message holding a boolean, so it can be optionally encoded. +message Boolean { + bool value = 1; +} + +// A value that is a reference to another resource. This reference can be by name or resource ID. +message Reference { + enum Type { + // A plain reference (@package:type/entry). + REFERENCE = 0; + + // A reference to a theme attribute (?package:type/entry). + ATTRIBUTE = 1; + } + + Type type = 1; + + // The resource ID (0xPPTTEEEE) of the resource being referred. This is optional. + uint32 id = 2; + + // The name of the resource being referred. This is optional if the resource ID is set. + string name = 3; + + // Whether this reference is referencing a private resource (@*package:type/entry). + bool private = 4; + + // Whether this reference is dynamic. + Boolean is_dynamic = 5; + + // The type flags used when compiling the reference. Used for substituting the contents of macros. + uint32 type_flags = 6; + + // Whether raw string values would have been accepted in place of this reference definition. Used + // for substituting the contents of macros. + bool allow_raw = 7; +} + +// A value that represents an ID. This is just a placeholder, as ID values are used to occupy a +// resource ID (0xPPTTEEEE) as a unique identifier. Their value is unimportant. +message Id { +} + +// A value that is a string. +message String { + string value = 1; +} + +// A value that is a raw string, which is unescaped/uninterpreted. This is typically used to +// represent the value of a style attribute before the attribute is compiled and the set of +// allowed values is known. +message RawString { + string value = 1; +} + +// A string with styling information, like html tags that specify boldness, italics, etc. +message StyledString { + // The raw text of the string. + string value = 1; + + // A Span marks a region of the string text that is styled. + message Span { + // The name of the tag, and its attributes, encoded as follows: + // tag_name;attr1=value1;attr2=value2;[...] + string tag = 1; + + // The first character position this span applies to, in UTF-16 offset. + uint32 first_char = 2; + + // The last character position this span applies to, in UTF-16 offset. + uint32 last_char = 3; + } + + repeated Span span = 2; +} + +// A value that is a reference to an external entity, like an XML file or a PNG. +message FileReference { + enum Type { + UNKNOWN = 0; + PNG = 1; + BINARY_XML = 2; + PROTO_XML = 3; + } + + // Path to a file within the APK (typically res/type-config/entry.ext). + string path = 1; + + // The type of file this path points to. For UAM bundle, this cannot be + // BINARY_XML. + Type type = 2; +} + +// A value that represents a primitive data type (float, int, boolean, etc.). +// Refer to Res_value in ResourceTypes.h for info on types and formatting +message Primitive { + message NullType { + } + message EmptyType { + } + oneof oneof_value { + NullType null_value = 1; + EmptyType empty_value = 2; + float float_value = 3; + uint32 dimension_value = 13; + uint32 fraction_value = 14; + int32 int_decimal_value = 6; + uint32 int_hexadecimal_value = 7; + bool boolean_value = 8; + uint32 color_argb8_value = 9; + uint32 color_rgb8_value = 10; + uint32 color_argb4_value = 11; + uint32 color_rgb4_value = 12; + float dimension_value_deprecated = 4 [deprecated=true]; + float fraction_value_deprecated = 5 [deprecated=true]; + } +} + +// A value that represents an XML attribute and what values it accepts. +message Attribute { + // A Symbol used to represent an enum or a flag. + message Symbol { + // Where the enum/flag item was defined. + Source source = 1; + + // Any comments associated with the enum or flag. + string comment = 2; + + // The name of the enum/flag as a reference. Enums/flag items are generated as ID resource + // values. + Reference name = 3; + + // The value of the enum/flag. + uint32 value = 4; + + // The data type of the enum/flag as defined in android::Res_value. + uint32 type = 5; + } + + // Bitmask of formats allowed for an attribute. + enum FormatFlags { + NONE = 0x0; // Proto3 requires a default of 0. + ANY = 0x0000ffff; // Allows any type except ENUM and FLAGS. + REFERENCE = 0x01; // Allows Reference values. + STRING = 0x02; // Allows String/StyledString values. + INTEGER = 0x04; // Allows any integer BinaryPrimitive values. + BOOLEAN = 0x08; // Allows any boolean BinaryPrimitive values. + COLOR = 0x010; // Allows any color BinaryPrimitive values. + FLOAT = 0x020; // Allows any float BinaryPrimitive values. + DIMENSION = 0x040; // Allows any dimension BinaryPrimitive values. + FRACTION = 0x080; // Allows any fraction BinaryPrimitive values. + ENUM = 0x00010000; // Allows enums that are defined in the Attribute's symbols. + // ENUM and FLAGS cannot BOTH be set. + FLAGS = 0x00020000; // Allows flags that are defined in the Attribute's symbols. + // ENUM and FLAGS cannot BOTH be set. + } + + // A bitmask of types that this XML attribute accepts. Corresponds to the flags in the + // enum FormatFlags. + uint32 format_flags = 1; + + // The smallest integer allowed for this XML attribute. Only makes sense if the format includes + // FormatFlags::INTEGER. + int32 min_int = 2; + + // The largest integer allowed for this XML attribute. Only makes sense if the format includes + // FormatFlags::INTEGER. + int32 max_int = 3; + + // The set of enums/flags defined in this attribute. Only makes sense if the format includes + // either FormatFlags::ENUM or FormatFlags::FLAGS. Having both is an error. + repeated Symbol symbol = 4; +} + +// A value that represents a style. +message Style { + // An XML attribute/value pair defined in the style. + message Entry { + // Where the entry was defined. + Source source = 1; + + // Any comments associated with the entry. + string comment = 2; + + // A reference to the XML attribute. + Reference key = 3; + + // The Item defined for this XML attribute. + Item item = 4; + } + + // The optinal style from which this style inherits attributes. + Reference parent = 1; + + // The source file information of the parent inheritance declaration. + Source parent_source = 2; + + // The set of XML attribute/value pairs for this style. + repeated Entry entry = 3; +} + +// A value that represents a XML resource. These are not real resources and +// only end up as Java fields in the generated R.java. They do not end up in the binary ARSC file. +message Styleable { + // An attribute defined for this styleable. + message Entry { + // Where the attribute was defined within the block. + Source source = 1; + + // Any comments associated with the declaration. + string comment = 2; + + // The reference to the attribute. + Reference attr = 3; + } + + // The set of attribute declarations. + repeated Entry entry = 1; +} + +// A value that represents an array of resource values. +message Array { + // A single element of the array. + message Element { + // Where the element was defined. + Source source = 1; + + // Any comments associated with the element. + string comment = 2; + + // The value assigned to this element. + Item item = 3; + } + + // The list of array elements. + repeated Element element = 1; +} + +// A value that represents a string and its many variations based on plurality. +message Plural { + // The arity of the plural. + enum Arity { + ZERO = 0; + ONE = 1; + TWO = 2; + FEW = 3; + MANY = 4; + OTHER = 5; + } + + // The plural value for a given arity. + message Entry { + // Where the plural was defined. + Source source = 1; + + // Any comments associated with the plural. + string comment = 2; + + // The arity of the plural. + Arity arity = 3; + + // The value assigned to this plural. + Item item = 4; + } + + // The set of arity/plural mappings. + repeated Entry entry = 1; +} + +// Defines an abstract XmlNode that must be either an XmlElement, or +// a text node represented by a string. +message XmlNode { + oneof node { + XmlElement element = 1; + string text = 2; + } + + // Source line and column info. + SourcePosition source = 3; +} + +// An in an XML document. +message XmlElement { + // Namespaces defined on this element. + repeated XmlNamespace namespace_declaration = 1; + + // The namespace URI of this element. + string namespace_uri = 2; + + // The name of this element. + string name = 3; + + // The attributes of this element. + repeated XmlAttribute attribute = 4; + + // The children of this element. + repeated XmlNode child = 5; +} + +// A namespace declaration on an XmlElement (xmlns:android="http://..."). +message XmlNamespace { + string prefix = 1; + string uri = 2; + + // Source line and column info. + SourcePosition source = 3; +} + +// An attribute defined on an XmlElement (android:text="..."). +message XmlAttribute { + string namespace_uri = 1; + string name = 2; + string value = 3; + + // Source line and column info. + SourcePosition source = 4; + + // The optional resource ID (0xPPTTEEEE) of the attribute. + uint32 resource_id = 5; + + // The optional interpreted/compiled version of the `value` string. + Item compiled_item = 6; +} + +message MacroBody { + string raw_string = 1; + StyleString style_string = 2; + repeated UntranslatableSection untranslatable_sections = 3; + repeated NamespaceAlias namespace_stack = 4; + SourcePosition source = 5; +} + +message NamespaceAlias { + string prefix = 1; + string package_name = 2; + bool is_private = 3; +} + +message StyleString { + message Span { + string name = 1; + uint32 start_index = 2; + uint32 end_index = 3; + } + string str = 1; + repeated Span spans = 2; +} + +message UntranslatableSection { + uint64 start_index = 1; + uint64 end_index = 2; +} \ No newline at end of file diff --git a/build-proto.sh b/build-proto.sh new file mode 100755 index 0000000..4bf3768 --- /dev/null +++ b/build-proto.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euxo pipefail + +protoc --go_out=. *.proto diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..756484f --- /dev/null +++ b/build.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euxo pipefail + +goreleaser --snapshot --skip-publish --rm-dist diff --git a/go.mod b/go.mod new file mode 100755 index 0000000..58a445b --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/ensody/androidmanifest-changer + +go 1.17 + +require google.golang.org/protobuf v1.27.1 diff --git a/go.sum b/go.sum new file mode 100755 index 0000000..03b1917 --- /dev/null +++ b/go.sum @@ -0,0 +1,8 @@ +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/main.go b/main.go new file mode 100755 index 0000000..470bee1 --- /dev/null +++ b/main.go @@ -0,0 +1,218 @@ +package main + +import ( + "archive/zip" + "errors" + "flag" + "fmt" + "io" + "io/ioutil" + "log" + "os" + "os/exec" + "strings" + + "google.golang.org/protobuf/proto" +) + +const ( + tmpDir = "/tmp" + namespace = "http://schemas.android.com/apk/res/android" + versionCodeAttr = "versionCode" + versionNameAttr = "versionName" +) + +type Config struct { + versionCode int32 + versionName string +} + +func main() { + versionCode := flag.Uint("versionCode", 0, "The versionCode to set") + versionName := flag.String("versionName", "", "The versionName to set") + flag.Parse() + if len(flag.Args()) != 1 { + fmt.Fprintln(flag.CommandLine.Output(), "Error: File path is required.") + flag.Usage() + os.Exit(2) + } + config := &Config{ + versionCode: int32(*versionCode), + versionName: *versionName, + } + + path := flag.Arg(0) + + if strings.HasSuffix(path, ".apk") { + updateApk(path, config) + } else if strings.HasSuffix(path, ".aar") { + updateAar(path, config) + } else { + updateManifest(path, config) + } +} + +func updateApk(path string, config *Config) { + file, err := ioutil.TempFile(tmpDir, "*.aar") + if err != nil { + log.Fatalln("Failed creating temp file:", err) + } + defer os.Remove(file.Name()) + + out, err := exec.Command("aapt2", "convert", "-o", file.Name(), "--output-format", "proto", path).CombinedOutput() + if err != nil { + log.Fatalln("Failed executing aapt2:", err, string(out)) + } + + updateAar(file.Name(), config) + + out, err = exec.Command("aapt2", "convert", "-o", path, "--output-format", "binary", file.Name()).CombinedOutput() + if err != nil { + log.Fatalln("Failed executing aapt2:", err, string(out)) + } +} + +func updateAar(path string, config *Config) { + manifest, err := ioutil.TempFile(tmpDir, "AndroidManifest.*.xml") + if err != nil { + log.Fatalln("Failed creating temp file:", err) + } + defer os.Remove(manifest.Name()) + + extractFromZip(path, "AndroidManifest.xml", manifest) + updateManifest(manifest.Name(), config) + addToZip(path, "AndroidManifest.xml", manifest) +} + +func addToZip(path string, name string, source *os.File) { + zipReader, err := zip.OpenReader(path) + if err != nil { + log.Fatalln("Failed reading zip:", err) + } + defer zipReader.Close() + + tmpZip, err := ioutil.TempFile(tmpDir, "*.aar") + if err != nil { + log.Fatalln("Failed creating temp file:", err) + } + defer os.Remove(tmpZip.Name()) + + targetZipWriter := zip.NewWriter(tmpZip) + defer targetZipWriter.Close() + + for _, zipItem := range zipReader.File { + header, err := zip.FileInfoHeader(zipItem.FileInfo()) + if err != nil { + log.Fatalln("Failed creating header:", err) + } + header.Name = zipItem.Name + targetItem, err := targetZipWriter.CreateHeader(header) + if err != nil { + log.Fatalln("Failed creating header:", err) + } + if zipItem.Name == name { + source.Seek(0, 0) + _, err = io.Copy(targetItem, source) + if err != nil { + log.Fatalln("Failed copying to zip:", err) + } + } else { + zipItemReader, err := zipItem.Open() + if err != nil { + log.Fatalln("Failed reading zip:", err) + } + _, err = io.Copy(targetItem, zipItemReader) + if err != nil { + log.Fatalln("Failed copying to zip:", err) + } + zipItemReader.Close() + } + } + + f, err := os.Create(path) + if err != nil { + log.Fatalln("Failed opening file:", err) + } + defer f.Close() + tmpZip.Seek(0, 0) + io.Copy(f, tmpZip) + + f2, err := os.Create("fafa.zip") + if err != nil { + log.Fatalln("Failed opening file:", err) + } + defer f2.Close() + tmpZip.Seek(0, 0) + io.Copy(f2, tmpZip) +} + +func extractFromZip(path string, name string, target *os.File) { + r, err := zip.OpenReader(path) + if err != nil { + log.Fatal(err) + } + defer r.Close() + + f := findFile(r, name) + if f == nil { + log.Fatalln(errors.New("file is missing")) + } + + innerFile, err := f.Open() + if err != nil { + log.Fatalln("Failed opening zip file's AndroidManifest.xml:", err) + } + defer innerFile.Close() + _, err = io.Copy(target, innerFile) + if err != nil { + log.Fatal(err) + } +} + +func findFile(r *zip.ReadCloser, name string) *zip.File { + for _, f := range r.File { + if f.Name != name { + continue + } + return f + } + return nil +} + +func updateManifest(path string, config *Config) { + in, err := ioutil.ReadFile(path) + if err != nil { + log.Fatalln("Error reading file:", err) + } + xmlNode := &XmlNode{} + if err := proto.Unmarshal(in, xmlNode); err != nil { + log.Fatalln("Failed to parse manifest:", err) + } + for _, attr := range xmlNode.GetElement().GetAttribute() { + if attr.GetNamespaceUri() != namespace { + continue + } + switch attr.GetName() { + case versionCodeAttr: + if config.versionCode > 0 { + println(attr.String()) + prim := attr.GetCompiledItem().GetPrim() + if x, ok := prim.GetOneofValue().(*Primitive_IntDecimalValue); ok { + x.IntDecimalValue = int32(config.versionCode) + } + } + case versionNameAttr: + if config.versionName != "" { + attr.Value = config.versionName + } + } + } + + out, err := proto.Marshal(xmlNode) + if err != nil { + log.Fatalln("Error marshalling XML:", err) + } + if err := ioutil.WriteFile(path, out, 0644); err != nil { + log.Fatalln("Error writing file:", err) + } +}