Full Code of lizongying/my-tv for AI

main d65ac508eb56 cached
263 files
3.8 MB
997.6k tokens
3606 symbols
1 requests
Download .txt
Showing preview only (3,987K chars total). Download the full file or copy to clipboard to get everything.
Repository: lizongying/my-tv
Branch: main
Commit: d65ac508eb56
Files: 263
Total size: 3.8 MB

Directory structure:
gitextract_id6mxpdl/

├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.yml
│   │   └── fr.yml
│   └── workflows/
│       └── build.yml
├── .gitignore
├── CMakeLists.txt
├── HISTORY.md
├── Makefile
├── README.md
├── app/
│   ├── .gitignore
│   ├── CMakeLists.txt
│   ├── build.gradle
│   ├── proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── cpp/
│           │   ├── arm64-v8a/
│           │   │   ├── libcrypto.a
│           │   │   └── libssl.a
│           │   ├── armeabi-v7a/
│           │   │   ├── libcrypto.a
│           │   │   └── libssl.a
│           │   ├── include/
│           │   │   └── openssl/
│           │   │       ├── aes.h
│           │   │       ├── asn1.h
│           │   │       ├── asn1_mac.h
│           │   │       ├── asn1err.h
│           │   │       ├── asn1t.h
│           │   │       ├── async.h
│           │   │       ├── asyncerr.h
│           │   │       ├── bio.h
│           │   │       ├── bioerr.h
│           │   │       ├── blowfish.h
│           │   │       ├── bn.h
│           │   │       ├── bnerr.h
│           │   │       ├── buffer.h
│           │   │       ├── buffererr.h
│           │   │       ├── camellia.h
│           │   │       ├── cast.h
│           │   │       ├── cmac.h
│           │   │       ├── cmp.h
│           │   │       ├── cmp_util.h
│           │   │       ├── cmperr.h
│           │   │       ├── cms.h
│           │   │       ├── cmserr.h
│           │   │       ├── comp.h
│           │   │       ├── comperr.h
│           │   │       ├── conf.h
│           │   │       ├── conf_api.h
│           │   │       ├── conferr.h
│           │   │       ├── configuration.h
│           │   │       ├── conftypes.h
│           │   │       ├── core.h
│           │   │       ├── core_dispatch.h
│           │   │       ├── core_names.h
│           │   │       ├── core_object.h
│           │   │       ├── crmf.h
│           │   │       ├── crmferr.h
│           │   │       ├── crypto.h
│           │   │       ├── cryptoerr.h
│           │   │       ├── cryptoerr_legacy.h
│           │   │       ├── ct.h
│           │   │       ├── cterr.h
│           │   │       ├── decoder.h
│           │   │       ├── decodererr.h
│           │   │       ├── des.h
│           │   │       ├── dh.h
│           │   │       ├── dherr.h
│           │   │       ├── dsa.h
│           │   │       ├── dsaerr.h
│           │   │       ├── dtls1.h
│           │   │       ├── e_os2.h
│           │   │       ├── e_ostime.h
│           │   │       ├── ebcdic.h
│           │   │       ├── ec.h
│           │   │       ├── ecdh.h
│           │   │       ├── ecdsa.h
│           │   │       ├── ecerr.h
│           │   │       ├── encoder.h
│           │   │       ├── encodererr.h
│           │   │       ├── engine.h
│           │   │       ├── engineerr.h
│           │   │       ├── err.h
│           │   │       ├── ess.h
│           │   │       ├── esserr.h
│           │   │       ├── evp.h
│           │   │       ├── evperr.h
│           │   │       ├── fips_names.h
│           │   │       ├── fipskey.h
│           │   │       ├── hmac.h
│           │   │       ├── hpke.h
│           │   │       ├── http.h
│           │   │       ├── httperr.h
│           │   │       ├── idea.h
│           │   │       ├── kdf.h
│           │   │       ├── kdferr.h
│           │   │       ├── lhash.h
│           │   │       ├── macros.h
│           │   │       ├── md2.h
│           │   │       ├── md4.h
│           │   │       ├── md5.h
│           │   │       ├── mdc2.h
│           │   │       ├── modes.h
│           │   │       ├── obj_mac.h
│           │   │       ├── objects.h
│           │   │       ├── objectserr.h
│           │   │       ├── ocsp.h
│           │   │       ├── ocsperr.h
│           │   │       ├── opensslconf.h
│           │   │       ├── opensslv.h
│           │   │       ├── ossl_typ.h
│           │   │       ├── param_build.h
│           │   │       ├── params.h
│           │   │       ├── pem.h
│           │   │       ├── pem2.h
│           │   │       ├── pemerr.h
│           │   │       ├── pkcs12.h
│           │   │       ├── pkcs12err.h
│           │   │       ├── pkcs7.h
│           │   │       ├── pkcs7err.h
│           │   │       ├── prov_ssl.h
│           │   │       ├── proverr.h
│           │   │       ├── provider.h
│           │   │       ├── quic.h
│           │   │       ├── rand.h
│           │   │       ├── randerr.h
│           │   │       ├── rc2.h
│           │   │       ├── rc4.h
│           │   │       ├── rc5.h
│           │   │       ├── ripemd.h
│           │   │       ├── rsa.h
│           │   │       ├── rsaerr.h
│           │   │       ├── safestack.h
│           │   │       ├── seed.h
│           │   │       ├── self_test.h
│           │   │       ├── sha.h
│           │   │       ├── srp.h
│           │   │       ├── srtp.h
│           │   │       ├── ssl.h
│           │   │       ├── ssl2.h
│           │   │       ├── ssl3.h
│           │   │       ├── sslerr.h
│           │   │       ├── sslerr_legacy.h
│           │   │       ├── stack.h
│           │   │       ├── store.h
│           │   │       ├── storeerr.h
│           │   │       ├── symhacks.h
│           │   │       ├── thread.h
│           │   │       ├── tls1.h
│           │   │       ├── trace.h
│           │   │       ├── ts.h
│           │   │       ├── tserr.h
│           │   │       ├── txt_db.h
│           │   │       ├── types.h
│           │   │       ├── ui.h
│           │   │       ├── uierr.h
│           │   │       ├── whrlpool.h
│           │   │       ├── x509.h
│           │   │       ├── x509_vfy.h
│           │   │       ├── x509err.h
│           │   │       ├── x509v3.h
│           │   │       └── x509v3err.h
│           │   └── nothing.c
│           ├── java/
│           │   └── com/
│           │       ├── lizongying/
│           │       │   └── mytv/
│           │       │       ├── BootReceiver.kt
│           │       │       ├── CardPresenter.kt
│           │       │       ├── ChannelFragment.kt
│           │       │       ├── ConfirmationFragment.kt
│           │       │       ├── Encryptor.kt
│           │       │       ├── ErrorFragment.kt
│           │       │       ├── Ext.kt
│           │       │       ├── InfoFragment.kt
│           │       │       ├── InitializerProvider.kt
│           │       │       ├── MainActivity.kt
│           │       │       ├── MainFragment.kt
│           │       │       ├── MyApplication.kt
│           │       │       ├── NetworkChangeReceiver.kt
│           │       │       ├── PlayerFragment.kt
│           │       │       ├── Request.kt
│           │       │       ├── SP.kt
│           │       │       ├── SettingFragment.kt
│           │       │       ├── TV.kt
│           │       │       ├── TVList.kt
│           │       │       ├── TimeFragment.kt
│           │       │       ├── UpdateManager.kt
│           │       │       ├── Utils.kt
│           │       │       ├── api/
│           │       │       │   ├── ApiClient.kt
│           │       │       │   ├── Auth.kt
│           │       │       │   ├── DnsCache.kt
│           │       │       │   ├── FAuth.kt
│           │       │       │   ├── FAuthService.kt
│           │       │       │   ├── FEPG.kt
│           │       │       │   ├── Info.kt
│           │       │       │   ├── KvcollectRequest.kt
│           │       │       │   ├── LiveInfo.kt
│           │       │       │   ├── ReleaseService.kt
│           │       │       │   ├── Tls12SocketFactory.kt
│           │       │       │   ├── YSP.kt
│           │       │       │   ├── YSPApiService.kt
│           │       │       │   ├── YSPBtraceService.kt
│           │       │       │   ├── YSPJceService.kt
│           │       │       │   ├── YSPProtoService.kt
│           │       │       │   └── YSPTokenService.kt
│           │       │       ├── jce/
│           │       │       │   ├── CompressUtils.java
│           │       │       │   ├── JceConverterFactory.java
│           │       │       │   ├── JceRequestBodyConverter.java
│           │       │       │   ├── JceResponseBodyConverter.java
│           │       │       │   ├── a.java
│           │       │       │   └── b.java
│           │       │       ├── models/
│           │       │       │   ├── EPG.kt
│           │       │       │   ├── ProgramType.kt
│           │       │       │   ├── TVListViewModel.kt
│           │       │       │   └── TVViewModel.kt
│           │       │       ├── proto/
│           │       │       │   ├── Ysp.java
│           │       │       │   ├── YspKt.kt
│           │       │       │   └── cnKt.kt
│           │       │       └── requests/
│           │       │           └── MyRequest.kt
│           │       ├── qq/
│           │       │   └── taf/
│           │       │       └── jce/
│           │       │           ├── HexUtil.java
│           │       │           ├── JceDecodeException.java
│           │       │           ├── JceEncodeException.java
│           │       │           ├── JceInputStream.java
│           │       │           ├── JceOutputStream.java
│           │       │           ├── JceStruct.java
│           │       │           └── OnIllegalArgumentException.java
│           │       └── tencent/
│           │           └── videolite/
│           │               └── android/
│           │                   └── datamodel/
│           │                       └── cctvjce/
│           │                           ├── Action.java
│           │                           ├── BucketConfig.java
│           │                           ├── BusinessExtent.java
│           │                           ├── BusinessHead.java
│           │                           ├── Coordinates.java
│           │                           ├── ExtentAccount.java
│           │                           ├── ExtentData.java
│           │                           ├── LogReport.java
│           │                           ├── LoginToken.java
│           │                           ├── QQVideoJCECmd.java
│           │                           ├── QUA.java
│           │                           ├── RequestCommand.java
│           │                           ├── RequestHead.java
│           │                           ├── ResponseCommand.java
│           │                           ├── ResponseHead.java
│           │                           ├── SafeInfo.java
│           │                           ├── TVProgram.java
│           │                           ├── TVTimeShiftProgramRequest.java
│           │                           ├── TVTimeShiftProgramResponse.java
│           │                           └── TextInnerLayoutInfo.java
│           └── res/
│               ├── drawable/
│               │   ├── rounded_background.xml
│               │   └── rounded_background2.xml
│               ├── layout/
│               │   ├── activity_main.xml
│               │   ├── channel.xml
│               │   ├── info.xml
│               │   ├── player.xml
│               │   ├── setting.xml
│               │   └── time.xml
│               ├── mipmap-anydpi-v26/
│               │   ├── ic_launcher.xml
│               │   └── ic_launcher_round.xml
│               ├── values/
│               │   ├── attrs.xml
│               │   ├── colors.xml
│               │   ├── ids.xml
│               │   ├── strings.xml
│               │   ├── styles.xml
│               │   └── themes.xml
│               └── xml/
│                   └── network.xml
├── build.gradle
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── history.sh
├── settings.gradle
└── version.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/ISSUE_TEMPLATE/bug.yml
================================================
name: Bug 反馈
description: 反馈一个 Bug
labels: [ "bug" ]
title: "[BUG] "
body:
  - type: checkboxes
    id: checklist
    attributes:
      label: 检查清单
      description: 确保我们的错误报告表单适合您。
      options:
        - label: 之前没有人提交过类似或相同的 bug report。
          required: true
        - label: 我正在使用本软件的最新版本。
          required: true
  - type: dropdown
    id: version
    attributes:
      label: my-ty 版本
      description: 请选择正在使用的版本
      options:
        - 通用版
        - 专用版
    validations:
      required: true
  - type: textarea
    id: bug
    attributes:
      label: Bug 描述
      description: 请描述 bug 详情
      placeholder: |
        e.g. Crashed when generating snapshot.
    validations:
      required: true
  - type: textarea
    id: expected
    attributes:
      label: 预期行为
      description: 你预期会发生什么?
      placeholder: |
        e.g. A New snapshot!
    validations:
      required: true
  - type: textarea
    id: actual
    attributes:
      label: 实际行为
      description: 反而发生了什么?
      placeholder: |
        e.g. Crashed.
    validations:
      required: true
  - type: textarea
    id: steps
    attributes:
      label: 复现步骤
      description: 如何复现这个 bug。
      placeholder: |
        1. Open the app
        2. Crashed

        What an app.
  - type: input
    id: ui
    attributes:
      label: UI / OS
      description: 你的电视系统 UI 或 OS 或 品牌
      placeholder: TCL / XIAOMI / PHONE / etc.
    validations:
      required: true
  - type: input
    id: android
    attributes:
      label: Android 版本
      description: 你的 Android 版本
      placeholder: "12"
    validations:
      required: true
  - type: textarea
    id: additional
    attributes:
      label: 额外信息
      description: 任何你觉得值得说的。


================================================
FILE: .github/ISSUE_TEMPLATE/fr.yml
================================================
name: 功能(新频道)请求
description: 提出一个建议
labels: [ "enhancement" ]
title: "[FR] "
body:
  - type: checkboxes
    id: checklist
    attributes:
      label: 检查清单
      description: 确保我们的错误报告表单适合您。
      options:
        - label: 之前没有人提交过类似或相同的功能请求。
          required: true
        - label: 这个建议不会背离 my-tv 的初衷。
          required: true
  - type: textarea
    id: propose
    attributes:
      label: 改进目的
      description: 改进有什么用
      placeholder: |
        Show your idea here.
    validations:
      required: true
  - type: textarea
    id: solution
    attributes:
      label: 解决方案
      description: 你会怎么完成这个改进?
      placeholder: |
        How to do it on your opinion? Or left this blank
  - type: textarea
    id: addition
    attributes:
      label: 额外信息
      description: 任何你觉得值得说的。


================================================
FILE: .github/workflows/build.yml
================================================
name: build

on:
  push:
    tags:
      - 'v*'

permissions:
  contents: write

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'temurin'

      - name: Run build with Gradle wrapper
        run: ./gradlew assembleRelease -PIS_SO_BUILD=false

      - name: Sign app APK
        id: sign_app
        uses: r0adkll/sign-android-release@v1
        with:
          releaseDirectory: app/build/outputs/apk/release
          alias: ${{ secrets.ALIAS }}
          signingKeyBase64: ${{ secrets.KEYSTORE }}
          keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }}
          keyPassword: ${{ secrets.ALIAS_PASSWORD }}
        env:
          # override default build-tools version (29.0.3) -- optional
          BUILD_TOOLS_VERSION: "34.0.0"

      - name: Get History
        id: get_history
        run: |
          chmod +x history.sh
          output=$(./history.sh)
          echo "$output" > history.md

      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          draft: false
          prerelease: false
          body_path: history.md

      - name: Upload Release Asset
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ${{ steps.sign_app.outputs.signedReleaseFile }}
          asset_name: my-tv-${{ github.ref_name }}.apk
          asset_content_type: application/vnd.android.package-archive

      - name: Gitee Create Release
        run: |
          latest_commit=$(git rev-parse HEAD)
          history=$(cat history.md)
          curl -v POST https://gitee.com/api/v5/repos/${{ github.repository }}/releases \
          -H "Content-Type: application/json" \
          -d '{
            "access_token": "${{ secrets.GITEE_ACCESS_TOKEN}}",
            "tag_name": "${{ github.ref_name }}",
            "name": "Release ${{ github.ref_name }}",
            "body": "'"$history"'",
            "prerelease": false,
            "target_commitish": "'"$latest_commit"'"
          }'

================================================
FILE: .gitignore
================================================
*.iml
.gradle
.idea
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
/path/


================================================
FILE: CMakeLists.txt
================================================
# Sets the minimum version of CMake required to build your native library.
# This ensures that a certain set of CMake features is available to
# your build.

cmake_minimum_required(VERSION 3.21.1)

add_subdirectory(app)


================================================
FILE: HISTORY.md
================================================
## 更新日誌

### v2.1.0

* 恢復播放

### 以下已不可用

### v2.0.9

* 修復部分設備閃退的問題
* 修復設置頁可能顯示不全的問題

### v2.0.5

* 設置頁增加恢復默認按鈕,目前只用於同步系統時間

### v2.0.4

* 修復不能播放的問題
* 包含國際頻道

### v2.0.3

* 修復不能播放的問題
* 不包含國際頻道

### v2.0.0

* 解決卡頓問題
* 解決網格樣式時,點擊空白處不退出的問題
* 解決頻道列表樣式切換可能不生效的問題

### v1.9.8(通用)

* 優化在線升級
* 優化可能狀態錯誤的問題

### v1.9.6(通用)

* 優化在線升級
* 優化可能狀態錯誤的問題

### v1.9.4(通用)

* 修復默認時間不顯示問題
* 設置頁居中
* 頻道號和時間對齊

### v1.9.2(通用)

* 修復一個重試的錯誤

### v1.9.0(通用)

* 減少視頻播放失敗情況
* 全面屏手機居中顯示

### v1.8.8(通用)

* 樣式優化

### v1.8.6(通用)

* 增加錯誤顯示
* 節目預告優化
* 頻道列表頁單擊切換頻道

### v1.8.4(通用)

* 解決部分情況下打開後黑屏問題
* 延長頻道信息顯示時間,增加信息顯示長度
* 調整頻道列表間距
* 其他樣式優化

### v1.8.2(通用)

* 修復無法播放問題

### v1.8.0(通用)

* 修復返回鍵無法退出問題
* 設置中增加退出按鈕
* 修改非電視上的樣式
* 修復低版本閃退問題

### v1.7.8(通用)

* 修復播放過程中的卡頓問題
* 增加時間顯示
* 頻道號優化
* 遙控器左鍵打開頻道列表
* 遙控器右鍵打開設置菜單
* 頻道列表空白處點擊隱藏頻道列表

### v1.7.6(通用)

* 臨時去掉部分頻道,提高頻道的可用性
* 部分頻道增加節目單

### v1.7.5(安卓5及以上專用)

* 修復播放過程中的卡頓問題
* 增加時間顯示
* 頻道號優化
* 設置中增加退出按鈕

### v1.7.4(通用)

* 修復368

### v1.7.3(安卓5及以上專用)

* 臨時去掉部分頻道,提高頻道的可用性
* 部分頻道增加節目單
* 遙控器左鍵進入節目列表
* 遙控器右鍵進入菜單

### v1.7.2(通用)

* 支持節目列表網格樣式和行樣式切換,軟件重啟後生效
* 節目列表樣式變更

### v1.7.1(安卓5及以上專用)

* 解決設置頁更新閃退的問題
* 鳳凰衛視回歸
* 解決368問題

### v1.7.0(通用)

* 網絡請求優化

### v1.6.9(安卓5及以上專用)

* 去掉港澳台和國際頻道
* 解決部分情況下3、6、8等頻道無法播放的問題
* 解決部分情況下啟動後黑屏問題

### v1.6.8(通用)

* 修復部分設備崩潰的問題
* 修復部分設備鳳凰衛視無法播放的問題

### v1.6.7(安卓5及以上專用)

* 手機雙擊打開配置
* 自動更新

### v1.6.6(通用)

* 更新重慶衛視圖標
* 鳳凰衛視增強畫質
* 鳳凰衛視增加EPG

### v1.6.5(安卓5及以上專用)

* 增加CETV1圖標
* 穩定性提升

### v1.6.4(通用)

* 增加CETV1
* 增加鳳凰衛視
* 默認關閉開機啟動

### v1.6.3(安卓5及以上專用)

* 增加CETV1
* 鳳凰衛視增強畫質
* 默認關閉開機啟動
* 延遲菜單自動關閉時間
* 解決一些可能導致首次打開時黑屏的問題

### v1.6.2(通用)

* 修復按鍵無效的問題
* 新的頻道列表樣式

### v1.6.1(安卓5及以上專用)

* 增加鳳凰衛視

### v1.6.0(通用)

* 通用(春晚緊急修復)

### v1.5.9(安卓5及以上專用)

* 解決天貓魔盒閃退問題

### v1.5.8(通用)

* 修復央視6畫質差的問題
* 增加兵團衛視
* 播放失敗重試

### v1.5.7(安卓5及以上專用)

* 修復播放失敗的問題

### v1.5.6(通用)

* 解決部分設備系統時間不對導致播放失敗的問題

### v1.5.5(安卓5及以上專用)

* 修復播放失敗的問題
* 修復APP恢復後頻道號、頻道列表不自動消失的問題

### v1.5.4(通用)

* 修復播放失敗的問題

### v1.5.3(安卓5及以上專用)

* 修復部分情況下APP切換後無法繼續播放的問題
* 優化重試邏輯

### v1.5.2(通用)

* 修復APP恢復後頻道號、頻道列表不自動消失的問題

### v1.5.1(安卓5及以上專用)

* 性能優化

### v1.5.0(通用)

* 修復部分情況下APP切換後無法繼續播放的問題

### v1.4.9(安卓5及以上專用)

* 同步v1.4.8

### v1.4.8(通用)

* 頻道號從1開始,CCTV5+為18
* 提高CCTV6清晰度
* 增加天津衛視、新疆衛視

### v1.4.7(安卓5及以上專用)

* 修復部分用戶CCTV13播放過程中卡住的問題
* 調整CCTV的頻道順序

### v1.4.6(通用)

* 10以下頻道不再需要先按0

### v1.4.5(安卓5及以上專用)

* 數字選台配置

### v1.4.4(通用)

* 優化圖標顯示
* 增加換台反轉

### v1.4.3(安卓5及以上專用)

* 支持頻道反轉配置

### v1.4.2(通用)

* 支持安卓4

### v1.4.1

* 解決部分用戶無法打開菜單的問題

### v1.4.0

* 解決極個別高版本機型黑屏問題

### v1.3.9

* 提高穩定性
* 提高連接速度

### v1.3.4

* 部分錯誤會提示用戶
* 菜單3秒鐘後自動關閉

### v1.3.3

* 部分錯誤會提示用戶
* 菜單3秒鐘後自動關閉

### v1.3.2

* 增加重試,減少因網絡問題導致的播放失敗
* 優化橫幅banner

### v1.3.1

* 增加CCTV 8K 超高清頻道
* 增加國際頻道欄目

### v1.3.0

* 處理368可能失敗的情形

### v1.2.9

* 支持3、6、8

### v1.2.8

* 兼容16:10等分辨率

### v1.2.7

* 此版本是為了測試安卓6.0以下版本,如之前可以正常運行,請勿安裝。

### v1.2.6

* 支持安卓4.2
* 解決部分頻道無法播放的問題
* 修復切換時有時沒有恢復播放的問題
* 左右鍵不再切換源
* 增大頻道信息標題尺寸,縮小與節目信息的間隔

### v1.2.5

* 美化頻道信息顯示
* 優化節目單獲取

### v1.2.4

* 改變換台滑動方向,上一個頻道下滑,下一個頻道上滑
* 軟件退出時,退出播放器
* 播放相同的頻道,不再重複加載
* 暫時移除部分頻道

### v1.2.3

* 固定視頻比例為16:9
* 隱藏全面屏底部的小橫條
* 移除移動專區
* 修復一個閃退問題
* 更換圖標和應用名

================================================
FILE: Makefile
================================================
.PHONY: all

all: info gen-version

branch := $(shell git rev-parse --abbrev-ref HEAD)
commit := $(shell git rev-parse --short HEAD)

info:
	@echo 'SHELL='$(SHELL)
	@echo 'branch='$(branch)
	@echo 'commit='$(commit)

gen-version:
	git describe --tags --always
	git describe --tags --always | sed 's/v/ /g' | sed 's/\./ /g' | sed 's/-/ /g' | awk '{print ($$1*16777216)+($$2*65536)+($$3*256)+$$4}'

#make gen v=v2.0.0
gen:
	echo $(v) | sed 's/v/ /g' | sed 's/\./ /g' | sed 's/-/ /g' | awk '{print "{\"version_code\": " ($$1*16777216)+($$2*65536)+($$3*256)+$$4 ", \"version_name\": \"" "v$(v)" "\"}"}' > version.json

================================================
FILE: README.md
================================================
# 我的电视

电视直播软件,安装即可使用

## 使用

1. 下载
    * [github](https://github.com/lizongying/my-tv/releases/)
    * [gitee](https://gitee.com/lizongying/my-tv/releases/)
2. 安裝
    * U盘安装
    * 小米电视可以使用小米电视助手进行安装
    * 如电视可以启用ADB,也可以通过ADB进行安装
       ```shell
       adb install my-tv.apk
       ```

![image](./screenshots/img_3.png)
![image](./screenshots/img_2.png)
![image](./screenshots/img_1.png)

## 更新日志

[更新日志](./HISTORY.md)

## TODO

* 音量不同
* 大湾区卫视、广东4k超高清、广东珠江、三沙卫视
* CHC高清三个电影频道
* 地方频道
* 收藏夹
* 海外
* 隐藏频道
* 亮度调节
* 音量调节
* 軟解
* 自動更新

無法自啟的設備:
斐讯N1盒子,[Phicomm] Phicomm p230 (Android 7.1.2)

閃退:
中国移动盒子(新魔百和M302A) 4.4.2

## 版权说明

[LICENSE](./LICENSE)

本项目仅供学习研究,禁止用于商业用途,请于下载二十四小时内删除。

本项目可能随时终止,请大家谨慎使用,建议使用官方渠道进行观看。

本项目使用的部分代码、图片、文字等资源来源于网络,如有侵权,请联系删除。

## 赞赏

![image](./screenshots/appreciate.jpeg)

================================================
FILE: app/.gitignore
================================================
/build
/release
/cmake_install.cmake
/CMakeFiles/
/Makefile
/src/main/cpp/native.c


================================================
FILE: app/CMakeLists.txt
================================================
# Sets the minimum version of CMake required to build your native library.
# This ensures that a certain set of CMake features is available to
# your build.
cmake_minimum_required(VERSION 3.21.1)

project(MyTV)

# Specifies a path to native header files.
include_directories(src/main/cpp/include)

if (IS_SO_BUILD)
    # Specifies a library name, specifies whether the library is STATIC or
    # SHARED, and provides relative paths to the source code. You can
    # define multiple libraries by adding multiple add_library() commands,
    # and CMake builds them for you. When you build your app, Gradle
    # automatically packages shared libraries with your APK.
    add_library( # Specifies the name of the library.
            native

            # Sets the library as a shared library.
            SHARED

            # Provides a relative path to your source file(s).
            src/main/cpp/native.c)

    # 设置编译输出路径
    set_target_properties(
            native
            PROPERTIES
            LIBRARY_OUTPUT_DIRECTORY
            ${CMAKE_SOURCE_DIR}/src/main/cpp/${ANDROID_ABI}
    )
else ()
    add_library(
            nothing
            SHARED
            src/main/cpp/nothing.c)

    add_library(native
            SHARED
            IMPORTED)

    set_target_properties( # Specifies the target library.
            native

            # Specifies the parameter you want to define.
            PROPERTIES IMPORTED_LOCATION

            # Provides the path to the library you want to import.
            ${CMAKE_SOURCE_DIR}/src/main/cpp/${ANDROID_ABI}/libnative.so)
endif ()

#add_library(libssl
#        STATIC
#        IMPORTED)
#
#set_target_properties( # Specifies the target library.
#        libssl
#
#        # Specifies the parameter you want to define.
#        PROPERTIES IMPORTED_LOCATION
#
#        # Provides the path to the library you want to import.
#        ${CMAKE_SOURCE_DIR}/src/main/cpp/${ANDROID_ABI}/libssl.so)
#
#add_library(libcrypto
#        SHARED
#        IMPORTED)
#
#set_target_properties( # Specifies the target library.
#        libcrypto
#
#        # Specifies the parameter you want to define.
#        PROPERTIES IMPORTED_LOCATION
#
#        # Provides the path to the library you want to import.
#        ${CMAKE_SOURCE_DIR}/src/main/cpp/${ANDROID_ABI}/libcrypto.so)

add_library(libssl
        STATIC
        IMPORTED)

set_target_properties( # Specifies the target library.
        libssl

        # Specifies the parameter you want to define.
        PROPERTIES IMPORTED_LOCATION

        # Provides the path to the library you want to import.
        ${CMAKE_SOURCE_DIR}/src/main/cpp/${ANDROID_ABI}/libssl.a)

add_library(libcrypto
        STATIC
        IMPORTED)

set_target_properties( # Specifies the target library.
        libcrypto

        # Specifies the parameter you want to define.
        PROPERTIES IMPORTED_LOCATION

        # Provides the path to the library you want to import.
        ${CMAKE_SOURCE_DIR}/src/main/cpp/${ANDROID_ABI}/libcrypto.a)

find_library( # Defines the name of the path variable that stores the
        # location of the NDK library.
        log-lib

        # Specifies the name of the NDK library that
        # CMake needs to locate.
        log)

if (IS_SO_BUILD)
    # Links your native library against one or more other native libraries.
    target_link_libraries( # Specifies the target library.
            native
            libssl
            libcrypto
            ${log-lib})
else ()
    target_link_libraries( # Specifies the target library.
            nothing
            libssl
            libcrypto
            native
            ${log-lib})
endif ()

================================================
FILE: app/build.gradle
================================================
plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
}

android {
    namespace 'com.lizongying.mytv'
    compileSdk 34

    viewBinding {
        enabled = true
    }

    defaultConfig {
        applicationId "com.lizongying.mytv"
        minSdk 21
        targetSdk 33
        versionCode VersionCode()
        versionName VersionName()

        // This block is different from the one you use to link Gradle
        // to your CMake or ndk-build script.
        externalNativeBuild {

            // For ndk-build, instead use the ndkBuild block.
            cmake {
                arguments "-DIS_SO_BUILD=${project.hasProperty('IS_SO_BUILD') ? project.IS_SO_BUILD : true}"

                abiFilters "armeabi-v7a", "arm64-v8a"
            }
        }

        // Similar to other properties in the defaultConfig block,
        // you can configure the ndk block for each product flavor
        // in your build configuration.
        ndk {
            // Specifies the ABI configurations of your native
            // libraries Gradle should build and package with your app.
            abiFilters "armeabi-v7a", "arm64-v8a"
        }
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = 17
    }

    // Encapsulates your external native build configurations.
    externalNativeBuild {

        // Encapsulates your CMake build configurations.
        cmake {

            // Provides a relative path to your CMake build script.
            path = file("CMakeLists.txt")
        }
    }
}

static def VersionCode() {
    try {
        def p = "git describe --tags --always"
        def process = p.execute()
        process.waitFor()
        def replace = [v: "", ".": " ", "-": " "]
        def arr = (process.text.trim().replace(replace) + " 0").split(" ")
        def versionCode = arr[0].toInteger() * 16777216 + arr[1].toInteger() * 65536 + arr[2].toInteger() * 256 + arr[3].toInteger()
        println("VersionCode $versionCode")
        return versionCode
    } catch (ignored) {
        return 0
    }
}

static def VersionName() {
    try {
        def process = "git describe --tags --always".execute()
        process.waitFor()
        return process.text.trim() - "v"
    } catch (ignored) {
        return "1.0.0"
    }
}

dependencies {
    def media3_version = "1.3.1"

    implementation "androidx.media3:media3-ui:$media3_version"

    // For media playback using ExoPlayer
    implementation "androidx.media3:media3-exoplayer:$media3_version"

    // For HLS playback support with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-hls:$media3_version"

    // 21:2.11.0 17:2.6.4
    def retrofit2_version = "2.11.0"

    implementation 'com.google.protobuf:protobuf-kotlin:3.25.1'
    implementation "com.squareup.retrofit2:converter-gson:$retrofit2_version"
    implementation "com.squareup.retrofit2:converter-protobuf:$retrofit2_version"
    implementation "com.squareup.retrofit2:retrofit:$retrofit2_version"

    implementation 'androidx.leanback:leanback:1.2.0-alpha04'
    
    implementation 'com.github.bumptech.glide:glide:4.11.0'

    implementation 'androidx.core:core-ktx:1.13.0'
    implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.7.0"

    implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2"
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0-RC")

    implementation 'com.google.android.exoplayer:exoplayer-ui:2.13.3'
    implementation 'com.google.android.exoplayer:exoplayer-core:2.13.3'
    implementation 'com.google.android.exoplayer:exoplayer-hls:2.13.3'
}

================================================
FILE: app/proguard-rules.pro
================================================
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

================================================
FILE: app/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />
    <uses-feature
        android:name="android.software.leanback"
        android:required="true" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:banner="@drawable/banner"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:logo="@drawable/logo"
        android:networkSecurityConfig="@xml/network"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyTV"
        android:usesCleartextTraffic="true">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:keepScreenOn="true"
            android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver
            android:name=".BootReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
        <receiver
            android:name=".NetworkChangeReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>

        <provider
            android:name=".InitializerProvider"
            android:authorities="${applicationId}.InitializerProvider"
            android:exported="false" />
    </application>
</manifest>

================================================
FILE: app/src/main/cpp/include/openssl/aes.h
================================================
/*
 * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */

#ifndef OPENSSL_AES_H
# define OPENSSL_AES_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_AES_H
# endif

# include <openssl/opensslconf.h>

# include <stddef.h>
# ifdef  __cplusplus
extern "C" {
# endif

# define AES_BLOCK_SIZE 16

# ifndef OPENSSL_NO_DEPRECATED_3_0

#  define AES_ENCRYPT     1
#  define AES_DECRYPT     0

#  define AES_MAXNR 14


/* This should be a hidden type, but EVP requires that the size be known */
struct aes_key_st {
#  ifdef AES_LONG
    unsigned long rd_key[4 * (AES_MAXNR + 1)];
#  else
    unsigned int rd_key[4 * (AES_MAXNR + 1)];
#  endif
    int rounds;
};
typedef struct aes_key_st AES_KEY;

# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 const char *AES_options(void);
OSSL_DEPRECATEDIN_3_0
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
                        AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
                        AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
void AES_encrypt(const unsigned char *in, unsigned char *out,
                 const AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
void AES_decrypt(const unsigned char *in, unsigned char *out,
                 const AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,
                     const AES_KEY *key, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
                     size_t length, const AES_KEY *key,
                     unsigned char *ivec, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
                        size_t length, const AES_KEY *key,
                        unsigned char *ivec, int *num, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
                      size_t length, const AES_KEY *key,
                      unsigned char *ivec, int *num, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
                      size_t length, const AES_KEY *key,
                      unsigned char *ivec, int *num, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
                        size_t length, const AES_KEY *key,
                        unsigned char *ivec, int *num);

/* NB: the IV is _two_ blocks long */
OSSL_DEPRECATEDIN_3_0
void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
                     size_t length, const AES_KEY *key,
                     unsigned char *ivec, const int enc);
/* NB: the IV is _four_ blocks long */
OSSL_DEPRECATEDIN_3_0
void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
                        size_t length, const AES_KEY *key, const AES_KEY *key2,
                        const unsigned char *ivec, const int enc);
OSSL_DEPRECATEDIN_3_0
int AES_wrap_key(AES_KEY *key, const unsigned char *iv,
                 unsigned char *out, const unsigned char *in,
                 unsigned int inlen);
OSSL_DEPRECATEDIN_3_0
int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
                   unsigned char *out, const unsigned char *in,
                   unsigned int inlen);
# endif


# ifdef  __cplusplus
}
# endif

#endif


================================================
FILE: app/src/main/cpp/include/openssl/asn1.h
================================================
/*
 * WARNING: do not edit!
 * Generated by Makefile from openssl-3.1.4/include/openssl/asn1.h.in
 *
 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */



#ifndef OPENSSL_ASN1_H
# define OPENSSL_ASN1_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_ASN1_H
# endif

# ifndef OPENSSL_NO_STDIO
#  include <stdio.h>
# endif
# include <time.h>
# include <openssl/e_os2.h>
# include <openssl/opensslconf.h>
# include <openssl/bio.h>
# include <openssl/safestack.h>
# include <openssl/asn1err.h>
# include <openssl/symhacks.h>

# include <openssl/types.h>
# include <openssl/bn.h>

# ifdef OPENSSL_BUILD_SHLIBCRYPTO
#  undef OPENSSL_EXTERN
#  define OPENSSL_EXTERN OPENSSL_EXPORT
# endif

#ifdef  __cplusplus
extern "C" {
#endif

# define V_ASN1_UNIVERSAL                0x00
# define V_ASN1_APPLICATION              0x40
# define V_ASN1_CONTEXT_SPECIFIC         0x80
# define V_ASN1_PRIVATE                  0xc0

# define V_ASN1_CONSTRUCTED              0x20
# define V_ASN1_PRIMITIVE_TAG            0x1f
# define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG

# define V_ASN1_APP_CHOOSE               -2/* let the recipient choose */
# define V_ASN1_OTHER                    -3/* used in ASN1_TYPE */
# define V_ASN1_ANY                      -4/* used in ASN1 template code */

# define V_ASN1_UNDEF                    -1
/* ASN.1 tag values */
# define V_ASN1_EOC                      0
# define V_ASN1_BOOLEAN                  1 /**/
# define V_ASN1_INTEGER                  2
# define V_ASN1_BIT_STRING               3
# define V_ASN1_OCTET_STRING             4
# define V_ASN1_NULL                     5
# define V_ASN1_OBJECT                   6
# define V_ASN1_OBJECT_DESCRIPTOR        7
# define V_ASN1_EXTERNAL                 8
# define V_ASN1_REAL                     9
# define V_ASN1_ENUMERATED               10
# define V_ASN1_UTF8STRING               12
# define V_ASN1_SEQUENCE                 16
# define V_ASN1_SET                      17
# define V_ASN1_NUMERICSTRING            18 /**/
# define V_ASN1_PRINTABLESTRING          19
# define V_ASN1_T61STRING                20
# define V_ASN1_TELETEXSTRING            20/* alias */
# define V_ASN1_VIDEOTEXSTRING           21 /**/
# define V_ASN1_IA5STRING                22
# define V_ASN1_UTCTIME                  23
# define V_ASN1_GENERALIZEDTIME          24 /**/
# define V_ASN1_GRAPHICSTRING            25 /**/
# define V_ASN1_ISO64STRING              26 /**/
# define V_ASN1_VISIBLESTRING            26/* alias */
# define V_ASN1_GENERALSTRING            27 /**/
# define V_ASN1_UNIVERSALSTRING          28 /**/
# define V_ASN1_BMPSTRING                30

/*
 * NB the constants below are used internally by ASN1_INTEGER
 * and ASN1_ENUMERATED to indicate the sign. They are *not* on
 * the wire tag values.
 */

# define V_ASN1_NEG                      0x100
# define V_ASN1_NEG_INTEGER              (2 | V_ASN1_NEG)
# define V_ASN1_NEG_ENUMERATED           (10 | V_ASN1_NEG)

/* For use with d2i_ASN1_type_bytes() */
# define B_ASN1_NUMERICSTRING    0x0001
# define B_ASN1_PRINTABLESTRING  0x0002
# define B_ASN1_T61STRING        0x0004
# define B_ASN1_TELETEXSTRING    0x0004
# define B_ASN1_VIDEOTEXSTRING   0x0008
# define B_ASN1_IA5STRING        0x0010
# define B_ASN1_GRAPHICSTRING    0x0020
# define B_ASN1_ISO64STRING      0x0040
# define B_ASN1_VISIBLESTRING    0x0040
# define B_ASN1_GENERALSTRING    0x0080
# define B_ASN1_UNIVERSALSTRING  0x0100
# define B_ASN1_OCTET_STRING     0x0200
# define B_ASN1_BIT_STRING       0x0400
# define B_ASN1_BMPSTRING        0x0800
# define B_ASN1_UNKNOWN          0x1000
# define B_ASN1_UTF8STRING       0x2000
# define B_ASN1_UTCTIME          0x4000
# define B_ASN1_GENERALIZEDTIME  0x8000
# define B_ASN1_SEQUENCE         0x10000
/* For use with ASN1_mbstring_copy() */
# define MBSTRING_FLAG           0x1000
# define MBSTRING_UTF8           (MBSTRING_FLAG)
# define MBSTRING_ASC            (MBSTRING_FLAG|1)
# define MBSTRING_BMP            (MBSTRING_FLAG|2)
# define MBSTRING_UNIV           (MBSTRING_FLAG|4)
# define SMIME_OLDMIME           0x400
# define SMIME_CRLFEOL           0x800
# define SMIME_STREAM            0x1000

/* Stacks for types not otherwise defined in this header */
SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR)
#define sk_X509_ALGOR_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ALGOR_sk_type(sk))
#define sk_X509_ALGOR_value(sk, idx) ((X509_ALGOR *)OPENSSL_sk_value(ossl_check_const_X509_ALGOR_sk_type(sk), (idx)))
#define sk_X509_ALGOR_new(cmp) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new(ossl_check_X509_ALGOR_compfunc_type(cmp)))
#define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_null())
#define sk_X509_ALGOR_new_reserve(cmp, n) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_reserve(ossl_check_X509_ALGOR_compfunc_type(cmp), (n)))
#define sk_X509_ALGOR_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ALGOR_sk_type(sk), (n))
#define sk_X509_ALGOR_free(sk) OPENSSL_sk_free(ossl_check_X509_ALGOR_sk_type(sk))
#define sk_X509_ALGOR_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ALGOR_sk_type(sk))
#define sk_X509_ALGOR_delete(sk, i) ((X509_ALGOR *)OPENSSL_sk_delete(ossl_check_X509_ALGOR_sk_type(sk), (i)))
#define sk_X509_ALGOR_delete_ptr(sk, ptr) ((X509_ALGOR *)OPENSSL_sk_delete_ptr(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)))
#define sk_X509_ALGOR_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))
#define sk_X509_ALGOR_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))
#define sk_X509_ALGOR_pop(sk) ((X509_ALGOR *)OPENSSL_sk_pop(ossl_check_X509_ALGOR_sk_type(sk)))
#define sk_X509_ALGOR_shift(sk) ((X509_ALGOR *)OPENSSL_sk_shift(ossl_check_X509_ALGOR_sk_type(sk)))
#define sk_X509_ALGOR_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ALGOR_sk_type(sk),ossl_check_X509_ALGOR_freefunc_type(freefunc))
#define sk_X509_ALGOR_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), (idx))
#define sk_X509_ALGOR_set(sk, idx, ptr) ((X509_ALGOR *)OPENSSL_sk_set(ossl_check_X509_ALGOR_sk_type(sk), (idx), ossl_check_X509_ALGOR_type(ptr)))
#define sk_X509_ALGOR_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))
#define sk_X509_ALGOR_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))
#define sk_X509_ALGOR_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), pnum)
#define sk_X509_ALGOR_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ALGOR_sk_type(sk))
#define sk_X509_ALGOR_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ALGOR_sk_type(sk))
#define sk_X509_ALGOR_dup(sk) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_dup(ossl_check_const_X509_ALGOR_sk_type(sk)))
#define sk_X509_ALGOR_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_copyfunc_type(copyfunc), ossl_check_X509_ALGOR_freefunc_type(freefunc)))
#define sk_X509_ALGOR_set_cmp_func(sk, cmp) ((sk_X509_ALGOR_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_compfunc_type(cmp)))



# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */
/*
 * This indicates that the ASN1_STRING is not a real value but just a place
 * holder for the location where indefinite length constructed data should be
 * inserted in the memory buffer
 */
# define ASN1_STRING_FLAG_NDEF 0x010

/*
 * This flag is used by the CMS code to indicate that a string is not
 * complete and is a place holder for content when it had all been accessed.
 * The flag will be reset when content has been written to it.
 */

# define ASN1_STRING_FLAG_CONT 0x020
/*
 * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING
 * type.
 */
# define ASN1_STRING_FLAG_MSTRING 0x040
/* String is embedded and only content should be freed */
# define ASN1_STRING_FLAG_EMBED 0x080
/* String should be parsed in RFC 5280's time format */
# define ASN1_STRING_FLAG_X509_TIME 0x100
/* This is the base type that holds just about everything :-) */
struct asn1_string_st {
    int length;
    int type;
    unsigned char *data;
    /*
     * The value of the following field depends on the type being held.  It
     * is mostly being used for BIT_STRING so if the input data has a
     * non-zero 'unused bits' value, it will be handled correctly
     */
    long flags;
};

/*
 * ASN1_ENCODING structure: this is used to save the received encoding of an
 * ASN1 type. This is useful to get round problems with invalid encodings
 * which can break signatures.
 */

typedef struct ASN1_ENCODING_st {
    unsigned char *enc;         /* DER encoding */
    long len;                   /* Length of encoding */
    int modified;               /* set to 1 if 'enc' is invalid */
} ASN1_ENCODING;

/* Used with ASN1 LONG type: if a long is set to this it is omitted */
# define ASN1_LONG_UNDEF 0x7fffffffL

# define STABLE_FLAGS_MALLOC     0x01
/*
 * A zero passed to ASN1_STRING_TABLE_new_add for the flags is interpreted
 * as "don't change" and STABLE_FLAGS_MALLOC is always set. By setting
 * STABLE_FLAGS_MALLOC only we can clear the existing value. Use the alias
 * STABLE_FLAGS_CLEAR to reflect this.
 */
# define STABLE_FLAGS_CLEAR      STABLE_FLAGS_MALLOC
# define STABLE_NO_MASK          0x02
# define DIRSTRING_TYPE  \
 (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING)
# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING)

struct asn1_string_table_st {
    int nid;
    long minsize;
    long maxsize;
    unsigned long mask;
    unsigned long flags;
};

SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING_TABLE, ASN1_STRING_TABLE, ASN1_STRING_TABLE)
#define sk_ASN1_STRING_TABLE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))
#define sk_ASN1_STRING_TABLE_value(sk, idx) ((ASN1_STRING_TABLE *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), (idx)))
#define sk_ASN1_STRING_TABLE_new(cmp) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp)))
#define sk_ASN1_STRING_TABLE_new_null() ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_null())
#define sk_ASN1_STRING_TABLE_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp), (n)))
#define sk_ASN1_STRING_TABLE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (n))
#define sk_ASN1_STRING_TABLE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk))
#define sk_ASN1_STRING_TABLE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_TABLE_sk_type(sk))
#define sk_ASN1_STRING_TABLE_delete(sk, i) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (i)))
#define sk_ASN1_STRING_TABLE_delete_ptr(sk, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)))
#define sk_ASN1_STRING_TABLE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))
#define sk_ASN1_STRING_TABLE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))
#define sk_ASN1_STRING_TABLE_pop(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_TABLE_sk_type(sk)))
#define sk_ASN1_STRING_TABLE_shift(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_TABLE_sk_type(sk)))
#define sk_ASN1_STRING_TABLE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk),ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc))
#define sk_ASN1_STRING_TABLE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), (idx))
#define sk_ASN1_STRING_TABLE_set(sk, idx, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_set(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (idx), ossl_check_ASN1_STRING_TABLE_type(ptr)))
#define sk_ASN1_STRING_TABLE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))
#define sk_ASN1_STRING_TABLE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))
#define sk_ASN1_STRING_TABLE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), pnum)
#define sk_ASN1_STRING_TABLE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_TABLE_sk_type(sk))
#define sk_ASN1_STRING_TABLE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))
#define sk_ASN1_STRING_TABLE_dup(sk) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)))
#define sk_ASN1_STRING_TABLE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc)))
#define sk_ASN1_STRING_TABLE_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_TABLE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp)))


/* size limits: this stuff is taken straight from RFC2459 */

# define ub_name                         32768
# define ub_common_name                  64
# define ub_locality_name                128
# define ub_state_name                   128
# define ub_organization_name            64
# define ub_organization_unit_name       64
# define ub_title                        64
# define ub_email_address                128

/*
 * Declarations for template structures: for full definitions see asn1t.h
 */
typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE;
typedef struct ASN1_TLC_st ASN1_TLC;
/* This is just an opaque pointer */
typedef struct ASN1_VALUE_st ASN1_VALUE;

/* Declare ASN1 functions: the implement macro in in asn1t.h */

/*
 * The mysterious 'extern' that's passed to some macros is innocuous,
 * and is there to quiet pre-C99 compilers that may complain about empty
 * arguments in macro calls.
 */

# define DECLARE_ASN1_FUNCTIONS_attr(attr, type)                            \
    DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, type)
# define DECLARE_ASN1_FUNCTIONS(type)                                       \
    DECLARE_ASN1_FUNCTIONS_attr(extern, type)

# define DECLARE_ASN1_ALLOC_FUNCTIONS_attr(attr, type)                      \
    DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, type)
# define DECLARE_ASN1_ALLOC_FUNCTIONS(type)                                 \
    DECLARE_ASN1_ALLOC_FUNCTIONS_attr(extern, type)

# define DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, name)                 \
    DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name)                \
    DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name)
# define DECLARE_ASN1_FUNCTIONS_name(type, name)                            \
    DECLARE_ASN1_FUNCTIONS_name_attr(extern, type, name)

# define DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, itname, name)       \
    DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name)               \
    DECLARE_ASN1_ITEM_attr(attr, itname)
# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name)                  \
    DECLARE_ASN1_ENCODE_FUNCTIONS_attr(extern, type, itname, name)

# define DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name)          \
    DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, name, name)
# define DECLARE_ASN1_ENCODE_FUNCTIONS_name(type, name) \
    DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(extern, type, name)

# define DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name)          \
    attr type *d2i_##name(type **a, const unsigned char **in, long len);    \
    attr int i2d_##name(const type *a, unsigned char **out);
# define DECLARE_ASN1_ENCODE_FUNCTIONS_only(type, name)                     \
    DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(extern, type, name)

# define DECLARE_ASN1_NDEF_FUNCTION_attr(attr, name)                        \
    attr int i2d_##name##_NDEF(const name *a, unsigned char **out);
# define DECLARE_ASN1_NDEF_FUNCTION(name)                                   \
    DECLARE_ASN1_NDEF_FUNCTION_attr(extern, name)

# define DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name)           \
    attr type *name##_new(void);                                            \
    attr void name##_free(type *a);
# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name)                      \
    DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(extern, type, name)

# define DECLARE_ASN1_DUP_FUNCTION_attr(attr, type)                         \
    DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, type)
# define DECLARE_ASN1_DUP_FUNCTION(type)                                    \
    DECLARE_ASN1_DUP_FUNCTION_attr(extern, type)

# define DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, name)              \
    attr type *name##_dup(const type *a);
# define DECLARE_ASN1_DUP_FUNCTION_name(type, name)                         \
    DECLARE_ASN1_DUP_FUNCTION_name_attr(extern, type, name)

# define DECLARE_ASN1_PRINT_FUNCTION_attr(attr, stname)                     \
    DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, stname)
# define DECLARE_ASN1_PRINT_FUNCTION(stname)                                \
    DECLARE_ASN1_PRINT_FUNCTION_attr(extern, stname)

# define DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, fname)        \
    attr int fname##_print_ctx(BIO *out, const stname *x, int indent,       \
                               const ASN1_PCTX *pctx);
# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname)                   \
    DECLARE_ASN1_PRINT_FUNCTION_fname_attr(extern, stname, fname)

# define D2I_OF(type) type *(*)(type **,const unsigned char **,long)
# define I2D_OF(type) int (*)(const type *,unsigned char **)

# define CHECKED_D2I_OF(type, d2i) \
    ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0)))
# define CHECKED_I2D_OF(type, i2d) \
    ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0)))
# define CHECKED_NEW_OF(type, xnew) \
    ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0)))
# define CHECKED_PTR_OF(type, p) \
    ((void*) (1 ? p : (type*)0))
# define CHECKED_PPTR_OF(type, p) \
    ((void**) (1 ? p : (type**)0))

# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long)
# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(const type *,unsigned char **)
# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type)

typedef void *d2i_of_void(void **, const unsigned char **, long);
typedef int i2d_of_void(const void *, unsigned char **);

/*-
 * The following macros and typedefs allow an ASN1_ITEM
 * to be embedded in a structure and referenced. Since
 * the ASN1_ITEM pointers need to be globally accessible
 * (possibly from shared libraries) they may exist in
 * different forms. On platforms that support it the
 * ASN1_ITEM structure itself will be globally exported.
 * Other platforms will export a function that returns
 * an ASN1_ITEM pointer.
 *
 * To handle both cases transparently the macros below
 * should be used instead of hard coding an ASN1_ITEM
 * pointer in a structure.
 *
 * The structure will look like this:
 *
 * typedef struct SOMETHING_st {
 *      ...
 *      ASN1_ITEM_EXP *iptr;
 *      ...
 * } SOMETHING;
 *
 * It would be initialised as e.g.:
 *
 * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...};
 *
 * and the actual pointer extracted with:
 *
 * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr);
 *
 * Finally an ASN1_ITEM pointer can be extracted from an
 * appropriate reference with: ASN1_ITEM_rptr(X509). This
 * would be used when a function takes an ASN1_ITEM * argument.
 *
 */


/*
 * Platforms that can't easily handle shared global variables are declared as
 * functions returning ASN1_ITEM pointers.
 */

/* ASN1_ITEM pointer exported type */
typedef const ASN1_ITEM *ASN1_ITEM_EXP (void);

/* Macro to obtain ASN1_ITEM pointer from exported type */
# define ASN1_ITEM_ptr(iptr) (iptr())

/* Macro to include ASN1_ITEM pointer from base type */
# define ASN1_ITEM_ref(iptr) (iptr##_it)

# define ASN1_ITEM_rptr(ref) (ref##_it())

# define DECLARE_ASN1_ITEM_attr(attr, name)                                 \
    attr const ASN1_ITEM * name##_it(void);
# define DECLARE_ASN1_ITEM(name)                                            \
    DECLARE_ASN1_ITEM_attr(extern, name)

/* Parameters used by ASN1_STRING_print_ex() */

/*
 * These determine which characters to escape: RFC2253 special characters,
 * control characters and MSB set characters
 */

# define ASN1_STRFLGS_ESC_2253           1
# define ASN1_STRFLGS_ESC_CTRL           2
# define ASN1_STRFLGS_ESC_MSB            4

/* Lower 8 bits are reserved as an output type specifier */
# define ASN1_DTFLGS_TYPE_MASK    0x0FUL
# define ASN1_DTFLGS_RFC822       0x00UL
# define ASN1_DTFLGS_ISO8601      0x01UL

/*
 * This flag determines how we do escaping: normally RC2253 backslash only,
 * set this to use backslash and quote.
 */

# define ASN1_STRFLGS_ESC_QUOTE          8

/* These three flags are internal use only. */

/* Character is a valid PrintableString character */
# define CHARTYPE_PRINTABLESTRING        0x10
/* Character needs escaping if it is the first character */
# define CHARTYPE_FIRST_ESC_2253         0x20
/* Character needs escaping if it is the last character */
# define CHARTYPE_LAST_ESC_2253          0x40

/*
 * NB the internal flags are safely reused below by flags handled at the top
 * level.
 */

/*
 * If this is set we convert all character strings to UTF8 first
 */

# define ASN1_STRFLGS_UTF8_CONVERT       0x10

/*
 * If this is set we don't attempt to interpret content: just assume all
 * strings are 1 byte per character. This will produce some pretty odd
 * looking output!
 */

# define ASN1_STRFLGS_IGNORE_TYPE        0x20

/* If this is set we include the string type in the output */
# define ASN1_STRFLGS_SHOW_TYPE          0x40

/*
 * This determines which strings to display and which to 'dump' (hex dump of
 * content octets or DER encoding). We can only dump non character strings or
 * everything. If we don't dump 'unknown' they are interpreted as character
 * strings with 1 octet per character and are subject to the usual escaping
 * options.
 */

# define ASN1_STRFLGS_DUMP_ALL           0x80
# define ASN1_STRFLGS_DUMP_UNKNOWN       0x100

/*
 * These determine what 'dumping' does, we can dump the content octets or the
 * DER encoding: both use the RFC2253 #XXXXX notation.
 */

# define ASN1_STRFLGS_DUMP_DER           0x200

/*
 * This flag specifies that RC2254 escaping shall be performed.
 */
#define ASN1_STRFLGS_ESC_2254           0x400

/*
 * All the string flags consistent with RFC2253, escaping control characters
 * isn't essential in RFC2253 but it is advisable anyway.
 */

# define ASN1_STRFLGS_RFC2253    (ASN1_STRFLGS_ESC_2253 | \
                                ASN1_STRFLGS_ESC_CTRL | \
                                ASN1_STRFLGS_ESC_MSB | \
                                ASN1_STRFLGS_UTF8_CONVERT | \
                                ASN1_STRFLGS_DUMP_UNKNOWN | \
                                ASN1_STRFLGS_DUMP_DER)


struct asn1_type_st {
    int type;
    union {
        char *ptr;
        ASN1_BOOLEAN boolean;
        ASN1_STRING *asn1_string;
        ASN1_OBJECT *object;
        ASN1_INTEGER *integer;
        ASN1_ENUMERATED *enumerated;
        ASN1_BIT_STRING *bit_string;
        ASN1_OCTET_STRING *octet_string;
        ASN1_PRINTABLESTRING *printablestring;
        ASN1_T61STRING *t61string;
        ASN1_IA5STRING *ia5string;
        ASN1_GENERALSTRING *generalstring;
        ASN1_BMPSTRING *bmpstring;
        ASN1_UNIVERSALSTRING *universalstring;
        ASN1_UTCTIME *utctime;
        ASN1_GENERALIZEDTIME *generalizedtime;
        ASN1_VISIBLESTRING *visiblestring;
        ASN1_UTF8STRING *utf8string;
        /*
         * set and sequence are left complete and still contain the set or
         * sequence bytes
         */
        ASN1_STRING *set;
        ASN1_STRING *sequence;
        ASN1_VALUE *asn1_value;
    } value;
};

SKM_DEFINE_STACK_OF_INTERNAL(ASN1_TYPE, ASN1_TYPE, ASN1_TYPE)
#define sk_ASN1_TYPE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_TYPE_sk_type(sk))
#define sk_ASN1_TYPE_value(sk, idx) ((ASN1_TYPE *)OPENSSL_sk_value(ossl_check_const_ASN1_TYPE_sk_type(sk), (idx)))
#define sk_ASN1_TYPE_new(cmp) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new(ossl_check_ASN1_TYPE_compfunc_type(cmp)))
#define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_null())
#define sk_ASN1_TYPE_new_reserve(cmp, n) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_TYPE_compfunc_type(cmp), (n)))
#define sk_ASN1_TYPE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_TYPE_sk_type(sk), (n))
#define sk_ASN1_TYPE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_TYPE_sk_type(sk))
#define sk_ASN1_TYPE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_TYPE_sk_type(sk))
#define sk_ASN1_TYPE_delete(sk, i) ((ASN1_TYPE *)OPENSSL_sk_delete(ossl_check_ASN1_TYPE_sk_type(sk), (i)))
#define sk_ASN1_TYPE_delete_ptr(sk, ptr) ((ASN1_TYPE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)))
#define sk_ASN1_TYPE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))
#define sk_ASN1_TYPE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))
#define sk_ASN1_TYPE_pop(sk) ((ASN1_TYPE *)OPENSSL_sk_pop(ossl_check_ASN1_TYPE_sk_type(sk)))
#define sk_ASN1_TYPE_shift(sk) ((ASN1_TYPE *)OPENSSL_sk_shift(ossl_check_ASN1_TYPE_sk_type(sk)))
#define sk_ASN1_TYPE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_TYPE_sk_type(sk),ossl_check_ASN1_TYPE_freefunc_type(freefunc))
#define sk_ASN1_TYPE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), (idx))
#define sk_ASN1_TYPE_set(sk, idx, ptr) ((ASN1_TYPE *)OPENSSL_sk_set(ossl_check_ASN1_TYPE_sk_type(sk), (idx), ossl_check_ASN1_TYPE_type(ptr)))
#define sk_ASN1_TYPE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))
#define sk_ASN1_TYPE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))
#define sk_ASN1_TYPE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), pnum)
#define sk_ASN1_TYPE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_TYPE_sk_type(sk))
#define sk_ASN1_TYPE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_TYPE_sk_type(sk))
#define sk_ASN1_TYPE_dup(sk) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_TYPE_sk_type(sk)))
#define sk_ASN1_TYPE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_copyfunc_type(copyfunc), ossl_check_ASN1_TYPE_freefunc_type(freefunc)))
#define sk_ASN1_TYPE_set_cmp_func(sk, cmp) ((sk_ASN1_TYPE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_compfunc_type(cmp)))


typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY;

DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY)
DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SET_ANY)

/* This is used to contain a list of bit names */
typedef struct BIT_STRING_BITNAME_st {
    int bitnum;
    const char *lname;
    const char *sname;
} BIT_STRING_BITNAME;

# define B_ASN1_TIME \
                        B_ASN1_UTCTIME | \
                        B_ASN1_GENERALIZEDTIME

# define B_ASN1_PRINTABLE \
                        B_ASN1_NUMERICSTRING| \
                        B_ASN1_PRINTABLESTRING| \
                        B_ASN1_T61STRING| \
                        B_ASN1_IA5STRING| \
                        B_ASN1_BIT_STRING| \
                        B_ASN1_UNIVERSALSTRING|\
                        B_ASN1_BMPSTRING|\
                        B_ASN1_UTF8STRING|\
                        B_ASN1_SEQUENCE|\
                        B_ASN1_UNKNOWN

# define B_ASN1_DIRECTORYSTRING \
                        B_ASN1_PRINTABLESTRING| \
                        B_ASN1_TELETEXSTRING|\
                        B_ASN1_BMPSTRING|\
                        B_ASN1_UNIVERSALSTRING|\
                        B_ASN1_UTF8STRING

# define B_ASN1_DISPLAYTEXT \
                        B_ASN1_IA5STRING| \
                        B_ASN1_VISIBLESTRING| \
                        B_ASN1_BMPSTRING|\
                        B_ASN1_UTF8STRING

DECLARE_ASN1_ALLOC_FUNCTIONS_name(ASN1_TYPE, ASN1_TYPE)
DECLARE_ASN1_ENCODE_FUNCTIONS(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)

int ASN1_TYPE_get(const ASN1_TYPE *a);
void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value);
int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value);
int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b);

ASN1_TYPE *ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t);
void *ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t);

SKM_DEFINE_STACK_OF_INTERNAL(ASN1_OBJECT, ASN1_OBJECT, ASN1_OBJECT)
#define sk_ASN1_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_OBJECT_sk_type(sk))
#define sk_ASN1_OBJECT_value(sk, idx) ((ASN1_OBJECT *)OPENSSL_sk_value(ossl_check_const_ASN1_OBJECT_sk_type(sk), (idx)))
#define sk_ASN1_OBJECT_new(cmp) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new(ossl_check_ASN1_OBJECT_compfunc_type(cmp)))
#define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_null())
#define sk_ASN1_OBJECT_new_reserve(cmp, n) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_OBJECT_compfunc_type(cmp), (n)))
#define sk_ASN1_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_OBJECT_sk_type(sk), (n))
#define sk_ASN1_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_ASN1_OBJECT_sk_type(sk))
#define sk_ASN1_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_OBJECT_sk_type(sk))
#define sk_ASN1_OBJECT_delete(sk, i) ((ASN1_OBJECT *)OPENSSL_sk_delete(ossl_check_ASN1_OBJECT_sk_type(sk), (i)))
#define sk_ASN1_OBJECT_delete_ptr(sk, ptr) ((ASN1_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)))
#define sk_ASN1_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))
#define sk_ASN1_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))
#define sk_ASN1_OBJECT_pop(sk) ((ASN1_OBJECT *)OPENSSL_sk_pop(ossl_check_ASN1_OBJECT_sk_type(sk)))
#define sk_ASN1_OBJECT_shift(sk) ((ASN1_OBJECT *)OPENSSL_sk_shift(ossl_check_ASN1_OBJECT_sk_type(sk)))
#define sk_ASN1_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_OBJECT_sk_type(sk),ossl_check_ASN1_OBJECT_freefunc_type(freefunc))
#define sk_ASN1_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), (idx))
#define sk_ASN1_OBJECT_set(sk, idx, ptr) ((ASN1_OBJECT *)OPENSSL_sk_set(ossl_check_ASN1_OBJECT_sk_type(sk), (idx), ossl_check_ASN1_OBJECT_type(ptr)))
#define sk_ASN1_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))
#define sk_ASN1_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))
#define sk_ASN1_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), pnum)
#define sk_ASN1_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_OBJECT_sk_type(sk))
#define sk_ASN1_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_OBJECT_sk_type(sk))
#define sk_ASN1_OBJECT_dup(sk) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_ASN1_OBJECT_sk_type(sk)))
#define sk_ASN1_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_copyfunc_type(copyfunc), ossl_check_ASN1_OBJECT_freefunc_type(freefunc)))
#define sk_ASN1_OBJECT_set_cmp_func(sk, cmp) ((sk_ASN1_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_compfunc_type(cmp)))


DECLARE_ASN1_FUNCTIONS(ASN1_OBJECT)

ASN1_STRING *ASN1_STRING_new(void);
void ASN1_STRING_free(ASN1_STRING *a);
void ASN1_STRING_clear_free(ASN1_STRING *a);
int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str);
DECLARE_ASN1_DUP_FUNCTION(ASN1_STRING)
ASN1_STRING *ASN1_STRING_type_new(int type);
int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b);
  /*
   * Since this is used to store all sorts of things, via macros, for now,
   * make its data void *
   */
int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len);
int ASN1_STRING_length(const ASN1_STRING *x);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 void ASN1_STRING_length_set(ASN1_STRING *x, int n);
# endif
int ASN1_STRING_type(const ASN1_STRING *x);
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 unsigned char *ASN1_STRING_data(ASN1_STRING *x);
# endif
const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x);

DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING)
int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length);
int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value);
int ASN1_BIT_STRING_get_bit(const ASN1_BIT_STRING *a, int n);
int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a,
                          const unsigned char *flags, int flags_len);

int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs,
                               BIT_STRING_BITNAME *tbl, int indent);
int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl);
int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value,
                            BIT_STRING_BITNAME *tbl);

SKM_DEFINE_STACK_OF_INTERNAL(ASN1_INTEGER, ASN1_INTEGER, ASN1_INTEGER)
#define sk_ASN1_INTEGER_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_INTEGER_sk_type(sk))
#define sk_ASN1_INTEGER_value(sk, idx) ((ASN1_INTEGER *)OPENSSL_sk_value(ossl_check_const_ASN1_INTEGER_sk_type(sk), (idx)))
#define sk_ASN1_INTEGER_new(cmp) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new(ossl_check_ASN1_INTEGER_compfunc_type(cmp)))
#define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_null())
#define sk_ASN1_INTEGER_new_reserve(cmp, n) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_INTEGER_compfunc_type(cmp), (n)))
#define sk_ASN1_INTEGER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_INTEGER_sk_type(sk), (n))
#define sk_ASN1_INTEGER_free(sk) OPENSSL_sk_free(ossl_check_ASN1_INTEGER_sk_type(sk))
#define sk_ASN1_INTEGER_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_INTEGER_sk_type(sk))
#define sk_ASN1_INTEGER_delete(sk, i) ((ASN1_INTEGER *)OPENSSL_sk_delete(ossl_check_ASN1_INTEGER_sk_type(sk), (i)))
#define sk_ASN1_INTEGER_delete_ptr(sk, ptr) ((ASN1_INTEGER *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)))
#define sk_ASN1_INTEGER_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))
#define sk_ASN1_INTEGER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))
#define sk_ASN1_INTEGER_pop(sk) ((ASN1_INTEGER *)OPENSSL_sk_pop(ossl_check_ASN1_INTEGER_sk_type(sk)))
#define sk_ASN1_INTEGER_shift(sk) ((ASN1_INTEGER *)OPENSSL_sk_shift(ossl_check_ASN1_INTEGER_sk_type(sk)))
#define sk_ASN1_INTEGER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_INTEGER_sk_type(sk),ossl_check_ASN1_INTEGER_freefunc_type(freefunc))
#define sk_ASN1_INTEGER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), (idx))
#define sk_ASN1_INTEGER_set(sk, idx, ptr) ((ASN1_INTEGER *)OPENSSL_sk_set(ossl_check_ASN1_INTEGER_sk_type(sk), (idx), ossl_check_ASN1_INTEGER_type(ptr)))
#define sk_ASN1_INTEGER_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))
#define sk_ASN1_INTEGER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))
#define sk_ASN1_INTEGER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), pnum)
#define sk_ASN1_INTEGER_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_INTEGER_sk_type(sk))
#define sk_ASN1_INTEGER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_INTEGER_sk_type(sk))
#define sk_ASN1_INTEGER_dup(sk) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_dup(ossl_check_const_ASN1_INTEGER_sk_type(sk)))
#define sk_ASN1_INTEGER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_copyfunc_type(copyfunc), ossl_check_ASN1_INTEGER_freefunc_type(freefunc)))
#define sk_ASN1_INTEGER_set_cmp_func(sk, cmp) ((sk_ASN1_INTEGER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_compfunc_type(cmp)))



DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER)
ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
                                long length);
DECLARE_ASN1_DUP_FUNCTION(ASN1_INTEGER)
int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y);

DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED)

int ASN1_UTCTIME_check(const ASN1_UTCTIME *a);
ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t);
ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
                               int offset_day, long offset_sec);
int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str);
int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t);

int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a);
ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
                                               time_t t);
ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
                                               time_t t, int offset_day,
                                               long offset_sec);
int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str);

int ASN1_TIME_diff(int *pday, int *psec,
                   const ASN1_TIME *from, const ASN1_TIME *to);

DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING)
DECLARE_ASN1_DUP_FUNCTION(ASN1_OCTET_STRING)
int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a,
                          const ASN1_OCTET_STRING *b);
int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data,
                          int len);

SKM_DEFINE_STACK_OF_INTERNAL(ASN1_UTF8STRING, ASN1_UTF8STRING, ASN1_UTF8STRING)
#define sk_ASN1_UTF8STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))
#define sk_ASN1_UTF8STRING_value(sk, idx) ((ASN1_UTF8STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), (idx)))
#define sk_ASN1_UTF8STRING_new(cmp) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp)))
#define sk_ASN1_UTF8STRING_new_null() ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_null())
#define sk_ASN1_UTF8STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp), (n)))
#define sk_ASN1_UTF8STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_UTF8STRING_sk_type(sk), (n))
#define sk_ASN1_UTF8STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_UTF8STRING_sk_type(sk))
#define sk_ASN1_UTF8STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_UTF8STRING_sk_type(sk))
#define sk_ASN1_UTF8STRING_delete(sk, i) ((ASN1_UTF8STRING *)OPENSSL_sk_delete(ossl_check_ASN1_UTF8STRING_sk_type(sk), (i)))
#define sk_ASN1_UTF8STRING_delete_ptr(sk, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)))
#define sk_ASN1_UTF8STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))
#define sk_ASN1_UTF8STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))
#define sk_ASN1_UTF8STRING_pop(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_pop(ossl_check_ASN1_UTF8STRING_sk_type(sk)))
#define sk_ASN1_UTF8STRING_shift(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_shift(ossl_check_ASN1_UTF8STRING_sk_type(sk)))
#define sk_ASN1_UTF8STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_UTF8STRING_sk_type(sk),ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc))
#define sk_ASN1_UTF8STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), (idx))
#define sk_ASN1_UTF8STRING_set(sk, idx, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_set(ossl_check_ASN1_UTF8STRING_sk_type(sk), (idx), ossl_check_ASN1_UTF8STRING_type(ptr)))
#define sk_ASN1_UTF8STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))
#define sk_ASN1_UTF8STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))
#define sk_ASN1_UTF8STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), pnum)
#define sk_ASN1_UTF8STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_UTF8STRING_sk_type(sk))
#define sk_ASN1_UTF8STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))
#define sk_ASN1_UTF8STRING_dup(sk) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)))
#define sk_ASN1_UTF8STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_copyfunc_type(copyfunc), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc)))
#define sk_ASN1_UTF8STRING_set_cmp_func(sk, cmp) ((sk_ASN1_UTF8STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_compfunc_type(cmp)))


DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING)
DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING)
DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING)
DECLARE_ASN1_FUNCTIONS(ASN1_NULL)
DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING)

int UTF8_getc(const unsigned char *str, int len, unsigned long *val);
int UTF8_putc(unsigned char *str, int len, unsigned long value);

SKM_DEFINE_STACK_OF_INTERNAL(ASN1_GENERALSTRING, ASN1_GENERALSTRING, ASN1_GENERALSTRING)
#define sk_ASN1_GENERALSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))
#define sk_ASN1_GENERALSTRING_value(sk, idx) ((ASN1_GENERALSTRING *)OPENSSL_sk_value(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), (idx)))
#define sk_ASN1_GENERALSTRING_new(cmp) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp)))
#define sk_ASN1_GENERALSTRING_new_null() ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_null())
#define sk_ASN1_GENERALSTRING_new_reserve(cmp, n) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp), (n)))
#define sk_ASN1_GENERALSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (n))
#define sk_ASN1_GENERALSTRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk))
#define sk_ASN1_GENERALSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_GENERALSTRING_sk_type(sk))
#define sk_ASN1_GENERALSTRING_delete(sk, i) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (i)))
#define sk_ASN1_GENERALSTRING_delete_ptr(sk, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)))
#define sk_ASN1_GENERALSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))
#define sk_ASN1_GENERALSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))
#define sk_ASN1_GENERALSTRING_pop(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_pop(ossl_check_ASN1_GENERALSTRING_sk_type(sk)))
#define sk_ASN1_GENERALSTRING_shift(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_shift(ossl_check_ASN1_GENERALSTRING_sk_type(sk)))
#define sk_ASN1_GENERALSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk),ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc))
#define sk_ASN1_GENERALSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), (idx))
#define sk_ASN1_GENERALSTRING_set(sk, idx, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_set(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (idx), ossl_check_ASN1_GENERALSTRING_type(ptr)))
#define sk_ASN1_GENERALSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))
#define sk_ASN1_GENERALSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))
#define sk_ASN1_GENERALSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), pnum)
#define sk_ASN1_GENERALSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_GENERALSTRING_sk_type(sk))
#define sk_ASN1_GENERALSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))
#define sk_ASN1_GENERALSTRING_dup(sk) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)))
#define sk_ASN1_GENERALSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_copyfunc_type(copyfunc), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc)))
#define sk_ASN1_GENERALSTRING_set_cmp_func(sk, cmp) ((sk_ASN1_GENERALSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp)))


DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE)

DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING)
DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT)
DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING)
DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING)
DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING)
DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING)
DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME)
DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME)
DECLARE_ASN1_FUNCTIONS(ASN1_TIME)

DECLARE_ASN1_DUP_FUNCTION(ASN1_TIME)
DECLARE_ASN1_DUP_FUNCTION(ASN1_UTCTIME)
DECLARE_ASN1_DUP_FUNCTION(ASN1_GENERALIZEDTIME)

DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF)

ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t);
ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t,
                         int offset_day, long offset_sec);
int ASN1_TIME_check(const ASN1_TIME *t);
ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t,
                                                   ASN1_GENERALIZEDTIME **out);
int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str);
int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm);
int ASN1_TIME_normalize(ASN1_TIME *s);
int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t);
int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b);

int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a);
int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size);
int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a);
int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size);
int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a);
int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size);
int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type);
int i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a);

int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num);
ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len,
                                const char *sn, const char *ln);

int ASN1_INTEGER_get_int64(int64_t *pr, const ASN1_INTEGER *a);
int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r);
int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a);
int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r);

int ASN1_INTEGER_set(ASN1_INTEGER *a, long v);
long ASN1_INTEGER_get(const ASN1_INTEGER *a);
ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai);
BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn);

int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a);
int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r);


int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v);
long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a);
ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai);
BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai, BIGNUM *bn);

/* General */
/* given a string, return the correct type, max is the maximum length */
int ASN1_PRINTABLE_type(const unsigned char *s, int max);

unsigned long ASN1_tag2bit(int tag);

/* SPECIALS */
int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag,
                    int *pclass, long omax);
int ASN1_check_infinite_end(unsigned char **p, long len);
int ASN1_const_check_infinite_end(const unsigned char **p, long len);
void ASN1_put_object(unsigned char **pp, int constructed, int length,
                     int tag, int xclass);
int ASN1_put_eoc(unsigned char **pp);
int ASN1_object_size(int constructed, int length, int tag);

/* Used to implement other functions */
void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, const void *x);

# define ASN1_dup_of(type,i2d,d2i,x) \
    ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \
                     CHECKED_D2I_OF(type, d2i), \
                     CHECKED_PTR_OF(const type, x)))

void *ASN1_item_dup(const ASN1_ITEM *it, const void *x);
int ASN1_item_sign_ex(const ASN1_ITEM *it, X509_ALGOR *algor1,
                      X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
                      const void *data, const ASN1_OCTET_STRING *id,
                      EVP_PKEY *pkey, const EVP_MD *md, OSSL_LIB_CTX *libctx,
                      const char *propq);
int ASN1_item_verify_ex(const ASN1_ITEM *it, const X509_ALGOR *alg,
                        const ASN1_BIT_STRING *signature, const void *data,
                        const ASN1_OCTET_STRING *id, EVP_PKEY *pkey,
                        OSSL_LIB_CTX *libctx, const char *propq);

/* ASN1 alloc/free macros for when a type is only used internally */

# define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type))
# define M_ASN1_free_of(x, type) \
                ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type))

# ifndef OPENSSL_NO_STDIO
void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x);

#  define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \
    ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \
                        CHECKED_D2I_OF(type, d2i), \
                        in, \
                        CHECKED_PPTR_OF(type, x)))

void *ASN1_item_d2i_fp_ex(const ASN1_ITEM *it, FILE *in, void *x,
                          OSSL_LIB_CTX *libctx, const char *propq);
void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x);
int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, const void *x);

#  define ASN1_i2d_fp_of(type,i2d,out,x) \
    (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \
                 out, \
                 CHECKED_PTR_OF(const type, x)))

int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, const void *x);
int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags);
# endif

int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in);

void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x);

#  define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \
    ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \
                          CHECKED_D2I_OF(type, d2i), \
                          in, \
                          CHECKED_PPTR_OF(type, x)))

void *ASN1_item_d2i_bio_ex(const ASN1_ITEM *it, BIO *in, void *pval,
                           OSSL_LIB_CTX *libctx, const char *propq);
void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *pval);
int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, const void *x);

#  define ASN1_i2d_bio_of(type,i2d,out,x) \
    (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \
                  out, \
                  CHECKED_PTR_OF(const type, x)))

int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, const void *x);
BIO *ASN1_item_i2d_mem_bio(const ASN1_ITEM *it, const ASN1_VALUE *val);
int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a);
int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a);
int ASN1_TIME_print(BIO *bp, const ASN1_TIME *tm);
int ASN1_TIME_print_ex(BIO *bp, const ASN1_TIME *tm, unsigned long flags);
int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v);
int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags);
int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off);
int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num,
                  unsigned char *buf, int off);
int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent);
int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent,
                    int dump);
const char *ASN1_tag2str(int tag);

/* Used to load and write Netscape format cert */

int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s);

int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len);
int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len);
int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num,
                                  unsigned char *data, int len);
int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num,
                                  unsigned char *data, int max_len);

void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it);

ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it,
                            ASN1_OCTET_STRING **oct);

void ASN1_STRING_set_default_mask(unsigned long mask);
int ASN1_STRING_set_default_mask_asc(const char *p);
unsigned long ASN1_STRING_get_default_mask(void);
int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len,
                       int inform, unsigned long mask);
int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
                        int inform, unsigned long mask,
                        long minsize, long maxsize);

ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out,
                                    const unsigned char *in, int inlen,
                                    int inform, int nid);
ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid);
int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long);
void ASN1_STRING_TABLE_cleanup(void);

/* ASN1 template functions */

/* Old API compatible functions */
ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it);
ASN1_VALUE *ASN1_item_new_ex(const ASN1_ITEM *it, OSSL_LIB_CTX *libctx,
                             const char *propq);
void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it);
ASN1_VALUE *ASN1_item_d2i_ex(ASN1_VALUE **val, const unsigned char **in,
                             long len, const ASN1_ITEM *it,
                             OSSL_LIB_CTX *libctx, const char *propq);
ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in,
                          long len, const ASN1_ITEM *it);
int ASN1_item_i2d(const ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it);
int ASN1_item_ndef_i2d(const ASN1_VALUE *val, unsigned char **out,
                       const ASN1_ITEM *it);

void ASN1_add_oid_module(void);
void ASN1_add_stable_module(void);

ASN1_TYPE *ASN1_generate_nconf(const char *str, CONF *nconf);
ASN1_TYPE *ASN1_generate_v3(const char *str, X509V3_CTX *cnf);
int ASN1_str2mask(const char *str, unsigned long *pmask);

/* ASN1 Print flags */

/* Indicate missing OPTIONAL fields */
# define ASN1_PCTX_FLAGS_SHOW_ABSENT             0x001
/* Mark start and end of SEQUENCE */
# define ASN1_PCTX_FLAGS_SHOW_SEQUENCE           0x002
/* Mark start and end of SEQUENCE/SET OF */
# define ASN1_PCTX_FLAGS_SHOW_SSOF               0x004
/* Show the ASN1 type of primitives */
# define ASN1_PCTX_FLAGS_SHOW_TYPE               0x008
/* Don't show ASN1 type of ANY */
# define ASN1_PCTX_FLAGS_NO_ANY_TYPE             0x010
/* Don't show ASN1 type of MSTRINGs */
# define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE         0x020
/* Don't show field names in SEQUENCE */
# define ASN1_PCTX_FLAGS_NO_FIELD_NAME           0x040
/* Show structure names of each SEQUENCE field */
# define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME  0x080
/* Don't show structure name even at top level */
# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME          0x100

int ASN1_item_print(BIO *out, const ASN1_VALUE *ifld, int indent,
                    const ASN1_ITEM *it, const ASN1_PCTX *pctx);
ASN1_PCTX *ASN1_PCTX_new(void);
void ASN1_PCTX_free(ASN1_PCTX *p);
unsigned long ASN1_PCTX_get_flags(const ASN1_PCTX *p);
void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags);
unsigned long ASN1_PCTX_get_nm_flags(const ASN1_PCTX *p);
void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags);
unsigned long ASN1_PCTX_get_cert_flags(const ASN1_PCTX *p);
void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags);
unsigned long ASN1_PCTX_get_oid_flags(const ASN1_PCTX *p);
void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags);
unsigned long ASN1_PCTX_get_str_flags(const ASN1_PCTX *p);
void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags);

ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb) (ASN1_SCTX *ctx));
void ASN1_SCTX_free(ASN1_SCTX *p);
const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p);
const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p);
unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p);
void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data);
void *ASN1_SCTX_get_app_data(ASN1_SCTX *p);

const BIO_METHOD *BIO_f_asn1(void);

/* cannot constify val because of CMS_stream() */
BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it);

int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
                        const ASN1_ITEM *it);
int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
                              const char *hdr, const ASN1_ITEM *it);
/* cannot constify val because of CMS_dataFinal() */
int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
                     int ctype_nid, int econt_nid,
                     STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it);
int SMIME_write_ASN1_ex(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
                        int ctype_nid, int econt_nid,
                        STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it,
                        OSSL_LIB_CTX *libctx, const char *propq);
ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it);
ASN1_VALUE *SMIME_read_ASN1_ex(BIO *bio, int flags, BIO **bcont,
                               const ASN1_ITEM *it, ASN1_VALUE **x,
                               OSSL_LIB_CTX *libctx, const char *propq);
int SMIME_crlf_copy(BIO *in, BIO *out, int flags);
int SMIME_text(BIO *in, BIO *out);

const ASN1_ITEM *ASN1_ITEM_lookup(const char *name);
const ASN1_ITEM *ASN1_ITEM_get(size_t i);

/* Legacy compatibility */
# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \
         DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
         DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name)
# define DECLARE_ASN1_FUNCTIONS_const(type) DECLARE_ASN1_FUNCTIONS(type)
# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \
         DECLARE_ASN1_ENCODE_FUNCTIONS(type, name)
# define I2D_OF_const(type) I2D_OF(type)
# define ASN1_dup_of_const(type,i2d,d2i,x) ASN1_dup_of(type,i2d,d2i,x)
# define ASN1_i2d_fp_of_const(type,i2d,out,x) ASN1_i2d_fp_of(type,i2d,out,x)
# define ASN1_i2d_bio_of_const(type,i2d,out,x) ASN1_i2d_bio_of(type,i2d,out,x)

# ifdef  __cplusplus
}
# endif
#endif


================================================
FILE: app/src/main/cpp/include/openssl/asn1_mac.h
================================================
/*
 * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */

#error "This file is obsolete; please update your software."


================================================
FILE: app/src/main/cpp/include/openssl/asn1err.h
================================================
/*
 * Generated by util/mkerr.pl DO NOT EDIT
 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */

#ifndef OPENSSL_ASN1ERR_H
# define OPENSSL_ASN1ERR_H
# pragma once

# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>



/*
 * ASN1 reason codes.
 */
# define ASN1_R_ADDING_OBJECT                             171
# define ASN1_R_ASN1_PARSE_ERROR                          203
# define ASN1_R_ASN1_SIG_PARSE_ERROR                      204
# define ASN1_R_AUX_ERROR                                 100
# define ASN1_R_BAD_OBJECT_HEADER                         102
# define ASN1_R_BAD_TEMPLATE                              230
# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH                 214
# define ASN1_R_BN_LIB                                    105
# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH                   106
# define ASN1_R_BUFFER_TOO_SMALL                          107
# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER           108
# define ASN1_R_CONTEXT_NOT_INITIALISED                   217
# define ASN1_R_DATA_IS_WRONG                             109
# define ASN1_R_DECODE_ERROR                              110
# define ASN1_R_DEPTH_EXCEEDED                            174
# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED         198
# define ASN1_R_ENCODE_ERROR                              112
# define ASN1_R_ERROR_GETTING_TIME                        173
# define ASN1_R_ERROR_LOADING_SECTION                     172
# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS               114
# define ASN1_R_EXPECTING_AN_INTEGER                      115
# define ASN1_R_EXPECTING_AN_OBJECT                       116
# define ASN1_R_EXPLICIT_LENGTH_MISMATCH                  119
# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED              120
# define ASN1_R_FIELD_MISSING                             121
# define ASN1_R_FIRST_NUM_TOO_LARGE                       122
# define ASN1_R_HEADER_TOO_LONG                           123
# define ASN1_R_ILLEGAL_BITSTRING_FORMAT                  175
# define ASN1_R_ILLEGAL_BOOLEAN                           176
# define ASN1_R_ILLEGAL_CHARACTERS                        124
# define ASN1_R_ILLEGAL_FORMAT                            177
# define ASN1_R_ILLEGAL_HEX                               178
# define ASN1_R_ILLEGAL_IMPLICIT_TAG                      179
# define ASN1_R_ILLEGAL_INTEGER                           180
# define ASN1_R_ILLEGAL_NEGATIVE_VALUE                    226
# define ASN1_R_ILLEGAL_NESTED_TAGGING                    181
# define ASN1_R_ILLEGAL_NULL                              125
# define ASN1_R_ILLEGAL_NULL_VALUE                        182
# define ASN1_R_ILLEGAL_OBJECT                            183
# define ASN1_R_ILLEGAL_OPTIONAL_ANY                      126
# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE          170
# define ASN1_R_ILLEGAL_PADDING                           221
# define ASN1_R_ILLEGAL_TAGGED_ANY                        127
# define ASN1_R_ILLEGAL_TIME_VALUE                        184
# define ASN1_R_ILLEGAL_ZERO_CONTENT                      222
# define ASN1_R_INTEGER_NOT_ASCII_FORMAT                  185
# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG                128
# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT              220
# define ASN1_R_INVALID_BMPSTRING_LENGTH                  129
# define ASN1_R_INVALID_DIGIT                             130
# define ASN1_R_INVALID_MIME_TYPE                         205
# define ASN1_R_INVALID_MODIFIER                          186
# define ASN1_R_INVALID_NUMBER                            187
# define ASN1_R_INVALID_OBJECT_ENCODING                   216
# define ASN1_R_INVALID_SCRYPT_PARAMETERS                 227
# define ASN1_R_INVALID_SEPARATOR                         131
# define ASN1_R_INVALID_STRING_TABLE_VALUE                218
# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH            133
# define ASN1_R_INVALID_UTF8STRING                        134
# define ASN1_R_INVALID_VALUE                             219
# define ASN1_R_LENGTH_TOO_LONG                           231
# define ASN1_R_LIST_ERROR                                188
# define ASN1_R_MIME_NO_CONTENT_TYPE                      206
# define ASN1_R_MIME_PARSE_ERROR                          207
# define ASN1_R_MIME_SIG_PARSE_ERROR                      208
# define ASN1_R_MISSING_EOC                               137
# define ASN1_R_MISSING_SECOND_NUMBER                     138
# define ASN1_R_MISSING_VALUE                             189
# define ASN1_R_MSTRING_NOT_UNIVERSAL                     139
# define ASN1_R_MSTRING_WRONG_TAG                         140
# define ASN1_R_NESTED_ASN1_STRING                        197
# define ASN1_R_NESTED_TOO_DEEP                           201
# define ASN1_R_NON_HEX_CHARACTERS                        141
# define ASN1_R_NOT_ASCII_FORMAT                          190
# define ASN1_R_NOT_ENOUGH_DATA                           142
# define ASN1_R_NO_CONTENT_TYPE                           209
# define ASN1_R_NO_MATCHING_CHOICE_TYPE                   143
# define ASN1_R_NO_MULTIPART_BODY_FAILURE                 210
# define ASN1_R_NO_MULTIPART_BOUNDARY                     211
# define ASN1_R_NO_SIG_CONTENT_TYPE                       212
# define ASN1_R_NULL_IS_WRONG_LENGTH                      144
# define ASN1_R_OBJECT_NOT_ASCII_FORMAT                   191
# define ASN1_R_ODD_NUMBER_OF_CHARS                       145
# define ASN1_R_SECOND_NUMBER_TOO_LARGE                   147
# define ASN1_R_SEQUENCE_LENGTH_MISMATCH                  148
# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED                  149
# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG              192
# define ASN1_R_SHORT_LINE                                150
# define ASN1_R_SIG_INVALID_MIME_TYPE                     213
# define ASN1_R_STREAMING_NOT_SUPPORTED                   202
# define ASN1_R_STRING_TOO_LONG                           151
# define ASN1_R_STRING_TOO_SHORT                          152
# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154
# define ASN1_R_TIME_NOT_ASCII_FORMAT                     193
# define ASN1_R_TOO_LARGE                                 223
# define ASN1_R_TOO_LONG                                  155
# define ASN1_R_TOO_SMALL                                 224
# define ASN1_R_TYPE_NOT_CONSTRUCTED                      156
# define ASN1_R_TYPE_NOT_PRIMITIVE                        195
# define ASN1_R_UNEXPECTED_EOC                            159
# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH           215
# define ASN1_R_UNKNOWN_DIGEST                            229
# define ASN1_R_UNKNOWN_FORMAT                            160
# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM          161
# define ASN1_R_UNKNOWN_OBJECT_TYPE                       162
# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE                   163
# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM               199
# define ASN1_R_UNKNOWN_TAG                               194
# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE           164
# define ASN1_R_UNSUPPORTED_CIPHER                        228
# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE               167
# define ASN1_R_UNSUPPORTED_TYPE                          196
# define ASN1_R_WRONG_INTEGER_TYPE                        225
# define ASN1_R_WRONG_PUBLIC_KEY_TYPE                     200
# define ASN1_R_WRONG_TAG                                 168

#endif


================================================
FILE: app/src/main/cpp/include/openssl/asn1t.h
================================================
/*
 * WARNING: do not edit!
 * Generated by Makefile from openssl-3.1.4/include/openssl/asn1t.h.in
 *
 * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */



#ifndef OPENSSL_ASN1T_H
# define OPENSSL_ASN1T_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_ASN1T_H
# endif

# include <stddef.h>
# include <openssl/e_os2.h>
# include <openssl/asn1.h>

# ifdef OPENSSL_BUILD_SHLIBCRYPTO
#  undef OPENSSL_EXTERN
#  define OPENSSL_EXTERN OPENSSL_EXPORT
# endif

/* ASN1 template defines, structures and functions */

#ifdef  __cplusplus
extern "C" {
#endif

/*-
 * These are the possible values for the itype field of the
 * ASN1_ITEM structure and determine how it is interpreted.
 *
 * For PRIMITIVE types the underlying type
 * determines the behaviour if items is NULL.
 *
 * Otherwise templates must contain a single
 * template and the type is treated in the
 * same way as the type specified in the template.
 *
 * For SEQUENCE types the templates field points
 * to the members, the size field is the
 * structure size.
 *
 * For CHOICE types the templates field points
 * to each possible member (typically a union)
 * and the 'size' field is the offset of the
 * selector.
 *
 * The 'funcs' field is used for application-specific
 * data and functions.
 *
 * The EXTERN type uses a new style d2i/i2d.
 * The new style should be used where possible
 * because it avoids things like the d2i IMPLICIT
 * hack.
 *
 * MSTRING is a multiple string type, it is used
 * for a CHOICE of character strings where the
 * actual strings all occupy an ASN1_STRING
 * structure. In this case the 'utype' field
 * has a special meaning, it is used as a mask
 * of acceptable types using the B_ASN1 constants.
 *
 * NDEF_SEQUENCE is the same as SEQUENCE except
 * that it will use indefinite length constructed
 * encoding if requested.
 *
 */

# define ASN1_ITYPE_PRIMITIVE            0x0
# define ASN1_ITYPE_SEQUENCE             0x1
# define ASN1_ITYPE_CHOICE               0x2
/* unused value                          0x3 */
# define ASN1_ITYPE_EXTERN               0x4
# define ASN1_ITYPE_MSTRING              0x5
# define ASN1_ITYPE_NDEF_SEQUENCE        0x6

/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */
# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)((iptr)()))

/* Macros for start and end of ASN1_ITEM definition */

# define ASN1_ITEM_start(itname) \
        const ASN1_ITEM * itname##_it(void) \
        { \
                static const ASN1_ITEM local_it = {

# define static_ASN1_ITEM_start(itname) \
        static ASN1_ITEM_start(itname)

# define ASN1_ITEM_end(itname) \
                }; \
        return &local_it; \
        }

/* Macros to aid ASN1 template writing */

# define ASN1_ITEM_TEMPLATE(tname) \
        static const ASN1_TEMPLATE tname##_item_tt

# define ASN1_ITEM_TEMPLATE_END(tname) \
        ;\
        ASN1_ITEM_start(tname) \
                ASN1_ITYPE_PRIMITIVE,\
                -1,\
                &tname##_item_tt,\
                0,\
                NULL,\
                0,\
                #tname \
        ASN1_ITEM_end(tname)
# define static_ASN1_ITEM_TEMPLATE_END(tname) \
        ;\
        static_ASN1_ITEM_start(tname) \
                ASN1_ITYPE_PRIMITIVE,\
                -1,\
                &tname##_item_tt,\
                0,\
                NULL,\
                0,\
                #tname \
        ASN1_ITEM_end(tname)

/* This is a ASN1 type which just embeds a template */

/*-
 * This pair helps declare a SEQUENCE. We can do:
 *
 *      ASN1_SEQUENCE(stname) = {
 *              ... SEQUENCE components ...
 *      } ASN1_SEQUENCE_END(stname)
 *
 *      This will produce an ASN1_ITEM called stname_it
 *      for a structure called stname.
 *
 *      If you want the same structure but a different
 *      name then use:
 *
 *      ASN1_SEQUENCE(itname) = {
 *              ... SEQUENCE components ...
 *      } ASN1_SEQUENCE_END_name(stname, itname)
 *
 *      This will create an item called itname_it using
 *      a structure called stname.
 */

# define ASN1_SEQUENCE(tname) \
        static const ASN1_TEMPLATE tname##_seq_tt[]

# define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname)

# define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname)

# define ASN1_SEQUENCE_END_name(stname, tname) \
        ;\
        ASN1_ITEM_start(tname) \
                ASN1_ITYPE_SEQUENCE,\
                V_ASN1_SEQUENCE,\
                tname##_seq_tt,\
                sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
                NULL,\
                sizeof(stname),\
                #tname \
        ASN1_ITEM_end(tname)

# define static_ASN1_SEQUENCE_END_name(stname, tname) \
        ;\
        static_ASN1_ITEM_start(tname) \
                ASN1_ITYPE_SEQUENCE,\
                V_ASN1_SEQUENCE,\
                tname##_seq_tt,\
                sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
                NULL,\
                sizeof(stname),\
                #stname \
        ASN1_ITEM_end(tname)

# define ASN1_NDEF_SEQUENCE(tname) \
        ASN1_SEQUENCE(tname)

# define ASN1_NDEF_SEQUENCE_cb(tname, cb) \
        ASN1_SEQUENCE_cb(tname, cb)

# define ASN1_SEQUENCE_cb(tname, cb) \
        static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \
        ASN1_SEQUENCE(tname)

# define ASN1_SEQUENCE_const_cb(tname, const_cb) \
        static const ASN1_AUX tname##_aux = \
            {NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb}; \
        ASN1_SEQUENCE(tname)

# define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \
        static const ASN1_AUX tname##_aux = \
            {NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb}; \
        ASN1_SEQUENCE(tname)

# define ASN1_SEQUENCE_ref(tname, cb) \
        static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0, NULL}; \
        ASN1_SEQUENCE(tname)

# define ASN1_SEQUENCE_enc(tname, enc, cb) \
        static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc), NULL}; \
        ASN1_SEQUENCE(tname)

# define ASN1_NDEF_SEQUENCE_END(tname) \
        ;\
        ASN1_ITEM_start(tname) \
                ASN1_ITYPE_NDEF_SEQUENCE,\
                V_ASN1_SEQUENCE,\
                tname##_seq_tt,\
                sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
                NULL,\
                sizeof(tname),\
                #tname \
        ASN1_ITEM_end(tname)
# define static_ASN1_NDEF_SEQUENCE_END(tname) \
        ;\
        static_ASN1_ITEM_start(tname) \
                ASN1_ITYPE_NDEF_SEQUENCE,\
                V_ASN1_SEQUENCE,\
                tname##_seq_tt,\
                sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
                NULL,\
                sizeof(tname),\
                #tname \
        ASN1_ITEM_end(tname)


# define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)

# define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
# define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname)

# define ASN1_SEQUENCE_END_ref(stname, tname) \
        ;\
        ASN1_ITEM_start(tname) \
                ASN1_ITYPE_SEQUENCE,\
                V_ASN1_SEQUENCE,\
                tname##_seq_tt,\
                sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
                &tname##_aux,\
                sizeof(stname),\
                #tname \
        ASN1_ITEM_end(tname)
# define static_ASN1_SEQUENCE_END_ref(stname, tname) \
        ;\
        static_ASN1_ITEM_start(tname) \
                ASN1_ITYPE_SEQUENCE,\
                V_ASN1_SEQUENCE,\
                tname##_seq_tt,\
                sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
                &tname##_aux,\
                sizeof(stname),\
                #stname \
        ASN1_ITEM_end(tname)

# define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \
        ;\
        ASN1_ITEM_start(tname) \
                ASN1_ITYPE_NDEF_SEQUENCE,\
                V_ASN1_SEQUENCE,\
                tname##_seq_tt,\
                sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
                &tname##_aux,\
                sizeof(stname),\
                #stname \
        ASN1_ITEM_end(tname)

/*-
 * This pair helps declare a CHOICE type. We can do:
 *
 *      ASN1_CHOICE(chname) = {
 *              ... CHOICE options ...
 *      ASN1_CHOICE_END(chname)
 *
 *      This will produce an ASN1_ITEM called chname_it
 *      for a structure called chname. The structure
 *      definition must look like this:
 *      typedef struct {
 *              int type;
 *              union {
 *                      ASN1_SOMETHING *opt1;
 *                      ASN1_SOMEOTHER *opt2;
 *              } value;
 *      } chname;
 *
 *      the name of the selector must be 'type'.
 *      to use an alternative selector name use the
 *      ASN1_CHOICE_END_selector() version.
 */

# define ASN1_CHOICE(tname) \
        static const ASN1_TEMPLATE tname##_ch_tt[]

# define ASN1_CHOICE_cb(tname, cb) \
        static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \
        ASN1_CHOICE(tname)

# define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname)

# define static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname)

# define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type)

# define static_ASN1_CHOICE_END_name(stname, tname) static_ASN1_CHOICE_END_selector(stname, tname, type)

# define ASN1_CHOICE_END_selector(stname, tname, selname) \
        ;\
        ASN1_ITEM_start(tname) \
                ASN1_ITYPE_CHOICE,\
                offsetof(stname,selname) ,\
                tname##_ch_tt,\
                sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
                NULL,\
                sizeof(stname),\
                #stname \
        ASN1_ITEM_end(tname)

# define static_ASN1_CHOICE_END_selector(stname, tname, selname) \
        ;\
        static_ASN1_ITEM_start(tname) \
                ASN1_ITYPE_CHOICE,\
                offsetof(stname,selname) ,\
                tname##_ch_tt,\
                sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
                NULL,\
                sizeof(stname),\
                #stname \
        ASN1_ITEM_end(tname)

# define ASN1_CHOICE_END_cb(stname, tname, selname) \
        ;\
        ASN1_ITEM_start(tname) \
                ASN1_ITYPE_CHOICE,\
                offsetof(stname,selname) ,\
                tname##_ch_tt,\
                sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
                &tname##_aux,\
                sizeof(stname),\
                #stname \
        ASN1_ITEM_end(tname)

/* This helps with the template wrapper form of ASN1_ITEM */

# define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \
        (flags), (tag), 0,\
        #name, ASN1_ITEM_ref(type) }

/* These help with SEQUENCE or CHOICE components */

/* used to declare other types */

# define ASN1_EX_TYPE(flags, tag, stname, field, type) { \
        (flags), (tag), offsetof(stname, field),\
        #field, ASN1_ITEM_ref(type) }

/* implicit and explicit helper macros */

# define ASN1_IMP_EX(stname, field, type, tag, ex) \
         ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | (ex), tag, stname, field, type)

# define ASN1_EXP_EX(stname, field, type, tag, ex) \
         ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | (ex), tag, stname, field, type)

/* Any defined by macros: the field used is in the table itself */

# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb }
# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb }

/* Plain simple type */
# define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type)
/* Embedded simple type */
# define ASN1_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_EMBED,0, stname, field, type)

/* OPTIONAL simple type */
# define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type)
# define ASN1_OPT_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED, 0, stname, field, type)

/* IMPLICIT tagged simple type */
# define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0)
# define ASN1_IMP_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_EMBED)

/* IMPLICIT tagged OPTIONAL simple type */
# define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
# define ASN1_IMP_OPT_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED)

/* Same as above but EXPLICIT */

# define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0)
# define ASN1_EXP_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_EMBED)
# define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
# define ASN1_EXP_OPT_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED)

/* SEQUENCE OF type */
# define ASN1_SEQUENCE_OF(stname, field, type) \
                ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type)

/* OPTIONAL SEQUENCE OF */
# define ASN1_SEQUENCE_OF_OPT(stname, field, type) \
                ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)

/* Same as above but for SET OF */

# define ASN1_SET_OF(stname, field, type) \
                ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type)

# define ASN1_SET_OF_OPT(stname, field, type) \
                ASN1_EX_TYPE(ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)

/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */

# define ASN1_IMP_SET_OF(stname, field, type, tag) \
                        ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)

# define ASN1_EXP_SET_OF(stname, field, type, tag) \
                        ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)

# define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \
                        ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)

# define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \
                        ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)

# define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \
                        ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)

# define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \
                        ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)

# define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \
                        ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)

# define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \
                        ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)

/* EXPLICIT using indefinite length constructed form */
# define ASN1_NDEF_EXP(stname, field, type, tag) \
                        ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF)

/* EXPLICIT OPTIONAL using indefinite length constructed form */
# define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \
                        ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF)

/* Macros for the ASN1_ADB structure */

# define ASN1_ADB(name) \
        static const ASN1_ADB_TABLE name##_adbtbl[]

# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \
        ;\
        static const ASN1_ITEM *name##_adb(void) \
        { \
        static const ASN1_ADB internal_adb = \
                {\
                flags,\
                offsetof(name, field),\
                adb_cb,\
                name##_adbtbl,\
                sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\
                def,\
                none\
                }; \
                return (const ASN1_ITEM *) &internal_adb; \
        } \
        void dummy_function(void)

# define ADB_ENTRY(val, template) {val, template}

# define ASN1_ADB_TEMPLATE(name) \
        static const ASN1_TEMPLATE name##_tt

/*
 * This is the ASN1 template structure that defines a wrapper round the
 * actual type. It determines the actual position of the field in the value
 * structure, various flags such as OPTIONAL and the field name.
 */

struct ASN1_TEMPLATE_st {
    unsigned long flags;        /* Various flags */
    long tag;                   /* tag, not used if no tagging */
    unsigned long offset;       /* Offset of this field in structure */
    const char *field_name;     /* Field name */
    ASN1_ITEM_EXP *item;        /* Relevant ASN1_ITEM or ASN1_ADB */
};

/* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */

# define ASN1_TEMPLATE_item(t) (t->item_ptr)
# define ASN1_TEMPLATE_adb(t) (t->item_ptr)

typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE;
typedef struct ASN1_ADB_st ASN1_ADB;

struct ASN1_ADB_st {
    unsigned long flags;        /* Various flags */
    unsigned long offset;       /* Offset of selector field */
    int (*adb_cb)(long *psel);  /* Application callback */
    const ASN1_ADB_TABLE *tbl;  /* Table of possible types */
    long tblcount;              /* Number of entries in tbl */
    const ASN1_TEMPLATE *default_tt; /* Type to use if no match */
    const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */
};

struct ASN1_ADB_TABLE_st {
    long value;                 /* NID for an object or value for an int */
    const ASN1_TEMPLATE tt;     /* item for this value */
};

/* template flags */

/* Field is optional */
# define ASN1_TFLG_OPTIONAL      (0x1)

/* Field is a SET OF */
# define ASN1_TFLG_SET_OF        (0x1 << 1)

/* Field is a SEQUENCE OF */
# define ASN1_TFLG_SEQUENCE_OF   (0x2 << 1)

/*
 * Special case: this refers to a SET OF that will be sorted into DER order
 * when encoded *and* the corresponding STACK will be modified to match the
 * new order.
 */
# define ASN1_TFLG_SET_ORDER     (0x3 << 1)

/* Mask for SET OF or SEQUENCE OF */
# define ASN1_TFLG_SK_MASK       (0x3 << 1)

/*
 * These flags mean the tag should be taken from the tag field. If EXPLICIT
 * then the underlying type is used for the inner tag.
 */

/* IMPLICIT tagging */
# define ASN1_TFLG_IMPTAG        (0x1 << 3)

/* EXPLICIT tagging, inner tag from underlying type */
# define ASN1_TFLG_EXPTAG        (0x2 << 3)

# define ASN1_TFLG_TAG_MASK      (0x3 << 3)

/* context specific IMPLICIT */
# define ASN1_TFLG_IMPLICIT      (ASN1_TFLG_IMPTAG|ASN1_TFLG_CONTEXT)

/* context specific EXPLICIT */
# define ASN1_TFLG_EXPLICIT      (ASN1_TFLG_EXPTAG|ASN1_TFLG_CONTEXT)

/*
 * If tagging is in force these determine the type of tag to use. Otherwise
 * the tag is determined by the underlying type. These values reflect the
 * actual octet format.
 */

/* Universal tag */
# define ASN1_TFLG_UNIVERSAL     (0x0<<6)
/* Application tag */
# define ASN1_TFLG_APPLICATION   (0x1<<6)
/* Context specific tag */
# define ASN1_TFLG_CONTEXT       (0x2<<6)
/* Private tag */
# define ASN1_TFLG_PRIVATE       (0x3<<6)

# define ASN1_TFLG_TAG_CLASS     (0x3<<6)

/*
 * These are for ANY DEFINED BY type. In this case the 'item' field points to
 * an ASN1_ADB structure which contains a table of values to decode the
 * relevant type
 */

# define ASN1_TFLG_ADB_MASK      (0x3<<8)

# define ASN1_TFLG_ADB_OID       (0x1<<8)

# define ASN1_TFLG_ADB_INT       (0x1<<9)

/*
 * This flag when present in a SEQUENCE OF, SET OF or EXPLICIT causes
 * indefinite length constructed encoding to be used if required.
 */

# define ASN1_TFLG_NDEF          (0x1<<11)

/* Field is embedded and not a pointer */
# define ASN1_TFLG_EMBED         (0x1 << 12)

/* This is the actual ASN1 item itself */

struct ASN1_ITEM_st {
    char itype;                 /* The item type, primitive, SEQUENCE, CHOICE
                                 * or extern */
    long utype;                 /* underlying type */
    const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains
                                     * the contents */
    long tcount;                /* Number of templates if SEQUENCE or CHOICE */
    const void *funcs;          /* further data and type-specific functions */
    /* funcs can be ASN1_PRIMITIVE_FUNCS*, ASN1_EXTERN_FUNCS*, or ASN1_AUX* */
    long size;                  /* Structure size (usually) */
    const char *sname;          /* Structure name */
};

/*
 * Cache for ASN1 tag and length, so we don't keep re-reading it for things
 * like CHOICE
 */

struct ASN1_TLC_st {
    char valid;                 /* Values below are valid */
    int ret;                    /* return value */
    long plen;                  /* length */
    int ptag;                   /* class value */
    int pclass;                 /* class value */
    int hdrlen;                 /* header length */
};

/* Typedefs for ASN1 function pointers */
typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
                        const ASN1_ITEM *it, int tag, int aclass, char opt,
                        ASN1_TLC *ctx);

typedef int ASN1_ex_d2i_ex(ASN1_VALUE **pval, const unsigned char **in, long len,
                           const ASN1_ITEM *it, int tag, int aclass, char opt,
                           ASN1_TLC *ctx, OSSL_LIB_CTX *libctx,
                           const char *propq);
typedef int ASN1_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
                        const ASN1_ITEM *it, int tag, int aclass);
typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
typedef int ASN1_ex_new_ex_func(ASN1_VALUE **pval, const ASN1_ITEM *it,
                                OSSL_LIB_CTX *libctx, const char *propq);
typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it);

typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval,
                               int indent, const char *fname,
                               const ASN1_PCTX *pctx);

typedef int ASN1_primitive_i2c(const ASN1_VALUE **pval, unsigned char *cont,
                               int *putype, const ASN1_ITEM *it);
typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont,
                               int len, int utype, char *free_cont,
                               const ASN1_ITEM *it);
typedef int ASN1_primitive_print(BIO *out, const ASN1_VALUE **pval,
                                 const ASN1_ITEM *it, int indent,
                                 const ASN1_PCTX *pctx);

typedef struct ASN1_EXTERN_FUNCS_st {
    void *app_data;
    ASN1_ex_new_func *asn1_ex_new;
    ASN1_ex_free_func *asn1_ex_free;
    ASN1_ex_free_func *asn1_ex_clear;
    ASN1_ex_d2i *asn1_ex_d2i;
    ASN1_ex_i2d *asn1_ex_i2d;
    ASN1_ex_print_func *asn1_ex_print;
    ASN1_ex_new_ex_func *asn1_ex_new_ex;
    ASN1_ex_d2i_ex *asn1_ex_d2i_ex;
} ASN1_EXTERN_FUNCS;

typedef struct ASN1_PRIMITIVE_FUNCS_st {
    void *app_data;
    unsigned long flags;
    ASN1_ex_new_func *prim_new;
    ASN1_ex_free_func *prim_free;
    ASN1_ex_free_func *prim_clear;
    ASN1_primitive_c2i *prim_c2i;
    ASN1_primitive_i2c *prim_i2c;
    ASN1_primitive_print *prim_print;
} ASN1_PRIMITIVE_FUNCS;

/*
 * This is the ASN1_AUX structure: it handles various miscellaneous
 * requirements. For example the use of reference counts and an informational
 * callback. The "informational callback" is called at various points during
 * the ASN1 encoding and decoding. It can be used to provide minor
 * customisation of the structures used. This is most useful where the
 * supplied routines *almost* do the right thing but need some extra help at
 * a few points. If the callback returns zero then it is assumed a fatal
 * error has occurred and the main operation should be abandoned. If major
 * changes in the default behaviour are required then an external type is
 * more appropriate.
 * For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and
 * ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter
 * 'in' is provided to make clear statically that its input is not modified. If
 * and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set.
 */

typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it,
                        void *exarg);
typedef int ASN1_aux_const_cb(int operation, const ASN1_VALUE **in,
                              const ASN1_ITEM *it, void *exarg);

typedef struct ASN1_AUX_st {
    void *app_data;
    int flags;
    int ref_offset;             /* Offset of reference value */
    int ref_lock;               /* Offset of lock value */
    ASN1_aux_cb *asn1_cb;
    int enc_offset;             /* Offset of ASN1_ENCODING structure */
    ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */
} ASN1_AUX;

/* For print related callbacks exarg points to this structure */
typedef struct ASN1_PRINT_ARG_st {
    BIO *out;
    int indent;
    const ASN1_PCTX *pctx;
} ASN1_PRINT_ARG;

/* For streaming related callbacks exarg points to this structure */
typedef struct ASN1_STREAM_ARG_st {
    /* BIO to stream through */
    BIO *out;
    /* BIO with filters appended */
    BIO *ndef_bio;
    /* Streaming I/O boundary */
    unsigned char **boundary;
} ASN1_STREAM_ARG;

/* Flags in ASN1_AUX */

/* Use a reference count */
# define ASN1_AFLG_REFCOUNT      1
/* Save the encoding of structure (useful for signatures) */
# define ASN1_AFLG_ENCODING      2
/* The Sequence length is invalid */
# define ASN1_AFLG_BROKEN        4
/* Use the new asn1_const_cb */
# define ASN1_AFLG_CONST_CB      8

/* operation values for asn1_cb */

# define ASN1_OP_NEW_PRE         0
# define ASN1_OP_NEW_POST        1
# define ASN1_OP_FREE_PRE        2
# define ASN1_OP_FREE_POST       3
# define ASN1_OP_D2I_PRE         4
# define ASN1_OP_D2I_POST        5
# define ASN1_OP_I2D_PRE         6
# define ASN1_OP_I2D_POST        7
# define ASN1_OP_PRINT_PRE       8
# define ASN1_OP_PRINT_POST      9
# define ASN1_OP_STREAM_PRE      10
# define ASN1_OP_STREAM_POST     11
# define ASN1_OP_DETACHED_PRE    12
# define ASN1_OP_DETACHED_POST   13
# define ASN1_OP_DUP_PRE         14
# define ASN1_OP_DUP_POST        15
# define ASN1_OP_GET0_LIBCTX     16
# define ASN1_OP_GET0_PROPQ      17

/* Macro to implement a primitive type */
# define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0)
# define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \
                                ASN1_ITEM_start(itname) \
                                        ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0, NULL, ex, #itname \
                                ASN1_ITEM_end(itname)

/* Macro to implement a multi string type */
# define IMPLEMENT_ASN1_MSTRING(itname, mask) \
                                ASN1_ITEM_start(itname) \
                                        ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname \
                                ASN1_ITEM_end(itname)

# define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \
        ASN1_ITEM_start(sname) \
                ASN1_ITYPE_EXTERN, \
                tag, \
                NULL, \
                0, \
                &fptrs, \
                0, \
                #sname \
        ASN1_ITEM_end(sname)

/* Macro to implement standard functions in terms of ASN1_ITEM structures */

# define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname)

# define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname)

# define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \
                        IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname)

# define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \
                IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname)

# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \
                IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname)

# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \
        pre stname *fname##_new(void) \
        { \
                return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
        } \
        pre void fname##_free(stname *a) \
        { \
                ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
        }

# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \
        stname *fname##_new(void) \
        { \
                return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
        } \
        void fname##_free(stname *a) \
        { \
                ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
        }

# define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \
        IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
        IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname)

# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
        stname *d2i_##fname(stname **a, const unsigned char **in, long len) \
        { \
                return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\
        } \
        int i2d_##fname(const stname *a, unsigned char **out) \
        { \
                return ASN1_item_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\
        }

# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \
        int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \
        { \
                return ASN1_item_ndef_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname));\
        }

# define IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(stname) \
        static stname *d2i_##stname(stname **a, \
                                   const unsigned char **in, long len) \
        { \
                return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \
                                               ASN1_ITEM_rptr(stname)); \
        } \
        static int i2d_##stname(const stname *a, unsigned char **out) \
        { \
                return ASN1_item_i2d((const ASN1_VALUE *)a, out, \
                                     ASN1_ITEM_rptr(stname)); \
        }

# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \
        stname * stname##_dup(const stname *x) \
        { \
        return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
        }

# define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \
        IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname)

# define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \
        int fname##_print_ctx(BIO *out, const stname *x, int indent, \
                                                const ASN1_PCTX *pctx) \
        { \
                return ASN1_item_print(out, (const ASN1_VALUE *)x, indent, \
                        ASN1_ITEM_rptr(itname), pctx); \
        }

/* external definitions for primitive types */

DECLARE_ASN1_ITEM(ASN1_BOOLEAN)
DECLARE_ASN1_ITEM(ASN1_TBOOLEAN)
DECLARE_ASN1_ITEM(ASN1_FBOOLEAN)
DECLARE_ASN1_ITEM(ASN1_SEQUENCE)
DECLARE_ASN1_ITEM(CBIGNUM)
DECLARE_ASN1_ITEM(BIGNUM)
DECLARE_ASN1_ITEM(INT32)
DECLARE_ASN1_ITEM(ZINT32)
DECLARE_ASN1_ITEM(UINT32)
DECLARE_ASN1_ITEM(ZUINT32)
DECLARE_ASN1_ITEM(INT64)
DECLARE_ASN1_ITEM(ZINT64)
DECLARE_ASN1_ITEM(UINT64)
DECLARE_ASN1_ITEM(ZUINT64)

# ifndef OPENSSL_NO_DEPRECATED_3_0
/*
 * LONG and ZLONG are strongly discouraged for use as stored data, as the
 * underlying C type (long) differs in size depending on the architecture.
 * They are designed with 32-bit longs in mind.
 */
DECLARE_ASN1_ITEM(LONG)
DECLARE_ASN1_ITEM(ZLONG)
# endif

SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE)
#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk))
#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx)))
#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp)))
#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null())
#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n)))
#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n))
#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk))
#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk))
#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i)))
#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)))
#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk)))
#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk)))
#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk),ossl_check_ASN1_VALUE_freefunc_type(freefunc))
#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx))
#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr)))
#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum)
#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk))
#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk))
#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk)))
#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc)))
#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp)))



/* Functions used internally by the ASN1 code */

int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it);

int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
                     const ASN1_ITEM *it, int tag, int aclass, char opt,
                     ASN1_TLC *ctx);

int ASN1_item_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
                     const ASN1_ITEM *it, int tag, int aclass);

/* Legacy compatibility */
# define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name)
# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
         IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname)

#ifdef  __cplusplus
}
#endif
#endif


================================================
FILE: app/src/main/cpp/include/openssl/async.h
================================================
/*
 * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */

#include <stdlib.h>

#ifndef OPENSSL_ASYNC_H
# define OPENSSL_ASYNC_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_ASYNC_H
# endif

#if defined(_WIN32)
# if defined(BASETYPES) || defined(_WINDEF_H)
/* application has to include <windows.h> to use this */
#define OSSL_ASYNC_FD       HANDLE
#define OSSL_BAD_ASYNC_FD   INVALID_HANDLE_VALUE
# endif
#else
#define OSSL_ASYNC_FD       int
#define OSSL_BAD_ASYNC_FD   -1
#endif
# include <openssl/asyncerr.h>


# ifdef  __cplusplus
extern "C" {
# endif

typedef struct async_job_st ASYNC_JOB;
typedef struct async_wait_ctx_st ASYNC_WAIT_CTX;
typedef int (*ASYNC_callback_fn)(void *arg);

#define ASYNC_ERR      0
#define ASYNC_NO_JOBS  1
#define ASYNC_PAUSE    2
#define ASYNC_FINISH   3

#define ASYNC_STATUS_UNSUPPORTED    0
#define ASYNC_STATUS_ERR            1
#define ASYNC_STATUS_OK             2
#define ASYNC_STATUS_EAGAIN         3

int ASYNC_init_thread(size_t max_size, size_t init_size);
void ASYNC_cleanup_thread(void);

#ifdef OSSL_ASYNC_FD
ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void);
void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx);
int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key,
                               OSSL_ASYNC_FD fd,
                               void *custom_data,
                               void (*cleanup)(ASYNC_WAIT_CTX *, const void *,
                                               OSSL_ASYNC_FD, void *));
int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key,
                        OSSL_ASYNC_FD *fd, void **custom_data);
int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *fd,
                               size_t *numfds);
int ASYNC_WAIT_CTX_get_callback(ASYNC_WAIT_CTX *ctx,
                                ASYNC_callback_fn *callback,
                                void **callback_arg);
int ASYNC_WAIT_CTX_set_callback(ASYNC_WAIT_CTX *ctx,
                                ASYNC_callback_fn callback,
                                void *callback_arg);
int ASYNC_WAIT_CTX_set_status(ASYNC_WAIT_CTX *ctx, int status);
int ASYNC_WAIT_CTX_get_status(ASYNC_WAIT_CTX *ctx);
int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd,
                                   size_t *numaddfds, OSSL_ASYNC_FD *delfd,
                                   size_t *numdelfds);
int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key);
#endif

int ASYNC_is_capable(void);

int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret,
                    int (*func)(void *), void *args, size_t size);
int ASYNC_pause_job(void);

ASYNC_JOB *ASYNC_get_current_job(void);
ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job);
void ASYNC_block_pause(void);
void ASYNC_unblock_pause(void);


# ifdef  __cplusplus
}
# endif
#endif


================================================
FILE: app/src/main/cpp/include/openssl/asyncerr.h
================================================
/*
 * Generated by util/mkerr.pl DO NOT EDIT
 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */

#ifndef OPENSSL_ASYNCERR_H
# define OPENSSL_ASYNCERR_H
# pragma once

# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>



/*
 * ASYNC reason codes.
 */
# define ASYNC_R_FAILED_TO_SET_POOL                       101
# define ASYNC_R_FAILED_TO_SWAP_CONTEXT                   102
# define ASYNC_R_INIT_FAILED                              105
# define ASYNC_R_INVALID_POOL_SIZE                        103

#endif


================================================
FILE: app/src/main/cpp/include/openssl/bio.h
================================================
/*
 * WARNING: do not edit!
 * Generated by Makefile from openssl-3.1.4/include/openssl/bio.h.in
 *
 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */


#ifndef OPENSSL_BIO_H
# define OPENSSL_BIO_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_BIO_H
# endif

# include <openssl/e_os2.h>

# ifndef OPENSSL_NO_STDIO
#  include <stdio.h>
# endif
# include <stdarg.h>

# include <openssl/crypto.h>
# include <openssl/bioerr.h>
# include <openssl/core.h>

#ifdef  __cplusplus
extern "C" {
#endif

/* There are the classes of BIOs */
# define BIO_TYPE_DESCRIPTOR     0x0100 /* socket, fd, connect or accept */
# define BIO_TYPE_FILTER         0x0200
# define BIO_TYPE_SOURCE_SINK    0x0400

/* These are the 'types' of BIOs */
# define BIO_TYPE_NONE             0
# define BIO_TYPE_MEM            ( 1|BIO_TYPE_SOURCE_SINK)
# define BIO_TYPE_FILE           ( 2|BIO_TYPE_SOURCE_SINK)

# define BIO_TYPE_FD             ( 4|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
# define BIO_TYPE_SOCKET         ( 5|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
# define BIO_TYPE_NULL           ( 6|BIO_TYPE_SOURCE_SINK)
# define BIO_TYPE_SSL            ( 7|BIO_TYPE_FILTER)
# define BIO_TYPE_MD             ( 8|BIO_TYPE_FILTER)
# define BIO_TYPE_BUFFER         ( 9|BIO_TYPE_FILTER)
# define BIO_TYPE_CIPHER         (10|BIO_TYPE_FILTER)
# define BIO_TYPE_BASE64         (11|BIO_TYPE_FILTER)
# define BIO_TYPE_CONNECT        (12|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
# define BIO_TYPE_ACCEPT         (13|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)

# define BIO_TYPE_NBIO_TEST      (16|BIO_TYPE_FILTER)/* server proxy BIO */
# define BIO_TYPE_NULL_FILTER    (17|BIO_TYPE_FILTER)
# define BIO_TYPE_BIO            (19|BIO_TYPE_SOURCE_SINK)/* half a BIO pair */
# define BIO_TYPE_LINEBUFFER     (20|BIO_TYPE_FILTER)
# define BIO_TYPE_DGRAM          (21|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
# define BIO_TYPE_ASN1           (22|BIO_TYPE_FILTER)
# define BIO_TYPE_COMP           (23|BIO_TYPE_FILTER)
# ifndef OPENSSL_NO_SCTP
#  define BIO_TYPE_DGRAM_SCTP    (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
# endif
# define BIO_TYPE_CORE_TO_PROV   (25|BIO_TYPE_SOURCE_SINK)

#define BIO_TYPE_START           128

/*
 * BIO_FILENAME_READ|BIO_CLOSE to open or close on free.
 * BIO_set_fp(in,stdin,BIO_NOCLOSE);
 */
# define BIO_NOCLOSE             0x00
# define BIO_CLOSE               0x01

/*
 * These are used in the following macros and are passed to BIO_ctrl()
 */
# define BIO_CTRL_RESET          1/* opt - rewind/zero etc */
# define BIO_CTRL_EOF            2/* opt - are we at the eof */
# define BIO_CTRL_INFO           3/* opt - extra tit-bits */
# define BIO_CTRL_SET            4/* man - set the 'IO' type */
# define BIO_CTRL_GET            5/* man - get the 'IO' type */
# define BIO_CTRL_PUSH           6/* opt - internal, used to signify change */
# define BIO_CTRL_POP            7/* opt - internal, used to signify change */
# define BIO_CTRL_GET_CLOSE      8/* man - set the 'close' on free */
# define BIO_CTRL_SET_CLOSE      9/* man - set the 'close' on free */
# define BIO_CTRL_PENDING        10/* opt - is their more data buffered */
# define BIO_CTRL_FLUSH          11/* opt - 'flush' buffered output */
# define BIO_CTRL_DUP            12/* man - extra stuff for 'duped' BIO */
# define BIO_CTRL_WPENDING       13/* opt - number of bytes still to write */
# define BIO_CTRL_SET_CALLBACK   14/* opt - set callback function */
# define BIO_CTRL_GET_CALLBACK   15/* opt - set callback function */

# define BIO_CTRL_PEEK           29/* BIO_f_buffer special */
# define BIO_CTRL_SET_FILENAME   30/* BIO_s_file special */

/* dgram BIO stuff */
# define BIO_CTRL_DGRAM_CONNECT       31/* BIO dgram special */
# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected
                                         * socket to be passed in */
# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */
# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */
# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */
# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */

# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */
# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation timed out */

/* #ifdef IP_MTU_DISCOVER */
# define BIO_CTRL_DGRAM_MTU_DISCOVER       39/* set DF bit on egress packets */
/* #endif */

# define BIO_CTRL_DGRAM_QUERY_MTU          40/* as kernel for current MTU */
# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU   47
# define BIO_CTRL_DGRAM_GET_MTU            41/* get cached value for MTU */
# define BIO_CTRL_DGRAM_SET_MTU            42/* set cached value for MTU.
                                              * want to use this if asking
                                              * the kernel fails */

# define BIO_CTRL_DGRAM_MTU_EXCEEDED       43/* check whether the MTU was
                                              * exceed in the previous write
                                              * operation */

# define BIO_CTRL_DGRAM_GET_PEER           46
# define BIO_CTRL_DGRAM_SET_PEER           44/* Destination for the data */

# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT   45/* Next DTLS handshake timeout
                                              * to adjust socket timeouts */
# define BIO_CTRL_DGRAM_SET_DONT_FRAG      48

# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD   49

/* Deliberately outside of OPENSSL_NO_SCTP - used in bss_dgram.c */
#  define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE    50
# ifndef OPENSSL_NO_SCTP
/* SCTP stuff */
#  define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY                51
#  define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY               52
#  define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD               53
#  define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO         60
#  define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO         61
#  define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO         62
#  define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO         63
#  define BIO_CTRL_DGRAM_SCTP_GET_PRINFO                  64
#  define BIO_CTRL_DGRAM_SCTP_SET_PRINFO                  65
#  define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN               70
# endif

# define BIO_CTRL_DGRAM_SET_PEEK_MODE      71

/*
 * internal BIO:
 * # define BIO_CTRL_SET_KTLS_SEND                 72
 * # define BIO_CTRL_SET_KTLS_SEND_CTRL_MSG        74
 * # define BIO_CTRL_CLEAR_KTLS_CTRL_MSG           75
 */

# define BIO_CTRL_GET_KTLS_SEND                 73
# define BIO_CTRL_GET_KTLS_RECV                 76

# define BIO_CTRL_DGRAM_SCTP_WAIT_FOR_DRY       77
# define BIO_CTRL_DGRAM_SCTP_MSG_WAITING        78

/* BIO_f_prefix controls */
# define BIO_CTRL_SET_PREFIX                    79
# define BIO_CTRL_SET_INDENT                    80
# define BIO_CTRL_GET_INDENT                    81

# ifndef OPENSSL_NO_KTLS
#  define BIO_get_ktls_send(b)         \
     (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0)
#  define BIO_get_ktls_recv(b)         \
     (BIO_ctrl(b, BIO_CTRL_GET_KTLS_RECV, 0, NULL) > 0)
# else
#  define BIO_get_ktls_send(b)  (0)
#  define BIO_get_ktls_recv(b)  (0)
# endif

/* modifiers */
# define BIO_FP_READ             0x02
# define BIO_FP_WRITE            0x04
# define BIO_FP_APPEND           0x08
# define BIO_FP_TEXT             0x10

# define BIO_FLAGS_READ          0x01
# define BIO_FLAGS_WRITE         0x02
# define BIO_FLAGS_IO_SPECIAL    0x04
# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL)
# define BIO_FLAGS_SHOULD_RETRY  0x08
# ifndef OPENSSL_NO_DEPRECATED_3_0
/* This #define was replaced by an internal constant and should not be used. */
#  define BIO_FLAGS_UPLINK       0
# endif

# define BIO_FLAGS_BASE64_NO_NL  0x100

/*
 * This is used with memory BIOs:
 * BIO_FLAGS_MEM_RDONLY means we shouldn't free up or change the data in any way;
 * BIO_FLAGS_NONCLEAR_RST means we shouldn't clear data on reset.
 */
# define BIO_FLAGS_MEM_RDONLY    0x200
# define BIO_FLAGS_NONCLEAR_RST  0x400
# define BIO_FLAGS_IN_EOF        0x800

/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */

typedef union bio_addr_st BIO_ADDR;
typedef struct bio_addrinfo_st BIO_ADDRINFO;

int BIO_get_new_index(void);
void BIO_set_flags(BIO *b, int flags);
int BIO_test_flags(const BIO *b, int flags);
void BIO_clear_flags(BIO *b, int flags);

# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0))
# define BIO_set_retry_special(b) \
                BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY))
# define BIO_set_retry_read(b) \
                BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY))
# define BIO_set_retry_write(b) \
                BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY))

/* These are normally used internally in BIOs */
# define BIO_clear_retry_flags(b) \
                BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
# define BIO_get_retry_flags(b) \
                BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))

/* These should be used by the application to tell why we should retry */
# define BIO_should_read(a)              BIO_test_flags(a, BIO_FLAGS_READ)
# define BIO_should_write(a)             BIO_test_flags(a, BIO_FLAGS_WRITE)
# define BIO_should_io_special(a)        BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL)
# define BIO_retry_type(a)               BIO_test_flags(a, BIO_FLAGS_RWS)
# define BIO_should_retry(a)             BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY)

/*
 * The next three are used in conjunction with the BIO_should_io_special()
 * condition.  After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int
 * *reason); will walk the BIO stack and return the 'reason' for the special
 * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return
 * the code.
 */
/*
 * Returned from the SSL bio when the certificate retrieval code had an error
 */
# define BIO_RR_SSL_X509_LOOKUP          0x01
/* Returned from the connect BIO when a connect would have blocked */
# define BIO_RR_CONNECT                  0x02
/* Returned from the accept BIO when an accept would have blocked */
# define BIO_RR_ACCEPT                   0x03

/* These are passed by the BIO callback */
# define BIO_CB_FREE     0x01
# define BIO_CB_READ     0x02
# define BIO_CB_WRITE    0x03
# define BIO_CB_PUTS     0x04
# define BIO_CB_GETS     0x05
# define BIO_CB_CTRL     0x06

/*
 * The callback is called before and after the underling operation, The
 * BIO_CB_RETURN flag indicates if it is after the call
 */
# define BIO_CB_RETURN   0x80
# define BIO_CB_return(a) ((a)|BIO_CB_RETURN)
# define BIO_cb_pre(a)   (!((a)&BIO_CB_RETURN))
# define BIO_cb_post(a)  ((a)&BIO_CB_RETURN)

# ifndef OPENSSL_NO_DEPRECATED_3_0
typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi,
                                long argl, long ret);
OSSL_DEPRECATEDIN_3_0 BIO_callback_fn BIO_get_callback(const BIO *b);
OSSL_DEPRECATEDIN_3_0 void BIO_set_callback(BIO *b, BIO_callback_fn callback);
OSSL_DEPRECATEDIN_3_0 long BIO_debug_callback(BIO *bio, int cmd,
                                               const char *argp, int argi,
                                               long argl, long ret);
# endif

typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp,
                                   size_t len, int argi,
                                   long argl, int ret, size_t *processed);
BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b);
void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback);
long BIO_debug_callback_ex(BIO *bio, int oper, const char *argp, size_t len,
                           int argi, long argl, int ret, size_t *processed);

char *BIO_get_callback_arg(const BIO *b);
void BIO_set_callback_arg(BIO *b, char *arg);

typedef struct bio_method_st BIO_METHOD;

const char *BIO_method_name(const BIO *b);
int BIO_method_type(const BIO *b);

typedef int BIO_info_cb(BIO *, int, int);
typedef BIO_info_cb bio_info_cb;  /* backward compatibility */

SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO)
#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk))
#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx)))
#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp)))
#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null())
#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n)))
#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n))
#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk))
#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk))
#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i)))
#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)))
#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))
#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))
#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk)))
#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk)))
#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk),ossl_check_BIO_freefunc_type(freefunc))
#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx))
#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr)))
#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))
#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))
#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum)
#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk))
#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk))
#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk)))
#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc)))
#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp)))



/* Prefix and suffix callback in ASN1 BIO */
typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen,
                          void *parg);

typedef void (*BIO_dgram_sctp_notification_handler_fn) (BIO *b,
                                                        void *context,
                                                        void *buf);
# ifndef OPENSSL_NO_SCTP
/* SCTP parameter structs */
struct bio_dgram_sctp_sndinfo {
    uint16_t snd_sid;
    uint16_t snd_flags;
    uint32_t snd_ppid;
    uint32_t snd_context;
};

struct bio_dgram_sctp_rcvinfo {
    uint16_t rcv_sid;
    uint16_t rcv_ssn;
    uint16_t rcv_flags;
    uint32_t rcv_ppid;
    uint32_t rcv_tsn;
    uint32_t rcv_cumtsn;
    uint32_t rcv_context;
};

struct bio_dgram_sctp_prinfo {
    uint16_t pr_policy;
    uint32_t pr_value;
};
# endif

/*
 * #define BIO_CONN_get_param_hostname BIO_ctrl
 */

# define BIO_C_SET_CONNECT                       100
# define BIO_C_DO_STATE_MACHINE                  101
# define BIO_C_SET_NBIO                          102
/* # define BIO_C_SET_PROXY_PARAM                   103 */
# define BIO_C_SET_FD                            104
# define BIO_C_GET_FD                            105
# define BIO_C_SET_FILE_PTR                      106
# define BIO_C_GET_FILE_PTR                      107
# define BIO_C_SET_FILENAME                      108
# define BIO_C_SET_SSL                           109
# define BIO_C_GET_SSL                           110
# define BIO_C_SET_MD                            111
# define BIO_C_GET_MD                            112
# define BIO_C_GET_CIPHER_STATUS                 113
# define BIO_C_SET_BUF_MEM                       114
# define BIO_C_GET_BUF_MEM_PTR                   115
# define BIO_C_GET_BUFF_NUM_LINES                116
# define BIO_C_SET_BUFF_SIZE                     117
# define BIO_C_SET_ACCEPT                        118
# define BIO_C_SSL_MODE                          119
# define BIO_C_GET_MD_CTX                        120
/* # define BIO_C_GET_PROXY_PARAM                   121 */
# define BIO_C_SET_BUFF_READ_DATA                122/* data to read first */
# define BIO_C_GET_CONNECT                       123
# define BIO_C_GET_ACCEPT                        124
# define BIO_C_SET_SSL_RENEGOTIATE_BYTES         125
# define BIO_C_GET_SSL_NUM_RENEGOTIATES          126
# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT       127
# define BIO_C_FILE_SEEK                         128
# define BIO_C_GET_CIPHER_CTX                    129
# define BIO_C_SET_BUF_MEM_EOF_RETURN            130/* return end of input
                                                     * value */
# define BIO_C_SET_BIND_MODE                     131
# define BIO_C_GET_BIND_MODE                     132
# define BIO_C_FILE_TELL                         133
# define BIO_C_GET_SOCKS                         134
# define BIO_C_SET_SOCKS                         135

# define BIO_C_SET_WRITE_BUF_SIZE                136/* for BIO_s_bio */
# define BIO_C_GET_WRITE_BUF_SIZE                137
# define BIO_C_MAKE_BIO_PAIR                     138
# define BIO_C_DESTROY_BIO_PAIR                  139
# define BIO_C_GET_WRITE_GUARANTEE               140
# define BIO_C_GET_READ_REQUEST                  141
# define BIO_C_SHUTDOWN_WR                       142
# define BIO_C_NREAD0                            143
# define BIO_C_NREAD                             144
# define BIO_C_NWRITE0                           145
# define BIO_C_NWRITE                            146
# define BIO_C_RESET_READ_REQUEST                147
# define BIO_C_SET_MD_CTX                        148

# define BIO_C_SET_PREFIX                        149
# define BIO_C_GET_PREFIX                        150
# define BIO_C_SET_SUFFIX                        151
# define BIO_C_GET_SUFFIX                        152

# define BIO_C_SET_EX_ARG                        153
# define BIO_C_GET_EX_ARG                        154

# define BIO_C_SET_CONNECT_MODE                  155

# define BIO_set_app_data(s,arg)         BIO_set_ex_data(s,0,arg)
# define BIO_get_app_data(s)             BIO_get_ex_data(s,0)

# define BIO_set_nbio(b,n)             BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)

# ifndef OPENSSL_NO_SOCK
/* IP families we support, for BIO_s_connect() and BIO_s_accept() */
/* Note: the underlying operating system may not support some of them */
#  define BIO_FAMILY_IPV4                         4
#  define BIO_FAMILY_IPV6                         6
#  define BIO_FAMILY_IPANY                        256

/* BIO_s_connect() */
#  define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0, \
                                                 (char *)(name))
#  define BIO_set_conn_port(b,port)     BIO_ctrl(b,BIO_C_SET_CONNECT,1, \
                                                 (char *)(port))
#  define BIO_set_conn_address(b,addr)  BIO_ctrl(b,BIO_C_SET_CONNECT,2, \
                                                 (char *)(addr))
#  define BIO_set_conn_ip_family(b,f)   BIO_int_ctrl(b,BIO_C_SET_CONNECT,3,f)
#  define BIO_get_conn_hostname(b)      ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0))
#  define BIO_get_conn_port(b)          ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1))
#  define BIO_get_conn_address(b)       ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2))
#  define BIO_get_conn_ip_family(b)     BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL)
#  define BIO_set_conn_mode(b,n)        BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL)

/* BIO_s_accept() */
#  define BIO_set_accept_name(b,name)   BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \
                                                 (char *)(name))
#  define BIO_set_accept_port(b,port)   BIO_ctrl(b,BIO_C_SET_ACCEPT,1, \
                                                 (char *)(port))
#  define BIO_get_accept_name(b)        ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0))
#  define BIO_get_accept_port(b)        ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,1))
#  define BIO_get_peer_name(b)          ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,2))
#  define BIO_get_peer_port(b)          ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,3))
/* #define BIO_set_nbio(b,n)    BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */
#  define BIO_set_nbio_accept(b,n)      BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(n)?(void *)"a":NULL)
#  define BIO_set_accept_bios(b,bio)    BIO_ctrl(b,BIO_C_SET_ACCEPT,3, \
                                                 (char *)(bio))
#  define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f)
#  define BIO_get_accept_ip_family(b)   BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL)

/* Aliases kept for backward compatibility */
#  define BIO_BIND_NORMAL                 0
#  define BIO_BIND_REUSEADDR              BIO_SOCK_REUSEADDR
#  define BIO_BIND_REUSEADDR_IF_UNUSED    BIO_SOCK_REUSEADDR
#  define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL)
#  define BIO_get_bind_mode(b)    BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL)
# endif /* OPENSSL_NO_SOCK */

# define BIO_do_connect(b)       BIO_do_handshake(b)
# define BIO_do_accept(b)        BIO_do_handshake(b)

# define BIO_do_handshake(b)     BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)

/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */
# define BIO_set_fd(b,fd,c)      BIO_int_ctrl(b,BIO_C_SET_FD,c,fd)
# define BIO_get_fd(b,c)         BIO_ctrl(b,BIO_C_GET_FD,0,(char *)(c))

/* BIO_s_file() */
# define BIO_set_fp(b,fp,c)      BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)(fp))
# define BIO_get_fp(b,fpp)       BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)(fpp))

/* BIO_s_fd() and BIO_s_file() */
# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL)
# define BIO_tell(b)     (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL)

/*
 * name is cast to lose const, but might be better to route through a
 * function so we can do it safely
 */
# ifdef CONST_STRICT
/*
 * If you are wondering why this isn't defined, its because CONST_STRICT is
 * purely a compile-time kludge to allow const to be checked.
 */
int BIO_read_filename(BIO *b, const char *name);
# else
#  define BIO_read_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
                BIO_CLOSE|BIO_FP_READ,(char *)(name))
# endif
# define BIO_write_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
                BIO_CLOSE|BIO_FP_WRITE,name)
# define BIO_append_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
                BIO_CLOSE|BIO_FP_APPEND,name)
# define BIO_rw_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
                BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name)

/*
 * WARNING WARNING, this ups the reference count on the read bio of the SSL
 * structure.  This is because the ssl read BIO is now pointed to by the
 * next_bio field in the bio.  So when you free the BIO, make sure you are
 * doing a BIO_free_all() to catch the underlying BIO.
 */
# define BIO_set_ssl(b,ssl,c)    BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)(ssl))
# define BIO_get_ssl(b,sslp)     BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)(sslp))
# define BIO_set_ssl_mode(b,client)      BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL)
# define BIO_set_ssl_renegotiate_bytes(b,num) \
        BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL)
# define BIO_get_num_renegotiates(b) \
        BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL)
# define BIO_set_ssl_renegotiate_timeout(b,seconds) \
        BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL)

/* defined in evp.h */
/* #define BIO_set_md(b,md)     BIO_ctrl(b,BIO_C_SET_MD,1,(char *)(md)) */

# define BIO_get_mem_data(b,pp)  BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)(pp))
# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)(bm))
# define BIO_get_mem_ptr(b,pp)   BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0, \
                                          (char *)(pp))
# define BIO_set_mem_eof_return(b,v) \
                                BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL)

/* For the BIO_f_buffer() type */
# define BIO_get_buffer_num_lines(b)     BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL)
# define BIO_set_buffer_size(b,size)     BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL)
# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0)
# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1)
# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf)

/* Don't use the next one unless you know what you are doing :-) */
# define BIO_dup_state(b,ret)    BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret))

# define BIO_reset(b)            (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL)
# define BIO_eof(b)              (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL)
# define BIO_set_close(b,c)      (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL)
# define BIO_get_close(b)        (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL)
# define BIO_pending(b)          (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
# define BIO_wpending(b)         (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL)
/* ...pending macros have inappropriate return type */
size_t BIO_ctrl_pending(BIO *b);
size_t BIO_ctrl_wpending(BIO *b);
# define BIO_flush(b)            (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL)
# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \
                                                   cbp)
# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb)

/* For the BIO_f_buffer() type */
# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL)
# define BIO_buffer_peek(b,s,l) BIO_ctrl(b,BIO_CTRL_PEEK,(l),(s))

/* For BIO_s_bio() */
# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL)
# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL)
# define BIO_make_bio_pair(b1,b2)   (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2)
# define BIO_destroy_bio_pair(b)    (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL)
# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL)
/* macros with inappropriate type -- but ...pending macros use int too: */
# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL)
# define BIO_get_read_request(b)    (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL)
size_t BIO_ctrl_get_write_guarantee(BIO *b);
size_t BIO_ctrl_get_read_request(BIO *b);
int BIO_ctrl_reset_read_request(BIO *b);

/* ctrl macros for dgram */
# define BIO_ctrl_dgram_connect(b,peer)  \
                     (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)(peer))
# define BIO_ctrl_set_connected(b,peer) \
         (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (char *)(peer))
# define BIO_dgram_recv_timedout(b) \
         (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL)
# define BIO_dgram_send_timedout(b) \
         (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL)
# define BIO_dgram_get_peer(b,peer) \
         (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer))
# define BIO_dgram_set_peer(b,peer) \
         (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer))
# define BIO_dgram_get_mtu_overhead(b) \
         (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL)

/* ctrl macros for BIO_f_prefix */
# define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p))
# define BIO_set_indent(b,i) BIO_ctrl((b), BIO_CTRL_SET_INDENT, (i), NULL)
# define BIO_get_indent(b) BIO_ctrl((b), BIO_CTRL_GET_INDENT, 0, NULL)

#define BIO_get_ex_new_index(l, p, newf, dupf, freef) \
    CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_BIO, l, p, newf, dupf, freef)
int BIO_set_ex_data(BIO *bio, int idx, void *data);
void *BIO_get_ex_data(const BIO *bio, int idx);
uint64_t BIO_number_read(BIO *bio);
uint64_t BIO_number_written(BIO *bio);

/* For BIO_f_asn1() */
int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix,
                        asn1_ps_func *prefix_free);
int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix,
                        asn1_ps_func **pprefix_free);
int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix,
                        asn1_ps_func *suffix_free);
int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix,
                        asn1_ps_func **psuffix_free);

const BIO_METHOD *BIO_s_file(void);
BIO *BIO_new_file(const char *filename, const char *mode);
BIO *BIO_new_from_core_bio(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio);
# ifndef OPENSSL_NO_STDIO
BIO *BIO_new_fp(FILE *stream, int close_flag);
# endif
BIO *BIO_new_ex(OSSL_LIB_CTX *libctx, const BIO_METHOD *method);
BIO *BIO_new(const BIO_METHOD *type);
int BIO_free(BIO *a);
void BIO_set_data(BIO *a, void *ptr);
void *BIO_get_data(BIO *a);
void BIO_set_init(BIO *a, int init);
int BIO_get_init(BIO *a);
void BIO_set_shutdown(BIO *a, int shut);
int BIO_get_shutdown(BIO *a);
void BIO_vfree(BIO *a);
int BIO_up_ref(BIO *a);
int BIO_read(BIO *b, void *data, int dlen);
int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes);
int BIO_gets(BIO *bp, char *buf, int size);
int BIO_get_line(BIO *bio, char *buf, int size);
int BIO_write(BIO *b, const void *data, int dlen);
int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written);
int BIO_puts(BIO *bp, const char *buf);
int BIO_indent(BIO *b, int indent, int max);
long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp);
void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg);
long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
BIO *BIO_push(BIO *b, BIO *append);
BIO *BIO_pop(BIO *b);
void BIO_free_all(BIO *a);
BIO *BIO_find_type(BIO *b, int bio_type);
BIO *BIO_next(BIO *b);
void BIO_set_next(BIO *b, BIO *next);
BIO *BIO_get_retry_BIO(BIO *bio, int *reason);
int BIO_get_retry_reason(BIO *bio);
void BIO_set_retry_reason(BIO *bio, int reason);
BIO *BIO_dup_chain(BIO *in);

int BIO_nread0(BIO *bio, char **buf);
int BIO_nread(BIO *bio, char **buf, int num);
int BIO_nwrite0(BIO *bio, char **buf);
int BIO_nwrite(BIO *bio, char **buf, int num);

const BIO_METHOD *BIO_s_mem(void);
const BIO_METHOD *BIO_s_secmem(void);
BIO *BIO_new_mem_buf(const void *buf, int len);
# ifndef OPENSSL_NO_SOCK
const BIO_METHOD *BIO_s_socket(void);
const BIO_METHOD *BIO_s_connect(void);
const BIO_METHOD *BIO_s_accept(void);
# endif
const BIO_METHOD *BIO_s_fd(void);
const BIO_METHOD *BIO_s_log(void);
const BIO_METHOD *BIO_s_bio(void);
const BIO_METHOD *BIO_s_null(void);
const BIO_METHOD *BIO_f_null(void);
const BIO_METHOD *BIO_f_buffer(void);
const BIO_METHOD *BIO_f_readbuffer(void);
const BIO_METHOD *BIO_f_linebuffer(void);
const BIO_METHOD *BIO_f_nbio_test(void);
const BIO_METHOD *BIO_f_prefix(void);
const BIO_METHOD *BIO_s_core(void);
# ifndef OPENSSL_NO_DGRAM
const BIO_METHOD *BIO_s_datagram(void);
int BIO_dgram_non_fatal_error(int error);
BIO *BIO_new_dgram(int fd, int close_flag);
#  ifndef OPENSSL_NO_SCTP
const BIO_METHOD *BIO_s_datagram_sctp(void);
BIO *BIO_new_dgram_sctp(int fd, int close_flag);
int BIO_dgram_is_sctp(BIO *bio);
int BIO_dgram_sctp_notification_cb(BIO *b,
                BIO_dgram_sctp_notification_handler_fn handle_notifications,
                void *context);
int BIO_dgram_sctp_wait_for_dry(BIO *b);
int BIO_dgram_sctp_msg_waiting(BIO *b);
#  endif
# endif

# ifndef OPENSSL_NO_SOCK
int BIO_sock_should_retry(int i);
int BIO_sock_non_fatal_error(int error);
int BIO_socket_wait(int fd, int for_read, time_t max_time);
# endif
int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds);
int BIO_do_connect_retry(BIO *bio, int timeout, int nap_milliseconds);

int BIO_fd_should_retry(int i);
int BIO_fd_non_fatal_error(int error);
int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u),
                void *u, const void *s, int len);
int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u),
                       void *u, const void *s, int len, int indent);
int BIO_dump(BIO *b, const void *bytes, int len);
int BIO_dump_indent(BIO *b, const void *bytes, int len, int indent);
# ifndef OPENSSL_NO_STDIO
int BIO_dump_fp(FILE *fp, const void *s, int len);
int BIO_dump_indent_fp(FILE *fp, const void *s, int len, int indent);
# endif
int BIO_hex_string(BIO *out, int indent, int width, const void *data,
                   int datalen);

# ifndef OPENSSL_NO_SOCK
BIO_ADDR *BIO_ADDR_new(void);
int BIO_ADDR_rawmake(BIO_ADDR *ap, int family,
                     const void *where, size_t wherelen, unsigned short port);
void BIO_ADDR_free(BIO_ADDR *);
void BIO_ADDR_clear(BIO_ADDR *ap);
int BIO_ADDR_family(const BIO_ADDR *ap);
int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l);
unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap);
char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric);
char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric);
char *BIO_ADDR_path_string(const BIO_ADDR *ap);

const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai);
int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai);
int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai);
int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai);
const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai);
void BIO_ADDRINFO_free(BIO_ADDRINFO *bai);

enum BIO_hostserv_priorities {
    BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV
};
int BIO_parse_hostserv(const char *hostserv, char **host, char **service,
                       enum BIO_hostserv_priorities hostserv_prio);
enum BIO_lookup_type {
    BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER
};
int BIO_lookup(const char *host, const char *service,
               enum BIO_lookup_type lookup_type,
               int family, int socktype, BIO_ADDRINFO **res);
int BIO_lookup_ex(const char *host, const char *service,
                  int lookup_type, int family, int socktype, int protocol,
                  BIO_ADDRINFO **res);
int BIO_sock_error(int sock);
int BIO_socket_ioctl(int fd, long type, void *arg);
int BIO_socket_nbio(int fd, int mode);
int BIO_sock_init(void);
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
#  define BIO_sock_cleanup() while(0) continue
# endif
int BIO_set_tcp_ndelay(int sock, int turn_on);
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 struct hostent *BIO_gethostbyname(const char *name);
OSSL_DEPRECATEDIN_1_1_0 int BIO_get_port(const char *str, unsigned short *port_ptr);
OSSL_DEPRECATEDIN_1_1_0 int BIO_get_host_ip(const char *str, unsigned char *ip);
OSSL_DEPRECATEDIN_1_1_0 int BIO_get_accept_socket(char *host_port, int mode);
OSSL_DEPRECATEDIN_1_1_0 int BIO_accept(int sock, char **ip_port);
# endif

union BIO_sock_info_u {
    BIO_ADDR *addr;
};
enum BIO_sock_info_type {
    BIO_SOCK_INFO_ADDRESS
};
int BIO_sock_info(int sock,
                  enum BIO_sock_info_type type, union BIO_sock_info_u *info);

#  define BIO_SOCK_REUSEADDR    0x01
#  define BIO_SOCK_V6_ONLY      0x02
#  define BIO_SOCK_KEEPALIVE    0x04
#  define BIO_SOCK_NONBLOCK     0x08
#  define BIO_SOCK_NODELAY      0x10

int BIO_socket(int domain, int socktype, int protocol, int options);
int BIO_connect(int sock, const BIO_ADDR *addr, int options);
int BIO_bind(int sock, const BIO_ADDR *addr, int options);
int BIO_listen(int sock, const BIO_ADDR *addr, int options);
int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options);
int BIO_closesocket(int sock);

BIO *BIO_new_socket(int sock, int close_flag);
BIO *BIO_new_connect(const char *host_port);
BIO *BIO_new_accept(const char *host_port);
# endif /* OPENSSL_NO_SOCK*/

BIO *BIO_new_fd(int fd, int close_flag);

int BIO_new_bio_pair(BIO **bio1, size_t writebuf1,
                     BIO **bio2, size_t writebuf2);
/*
 * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints.
 * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default
 * value.
 */

void BIO_copy_next_retry(BIO *b);

/*
 * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg);
 */

# define ossl_bio__attr__(x)
# if defined(__GNUC__) && defined(__STDC_VERSION__) \
    && !defined(__MINGW32__) && !defined(__MINGW64__) \
    && !defined(__APPLE__)
    /*
     * Because we support the 'z' modifier, which made its appearance in C99,
     * we can't use __attribute__ with pre C99 dialects.
     */
#  if __STDC_VERSION__ >= 199901L
#   undef ossl_bio__attr__
#   define ossl_bio__attr__ __attribute__
#   if __GNUC__*10 + __GNUC_MINOR__ >= 44
#    define ossl_bio__printf__ __gnu_printf__
#   else
#    define ossl_bio__printf__ __printf__
#   endif
#  endif
# endif
int BIO_printf(BIO *bio, const char *format, ...)
ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3)));
int BIO_vprintf(BIO *bio, const char *format, va_list args)
ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0)));
int BIO_snprintf(char *buf, size_t n, const char *format, ...)
ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4)));
int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0)));
# undef ossl_bio__attr__
# undef ossl_bio__printf__


BIO_METHOD *BIO_meth_new(int type, const char *name);
void BIO_meth_free(BIO_METHOD *biom);
int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int);
int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t,
                                                size_t *);
int BIO_meth_set_write(BIO_METHOD *biom,
                       int (*write) (BIO *, const char *, int));
int BIO_meth_set_write_ex(BIO_METHOD *biom,
                       int (*bwrite) (BIO *, const char *, size_t, size_t *));
int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int);
int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *);
int BIO_meth_set_read(BIO_METHOD *biom,
                      int (*read) (BIO *, char *, int));
int BIO_meth_set_read_ex(BIO_METHOD *biom,
                         int (*bread) (BIO *, char *, size_t, size_t *));
int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *);
int BIO_meth_set_puts(BIO_METHOD *biom,
                      int (*puts) (BIO *, const char *));
int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int);
int BIO_meth_set_gets(BIO_METHOD *biom,
                      int (*gets) (BIO *, char *, int));
long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *);
int BIO_meth_set_ctrl(BIO_METHOD *biom,
                      long (*ctrl) (BIO *, int, long, void *));
int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *);
int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *));
int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *);
int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *));
long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom))
                                 (BIO *, int, BIO_info_cb *);
int BIO_meth_set_callback_ctrl(BIO_METHOD *biom,
                               long (*callback_ctrl) (BIO *, int,
                                                      BIO_info_cb *));

# ifdef  __cplusplus
}
# endif
#endif


================================================
FILE: app/src/main/cpp/include/openssl/bioerr.h
================================================
/*
 * Generated by util/mkerr.pl DO NOT EDIT
 * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */

#ifndef OPENSSL_BIOERR_H
# define OPENSSL_BIOERR_H
# pragma once

# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>



/*
 * BIO reason codes.
 */
# define BIO_R_ACCEPT_ERROR                               100
# define BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET               141
# define BIO_R_AMBIGUOUS_HOST_OR_SERVICE                  129
# define BIO_R_BAD_FOPEN_MODE                             101
# define BIO_R_BROKEN_PIPE                                124
# define BIO_R_CONNECT_ERROR                              103
# define BIO_R_CONNECT_TIMEOUT                            147
# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET          107
# define BIO_R_GETSOCKNAME_ERROR                          132
# define BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS              133
# define BIO_R_GETTING_SOCKTYPE                           134
# define BIO_R_INVALID_ARGUMENT                           125
# define BIO_R_INVALID_SOCKET                             135
# define BIO_R_IN_USE                                     123
# define BIO_R_LENGTH_TOO_LONG                            102
# define BIO_R_LISTEN_V6_ONLY                             136
# define BIO_R_LOOKUP_RETURNED_NOTHING                    142
# define BIO_R_MALFORMED_HOST_OR_SERVICE                  130
# define BIO_R_NBIO_CONNECT_ERROR                         110
# define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED        143
# define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED           144
# define BIO_R_NO_PORT_DEFINED                            113
# define BIO_R_NO_SUCH_FILE                               128
# define BIO_R_NULL_PARAMETER                             115 /* unused */
# define BIO_R_TRANSFER_ERROR                             104
# define BIO_R_TRANSFER_TIMEOUT                           105
# define BIO_R_UNABLE_TO_BIND_SOCKET                      117
# define BIO_R_UNABLE_TO_CREATE_SOCKET                    118
# define BIO_R_UNABLE_TO_KEEPALIVE                        137
# define BIO_R_UNABLE_TO_LISTEN_SOCKET                    119
# define BIO_R_UNABLE_TO_NODELAY                          138
# define BIO_R_UNABLE_TO_REUSEADDR                        139
# define BIO_R_UNAVAILABLE_IP_FAMILY                      145
# define BIO_R_UNINITIALIZED                              120
# define BIO_R_UNKNOWN_INFO_TYPE                          140
# define BIO_R_UNSUPPORTED_IP_FAMILY                      146
# define BIO_R_UNSUPPORTED_METHOD                         121
# define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY                131
# define BIO_R_WRITE_TO_READ_ONLY_BIO                     126
# define BIO_R_WSASTARTUP                                 122

#endif


================================================
FILE: app/src/main/cpp/include/openssl/blowfish.h
================================================
/*
 * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */

#ifndef OPENSSL_BLOWFISH_H
# define OPENSSL_BLOWFISH_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_BLOWFISH_H
# endif

# include <openssl/opensslconf.h>

# ifndef OPENSSL_NO_BF
# include <openssl/e_os2.h>
# ifdef  __cplusplus
extern "C" {
# endif

# define BF_BLOCK        8

# ifndef OPENSSL_NO_DEPRECATED_3_0

#  define BF_ENCRYPT      1
#  define BF_DECRYPT      0

/*-
 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 * ! BF_LONG has to be at least 32 bits wide.                     !
 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 */
#  define BF_LONG unsigned int

#  define BF_ROUNDS       16

typedef struct bf_key_st {
    BF_LONG P[BF_ROUNDS + 2];
    BF_LONG S[4 * 256];
} BF_KEY;

# endif /* OPENSSL_NO_DEPRECATED_3_0 */
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 void BF_set_key(BF_KEY *key, int len,
                                      const unsigned char *data);
OSSL_DEPRECATEDIN_3_0 void BF_encrypt(BF_LONG *data, const BF_KEY *key);
OSSL_DEPRECATEDIN_3_0 void BF_decrypt(BF_LONG *data, const BF_KEY *key);
OSSL_DEPRECATEDIN_3_0 void BF_ecb_encrypt(const unsigned char *in,
                                          unsigned char *out, const BF_KEY *key,
                                          int enc);
OSSL_DEPRECATEDIN_3_0 void BF_cbc_encrypt(const unsigned char *in,
                                          unsigned char *out, long length,
                                          const BF_KEY *schedule,
                                          unsigned char *ivec, int enc);
OSSL_DEPRECATEDIN_3_0 void BF_cfb64_encrypt(const unsigned char *in,
                                            unsigned char *out,
                                            long length, const BF_KEY *schedule,
                                            unsigned char *ivec, int *num,
                                            int enc);
OSSL_DEPRECATEDIN_3_0 void BF_ofb64_encrypt(const unsigned char *in,
                                            unsigned char *out,
                                            long length, const BF_KEY *schedule,
                                            unsigned char *ivec, int *num);
OSSL_DEPRECATEDIN_3_0 const char *BF_options(void);
# endif

# ifdef  __cplusplus
}
# endif
# endif

#endif


================================================
FILE: app/src/main/cpp/include/openssl/bn.h
================================================
/*
 * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */

#ifndef OPENSSL_BN_H
# define OPENSSL_BN_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_BN_H
# endif

# include <openssl/e_os2.h>
# ifndef OPENSSL_NO_STDIO
#  include <stdio.h>
# endif
# include <openssl/opensslconf.h>
# include <openssl/types.h>
# include <openssl/crypto.h>
# include <openssl/bnerr.h>

#ifdef  __cplusplus
extern "C" {
#endif

/*
 * 64-bit processor with LP64 ABI
 */
# ifdef SIXTY_FOUR_BIT_LONG
#  define BN_ULONG        unsigned long
#  define BN_BYTES        8
# endif

/*
 * 64-bit processor other than LP64 ABI
 */
# ifdef SIXTY_FOUR_BIT
#  define BN_ULONG        unsigned long long
#  define BN_BYTES        8
# endif

# ifdef THIRTY_TWO_BIT
#  define BN_ULONG        unsigned int
#  define BN_BYTES        4
# endif

# define BN_BITS2       (BN_BYTES * 8)
# define BN_BITS        (BN_BITS2 * 2)
# define BN_TBIT        ((BN_ULONG)1 << (BN_BITS2 - 1))

# define BN_FLG_MALLOCED         0x01
# define BN_FLG_STATIC_DATA      0x02

/*
 * avoid leaking exponent information through timing,
 * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime,
 * BN_div() will call BN_div_no_branch,
 * BN_mod_inverse() will call bn_mod_inverse_no_branch.
 */
# define BN_FLG_CONSTTIME        0x04
# define BN_FLG_SECURE           0x08

# ifndef OPENSSL_NO_DEPRECATED_0_9_8
/* deprecated name for the flag */
#  define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME
#  define BN_FLG_FREE            0x8000 /* used for debugging */
# endif

void BN_set_flags(BIGNUM *b, int n);
int BN_get_flags(const BIGNUM *b, int n);

/* Values for |top| in BN_rand() */
#define BN_RAND_TOP_ANY    -1
#define BN_RAND_TOP_ONE     0
#define BN_RAND_TOP_TWO     1

/* Values for |bottom| in BN_rand() */
#define BN_RAND_BOTTOM_ANY  0
#define BN_RAND_BOTTOM_ODD  1

/*
 * get a clone of a BIGNUM with changed flags, for *temporary* use only (the
 * two BIGNUMs cannot be used in parallel!). Also only for *read only* use. The
 * value |dest| should be a newly allocated BIGNUM obtained via BN_new() that
 * has not been otherwise initialised or used.
 */
void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags);

/* Wrapper function to make using BN_GENCB easier */
int BN_GENCB_call(BN_GENCB *cb, int a, int b);

BN_GENCB *BN_GENCB_new(void);
void BN_GENCB_free(BN_GENCB *cb);

/* Populate a BN_GENCB structure with an "old"-style callback */
void BN_GENCB_set_old(BN_GENCB *gencb, void (*callback) (int, int, void *),
                      void *cb_arg);

/* Populate a BN_GENCB structure with a "new"-style callback */
void BN_GENCB_set(BN_GENCB *gencb, int (*callback) (int, int, BN_GENCB *),
                  void *cb_arg);

void *BN_GENCB_get_arg(BN_GENCB *cb);

# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define BN_prime_checks 0      /* default: select number of iterations based
                                  * on the size of the number */

/*
 * BN_prime_checks_for_size() returns the number of Miller-Rabin iterations
 * that will be done for checking that a random number is probably prime. The
 * error rate for accepting a composite number as prime depends on the size of
 * the prime |b|. The error rates used are for calculating an RSA key with 2 primes,
 * and so the level is what you would expect for a key of double the size of the
 * prime.
 *
 * This table is generated using the algorithm of FIPS PUB 186-4
 * Digital Signature Standard (DSS), section F.1, page 117.
 * (https://dx.doi.org/10.6028/NIST.FIPS.186-4)
 *
 * The following magma script was used to generate the output:
 * securitybits:=125;
 * k:=1024;
 * for t:=1 to 65 do
 *   for M:=3 to Floor(2*Sqrt(k-1)-1) do
 *     S:=0;
 *     // Sum over m
 *     for m:=3 to M do
 *       s:=0;
 *       // Sum over j
 *       for j:=2 to m do
 *         s+:=(RealField(32)!2)^-(j+(k-1)/j);
 *       end for;
 *       S+:=2^(m-(m-1)*t)*s;
 *     end for;
 *     A:=2^(k-2-M*t);
 *     B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S;
 *     pkt:=2.00743*Log(2)*k*2^-k*(A+B);
 *     seclevel:=Floor(-Log(2,pkt));
 *     if seclevel ge securitybits then
 *       printf "k: %5o, security: %o bits  (t: %o, M: %o)\n",k,seclevel,t,M;
 *       break;
 *     end if;
 *   end for;
 *   if seclevel ge securitybits then break; end if;
 * end for;
 *
 * It can be run online at:
 * http://magma.maths.usyd.edu.au/calc
 *
 * And will output:
 * k:  1024, security: 129 bits  (t: 6, M: 23)
 *
 * k is the number of bits of the prime, securitybits is the level we want to
 * reach.
 *
 * prime length | RSA key size | # MR tests | security level
 * -------------+--------------|------------+---------------
 *  (b) >= 6394 |     >= 12788 |          3 |        256 bit
 *  (b) >= 3747 |     >=  7494 |          3 |        192 bit
 *  (b) >= 1345 |     >=  2690 |          4 |        128 bit
 *  (b) >= 1080 |     >=  2160 |          5 |        128 bit
 *  (b) >=  852 |     >=  1704 |          5 |        112 bit
 *  (b) >=  476 |     >=   952 |          5 |         80 bit
 *  (b) >=  400 |     >=   800 |          6 |         80 bit
 *  (b) >=  347 |     >=   694 |          7 |         80 bit
 *  (b) >=  308 |     >=   616 |          8 |         80 bit
 *  (b) >=   55 |     >=   110 |         27 |         64 bit
 *  (b) >=    6 |     >=    12 |         34 |         64 bit
 */

#  define BN_prime_checks_for_size(b) ((b) >= 3747 ?  3 : \
                                      (b) >=  1345 ?  4 : \
                                      (b) >=  476 ?  5 : \
                                      (b) >=  400 ?  6 : \
                                      (b) >=  347 ?  7 : \
                                      (b) >=  308 ?  8 : \
                                      (b) >=  55  ? 27 : \
                                      /* b >= 6 */ 34)
# endif

# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8)

int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w);
int BN_is_zero(const BIGNUM *a);
int BN_is_one(const BIGNUM *a);
int BN_is_word(const BIGNUM *a, const BN_ULONG w);
int BN_is_odd(const BIGNUM *a);

# define BN_one(a)       (BN_set_word((a),1))

void BN_zero_ex(BIGNUM *a);

# if OPENSSL_API_LEVEL > 908
#  define BN_zero(a)      BN_zero_ex(a)
# else
#  define BN_zero(a)      (BN_set_word((a),0))
# endif

const BIGNUM *BN_value_one(void);
char *BN_options(void);
BN_CTX *BN_CTX_new_ex(OSSL_LIB_CTX *ctx);
BN_CTX *BN_CTX_new(void);
BN_CTX *BN_CTX_secure_new_ex(OSSL_LIB_CTX *ctx);
BN_CTX *BN_CTX_secure_new(void);
void BN_CTX_free(BN_CTX *c);
void BN_CTX_start(BN_CTX *ctx);
BIGNUM *BN_CTX_get(BN_CTX *ctx);
void BN_CTX_end(BN_CTX *ctx);
int BN_rand_ex(BIGNUM *rnd, int bits, int top, int bottom,
               unsigned int strength, BN_CTX *ctx);
int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
int BN_priv_rand_ex(BIGNUM *rnd, int bits, int top, int bottom,
                    unsigned int strength, BN_CTX *ctx);
int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom);
int BN_rand_range_ex(BIGNUM *r, const BIGNUM *range, unsigned int strength,
                     BN_CTX *ctx);
int BN_rand_range(BIGNUM *rnd, const BIGNUM *range);
int BN_priv_rand_range_ex(BIGNUM *r, const BIGNUM *range,
                          unsigned int strength, BN_CTX *ctx);
int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
OSSL_DEPRECATEDIN_3_0
int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range);
# endif
int BN_num_bits(const BIGNUM *a);
int BN_num_bits_word(BN_ULONG l);
int BN_security_bits(int L, int N);
BIGNUM *BN_new(void);
BIGNUM *BN_secure_new(void);
void BN_clear_free(BIGNUM *a);
BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b);
void BN_swap(BIGNUM *a, BIGNUM *b);
BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret);
int BN_bn2bin(const BIGNUM *a, unsigned char *to);
int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen);
BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret);
int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen);
BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret);
int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen);
BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret);
int BN_bn2mpi(const BIGNUM *a, unsigned char *to);
int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
/** BN_set_negative sets sign of a BIGNUM
 * \param  b  pointer to the BIGNUM object
 * \param  n  0 if the BIGNUM b should be positive and a value != 0 otherwise
 */
void BN_set_negative(BIGNUM *b, int n);
/** BN_is_negative returns 1 if the BIGNUM is negative
 * \param  b  pointer to the BIGNUM object
 * \return 1 if a < 0 and 0 otherwise
 */
int BN_is_negative(const BIGNUM *b);

int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d,
           BN_CTX *ctx);
# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx))
int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx);
int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
               BN_CTX *ctx);
int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
                     const BIGNUM *m);
int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
               BN_CTX *ctx);
int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
                     const BIGNUM *m);
int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
               BN_CTX *ctx);
int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m);
int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m,
                  BN_CTX *ctx);
int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m);

BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w);
BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w);
int BN_mul_word(BIGNUM *a, BN_ULONG w);
int BN_add_word(BIGNUM *a, BN_ULONG w);
int BN_sub_word(BIGNUM *a, BN_ULONG w);
int BN_set_word(BIGNUM *a, BN_ULONG w);
BN_ULONG BN_get_word(const BIGNUM *a);

int BN_cmp(const BIGNUM *a, const BIGNUM *b);
void BN_free(BIGNUM *a);
int BN_is_bit_set(const BIGNUM *a, int n);
int BN_lshift(BIGNUM *r, const BIGNUM *a, int n);
int BN_lshift1(BIGNUM *r, const BIGNUM *a);
int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);

int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
               const BIGNUM *m, BN_CTX *ctx);
int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
                    const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
                              const BIGNUM *m, BN_CTX *ctx,
                              BN_MONT_CTX *in_mont);
int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p,
                         const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1,
                     const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m,
                     BN_CTX *ctx, BN_MONT_CTX *m_ctx);
int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
                      const BIGNUM *m, BN_CTX *ctx);
int BN_mod_exp_mont_consttime_x2(BIGNUM *rr1, const BIGNUM *a1, const BIGNUM *p1,
                                 const BIGNUM *m1, BN_MONT_CTX *in_mont1,
                                 BIGNUM *rr2, const BIGNUM *a2, const BIGNUM *p2,
                                 const BIGNUM *m2, BN_MONT_CTX *in_mont2,
                                 BN_CTX *ctx);

int BN_mask_bits(BIGNUM *a, int n);
# ifndef OPENSSL_NO_STDIO
int BN_print_fp(FILE *fp, const BIGNUM *a);
# endif
int BN_print(BIO *bio, const BIGNUM *a);
int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx);
int BN_rshift(BIGNUM *r, const BIGNUM *a, int n);
int BN_rshift1(BIGNUM *r, const BIGNUM *a);
void BN_clear(BIGNUM *a);
BIGNUM *BN_dup(const BIGNUM *a);
int BN_ucmp(const BIGNUM *a, const BIGNUM *b);
int BN_set_bit(BIGNUM *a, int n);
int BN_clear_bit(BIGNUM *a, int n);
char *BN_bn2hex(const BIGNUM *a);
char *BN_bn2dec(const BIGNUM *a);
int BN_hex2bn(BIGNUM **a, const char *str);
int BN_dec2bn(BIGNUM **a, const char *str);
int BN_asc2bn(BIGNUM **a, const char *str);
int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns
                                                                  * -2 for
                                                                  * error */
int BN_are_coprime(BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
BIGNUM *BN_mod_inverse(BIGNUM *ret,
                       const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);
BIGNUM *BN_mod_sqrt(BIGNUM *ret,
                    const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);

void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords);

/* Deprecated versions */
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
OSSL_DEPRECATEDIN_0_9_8
BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe,
                          const BIGNUM *add, const BIGNUM *rem,
                          void (*callback) (int, int, void *),
                          void *cb_arg);
OSSL_DEPRECATEDIN_0_9_8
int BN_is_prime(const BIGNUM *p, int nchecks,
                void (*callback) (int, int, void *),
                BN_CTX *ctx, void *cb_arg);
OSSL_DEPRECATEDIN_0_9_8
int BN_is_prime_fasttest(const BIGNUM *p, int nchecks,
                         void (*callback) (int, int, void *),
                         BN_CTX *ctx, void *cb_arg,
                         int do_trial_division);
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb);
OSSL_DEPRECATEDIN_3_0
int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx,
                            int do_trial_division, BN_GENCB *cb);
# endif
/* Newer versions */
int BN_generate_prime_ex2(BIGNUM *ret, int bits, int safe,
                          const BIGNUM *add, const BIGNUM *rem, BN_GENCB *cb,
                          BN_CTX *ctx);
int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add,
                         const BIGNUM *rem, BN_GENCB *cb);
int BN_check_prime(const BIGNUM *p, BN_CTX *ctx, BN_GENCB *cb);

# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx);

OSSL_DEPRECATEDIN_3_0
int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
                            const BIGNUM *Xp, const BIGNUM *Xp1,
                            const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx,
                            BN_GENCB *cb);
OSSL_DEPRECATEDIN_3_0
int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1,
                              BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e,
                              BN_CTX *ctx, BN_GENCB *cb);
# endif

BN_MONT_CTX *BN_MONT_CTX_new(void);
int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
                          BN_MONT_CTX *mont, BN_CTX *ctx);
int BN_to_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont,
                     BN_CTX *ctx);
int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont,
                       BN_CTX *ctx);
void BN_MONT_CTX_free(BN_MONT_CTX *mont);
int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx);
BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from);
BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_RWLOCK *lock,
                                    const BIGNUM *mod, BN_CTX *ctx);

/* BN_BLINDING flags */
# define BN_BLINDING_NO_UPDATE   0x00000001
# define BN_BLINDING_NO_RECREATE 0x00000002

BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod);
void BN_BLINDING_free(BN_BLINDING *b);
int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx);
int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *);
int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b,
                          BN_CTX *);

int BN_BLINDING_is_current_thread(BN_BLINDING *b);
void BN_BLINDING_set_current_thread(BN_BLINDING *b);
int BN_BLINDING_lock(BN_BLINDING *b);
int BN_BLINDING_unlock(BN_BLINDING *b);

unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
                                      const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
          
Download .txt
gitextract_id6mxpdl/

├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.yml
│   │   └── fr.yml
│   └── workflows/
│       └── build.yml
├── .gitignore
├── CMakeLists.txt
├── HISTORY.md
├── Makefile
├── README.md
├── app/
│   ├── .gitignore
│   ├── CMakeLists.txt
│   ├── build.gradle
│   ├── proguard-rules.pro
│   └── src/
│       └── main/
│           ├── AndroidManifest.xml
│           ├── cpp/
│           │   ├── arm64-v8a/
│           │   │   ├── libcrypto.a
│           │   │   └── libssl.a
│           │   ├── armeabi-v7a/
│           │   │   ├── libcrypto.a
│           │   │   └── libssl.a
│           │   ├── include/
│           │   │   └── openssl/
│           │   │       ├── aes.h
│           │   │       ├── asn1.h
│           │   │       ├── asn1_mac.h
│           │   │       ├── asn1err.h
│           │   │       ├── asn1t.h
│           │   │       ├── async.h
│           │   │       ├── asyncerr.h
│           │   │       ├── bio.h
│           │   │       ├── bioerr.h
│           │   │       ├── blowfish.h
│           │   │       ├── bn.h
│           │   │       ├── bnerr.h
│           │   │       ├── buffer.h
│           │   │       ├── buffererr.h
│           │   │       ├── camellia.h
│           │   │       ├── cast.h
│           │   │       ├── cmac.h
│           │   │       ├── cmp.h
│           │   │       ├── cmp_util.h
│           │   │       ├── cmperr.h
│           │   │       ├── cms.h
│           │   │       ├── cmserr.h
│           │   │       ├── comp.h
│           │   │       ├── comperr.h
│           │   │       ├── conf.h
│           │   │       ├── conf_api.h
│           │   │       ├── conferr.h
│           │   │       ├── configuration.h
│           │   │       ├── conftypes.h
│           │   │       ├── core.h
│           │   │       ├── core_dispatch.h
│           │   │       ├── core_names.h
│           │   │       ├── core_object.h
│           │   │       ├── crmf.h
│           │   │       ├── crmferr.h
│           │   │       ├── crypto.h
│           │   │       ├── cryptoerr.h
│           │   │       ├── cryptoerr_legacy.h
│           │   │       ├── ct.h
│           │   │       ├── cterr.h
│           │   │       ├── decoder.h
│           │   │       ├── decodererr.h
│           │   │       ├── des.h
│           │   │       ├── dh.h
│           │   │       ├── dherr.h
│           │   │       ├── dsa.h
│           │   │       ├── dsaerr.h
│           │   │       ├── dtls1.h
│           │   │       ├── e_os2.h
│           │   │       ├── e_ostime.h
│           │   │       ├── ebcdic.h
│           │   │       ├── ec.h
│           │   │       ├── ecdh.h
│           │   │       ├── ecdsa.h
│           │   │       ├── ecerr.h
│           │   │       ├── encoder.h
│           │   │       ├── encodererr.h
│           │   │       ├── engine.h
│           │   │       ├── engineerr.h
│           │   │       ├── err.h
│           │   │       ├── ess.h
│           │   │       ├── esserr.h
│           │   │       ├── evp.h
│           │   │       ├── evperr.h
│           │   │       ├── fips_names.h
│           │   │       ├── fipskey.h
│           │   │       ├── hmac.h
│           │   │       ├── hpke.h
│           │   │       ├── http.h
│           │   │       ├── httperr.h
│           │   │       ├── idea.h
│           │   │       ├── kdf.h
│           │   │       ├── kdferr.h
│           │   │       ├── lhash.h
│           │   │       ├── macros.h
│           │   │       ├── md2.h
│           │   │       ├── md4.h
│           │   │       ├── md5.h
│           │   │       ├── mdc2.h
│           │   │       ├── modes.h
│           │   │       ├── obj_mac.h
│           │   │       ├── objects.h
│           │   │       ├── objectserr.h
│           │   │       ├── ocsp.h
│           │   │       ├── ocsperr.h
│           │   │       ├── opensslconf.h
│           │   │       ├── opensslv.h
│           │   │       ├── ossl_typ.h
│           │   │       ├── param_build.h
│           │   │       ├── params.h
│           │   │       ├── pem.h
│           │   │       ├── pem2.h
│           │   │       ├── pemerr.h
│           │   │       ├── pkcs12.h
│           │   │       ├── pkcs12err.h
│           │   │       ├── pkcs7.h
│           │   │       ├── pkcs7err.h
│           │   │       ├── prov_ssl.h
│           │   │       ├── proverr.h
│           │   │       ├── provider.h
│           │   │       ├── quic.h
│           │   │       ├── rand.h
│           │   │       ├── randerr.h
│           │   │       ├── rc2.h
│           │   │       ├── rc4.h
│           │   │       ├── rc5.h
│           │   │       ├── ripemd.h
│           │   │       ├── rsa.h
│           │   │       ├── rsaerr.h
│           │   │       ├── safestack.h
│           │   │       ├── seed.h
│           │   │       ├── self_test.h
│           │   │       ├── sha.h
│           │   │       ├── srp.h
│           │   │       ├── srtp.h
│           │   │       ├── ssl.h
│           │   │       ├── ssl2.h
│           │   │       ├── ssl3.h
│           │   │       ├── sslerr.h
│           │   │       ├── sslerr_legacy.h
│           │   │       ├── stack.h
│           │   │       ├── store.h
│           │   │       ├── storeerr.h
│           │   │       ├── symhacks.h
│           │   │       ├── thread.h
│           │   │       ├── tls1.h
│           │   │       ├── trace.h
│           │   │       ├── ts.h
│           │   │       ├── tserr.h
│           │   │       ├── txt_db.h
│           │   │       ├── types.h
│           │   │       ├── ui.h
│           │   │       ├── uierr.h
│           │   │       ├── whrlpool.h
│           │   │       ├── x509.h
│           │   │       ├── x509_vfy.h
│           │   │       ├── x509err.h
│           │   │       ├── x509v3.h
│           │   │       └── x509v3err.h
│           │   └── nothing.c
│           ├── java/
│           │   └── com/
│           │       ├── lizongying/
│           │       │   └── mytv/
│           │       │       ├── BootReceiver.kt
│           │       │       ├── CardPresenter.kt
│           │       │       ├── ChannelFragment.kt
│           │       │       ├── ConfirmationFragment.kt
│           │       │       ├── Encryptor.kt
│           │       │       ├── ErrorFragment.kt
│           │       │       ├── Ext.kt
│           │       │       ├── InfoFragment.kt
│           │       │       ├── InitializerProvider.kt
│           │       │       ├── MainActivity.kt
│           │       │       ├── MainFragment.kt
│           │       │       ├── MyApplication.kt
│           │       │       ├── NetworkChangeReceiver.kt
│           │       │       ├── PlayerFragment.kt
│           │       │       ├── Request.kt
│           │       │       ├── SP.kt
│           │       │       ├── SettingFragment.kt
│           │       │       ├── TV.kt
│           │       │       ├── TVList.kt
│           │       │       ├── TimeFragment.kt
│           │       │       ├── UpdateManager.kt
│           │       │       ├── Utils.kt
│           │       │       ├── api/
│           │       │       │   ├── ApiClient.kt
│           │       │       │   ├── Auth.kt
│           │       │       │   ├── DnsCache.kt
│           │       │       │   ├── FAuth.kt
│           │       │       │   ├── FAuthService.kt
│           │       │       │   ├── FEPG.kt
│           │       │       │   ├── Info.kt
│           │       │       │   ├── KvcollectRequest.kt
│           │       │       │   ├── LiveInfo.kt
│           │       │       │   ├── ReleaseService.kt
│           │       │       │   ├── Tls12SocketFactory.kt
│           │       │       │   ├── YSP.kt
│           │       │       │   ├── YSPApiService.kt
│           │       │       │   ├── YSPBtraceService.kt
│           │       │       │   ├── YSPJceService.kt
│           │       │       │   ├── YSPProtoService.kt
│           │       │       │   └── YSPTokenService.kt
│           │       │       ├── jce/
│           │       │       │   ├── CompressUtils.java
│           │       │       │   ├── JceConverterFactory.java
│           │       │       │   ├── JceRequestBodyConverter.java
│           │       │       │   ├── JceResponseBodyConverter.java
│           │       │       │   ├── a.java
│           │       │       │   └── b.java
│           │       │       ├── models/
│           │       │       │   ├── EPG.kt
│           │       │       │   ├── ProgramType.kt
│           │       │       │   ├── TVListViewModel.kt
│           │       │       │   └── TVViewModel.kt
│           │       │       ├── proto/
│           │       │       │   ├── Ysp.java
│           │       │       │   ├── YspKt.kt
│           │       │       │   └── cnKt.kt
│           │       │       └── requests/
│           │       │           └── MyRequest.kt
│           │       ├── qq/
│           │       │   └── taf/
│           │       │       └── jce/
│           │       │           ├── HexUtil.java
│           │       │           ├── JceDecodeException.java
│           │       │           ├── JceEncodeException.java
│           │       │           ├── JceInputStream.java
│           │       │           ├── JceOutputStream.java
│           │       │           ├── JceStruct.java
│           │       │           └── OnIllegalArgumentException.java
│           │       └── tencent/
│           │           └── videolite/
│           │               └── android/
│           │                   └── datamodel/
│           │                       └── cctvjce/
│           │                           ├── Action.java
│           │                           ├── BucketConfig.java
│           │                           ├── BusinessExtent.java
│           │                           ├── BusinessHead.java
│           │                           ├── Coordinates.java
│           │                           ├── ExtentAccount.java
│           │                           ├── ExtentData.java
│           │                           ├── LogReport.java
│           │                           ├── LoginToken.java
│           │                           ├── QQVideoJCECmd.java
│           │                           ├── QUA.java
│           │                           ├── RequestCommand.java
│           │                           ├── RequestHead.java
│           │                           ├── ResponseCommand.java
│           │                           ├── ResponseHead.java
│           │                           ├── SafeInfo.java
│           │                           ├── TVProgram.java
│           │                           ├── TVTimeShiftProgramRequest.java
│           │                           ├── TVTimeShiftProgramResponse.java
│           │                           └── TextInnerLayoutInfo.java
│           └── res/
│               ├── drawable/
│               │   ├── rounded_background.xml
│               │   └── rounded_background2.xml
│               ├── layout/
│               │   ├── activity_main.xml
│               │   ├── channel.xml
│               │   ├── info.xml
│               │   ├── player.xml
│               │   ├── setting.xml
│               │   └── time.xml
│               ├── mipmap-anydpi-v26/
│               │   ├── ic_launcher.xml
│               │   └── ic_launcher_round.xml
│               ├── values/
│               │   ├── attrs.xml
│               │   ├── colors.xml
│               │   ├── ids.xml
│               │   ├── strings.xml
│               │   ├── styles.xml
│               │   └── themes.xml
│               └── xml/
│                   └── network.xml
├── build.gradle
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── history.sh
├── settings.gradle
└── version.json
Download .txt
Showing preview only (313K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3606 symbols across 97 files)

FILE: app/src/main/cpp/include/openssl/aes.h
  type aes_key_st (line 37) | struct aes_key_st {
  type AES_KEY (line 45) | typedef struct aes_key_st AES_KEY;

FILE: app/src/main/cpp/include/openssl/asn1.h
  type asn1_string_st (line 186) | struct asn1_string_st {
  type ASN1_ENCODING (line 204) | typedef struct ASN1_ENCODING_st {
  type asn1_string_table_st (line 226) | struct asn1_string_table_st {
  type ASN1_TEMPLATE (line 276) | typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE;
  type ASN1_TLC (line 277) | typedef struct ASN1_TLC_st ASN1_TLC;
  type ASN1_VALUE (line 279) | typedef struct ASN1_VALUE_st ASN1_VALUE;
  type ASN1_ITEM (line 418) | typedef const ASN1_ITEM *ASN1_ITEM_EXP (void);
  type asn1_type_st (line 523) | struct asn1_type_st {
  type ASN1_SEQUENCE_ANY (line 582) | typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY;
  type BIT_STRING_BITNAME (line 588) | typedef struct BIT_STRING_BITNAME_st {
  type tm (line 853) | struct tm

FILE: app/src/main/cpp/include/openssl/asn1t.h
  type ASN1_TEMPLATE_st (line 489) | struct ASN1_TEMPLATE_st {
  type ASN1_ADB_TABLE (line 502) | typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE;
  type ASN1_ADB (line 503) | typedef struct ASN1_ADB_st ASN1_ADB;
  type ASN1_ADB_st (line 505) | struct ASN1_ADB_st {
  type ASN1_ADB_TABLE_st (line 515) | struct ASN1_ADB_TABLE_st {
  type ASN1_ITEM_st (line 601) | struct ASN1_ITEM_st {
  type ASN1_TLC_st (line 619) | struct ASN1_TLC_st {
  type ASN1_EXTERN_FUNCS (line 657) | typedef struct ASN1_EXTERN_FUNCS_st {
  type ASN1_PRIMITIVE_FUNCS (line 669) | typedef struct ASN1_PRIMITIVE_FUNCS_st {
  type ASN1_AUX (line 702) | typedef struct ASN1_AUX_st {
  type ASN1_PRINT_ARG (line 713) | typedef struct ASN1_PRINT_ARG_st {
  type ASN1_STREAM_ARG (line 720) | typedef struct ASN1_STREAM_ARG_st {

FILE: app/src/main/cpp/include/openssl/async.h
  type ASYNC_JOB (line 38) | typedef struct async_job_st ASYNC_JOB;
  type ASYNC_WAIT_CTX (line 39) | typedef struct async_wait_ctx_st ASYNC_WAIT_CTX;

FILE: app/src/main/cpp/include/openssl/bio.h
  type BIO_ADDR (line 213) | typedef union bio_addr_st BIO_ADDR;
  type BIO_ADDRINFO (line 214) | typedef struct bio_addrinfo_st BIO_ADDRINFO;
  type BIO_METHOD (line 296) | typedef struct bio_method_st BIO_METHOD;
  type BIO_info_cb (line 302) | typedef BIO_info_cb bio_info_cb;
  type bio_dgram_sctp_sndinfo (line 342) | struct bio_dgram_sctp_sndinfo {
  type bio_dgram_sctp_rcvinfo (line 349) | struct bio_dgram_sctp_rcvinfo {
  type bio_dgram_sctp_prinfo (line 359) | struct bio_dgram_sctp_prinfo {
  type BIO_hostserv_priorities (line 747) | enum BIO_hostserv_priorities {
  type BIO_hostserv_priorities (line 751) | enum BIO_hostserv_priorities
  type BIO_lookup_type (line 752) | enum BIO_lookup_type {
  type BIO_lookup_type (line 756) | enum BIO_lookup_type
  type BIO_sock_info_type (line 780) | enum BIO_sock_info_type {
  type BIO_sock_info_type (line 784) | enum BIO_sock_info_type

FILE: app/src/main/cpp/include/openssl/blowfish.h
  type BF_KEY (line 43) | typedef struct bf_key_st {

FILE: app/src/main/cpp/include/openssl/buffer.h
  type buf_mem_st (line 42) | struct buf_mem_st {

FILE: app/src/main/cpp/include/openssl/camellia.h
  type camellia_key_st (line 47) | struct camellia_key_st {
  type CAMELLIA_KEY (line 54) | typedef struct camellia_key_st CAMELLIA_KEY;

FILE: app/src/main/cpp/include/openssl/cast.h
  type CAST_KEY (line 36) | typedef struct cast_key_st {

FILE: app/src/main/cpp/include/openssl/cmac.h
  type CMAC_CTX (line 29) | typedef struct CMAC_CTX_st CMAC_CTX;

FILE: app/src/main/cpp/include/openssl/cmp.h
  type ASN1_BIT_STRING (line 141) | typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO;
  type ASN1_INTEGER (line 207) | typedef ASN1_INTEGER OSSL_CMP_PKISTATUS;
  type OSSL_CMP_CTX (line 214) | typedef struct ossl_cmp_ctx_st OSSL_CMP_CTX;
  type OSSL_CMP_PKIHEADER (line 215) | typedef struct ossl_cmp_pkiheader_st OSSL_CMP_PKIHEADER;
  type ossl_cmp_msg_st (line 217) | struct ossl_cmp_msg_st

FILE: app/src/main/cpp/include/openssl/cmp_util.h
  type OSSL_CMP_severity (line 33) | typedef int OSSL_CMP_severity;

FILE: app/src/main/cpp/include/openssl/cms.h
  type CMS_ContentInfo (line 34) | typedef struct CMS_ContentInfo_st CMS_ContentInfo;
  type CMS_SignerInfo (line 35) | typedef struct CMS_SignerInfo_st CMS_SignerInfo;
  type CMS_CertificateChoices (line 36) | typedef struct CMS_CertificateChoices CMS_CertificateChoices;
  type CMS_RevocationInfoChoice (line 37) | typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice;
  type CMS_RecipientInfo (line 38) | typedef struct CMS_RecipientInfo_st CMS_RecipientInfo;
  type CMS_ReceiptRequest (line 39) | typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest;
  type CMS_Receipt (line 40) | typedef struct CMS_Receipt_st CMS_Receipt;
  type CMS_RecipientEncryptedKey (line 41) | typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey;
  type CMS_OtherKeyAttribute (line 42) | typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute;

FILE: app/src/main/cpp/include/openssl/conf.h
  type CONF_VALUE (line 38) | typedef struct {
  type conf_st (line 87) | struct conf_st
  type conf_method_st (line 88) | struct conf_method_st
  type CONF_METHOD (line 89) | typedef struct conf_method_st CONF_METHOD;
  type CONF_IMODULE (line 96) | typedef struct conf_imodule_st CONF_IMODULE;
  type CONF_MODULE (line 97) | typedef struct conf_module_st CONF_MODULE;

FILE: app/src/main/cpp/include/openssl/conftypes.h
  type conf_method_st (line 21) | struct conf_method_st {
  type conf_st (line 34) | struct conf_st {

FILE: app/src/main/cpp/include/openssl/core.h
  type OSSL_CORE_HANDLE (line 30) | typedef struct ossl_core_handle_st OSSL_CORE_HANDLE;
  type OPENSSL_CORE_CTX (line 31) | typedef struct openssl_core_ctx_st OPENSSL_CORE_CTX;
  type OSSL_CORE_BIO (line 32) | typedef struct ossl_core_bio_st OSSL_CORE_BIO;
  type ossl_dispatch_st (line 40) | struct ossl_dispatch_st {
  type ossl_item_st (line 58) | struct ossl_item_st {
  type ossl_algorithm_st (line 69) | struct ossl_algorithm_st {
  type ossl_param_st (line 82) | struct ossl_param_st {

FILE: app/src/main/cpp/include/openssl/crmf.h
  type OSSL_CRMF_ENCRYPTEDVALUE (line 47) | typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE;
  type ossl_crmf_msg_st (line 49) | struct ossl_crmf_msg_st
  type OSSL_CRMF_ATTRIBUTETYPEANDVALUE (line 79) | typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYP...
  type OSSL_CRMF_PBMPARAMETER (line 80) | typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER;
  type ossl_crmf_poposigningkey_st (line 82) | struct ossl_crmf_poposigningkey_st
  type OSSL_CRMF_CERTREQUEST (line 83) | typedef struct ossl_crmf_certrequest_st OSSL_CRMF_CERTREQUEST;
  type OSSL_CRMF_CERTID (line 84) | typedef struct ossl_crmf_certid_st OSSL_CRMF_CERTID;
  type OSSL_CRMF_PKIPUBLICATIONINFO (line 115) | typedef struct ossl_crmf_pkipublicationinfo_st OSSL_CRMF_PKIPUBLICATIONI...
  type ossl_crmf_singlepubinfo_st (line 117) | struct ossl_crmf_singlepubinfo_st
  type ossl_crmf_certtemplate_st (line 119) | struct ossl_crmf_certtemplate_st
  type ossl_crmf_optionalvalidity_st (line 124) | struct ossl_crmf_optionalvalidity_st

FILE: app/src/main/cpp/include/openssl/crypto.h
  type CRYPTO_dynlock (line 73) | typedef struct {
  type CRYPTO_RWLOCK (line 79) | typedef void CRYPTO_RWLOCK;
  type crypto_ex_data_st (line 180) | struct crypto_ex_data_st {
  type CRYPTO_THREADID (line 306) | typedef struct crypto_threadid_st {
  type tm (line 433) | struct tm
  type tm (line 433) | struct tm
  type tm (line 434) | struct tm
  type tm (line 436) | struct tm
  type tm (line 436) | struct tm
  type DWORD (line 506) | typedef DWORD CRYPTO_THREAD_LOCAL;
  type DWORD (line 507) | typedef DWORD CRYPTO_THREAD_ID;
  type LONG (line 509) | typedef LONG CRYPTO_ONCE;
  type pthread_once_t (line 520) | typedef pthread_once_t CRYPTO_ONCE;
  type pthread_key_t (line 521) | typedef pthread_key_t CRYPTO_THREAD_LOCAL;
  type pthread_t (line 522) | typedef pthread_t CRYPTO_THREAD_ID;
  type CRYPTO_ONCE (line 529) | typedef unsigned int CRYPTO_ONCE;
  type CRYPTO_THREAD_LOCAL (line 530) | typedef unsigned int CRYPTO_THREAD_LOCAL;
  type CRYPTO_THREAD_ID (line 531) | typedef unsigned int CRYPTO_THREAD_ID;

FILE: app/src/main/cpp/include/openssl/ct.h
  type ct_log_entry_type_t (line 97) | typedef enum {
  type sct_version_t (line 103) | typedef enum {
  type sct_source_t (line 108) | typedef enum {
  type sct_validation_status_t (line 115) | typedef enum {

FILE: app/src/main/cpp/include/openssl/decoder.h
  type OSSL_DECODER_INSTANCE (line 82) | typedef struct ossl_decoder_instance_st OSSL_DECODER_INSTANCE;

FILE: app/src/main/cpp/include/openssl/des.h
  type DES_LONG (line 28) | typedef unsigned int DES_LONG;
  type DES_key_schedule (line 42) | typedef struct DES_ks {

FILE: app/src/main/cpp/include/openssl/dsa.h
  type DSA_SIG (line 66) | typedef struct DSA_SIG_st DSA_SIG;

FILE: app/src/main/cpp/include/openssl/e_os2.h
  type INT8 (line 223) | typedef INT8 int8_t;
  type UINT8 (line 224) | typedef UINT8 uint8_t;
  type INT16 (line 225) | typedef INT16 int16_t;
  type UINT16 (line 226) | typedef UINT16 uint16_t;
  type INT32 (line 227) | typedef INT32 int32_t;
  type UINT32 (line 228) | typedef UINT32 uint32_t;
  type INT64 (line 229) | typedef INT64 int64_t;
  type UINT64 (line 230) | typedef UINT64 uint64_t;
  type __int64 (line 249) | typedef __int64 int64_t;
  type intmax_t (line 260) | typedef intmax_t ossl_intmax_t;
  type uintmax_t (line 261) | typedef uintmax_t ossl_uintmax_t;
  type ossl_intmax_t (line 264) | typedef int64_t ossl_intmax_t;
  type ossl_uintmax_t (line 265) | typedef uint64_t ossl_uintmax_t;

FILE: app/src/main/cpp/include/openssl/ec.h
  type point_conversion_form_t (line 78) | typedef enum {
  type EC_METHOD (line 108) | typedef struct ec_method_st EC_METHOD;
  type EC_GROUP (line 110) | typedef struct ec_group_st EC_GROUP;
  type EC_POINT (line 111) | typedef struct ec_point_st EC_POINT;
  type ECPKPARAMETERS (line 112) | typedef struct ecpk_parameters_st ECPKPARAMETERS;
  type ECPARAMETERS (line 113) | typedef struct ec_parameters_st ECPARAMETERS;
  type EC_builtin_curve (line 521) | typedef struct {
  type ECDSA_SIG (line 1307) | typedef struct ECDSA_SIG_st ECDSA_SIG;

FILE: app/src/main/cpp/include/openssl/encoder.h
  type OSSL_ENCODER_INSTANCE (line 81) | typedef struct ossl_encoder_instance_st OSSL_ENCODER_INSTANCE;

FILE: app/src/main/cpp/include/openssl/engine.h
  type ENGINE_CMD_DEFN (line 257) | typedef struct ENGINE_CMD_DEFN_st {
  type EVP_PKEY (line 272) | typedef EVP_PKEY *(*ENGINE_LOAD_KEY_PTR)(ENGINE *, const char *,
  type dynamic_MEM_fns (line 741) | typedef struct st_dynamic_MEM_fns {
  type dynamic_fns (line 751) | typedef struct st_dynamic_fns {

FILE: app/src/main/cpp/include/openssl/err.h
  type err_state_st (line 56) | struct err_state_st {
  function ERR_GET_LIB (line 241) | int ERR_GET_LIB(unsigned long errcode)
  function ERR_GET_RFLAGS (line 248) | int ERR_GET_RFLAGS(unsigned long errcode)
  function ERR_GET_REASON (line 255) | int ERR_GET_REASON(unsigned long errcode)
  function ERR_FATAL_ERROR (line 262) | int ERR_FATAL_ERROR(unsigned long errcode)
  function ERR_COMMON_ERROR (line 267) | int ERR_COMMON_ERROR(unsigned long errcode)
  type ERR_STRING_DATA (line 369) | typedef struct ERR_string_data_st {

FILE: app/src/main/cpp/include/openssl/ess.h
  type ESS_ISSUER_SERIAL (line 30) | typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL;
  type ESS_CERT_ID (line 31) | typedef struct ESS_cert_id ESS_CERT_ID;
  type ESS_SIGNING_CERT (line 32) | typedef struct ESS_signing_cert ESS_SIGNING_CERT;
  type ESS_SIGNING_CERT_V2 (line 63) | typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2;
  type ESS_CERT_ID_V2 (line 64) | typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2;

FILE: app/src/main/cpp/include/openssl/evp.h
  type EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM (line 450) | typedef struct {
  type EVP_CIPHER_INFO (line 480) | typedef struct evp_cipher_info_st {
  type rsa_st (line 1347) | struct rsa_st
  type rsa_st (line 1349) | struct rsa_st
  type dsa_st (line 1356) | struct dsa_st
  type dsa_st (line 1358) | struct dsa_st
  type dh_st (line 1366) | struct dh_st
  type dh_st (line 1367) | struct dh_st
  type ec_key_st (line 1373) | struct ec_key_st
  type ec_key_st (line 1375) | struct ec_key_st

FILE: app/src/main/cpp/include/openssl/hpke.h
  type OSSL_HPKE_SUITE (line 80) | typedef struct {
  type OSSL_HPKE_CTX (line 106) | typedef struct ossl_hpke_ctx_st OSSL_HPKE_CTX;

FILE: app/src/main/cpp/include/openssl/http.h
  type BIO (line 63) | typedef BIO *(*OSSL_HTTP_bio_cb_t)(BIO *bio, void *arg, int connect, int...

FILE: app/src/main/cpp/include/openssl/idea.h
  type IDEA_INT (line 31) | typedef unsigned int IDEA_INT;
  type IDEA_KEY_SCHEDULE (line 36) | typedef struct idea_key_st {

FILE: app/src/main/cpp/include/openssl/lhash.h
  type OPENSSL_LH_NODE (line 35) | typedef struct lhash_node_st OPENSSL_LH_NODE;
  type OPENSSL_LHASH (line 40) | typedef struct lhash_st OPENSSL_LHASH;

FILE: app/src/main/cpp/include/openssl/md2.h
  type MD2_INT (line 31) | typedef unsigned char MD2_INT;
  type MD2_CTX (line 35) | typedef struct MD2state_st {

FILE: app/src/main/cpp/include/openssl/md4.h
  type MD4_CTX (line 42) | typedef struct MD4state_st {

FILE: app/src/main/cpp/include/openssl/md5.h
  type MD5_CTX (line 41) | typedef struct MD5state_st {

FILE: app/src/main/cpp/include/openssl/mdc2.h
  type MDC2_CTX (line 34) | typedef struct mdc2_ctx_st {

FILE: app/src/main/cpp/include/openssl/modes.h
  type GCM128_CONTEXT (line 114) | typedef struct gcm128_context GCM128_CONTEXT;
  type CCM128_CONTEXT (line 139) | typedef struct ccm128_context CCM128_CONTEXT;
  type XTS128_CONTEXT (line 160) | typedef struct xts128_context XTS128_CONTEXT;
  type OCB128_CONTEXT (line 184) | typedef struct ocb128_context OCB128_CONTEXT;

FILE: app/src/main/cpp/include/openssl/objects.h
  type OBJ_NAME (line 43) | typedef struct obj_name_st {

FILE: app/src/main/cpp/include/openssl/ocsp.h
  type OCSP_CERTID (line 89) | typedef struct ocsp_cert_id_st OCSP_CERTID;
  type OCSP_ONEREQ (line 90) | typedef struct ocsp_one_request_st OCSP_ONEREQ;
  type OCSP_REQINFO (line 91) | typedef struct ocsp_req_info_st OCSP_REQINFO;
  type OCSP_SIGNATURE (line 92) | typedef struct ocsp_signature_st OCSP_SIGNATURE;
  type OCSP_REQUEST (line 93) | typedef struct ocsp_request_st OCSP_REQUEST;
  type OCSP_RESPBYTES (line 156) | typedef struct ocsp_resp_bytes_st OCSP_RESPBYTES;
  type OCSP_REVOKEDINFO (line 189) | typedef struct ocsp_revoked_info_st OCSP_REVOKEDINFO;
  type OCSP_CERTSTATUS (line 195) | typedef struct ocsp_cert_status_st OCSP_CERTSTATUS;
  type OCSP_SINGLERESP (line 196) | typedef struct ocsp_single_response_st OCSP_SINGLERESP;
  type OCSP_RESPDATA (line 226) | typedef struct ocsp_response_data_st OCSP_RESPDATA;
  type OCSP_BASICRESP (line 228) | typedef struct ocsp_basic_response_st OCSP_BASICRESP;
  type OCSP_CRLID (line 230) | typedef struct ocsp_crl_id_st OCSP_CRLID;
  type OCSP_SERVICELOC (line 231) | typedef struct ocsp_service_locator_st OCSP_SERVICELOC;
  type OSSL_HTTP_REQ_CTX (line 274) | typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX;

FILE: app/src/main/cpp/include/openssl/pkcs12.h
  type PKCS12_MAC_DATA (line 58) | typedef struct PKCS12_MAC_DATA_st PKCS12_MAC_DATA;
  type PKCS12 (line 60) | typedef struct PKCS12_st PKCS12;
  type PKCS12_SAFEBAG (line 62) | typedef struct PKCS12_SAFEBAG_st PKCS12_SAFEBAG;
  type PKCS12_BAGS (line 92) | typedef struct pkcs12_bag_st PKCS12_BAGS;

FILE: app/src/main/cpp/include/openssl/pkcs7.h
  type PKCS7_CTX (line 47) | typedef struct PKCS7_CTX_st {
  type PKCS7_ISSUER_AND_SERIAL (line 52) | typedef struct pkcs7_issuer_and_serial_st {
  type PKCS7_SIGNER_INFO (line 57) | typedef struct pkcs7_signer_info_st {
  type PKCS7_RECIP_INFO (line 97) | typedef struct pkcs7_recip_info_st {
  type PKCS7_SIGNED (line 134) | typedef struct pkcs7_signed_st {
  type PKCS7_ENC_CONTENT (line 147) | typedef struct pkcs7_enc_content_st {
  type PKCS7_ENVELOPE (line 155) | typedef struct pkcs7_enveloped_st {
  type PKCS7_SIGN_ENVELOPE (line 161) | typedef struct pkcs7_signedandenveloped_st {
  type PKCS7_DIGEST (line 171) | typedef struct pkcs7_digest_st {
  type PKCS7_ENCRYPT (line 178) | typedef struct pkcs7_encrypted_st {
  type PKCS7 (line 183) | typedef struct pkcs7_st {

FILE: app/src/main/cpp/include/openssl/rand.h
  type rand_meth_st (line 40) | struct rand_meth_st {

FILE: app/src/main/cpp/include/openssl/rc2.h
  type RC2_INT (line 30) | typedef unsigned int RC2_INT;
  type RC2_KEY (line 35) | typedef struct rc2_key_st {

FILE: app/src/main/cpp/include/openssl/rc4.h
  type RC4_KEY (line 28) | typedef struct rc4_key_st {

FILE: app/src/main/cpp/include/openssl/rc5.h
  type RC5_32_KEY (line 43) | typedef struct rc5_key_st {

FILE: app/src/main/cpp/include/openssl/ripemd.h
  type RIPEMD160_CTX (line 37) | typedef struct RIPEMD160state_st {

FILE: app/src/main/cpp/include/openssl/rsa.h
  type rsa_pss_params_st (line 321) | struct rsa_pss_params_st {
  function DECLARE_ASN1_DUP_FUNCTION (line 330) | DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS)

FILE: app/src/main/cpp/include/openssl/seed.h
  type SEED_KEY_SCHEDULE (line 67) | typedef struct seed_key_st {

FILE: app/src/main/cpp/include/openssl/sha.h
  type SHA_CTX (line 42) | typedef struct SHAstate_st {
  type SHA256_CTX (line 62) | typedef struct SHA256state_st {
  type SHA512_CTX (line 109) | typedef struct SHA512state_st {

FILE: app/src/main/cpp/include/openssl/srp.h
  type SRP_gN_cache (line 43) | typedef struct SRP_gN_cache_st {
  type SRP_user_pwd (line 76) | typedef struct SRP_user_pwd_st {
  type SRP_VBASE (line 129) | typedef struct SRP_VBASE_st {
  type SRP_gN (line 141) | typedef struct SRP_gN_st {

FILE: app/src/main/cpp/include/openssl/ssl.h
  type ssl_st (line 230) | struct ssl_st
  type TLS_SESSION_TICKET_EXT (line 231) | typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT;
  type SSL_METHOD (line 232) | typedef struct ssl_method_st SSL_METHOD;
  type SSL_CIPHER (line 233) | typedef struct ssl_cipher_st SSL_CIPHER;
  type SSL_SESSION (line 234) | typedef struct ssl_session_st SSL_SESSION;
  type TLS_SIGALGS (line 235) | typedef struct tls_sigalgs_st TLS_SIGALGS;
  type SSL_CONF_CTX (line 236) | typedef struct ssl_conf_ctx_st SSL_CONF_CTX;
  type SSL_COMP (line 237) | typedef struct ssl_comp_st SSL_COMP;
  type SRTP_PROTECTION_PROFILE (line 243) | typedef struct srtp_protection_profile_st {
  type ssl_st (line 728) | struct ssl_st
  type ssl_st (line 730) | struct ssl_st
  type ssl_ctx_st (line 733) | struct ssl_ctx_st
  type ssl_ctx_st (line 736) | struct ssl_ctx_st
  type ssl_st (line 739) | struct ssl_st
  type ssl_st (line 744) | struct ssl_st
  type OSSL_HANDSHAKE_STATE (line 1066) | typedef enum {
  type evp_pkey_st (line 2121) | struct evp_pkey_st

FILE: app/src/main/cpp/include/openssl/stack.h
  type OPENSSL_STACK (line 23) | typedef struct stack_st OPENSSL_STACK;

FILE: app/src/main/cpp/include/openssl/store.h
  type OSSL_STORE_CTX (line 37) | typedef struct ossl_store_ctx_st OSSL_STORE_CTX;
  type OSSL_STORE_INFO (line 44) | typedef OSSL_STORE_INFO *(*OSSL_STORE_post_process_info_fn)(OSSL_STORE_I...
  type OSSL_STORE_LOADER (line 254) | typedef struct ossl_store_loader_st OSSL_STORE_LOADER;
  type OSSL_STORE_LOADER_CTX (line 286) | typedef struct ossl_store_loader_ctx_st OSSL_STORE_LOADER_CTX;
  type OSSL_STORE_LOADER_CTX (line 287) | typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_fn)
  type OSSL_STORE_LOADER_CTX (line 290) | typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_open_ex_fn)
  type OSSL_STORE_LOADER_CTX (line 295) | typedef OSSL_STORE_LOADER_CTX *(*OSSL_STORE_attach_fn)
  type OSSL_STORE_INFO (line 305) | typedef OSSL_STORE_INFO *(*OSSL_STORE_load_fn)

FILE: app/src/main/cpp/include/openssl/tls1.h
  type tls_session_ticket_ext_st (line 1172) | struct tls_session_ticket_ext_st {

FILE: app/src/main/cpp/include/openssl/ts.h
  type TS_MSG_IMPRINT (line 42) | typedef struct TS_msg_imprint_st TS_MSG_IMPRINT;
  type TS_REQ (line 43) | typedef struct TS_req_st TS_REQ;
  type TS_ACCURACY (line 44) | typedef struct TS_accuracy_st TS_ACCURACY;
  type TS_TST_INFO (line 45) | typedef struct TS_tst_info_st TS_TST_INFO;
  type TS_STATUS_INFO (line 66) | typedef struct TS_status_info_st TS_STATUS_INFO;
  type TS_RESP (line 68) | typedef struct TS_resp_st TS_RESP;
  type TS_resp_ctx (line 246) | struct TS_resp_ctx
  type ASN1_INTEGER (line 249) | typedef ASN1_INTEGER *(*TS_serial_cb) (struct TS_resp_ctx *, void *);
  type TS_resp_ctx (line 256) | struct TS_resp_ctx
  type TS_resp_ctx (line 264) | struct TS_resp_ctx
  type TS_RESP_CTX (line 267) | typedef struct TS_resp_ctx TS_RESP_CTX;
  type TS_VERIFY_CTX (line 407) | typedef struct TS_verify_ctx TS_VERIFY_CTX;

FILE: app/src/main/cpp/include/openssl/txt_db.h
  type OPENSSL_STRING (line 36) | typedef OPENSSL_STRING *OPENSSL_PSTRING;
  type TXT_DB (line 39) | typedef struct txt_db_st {

FILE: app/src/main/cpp/include/openssl/types.h
  type OSSL_PROVIDER (line 36) | typedef struct ossl_provider_st OSSL_PROVIDER;
  type ASN1_INTEGER (line 57) | typedef struct asn1_string_st ASN1_INTEGER;
  type ASN1_ENUMERATED (line 58) | typedef struct asn1_string_st ASN1_ENUMERATED;
  type ASN1_BIT_STRING (line 59) | typedef struct asn1_string_st ASN1_BIT_STRING;
  type ASN1_OCTET_STRING (line 60) | typedef struct asn1_string_st ASN1_OCTET_STRING;
  type ASN1_PRINTABLESTRING (line 61) | typedef struct asn1_string_st ASN1_PRINTABLESTRING;
  type ASN1_T61STRING (line 62) | typedef struct asn1_string_st ASN1_T61STRING;
  type ASN1_IA5STRING (line 63) | typedef struct asn1_string_st ASN1_IA5STRING;
  type ASN1_GENERALSTRING (line 64) | typedef struct asn1_string_st ASN1_GENERALSTRING;
  type ASN1_UNIVERSALSTRING (line 65) | typedef struct asn1_string_st ASN1_UNIVERSALSTRING;
  type ASN1_BMPSTRING (line 66) | typedef struct asn1_string_st ASN1_BMPSTRING;
  type ASN1_UTCTIME (line 67) | typedef struct asn1_string_st ASN1_UTCTIME;
  type ASN1_TIME (line 68) | typedef struct asn1_string_st ASN1_TIME;
  type ASN1_GENERALIZEDTIME (line 69) | typedef struct asn1_string_st ASN1_GENERALIZEDTIME;
  type ASN1_VISIBLESTRING (line 70) | typedef struct asn1_string_st ASN1_VISIBLESTRING;
  type ASN1_UTF8STRING (line 71) | typedef struct asn1_string_st ASN1_UTF8STRING;
  type ASN1_STRING (line 72) | typedef struct asn1_string_st ASN1_STRING;
  type ASN1_BOOLEAN (line 73) | typedef int ASN1_BOOLEAN;
  type ASN1_NULL (line 74) | typedef int ASN1_NULL;
  type ASN1_TYPE (line 77) | typedef struct asn1_type_st ASN1_TYPE;
  type ASN1_OBJECT (line 78) | typedef struct asn1_object_st ASN1_OBJECT;
  type ASN1_STRING_TABLE (line 79) | typedef struct asn1_string_table_st ASN1_STRING_TABLE;
  type ASN1_ITEM (line 81) | typedef struct ASN1_ITEM_st ASN1_ITEM;
  type ASN1_PCTX (line 82) | typedef struct asn1_pctx_st ASN1_PCTX;
  type ASN1_SCTX (line 83) | typedef struct asn1_sctx_st ASN1_SCTX;
  type BIO (line 89) | typedef struct bio_st BIO;
  type BIGNUM (line 90) | typedef struct bignum_st BIGNUM;
  type BN_CTX (line 91) | typedef struct bignum_ctx BN_CTX;
  type BN_BLINDING (line 92) | typedef struct bn_blinding_st BN_BLINDING;
  type BN_MONT_CTX (line 93) | typedef struct bn_mont_ctx_st BN_MONT_CTX;
  type BN_RECP_CTX (line 94) | typedef struct bn_recp_ctx_st BN_RECP_CTX;
  type BN_GENCB (line 95) | typedef struct bn_gencb_st BN_GENCB;
  type BUF_MEM (line 97) | typedef struct buf_mem_st BUF_MEM;
  type ERR_STATE (line 102) | typedef struct err_state_st ERR_STATE;
  type EVP_CIPHER (line 104) | typedef struct evp_cipher_st EVP_CIPHER;
  type EVP_CIPHER_CTX (line 105) | typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
  type EVP_MD (line 106) | typedef struct evp_md_st EVP_MD;
  type EVP_MD_CTX (line 107) | typedef struct evp_md_ctx_st EVP_MD_CTX;
  type EVP_MAC (line 108) | typedef struct evp_mac_st EVP_MAC;
  type EVP_MAC_CTX (line 109) | typedef struct evp_mac_ctx_st EVP_MAC_CTX;
  type EVP_PKEY (line 110) | typedef struct evp_pkey_st EVP_PKEY;
  type EVP_PKEY_ASN1_METHOD (line 112) | typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD;
  type EVP_PKEY_METHOD (line 114) | typedef struct evp_pkey_method_st EVP_PKEY_METHOD;
  type EVP_PKEY_CTX (line 115) | typedef struct evp_pkey_ctx_st EVP_PKEY_CTX;
  type EVP_KEYMGMT (line 117) | typedef struct evp_keymgmt_st EVP_KEYMGMT;
  type EVP_KDF (line 119) | typedef struct evp_kdf_st EVP_KDF;
  type EVP_KDF_CTX (line 120) | typedef struct evp_kdf_ctx_st EVP_KDF_CTX;
  type EVP_RAND (line 122) | typedef struct evp_rand_st EVP_RAND;
  type EVP_RAND_CTX (line 123) | typedef struct evp_rand_ctx_st EVP_RAND_CTX;
  type EVP_KEYEXCH (line 125) | typedef struct evp_keyexch_st EVP_KEYEXCH;
  type EVP_SIGNATURE (line 127) | typedef struct evp_signature_st EVP_SIGNATURE;
  type EVP_ASYM_CIPHER (line 129) | typedef struct evp_asym_cipher_st EVP_ASYM_CIPHER;
  type EVP_KEM (line 131) | typedef struct evp_kem_st EVP_KEM;
  type EVP_ENCODE_CTX (line 133) | typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX;
  type HMAC_CTX (line 135) | typedef struct hmac_ctx_st HMAC_CTX;
  type DH (line 137) | typedef struct dh_st DH;
  type DH_METHOD (line 138) | typedef struct dh_method DH_METHOD;
  type DSA (line 141) | typedef struct dsa_st DSA;
  type DSA_METHOD (line 142) | typedef struct dsa_method DSA_METHOD;
  type RSA (line 146) | typedef struct rsa_st RSA;
  type RSA_METHOD (line 147) | typedef struct rsa_meth_st RSA_METHOD;
  type RSA_PSS_PARAMS (line 149) | typedef struct rsa_pss_params_st RSA_PSS_PARAMS;
  type EC_KEY (line 152) | typedef struct ec_key_st EC_KEY;
  type EC_KEY_METHOD (line 153) | typedef struct ec_key_method_st EC_KEY_METHOD;
  type RAND_METHOD (line 156) | typedef struct rand_meth_st RAND_METHOD;
  type RAND_DRBG (line 157) | typedef struct rand_drbg_st RAND_DRBG;
  type SSL_DANE (line 159) | typedef struct ssl_dane_st SSL_DANE;
  type X509 (line 160) | typedef struct x509_st X509;
  type X509_ALGOR (line 161) | typedef struct X509_algor_st X509_ALGOR;
  type X509_CRL (line 162) | typedef struct X509_crl_st X509_CRL;
  type X509_CRL_METHOD (line 163) | typedef struct x509_crl_method_st X509_CRL_METHOD;
  type X509_REVOKED (line 164) | typedef struct x509_revoked_st X509_REVOKED;
  type X509_NAME (line 165) | typedef struct X509_name_st X509_NAME;
  type X509_PUBKEY (line 166) | typedef struct X509_pubkey_st X509_PUBKEY;
  type X509_STORE (line 167) | typedef struct x509_store_st X509_STORE;
  type X509_STORE_CTX (line 168) | typedef struct x509_store_ctx_st X509_STORE_CTX;
  type X509_OBJECT (line 170) | typedef struct x509_object_st X509_OBJECT;
  type X509_LOOKUP (line 171) | typedef struct x509_lookup_st X509_LOOKUP;
  type X509_LOOKUP_METHOD (line 172) | typedef struct x509_lookup_method_st X509_LOOKUP_METHOD;
  type X509_VERIFY_PARAM (line 173) | typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM;
  type X509_SIG_INFO (line 175) | typedef struct x509_sig_info_st X509_SIG_INFO;
  type PKCS8_PRIV_KEY_INFO (line 177) | typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO;
  type X509V3_CTX (line 179) | typedef struct v3_ext_ctx X509V3_CTX;
  type CONF (line 180) | typedef struct conf_st CONF;
  type OPENSSL_INIT_SETTINGS (line 181) | typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS;
  type UI (line 183) | typedef struct ui_st UI;
  type UI_METHOD (line 184) | typedef struct ui_method_st UI_METHOD;
  type ENGINE (line 186) | typedef struct engine_st ENGINE;
  type SSL (line 187) | typedef struct ssl_st SSL;
  type SSL_CTX (line 188) | typedef struct ssl_ctx_st SSL_CTX;
  type COMP_CTX (line 190) | typedef struct comp_ctx_st COMP_CTX;
  type COMP_METHOD (line 191) | typedef struct comp_method_st COMP_METHOD;
  type X509_POLICY_NODE (line 193) | typedef struct X509_POLICY_NODE_st X509_POLICY_NODE;
  type X509_POLICY_LEVEL (line 194) | typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL;
  type X509_POLICY_TREE (line 195) | typedef struct X509_POLICY_TREE_st X509_POLICY_TREE;
  type X509_POLICY_CACHE (line 196) | typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE;
  type AUTHORITY_KEYID (line 198) | typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID;
  type DIST_POINT (line 199) | typedef struct DIST_POINT_st DIST_POINT;
  type ISSUING_DIST_POINT (line 200) | typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT;
  type NAME_CONSTRAINTS (line 201) | typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS;
  type CRYPTO_EX_DATA (line 203) | typedef struct crypto_ex_data_st CRYPTO_EX_DATA;
  type OSSL_HTTP_REQ_CTX (line 205) | typedef struct ossl_http_req_ctx_st OSSL_HTTP_REQ_CTX;
  type OCSP_RESPONSE (line 206) | typedef struct ocsp_response_st OCSP_RESPONSE;
  type OCSP_RESPID (line 207) | typedef struct ocsp_responder_id_st OCSP_RESPID;
  type SCT (line 209) | typedef struct sct_st SCT;
  type SCT_CTX (line 210) | typedef struct sct_ctx_st SCT_CTX;
  type CTLOG (line 211) | typedef struct ctlog_st CTLOG;
  type CTLOG_STORE (line 212) | typedef struct ctlog_store_st CTLOG_STORE;
  type CT_POLICY_EVAL_CTX (line 213) | typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX;
  type OSSL_STORE_INFO (line 215) | typedef struct ossl_store_info_st OSSL_STORE_INFO;
  type OSSL_STORE_SEARCH (line 216) | typedef struct ossl_store_search_st OSSL_STORE_SEARCH;
  type OSSL_LIB_CTX (line 218) | typedef struct ossl_lib_ctx_st OSSL_LIB_CTX;
  type OSSL_DISPATCH (line 220) | typedef struct ossl_dispatch_st OSSL_DISPATCH;
  type OSSL_ITEM (line 221) | typedef struct ossl_item_st OSSL_ITEM;
  type OSSL_ALGORITHM (line 222) | typedef struct ossl_algorithm_st OSSL_ALGORITHM;
  type OSSL_PARAM (line 223) | typedef struct ossl_param_st OSSL_PARAM;
  type OSSL_PARAM_BLD (line 224) | typedef struct ossl_param_bld_st OSSL_PARAM_BLD;
  type OSSL_ENCODER (line 228) | typedef struct ossl_encoder_st OSSL_ENCODER;
  type OSSL_ENCODER_CTX (line 229) | typedef struct ossl_encoder_ctx_st OSSL_ENCODER_CTX;
  type OSSL_DECODER (line 230) | typedef struct ossl_decoder_st OSSL_DECODER;
  type OSSL_DECODER_CTX (line 231) | typedef struct ossl_decoder_ctx_st OSSL_DECODER_CTX;
  type OSSL_SELF_TEST (line 233) | typedef struct ossl_self_test_st OSSL_SELF_TEST;

FILE: app/src/main/cpp/include/openssl/ui.h
  type UI_STRING (line 291) | typedef struct ui_string_st UI_STRING;
  type UI_string_types (line 325) | enum UI_string_types {
  type UI_string_types (line 371) | enum UI_string_types

FILE: app/src/main/cpp/include/openssl/whrlpool.h
  type WHIRLPOOL_CTX (line 35) | typedef struct {

FILE: app/src/main/cpp/include/openssl/x509.h
  type X509_algor_st (line 179) | struct X509_algor_st {
  type X509_ALGORS (line 184) | typedef STACK_OF(X509_ALGOR) X509_ALGORS;
  type X509_VAL (line 186) | typedef struct X509_val_st {
  type X509_SIG (line 191) | typedef struct X509_sig_st X509_SIG;
  type X509_NAME_ENTRY (line 193) | typedef struct X509_name_entry_st X509_NAME_ENTRY;
  type X509_EXTENSION (line 225) | typedef struct X509_extension_st X509_EXTENSION;
  type X509_EXTENSIONS (line 253) | typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS;
  type X509_ATTRIBUTE (line 254) | typedef struct x509_attributes_st X509_ATTRIBUTE;
  type X509_REQ_INFO (line 282) | typedef struct X509_req_info_st X509_REQ_INFO;
  type X509_REQ (line 283) | typedef struct X509_req_st X509_REQ;
  type X509_CERT_AUX (line 284) | typedef struct x509_cert_aux_st X509_CERT_AUX;
  type X509_CINF (line 285) | typedef struct x509_cinf_st X509_CINF;
  type X509_CRL_INFO (line 365) | typedef struct X509_crl_info_st X509_CRL_INFO;
  type X509_PKEY (line 367) | typedef struct private_key_st {
  type X509_INFO (line 382) | typedef struct X509_info_st {
  type NETSCAPE_SPKAC (line 422) | typedef struct Netscape_spkac_st {
  type NETSCAPE_SPKI (line 427) | typedef struct Netscape_spki_st {
  type NETSCAPE_CERT_SEQUENCE (line 434) | typedef struct Netscape_certificate_sequence {
  type PBEPARAM (line 448) | typedef struct PBEPARAM_st {
  type PBE2PARAM (line 455) | typedef struct PBE2PARAM_st {
  type PBKDF2PARAM (line 460) | typedef struct PBKDF2PARAM_st {
  type SCRYPT_PARAMS (line 469) | typedef struct SCRYPT_PARAMS_st {

FILE: app/src/main/cpp/include/openssl/x509_vfy.h
  type X509_LOOKUP_TYPE (line 58) | typedef enum {
  type X509_TRUST (line 149) | typedef struct x509_trust_st {

FILE: app/src/main/cpp/include/openssl/x509v3.h
  type v3_ext_method (line 37) | struct v3_ext_method
  type v3_ext_ctx (line 38) | struct v3_ext_ctx
  type v3_ext_method (line 47) | struct v3_ext_method
  type v3_ext_method (line 49) | struct v3_ext_method
  type v3_ext_ctx (line 50) | struct v3_ext_ctx
  type v3_ext_method (line 52) | struct v3_ext_method
  type v3_ext_method (line 54) | struct v3_ext_method
  type v3_ext_ctx (line 55) | struct v3_ext_ctx
  type v3_ext_method (line 56) | struct v3_ext_method
  type v3_ext_method (line 58) | struct v3_ext_method
  type v3_ext_ctx (line 59) | struct v3_ext_ctx
  type v3_ext_method (line 63) | struct v3_ext_method {
  type X509V3_CONF_METHOD (line 85) | typedef struct X509V3_CONF_METHOD_st {
  type v3_ext_ctx (line 93) | struct v3_ext_ctx {
  type X509V3_EXT_METHOD (line 110) | typedef struct v3_ext_method X509V3_EXT_METHOD;
  type BIT_STRING_BITNAME (line 145) | typedef BIT_STRING_BITNAME ENUMERATED_NAMES;
  type BASIC_CONSTRAINTS (line 147) | typedef struct BASIC_CONSTRAINTS_st {
  type PKEY_USAGE_PERIOD (line 152) | typedef struct PKEY_USAGE_PERIOD_st {
  type OTHERNAME (line 157) | typedef struct otherName_st {
  type EDIPARTYNAME (line 162) | typedef struct EDIPartyName_st {
  type GENERAL_NAME (line 167) | typedef struct GENERAL_NAME_st {
  type ACCESS_DESCRIPTION (line 199) | typedef struct ACCESS_DESCRIPTION_st {
  type AUTHORITY_INFO_ACCESS (line 258) | typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
  type EXTENDED_KEY_USAGE (line 259) | typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE;
  type TLS_FEATURE (line 260) | typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE;
  type GENERAL_NAMES (line 261) | typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES;
  type DIST_POINT_NAME (line 291) | typedef struct DIST_POINT_NAME_st {
  type DIST_POINT_st (line 315) | struct DIST_POINT_st {
  type CRL_DIST_POINTS (line 350) | typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS;
  type AUTHORITY_KEYID_st (line 352) | struct AUTHORITY_KEYID_st {
  type SXNETID (line 360) | typedef struct SXNET_ID_st {
  type SXNET (line 394) | typedef struct SXNET_st {
  type ISSUER_SIGN_TOOL (line 399) | typedef struct ISSUER_SIGN_TOOL_st {
  type NOTICEREF (line 406) | typedef struct NOTICEREF_st {
  type USERNOTICE (line 411) | typedef struct USERNOTICE_st {
  type POLICYQUALINFO (line 416) | typedef struct POLICYQUALINFO_st {
  type POLICYINFO (line 454) | typedef struct POLICYINFO_st {
  type CERTIFICATEPOLICIES (line 487) | typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES;
  type POLICY_MAPPING (line 489) | typedef struct POLICY_MAPPING_st {
  type POLICY_MAPPINGS (line 522) | typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS;
  type GENERAL_SUBTREE (line 524) | typedef struct GENERAL_SUBTREE_st {
  type NAME_CONSTRAINTS_st (line 558) | struct NAME_CONSTRAINTS_st {
  type POLICY_CONSTRAINTS (line 563) | typedef struct POLICY_CONSTRAINTS_st {
  type PROXY_POLICY (line 569) | typedef struct PROXY_POLICY_st {
  type PROXY_CERT_INFO_EXTENSION (line 574) | typedef struct PROXY_CERT_INFO_EXTENSION_st {
  function DECLARE_ASN1_FUNCTIONS (line 579) | DECLARE_ASN1_FUNCTIONS(PROXY_POLICY)
  type X509_PURPOSE (line 697) | typedef struct x509_purpose_st {
  function DECLARE_ASN1_FUNCTIONS (line 823) | DECLARE_ASN1_FUNCTIONS(OTHERNAME)
  function DECLARE_ASN1_FUNCTIONS (line 1141) | DECLARE_ASN1_FUNCTIONS(ASRange)
  type IPAddressOrRange (line 1153) | typedef struct IPAddressOrRange_st {
  type IPAddressOrRanges (line 1189) | typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges;
  type IPAddressChoice (line 1194) | typedef struct IPAddressChoice_st {
  type IPAddressFamily (line 1202) | typedef struct IPAddressFamily_st {
  type IPAddrBlocks (line 1236) | typedef STACK_OF(IPAddressFamily) IPAddrBlocks;
  type NAMING_AUTHORITY (line 1339) | typedef struct NamingAuthority_st NAMING_AUTHORITY;
  type PROFESSION_INFO (line 1340) | typedef struct ProfessionInfo_st PROFESSION_INFO;
  type ADMISSIONS (line 1341) | typedef struct Admissions_st ADMISSIONS;
  type ADMISSION_SYNTAX (line 1342) | typedef struct AdmissionSyntax_st ADMISSION_SYNTAX;
  type PROFESSION_INFOS (line 1400) | typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS;

FILE: app/src/main/java/com/lizongying/mytv/jce/CompressUtils.java
  class CompressUtils (line 9) | public class CompressUtils {
    method compressGZIP (line 12) | public static byte[] compressGZIP(byte[] bArr) {
    method decompressGZIP (line 72) | public static byte[] decompressGZIP(byte[] bArr) {

FILE: app/src/main/java/com/lizongying/mytv/jce/JceConverterFactory.java
  class JceConverterFactory (line 13) | public class JceConverterFactory extends Converter.Factory {
    method create (line 14) | public static JceConverterFactory create() {
    method JceConverterFactory (line 18) | private JceConverterFactory() {
    method responseBodyConverter (line 21) | @Override
    method requestBodyConverter (line 33) | @Override

FILE: app/src/main/java/com/lizongying/mytv/jce/JceRequestBodyConverter.java
  class JceRequestBodyConverter (line 17) | public class JceRequestBodyConverter<T extends JceStruct> implements Con...
    method convert (line 20) | @Override

FILE: app/src/main/java/com/lizongying/mytv/jce/JceResponseBodyConverter.java
  class JceResponseBodyConverter (line 15) | public class JceResponseBodyConverter<T extends JceStruct> implements Co...
    method JceResponseBodyConverter (line 17) | JceResponseBodyConverter() {
    method convert (line 20) | @Override
    method parseFrom (line 25) | public T parseFrom(byte[] aa) {

FILE: app/src/main/java/com/lizongying/mytv/jce/a.java
  class a (line 9) | public class a {
    method a (line 14) | private a() {
    method a (line 17) | private static JceStruct a(JceStruct jceStruct, ClassLoader classLoade...
    method b (line 40) | private static JceStruct b(String str, ClassLoader classLoader) {
    method c (line 62) | public static int c(Object obj) {
    method d (line 97) | public static byte[] d(JceStruct jceStruct) {
    method e (line 107) | public static JceStruct e(JceStruct jceStruct, byte[] bArr, ClassLoade...
    method f (line 121) | public static JceStruct f(String str, byte[] bArr, ClassLoader classLo...
    method g (line 138) | public static <T extends JceStruct> T g(byte[] bArr, Class<T> cls) {

FILE: app/src/main/java/com/lizongying/mytv/jce/b.java
  class b (line 11) | public class b {
    method b (line 16) | b() {
    method a (line 19) | public static byte[] a(byte[] bArr, int[] iArr) {
    method b (line 76) | public static byte[] b(RequestCommand requestCommand, long j) {
    method c (line 120) | private static byte[] c(byte[] bArr, boolean z, int i2, int[] iArr) {
    method d (line 151) | private static byte[] d(byte[] bArr) {
    method e (line 163) | private static void e(OutputStream outputStream, String str, int i2) t...

FILE: app/src/main/java/com/lizongying/mytv/proto/Ysp.java
  class Ysp (line 6) | public final class Ysp {
    method Ysp (line 7) | private Ysp() {}
    method registerAllExtensions (line 8) | public static void registerAllExtensions(
    method registerAllExtensions (line 12) | public static void registerAllExtensions(
    type cnOrBuilder (line 17) | public interface cnOrBuilder extends
    class cn (line 24) | public static final class cn extends
      method cn (line 30) | private cn(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      method cn (line 33) | private cn() {
      method newInstance (line 36) | @java.lang.Override
      method getUnknownFields (line 43) | @java.lang.Override
      method cn (line 48) | private cn(
      method getDescriptor (line 87) | public static final com.google.protobuf.Descriptors.Descriptor
      method internalGetFieldAccessorTable (line 92) | @java.lang.Override
      type yangshipinOrBuilder (line 100) | public interface yangshipinOrBuilder extends
      class yangshipin (line 107) | public static final class yangshipin extends
        method yangshipin (line 113) | private yangshipin(com.google.protobuf.GeneratedMessageV3.Builder<...
        method yangshipin (line 116) | private yangshipin() {
        method newInstance (line 119) | @java.lang.Override
        method getUnknownFields (line 126) | @java.lang.Override
        method yangshipin (line 131) | private yangshipin(
        method getDescriptor (line 170) | public static final com.google.protobuf.Descriptors.Descriptor
        method internalGetFieldAccessorTable (line 175) | @java.lang.Override
        type omsOrBuilder (line 183) | public interface omsOrBuilder extends
        class oms (line 190) | public static final class oms extends
          method oms (line 196) | private oms(com.google.protobuf.GeneratedMessageV3.Builder<?> bu...
          method oms (line 199) | private oms() {
          method newInstance (line 202) | @java.lang.Override
          method getUnknownFields (line 209) | @java.lang.Override
          method oms (line 214) | private oms(
          method getDescriptor (line 253) | public static final com.google.protobuf.Descriptors.Descriptor
          method internalGetFieldAccessorTable (line 258) | @java.lang.Override
          type commonOrBuilder (line 266) | public interface commonOrBuilder extends
          class common (line 273) | public static final class common extends
            method common (line 279) | private common(com.google.protobuf.GeneratedMessageV3.Builder<...
            method common (line 282) | private common() {
            method newInstance (line 285) | @java.lang.Override
            method getUnknownFields (line 292) | @java.lang.Override
            method common (line 297) | private common(
            method getDescriptor (line 336) | public static final com.google.protobuf.Descriptors.Descriptor
            method internalGetFieldAccessorTable (line 341) | @java.lang.Override
            type protoOrBuilder (line 349) | public interface protoOrBuilder extends
            class proto (line 356) | public static final class proto extends
              method proto (line 362) | private proto(com.google.protobuf.GeneratedMessageV3.Builder...
              method proto (line 365) | private proto() {
              method newInstance (line 368) | @java.lang.Override
              method getUnknownFields (line 375) | @java.lang.Override
              method proto (line 380) | private proto(
              method getDescriptor (line 419) | public static final com.google.protobuf.Descriptors.Descriptor
              method internalGetFieldAccessorTable (line 424) | @java.lang.Override
              type actionModelOrBuilder (line 432) | public interface actionModelOrBuilder extends
              class actionModel (line 439) | public static final class actionModel extends
                method actionModel (line 445) | private actionModel(com.google.protobuf.GeneratedMessageV3...
                method actionModel (line 448) | private actionModel() {
                method newInstance (line 451) | @java.lang.Override
                method getUnknownFields (line 458) | @java.lang.Override
                method actionModel (line 463) | private actionModel(
                method getDescriptor (line 502) | public static final com.google.protobuf.Descriptors.Descri...
                method internalGetFieldAccessorTable (line 507) | @java.lang.Override
                type ActionOrBuilder (line 515) | public interface ActionOrBuilder extends
                  method getTargetId (line 523) | java.lang.String getTargetId();
                  method getTargetIdBytes (line 528) | com.google.protobuf.ByteString
                  method getActionType (line 535) | java.lang.String getActionType();
                  method getActionTypeBytes (line 540) | com.google.protobuf.ByteString
                  method getTargetTitle (line 547) | java.lang.String getTargetTitle();
                  method getTargetTitleBytes (line 552) | com.google.protobuf.ByteString
                  method getSecondId (line 559) | java.lang.String getSecondId();
                  method getSecondIdBytes (line 564) | com.google.protobuf.ByteString
                class Action (line 570) | public static final class Action extends
                  method Action (line 576) | private Action(com.google.protobuf.GeneratedMessageV3.Bu...
                  method Action (line 579) | private Action() {
                  method newInstance (line 586) | @java.lang.Override
                  method getUnknownFields (line 593) | @java.lang.Override
                  method Action (line 598) | private Action(
                  method getDescriptor (line 661) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 666) | @java.lang.Override
                  method getTargetId (line 680) | @java.lang.Override
                  method getTargetIdBytes (line 697) | @java.lang.Override
                  method getActionType (line 718) | @java.lang.Override
                  method getActionTypeBytes (line 735) | @java.lang.Override
                  method getTargetTitle (line 756) | @java.lang.Override
                  method getTargetTitleBytes (line 773) | @java.lang.Override
                  method getSecondId (line 794) | @java.lang.Override
                  method getSecondIdBytes (line 811) | @java.lang.Override
                  method isInitialized (line 827) | @java.lang.Override
                  method writeTo (line 837) | @java.lang.Override
                  method getSerializedSize (line 855) | @java.lang.Override
                  method equals (line 878) | @java.lang.Override
                  method hashCode (line 900) | @java.lang.Override
                  method parseFrom (line 920) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 925) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 931) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 936) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 942) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 946) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 952) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 957) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 964) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 969) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 976) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 982) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method newBuilderForType (line 990) | @java.lang.Override
                  method newBuilder (line 992) | public static Builder newBuilder() {
                  method newBuilder (line 995) | public static Builder newBuilder(com.lizongying.mytv.pro...
                  method toBuilder (line 998) | @java.lang.Override
                  method newBuilderForType (line 1004) | @java.lang.Override
                  class Builder (line 1013) | public static final class Builder extends
                    method getDescriptor (line 1017) | public static final com.google.protobuf.Descriptors.De...
                    method internalGetFieldAccessorTable (line 1022) | @java.lang.Override
                    method Builder (line 1031) | private Builder() {
                    method Builder (line 1035) | private Builder(
                    method maybeForceBuilderInitialization (line 1040) | private void maybeForceBuilderInitialization() {
                    method clear (line 1045) | @java.lang.Override
                    method getDescriptorForType (line 1059) | @java.lang.Override
                    method getDefaultInstanceForType (line 1065) | @java.lang.Override
                    method build (line 1070) | @java.lang.Override
                    method buildPartial (line 1079) | @java.lang.Override
                    method clone (line 1090) | @java.lang.Override
                    method setField (line 1094) | @java.lang.Override
                    method clearField (line 1100) | @java.lang.Override
                    method clearOneof (line 1105) | @java.lang.Override
                    method setRepeatedField (line 1110) | @java.lang.Override
                    method addRepeatedField (line 1116) | @java.lang.Override
                    method mergeFrom (line 1122) | @java.lang.Override
                    method mergeFrom (line 1132) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp...
                    method isInitialized (line 1155) | @java.lang.Override
                    method mergeFrom (line 1160) | @java.lang.Override
                    method getTargetId (line 1184) | public java.lang.String getTargetId() {
                    method getTargetIdBytes (line 1200) | public com.google.protobuf.ByteString
                    method setTargetId (line 1218) | public Builder setTargetId(
                    method clearTargetId (line 1232) | public Builder clearTargetId() {
                    method setTargetIdBytes (line 1243) | public Builder setTargetIdBytes(
                    method getActionType (line 1260) | public java.lang.String getActionType() {
                    method getActionTypeBytes (line 1276) | public com.google.protobuf.ByteString
                    method setActionType (line 1294) | public Builder setActionType(
                    method clearActionType (line 1308) | public Builder clearActionType() {
                    method setActionTypeBytes (line 1319) | public Builder setActionTypeBytes(
                    method getTargetTitle (line 1336) | public java.lang.String getTargetTitle() {
                    method getTargetTitleBytes (line 1352) | public com.google.protobuf.ByteString
                    method setTargetTitle (line 1370) | public Builder setTargetTitle(
                    method clearTargetTitle (line 1384) | public Builder clearTargetTitle() {
                    method setTargetTitleBytes (line 1395) | public Builder setTargetTitleBytes(
                    method getSecondId (line 1412) | public java.lang.String getSecondId() {
                    method getSecondIdBytes (line 1428) | public com.google.protobuf.ByteString
                    method setSecondId (line 1446) | public Builder setSecondId(
                    method clearSecondId (line 1460) | public Builder clearSecondId() {
                    method setSecondIdBytes (line 1471) | public Builder setSecondIdBytes(
                    method setUnknownFields (line 1482) | @java.lang.Override
                    method mergeUnknownFields (line 1488) | @java.lang.Override
                  method getDefaultInstance (line 1504) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parsePartialFrom (line 1510) | @java.lang.Override
                  method parser (line 1519) | public static com.google.protobuf.Parser<Action> parser() {
                  method getParserForType (line 1523) | @java.lang.Override
                  method getDefaultInstanceForType (line 1528) | @java.lang.Override
                method isInitialized (line 1536) | @java.lang.Override
                method writeTo (line 1546) | @java.lang.Override
                method getSerializedSize (line 1552) | @java.lang.Override
                method equals (line 1563) | @java.lang.Override
                method hashCode (line 1577) | @java.lang.Override
                method parseFrom (line 1589) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 1594) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 1600) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 1605) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 1611) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 1615) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 1621) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 1626) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseDelimitedFrom (line 1633) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseDelimitedFrom (line 1638) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 1645) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 1651) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method newBuilderForType (line 1659) | @java.lang.Override
                method newBuilder (line 1661) | public static Builder newBuilder() {
                method newBuilder (line 1664) | public static Builder newBuilder(com.lizongying.mytv.proto...
                method toBuilder (line 1667) | @java.lang.Override
                method newBuilderForType (line 1673) | @java.lang.Override
                class Builder (line 1682) | public static final class Builder extends
                  method getDescriptor (line 1686) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 1691) | @java.lang.Override
                  method Builder (line 1700) | private Builder() {
                  method Builder (line 1704) | private Builder(
                  method maybeForceBuilderInitialization (line 1709) | private void maybeForceBuilderInitialization() {
                  method clear (line 1714) | @java.lang.Override
                  method getDescriptorForType (line 1720) | @java.lang.Override
                  method getDefaultInstanceForType (line 1726) | @java.lang.Override
                  method build (line 1731) | @java.lang.Override
                  method buildPartial (line 1740) | @java.lang.Override
                  method clone (line 1747) | @java.lang.Override
                  method setField (line 1751) | @java.lang.Override
                  method clearField (line 1757) | @java.lang.Override
                  method clearOneof (line 1762) | @java.lang.Override
                  method setRepeatedField (line 1767) | @java.lang.Override
                  method addRepeatedField (line 1773) | @java.lang.Override
                  method mergeFrom (line 1779) | @java.lang.Override
                  method mergeFrom (line 1789) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp.c...
                  method isInitialized (line 1796) | @java.lang.Override
                  method mergeFrom (line 1801) | @java.lang.Override
                  method setUnknownFields (line 1819) | @java.lang.Override
                  method mergeUnknownFields (line 1825) | @java.lang.Override
                method getDefaultInstance (line 1841) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parsePartialFrom (line 1847) | @java.lang.Override
                method parser (line 1856) | public static com.google.protobuf.Parser<actionModel> pars...
                method getParserForType (line 1860) | @java.lang.Override
                method getDefaultInstanceForType (line 1865) | @java.lang.Override
              type imgtagModelOrBuilder (line 1872) | public interface imgtagModelOrBuilder extends
              class imgtagModel (line 1879) | public static final class imgtagModel extends
                method imgtagModel (line 1885) | private imgtagModel(com.google.protobuf.GeneratedMessageV3...
                method imgtagModel (line 1888) | private imgtagModel() {
                method newInstance (line 1891) | @java.lang.Override
                method getUnknownFields (line 1898) | @java.lang.Override
                method imgtagModel (line 1903) | private imgtagModel(
                method getDescriptor (line 1942) | public static final com.google.protobuf.Descriptors.Descri...
                method internalGetFieldAccessorTable (line 1947) | @java.lang.Override
                type ImgtagVerOrBuilder (line 1955) | public interface ImgtagVerOrBuilder extends
                  method getTag1List (line 1962) | java.util.List<com.lizongying.mytv.proto.Ysp.cn.yangship...
                  method getTag1 (line 1967) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getTag1Count (line 1971) | int getTag1Count();
                  method getTag1OrBuilderList (line 1975) | java.util.List<? extends com.lizongying.mytv.proto.Ysp.c...
                  method getTag1OrBuilder (line 1980) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getTag2List (line 1986) | java.util.List<com.lizongying.mytv.proto.Ysp.cn.yangship...
                  method getTag2 (line 1991) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getTag2Count (line 1995) | int getTag2Count();
                  method getTag2OrBuilderList (line 1999) | java.util.List<? extends com.lizongying.mytv.proto.Ysp.c...
                  method getTag2OrBuilder (line 2004) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getTag3List (line 2010) | java.util.List<com.lizongying.mytv.proto.Ysp.cn.yangship...
                  method getTag3 (line 2015) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getTag3Count (line 2019) | int getTag3Count();
                  method getTag3OrBuilderList (line 2023) | java.util.List<? extends com.lizongying.mytv.proto.Ysp.c...
                  method getTag3OrBuilder (line 2028) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getTag4List (line 2034) | java.util.List<com.lizongying.mytv.proto.Ysp.cn.yangship...
                  method getTag4 (line 2039) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getTag4Count (line 2043) | int getTag4Count();
                  method getTag4OrBuilderList (line 2047) | java.util.List<? extends com.lizongying.mytv.proto.Ysp.c...
                  method getTag4OrBuilder (line 2052) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                class ImgtagVer (line 2058) | public static final class ImgtagVer extends
                  method ImgtagVer (line 2064) | private ImgtagVer(com.google.protobuf.GeneratedMessageV3...
                  method ImgtagVer (line 2067) | private ImgtagVer() {
                  method newInstance (line 2074) | @java.lang.Override
                  method getUnknownFields (line 2081) | @java.lang.Override
                  method ImgtagVer (line 2086) | private ImgtagVer(
                  method getDescriptor (line 2174) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 2179) | @java.lang.Override
                  method getTag1List (line 2192) | @java.lang.Override
                  method getTag1OrBuilderList (line 2199) | @java.lang.Override
                  method getTag1Count (line 2207) | @java.lang.Override
                  method getTag1 (line 2214) | @java.lang.Override
                  method getTag1OrBuilder (line 2221) | @java.lang.Override
                  method getTag2List (line 2232) | @java.lang.Override
                  method getTag2OrBuilderList (line 2239) | @java.lang.Override
                  method getTag2Count (line 2247) | @java.lang.Override
                  method getTag2 (line 2254) | @java.lang.Override
                  method getTag2OrBuilder (line 2261) | @java.lang.Override
                  method getTag3List (line 2272) | @java.lang.Override
                  method getTag3OrBuilderList (line 2279) | @java.lang.Override
                  method getTag3Count (line 2287) | @java.lang.Override
                  method getTag3 (line 2294) | @java.lang.Override
                  method getTag3OrBuilder (line 2301) | @java.lang.Override
                  method getTag4List (line 2312) | @java.lang.Override
                  method getTag4OrBuilderList (line 2319) | @java.lang.Override
                  method getTag4Count (line 2327) | @java.lang.Override
                  method getTag4 (line 2334) | @java.lang.Override
                  method getTag4OrBuilder (line 2341) | @java.lang.Override
                  method isInitialized (line 2348) | @java.lang.Override
                  method writeTo (line 2358) | @java.lang.Override
                  method getSerializedSize (line 2376) | @java.lang.Override
                  method equals (line 2403) | @java.lang.Override
                  method hashCode (line 2425) | @java.lang.Override
                  method parseFrom (line 2453) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 2458) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 2464) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 2469) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 2475) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 2479) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 2485) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 2490) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 2497) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 2502) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 2509) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 2515) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method newBuilderForType (line 2523) | @java.lang.Override
                  method newBuilder (line 2525) | public static Builder newBuilder() {
                  method newBuilder (line 2528) | public static Builder newBuilder(com.lizongying.mytv.pro...
                  method toBuilder (line 2531) | @java.lang.Override
                  method newBuilderForType (line 2537) | @java.lang.Override
                  class Builder (line 2546) | public static final class Builder extends
                    method getDescriptor (line 2550) | public static final com.google.protobuf.Descriptors.De...
                    method internalGetFieldAccessorTable (line 2555) | @java.lang.Override
                    method Builder (line 2564) | private Builder() {
                    method Builder (line 2568) | private Builder(
                    method maybeForceBuilderInitialization (line 2573) | private void maybeForceBuilderInitialization() {
                    method clear (line 2582) | @java.lang.Override
                    method getDescriptorForType (line 2612) | @java.lang.Override
                    method getDefaultInstanceForType (line 2618) | @java.lang.Override
                    method build (line 2623) | @java.lang.Override
                    method buildPartial (line 2632) | @java.lang.Override
                    method clone (line 2676) | @java.lang.Override
                    method setField (line 2680) | @java.lang.Override
                    method clearField (line 2686) | @java.lang.Override
                    method clearOneof (line 2691) | @java.lang.Override
                    method setRepeatedField (line 2696) | @java.lang.Override
                    method addRepeatedField (line 2702) | @java.lang.Override
                    method mergeFrom (line 2708) | @java.lang.Override
                    method mergeFrom (line 2718) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp...
                    method isInitialized (line 2829) | @java.lang.Override
                    method mergeFrom (line 2834) | @java.lang.Override
                    method ensureTag1IsMutable (line 2856) | private void ensureTag1IsMutable() {
                    method getTag1List (line 2869) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getTag1Count (line 2879) | public int getTag1Count() {
                    method getTag1 (line 2889) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setTag1 (line 2899) | public Builder setTag1(
                    method setTag1 (line 2916) | public Builder setTag1(
                    method addTag1 (line 2930) | public Builder addTag1(com.lizongying.mytv.proto.Ysp.c...
                    method addTag1 (line 2946) | public Builder addTag1(
                    method addTag1 (line 2963) | public Builder addTag1(
                    method addTag1 (line 2977) | public Builder addTag1(
                    method addAllTag1 (line 2991) | public Builder addAllTag1(
                    method clearTag1 (line 3006) | public Builder clearTag1() {
                    method removeTag1 (line 3019) | public Builder removeTag1(int index) {
                    method getTag1Builder (line 3032) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag1OrBuilder (line 3039) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag1OrBuilderList (line 3049) | public java.util.List<? extends com.lizongying.mytv.pr...
                    method addTag1Builder (line 3060) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method addTag1Builder (line 3067) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag1BuilderList (line 3075) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getTag1FieldBuilder (line 3079) | private com.google.protobuf.RepeatedFieldBuilderV3<
                    method ensureTag2IsMutable (line 3096) | private void ensureTag2IsMutable() {
                    method getTag2List (line 3109) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getTag2Count (line 3119) | public int getTag2Count() {
                    method getTag2 (line 3129) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setTag2 (line 3139) | public Builder setTag2(
                    method setTag2 (line 3156) | public Builder setTag2(
                    method addTag2 (line 3170) | public Builder addTag2(com.lizongying.mytv.proto.Ysp.c...
                    method addTag2 (line 3186) | public Builder addTag2(
                    method addTag2 (line 3203) | public Builder addTag2(
                    method addTag2 (line 3217) | public Builder addTag2(
                    method addAllTag2 (line 3231) | public Builder addAllTag2(
                    method clearTag2 (line 3246) | public Builder clearTag2() {
                    method removeTag2 (line 3259) | public Builder removeTag2(int index) {
                    method getTag2Builder (line 3272) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag2OrBuilder (line 3279) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag2OrBuilderList (line 3289) | public java.util.List<? extends com.lizongying.mytv.pr...
                    method addTag2Builder (line 3300) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method addTag2Builder (line 3307) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag2BuilderList (line 3315) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getTag2FieldBuilder (line 3319) | private com.google.protobuf.RepeatedFieldBuilderV3<
                    method ensureTag3IsMutable (line 3336) | private void ensureTag3IsMutable() {
                    method getTag3List (line 3349) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getTag3Count (line 3359) | public int getTag3Count() {
                    method getTag3 (line 3369) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setTag3 (line 3379) | public Builder setTag3(
                    method setTag3 (line 3396) | public Builder setTag3(
                    method addTag3 (line 3410) | public Builder addTag3(com.lizongying.mytv.proto.Ysp.c...
                    method addTag3 (line 3426) | public Builder addTag3(
                    method addTag3 (line 3443) | public Builder addTag3(
                    method addTag3 (line 3457) | public Builder addTag3(
                    method addAllTag3 (line 3471) | public Builder addAllTag3(
                    method clearTag3 (line 3486) | public Builder clearTag3() {
                    method removeTag3 (line 3499) | public Builder removeTag3(int index) {
                    method getTag3Builder (line 3512) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag3OrBuilder (line 3519) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag3OrBuilderList (line 3529) | public java.util.List<? extends com.lizongying.mytv.pr...
                    method addTag3Builder (line 3540) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method addTag3Builder (line 3547) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag3BuilderList (line 3555) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getTag3FieldBuilder (line 3559) | private com.google.protobuf.RepeatedFieldBuilderV3<
                    method ensureTag4IsMutable (line 3576) | private void ensureTag4IsMutable() {
                    method getTag4List (line 3589) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getTag4Count (line 3599) | public int getTag4Count() {
                    method getTag4 (line 3609) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setTag4 (line 3619) | public Builder setTag4(
                    method setTag4 (line 3636) | public Builder setTag4(
                    method addTag4 (line 3650) | public Builder addTag4(com.lizongying.mytv.proto.Ysp.c...
                    method addTag4 (line 3666) | public Builder addTag4(
                    method addTag4 (line 3683) | public Builder addTag4(
                    method addTag4 (line 3697) | public Builder addTag4(
                    method addAllTag4 (line 3711) | public Builder addAllTag4(
                    method clearTag4 (line 3726) | public Builder clearTag4() {
                    method removeTag4 (line 3739) | public Builder removeTag4(int index) {
                    method getTag4Builder (line 3752) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag4OrBuilder (line 3759) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag4OrBuilderList (line 3769) | public java.util.List<? extends com.lizongying.mytv.pr...
                    method addTag4Builder (line 3780) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method addTag4Builder (line 3787) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getTag4BuilderList (line 3795) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getTag4FieldBuilder (line 3799) | private com.google.protobuf.RepeatedFieldBuilderV3<
                    method setUnknownFields (line 3813) | @java.lang.Override
                    method mergeUnknownFields (line 3819) | @java.lang.Override
                  method getDefaultInstance (line 3835) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parsePartialFrom (line 3841) | @java.lang.Override
                  method parser (line 3850) | public static com.google.protobuf.Parser<ImgtagVer> pars...
                  method getParserForType (line 3854) | @java.lang.Override
                  method getDefaultInstanceForType (line 3859) | @java.lang.Override
                type ImgtagOrBuilder (line 3866) | public interface ImgtagOrBuilder extends
                  method getId (line 3874) | java.lang.String getId();
                  method getIdBytes (line 3879) | com.google.protobuf.ByteString
                  method getText (line 3886) | java.lang.String getText();
                  method getTextBytes (line 3891) | com.google.protobuf.ByteString
                class Imgtag (line 3897) | public static final class Imgtag extends
                  method Imgtag (line 3903) | private Imgtag(com.google.protobuf.GeneratedMessageV3.Bu...
                  method Imgtag (line 3906) | private Imgtag() {
                  method newInstance (line 3911) | @java.lang.Override
                  method getUnknownFields (line 3918) | @java.lang.Override
                  method Imgtag (line 3923) | private Imgtag(
                  method getDescriptor (line 3974) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 3979) | @java.lang.Override
                  method getId (line 3993) | @java.lang.Override
                  method getIdBytes (line 4010) | @java.lang.Override
                  method getText (line 4031) | @java.lang.Override
                  method getTextBytes (line 4048) | @java.lang.Override
                  method isInitialized (line 4064) | @java.lang.Override
                  method writeTo (line 4074) | @java.lang.Override
                  method getSerializedSize (line 4086) | @java.lang.Override
                  method equals (line 4103) | @java.lang.Override
                  method hashCode (line 4121) | @java.lang.Override
                  method parseFrom (line 4137) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 4142) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 4148) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 4153) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 4159) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 4163) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 4169) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 4174) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 4181) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 4186) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 4193) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 4199) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method newBuilderForType (line 4207) | @java.lang.Override
                  method newBuilder (line 4209) | public static Builder newBuilder() {
                  method newBuilder (line 4212) | public static Builder newBuilder(com.lizongying.mytv.pro...
                  method toBuilder (line 4215) | @java.lang.Override
                  method newBuilderForType (line 4221) | @java.lang.Override
                  class Builder (line 4230) | public static final class Builder extends
                    method getDescriptor (line 4234) | public static final com.google.protobuf.Descriptors.De...
                    method internalGetFieldAccessorTable (line 4239) | @java.lang.Override
                    method Builder (line 4248) | private Builder() {
                    method Builder (line 4252) | private Builder(
                    method maybeForceBuilderInitialization (line 4257) | private void maybeForceBuilderInitialization() {
                    method clear (line 4262) | @java.lang.Override
                    method getDescriptorForType (line 4272) | @java.lang.Override
                    method getDefaultInstanceForType (line 4278) | @java.lang.Override
                    method build (line 4283) | @java.lang.Override
                    method buildPartial (line 4292) | @java.lang.Override
                    method clone (line 4301) | @java.lang.Override
                    method setField (line 4305) | @java.lang.Override
                    method clearField (line 4311) | @java.lang.Override
                    method clearOneof (line 4316) | @java.lang.Override
                    method setRepeatedField (line 4321) | @java.lang.Override
                    method addRepeatedField (line 4327) | @java.lang.Override
                    method mergeFrom (line 4333) | @java.lang.Override
                    method mergeFrom (line 4343) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp...
                    method isInitialized (line 4358) | @java.lang.Override
                    method mergeFrom (line 4363) | @java.lang.Override
                    method getId (line 4387) | public java.lang.String getId() {
                    method getIdBytes (line 4403) | public com.google.protobuf.ByteString
                    method setId (line 4421) | public Builder setId(
                    method clearId (line 4435) | public Builder clearId() {
                    method setIdBytes (line 4446) | public Builder setIdBytes(
                    method getText (line 4463) | public java.lang.String getText() {
                    method getTextBytes (line 4479) | public com.google.protobuf.ByteString
                    method setText (line 4497) | public Builder setText(
                    method clearText (line 4511) | public Builder clearText() {
                    method setTextBytes (line 4522) | public Builder setTextBytes(
                    method setUnknownFields (line 4533) | @java.lang.Override
                    method mergeUnknownFields (line 4539) | @java.lang.Override
                  method getDefaultInstance (line 4555) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parsePartialFrom (line 4561) | @java.lang.Override
                  method parser (line 4570) | public static com.google.protobuf.Parser<Imgtag> parser() {
                  method getParserForType (line 4574) | @java.lang.Override
                  method getDefaultInstanceForType (line 4579) | @java.lang.Override
                method isInitialized (line 4587) | @java.lang.Override
                method writeTo (line 4597) | @java.lang.Override
                method getSerializedSize (line 4603) | @java.lang.Override
                method equals (line 4614) | @java.lang.Override
                method hashCode (line 4628) | @java.lang.Override
                method parseFrom (line 4640) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 4645) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 4651) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 4656) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 4662) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 4666) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 4672) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 4677) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseDelimitedFrom (line 4684) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseDelimitedFrom (line 4689) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 4696) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 4702) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method newBuilderForType (line 4710) | @java.lang.Override
                method newBuilder (line 4712) | public static Builder newBuilder() {
                method newBuilder (line 4715) | public static Builder newBuilder(com.lizongying.mytv.proto...
                method toBuilder (line 4718) | @java.lang.Override
                method newBuilderForType (line 4724) | @java.lang.Override
                class Builder (line 4733) | public static final class Builder extends
                  method getDescriptor (line 4737) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 4742) | @java.lang.Override
                  method Builder (line 4751) | private Builder() {
                  method Builder (line 4755) | private Builder(
                  method maybeForceBuilderInitialization (line 4760) | private void maybeForceBuilderInitialization() {
                  method clear (line 4765) | @java.lang.Override
                  method getDescriptorForType (line 4771) | @java.lang.Override
                  method getDefaultInstanceForType (line 4777) | @java.lang.Override
                  method build (line 4782) | @java.lang.Override
                  method buildPartial (line 4791) | @java.lang.Override
                  method clone (line 4798) | @java.lang.Override
                  method setField (line 4802) | @java.lang.Override
                  method clearField (line 4808) | @java.lang.Override
                  method clearOneof (line 4813) | @java.lang.Override
                  method setRepeatedField (line 4818) | @java.lang.Override
                  method addRepeatedField (line 4824) | @java.lang.Override
                  method mergeFrom (line 4830) | @java.lang.Override
                  method mergeFrom (line 4840) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp.c...
                  method isInitialized (line 4847) | @java.lang.Override
                  method mergeFrom (line 4852) | @java.lang.Override
                  method setUnknownFields (line 4870) | @java.lang.Override
                  method mergeUnknownFields (line 4876) | @java.lang.Override
                method getDefaultInstance (line 4892) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parsePartialFrom (line 4898) | @java.lang.Override
                method parser (line 4907) | public static com.google.protobuf.Parser<imgtagModel> pars...
                method getParserForType (line 4911) | @java.lang.Override
                method getDefaultInstanceForType (line 4916) | @java.lang.Override
              type pageModelOrBuilder (line 4923) | public interface pageModelOrBuilder extends
              class pageModel (line 4930) | public static final class pageModel extends
                method pageModel (line 4936) | private pageModel(com.google.protobuf.GeneratedMessageV3.B...
                method pageModel (line 4939) | private pageModel() {
                method newInstance (line 4942) | @java.lang.Override
                method getUnknownFields (line 4949) | @java.lang.Override
                method pageModel (line 4954) | private pageModel(
                method getDescriptor (line 4993) | public static final com.google.protobuf.Descriptors.Descri...
                method internalGetFieldAccessorTable (line 4998) | @java.lang.Override
                type ResponseOrBuilder (line 5006) | public interface ResponseOrBuilder extends
                  method getCode (line 5014) | int getCode();
                  method hasData (line 5020) | boolean hasData();
                  method getData (line 5025) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getDataOrBuilder (line 5029) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getMessage (line 5035) | java.lang.String getMessage();
                  method getMessageBytes (line 5040) | com.google.protobuf.ByteString
                class Response (line 5046) | public static final class Response extends
                  method Response (line 5052) | private Response(com.google.protobuf.GeneratedMessageV3....
                  method Response (line 5055) | private Response() {
                  method newInstance (line 5059) | @java.lang.Override
                  method getUnknownFields (line 5066) | @java.lang.Override
                  method Response (line 5071) | private Response(
                  method getDescriptor (line 5134) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 5139) | @java.lang.Override
                  method getCode (line 5153) | @java.lang.Override
                  method hasData (line 5164) | @java.lang.Override
                  method getData (line 5172) | @java.lang.Override
                  method getDataOrBuilder (line 5179) | @java.lang.Override
                  method getMessage (line 5190) | @java.lang.Override
                  method getMessageBytes (line 5207) | @java.lang.Override
                  method isInitialized (line 5223) | @java.lang.Override
                  method writeTo (line 5233) | @java.lang.Override
                  method getSerializedSize (line 5248) | @java.lang.Override
                  method equals (line 5270) | @java.lang.Override
                  method hashCode (line 5293) | @java.lang.Override
                  method parseFrom (line 5313) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 5318) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 5324) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 5329) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 5335) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 5339) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 5345) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 5350) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 5357) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 5362) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 5369) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 5375) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method newBuilderForType (line 5383) | @java.lang.Override
                  method newBuilder (line 5385) | public static Builder newBuilder() {
                  method newBuilder (line 5388) | public static Builder newBuilder(com.lizongying.mytv.pro...
                  method toBuilder (line 5391) | @java.lang.Override
                  method newBuilderForType (line 5397) | @java.lang.Override
                  class Builder (line 5406) | public static final class Builder extends
                    method getDescriptor (line 5410) | public static final com.google.protobuf.Descriptors.De...
                    method internalGetFieldAccessorTable (line 5415) | @java.lang.Override
                    method Builder (line 5424) | private Builder() {
                    method Builder (line 5428) | private Builder(
                    method maybeForceBuilderInitialization (line 5433) | private void maybeForceBuilderInitialization() {
                    method clear (line 5438) | @java.lang.Override
                    method getDescriptorForType (line 5454) | @java.lang.Override
                    method getDefaultInstanceForType (line 5460) | @java.lang.Override
                    method build (line 5465) | @java.lang.Override
                    method buildPartial (line 5474) | @java.lang.Override
                    method clone (line 5488) | @java.lang.Override
                    method setField (line 5492) | @java.lang.Override
                    method clearField (line 5498) | @java.lang.Override
                    method clearOneof (line 5503) | @java.lang.Override
                    method setRepeatedField (line 5508) | @java.lang.Override
                    method addRepeatedField (line 5514) | @java.lang.Override
                    method mergeFrom (line 5520) | @java.lang.Override
                    method mergeFrom (line 5530) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp...
                    method isInitialized (line 5547) | @java.lang.Override
                    method mergeFrom (line 5552) | @java.lang.Override
                    method getCode (line 5576) | @java.lang.Override
                    method setCode (line 5585) | public Builder setCode(int value) {
                    method clearCode (line 5595) | public Builder clearCode() {
                    method hasData (line 5609) | public boolean hasData() {
                    method getData (line 5616) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setData (line 5626) | public Builder setData(com.lizongying.mytv.proto.Ysp.c...
                    method setData (line 5642) | public Builder setData(
                    method mergeData (line 5656) | public Builder mergeData(com.lizongying.mytv.proto.Ysp...
                    method clearData (line 5674) | public Builder clearData() {
                    method getDataBuilder (line 5688) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataOrBuilder (line 5696) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataFieldBuilder (line 5707) | private com.google.protobuf.SingleFieldBuilderV3<
                    method getMessage (line 5726) | public java.lang.String getMessage() {
                    method getMessageBytes (line 5742) | public com.google.protobuf.ByteString
                    method setMessage (line 5760) | public Builder setMessage(
                    method clearMessage (line 5774) | public Builder clearMessage() {
                    method setMessageBytes (line 5785) | public Builder setMessageBytes(
                    method setUnknownFields (line 5796) | @java.lang.Override
                    method mergeUnknownFields (line 5802) | @java.lang.Override
                  method getDefaultInstance (line 5818) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parsePartialFrom (line 5824) | @java.lang.Override
                  method parser (line 5833) | public static com.google.protobuf.Parser<Response> parse...
                  method getParserForType (line 5837) | @java.lang.Override
                  method getDefaultInstanceForType (line 5842) | @java.lang.Override
                type DataOrBuilder (line 5849) | public interface DataOrBuilder extends
                  method getFeedId (line 5857) | java.lang.String getFeedId();
                  method getFeedIdBytes (line 5862) | com.google.protobuf.ByteString
                  method getFeedModuleListList (line 5868) | java.util.List<com.lizongying.mytv.proto.Ysp.cn.yangship...
                  method getFeedModuleList (line 5873) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getFeedModuleListCount (line 5877) | int getFeedModuleListCount();
                  method getFeedModuleListOrBuilderList (line 5881) | java.util.List<? extends com.lizongying.mytv.proto.Ysp.c...
                  method getFeedModuleListOrBuilder (line 5886) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                class Data (line 5892) | public static final class Data extends
                  method Data (line 5898) | private Data(com.google.protobuf.GeneratedMessageV3.Buil...
                  method Data (line 5901) | private Data() {
                  method newInstance (line 5906) | @java.lang.Override
                  method getUnknownFields (line 5913) | @java.lang.Override
                  method Data (line 5918) | private Data(
                  method getDescriptor (line 5976) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 5981) | @java.lang.Override
                  method getFeedId (line 5995) | @java.lang.Override
                  method getFeedIdBytes (line 6012) | @java.lang.Override
                  method getFeedModuleListList (line 6032) | @java.lang.Override
                  method getFeedModuleListOrBuilderList (line 6039) | @java.lang.Override
                  method getFeedModuleListCount (line 6047) | @java.lang.Override
                  method getFeedModuleList (line 6054) | @java.lang.Override
                  method getFeedModuleListOrBuilder (line 6061) | @java.lang.Override
                  method isInitialized (line 6068) | @java.lang.Override
                  method writeTo (line 6078) | @java.lang.Override
                  method getSerializedSize (line 6090) | @java.lang.Override
                  method equals (line 6108) | @java.lang.Override
                  method hashCode (line 6126) | @java.lang.Override
                  method parseFrom (line 6144) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 6149) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 6155) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 6160) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 6166) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 6170) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 6176) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 6181) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 6188) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 6193) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 6200) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 6206) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method newBuilderForType (line 6214) | @java.lang.Override
                  method newBuilder (line 6216) | public static Builder newBuilder() {
                  method newBuilder (line 6219) | public static Builder newBuilder(com.lizongying.mytv.pro...
                  method toBuilder (line 6222) | @java.lang.Override
                  method newBuilderForType (line 6228) | @java.lang.Override
                  class Builder (line 6237) | public static final class Builder extends
                    method getDescriptor (line 6241) | public static final com.google.protobuf.Descriptors.De...
                    method internalGetFieldAccessorTable (line 6246) | @java.lang.Override
                    method Builder (line 6255) | private Builder() {
                    method Builder (line 6259) | private Builder(
                    method maybeForceBuilderInitialization (line 6264) | private void maybeForceBuilderInitialization() {
                    method clear (line 6270) | @java.lang.Override
                    method getDescriptorForType (line 6284) | @java.lang.Override
                    method getDefaultInstanceForType (line 6290) | @java.lang.Override
                    method build (line 6295) | @java.lang.Override
                    method buildPartial (line 6304) | @java.lang.Override
                    method clone (line 6322) | @java.lang.Override
                    method setField (line 6326) | @java.lang.Override
                    method clearField (line 6332) | @java.lang.Override
                    method clearOneof (line 6337) | @java.lang.Override
                    method setRepeatedField (line 6342) | @java.lang.Override
                    method addRepeatedField (line 6348) | @java.lang.Override
                    method mergeFrom (line 6354) | @java.lang.Override
                    method mergeFrom (line 6364) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp...
                    method isInitialized (line 6401) | @java.lang.Override
                    method mergeFrom (line 6406) | @java.lang.Override
                    method getFeedId (line 6431) | public java.lang.String getFeedId() {
                    method getFeedIdBytes (line 6447) | public com.google.protobuf.ByteString
                    method setFeedId (line 6465) | public Builder setFeedId(
                    method clearFeedId (line 6479) | public Builder clearFeedId() {
                    method setFeedIdBytes (line 6490) | public Builder setFeedIdBytes(
                    method ensureFeedModuleListIsMutable (line 6504) | private void ensureFeedModuleListIsMutable() {
                    method getFeedModuleListList (line 6517) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getFeedModuleListCount (line 6527) | public int getFeedModuleListCount() {
                    method getFeedModuleList (line 6537) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setFeedModuleList (line 6547) | public Builder setFeedModuleList(
                    method setFeedModuleList (line 6564) | public Builder setFeedModuleList(
                    method addFeedModuleList (line 6578) | public Builder addFeedModuleList(com.lizongying.mytv.p...
                    method addFeedModuleList (line 6594) | public Builder addFeedModuleList(
                    method addFeedModuleList (line 6611) | public Builder addFeedModuleList(
                    method addFeedModuleList (line 6625) | public Builder addFeedModuleList(
                    method addAllFeedModuleList (line 6639) | public Builder addAllFeedModuleList(
                    method clearFeedModuleList (line 6654) | public Builder clearFeedModuleList() {
                    method removeFeedModuleList (line 6667) | public Builder removeFeedModuleList(int index) {
                    method getFeedModuleListBuilder (line 6680) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getFeedModuleListOrBuilder (line 6687) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getFeedModuleListOrBuilderList (line 6697) | public java.util.List<? extends com.lizongying.mytv.pr...
                    method addFeedModuleListBuilder (line 6708) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method addFeedModuleListBuilder (line 6715) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getFeedModuleListBuilderList (line 6723) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getFeedModuleListFieldBuilder (line 6727) | private com.google.protobuf.RepeatedFieldBuilderV3<
                    method setUnknownFields (line 6741) | @java.lang.Override
                    method mergeUnknownFields (line 6747) | @java.lang.Override
                  method getDefaultInstance (line 6763) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parsePartialFrom (line 6769) | @java.lang.Override
                  method parser (line 6778) | public static com.google.protobuf.Parser<Data> parser() {
                  method getParserForType (line 6782) | @java.lang.Override
                  method getDefaultInstanceForType (line 6787) | @java.lang.Override
                type ModuleOrBuilder (line 6794) | public interface ModuleOrBuilder extends
                  method getModuleId (line 6802) | java.lang.String getModuleId();
                  method getModuleIdBytes (line 6807) | com.google.protobuf.ByteString
                  method getModuleType (line 6814) | java.lang.String getModuleType();
                  method getModuleTypeBytes (line 6819) | com.google.protobuf.ByteString
                  method getDataListList (line 6825) | java.util.List<com.lizongying.mytv.proto.Ysp.cn.yangship...
                  method getDataList (line 6830) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getDataListCount (line 6834) | int getDataListCount();
                  method getDataListOrBuilderList (line 6838) | java.util.List<? extends com.lizongying.mytv.proto.Ysp.c...
                  method getDataListOrBuilder (line 6843) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getTitle (line 6850) | java.lang.String getTitle();
                  method getTitleBytes (line 6855) | com.google.protobuf.ByteString
                  method getBgColor (line 6862) | java.lang.String getBgColor();
                  method getBgColorBytes (line 6867) | com.google.protobuf.ByteString
                  method getBg (line 6874) | java.lang.String getBg();
                  method getBgBytes (line 6879) | com.google.protobuf.ByteString
                  method getRow (line 6886) | int getRow();
                  method getRowNum (line 6892) | int getRowNum();
                  method getShowMore (line 6898) | boolean getShowMore();
                  method getShowMoreUrl (line 6904) | java.lang.String getShowMoreUrl();
                  method getShowMoreUrlBytes (line 6909) | com.google.protobuf.ByteString
                  method getShowChange (line 6916) | boolean getShowChange();
                  method getShowPagination (line 6922) | boolean getShowPagination();
                  method getDataSource (line 6928) | java.lang.String getDataSource();
                  method getDataSourceBytes (line 6933) | com.google.protobuf.ByteString
                  method hasDataRecommendApi (line 6940) | boolean hasDataRecommendApi();
                  method getDataRecommendApi (line 6945) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getDataRecommendApiOrBuilder (line 6949) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getDataTvChannelListList (line 6954) | java.util.List<com.lizongying.mytv.proto.Ysp.cn.yangship...
                  method getDataTvChannelList (line 6959) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getDataTvChannelListCount (line 6963) | int getDataTvChannelListCount();
                  method getDataTvChannelListOrBuilderList (line 6967) | java.util.List<? extends com.lizongying.mytv.proto.Ysp.c...
                  method getDataTvChannelListOrBuilder (line 6972) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getExString (line 6979) | java.lang.String getExString();
                  method getExStringBytes (line 6984) | com.google.protobuf.ByteString
                  method getTitlePic (line 6991) | java.lang.String getTitlePic();
                  method getTitlePicBytes (line 6996) | com.google.protobuf.ByteString
                  method hasDataVipModule (line 7003) | boolean hasDataVipModule();
                  method getDataVipModule (line 7008) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getDataVipModuleOrBuilder (line 7012) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getExString2 (line 7018) | java.lang.String getExString2();
                  method getExString2Bytes (line 7023) | com.google.protobuf.ByteString
                  method getTitleIcon (line 7030) | java.lang.String getTitleIcon();
                  method getTitleIconBytes (line 7035) | com.google.protobuf.ByteString
                class Module (line 7041) | public static final class Module extends
                  method Module (line 7047) | private Module(com.google.protobuf.GeneratedMessageV3.Bu...
                  method Module (line 7050) | private Module() {
                  method newInstance (line 7066) | @java.lang.Override
                  method getUnknownFields (line 7073) | @java.lang.Override
                  method Module (line 7078) | private Module(
                  method getDescriptor (line 7259) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 7264) | @java.lang.Override
                  method getModuleId (line 7278) | @java.lang.Override
                  method getModuleIdBytes (line 7295) | @java.lang.Override
                  method getModuleType (line 7316) | @java.lang.Override
                  method getModuleTypeBytes (line 7333) | @java.lang.Override
                  method getDataListList (line 7353) | @java.lang.Override
                  method getDataListOrBuilderList (line 7360) | @java.lang.Override
                  method getDataListCount (line 7368) | @java.lang.Override
                  method getDataList (line 7375) | @java.lang.Override
                  method getDataListOrBuilder (line 7382) | @java.lang.Override
                  method getTitle (line 7394) | @java.lang.Override
                  method getTitleBytes (line 7411) | @java.lang.Override
                  method getBgColor (line 7432) | @java.lang.Override
                  method getBgColorBytes (line 7449) | @java.lang.Override
                  method getBg (line 7470) | @java.lang.Override
                  method getBgBytes (line 7487) | @java.lang.Override
                  method getRow (line 7508) | @java.lang.Override
                  method getRowNum (line 7519) | @java.lang.Override
                  method getShowMore (line 7530) | @java.lang.Override
                  method getShowMoreUrl (line 7541) | @java.lang.Override
                  method getShowMoreUrlBytes (line 7558) | @java.lang.Override
                  method getShowChange (line 7579) | @java.lang.Override
                  method getShowPagination (line 7590) | @java.lang.Override
                  method getDataSource (line 7601) | @java.lang.Override
                  method getDataSourceBytes (line 7618) | @java.lang.Override
                  method hasDataRecommendApi (line 7639) | @java.lang.Override
                  method getDataRecommendApi (line 7647) | @java.lang.Override
                  method getDataRecommendApiOrBuilder (line 7654) | @java.lang.Override
                  method getDataTvChannelListList (line 7664) | @java.lang.Override
                  method getDataTvChannelListOrBuilderList (line 7671) | @java.lang.Override
                  method getDataTvChannelListCount (line 7679) | @java.lang.Override
                  method getDataTvChannelList (line 7686) | @java.lang.Override
                  method getDataTvChannelListOrBuilder (line 7693) | @java.lang.Override
                  method getExString (line 7705) | @java.lang.Override
                  method getExStringBytes (line 7722) | @java.lang.Override
                  method getTitlePic (line 7743) | @java.lang.Override
                  method getTitlePicBytes (line 7760) | @java.lang.Override
                  method hasDataVipModule (line 7781) | @java.lang.Override
                  method getDataVipModule (line 7789) | @java.lang.Override
                  method getDataVipModuleOrBuilder (line 7796) | @java.lang.Override
                  method getExString2 (line 7807) | @java.lang.Override
                  method getExString2Bytes (line 7824) | @java.lang.Override
                  method getTitleIcon (line 7845) | @java.lang.Override
                  method getTitleIconBytes (line 7862) | @java.lang.Override
                  method isInitialized (line 7878) | @java.lang.Override
                  method writeTo (line 7888) | @java.lang.Override
                  method getSerializedSize (line 7954) | @java.lang.Override
                  method equals (line 8034) | @java.lang.Override
                  method hashCode (line 8094) | @java.lang.Override
                  method parseFrom (line 8157) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 8162) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 8168) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 8173) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 8179) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 8183) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 8189) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 8194) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 8201) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 8206) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 8213) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 8219) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method newBuilderForType (line 8227) | @java.lang.Override
                  method newBuilder (line 8229) | public static Builder newBuilder() {
                  method newBuilder (line 8232) | public static Builder newBuilder(com.lizongying.mytv.pro...
                  method toBuilder (line 8235) | @java.lang.Override
                  method newBuilderForType (line 8241) | @java.lang.Override
                  class Builder (line 8250) | public static final class Builder extends
                    method getDescriptor (line 8254) | public static final com.google.protobuf.Descriptors.De...
                    method internalGetFieldAccessorTable (line 8259) | @java.lang.Override
                    method Builder (line 8268) | private Builder() {
                    method Builder (line 8272) | private Builder(
                    method maybeForceBuilderInitialization (line 8277) | private void maybeForceBuilderInitialization() {
                    method clear (line 8284) | @java.lang.Override
                    method getDescriptorForType (line 8346) | @java.lang.Override
                    method getDefaultInstanceForType (line 8352) | @java.lang.Override
                    method build (line 8357) | @java.lang.Override
                    method buildPartial (line 8366) | @java.lang.Override
                    method clone (line 8418) | @java.lang.Override
                    method setField (line 8422) | @java.lang.Override
                    method clearField (line 8428) | @java.lang.Override
                    method clearOneof (line 8433) | @java.lang.Override
                    method setRepeatedField (line 8438) | @java.lang.Override
                    method addRepeatedField (line 8444) | @java.lang.Override
                    method mergeFrom (line 8450) | @java.lang.Override
                    method mergeFrom (line 8460) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp...
                    method isInitialized (line 8584) | @java.lang.Override
                    method mergeFrom (line 8589) | @java.lang.Override
                    method getModuleId (line 8614) | public java.lang.String getModuleId() {
                    method getModuleIdBytes (line 8630) | public com.google.protobuf.ByteString
                    method setModuleId (line 8648) | public Builder setModuleId(
                    method clearModuleId (line 8662) | public Builder clearModuleId() {
                    method setModuleIdBytes (line 8673) | public Builder setModuleIdBytes(
                    method getModuleType (line 8690) | public java.lang.String getModuleType() {
                    method getModuleTypeBytes (line 8706) | public com.google.protobuf.ByteString
                    method setModuleType (line 8724) | public Builder setModuleType(
                    method clearModuleType (line 8738) | public Builder clearModuleType() {
                    method setModuleTypeBytes (line 8749) | public Builder setModuleTypeBytes(
                    method ensureDataListIsMutable (line 8763) | private void ensureDataListIsMutable() {
                    method getDataListList (line 8776) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getDataListCount (line 8786) | public int getDataListCount() {
                    method getDataList (line 8796) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setDataList (line 8806) | public Builder setDataList(
                    method setDataList (line 8823) | public Builder setDataList(
                    method addDataList (line 8837) | public Builder addDataList(com.lizongying.mytv.proto.Y...
                    method addDataList (line 8853) | public Builder addDataList(
                    method addDataList (line 8870) | public Builder addDataList(
                    method addDataList (line 8884) | public Builder addDataList(
                    method addAllDataList (line 8898) | public Builder addAllDataList(
                    method clearDataList (line 8913) | public Builder clearDataList() {
                    method removeDataList (line 8926) | public Builder removeDataList(int index) {
                    method getDataListBuilder (line 8939) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataListOrBuilder (line 8946) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataListOrBuilderList (line 8956) | public java.util.List<? extends com.lizongying.mytv.pr...
                    method addDataListBuilder (line 8967) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method addDataListBuilder (line 8974) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataListBuilderList (line 8982) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getDataListFieldBuilder (line 8986) | private com.google.protobuf.RepeatedFieldBuilderV3<
                    method getTitle (line 9006) | public java.lang.String getTitle() {
                    method getTitleBytes (line 9022) | public com.google.protobuf.ByteString
                    method setTitle (line 9040) | public Builder setTitle(
                    method clearTitle (line 9054) | public Builder clearTitle() {
                    method setTitleBytes (line 9065) | public Builder setTitleBytes(
                    method getBgColor (line 9082) | public java.lang.String getBgColor() {
                    method getBgColorBytes (line 9098) | public com.google.protobuf.ByteString
                    method setBgColor (line 9116) | public Builder setBgColor(
                    method clearBgColor (line 9130) | public Builder clearBgColor() {
                    method setBgColorBytes (line 9141) | public Builder setBgColorBytes(
                    method getBg (line 9158) | public java.lang.String getBg() {
                    method getBgBytes (line 9174) | public com.google.protobuf.ByteString
                    method setBg (line 9192) | public Builder setBg(
                    method clearBg (line 9206) | public Builder clearBg() {
                    method setBgBytes (line 9217) | public Builder setBgBytes(
                    method getRow (line 9234) | @java.lang.Override
                    method setRow (line 9243) | public Builder setRow(int value) {
                    method clearRow (line 9253) | public Builder clearRow() {
                    method getRowNum (line 9265) | @java.lang.Override
                    method setRowNum (line 9274) | public Builder setRowNum(int value) {
                    method clearRowNum (line 9284) | public Builder clearRowNum() {
                    method getShowMore (line 9296) | @java.lang.Override
                    method setShowMore (line 9305) | public Builder setShowMore(boolean value) {
                    method clearShowMore (line 9315) | public Builder clearShowMore() {
                    method getShowMoreUrl (line 9327) | public java.lang.String getShowMoreUrl() {
                    method getShowMoreUrlBytes (line 9343) | public com.google.protobuf.ByteString
                    method setShowMoreUrl (line 9361) | public Builder setShowMoreUrl(
                    method clearShowMoreUrl (line 9375) | public Builder clearShowMoreUrl() {
                    method setShowMoreUrlBytes (line 9386) | public Builder setShowMoreUrlBytes(
                    method getShowChange (line 9403) | @java.lang.Override
                    method setShowChange (line 9412) | public Builder setShowChange(boolean value) {
                    method clearShowChange (line 9422) | public Builder clearShowChange() {
                    method getShowPagination (line 9434) | @java.lang.Override
                    method setShowPagination (line 9443) | public Builder setShowPagination(boolean value) {
                    method clearShowPagination (line 9453) | public Builder clearShowPagination() {
                    method getDataSource (line 9465) | public java.lang.String getDataSource() {
                    method getDataSourceBytes (line 9481) | public com.google.protobuf.ByteString
                    method setDataSource (line 9499) | public Builder setDataSource(
                    method clearDataSource (line 9513) | public Builder clearDataSource() {
                    method setDataSourceBytes (line 9524) | public Builder setDataSourceBytes(
                    method hasDataRecommendApi (line 9543) | public boolean hasDataRecommendApi() {
                    method getDataRecommendApi (line 9550) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setDataRecommendApi (line 9560) | public Builder setDataRecommendApi(com.lizongying.mytv...
                    method setDataRecommendApi (line 9576) | public Builder setDataRecommendApi(
                    method mergeDataRecommendApi (line 9590) | public Builder mergeDataRecommendApi(com.lizongying.my...
                    method clearDataRecommendApi (line 9608) | public Builder clearDataRecommendApi() {
                    method getDataRecommendApiBuilder (line 9622) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataRecommendApiOrBuilder (line 9630) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataRecommendApiFieldBuilder (line 9641) | private com.google.protobuf.SingleFieldBuilderV3<
                    method ensureDataTvChannelListIsMutable (line 9657) | private void ensureDataTvChannelListIsMutable() {
                    method getDataTvChannelListList (line 9670) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getDataTvChannelListCount (line 9680) | public int getDataTvChannelListCount() {
                    method getDataTvChannelList (line 9690) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setDataTvChannelList (line 9700) | public Builder setDataTvChannelList(
                    method setDataTvChannelList (line 9717) | public Builder setDataTvChannelList(
                    method addDataTvChannelList (line 9731) | public Builder addDataTvChannelList(com.lizongying.myt...
                    method addDataTvChannelList (line 9747) | public Builder addDataTvChannelList(
                    method addDataTvChannelList (line 9764) | public Builder addDataTvChannelList(
                    method addDataTvChannelList (line 9778) | public Builder addDataTvChannelList(
                    method addAllDataTvChannelList (line 9792) | public Builder addAllDataTvChannelList(
                    method clearDataTvChannelList (line 9807) | public Builder clearDataTvChannelList() {
                    method removeDataTvChannelList (line 9820) | public Builder removeDataTvChannelList(int index) {
                    method getDataTvChannelListBuilder (line 9833) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataTvChannelListOrBuilder (line 9840) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataTvChannelListOrBuilderList (line 9850) | public java.util.List<? extends com.lizongying.mytv.pr...
                    method addDataTvChannelListBuilder (line 9861) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method addDataTvChannelListBuilder (line 9868) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataTvChannelListBuilderList (line 9876) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getDataTvChannelListFieldBuilder (line 9880) | private com.google.protobuf.RepeatedFieldBuilderV3<
                    method getExString (line 9900) | public java.lang.String getExString() {
                    method getExStringBytes (line 9916) | public com.google.protobuf.ByteString
                    method setExString (line 9934) | public Builder setExString(
                    method clearExString (line 9948) | public Builder clearExString() {
                    method setExStringBytes (line 9959) | public Builder setExStringBytes(
                    method getTitlePic (line 9976) | public java.lang.String getTitlePic() {
                    method getTitlePicBytes (line 9992) | public com.google.protobuf.ByteString
                    method setTitlePic (line 10010) | public Builder setTitlePic(
                    method clearTitlePic (line 10024) | public Builder clearTitlePic() {
                    method setTitlePicBytes (line 10035) | public Builder setTitlePicBytes(
                    method hasDataVipModule (line 10054) | public boolean hasDataVipModule() {
                    method getDataVipModule (line 10061) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setDataVipModule (line 10071) | public Builder setDataVipModule(com.lizongying.mytv.pr...
                    method setDataVipModule (line 10087) | public Builder setDataVipModule(
                    method mergeDataVipModule (line 10101) | public Builder mergeDataVipModule(com.lizongying.mytv....
                    method clearDataVipModule (line 10119) | public Builder clearDataVipModule() {
                    method getDataVipModuleBuilder (line 10133) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataVipModuleOrBuilder (line 10141) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getDataVipModuleFieldBuilder (line 10152) | private com.google.protobuf.SingleFieldBuilderV3<
                    method getExString2 (line 10171) | public java.lang.String getExString2() {
                    method getExString2Bytes (line 10187) | public com.google.protobuf.ByteString
                    method setExString2 (line 10205) | public Builder setExString2(
                    method clearExString2 (line 10219) | public Builder clearExString2() {
                    method setExString2Bytes (line 10230) | public Builder setExString2Bytes(
                    method getTitleIcon (line 10247) | public java.lang.String getTitleIcon() {
                    method getTitleIconBytes (line 10263) | public com.google.protobuf.ByteString
                    method setTitleIcon (line 10281) | public Builder setTitleIcon(
                    method clearTitleIcon (line 10295) | public Builder clearTitleIcon() {
                    method setTitleIconBytes (line 10306) | public Builder setTitleIconBytes(
                    method setUnknownFields (line 10317) | @java.lang.Override
                    method mergeUnknownFields (line 10323) | @java.lang.Override
                  method getDefaultInstance (line 10339) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parsePartialFrom (line 10345) | @java.lang.Override
                  method parser (line 10354) | public static com.google.protobuf.Parser<Module> parser() {
                  method getParserForType (line 10358) | @java.lang.Override
                  method getDefaultInstanceForType (line 10363) | @java.lang.Override
                type ModuleDataOrBuilder (line 10370) | public interface ModuleDataOrBuilder extends
                  method hasAction (line 10378) | boolean hasAction();
                  method getAction (line 10383) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getActionOrBuilder (line 10387) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getDataType (line 10393) | java.lang.String getDataType();
                  method getDataTypeBytes (line 10398) | com.google.protobuf.ByteString
                  method getTitle (line 10405) | java.lang.String getTitle();
                  method getTitleBytes (line 10410) | com.google.protobuf.ByteString
                  method getSubTitle (line 10417) | java.lang.String getSubTitle();
                  method getSubTitleBytes (line 10422) | com.google.protobuf.ByteString
                  method getCoverUrl (line 10429) | java.lang.String getCoverUrl();
                  method getCoverUrlBytes (line 10434) | com.google.protobuf.ByteString
                  method getTopBarColor (line 10441) | java.lang.String getTopBarColor();
                  method getTopBarColorBytes (line 10446) | com.google.protobuf.ByteString
                  method getCpId (line 10453) | java.lang.String getCpId();
                  method getCpIdBytes (line 10458) | com.google.protobuf.ByteString
                  method getCpName (line 10465) | java.lang.String getCpName();
                  method getCpNameBytes (line 10470) | com.google.protobuf.ByteString
                  method getCpAvatar (line 10477) | java.lang.String getCpAvatar();
                  method getCpAvatarBytes (line 10482) | com.google.protobuf.ByteString
                  method getIsVip (line 10489) | boolean getIsVip();
                  method getPlayVid (line 10495) | java.lang.String getPlayVid();
                  method getPlayVidBytes (line 10500) | com.google.protobuf.ByteString
                  method getVid (line 10507) | java.lang.String getVid();
                  method getVidBytes (line 10512) | com.google.protobuf.ByteString
                  method getCid (line 10519) | java.lang.String getCid();
                  method getCidBytes (line 10524) | com.google.protobuf.ByteString
                  method getPid (line 10531) | java.lang.String getPid();
                  method getPidBytes (line 10536) | com.google.protobuf.ByteString
                  method getLid (line 10543) | java.lang.String getLid();
                  method getLidBytes (line 10548) | com.google.protobuf.ByteString
                  method getLinkUrl (line 10555) | java.lang.String getLinkUrl();
                  method getLinkUrlBytes (line 10560) | com.google.protobuf.ByteString
                  method getDuration (line 10567) | int getDuration();
                  method getExString (line 10573) | java.lang.String getExString();
                  method getExStringBytes (line 10578) | com.google.protobuf.ByteString
                  method hasImgtagVer (line 10585) | boolean hasImgtagVer();
                  method getImgtagVer (line 10590) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getImgtagVerOrBuilder (line 10594) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getVidNum (line 10600) | int getVidNum();
                  method getUpdateNum (line 10606) | int getUpdateNum();
                  method getExString2 (line 10612) | java.lang.String getExString2();
                  method getExString2Bytes (line 10617) | com.google.protobuf.ByteString
                class ModuleData (line 10623) | public static final class ModuleData extends
                  method ModuleData (line 10629) | private ModuleData(com.google.protobuf.GeneratedMessageV...
                  method ModuleData (line 10632) | private ModuleData() {
                  method newInstance (line 10651) | @java.lang.Override
                  method getUnknownFields (line 10658) | @java.lang.Override
                  method ModuleData (line 10663) | private ModuleData(
                  method getDescriptor (line 10844) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 10849) | @java.lang.Override
                  method hasAction (line 10863) | @java.lang.Override
                  method getAction (line 10871) | @java.lang.Override
                  method getActionOrBuilder (line 10878) | @java.lang.Override
                  method getDataType (line 10889) | @java.lang.Override
                  method getDataTypeBytes (line 10906) | @java.lang.Override
                  method getTitle (line 10927) | @java.lang.Override
                  method getTitleBytes (line 10944) | @java.lang.Override
                  method getSubTitle (line 10965) | @java.lang.Override
                  method getSubTitleBytes (line 10982) | @java.lang.Override
                  method getCoverUrl (line 11003) | @java.lang.Override
                  method getCoverUrlBytes (line 11020) | @java.lang.Override
                  method getTopBarColor (line 11041) | @java.lang.Override
                  method getTopBarColorBytes (line 11058) | @java.lang.Override
                  method getCpId (line 11079) | @java.lang.Override
                  method getCpIdBytes (line 11096) | @java.lang.Override
                  method getCpName (line 11117) | @java.lang.Override
                  method getCpNameBytes (line 11134) | @java.lang.Override
                  method getCpAvatar (line 11155) | @java.lang.Override
                  method getCpAvatarBytes (line 11172) | @java.lang.Override
                  method getIsVip (line 11193) | @java.lang.Override
                  method getPlayVid (line 11204) | @java.lang.Override
                  method getPlayVidBytes (line 11221) | @java.lang.Override
                  method getVid (line 11242) | @java.lang.Override
                  method getVidBytes (line 11259) | @java.lang.Override
                  method getCid (line 11280) | @java.lang.Override
                  method getCidBytes (line 11297) | @java.lang.Override
                  method getPid (line 11318) | @java.lang.Override
                  method getPidBytes (line 11335) | @java.lang.Override
                  method getLid (line 11356) | @java.lang.Override
                  method getLidBytes (line 11373) | @java.lang.Override
                  method getLinkUrl (line 11394) | @java.lang.Override
                  method getLinkUrlBytes (line 11411) | @java.lang.Override
                  method getDuration (line 11432) | @java.lang.Override
                  method getExString (line 11443) | @java.lang.Override
                  method getExStringBytes (line 11460) | @java.lang.Override
                  method hasImgtagVer (line 11481) | @java.lang.Override
                  method getImgtagVer (line 11489) | @java.lang.Override
                  method getImgtagVerOrBuilder (line 11496) | @java.lang.Override
                  method getVidNum (line 11507) | @java.lang.Override
                  method getUpdateNum (line 11518) | @java.lang.Override
                  method getExString2 (line 11529) | @java.lang.Override
                  method getExString2Bytes (line 11546) | @java.lang.Override
                  method isInitialized (line 11562) | @java.lang.Override
                  method writeTo (line 11572) | @java.lang.Override
                  method getSerializedSize (line 11644) | @java.lang.Override
                  method equals (line 11727) | @java.lang.Override
                  method hashCode (line 11791) | @java.lang.Override
                  method parseFrom (line 11852) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 11857) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 11863) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 11868) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 11874) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 11878) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 11884) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 11889) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 11896) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 11901) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 11908) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 11914) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method newBuilderForType (line 11922) | @java.lang.Override
                  method newBuilder (line 11924) | public static Builder newBuilder() {
                  method newBuilder (line 11927) | public static Builder newBuilder(com.lizongying.mytv.pro...
                  method toBuilder (line 11930) | @java.lang.Override
                  method newBuilderForType (line 11936) | @java.lang.Override
                  class Builder (line 11945) | public static final class Builder extends
                    method getDescriptor (line 11949) | public static final com.google.protobuf.Descriptors.De...
                    method internalGetFieldAccessorTable (line 11954) | @java.lang.Override
                    method Builder (line 11963) | private Builder() {
                    method Builder (line 11967) | private Builder(
                    method maybeForceBuilderInitialization (line 11972) | private void maybeForceBuilderInitialization() {
                    method clear (line 11977) | @java.lang.Override
                    method getDescriptorForType (line 12035) | @java.lang.Override
                    method getDefaultInstanceForType (line 12041) | @java.lang.Override
                    method build (line 12046) | @java.lang.Override
                    method buildPartial (line 12055) | @java.lang.Override
                    method clone (line 12092) | @java.lang.Override
                    method setField (line 12096) | @java.lang.Override
                    method clearField (line 12102) | @java.lang.Override
                    method clearOneof (line 12107) | @java.lang.Override
                    method setRepeatedField (line 12112) | @java.lang.Override
                    method addRepeatedField (line 12118) | @java.lang.Override
                    method mergeFrom (line 12124) | @java.lang.Override
                    method mergeFrom (line 12134) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp...
                    method isInitialized (line 12223) | @java.lang.Override
                    method mergeFrom (line 12228) | @java.lang.Override
                    method hasAction (line 12254) | public boolean hasAction() {
                    method getAction (line 12261) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setAction (line 12271) | public Builder setAction(com.lizongying.mytv.proto.Ysp...
                    method setAction (line 12287) | public Builder setAction(
                    method mergeAction (line 12301) | public Builder mergeAction(com.lizongying.mytv.proto.Y...
                    method clearAction (line 12319) | public Builder clearAction() {
                    method getActionBuilder (line 12333) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getActionOrBuilder (line 12341) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getActionFieldBuilder (line 12352) | private com.google.protobuf.SingleFieldBuilderV3<
                    method getDataType (line 12371) | public java.lang.String getDataType() {
                    method getDataTypeBytes (line 12387) | public com.google.protobuf.ByteString
                    method setDataType (line 12405) | public Builder setDataType(
                    method clearDataType (line 12419) | public Builder clearDataType() {
                    method setDataTypeBytes (line 12430) | public Builder setDataTypeBytes(
                    method getTitle (line 12447) | public java.lang.String getTitle() {
                    method getTitleBytes (line 12463) | public com.google.protobuf.ByteString
                    method setTitle (line 12481) | public Builder setTitle(
                    method clearTitle (line 12495) | public Builder clearTitle() {
                    method setTitleBytes (line 12506) | public Builder setTitleBytes(
                    method getSubTitle (line 12523) | public java.lang.String getSubTitle() {
                    method getSubTitleBytes (line 12539) | public com.google.protobuf.ByteString
                    method setSubTitle (line 12557) | public Builder setSubTitle(
                    method clearSubTitle (line 12571) | public Builder clearSubTitle() {
                    method setSubTitleBytes (line 12582) | public Builder setSubTitleBytes(
                    method getCoverUrl (line 12599) | public java.lang.String getCoverUrl() {
                    method getCoverUrlBytes (line 12615) | public com.google.protobuf.ByteString
                    method setCoverUrl (line 12633) | public Builder setCoverUrl(
                    method clearCoverUrl (line 12647) | public Builder clearCoverUrl() {
                    method setCoverUrlBytes (line 12658) | public Builder setCoverUrlBytes(
                    method getTopBarColor (line 12675) | public java.lang.String getTopBarColor() {
                    method getTopBarColorBytes (line 12691) | public com.google.protobuf.ByteString
                    method setTopBarColor (line 12709) | public Builder setTopBarColor(
                    method clearTopBarColor (line 12723) | public Builder clearTopBarColor() {
                    method setTopBarColorBytes (line 12734) | public Builder setTopBarColorBytes(
                    method getCpId (line 12751) | public java.lang.String getCpId() {
                    method getCpIdBytes (line 12767) | public com.google.protobuf.ByteString
                    method setCpId (line 12785) | public Builder setCpId(
                    method clearCpId (line 12799) | public Builder clearCpId() {
                    method setCpIdBytes (line 12810) | public Builder setCpIdBytes(
                    method getCpName (line 12827) | public java.lang.String getCpName() {
                    method getCpNameBytes (line 12843) | public com.google.protobuf.ByteString
                    method setCpName (line 12861) | public Builder setCpName(
                    method clearCpName (line 12875) | public Builder clearCpName() {
                    method setCpNameBytes (line 12886) | public Builder setCpNameBytes(
                    method getCpAvatar (line 12903) | public java.lang.String getCpAvatar() {
                    method getCpAvatarBytes (line 12919) | public com.google.protobuf.ByteString
                    method setCpAvatar (line 12937) | public Builder setCpAvatar(
                    method clearCpAvatar (line 12951) | public Builder clearCpAvatar() {
                    method setCpAvatarBytes (line 12962) | public Builder setCpAvatarBytes(
                    method getIsVip (line 12979) | @java.lang.Override
                    method setIsVip (line 12988) | public Builder setIsVip(boolean value) {
                    method clearIsVip (line 12998) | public Builder clearIsVip() {
                    method getPlayVid (line 13010) | public java.lang.String getPlayVid() {
                    method getPlayVidBytes (line 13026) | public com.google.protobuf.ByteString
                    method setPlayVid (line 13044) | public Builder setPlayVid(
                    method clearPlayVid (line 13058) | public Builder clearPlayVid() {
                    method setPlayVidBytes (line 13069) | public Builder setPlayVidBytes(
                    method getVid (line 13086) | public java.lang.String getVid() {
                    method getVidBytes (line 13102) | public com.google.protobuf.ByteString
                    method setVid (line 13120) | public Builder setVid(
                    method clearVid (line 13134) | public Builder clearVid() {
                    method setVidBytes (line 13145) | public Builder setVidBytes(
                    method getCid (line 13162) | public java.lang.String getCid() {
                    method getCidBytes (line 13178) | public com.google.protobuf.ByteString
                    method setCid (line 13196) | public Builder setCid(
                    method clearCid (line 13210) | public Builder clearCid() {
                    method setCidBytes (line 13221) | public Builder setCidBytes(
                    method getPid (line 13238) | public java.lang.String getPid() {
                    method getPidBytes (line 13254) | public com.google.protobuf.ByteString
                    method setPid (line 13272) | public Builder setPid(
                    method clearPid (line 13286) | public Builder clearPid() {
                    method setPidBytes (line 13297) | public Builder setPidBytes(
                    method getLid (line 13314) | public java.lang.String getLid() {
                    method getLidBytes (line 13330) | public com.google.protobuf.ByteString
                    method setLid (line 13348) | public Builder setLid(
                    method clearLid (line 13362) | public Builder clearLid() {
                    method setLidBytes (line 13373) | public Builder setLidBytes(
                    method getLinkUrl (line 13390) | public java.lang.String getLinkUrl() {
                    method getLinkUrlBytes (line 13406) | public com.google.protobuf.ByteString
                    method setLinkUrl (line 13424) | public Builder setLinkUrl(
                    method clearLinkUrl (line 13438) | public Builder clearLinkUrl() {
                    method setLinkUrlBytes (line 13449) | public Builder setLinkUrlBytes(
                    method getDuration (line 13466) | @java.lang.Override
                    method setDuration (line 13475) | public Builder setDuration(int value) {
                    method clearDuration (line 13485) | public Builder clearDuration() {
                    method getExString (line 13497) | public java.lang.String getExString() {
                    method getExStringBytes (line 13513) | public com.google.protobuf.ByteString
                    method setExString (line 13531) | public Builder setExString(
                    method clearExString (line 13545) | public Builder clearExString() {
                    method setExStringBytes (line 13556) | public Builder setExStringBytes(
                    method hasImgtagVer (line 13575) | public boolean hasImgtagVer() {
                    method getImgtagVer (line 13582) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setImgtagVer (line 13592) | public Builder setImgtagVer(com.lizongying.mytv.proto....
                    method setImgtagVer (line 13608) | public Builder setImgtagVer(
                    method mergeImgtagVer (line 13622) | public Builder mergeImgtagVer(com.lizongying.mytv.prot...
                    method clearImgtagVer (line 13640) | public Builder clearImgtagVer() {
                    method getImgtagVerBuilder (line 13654) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getImgtagVerOrBuilder (line 13662) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getImgtagVerFieldBuilder (line 13673) | private com.google.protobuf.SingleFieldBuilderV3<
                    method getVidNum (line 13692) | @java.lang.Override
                    method setVidNum (line 13701) | public Builder setVidNum(int value) {
                    method clearVidNum (line 13711) | public Builder clearVidNum() {
                    method getUpdateNum (line 13723) | @java.lang.Override
                    method setUpdateNum (line 13732) | public Builder setUpdateNum(int value) {
                    method clearUpdateNum (line 13742) | public Builder clearUpdateNum() {
                    method getExString2 (line 13754) | public java.lang.String getExString2() {
                    method getExString2Bytes (line 13770) | public com.google.protobuf.ByteString
                    method setExString2 (line 13788) | public Builder setExString2(
                    method clearExString2 (line 13802) | public Builder clearExString2() {
                    method setExString2Bytes (line 13813) | public Builder setExString2Bytes(
                    method setUnknownFields (line 13824) | @java.lang.Override
                    method mergeUnknownFields (line 13830) | @java.lang.Override
                  method getDefaultInstance (line 13846) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parsePartialFrom (line 13852) | @java.lang.Override
                  method parser (line 13861) | public static com.google.protobuf.Parser<ModuleData> par...
                  method getParserForType (line 13865) | @java.lang.Override
                  method getDefaultInstanceForType (line 13870) | @java.lang.Override
                method isInitialized (line 13878) | @java.lang.Override
                method writeTo (line 13888) | @java.lang.Override
                method getSerializedSize (line 13894) | @java.lang.Override
                method equals (line 13905) | @java.lang.Override
                method hashCode (line 13919) | @java.lang.Override
                method parseFrom (line 13931) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 13936) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 13942) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 13947) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 13953) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 13957) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 13963) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 13968) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseDelimitedFrom (line 13975) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseDelimitedFrom (line 13980) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 13987) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 13993) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method newBuilderForType (line 14001) | @java.lang.Override
                method newBuilder (line 14003) | public static Builder newBuilder() {
                method newBuilder (line 14006) | public static Builder newBuilder(com.lizongying.mytv.proto...
                method toBuilder (line 14009) | @java.lang.Override
                method newBuilderForType (line 14015) | @java.lang.Override
                class Builder (line 14024) | public static final class Builder extends
                  method getDescriptor (line 14028) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 14033) | @java.lang.Override
                  method Builder (line 14042) | private Builder() {
                  method Builder (line 14046) | private Builder(
                  method maybeForceBuilderInitialization (line 14051) | private void maybeForceBuilderInitialization() {
                  method clear (line 14056) | @java.lang.Override
                  method getDescriptorForType (line 14062) | @java.lang.Override
                  method getDefaultInstanceForType (line 14068) | @java.lang.Override
                  method build (line 14073) | @java.lang.Override
                  method buildPartial (line 14082) | @java.lang.Override
                  method clone (line 14089) | @java.lang.Override
                  method setField (line 14093) | @java.lang.Override
                  method clearField (line 14099) | @java.lang.Override
                  method clearOneof (line 14104) | @java.lang.Override
                  method setRepeatedField (line 14109) | @java.lang.Override
                  method addRepeatedField (line 14115) | @java.lang.Override
                  method mergeFrom (line 14121) | @java.lang.Override
                  method mergeFrom (line 14131) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp.c...
                  method isInitialized (line 14138) | @java.lang.Override
                  method mergeFrom (line 14143) | @java.lang.Override
                  method setUnknownFields (line 14161) | @java.lang.Override
                  method mergeUnknownFields (line 14167) | @java.lang.Override
                method getDefaultInstance (line 14183) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parsePartialFrom (line 14189) | @java.lang.Override
                method parser (line 14198) | public static com.google.protobuf.Parser<pageModel> parser...
                method getParserForType (line 14202) | @java.lang.Override
                method getDefaultInstanceForType (line 14207) | @java.lang.Override
              type recommendApiModelOrBuilder (line 14214) | public interface recommendApiModelOrBuilder extends
              class recommendApiModel (line 14221) | public static final class recommendApiModel extends
                method recommendApiModel (line 14227) | private recommendApiModel(com.google.protobuf.GeneratedMes...
                method recommendApiModel (line 14230) | private recommendApiModel() {
                method newInstance (line 14233) | @java.lang.Override
                method getUnknownFields (line 14240) | @java.lang.Override
                method recommendApiModel (line 14245) | private recommendApiModel(
                method getDescriptor (line 14284) | public static final com.google.protobuf.Descriptors.Descri...
                method internalGetFieldAccessorTable (line 14289) | @java.lang.Override
                type RecommendApiDataOrBuilder (line 14297) | public interface RecommendApiDataOrBuilder extends
                  method getDataType (line 14305) | java.lang.String getDataType();
                  method getDataTypeBytes (line 14310) | com.google.protobuf.ByteString
                  method getSceneId (line 14317) | java.lang.String getSceneId();
                  method getSceneIdBytes (line 14322) | com.google.protobuf.ByteString
                  method getCategoryIds (line 14329) | java.lang.String getCategoryIds();
                  method getCategoryIdsBytes (line 14334) | com.google.protobuf.ByteString
                  method getRecommendNum (line 14341) | int getRecommendNum();
                  method getPath (line 14347) | java.lang.String getPath();
                  method getPathBytes (line 14352) | com.google.protobuf.ByteString
                  method getIsFilter (line 14359) | java.lang.String getIsFilter();
                  method getIsFilterBytes (line 14364) | com.google.protobuf.ByteString
                  method getManualDataListList (line 14370) | java.util.List<com.lizongying.mytv.proto.Ysp.cn.yangship...
                  method getManualDataList (line 14375) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getManualDataListCount (line 14379) | int getManualDataListCount();
                  method getManualDataListOrBuilderList (line 14383) | java.util.List<? extends com.lizongying.mytv.proto.Ysp.c...
                  method getManualDataListOrBuilder (line 14388) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getAction (line 14395) | java.lang.String getAction();
                  method getActionBytes (line 14400) | com.google.protobuf.ByteString
                class RecommendApiData (line 14406) | public static final class RecommendApiData extends
                  method RecommendApiData (line 14412) | private RecommendApiData(com.google.protobuf.GeneratedMe...
                  method RecommendApiData (line 14415) | private RecommendApiData() {
                  method newInstance (line 14425) | @java.lang.Override
                  method getUnknownFields (line 14432) | @java.lang.Override
                  method RecommendApiData (line 14437) | private RecommendApiData(
                  method getDescriptor (line 14530) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 14535) | @java.lang.Override
                  method getDataType (line 14549) | @java.lang.Override
                  method getDataTypeBytes (line 14566) | @java.lang.Override
                  method getSceneId (line 14587) | @java.lang.Override
                  method getSceneIdBytes (line 14604) | @java.lang.Override
                  method getCategoryIds (line 14625) | @java.lang.Override
                  method getCategoryIdsBytes (line 14642) | @java.lang.Override
                  method getRecommendNum (line 14663) | @java.lang.Override
                  method getPath (line 14674) | @java.lang.Override
                  method getPathBytes (line 14691) | @java.lang.Override
                  method getIsFilter (line 14712) | @java.lang.Override
                  method getIsFilterBytes (line 14729) | @java.lang.Override
                  method getManualDataListList (line 14749) | @java.lang.Override
                  method getManualDataListOrBuilderList (line 14756) | @java.lang.Override
                  method getManualDataListCount (line 14764) | @java.lang.Override
                  method getManualDataList (line 14771) | @java.lang.Override
                  method getManualDataListOrBuilder (line 14778) | @java.lang.Override
                  method getAction (line 14790) | @java.lang.Override
                  method getActionBytes (line 14807) | @java.lang.Override
                  method isInitialized (line 14823) | @java.lang.Override
                  method writeTo (line 14833) | @java.lang.Override
                  method getSerializedSize (line 14863) | @java.lang.Override
                  method equals (line 14900) | @java.lang.Override
                  method hashCode (line 14930) | @java.lang.Override
                  method parseFrom (line 14960) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 14965) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 14971) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 14976) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 14982) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 14986) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 14992) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 14997) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 15004) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 15009) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 15016) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 15022) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method newBuilderForType (line 15030) | @java.lang.Override
                  method newBuilder (line 15032) | public static Builder newBuilder() {
                  method newBuilder (line 15035) | public static Builder newBuilder(com.lizongying.mytv.pro...
                  method toBuilder (line 15038) | @java.lang.Override
                  method newBuilderForType (line 15044) | @java.lang.Override
                  class Builder (line 15053) | public static final class Builder extends
                    method getDescriptor (line 15057) | public static final com.google.protobuf.Descriptors.De...
                    method internalGetFieldAccessorTable (line 15062) | @java.lang.Override
                    method Builder (line 15071) | private Builder() {
                    method Builder (line 15075) | private Builder(
                    method maybeForceBuilderInitialization (line 15080) | private void maybeForceBuilderInitialization() {
                    method clear (line 15086) | @java.lang.Override
                    method getDescriptorForType (line 15112) | @java.lang.Override
                    method getDefaultInstanceForType (line 15118) | @java.lang.Override
                    method build (line 15123) | @java.lang.Override
                    method buildPartial (line 15132) | @java.lang.Override
                    method clone (line 15156) | @java.lang.Override
                    method setField (line 15160) | @java.lang.Override
                    method clearField (line 15166) | @java.lang.Override
                    method clearOneof (line 15171) | @java.lang.Override
                    method setRepeatedField (line 15176) | @java.lang.Override
                    method addRepeatedField (line 15182) | @java.lang.Override
                    method mergeFrom (line 15188) | @java.lang.Override
                    method mergeFrom (line 15198) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp...
                    method isInitialized (line 15258) | @java.lang.Override
                    method mergeFrom (line 15263) | @java.lang.Override
                    method getDataType (line 15288) | public java.lang.String getDataType() {
                    method getDataTypeBytes (line 15304) | public com.google.protobuf.ByteString
                    method setDataType (line 15322) | public Builder setDataType(
                    method clearDataType (line 15336) | public Builder clearDataType() {
                    method setDataTypeBytes (line 15347) | public Builder setDataTypeBytes(
                    method getSceneId (line 15364) | public java.lang.String getSceneId() {
                    method getSceneIdBytes (line 15380) | public com.google.protobuf.ByteString
                    method setSceneId (line 15398) | public Builder setSceneId(
                    method clearSceneId (line 15412) | public Builder clearSceneId() {
                    method setSceneIdBytes (line 15423) | public Builder setSceneIdBytes(
                    method getCategoryIds (line 15440) | public java.lang.String getCategoryIds() {
                    method getCategoryIdsBytes (line 15456) | public com.google.protobuf.ByteString
                    method setCategoryIds (line 15474) | public Builder setCategoryIds(
                    method clearCategoryIds (line 15488) | public Builder clearCategoryIds() {
                    method setCategoryIdsBytes (line 15499) | public Builder setCategoryIdsBytes(
                    method getRecommendNum (line 15516) | @java.lang.Override
                    method setRecommendNum (line 15525) | public Builder setRecommendNum(int value) {
                    method clearRecommendNum (line 15535) | public Builder clearRecommendNum() {
                    method getPath (line 15547) | public java.lang.String getPath() {
                    method getPathBytes (line 15563) | public com.google.protobuf.ByteString
                    method setPath (line 15581) | public Builder setPath(
                    method clearPath (line 15595) | public Builder clearPath() {
                    method setPathBytes (line 15606) | public Builder setPathBytes(
                    method getIsFilter (line 15623) | public java.lang.String getIsFilter() {
                    method getIsFilterBytes (line 15639) | public com.google.protobuf.ByteString
                    method setIsFilter (line 15657) | public Builder setIsFilter(
                    method clearIsFilter (line 15671) | public Builder clearIsFilter() {
                    method setIsFilterBytes (line 15682) | public Builder setIsFilterBytes(
                    method ensureManualDataListIsMutable (line 15696) | private void ensureManualDataListIsMutable() {
                    method getManualDataListList (line 15709) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getManualDataListCount (line 15719) | public int getManualDataListCount() {
                    method getManualDataList (line 15729) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setManualDataList (line 15739) | public Builder setManualDataList(
                    method setManualDataList (line 15756) | public Builder setManualDataList(
                    method addManualDataList (line 15770) | public Builder addManualDataList(com.lizongying.mytv.p...
                    method addManualDataList (line 15786) | public Builder addManualDataList(
                    method addManualDataList (line 15803) | public Builder addManualDataList(
                    method addManualDataList (line 15817) | public Builder addManualDataList(
                    method addAllManualDataList (line 15831) | public Builder addAllManualDataList(
                    method clearManualDataList (line 15846) | public Builder clearManualDataList() {
                    method removeManualDataList (line 15859) | public Builder removeManualDataList(int index) {
                    method getManualDataListBuilder (line 15872) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getManualDataListOrBuilder (line 15879) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getManualDataListOrBuilderList (line 15889) | public java.util.List<? extends com.lizongying.mytv.pr...
                    method addManualDataListBuilder (line 15900) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method addManualDataListBuilder (line 15907) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getManualDataListBuilderList (line 15915) | public java.util.List<com.lizongying.mytv.proto.Ysp.cn...
                    method getManualDataListFieldBuilder (line 15919) | private com.google.protobuf.RepeatedFieldBuilderV3<
                    method getAction (line 15939) | public java.lang.String getAction() {
                    method getActionBytes (line 15955) | public com.google.protobuf.ByteString
                    method setAction (line 15973) | public Builder setAction(
                    method clearAction (line 15987) | public Builder clearAction() {
                    method setActionBytes (line 15998) | public Builder setActionBytes(
                    method setUnknownFields (line 16009) | @java.lang.Override
                    method mergeUnknownFields (line 16015) | @java.lang.Override
                  method getDefaultInstance (line 16031) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parsePartialFrom (line 16037) | @java.lang.Override
                  method parser (line 16046) | public static com.google.protobuf.Parser<RecommendApiDat...
                  method getParserForType (line 16050) | @java.lang.Override
                  method getDefaultInstanceForType (line 16055) | @java.lang.Override
                type RecommendApiManualDataOrBuilder (line 16062) | public interface RecommendApiManualDataOrBuilder extends
                  method hasAction (line 16070) | boolean hasAction();
                  method getAction (line 16075) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getActionOrBuilder (line 16079) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getDataType (line 16085) | java.lang.String getDataType();
                  method getDataTypeBytes (line 16090) | com.google.protobuf.ByteString
                  method getTitle (line 16097) | java.lang.String getTitle();
                  method getTitleBytes (line 16102) | com.google.protobuf.ByteString
                  method getSubTitle (line 16109) | java.lang.String getSubTitle();
                  method getSubTitleBytes (line 16114) | com.google.protobuf.ByteString
                  method getCoverUrl (line 16121) | java.lang.String getCoverUrl();
                  method getCoverUrlBytes (line 16126) | com.google.protobuf.ByteString
                  method getCpId (line 16133) | java.lang.String getCpId();
                  method getCpIdBytes (line 16138) | com.google.protobuf.ByteString
                  method getCpName (line 16145) | java.lang.String getCpName();
                  method getCpNameBytes (line 16150) | com.google.protobuf.ByteString
                  method getCpAvatar (line 16157) | java.lang.String getCpAvatar();
                  method getCpAvatarBytes (line 16162) | com.google.protobuf.ByteString
                  method getVid (line 16169) | java.lang.String getVid();
                  method getVidBytes (line 16174) | com.google.protobuf.ByteString
                  method getCid (line 16181) | java.lang.String getCid();
                  method getCidBytes (line 16186) | com.google.protobuf.ByteString
                  method getIsVip (line 16193) | boolean getIsVip();
                  method getDuration (line 16199) | int getDuration();
                  method getPosition (line 16205) | int getPosition();
                  method hasImgtagVer (line 16211) | boolean hasImgtagVer();
                  method getImgtagVer (line 16216) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getImgtagVerOrBuilder (line 16220) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getVidNum (line 16226) | int getVidNum();
                  method getUpdateNum (line 16232) | int getUpdateNum();
                class RecommendApiManualData (line 16237) | public static final class RecommendApiManualData extends
                  method RecommendApiManualData (line 16243) | private RecommendApiManualData(com.google.protobuf.Gener...
                  method RecommendApiManualData (line 16246) | private RecommendApiManualData() {
                  method newInstance (line 16258) | @java.lang.Override
                  method getUnknownFields (line 16265) | @java.lang.Override
                  method RecommendApiManualData (line 16270) | private RecommendApiManualData(
                  method getDescriptor (line 16414) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 16419) | @java.lang.Override
                  method hasAction (line 16433) | @java.lang.Override
                  method getAction (line 16441) | @java.lang.Override
                  method getActionOrBuilder (line 16448) | @java.lang.Override
                  method getDataType (line 16459) | @java.lang.Override
                  method getDataTypeBytes (line 16476) | @java.lang.Override
                  method getTitle (line 16497) | @java.lang.Override
                  method getTitleBytes (line 16514) | @java.lang.Override
                  method getSubTitle (line 16535) | @java.lang.Override
                  method getSubTitleBytes (line 16552) | @java.lang.Override
                  method getCoverUrl (line 16573) | @java.lang.Override
                  method getCoverUrlBytes (line 16590) | @java.lang.Override
                  method getCpId (line 16611) | @java.lang.Override
                  method getCpIdBytes (line 16628) | @java.lang.Override
                  method getCpName (line 16649) | @java.lang.Override
                  method getCpNameBytes (line 16666) | @java.lang.Override
                  method getCpAvatar (line 16687) | @java.lang.Override
                  method getCpAvatarBytes (line 16704) | @java.lang.Override
                  method getVid (line 16725) | @java.lang.Override
                  method getVidBytes (line 16742) | @java.lang.Override
                  method getCid (line 16763) | @java.lang.Override
                  method getCidBytes (line 16780) | @java.lang.Override
                  method getIsVip (line 16801) | @java.lang.Override
                  method getDuration (line 16812) | @java.lang.Override
                  method getPosition (line 16823) | @java.lang.Override
                  method hasImgtagVer (line 16834) | @java.lang.Override
                  method getImgtagVer (line 16842) | @java.lang.Override
                  method getImgtagVerOrBuilder (line 16849) | @java.lang.Override
                  method getVidNum (line 16860) | @java.lang.Override
                  method getUpdateNum (line 16871) | @java.lang.Override
                  method isInitialized (line 16877) | @java.lang.Override
                  method writeTo (line 16887) | @java.lang.Override
                  method getSerializedSize (line 16941) | @java.lang.Override
                  method equals (line 17007) | @java.lang.Override
                  method hashCode (line 17059) | @java.lang.Override
                  method parseFrom (line 17108) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 17113) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 17119) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 17124) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 17130) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 17134) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 17140) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 17145) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 17152) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 17157) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 17164) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 17170) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method newBuilderForType (line 17178) | @java.lang.Override
                  method newBuilder (line 17180) | public static Builder newBuilder() {
                  method newBuilder (line 17183) | public static Builder newBuilder(com.lizongying.mytv.pro...
                  method toBuilder (line 17186) | @java.lang.Override
                  method newBuilderForType (line 17192) | @java.lang.Override
                  class Builder (line 17201) | public static final class Builder extends
                    method getDescriptor (line 17205) | public static final com.google.protobuf.Descriptors.De...
                    method internalGetFieldAccessorTable (line 17210) | @java.lang.Override
                    method Builder (line 17219) | private Builder() {
                    method Builder (line 17223) | private Builder(
                    method maybeForceBuilderInitialization (line 17228) | private void maybeForceBuilderInitialization() {
                    method clear (line 17233) | @java.lang.Override
                    method getDescriptorForType (line 17279) | @java.lang.Override
                    method getDefaultInstanceForType (line 17285) | @java.lang.Override
                    method build (line 17290) | @java.lang.Override
                    method buildPartial (line 17299) | @java.lang.Override
                    method clone (line 17330) | @java.lang.Override
                    method setField (line 17334) | @java.lang.Override
                    method clearField (line 17340) | @java.lang.Override
                    method clearOneof (line 17345) | @java.lang.Override
                    method setRepeatedField (line 17350) | @java.lang.Override
                    method addRepeatedField (line 17356) | @java.lang.Override
                    method mergeFrom (line 17362) | @java.lang.Override
                    method mergeFrom (line 17372) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp...
                    method isInitialized (line 17436) | @java.lang.Override
                    method mergeFrom (line 17441) | @java.lang.Override
                    method hasAction (line 17467) | public boolean hasAction() {
                    method getAction (line 17474) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setAction (line 17484) | public Builder setAction(com.lizongying.mytv.proto.Ysp...
                    method setAction (line 17500) | public Builder setAction(
                    method mergeAction (line 17514) | public Builder mergeAction(com.lizongying.mytv.proto.Y...
                    method clearAction (line 17532) | public Builder clearAction() {
                    method getActionBuilder (line 17546) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getActionOrBuilder (line 17554) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getActionFieldBuilder (line 17565) | private com.google.protobuf.SingleFieldBuilderV3<
                    method getDataType (line 17584) | public java.lang.String getDataType() {
                    method getDataTypeBytes (line 17600) | public com.google.protobuf.ByteString
                    method setDataType (line 17618) | public Builder setDataType(
                    method clearDataType (line 17632) | public Builder clearDataType() {
                    method setDataTypeBytes (line 17643) | public Builder setDataTypeBytes(
                    method getTitle (line 17660) | public java.lang.String getTitle() {
                    method getTitleBytes (line 17676) | public com.google.protobuf.ByteString
                    method setTitle (line 17694) | public Builder setTitle(
                    method clearTitle (line 17708) | public Builder clearTitle() {
                    method setTitleBytes (line 17719) | public Builder setTitleBytes(
                    method getSubTitle (line 17736) | public java.lang.String getSubTitle() {
                    method getSubTitleBytes (line 17752) | public com.google.protobuf.ByteString
                    method setSubTitle (line 17770) | public Builder setSubTitle(
                    method clearSubTitle (line 17784) | public Builder clearSubTitle() {
                    method setSubTitleBytes (line 17795) | public Builder setSubTitleBytes(
                    method getCoverUrl (line 17812) | public java.lang.String getCoverUrl() {
                    method getCoverUrlBytes (line 17828) | public com.google.protobuf.ByteString
                    method setCoverUrl (line 17846) | public Builder setCoverUrl(
                    method clearCoverUrl (line 17860) | public Builder clearCoverUrl() {
                    method setCoverUrlBytes (line 17871) | public Builder setCoverUrlBytes(
                    method getCpId (line 17888) | public java.lang.String getCpId() {
                    method getCpIdBytes (line 17904) | public com.google.protobuf.ByteString
                    method setCpId (line 17922) | public Builder setCpId(
                    method clearCpId (line 17936) | public Builder clearCpId() {
                    method setCpIdBytes (line 17947) | public Builder setCpIdBytes(
                    method getCpName (line 17964) | public java.lang.String getCpName() {
                    method getCpNameBytes (line 17980) | public com.google.protobuf.ByteString
                    method setCpName (line 17998) | public Builder setCpName(
                    method clearCpName (line 18012) | public Builder clearCpName() {
                    method setCpNameBytes (line 18023) | public Builder setCpNameBytes(
                    method getCpAvatar (line 18040) | public java.lang.String getCpAvatar() {
                    method getCpAvatarBytes (line 18056) | public com.google.protobuf.ByteString
                    method setCpAvatar (line 18074) | public Builder setCpAvatar(
                    method clearCpAvatar (line 18088) | public Builder clearCpAvatar() {
                    method setCpAvatarBytes (line 18099) | public Builder setCpAvatarBytes(
                    method getVid (line 18116) | public java.lang.String getVid() {
                    method getVidBytes (line 18132) | public com.google.protobuf.ByteString
                    method setVid (line 18150) | public Builder setVid(
                    method clearVid (line 18164) | public Builder clearVid() {
                    method setVidBytes (line 18175) | public Builder setVidBytes(
                    method getCid (line 18192) | public java.lang.String getCid() {
                    method getCidBytes (line 18208) | public com.google.protobuf.ByteString
                    method setCid (line 18226) | public Builder setCid(
                    method clearCid (line 18240) | public Builder clearCid() {
                    method setCidBytes (line 18251) | public Builder setCidBytes(
                    method getIsVip (line 18268) | @java.lang.Override
                    method setIsVip (line 18277) | public Builder setIsVip(boolean value) {
                    method clearIsVip (line 18287) | public Builder clearIsVip() {
                    method getDuration (line 18299) | @java.lang.Override
                    method setDuration (line 18308) | public Builder setDuration(int value) {
                    method clearDuration (line 18318) | public Builder clearDuration() {
                    method getPosition (line 18330) | @java.lang.Override
                    method setPosition (line 18339) | public Builder setPosition(int value) {
                    method clearPosition (line 18349) | public Builder clearPosition() {
                    method hasImgtagVer (line 18363) | public boolean hasImgtagVer() {
                    method getImgtagVer (line 18370) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method setImgtagVer (line 18380) | public Builder setImgtagVer(com.lizongying.mytv.proto....
                    method setImgtagVer (line 18396) | public Builder setImgtagVer(
                    method mergeImgtagVer (line 18410) | public Builder mergeImgtagVer(com.lizongying.mytv.prot...
                    method clearImgtagVer (line 18428) | public Builder clearImgtagVer() {
                    method getImgtagVerBuilder (line 18442) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getImgtagVerOrBuilder (line 18450) | public com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms...
                    method getImgtagVerFieldBuilder (line 18461) | private com.google.protobuf.SingleFieldBuilderV3<
                    method getVidNum (line 18480) | @java.lang.Override
                    method setVidNum (line 18489) | public Builder setVidNum(int value) {
                    method clearVidNum (line 18499) | public Builder clearVidNum() {
                    method getUpdateNum (line 18511) | @java.lang.Override
                    method setUpdateNum (line 18520) | public Builder setUpdateNum(int value) {
                    method clearUpdateNum (line 18530) | public Builder clearUpdateNum() {
                    method setUnknownFields (line 18536) | @java.lang.Override
                    method mergeUnknownFields (line 18542) | @java.lang.Override
                  method getDefaultInstance (line 18558) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parsePartialFrom (line 18564) | @java.lang.Override
                  method parser (line 18573) | public static com.google.protobuf.Parser<RecommendApiMan...
                  method getParserForType (line 18577) | @java.lang.Override
                  method getDefaultInstanceForType (line 18582) | @java.lang.Override
                method isInitialized (line 18590) | @java.lang.Override
                method writeTo (line 18600) | @java.lang.Override
                method getSerializedSize (line 18606) | @java.lang.Override
                method equals (line 18617) | @java.lang.Override
                method hashCode (line 18631) | @java.lang.Override
                method parseFrom (line 18643) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 18648) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 18654) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 18659) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 18665) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 18669) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 18675) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 18680) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseDelimitedFrom (line 18687) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseDelimitedFrom (line 18692) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 18699) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parseFrom (line 18705) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method newBuilderForType (line 18713) | @java.lang.Override
                method newBuilder (line 18715) | public static Builder newBuilder() {
                method newBuilder (line 18718) | public static Builder newBuilder(com.lizongying.mytv.proto...
                method toBuilder (line 18721) | @java.lang.Override
                method newBuilderForType (line 18727) | @java.lang.Override
                class Builder (line 18736) | public static final class Builder extends
                  method getDescriptor (line 18740) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 18745) | @java.lang.Override
                  method Builder (line 18754) | private Builder() {
                  method Builder (line 18758) | private Builder(
                  method maybeForceBuilderInitialization (line 18763) | private void maybeForceBuilderInitialization() {
                  method clear (line 18768) | @java.lang.Override
                  method getDescriptorForType (line 18774) | @java.lang.Override
                  method getDefaultInstanceForType (line 18780) | @java.lang.Override
                  method build (line 18785) | @java.lang.Override
                  method buildPartial (line 18794) | @java.lang.Override
                  method clone (line 18801) | @java.lang.Override
                  method setField (line 18805) | @java.lang.Override
                  method clearField (line 18811) | @java.lang.Override
                  method clearOneof (line 18816) | @java.lang.Override
                  method setRepeatedField (line 18821) | @java.lang.Override
                  method addRepeatedField (line 18827) | @java.lang.Override
                  method mergeFrom (line 18833) | @java.lang.Override
                  method mergeFrom (line 18843) | public Builder mergeFrom(com.lizongying.mytv.proto.Ysp.c...
                  method isInitialized (line 18850) | @java.lang.Override
                  method mergeFrom (line 18855) | @java.lang.Override
                  method setUnknownFields (line 18873) | @java.lang.Override
                  method mergeUnknownFields (line 18879) | @java.lang.Override
                method getDefaultInstance (line 18895) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipin....
                method parsePartialFrom (line 18901) | @java.lang.Override
                method parser (line 18910) | public static com.google.protobuf.Parser<recommendApiModel...
                method getParserForType (line 18914) | @java.lang.Override
                method getDefaultInstanceForType (line 18919) | @java.lang.Override
              type tvChannelListModelOrBuilder (line 18926) | public interface tvChannelListModelOrBuilder extends
              class tvChannelListModel (line 18933) | public static final class tvChannelListModel extends
                method tvChannelListModel (line 18939) | private tvChannelListModel(com.google.protobuf.GeneratedMe...
                method tvChannelListModel (line 18942) | private tvChannelListModel() {
                method newInstance (line 18945) | @java.lang.Override
                method getUnknownFields (line 18952) | @java.lang.Override
                method tvChannelListModel (line 18957) | private tvChannelListModel(
                method getDescriptor (line 18996) | public static final com.google.protobuf.Descriptors.Descri...
                method internalGetFieldAccessorTable (line 19001) | @java.lang.Override
                type TvChannelListDataOrBuilder (line 19009) | public interface TvChannelListDataOrBuilder extends
                  method getDataType (line 19017) | java.lang.String getDataType();
                  method getDataTypeBytes (line 19022) | com.google.protobuf.ByteString
                  method getChannelName (line 19029) | java.lang.String getChannelName();
                  method getChannelNameBytes (line 19034) | com.google.protobuf.ByteString
                  method getChannelCode (line 19041) | java.lang.String getChannelCode();
                  method getChannelCodeBytes (line 19046) | com.google.protobuf.ByteString
                  method getPid (line 19053) | java.lang.String getPid();
                  method getPidBytes (line 19058) | com.google.protobuf.ByteString
                  method getTvLogo (line 19065) | java.lang.String getTvLogo();
                  method getTvLogoBytes (line 19070) | com.google.protobuf.ByteString
                  method getStreamId (line 19077) | java.lang.String getStreamId();
                  method getStreamIdBytes (line 19082) | com.google.protobuf.ByteString
                  method getIsVip (line 19089) | boolean getIsVip();
                  method getIs4K (line 19095) | boolean getIs4K();
                  method getTimeShiftReviewFlag (line 19101) | java.lang.String getTimeShiftReviewFlag();
                  method getTimeShiftReviewFlagBytes (line 19106) | com.google.protobuf.ByteString
                  method getProgramDatesList (line 19113) | java.util.List<java.lang.String>
                  method getProgramDatesCount (line 19119) | int getProgramDatesCount();
                  method getProgramDates (line 19125) | java.lang.String getProgramDates(int index);
                  method getProgramDatesBytes (line 19131) | com.google.protobuf.ByteString
                  method getChannelType (line 19138) | java.lang.String getChannelType();
                  method getChannelTypeBytes (line 19143) | com.google.protobuf.ByteString
                  method getSelectTvLogo (line 19150) | java.lang.String getSelectTvLogo();
                  method getSelectTvLogoBytes (line 19155) | com.google.protobuf.ByteString
                  method getCoverUrl (line 19162) | java.lang.String getCoverUrl();
                  method getCoverUrlBytes (line 19167) | com.google.protobuf.ByteString
                  method getIsLimitedFree (line 19174) | boolean getIsLimitedFree();
                  method getViewRightsList (line 19180) | java.util.List<java.lang.Integer> getViewRightsList();
                  method getViewRightsCount (line 19185) | int getViewRightsCount();
                  method getViewRights (line 19191) | int getViewRights(int index);
                  method hasImgtagVer (line 19197) | boolean hasImgtagVer();
                  method getImgtagVer (line 19202) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                  method getImgtagVerOrBuilder (line 19206) | com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.p...
                class TvChannelListData (line 19211) | public static final class TvChannelListData extends
                  method TvChannelListData (line 19217) | private TvChannelListData(com.google.protobuf.GeneratedM...
                  method TvChannelListData (line 19220) | private TvChannelListData() {
                  method newInstance (line 19235) | @java.lang.Override
                  method getUnknownFields (line 19242) | @java.lang.Override
                  method TvChannelListData (line 19247) | private TvChannelListData(
                  method getDescriptor (line 19411) | public static final com.google.protobuf.Descriptors.Desc...
                  method internalGetFieldAccessorTable (line 19416) | @java.lang.Override
                  method getDataType (line 19430) | @java.lang.Override
                  method getDataTypeBytes (line 19447) | @java.lang.Override
                  method getChannelName (line 19468) | @java.lang.Override
                  method getChannelNameBytes (line 19485) | @java.lang.Override
                  method getChannelCode (line 19506) | @java.lang.Override
                  method getChannelCodeBytes (line 19523) | @java.lang.Override
                  method getPid (line 19544) | @java.lang.Override
                  method getPidBytes (line 19561) | @java.lang.Override
                  method getTvLogo (line 19582) | @java.lang.Override
                  method getTvLogoBytes (line 19599) | @java.lang.Override
                  method getStreamId (line 19620) | @java.lang.Override
                  method getStreamIdBytes (line 19637) | @java.lang.Override
                  method getIsVip (line 19658) | @java.lang.Override
                  method getIs4K (line 19669) | @java.lang.Override
                  method getTimeShiftReviewFlag (line 19680) | @java.lang.Override
                  method getTimeShiftReviewFlagBytes (line 19697) | @java.lang.Override
                  method getProgramDatesList (line 19718) | public com.google.protobuf.ProtocolStringList
                  method getProgramDatesCount (line 19726) | public int getProgramDatesCount() {
                  method getProgramDates (line 19734) | public java.lang.String getProgramDates(int index) {
                  method getProgramDatesBytes (line 19742) | public com.google.protobuf.ByteString
                  method getChannelType (line 19753) | @java.lang.Override
                  method getChannelTypeBytes (line 19770) | @java.lang.Override
                  method getSelectTvLogo (line 19791) | @java.lang.Override
                  method getSelectTvLogoBytes (line 19808) | @java.lang.Override
                  method getCoverUrl (line 19829) | @java.lang.Override
                  method getCoverUrlBytes (line 19846) | @java.lang.Override
                  method getIsLimitedFree (line 19867) | @java.lang.Override
                  method getViewRightsList (line 19878) | @java.lang.Override
                  method getViewRightsCount (line 19887) | public int getViewRightsCount() {
                  method getViewRights (line 19895) | public int getViewRights(int index) {
                  method hasImgtagVer (line 19906) | @java.lang.Override
                  method getImgtagVer (line 19914) | @java.lang.Override
                  method getImgtagVerOrBuilder (line 19921) | @java.lang.Override
                  method isInitialized (line 19927) | @java.lang.Override
                  method writeTo (line 19937) | @java.lang.Override
                  method getSerializedSize (line 19996) | @java.lang.Override
                  method equals (line 20075) | @java.lang.Override
                  method hashCode (line 20124) | @java.lang.Override
                  method parseFrom (line 20177) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 20182) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 20188) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 20193) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 20199) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 20203) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 20209) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 20214) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 20221) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseDelimitedFrom (line 20226) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 20233) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method parseFrom (line 20239) | public static com.lizongying.mytv.proto.Ysp.cn.yangshipi...
                  method newBuilderForType (line 20247) | @java.lang.Override
                  method newBuilder (line 20249) | public static Builder newBuilder() {
                  method newBuilder (line 20252) | public static Builder newBuilder(com.lizongying.mytv.pro...
                  method toBuilder (line 20255) | @java.lang.Override
                  method newBuilderForType (line 20261) | @java.lang.Override
                  class Builder (line 20270) | public static final class Builder extends
                    method getDescriptor (line 20274) | public static final com.google.protobuf.Descriptors.De...
                    method internalGetFieldAccessorTable (line 20279) | @java.lang.Override
                    method Builder (line 20288) | private Builder() {
                    method Builder (line 20292) | private Builder(
                    method maybeForceBuilderInitialization (line 20297) | private void maybeForceBuilderInitialization() {
                    method clear (line 20302) | @java.lang.Override
                    method getDescriptorForType (line 20344) | @java.lang.Override
                    method getDefaultInstanceForType (line 20350) | @java.lang.Override
                    method build (line 20355) | @java.lang.Override
                    method buildPartial (line 20364) | @java.lang.Override
                    method clone (line 20400) | @java.lang.Override
                    method setField (line 20404) | @java.lang.Override
                    method clearField (line 20410) | @java.lang.Override
                    method clearOneof (line 20415) | @java.lang.Override
Condensed preview — 263 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,057K chars).
[
  {
    "path": ".github/ISSUE_TEMPLATE/bug.yml",
    "chars": 1716,
    "preview": "name: Bug 反馈\ndescription: 反馈一个 Bug\nlabels: [ \"bug\" ]\ntitle: \"[BUG] \"\nbody:\n  - type: checkboxes\n    id: checklist\n    at"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/fr.yml",
    "chars": 792,
    "preview": "name: 功能(新频道)请求\ndescription: 提出一个建议\nlabels: [ \"enhancement\" ]\ntitle: \"[FR] \"\nbody:\n  - type: checkboxes\n    id: checklis"
  },
  {
    "path": ".github/workflows/build.yml",
    "chars": 2464,
    "preview": "name: build\n\non:\n  push:\n    tags:\n      - 'v*'\n\npermissions:\n  contents: write\n\njobs:\n  build:\n    runs-on: ubuntu-late"
  },
  {
    "path": ".gitignore",
    "chars": 238,
    "preview": "*.iml\n.gradle\n.idea\n/local.properties\n/.idea/caches\n/.idea/libraries\n/.idea/modules.xml\n/.idea/workspace.xml\n/.idea/navE"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 220,
    "preview": "# Sets the minimum version of CMake required to build your native library.\n# This ensures that a certain set of CMake fe"
  },
  {
    "path": "HISTORY.md",
    "chars": 3067,
    "preview": "## 更新日誌\n\n### v2.1.0\n\n* 恢復播放\n\n### 以下已不可用\n\n### v2.0.9\n\n* 修復部分設備閃退的問題\n* 修復設置頁可能顯示不全的問題\n\n### v2.0.5\n\n* 設置頁增加恢復默認按鈕,目前只用於同步系統"
  },
  {
    "path": "Makefile",
    "chars": 613,
    "preview": ".PHONY: all\n\nall: info gen-version\n\nbranch := $(shell git rev-parse --abbrev-ref HEAD)\ncommit := $(shell git rev-parse -"
  },
  {
    "path": "README.md",
    "chars": 796,
    "preview": "# 我的电视\n\n电视直播软件,安装即可使用\n\n## 使用\n\n1. 下载\n    * [github](https://github.com/lizongying/my-tv/releases/)\n    * [gitee](https://"
  },
  {
    "path": "app/.gitignore",
    "chars": 83,
    "preview": "/build\n/release\n/cmake_install.cmake\n/CMakeFiles/\n/Makefile\n/src/main/cpp/native.c\n"
  },
  {
    "path": "app/CMakeLists.txt",
    "chars": 3663,
    "preview": "# Sets the minimum version of CMake required to build your native library.\n# This ensures that a certain set of CMake fe"
  },
  {
    "path": "app/build.gradle",
    "chars": 3942,
    "preview": "plugins {\n    id 'com.android.application'\n    id 'org.jetbrains.kotlin.android'\n}\n\nandroid {\n    namespace 'com.lizongy"
  },
  {
    "path": "app/proguard-rules.pro",
    "chars": 750,
    "preview": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguar"
  },
  {
    "path": "app/src/main/AndroidManifest.xml",
    "chars": 2379,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n    <uses-"
  },
  {
    "path": "app/src/main/cpp/include/openssl/aes.h",
    "chars": 3752,
    "preview": "/*\n * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/asn1.h",
    "chars": 60983,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/asn1.h.in\n *\n * Copyright 1995-2"
  },
  {
    "path": "app/src/main/cpp/include/openssl/asn1_mac.h",
    "chars": 398,
    "preview": "/*\n * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/asn1err.h",
    "chars": 7731,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/asn1t.h",
    "chars": 35951,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/asn1t.h.in\n *\n * Copyright 2000-"
  },
  {
    "path": "app/src/main/cpp/include/openssl/async.h",
    "chars": 3163,
    "preview": "/*\n * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/asyncerr.h",
    "chars": 842,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/bio.h",
    "chars": 39853,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/bio.h.in\n *\n * Copyright 1995-20"
  },
  {
    "path": "app/src/main/cpp/include/openssl/bioerr.h",
    "chars": 3081,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/blowfish.h",
    "chars": 2693,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/bn.h",
    "chars": 23750,
    "preview": "/*\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n * Copyright (c) 2002, Oracle and/or its aff"
  },
  {
    "path": "app/src/main/cpp/include/openssl/bnerr.h",
    "chars": 1949,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/buffer.h",
    "chars": 1658,
    "preview": "/*\n * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/buffererr.h",
    "chars": 594,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/camellia.h",
    "chars": 5069,
    "preview": "/*\n * Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/cast.h",
    "chars": 2066,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/cmac.h",
    "chars": 1608,
    "preview": "/*\n * Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/cmp.h",
    "chars": 41137,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/cmp.h.in\n *\n * Copyright 2007-20"
  },
  {
    "path": "app/src/main/cpp/include/openssl/cmp_util.h",
    "chars": 1742,
    "preview": "/*\n * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved.\n * Copyright Nokia 2007-2019\n * Copyright Si"
  },
  {
    "path": "app/src/main/cpp/include/openssl/cmperr.h",
    "chars": 6165,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/cms.h",
    "chars": 34095,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/cms.h.in\n *\n * Copyright 2008-20"
  },
  {
    "path": "app/src/main/cpp/include/openssl/cmserr.h",
    "chars": 6668,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/comp.h",
    "chars": 1445,
    "preview": "/*\n * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/comperr.h",
    "chars": 813,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/conf.h",
    "chars": 10554,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/conf.h.in\n *\n * Copyright 1995-2"
  },
  {
    "path": "app/src/main/cpp/include/openssl/conf_api.h",
    "chars": 1420,
    "preview": "/*\n * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/conferr.h",
    "chars": 2203,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/configuration.h",
    "chars": 3260,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by configdata.pm from openssl-3.1.4/Configurations/common0.tmpl, openssl-3.1.4/"
  },
  {
    "path": "app/src/main/cpp/include/openssl/conftypes.h",
    "chars": 1190,
    "preview": "/*\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/core.h",
    "chars": 8131,
    "preview": "/*\n * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/core_dispatch.h",
    "chars": 48696,
    "preview": "/*\n * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/core_names.h",
    "chars": 23161,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.0.12/include/openssl/core_names.h.in\n *\n * Copyright"
  },
  {
    "path": "app/src/main/cpp/include/openssl/core_object.h",
    "chars": 1126,
    "preview": "/*\n * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/crmf.h",
    "chars": 14658,
    "preview": "/*-\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/crmf.h.in\n *\n * Copyright 2007-"
  },
  {
    "path": "app/src/main/cpp/include/openssl/crmferr.h",
    "chars": 2011,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/crypto.h",
    "chars": 24085,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/crypto.h.in\n *\n * Copyright 1995"
  },
  {
    "path": "app/src/main/cpp/include/openssl/cryptoerr.h",
    "chars": 2467,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/cryptoerr_legacy.h",
    "chars": 80396,
    "preview": "/*\n * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/ct.h",
    "chars": 22779,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/ct.h.in\n *\n * Copyright 2016-202"
  },
  {
    "path": "app/src/main/cpp/include/openssl/cterr.h",
    "chars": 1688,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/decoder.h",
    "chars": 5760,
    "preview": "/*\n * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/decodererr.h",
    "chars": 791,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/des.h",
    "chars": 8525,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/dh.h",
    "chars": 15261,
    "preview": "/*\n * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/dherr.h",
    "chars": 2444,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/dsa.h",
    "chars": 12532,
    "preview": "/*\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/dsaerr.h",
    "chars": 1629,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/dtls1.h",
    "chars": 1465,
    "preview": "/*\n * Copyright 2005-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/e_os2.h",
    "chars": 8800,
    "preview": "/*\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/e_ostime.h",
    "chars": 834,
    "preview": "/*\n * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 (the "
  },
  {
    "path": "app/src/main/cpp/include/openssl/ebcdic.h",
    "chars": 1042,
    "preview": "/*\n * Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/ec.h",
    "chars": 67738,
    "preview": "/*\n * Copyright 2002-2022 The OpenSSL Project Authors. All Rights Reserved.\n * Copyright (c) 2002, Oracle and/or its aff"
  },
  {
    "path": "app/src/main/cpp/include/openssl/ecdh.h",
    "chars": 361,
    "preview": "/*\n * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/ecdsa.h",
    "chars": 361,
    "preview": "/*\n * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/ecerr.h",
    "chars": 5405,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/encoder.h",
    "chars": 5450,
    "preview": "/*\n * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/encodererr.h",
    "chars": 791,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/engine.h",
    "chars": 38823,
    "preview": "/*\n * Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.\n * Copyright (c) 2002, Oracle and/or its aff"
  },
  {
    "path": "app/src/main/cpp/include/openssl/engineerr.h",
    "chars": 2838,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/err.h",
    "chars": 21978,
    "preview": "/*\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/ess.h",
    "chars": 8982,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/ess.h.in\n *\n * Copyright 2019-20"
  },
  {
    "path": "app/src/main/cpp/include/openssl/esserr.h",
    "chars": 1144,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/evp.h",
    "chars": 103908,
    "preview": "/*\n * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/evperr.h",
    "chars": 7351,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/fips_names.h",
    "chars": 2255,
    "preview": "/*\n * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/fipskey.h",
    "chars": 1024,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/fipskey.h.in\n *\n * Copyright 202"
  },
  {
    "path": "app/src/main/cpp/include/openssl/hmac.h",
    "chars": 2141,
    "preview": "/*\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/hpke.h",
    "chars": 6981,
    "preview": "/*\n * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the OpenSSL license (th"
  },
  {
    "path": "app/src/main/cpp/include/openssl/http.h",
    "chars": 5286,
    "preview": "/*\n * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.\n * Copyright Siemens AG 2018-2020\n *\n * Lice"
  },
  {
    "path": "app/src/main/cpp/include/openssl/httperr.h",
    "chars": 2451,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/idea.h",
    "chars": 3010,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/kdf.h",
    "chars": 5619,
    "preview": "/*\n * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/kdferr.h",
    "chars": 482,
    "preview": "/*\n * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/lhash.h",
    "chars": 14595,
    "preview": "/*\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/macros.h",
    "chars": 10702,
    "preview": "/*\n * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/md2.h",
    "chars": 1461,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/md4.h",
    "chars": 1699,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/md5.h",
    "chars": 1696,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/mdc2.h",
    "chars": 1441,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/modes.h",
    "chars": 10786,
    "preview": "/*\n * Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/obj_mac.h",
    "chars": 228668,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by crypto/objects/objects.pl\n *\n * Copyright 2000-2021 The OpenSSL Project Auth"
  },
  {
    "path": "app/src/main/cpp/include/openssl/objects.h",
    "chars": 6848,
    "preview": "/*\n * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/objectserr.h",
    "chars": 782,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/ocsp.h",
    "chars": 29366,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/ocsp.h.in\n *\n * Copyright 2000-2"
  },
  {
    "path": "app/src/main/cpp/include/openssl/ocsperr.h",
    "chars": 2200,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/opensslconf.h",
    "chars": 515,
    "preview": "/*\n * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/opensslv.h",
    "chars": 3200,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/opensslv.h.in\n *\n * Copyright 19"
  },
  {
    "path": "app/src/main/cpp/include/openssl/ossl_typ.h",
    "chars": 562,
    "preview": "/*\n * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 (the "
  },
  {
    "path": "app/src/main/cpp/include/openssl/param_build.h",
    "chars": 2809,
    "preview": "/*\n * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.\n * Copyright (c) 2019, Oracle and/or its aff"
  },
  {
    "path": "app/src/main/cpp/include/openssl/params.h",
    "chars": 7328,
    "preview": "/*\n * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.\n * Copyright (c) 2019, Oracle and/or its aff"
  },
  {
    "path": "app/src/main/cpp/include/openssl/pem.h",
    "chars": 25819,
    "preview": "/*\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/pem2.h",
    "chars": 531,
    "preview": "/*\n * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/pemerr.h",
    "chars": 2634,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/pkcs12.h",
    "chars": 19385,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/pkcs12.h.in\n *\n * Copyright 1999"
  },
  {
    "path": "app/src/main/cpp/include/openssl/pkcs12err.h",
    "chars": 1837,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/pkcs7.h",
    "chars": 22491,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/pkcs7.h.in\n *\n * Copyright 1995-"
  },
  {
    "path": "app/src/main/cpp/include/openssl/pkcs7err.h",
    "chars": 2952,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/prov_ssl.h",
    "chars": 981,
    "preview": "/*\n * Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 (the "
  },
  {
    "path": "app/src/main/cpp/include/openssl/proverr.h",
    "chars": 8279,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/provider.h",
    "chars": 2325,
    "preview": "/*\n * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/quic.h",
    "chars": 849,
    "preview": "/*\n * Copyright 2022-2023 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/rand.h",
    "chars": 3983,
    "preview": "/*\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/randerr.h",
    "chars": 3319,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/rc2.h",
    "chars": 2382,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/rc4.h",
    "chars": 1194,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/rc5.h",
    "chars": 2861,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/ripemd.h",
    "chars": 1717,
    "preview": "/*\n * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/rsa.h",
    "chars": 28332,
    "preview": "/*\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/rsaerr.h",
    "chars": 5681,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/safestack.h",
    "chars": 18453,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/safestack.h.in\n *\n * Copyright 1"
  },
  {
    "path": "app/src/main/cpp/include/openssl/seed.h",
    "chars": 3964,
    "preview": "/*\n * Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/self_test.h",
    "chars": 4145,
    "preview": "/*\n * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/sha.h",
    "chars": 4658,
    "preview": "/*\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/srp.h",
    "chars": 15501,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/srp.h.in\n *\n * Copyright 2004-20"
  },
  {
    "path": "app/src/main/cpp/include/openssl/srtp.h",
    "chars": 1429,
    "preview": "/*\n * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/ssl.h",
    "chars": 125007,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/ssl.h.in\n *\n * Copyright 1995-20"
  },
  {
    "path": "app/src/main/cpp/include/openssl/ssl2.h",
    "chars": 658,
    "preview": "/*\n * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/ssl3.h",
    "chars": 14773,
    "preview": "/*\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n * Copyright (c) 2002, Oracle and/or its aff"
  },
  {
    "path": "app/src/main/cpp/include/openssl/sslerr.h",
    "chars": 20401,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/sslerr_legacy.h",
    "chars": 27005,
    "preview": "/*\n * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/stack.h",
    "chars": 3284,
    "preview": "/*\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/store.h",
    "chars": 15178,
    "preview": "/*\n * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/storeerr.h",
    "chars": 2092,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/symhacks.h",
    "chars": 1290,
    "preview": "/*\n * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/thread.h",
    "chars": 871,
    "preview": "/*\n * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.\n * Copyright (c) 2002, Oracle and/or its aff"
  },
  {
    "path": "app/src/main/cpp/include/openssl/tls1.h",
    "chars": 71267,
    "preview": "/*\n * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.\n * Copyright (c) 2002, Oracle and/or its aff"
  },
  {
    "path": "app/src/main/cpp/include/openssl/trace.h",
    "chars": 10399,
    "preview": "/*\n * Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/ts.h",
    "chars": 19760,
    "preview": "/*\n * Copyright 2006-2022 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/tserr.h",
    "chars": 3074,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/txt_db.h",
    "chars": 1784,
    "preview": "/*\n * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/types.h",
    "chars": 7316,
    "preview": "/*\n * Copyright 2001-2022 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/ui.h",
    "chars": 19265,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/ui.h.in\n *\n * Copyright 2001-202"
  },
  {
    "path": "app/src/main/cpp/include/openssl/uierr.h",
    "chars": 1391,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/whrlpool.h",
    "chars": 1853,
    "preview": "/*\n * Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved.\n *\n * Licensed under the Apache License 2.0 "
  },
  {
    "path": "app/src/main/cpp/include/openssl/x509.h",
    "chars": 71617,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/x509.h.in\n *\n * Copyright 1995-2"
  },
  {
    "path": "app/src/main/cpp/include/openssl/x509_vfy.h",
    "chars": 52041,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/x509_vfy.h.in\n *\n * Copyright 19"
  },
  {
    "path": "app/src/main/cpp/include/openssl/x509err.h",
    "chars": 3319,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/include/openssl/x509v3.h",
    "chars": 94037,
    "preview": "/*\n * WARNING: do not edit!\n * Generated by Makefile from openssl-3.1.4/include/openssl/x509v3.h.in\n *\n * Copyright 1999"
  },
  {
    "path": "app/src/main/cpp/include/openssl/x509v3err.h",
    "chars": 4819,
    "preview": "/*\n * Generated by util/mkerr.pl DO NOT EDIT\n * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.\n *"
  },
  {
    "path": "app/src/main/cpp/nothing.c",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/BootReceiver.kt",
    "chars": 455,
    "preview": "package com.lizongying.mytv\n\nimport android.content.BroadcastReceiver\nimport android.content.Context\nimport android.cont"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/CardPresenter.kt",
    "chars": 2574,
    "preview": "package com.lizongying.mytv\n\nimport android.content.Context\nimport android.graphics.Color\nimport android.view.ContextThe"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/ChannelFragment.kt",
    "chars": 4132,
    "preview": "package com.lizongying.mytv\n\nimport android.os.Bundle\nimport android.os.Handler\nimport android.util.Log\nimport android.v"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/ConfirmationFragment.kt",
    "chars": 1008,
    "preview": "package com.lizongying.mytv\n\nimport android.app.AlertDialog\nimport android.app.Dialog\nimport android.os.Bundle\nimport an"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/Encryptor.kt",
    "chars": 410,
    "preview": "package com.lizongying.mytv\n\nimport android.content.Context\n\nclass Encryptor {\n    external fun init(context: Context)\n\n"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/ErrorFragment.kt",
    "chars": 852,
    "preview": "package com.lizongying.mytv\n\nimport android.view.View\nimport androidx.core.content.ContextCompat\nimport androidx.leanbac"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/Ext.kt",
    "chars": 3517,
    "preview": "@file:Suppress(\"DEPRECATION\")\n\npackage com.lizongying.mytv\n\nimport android.content.Context\nimport android.content.pm.Pac"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/InfoFragment.kt",
    "chars": 2068,
    "preview": "package com.lizongying.mytv\n\nimport android.os.Bundle\nimport android.os.Handler\nimport android.util.Log\nimport android.v"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/InitializerProvider.kt",
    "chars": 1099,
    "preview": "package com.lizongying.mytv\n\nimport android.content.ContentProvider\nimport android.content.ContentValues\nimport android."
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/MainActivity.kt",
    "chars": 14292,
    "preview": "package com.lizongying.mytv\n\nimport android.content.Context\nimport android.net.ConnectivityManager\nimport android.net.Ne"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/MainFragment.kt",
    "chars": 11365,
    "preview": "package com.lizongying.mytv\n\nimport android.os.Bundle\nimport android.util.Log\nimport android.view.LayoutInflater\nimport "
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/MyApplication.kt",
    "chars": 664,
    "preview": "package com.lizongying.mytv\n\nimport android.app.Application\nimport android.content.Context\nimport android.util.DisplayMe"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/NetworkChangeReceiver.kt",
    "chars": 494,
    "preview": "package com.lizongying.mytv\n\nimport android.content.BroadcastReceiver\nimport android.content.Context\nimport android.cont"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/PlayerFragment.kt",
    "chars": 5915,
    "preview": "package com.lizongying.mytv\n\nimport android.os.Bundle\nimport android.util.Log\nimport android.view.LayoutInflater\nimport "
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/Request.kt",
    "chars": 36259,
    "preview": "package com.lizongying.mytv\n\nimport android.os.Handler\nimport android.os.Looper\nimport android.util.Base64\nimport androi"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/SP.kt",
    "chars": 2124,
    "preview": "package com.lizongying.mytv\n\nimport android.content.Context\nimport android.content.SharedPreferences\n\nobject SP {\n    //"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/SettingFragment.kt",
    "chars": 3386,
    "preview": "package com.lizongying.mytv\n\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/TV.kt",
    "chars": 855,
    "preview": "package com.lizongying.mytv\n\nimport com.lizongying.mytv.models.ProgramType\nimport java.io.Serializable\n\ndata class TV(\n "
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/TVList.kt",
    "chars": 34862,
    "preview": "package com.lizongying.mytv\n\nimport com.lizongying.mytv.models.ProgramType\n\nobject TVList {\n    val list: Map<String, Li"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/TimeFragment.kt",
    "chars": 3005,
    "preview": "package com.lizongying.mytv\n\nimport android.os.Bundle\nimport android.os.Handler\nimport android.util.Log\nimport android.v"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/UpdateManager.kt",
    "chars": 8035,
    "preview": "package com.lizongying.mytv\n\nimport android.app.Activity\nimport android.app.DownloadManager\nimport android.app.DownloadM"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/Utils.kt",
    "chars": 2971,
    "preview": "package com.lizongying.mytv\n\nimport android.content.res.Resources\nimport android.os.Build\nimport android.util.TypedValue"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/ApiClient.kt",
    "chars": 6135,
    "preview": "package com.lizongying.mytv.api\n\n\nimport android.os.Build\nimport android.util.Log\nimport com.lizongying.mytv.jce.JceConv"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/Auth.kt",
    "chars": 744,
    "preview": "package com.lizongying.mytv.api\n\nimport android.util.Log\nimport okhttp3.MediaType\nimport okhttp3.RequestBody\nimport okio"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/DnsCache.kt",
    "chars": 560,
    "preview": "package com.lizongying.mytv.api\n\nimport okhttp3.Dns\nimport java.net.InetAddress\nimport java.util.concurrent.ConcurrentHa"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/FAuth.kt",
    "chars": 134,
    "preview": "package com.lizongying.mytv.api\n\n\ndata class FAuth(\n    val data: Data,\n) {\n    data class Data(\n        val live_url: S"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/FAuthService.kt",
    "chars": 604,
    "preview": "package com.lizongying.mytv.api\n\nimport retrofit2.Call\nimport retrofit2.http.GET\nimport retrofit2.http.Header\nimport ret"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/FEPG.kt",
    "chars": 103,
    "preview": "package com.lizongying.mytv.api\n\n\ndata class FEPG(\n    val title: String,\n    val event_time: String,\n)"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/Info.kt",
    "chars": 547,
    "preview": "package com.lizongying.mytv.api\n\ndata class Info(\n    val code: Int?,\n    val msg: String?,\n    val data: Data,\n) {\n    "
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/KvcollectRequest.kt",
    "chars": 2439,
    "preview": "package com.lizongying.mytv.api\n\ndata class KvcollectRequest(\n    val BossId: Int = 2727,\n    val Pwd: Int = 1424084450,"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/LiveInfo.kt",
    "chars": 830,
    "preview": "package com.lizongying.mytv.api\n\nimport android.util.Log\nimport okhttp3.MediaType\nimport okhttp3.RequestBody\nimport okio"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/ReleaseService.kt",
    "chars": 258,
    "preview": "package com.lizongying.mytv.api\n\nimport retrofit2.Call\nimport retrofit2.http.GET\nimport retrofit2.http.Path\n\ninterface R"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/Tls12SocketFactory.kt",
    "chars": 2154,
    "preview": "package com.lizongying.mytv.api\n\nimport java.io.IOException\nimport java.net.InetAddress\nimport java.net.Socket\nimport ja"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/YSP.kt",
    "chars": 4238,
    "preview": "package com.lizongying.mytv.api\n\nimport android.content.Context\nimport com.lizongying.mytv.Encryptor\nimport com.lizongyi"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/YSPApiService.kt",
    "chars": 1155,
    "preview": "package com.lizongying.mytv.api\n\nimport retrofit2.Call\nimport retrofit2.http.Body\nimport retrofit2.http.Header\nimport re"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/YSPBtraceService.kt",
    "chars": 5756,
    "preview": "package com.lizongying.mytv.api\n\nimport retrofit2.Call\nimport retrofit2.http.Body\nimport retrofit2.http.Field\nimport ret"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/YSPJceService.kt",
    "chars": 589,
    "preview": "package com.lizongying.mytv.api\n\nimport com.tencent.videolite.android.datamodel.cctvjce.TVTimeShiftProgramRequest\nimport"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/YSPProtoService.kt",
    "chars": 757,
    "preview": "package com.lizongying.mytv.api\n\nimport com.lizongying.mytv.proto.Ysp.cn.yangshipin.oms.common.proto.pageModel\nimport co"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/api/YSPTokenService.kt",
    "chars": 420,
    "preview": "package com.lizongying.mytv.api\n\nimport retrofit2.Call\nimport retrofit2.http.GET\nimport retrofit2.http.Query\n\n\ninterface"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/jce/CompressUtils.java",
    "chars": 4871,
    "preview": "package com.lizongying.mytv.jce;\n\nimport java.io.ByteArrayInputStream;\nimport java.io.ByteArrayOutputStream;\nimport java"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/jce/JceConverterFactory.java",
    "chars": 1180,
    "preview": "package com.lizongying.mytv.jce;\n\nimport androidx.annotation.NonNull;\n\nimport java.lang.annotation.Annotation;\nimport ja"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/jce/JceRequestBodyConverter.java",
    "chars": 2746,
    "preview": "package com.lizongying.mytv.jce;\n\nimport androidx.annotation.NonNull;\n\nimport com.qq.taf.jce.JceOutputStream;\nimport com"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/jce/JceResponseBodyConverter.java",
    "chars": 1863,
    "preview": "package com.lizongying.mytv.jce;\n\nimport androidx.annotation.NonNull;\n\nimport com.qq.taf.jce.JceInputStream;\nimport com."
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/jce/a.java",
    "chars": 5388,
    "preview": "package com.lizongying.mytv.jce;\n\nimport com.qq.taf.jce.JceInputStream;\nimport com.qq.taf.jce.JceOutputStream;\nimport co"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/jce/b.java",
    "chars": 6224,
    "preview": "package com.lizongying.mytv.jce;\n\nimport com.tencent.videolite.android.datamodel.cctvjce.RequestCommand;\n\nimport java.io"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/models/EPG.kt",
    "chars": 101,
    "preview": "package com.lizongying.mytv.models\n\n\ndata class EPG(\n    val title: String,\n    val beginTime: Int,\n)"
  },
  {
    "path": "app/src/main/java/com/lizongying/mytv/models/ProgramType.kt",
    "chars": 93,
    "preview": "package com.lizongying.mytv.models\n\nenum class ProgramType {\n    Y_PROTO,\n    Y_JCE,\n    F,\n}"
  }
]

// ... and 63 more files (download for full content)

About this extraction

This page contains the full source code of the lizongying/my-tv GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 263 files (3.8 MB), approximately 997.6k tokens, and a symbol index with 3606 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!