From 5f6cc37e9d0278c4281552e2cf86ef0441140849 Mon Sep 17 00:00:00 2001 From: Ivan Dlugos <6349682+vaind@users.noreply.github.com> Date: Thu, 31 Aug 2023 13:45:03 +0200 Subject: [PATCH 001/166] ci: update actions (#1617) --- .github/workflows/analyze.yml | 2 +- .github/workflows/dart.yml | 12 ++++++------ .github/workflows/dio.yml | 14 +++++++------- .github/workflows/file.yml | 14 +++++++------- .github/workflows/flutter.yml | 24 ++++++++++++------------ .github/workflows/logging.yml | 14 +++++++------- .github/workflows/sqflite.yml | 24 ++++++++++++------------ 7 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 60d8b32b21..2ebce36cac 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -51,7 +51,7 @@ jobs: if: env.GITHUB_HEAD_REF != null - name: dart analyze - uses: invertase/github-action-dart-analyzer@cdd8652b05bf7ed08ffce30f425436780f869f13 # pin@v1 + uses: invertase/github-action-dart-analyzer@1cda5922c6369263b1c7e2fbe281f69704f4d63e # pin@v2.0.0 with: annotate: true fatal-infos: true diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 312a573806..8dbd66da01 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -6,10 +6,10 @@ on: - release/** pull_request: paths-ignore: - - 'logging/**' - - 'dio/**' - - 'file/**' - - 'sqflite/**' + - "logging/**" + - "dio/**" + - "file/**" + - "sqflite/**" jobs: cancel-previous-workflow: @@ -74,10 +74,10 @@ jobs: name: sentry files: ./dart/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@84e5b54ab888644554e5573dca87d7f76dec9fb3 # pin@v2.0.0 + - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: - path: './dart/coverage/lcov.info' + path: "./dart/coverage/lcov.info" min_coverage: 85 analyze: diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index 6bae44d19c..647d0e8a21 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -6,10 +6,10 @@ on: - release/** pull_request: paths-ignore: - - 'logging/**' - - 'flutter/**' - - 'file/**' - - 'sqflite/**' + - "logging/**" + - "flutter/**" + - "file/**" + - "sqflite/**" jobs: cancel-previous-workflow: @@ -34,7 +34,7 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] sdk: [stable, beta] exclude: - - os: windows-latest + - os: windows-latest sdk: beta - os: macos-latest sdk: beta @@ -57,10 +57,10 @@ jobs: name: sentry_dio files: ./dio/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@84e5b54ab888644554e5573dca87d7f76dec9fb3 # pin@v2.0.0 + - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: - path: './dio/coverage/lcov.info' + path: "./dio/coverage/lcov.info" min_coverage: 81 analyze: diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 1cf2b4d40d..4ecfb3c28e 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -6,10 +6,10 @@ on: - release/** pull_request: paths-ignore: - - 'logging/**' - - 'flutter/**' - - 'dio/**' - - 'sqflite/**' + - "logging/**" + - "flutter/**" + - "dio/**" + - "sqflite/**" jobs: cancel-previous-workflow: @@ -34,7 +34,7 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] sdk: [stable, beta] exclude: - - os: windows-latest + - os: windows-latest sdk: beta - os: macos-latest sdk: beta @@ -56,10 +56,10 @@ jobs: name: sentry_file files: ./file/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@84e5b54ab888644554e5573dca87d7f76dec9fb3 # pin@v2.0.0 + - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: - path: './file/coverage/lcov.info' + path: "./file/coverage/lcov.info" min_coverage: 55 analyze: diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index e5c682efa9..c9aee61835 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -6,10 +6,10 @@ on: - release/** pull_request: paths-ignore: - - 'logging/**' - - 'dio/**' - - 'file/**' - - 'sqflite/**' + - "logging/**" + - "dio/**" + - "file/**" + - "sqflite/**" jobs: cancel-previous-workflow: @@ -31,8 +31,8 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - target: ['ios', 'android', 'web', 'macos', 'linux', 'windows'] - sdk: ['stable', 'beta'] + target: ["ios", "android", "web", "macos", "linux", "windows"] + sdk: ["stable", "beta"] exclude: - os: ubuntu-latest target: ios @@ -69,11 +69,11 @@ jobs: - uses: actions/setup-java@v3 if: ${{ matrix.target == 'android' }} with: - java-version: '11' - distribution: 'adopt' + java-version: "11" + distribution: "adopt" # Install required dependencies for Flutter on Linux on Ubuntu - - name: 'Setup Linux' + - name: "Setup Linux" run: | sudo apt update sudo apt install -y cmake dbus libblkid-dev libgtk-3-dev liblzma-dev ninja-build pkg-config xvfb @@ -108,12 +108,12 @@ jobs: with: name: sentry_flutter file: ./flutter/coverage/lcov.info - functionalities: 'search' # remove after https://github.com/codecov/codecov-action/issues/600 + functionalities: "search" # remove after https://github.com/codecov/codecov-action/issues/600 - - uses: VeryGoodOpenSource/very_good_coverage@84e5b54ab888644554e5573dca87d7f76dec9fb3 # pin@v2.0.0 + - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: - path: './flutter/coverage/lcov.info' + path: "./flutter/coverage/lcov.info" min_coverage: 90 - name: Build ${{ matrix.target }} diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index 88cc91d110..04d595e269 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -6,10 +6,10 @@ on: - release/** pull_request: paths-ignore: - - 'dio/**' - - 'flutter/**' - - 'file/**' - - 'sqflite/**' + - "dio/**" + - "flutter/**" + - "file/**" + - "sqflite/**" jobs: cancel-previous-workflow: @@ -34,7 +34,7 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] sdk: [stable, beta] exclude: - - os: windows-latest + - os: windows-latest sdk: beta - os: macos-latest sdk: beta @@ -57,9 +57,9 @@ jobs: name: sentry_logging files: ./logging/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@84e5b54ab888644554e5573dca87d7f76dec9fb3 # pin@v2.0.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' + - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: - path: './logging/coverage/lcov.info' + path: "./logging/coverage/lcov.info" min_coverage: 90 analyze: diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 9c0696065b..e8619fd44d 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -6,10 +6,10 @@ on: - release/** pull_request: paths-ignore: - - 'logging/**' - - 'flutter/**' - - 'dio/**' - - 'file/**' + - "logging/**" + - "flutter/**" + - "dio/**" + - "file/**" jobs: cancel-previous-workflow: @@ -31,8 +31,8 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - target: ['ios', 'android', 'macos', 'linux', 'windows'] - sdk: ['stable', 'beta'] + target: ["ios", "android", "macos", "linux", "windows"] + sdk: ["stable", "beta"] exclude: - os: ubuntu-latest target: ios @@ -65,11 +65,11 @@ jobs: - uses: actions/setup-java@v3 if: ${{ matrix.target == 'android' }} with: - java-version: '11' - distribution: 'adopt' + java-version: "11" + distribution: "adopt" # Install required dependencies for Flutter on Linux on Ubuntu - - name: 'Setup Linux' + - name: "Setup Linux" run: | sudo apt update sudo apt install -y cmake dbus libblkid-dev libgtk-3-dev liblzma-dev ninja-build pkg-config xvfb @@ -97,12 +97,12 @@ jobs: with: name: sentry_sqflite file: ./sqflite/coverage/lcov.info - functionalities: 'search' # remove after https://github.com/codecov/codecov-action/issues/600 + functionalities: "search" # remove after https://github.com/codecov/codecov-action/issues/600 - - uses: VeryGoodOpenSource/very_good_coverage@84e5b54ab888644554e5573dca87d7f76dec9fb3 # pin@v2.0.0 + - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: - path: './sqflite/coverage/lcov.info' + path: "./sqflite/coverage/lcov.info" min_coverage: 80 analyze: From 78eeed5b9772f2cd873401dd922274703ba656c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 4 Sep 2023 08:22:46 +0000 Subject: [PATCH 002/166] Add tests for the Android and iOS plugin (#1587) --- ..._integration_test.yml => flutter_test.yml} | 57 ++++- flutter/android/build.gradle | 3 + .../kotlin/io/sentry/flutter/SentryFlutter.kt | 129 +++++++++++ .../io/sentry/flutter/SentryFlutterPlugin.kt | 85 +------ .../io/sentry/flutter/SentryFlutterTest.kt | 139 ++++++++++++ flutter/config/detekt-bl.xml | 4 +- flutter/example/android/build.gradle | 2 + .../integration_test/integration_test.dart | 112 +++++----- flutter/example/ios/Podfile | 6 + .../ios/Runner.xcodeproj/project.pbxproj | 210 +++++++++++++++++- .../xcshareddata/xcschemes/Runner.xcscheme | 13 +- .../ios/RunnerTests/SentryFlutterTests.swift | 83 +++++++ flutter/example/macos/Podfile | 5 +- .../macos/Runner.xcodeproj/project.pbxproj | 10 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- flutter/ios/Classes/SentryFlutter.swift | 88 ++++++++ .../Classes/SentryFlutterPluginApple.swift | 104 +-------- flutter/macos/Classes/SentryFlutter.swift | 1 + 18 files changed, 795 insertions(+), 258 deletions(-) rename .github/workflows/{flutter_integration_test.yml => flutter_test.yml} (65%) create mode 100644 flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt create mode 100644 flutter/android/src/test/kotlin/io/sentry/flutter/SentryFlutterTest.kt create mode 100644 flutter/example/ios/RunnerTests/SentryFlutterTests.swift create mode 100644 flutter/ios/Classes/SentryFlutter.swift create mode 120000 flutter/macos/Classes/SentryFlutter.swift diff --git a/.github/workflows/flutter_integration_test.yml b/.github/workflows/flutter_test.yml similarity index 65% rename from .github/workflows/flutter_integration_test.yml rename to .github/workflows/flutter_test.yml index 37c071bd02..375db90f57 100644 --- a/.github/workflows/flutter_integration_test.yml +++ b/.github/workflows/flutter_test.yml @@ -1,14 +1,15 @@ -name: flutter integration tests +name: flutter native & integration test on: - # Currently broken, enable after fixing - workflow_dispatch - # push: - # branches: - # - main - # - release/** - # pull_request: - # paths-ignore: - # - 'file/**' + push: + branches: + - main + - release/** + pull_request: + paths-ignore: + - 'file/**' + +env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} jobs: cancel-previous-workflow: @@ -73,6 +74,22 @@ jobs: profile: Nexus 6 script: echo 'Generated AVD snapshot for caching.' + - name: build apk + working-directory: ./flutter/example/android + run: flutter build apk --debug + + - name: launch android emulator & run android native test + uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b #pin@v2.28.0 + with: + working-directory: ./flutter/example/android + api-level: 21 + force-avd-creation: false + emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: true + arch: x86_64 + profile: Nexus 6 + script: ./gradlew testDebugUnitTest + - name: launch android emulator & run android integration test uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b #pin@v2.28.0 with: @@ -110,10 +127,26 @@ jobs: - name: flutter pub get run: flutter pub get + - name: pod install + working-directory: ./flutter/example/ios + run: pod install + - name: launch ios simulator + id: sim run: | simulator_id=$(xcrun simctl create sentryPhone com.apple.CoreSimulator.SimDeviceType.iPhone-14 com.apple.CoreSimulator.SimRuntime.iOS-16-2) + echo "SIMULATOR_ID=${simulator_id}" >> "$GITHUB_OUTPUT" xcrun simctl boot ${simulator_id} +# Disable flutter integration tests because of flaky execution +# - name: run ios integration test +# env: +# SIMULATOR_ID: ${{ steps.sim.outputs.SIMULATOR_ID }} +# run: flutter test -d "$SIMULATOR_ID" integration_test/integration_test.dart --verbose + + - name: run ios native test + working-directory: ./flutter/example/ios + env: + SIMULATOR_ID: ${{ steps.sim.outputs.SIMULATOR_ID }} + run: xcodebuild test -workspace Runner.xcworkspace -scheme Runner -configuration Debug -destination "platform=iOS Simulator,id=$SIMULATOR_ID" -allowProvisioningUpdates CODE_SIGNING_ALLOWED=NO + - - name: run ios integration test - run: flutter test integration_test/integration_test.dart --verbose diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index 5e40acda85..6773e4fd96 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -62,4 +62,7 @@ android { dependencies { api 'io.sentry:sentry-android:6.28.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" + + // Required -- JUnit 4 framework + testImplementation "junit:junit:4.13.2" } diff --git a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt new file mode 100644 index 0000000000..962414c6a9 --- /dev/null +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt @@ -0,0 +1,129 @@ +package io.sentry.flutter + +import io.sentry.SentryLevel +import io.sentry.android.core.BuildConfig +import io.sentry.android.core.SentryAndroidOptions +import io.sentry.protocol.SdkVersion +import java.util.Locale + +class SentryFlutter( + private val androidSdk: String, + private val nativeSdk: String +) { + + var autoPerformanceTracingEnabled = false + + fun updateOptions(options: SentryAndroidOptions, data: Map) { + data.getIfNotNull("dsn") { + options.dsn = it + } + data.getIfNotNull("debug") { + options.isDebug = it + } + data.getIfNotNull("environment") { + options.environment = it + } + data.getIfNotNull("release") { + options.release = it + } + data.getIfNotNull("dist") { + options.dist = it + } + data.getIfNotNull("enableAutoSessionTracking") { + options.isEnableAutoSessionTracking = it + } + data.getIfNotNull("autoSessionTrackingIntervalMillis") { + options.sessionTrackingIntervalMillis = it + } + data.getIfNotNull("anrTimeoutIntervalMillis") { + options.anrTimeoutIntervalMillis = it + } + data.getIfNotNull("attachThreads") { + options.isAttachThreads = it + } + data.getIfNotNull("attachStacktrace") { + options.isAttachStacktrace = it + } + data.getIfNotNull("enableAutoNativeBreadcrumbs") { + options.isEnableActivityLifecycleBreadcrumbs = it + options.isEnableAppLifecycleBreadcrumbs = it + options.isEnableSystemEventBreadcrumbs = it + options.isEnableAppComponentBreadcrumbs = it + options.isEnableUserInteractionBreadcrumbs = it + } + data.getIfNotNull("maxBreadcrumbs") { + options.maxBreadcrumbs = it + } + data.getIfNotNull("maxCacheItems") { + options.maxCacheItems = it + } + data.getIfNotNull("diagnosticLevel") { + if (options.isDebug) { + val sentryLevel = SentryLevel.valueOf(it.toUpperCase(Locale.ROOT)) + options.setDiagnosticLevel(sentryLevel) + } + } + data.getIfNotNull("anrEnabled") { + options.isAnrEnabled = it + } + data.getIfNotNull("sendDefaultPii") { + options.isSendDefaultPii = it + } + data.getIfNotNull("enableNdkScopeSync") { + options.isEnableScopeSync = it + } + data.getIfNotNull("proguardUuid") { + options.proguardUuid = it + } + + val nativeCrashHandling = (data["enableNativeCrashHandling"] as? Boolean) ?: true + // nativeCrashHandling has priority over anrEnabled + if (!nativeCrashHandling) { + options.isEnableUncaughtExceptionHandler = false + options.isAnrEnabled = false + // if split symbols are enabled, we need Ndk integration so we can't really offer the option + // to turn it off + // options.isEnableNdk = false + } + + data.getIfNotNull("enableAutoPerformanceTracing") { enableAutoPerformanceTracing -> + if (enableAutoPerformanceTracing) { + autoPerformanceTracingEnabled = true + } + } + + data.getIfNotNull("sendClientReports") { + options.isSendClientReports = it + } + + data.getIfNotNull("maxAttachmentSize") { + options.maxAttachmentSize = it + } + + var sdkVersion = options.sdkVersion + if (sdkVersion == null) { + sdkVersion = SdkVersion(androidSdk, BuildConfig.VERSION_NAME) + } else { + sdkVersion.name = androidSdk + } + + options.sdkVersion = sdkVersion + options.sentryClientName = "$androidSdk/${BuildConfig.VERSION_NAME}" + options.nativeSdkName = nativeSdk + + data.getIfNotNull("connectionTimeoutMillis") { + options.connectionTimeoutMillis = it + } + data.getIfNotNull("readTimeoutMillis") { + options.readTimeoutMillis = it + } + } +} + +// Call the `completion` closure if cast to map value with `key` and type `T` is successful. +@Suppress("UNCHECKED_CAST") +private fun Map.getIfNotNull(key: String, callback: (T) -> Unit) { + (get(key) as? T)?.let { + callback(it) + } +} diff --git a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt index cc864f7333..9468ed40ff 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt @@ -36,6 +36,7 @@ import java.util.UUID class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { private lateinit var channel: MethodChannel private lateinit var context: Context + private lateinit var sentryFlutter: SentryFlutter private var activity: WeakReference? = null private var framesTracker: ActivityFramesTracker? = null @@ -45,6 +46,11 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { context = flutterPluginBinding.applicationContext channel = MethodChannel(flutterPluginBinding.binaryMessenger, "sentry_flutter") channel.setMethodCallHandler(this) + + sentryFlutter = SentryFlutter( + androidSdk = androidSdk, + nativeSdk = nativeSdk + ) } override fun onMethodCall(call: MethodCall, result: Result) { @@ -119,79 +125,13 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { } SentryAndroid.init(context) { options -> - args.getIfNotNull("dsn") { options.dsn = it } - args.getIfNotNull("debug") { options.isDebug = it } - args.getIfNotNull("environment") { options.environment = it } - args.getIfNotNull("release") { options.release = it } - args.getIfNotNull("dist") { options.dist = it } - args.getIfNotNull("enableAutoSessionTracking") { - options.isEnableAutoSessionTracking = it - } - args.getIfNotNull("autoSessionTrackingIntervalMillis") { - options.sessionTrackingIntervalMillis = it - } - args.getIfNotNull("anrTimeoutIntervalMillis") { - options.anrTimeoutIntervalMillis = it - } - args.getIfNotNull("attachThreads") { options.isAttachThreads = it } - args.getIfNotNull("attachStacktrace") { options.isAttachStacktrace = it } - args.getIfNotNull("enableAutoNativeBreadcrumbs") { - options.isEnableActivityLifecycleBreadcrumbs = it - options.isEnableAppLifecycleBreadcrumbs = it - options.isEnableSystemEventBreadcrumbs = it - options.isEnableAppComponentBreadcrumbs = it - options.isEnableUserInteractionBreadcrumbs = it - } - args.getIfNotNull("maxBreadcrumbs") { options.maxBreadcrumbs = it } - args.getIfNotNull("maxCacheItems") { options.maxCacheItems = it } - args.getIfNotNull("diagnosticLevel") { - if (options.isDebug) { - val sentryLevel = SentryLevel.valueOf(it.toUpperCase(Locale.ROOT)) - options.setDiagnosticLevel(sentryLevel) - } - } - args.getIfNotNull("anrEnabled") { options.isAnrEnabled = it } - args.getIfNotNull("sendDefaultPii") { options.isSendDefaultPii = it } - args.getIfNotNull("enableNdkScopeSync") { options.isEnableScopeSync = it } - args.getIfNotNull("proguardUuid") { options.proguardUuid = it } - - val nativeCrashHandling = (args["enableNativeCrashHandling"] as? Boolean) ?: true - // nativeCrashHandling has priority over anrEnabled - if (!nativeCrashHandling) { - options.isEnableUncaughtExceptionHandler = false - options.isAnrEnabled = false - // if split symbols are enabled, we need Ndk integration so we can't really offer the option - // to turn it off - // options.isEnableNdk = false - } - - args.getIfNotNull("enableAutoPerformanceTracing") { enableAutoPerformanceTracing -> - if (enableAutoPerformanceTracing) { - autoPerformanceTracingEnabled = true - framesTracker = ActivityFramesTracker(LoadClass(), options) - } - } - - args.getIfNotNull("sendClientReports") { options.isSendClientReports = it } + sentryFlutter.updateOptions(options, args) - args.getIfNotNull("maxAttachmentSize") { options.maxAttachmentSize = it } - - var sdkVersion = options.sdkVersion - if (sdkVersion == null) { - sdkVersion = SdkVersion(androidSdk, VERSION_NAME) - } else { - sdkVersion.name = androidSdk + if (sentryFlutter.autoPerformanceTracingEnabled) { + framesTracker = ActivityFramesTracker(LoadClass(), options) } - options.sdkVersion = sdkVersion - options.sentryClientName = "$androidSdk/$VERSION_NAME" - options.nativeSdkName = nativeSdk options.beforeSend = BeforeSendCallbackImpl(options.sdkVersion) - - args.getIfNotNull("connectionTimeoutMillis") { options.connectionTimeoutMillis = it } - args.getIfNotNull("readTimeoutMillis") { options.readTimeoutMillis = it } - - // missing proxy } result.success("") } @@ -455,10 +395,3 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { } } } - -// Call the `completion` closure if cast to map value with `key` and type `T` is successful. -private fun Map.getIfNotNull(key: String, callback: (T) -> Unit) { - (get(key) as? T)?.let { - callback(it) - } -} diff --git a/flutter/android/src/test/kotlin/io/sentry/flutter/SentryFlutterTest.kt b/flutter/android/src/test/kotlin/io/sentry/flutter/SentryFlutterTest.kt new file mode 100644 index 0000000000..3a5c8678f8 --- /dev/null +++ b/flutter/android/src/test/kotlin/io/sentry/flutter/SentryFlutterTest.kt @@ -0,0 +1,139 @@ +package io.sentry.flutter + +import io.sentry.SentryLevel +import io.sentry.android.core.BuildConfig +import io.sentry.android.core.SentryAndroidOptions +import org.junit.Assert.assertEquals +import org.junit.Before +import org.junit.Test + +class SentryFlutterTest { + + private lateinit var fixture: Fixture + + @Before + fun before() { + fixture = Fixture() + } + + @Test + fun updateOptions() { + // Given + val sut = fixture.getSut() + + // When + sut.updateOptions(fixture.options, fixture.data) + + // Then + assertEquals("fixture-dsn", fixture.options.dsn) + assertEquals(true, fixture.options.isDebug) + assertEquals("fixture-environment", fixture.options.environment) + assertEquals("fixture-release", fixture.options.release) + assertEquals("fixture-dist", fixture.options.dist) + assertEquals(false, fixture.options.isEnableAutoSessionTracking) + assertEquals(9001L, fixture.options.sessionTrackingIntervalMillis) + assertEquals(9002L, fixture.options.anrTimeoutIntervalMillis) + assertEquals(true, fixture.options.isAttachThreads) + assertEquals(false, fixture.options.isAttachStacktrace) + assertEquals(false, fixture.options.isEnableActivityLifecycleBreadcrumbs) + assertEquals(false, fixture.options.isEnableAppLifecycleBreadcrumbs) + assertEquals(false, fixture.options.isEnableSystemEventBreadcrumbs) + assertEquals(false, fixture.options.isEnableAppComponentBreadcrumbs) + assertEquals(false, fixture.options.isEnableUserInteractionBreadcrumbs) + assertEquals(9003, fixture.options.maxBreadcrumbs) + assertEquals(9004, fixture.options.maxCacheItems) + assertEquals(false, fixture.options.isAnrEnabled) + assertEquals(true, fixture.options.isSendDefaultPii) + assertEquals(false, fixture.options.isEnableScopeSync) + assertEquals("fixture-proguardUuid", fixture.options.proguardUuid) + assertEquals(false, fixture.options.isSendClientReports) + assertEquals(9005L, fixture.options.maxAttachmentSize) + + assertEquals("sentry.java.android.flutter", fixture.options.sdkVersion?.name) + assertEquals(BuildConfig.VERSION_NAME, fixture.options.sdkVersion?.version) + assertEquals( + "sentry.java.android.flutter/${BuildConfig.VERSION_NAME}", + fixture.options.sentryClientName + ) + assertEquals("fixture-nativeSdk", fixture.options.nativeSdkName) + + assertEquals(true, sut.autoPerformanceTracingEnabled) + + assertEquals(9006, fixture.options.connectionTimeoutMillis) + assertEquals(9007, fixture.options.readTimeoutMillis) + } + + @Test + fun initNativeSdkDiagnosticLevel() { + // Given + val sut = fixture.getSut() + fixture.options.isDebug = true + + // When + sut.updateOptions( + fixture.options, + mapOf( + "diagnosticLevel" to "warning" + ) + ) + + // Then + assertEquals(SentryLevel.WARNING, fixture.options.diagnosticLevel) + } + + @Test + fun initNativeSdkEnableNativeCrashHandling() { + // Given + val sut = fixture.getSut() + + // When + sut.updateOptions( + fixture.options, + mapOf( + "enableNativeCrashHandling" to false + ) + ) + + // Then + assertEquals(false, fixture.options.isEnableUncaughtExceptionHandler) + assertEquals(false, fixture.options.isAnrEnabled) + } +} + +class Fixture { + + var options = SentryAndroidOptions() + + val data = mapOf( + "dsn" to "fixture-dsn", + "debug" to true, + "environment" to "fixture-environment", + "release" to "fixture-release", + "dist" to "fixture-dist", + "enableAutoSessionTracking" to false, + "autoSessionTrackingIntervalMillis" to 9001L, + "anrTimeoutIntervalMillis" to 9002L, + "attachThreads" to true, + "attachStacktrace" to false, + "enableAutoNativeBreadcrumbs" to false, + "maxBreadcrumbs" to 9003, + "maxCacheItems" to 9004, + "anrEnabled" to false, + "sendDefaultPii" to true, + "enableNdkScopeSync" to false, + "proguardUuid" to "fixture-proguardUuid", + "enableNativeCrashHandling" to false, + "sendClientReports" to false, + "maxAttachmentSize" to 9005L, + "enableAutoPerformanceTracing" to true, + "connectionTimeoutMillis" to 9006, + "readTimeoutMillis" to 9007 + ) + + fun getSut(): SentryFlutter { + return SentryFlutter( + androidSdk = "sentry.java.android.flutter", + nativeSdk = "fixture-nativeSdk" + ) + } +} diff --git a/flutter/config/detekt-bl.xml b/flutter/config/detekt-bl.xml index c8da2b8940..bf2e55e08b 100644 --- a/flutter/config/detekt-bl.xml +++ b/flutter/config/detekt-bl.xml @@ -3,8 +3,8 @@ ComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) - ComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$private fun setUser(user: Map<String, Any?>?, result: Result) - LongMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$private fun initNativeSdk(call: MethodCall, result: Result) + CyclomaticComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) + LongMethod:SentryFlutter.kt$SentryFlutter$fun updateOptions(options: SentryAndroidOptions, data: Map<String, Any>) MagicNumber:MainActivity.kt$MainActivity$6_000 TooGenericExceptionCaught:MainActivity.kt$MainActivity$e: Exception TooGenericExceptionThrown:MainActivity.kt$MainActivity$throw Exception("Catch this java exception thrown from Kotlin thread!") diff --git a/flutter/example/android/build.gradle b/flutter/example/android/build.gradle index 71b614b7a1..e628374358 100644 --- a/flutter/example/android/build.gradle +++ b/flutter/example/android/build.gradle @@ -1,5 +1,6 @@ buildscript { ext.kotlin_version = '1.6.21' + repositories { google() mavenCentral() @@ -31,3 +32,4 @@ subprojects { tasks.register("clean", Delete) { delete rootProject.buildDir } + diff --git a/flutter/example/integration_test/integration_test.dart b/flutter/example/integration_test/integration_test.dart index ae42ae3945..c4c71edb41 100644 --- a/flutter/example/integration_test/integration_test.dart +++ b/flutter/example/integration_test/integration_test.dart @@ -10,9 +10,9 @@ import 'package:sentry_flutter_example/main.dart'; import 'package:http/http.dart'; void main() { - const org = 'sentry-sdks'; - const slug = 'sentry-flutter'; - const authToken = String.fromEnvironment('SENTRY_AUTH_TOKEN'); + // const org = 'sentry-sdks'; + // const slug = 'sentry-flutter'; + // const authToken = String.fromEnvironment('SENTRY_AUTH_TOKEN'); const fakeDsn = 'https://abc@def.ingest.sentry.io/1234567'; TestWidgetsFlutterBinding.ensureInitialized(); @@ -141,59 +141,59 @@ void main() { await transaction.finish(); }); - group('e2e', () { - var output = find.byKey(const Key('output')); - late Fixture fixture; - - setUp(() { - fixture = Fixture(); - }); - - testWidgets('captureException', (tester) async { - await setupSentryAndApp(tester, - dsn: exampleDsn, beforeSendCallback: fixture.beforeSend); - - await tester.tap(find.text('captureException')); - await tester.pumpAndSettle(); - - final text = output.evaluate().single.widget as Text; - final id = text.data!; - - final uri = Uri.parse( - 'https://sentry.io/api/0/projects/$org/$slug/events/$id/', - ); - expect(authToken, isNotEmpty); - - final event = await fixture.poll(uri, authToken); - expect(event, isNotNull); - - final sentEvent = fixture.sentEvent; - expect(sentEvent, isNotNull); - - final tags = event!["tags"] as List; - - expect(sentEvent!.eventId.toString(), event["id"]); - expect("_Exception: Exception: captureException", event["title"]); - expect(sentEvent.release, event["release"]["version"]); - expect( - 2, - (tags.firstWhere((e) => e["value"] == sentEvent.environment) as Map) - .length); - expect(sentEvent.fingerprint, event["fingerprint"] ?? []); - expect( - 2, - (tags.firstWhere((e) => e["value"] == SentryLevel.error.name) as Map) - .length); - expect(sentEvent.logger, event["logger"]); - - final dist = tags.firstWhere((element) => element['key'] == 'dist'); - expect('1', dist['value']); - - final environment = - tags.firstWhere((element) => element['key'] == 'environment'); - expect('integration', environment['value']); - }); - }); + // group('e2e', () { + // var output = find.byKey(const Key('output')); + // late Fixture fixture; + // + // setUp(() { + // fixture = Fixture(); + // }); + // + // testWidgets('captureException', (tester) async { + // await setupSentryAndApp(tester, + // dsn: exampleDsn, beforeSendCallback: fixture.beforeSend); + // + // await tester.tap(find.text('captureException')); + // await tester.pumpAndSettle(); + // + // final text = output.evaluate().single.widget as Text; + // final id = text.data!; + // + // final uri = Uri.parse( + // 'https://sentry.io/api/0/projects/$org/$slug/events/$id/', + // ); + // expect(authToken, isNotEmpty); + // + // final event = await fixture.poll(uri, authToken); + // expect(event, isNotNull); + // + // final sentEvent = fixture.sentEvent; + // expect(sentEvent, isNotNull); + // + // final tags = event!["tags"] as List; + // + // expect(sentEvent!.eventId.toString(), event["id"]); + // expect("_Exception: Exception: captureException", event["title"]); + // expect(sentEvent.release, event["release"]["version"]); + // expect( + // 2, + // (tags.firstWhere((e) => e["value"] == sentEvent.environment) as Map) + // .length); + // expect(sentEvent.fingerprint, event["fingerprint"] ?? []); + // expect( + // 2, + // (tags.firstWhere((e) => e["value"] == SentryLevel.error.name) as Map) + // .length); + // expect(sentEvent.logger, event["logger"]); + // + // final dist = tags.firstWhere((element) => element['key'] == 'dist'); + // expect('1', dist['value']); + // + // final environment = + // tags.firstWhere((element) => element['key'] == 'environment'); + // expect('integration', environment['value']); + // }); + // }); } class Fixture { diff --git a/flutter/example/ios/Podfile b/flutter/example/ios/Podfile index 313ea4a153..7b1e6a2394 100644 --- a/flutter/example/ios/Podfile +++ b/flutter/example/ios/Podfile @@ -32,6 +32,12 @@ target 'Runner' do use_modular_headers! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + + # Configure test target + target 'RunnerTests' do + inherit! :search_paths + end + end post_install do |installer| diff --git a/flutter/example/ios/Runner.xcodeproj/project.pbxproj b/flutter/example/ios/Runner.xcodeproj/project.pbxproj index b9f077ebb4..29c58327af 100644 --- a/flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -7,16 +7,28 @@ objects = { /* Begin PBXBuildFile section */ + 0E6A6386E49E9527E131F978 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 804FA4C73FD409C61067DA3C /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 15A74CDF250075770078F130 /* Buggy.m in Sources */ = {isa = PBXBuildFile; fileRef = 15A74CDE250075770078F130 /* Buggy.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 4DFA0D3B754F0E702B3CB4B1 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4B1A3E5A486E474A287B9BF /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 92B25CED2A80EB3100884BDF /* SentryFlutterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92B25CEC2A80EB3100884BDF /* SentryFlutterTests.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 92B25CEE2A80EB3100884BDF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXCopyFilesBuildPhase section */ 9705A1C41CF9048500538489 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; @@ -37,11 +49,15 @@ 15A74CDE250075770078F130 /* Buggy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Buggy.m; sourceTree = ""; }; 38199AEAF0F80C193173BC10 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3CEA108DF90E0A3E0A377D59 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 4F22DC026405C7E7F57CEBA6 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 768362D06CA53D13052997C4 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 804FA4C73FD409C61067DA3C /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 92B25CEA2A80EB3100884BDF /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 92B25CEC2A80EB3100884BDF /* SentryFlutterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryFlutterTests.swift; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -50,9 +66,19 @@ 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; C4B1A3E5A486E474A287B9BF /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F2579A3BD1D48D0BC33E4ADF /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + FDFDFB8E5235EA47CE65FBC5 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 92B25CE72A80EB3100884BDF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0E6A6386E49E9527E131F978 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -70,10 +96,21 @@ 38199AEAF0F80C193173BC10 /* Pods-Runner.debug.xcconfig */, 4F22DC026405C7E7F57CEBA6 /* Pods-Runner.release.xcconfig */, 768362D06CA53D13052997C4 /* Pods-Runner.profile.xcconfig */, + F2579A3BD1D48D0BC33E4ADF /* Pods-RunnerTests.debug.xcconfig */, + FDFDFB8E5235EA47CE65FBC5 /* Pods-RunnerTests.release.xcconfig */, + 3CEA108DF90E0A3E0A377D59 /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; }; + 92B25CEB2A80EB3100884BDF /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 92B25CEC2A80EB3100884BDF /* SentryFlutterTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -90,6 +127,7 @@ children = ( 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, + 92B25CEB2A80EB3100884BDF /* RunnerTests */, 97C146EF1CF9000F007C117D /* Products */, 2BEB9477FF568D2F04848764 /* Pods */, EDEF7FDEB4F4BFCED18D7311 /* Frameworks */, @@ -100,6 +138,7 @@ isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, + 92B25CEA2A80EB3100884BDF /* RunnerTests.xctest */, ); name = Products; sourceTree = ""; @@ -125,6 +164,7 @@ isa = PBXGroup; children = ( C4B1A3E5A486E474A287B9BF /* Pods_Runner.framework */, + 804FA4C73FD409C61067DA3C /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -132,6 +172,25 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 92B25CE92A80EB3100884BDF /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 92B25CF32A80EB3100884BDF /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 95EC4C94BEBF8B73E55C82BD /* [CP] Check Pods Manifest.lock */, + 92B25CE62A80EB3100884BDF /* Sources */, + 92B25CE72A80EB3100884BDF /* Frameworks */, + 92B25CE82A80EB3100884BDF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 92B25CEF2A80EB3100884BDF /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 92B25CEA2A80EB3100884BDF /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 97C146ED1CF9000F007C117D /* Runner */ = { isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; @@ -161,9 +220,14 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1300; + LastSwiftUpdateCheck = 1430; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { + 92B25CE92A80EB3100884BDF = { + CreatedOnToolsVersion = 14.3.1; + TestTargetID = 97C146ED1CF9000F007C117D; + }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 1100; @@ -184,11 +248,19 @@ projectRoot = ""; targets = ( 97C146ED1CF9000F007C117D /* Runner */, + 92B25CE92A80EB3100884BDF /* RunnerTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 92B25CE82A80EB3100884BDF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EC1CF9000F007C117D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -239,7 +311,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n"; }; 4D812E05A580E1EFEF066A51 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; @@ -258,6 +330,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + 95EC4C94BEBF8B73E55C82BD /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -271,11 +365,19 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 92B25CE62A80EB3100884BDF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 92B25CED2A80EB3100884BDF /* SentryFlutterTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EA1CF9000F007C117D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -288,6 +390,14 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 92B25CEF2A80EB3100884BDF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 92B25CEE2A80EB3100884BDF /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ 97C146FA1CF9000F007C117D /* Main.storyboard */ = { isa = PBXVariantGroup; @@ -389,6 +499,90 @@ }; name = Profile; }; + 92B25CF02A80EB3100884BDF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F2579A3BD1D48D0BC33E4ADF /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 97JCY7859U; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = io.sentry.flutter.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 92B25CF12A80EB3100884BDF /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FDFDFB8E5235EA47CE65FBC5 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 97JCY7859U; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = io.sentry.flutter.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 92B25CF22A80EB3100884BDF /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3CEA108DF90E0A3E0A377D59 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 97JCY7859U; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = io.sentry.flutter.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -562,6 +756,16 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 92B25CF32A80EB3100884BDF /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 92B25CF02A80EB3100884BDF /* Debug */, + 92B25CF12A80EB3100884BDF /* Release */, + 92B25CF22A80EB3100884BDF /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a335..0fa7c24eb1 100644 --- a/flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ + + + + SentryFlutter { + return SentryFlutter() + } + } +} diff --git a/flutter/example/macos/Podfile b/flutter/example/macos/Podfile index fe733905db..6feac427ca 100644 --- a/flutter/example/macos/Podfile +++ b/flutter/example/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.13' +platform :osx, '10.14' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' @@ -36,5 +36,8 @@ end post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_macos_build_settings(target) + target.build_configurations.each do |config| + config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '10.14' + end end end diff --git a/flutter/example/macos/Runner.xcodeproj/project.pbxproj b/flutter/example/macos/Runner.xcodeproj/project.pbxproj index d74803f7c0..ad9c506c71 100644 --- a/flutter/example/macos/Runner.xcodeproj/project.pbxproj +++ b/flutter/example/macos/Runner.xcodeproj/project.pbxproj @@ -208,8 +208,8 @@ 33CC10E52044A3C60003C045 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; + LastSwiftUpdateCheck = 1430; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 33CC10EC2044A3C60003C045 = { @@ -412,7 +412,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -492,7 +492,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -539,7 +539,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 152c342968..99a6840afc 100644 --- a/flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ SentryLevel { + switch diagnosticLevel { + case "fatal": + return .fatal + case "error": + return .error + case "debug": + return .debug + case "warning": + return .warning + case "info": + return .info + default: + return .none + } + } +} diff --git a/flutter/ios/Classes/SentryFlutterPluginApple.swift b/flutter/ios/Classes/SentryFlutterPluginApple.swift index f531fda120..5a41c2fcc2 100644 --- a/flutter/ios/Classes/SentryFlutterPluginApple.swift +++ b/flutter/ios/Classes/SentryFlutterPluginApple.swift @@ -39,6 +39,8 @@ public class SentryFlutterPluginApple: NSObject, FlutterPlugin { registrar.addMethodCallDelegate(instance, channel: channel) } + private lazy var sentryFlutter = SentryFlutter() + private func registerObserver() { NotificationCenter.default.addObserver(self, selector: #selector(applicationDidBecomeActive), @@ -250,7 +252,7 @@ public class SentryFlutterPluginApple: NSObject, FlutterPlugin { } SentrySDK.start { options in - self.updateOptions(arguments: arguments, options: options) + self.sentryFlutter.update(options: options, with: arguments) if arguments["enableAutoPerformanceTracing"] as? Bool ?? false { PrivateSentrySDKOnly.appStartMeasurementHybridSDKMode = true @@ -307,106 +309,6 @@ public class SentryFlutterPluginApple: NSObject, FlutterPlugin { result("") } - // swiftlint:disable:next cyclomatic_complexity - private func updateOptions(arguments: [String: Any], options: Options) { - if let dsn = arguments["dsn"] as? String { - options.dsn = dsn - } - - if let isDebug = arguments["debug"] as? Bool { - options.debug = isDebug - } - - if let environment = arguments["environment"] as? String { - options.environment = environment - } - - if let releaseName = arguments["release"] as? String { - options.releaseName = releaseName - } - - if let enableAutoSessionTracking = arguments["enableAutoSessionTracking"] as? Bool { - options.enableAutoSessionTracking = enableAutoSessionTracking - } - - if let attachStacktrace = arguments["attachStacktrace"] as? Bool { - options.attachStacktrace = attachStacktrace - } - - if let diagnosticLevel = arguments["diagnosticLevel"] as? String, options.debug == true { - options.diagnosticLevel = logLevelFrom(diagnosticLevel: diagnosticLevel) - } - - if let sessionTrackingIntervalMillis = arguments["autoSessionTrackingIntervalMillis"] as? UInt { - options.sessionTrackingIntervalMillis = sessionTrackingIntervalMillis - } - - if let dist = arguments["dist"] as? String { - options.dist = dist - } - - if let enableAutoNativeBreadcrumbs = arguments["enableAutoNativeBreadcrumbs"] as? Bool { - options.enableAutoBreadcrumbTracking = enableAutoNativeBreadcrumbs - } - - if let enableNativeCrashHandling = arguments["enableNativeCrashHandling"] as? Bool { - options.enableCrashHandler = enableNativeCrashHandling - } - - if let maxBreadcrumbs = arguments["maxBreadcrumbs"] as? UInt { - options.maxBreadcrumbs = maxBreadcrumbs - } - - if let sendDefaultPii = arguments["sendDefaultPii"] as? Bool { - options.sendDefaultPii = sendDefaultPii - } - - if let maxCacheItems = arguments["maxCacheItems"] as? UInt { - options.maxCacheItems = maxCacheItems - } - - if let enableWatchdogTerminationTracking = arguments["enableWatchdogTerminationTracking"] as? Bool { - options.enableWatchdogTerminationTracking = enableWatchdogTerminationTracking - } - - if let sendClientReports = arguments["sendClientReports"] as? Bool { - options.sendClientReports = sendClientReports - } - - if let maxAttachmentSize = arguments["maxAttachmentSize"] as? UInt { - options.maxAttachmentSize = maxAttachmentSize - } - - if let captureFailedRequests = arguments["captureFailedRequests"] as? Bool { - options.enableCaptureFailedRequests = captureFailedRequests - } - - if let enableAppHangTracking = arguments["enableAppHangTracking"] as? Bool { - options.enableAppHangTracking = enableAppHangTracking - } - - if let appHangTimeoutIntervalMillis = arguments["appHangTimeoutIntervalMillis"] as? UInt { - options.appHangTimeoutInterval = TimeInterval(appHangTimeoutIntervalMillis) / 1000 - } - } - - private func logLevelFrom(diagnosticLevel: String) -> SentryLevel { - switch diagnosticLevel { - case "fatal": - return .fatal - case "error": - return .error - case "debug": - return .debug - case "warning": - return .warning - case "info": - return .info - default: - return .none - } - } - private func setEventOriginTag(event: Event) { guard let sdk = event.sdk else { return diff --git a/flutter/macos/Classes/SentryFlutter.swift b/flutter/macos/Classes/SentryFlutter.swift new file mode 120000 index 0000000000..ea42d8c01c --- /dev/null +++ b/flutter/macos/Classes/SentryFlutter.swift @@ -0,0 +1 @@ +../../ios/Classes/SentryFlutter.swift \ No newline at end of file From d31254890cfea50ad5fa4d500933f1ca63e0af49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 4 Sep 2023 12:14:04 +0000 Subject: [PATCH 003/166] Normalize `data` properties of `SentryUser` and `Breadcrumb` before sending over method channel (#1591) --- CHANGELOG.md | 1 + flutter/lib/src/method_channel_helper.dart | 38 +++++ flutter/lib/src/sentry_native_channel.dart | 32 +++- flutter/pubspec.yaml | 1 + flutter/test/method_channel_helper_test.dart | 159 +++++++++++++++++++ flutter/test/sentry_native_channel_test.dart | 45 ++++-- 6 files changed, 257 insertions(+), 19 deletions(-) create mode 100644 flutter/lib/src/method_channel_helper.dart create mode 100644 flutter/test/method_channel_helper_test.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index 37fa04c4e3..8af73e66a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Fixes +- Normalize data properties of `SentryUser` and `Breadcrumb` before sending over method channel ([#1591](https://github.com/getsentry/sentry-dart/pull/1591)) - Fixing memory leak issue in SentryFlutterPlugin (Android Plugin) ([#1588](https://github.com/getsentry/sentry-dart/pull/1588)) ### Dependencies diff --git a/flutter/lib/src/method_channel_helper.dart b/flutter/lib/src/method_channel_helper.dart new file mode 100644 index 0000000000..bd3c8864b8 --- /dev/null +++ b/flutter/lib/src/method_channel_helper.dart @@ -0,0 +1,38 @@ +import 'package:meta/meta.dart'; + +/// Makes sure no invalid data is sent over method channels. +@internal +class MethodChannelHelper { + static dynamic normalize(dynamic data) { + if (data == null) { + return null; + } + if (_isPrimitive(data)) { + return data; + } else if (data is List) { + return _normalizeList(data); + } else if (data is Map) { + return normalizeMap(data); + } else { + return data.toString(); + } + } + + static Map? normalizeMap(Map? data) { + if (data == null) { + return null; + } + return data.map((key, value) => MapEntry(key, normalize(value))); + } + + static List? _normalizeList(List? data) { + if (data == null) { + return null; + } + return data.map((e) => normalize(e)).toList(); + } + + static bool _isPrimitive(dynamic value) { + return value == null || value is String || value is num || value is bool; + } +} diff --git a/flutter/lib/src/sentry_native_channel.dart b/flutter/lib/src/sentry_native_channel.dart index 575e43b618..44e4135b9f 100644 --- a/flutter/lib/src/sentry_native_channel.dart +++ b/flutter/lib/src/sentry_native_channel.dart @@ -4,6 +4,7 @@ import 'package:flutter/services.dart'; import 'package:meta/meta.dart'; import '../sentry_flutter.dart'; +import 'method_channel_helper.dart'; /// Provide typed methods to access native layer. @internal @@ -47,7 +48,13 @@ class SentryNativeChannel { Future setUser(SentryUser? user) async { try { - await _channel.invokeMethod('setUser', {'user': user?.toJson()}); + final normalizedUser = user?.copyWith( + data: MethodChannelHelper.normalizeMap(user.data), + ); + await _channel.invokeMethod( + 'setUser', + {'user': normalizedUser?.toJson()}, + ); } catch (error, stackTrace) { _logError('setUser', error, stackTrace); } @@ -55,8 +62,13 @@ class SentryNativeChannel { Future addBreadcrumb(Breadcrumb breadcrumb) async { try { - await _channel - .invokeMethod('addBreadcrumb', {'breadcrumb': breadcrumb.toJson()}); + final normalizedBreadcrumb = breadcrumb.copyWith( + data: MethodChannelHelper.normalizeMap(breadcrumb.data), + ); + await _channel.invokeMethod( + 'addBreadcrumb', + {'breadcrumb': normalizedBreadcrumb.toJson()}, + ); } catch (error, stackTrace) { _logError('addBreadcrumb', error, stackTrace); } @@ -72,7 +84,11 @@ class SentryNativeChannel { Future setContexts(String key, dynamic value) async { try { - await _channel.invokeMethod('setContexts', {'key': key, 'value': value}); + final normalizedValue = MethodChannelHelper.normalize(value); + await _channel.invokeMethod( + 'setContexts', + {'key': key, 'value': normalizedValue}, + ); } catch (error, stackTrace) { _logError('setContexts', error, stackTrace); } @@ -88,7 +104,11 @@ class SentryNativeChannel { Future setExtra(String key, dynamic value) async { try { - await _channel.invokeMethod('setExtra', {'key': key, 'value': value}); + final normalizedValue = MethodChannelHelper.normalize(value); + await _channel.invokeMethod( + 'setExtra', + {'key': key, 'value': normalizedValue}, + ); } catch (error, stackTrace) { _logError('setExtra', error, stackTrace); } @@ -102,7 +122,7 @@ class SentryNativeChannel { } } - Future setTag(String key, dynamic value) async { + Future setTag(String key, String value) async { try { await _channel.invokeMethod('setTag', {'key': key, 'value': value}); } catch (error, stackTrace) { diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index f49fb9ca53..884e799074 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -26,6 +26,7 @@ dev_dependencies: mockito: ^5.1.0 yaml: ^3.1.0 # needed for version match (code and pubspec) flutter_lints: ^2.0.0 + collection: ^1.16.0 flutter: plugin: diff --git a/flutter/test/method_channel_helper_test.dart b/flutter/test/method_channel_helper_test.dart new file mode 100644 index 0000000000..018fc7ec67 --- /dev/null +++ b/flutter/test/method_channel_helper_test.dart @@ -0,0 +1,159 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:sentry_flutter/src/method_channel_helper.dart'; +import 'package:collection/collection.dart'; + +void main() { + group('normalize', () { + test('primitives', () { + var expected = { + 'null': null, + 'int': 1, + 'float': 1.1, + 'bool': true, + 'string': 'Foo', + }; + + var actual = MethodChannelHelper.normalizeMap(expected); + expect( + DeepCollectionEquality().equals(actual, expected), + true, + ); + + expect(MethodChannelHelper.normalize(null), null); + expect(MethodChannelHelper.normalize(1), 1); + expect(MethodChannelHelper.normalize(1.1), 1.1); + expect(MethodChannelHelper.normalize(true), true); + expect(MethodChannelHelper.normalize('Foo'), 'Foo'); + }); + + test('object', () { + expect(MethodChannelHelper.normalize(_CustomObject()), 'CustomObject()'); + }); + + test('object in list', () { + var input = { + 'object': [_CustomObject()] + }; + var expected = { + 'object': ['CustomObject()'] + }; + + var actual = MethodChannelHelper.normalize(input); + expect( + DeepCollectionEquality().equals(actual, expected), + true, + ); + }); + + test('object in map', () { + var input = { + 'object': {'object': _CustomObject()} + }; + var expected = { + 'object': {'object': 'CustomObject()'} + }; + + var actual = MethodChannelHelper.normalize(input); + expect( + DeepCollectionEquality().equals(actual, expected), + true, + ); + }); + }); + + group('normalizeMap', () { + test('primitives', () { + var expected = { + 'null': null, + 'int': 1, + 'float': 1.1, + 'bool': true, + 'string': 'Foo', + }; + + var actual = MethodChannelHelper.normalizeMap(expected); + expect( + DeepCollectionEquality().equals(actual, expected), + true, + ); + }); + + test('list with primitives', () { + var expected = { + 'list': [null, 1, 1.1, true, 'Foo'], + }; + + var actual = MethodChannelHelper.normalizeMap(expected); + expect( + DeepCollectionEquality().equals(actual, expected), + true, + ); + }); + + test('map with primitives', () { + var expected = { + 'map': { + 'null': null, + 'int': 1, + 'float': 1.1, + 'bool': true, + 'string': 'Foo', + }, + }; + + var actual = MethodChannelHelper.normalizeMap(expected); + expect( + DeepCollectionEquality().equals(actual, expected), + true, + ); + }); + + test('object', () { + var input = {'object': _CustomObject()}; + var expected = {'object': 'CustomObject()'}; + + var actual = MethodChannelHelper.normalizeMap(input); + expect( + DeepCollectionEquality().equals(actual, expected), + true, + ); + }); + + test('object in list', () { + var input = { + 'object': [_CustomObject()] + }; + var expected = { + 'object': ['CustomObject()'] + }; + + var actual = MethodChannelHelper.normalizeMap(input); + expect( + DeepCollectionEquality().equals(actual, expected), + true, + ); + }); + + test('object in map', () { + var input = { + 'object': {'object': _CustomObject()} + }; + var expected = { + 'object': {'object': 'CustomObject()'} + }; + + var actual = MethodChannelHelper.normalizeMap(input); + expect( + DeepCollectionEquality().equals(actual, expected), + true, + ); + }); + }); +} + +class _CustomObject { + @override + String toString() { + return 'CustomObject()'; + } +} diff --git a/flutter/test/sentry_native_channel_test.dart b/flutter/test/sentry_native_channel_test.dart index 1d99ba2779..2264f2fad0 100644 --- a/flutter/test/sentry_native_channel_test.dart +++ b/flutter/test/sentry_native_channel_test.dart @@ -5,6 +5,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:sentry_flutter/src/method_channel_helper.dart'; import 'package:sentry_flutter/src/sentry_native.dart'; import 'package:sentry_flutter/src/sentry_native_channel.dart'; import 'mocks.mocks.dart'; @@ -64,26 +65,40 @@ void main() { }); test('setUser', () async { - when(fixture.methodChannel.invokeMethod('setUser', {'user': null})) + final user = SentryUser( + id: "fixture-id", + data: {'object': Object()}, + ); + final normalizedUser = user.copyWith( + data: MethodChannelHelper.normalizeMap(user.data), + ); + when(fixture.methodChannel + .invokeMethod('setUser', {'user': normalizedUser.toJson()})) .thenAnswer((_) => Future.value()); final sut = fixture.getSut(); - await sut.setUser(null); + await sut.setUser(user); - verify(fixture.methodChannel.invokeMethod('setUser', {'user': null})); + verify(fixture.methodChannel + .invokeMethod('setUser', {'user': normalizedUser.toJson()})); }); test('addBreadcrumb', () async { - final breadcrumb = Breadcrumb(); + final breadcrumb = Breadcrumb( + data: {'object': Object()}, + ); + final normalizedBreadcrumb = breadcrumb.copyWith( + data: MethodChannelHelper.normalizeMap(breadcrumb.data)); + when(fixture.methodChannel.invokeMethod( - 'addBreadcrumb', {'breadcrumb': breadcrumb.toJson()})) + 'addBreadcrumb', {'breadcrumb': normalizedBreadcrumb.toJson()})) .thenAnswer((_) => Future.value()); final sut = fixture.getSut(); await sut.addBreadcrumb(breadcrumb); - verify(fixture.methodChannel - .invokeMethod('addBreadcrumb', {'breadcrumb': breadcrumb.toJson()})); + verify(fixture.methodChannel.invokeMethod( + 'addBreadcrumb', {'breadcrumb': normalizedBreadcrumb.toJson()})); }); test('clearBreadcrumbs', () async { @@ -97,15 +112,17 @@ void main() { }); test('setContexts', () async { + final value = {'object': Object()}; + final normalizedValue = MethodChannelHelper.normalize(value); when(fixture.methodChannel.invokeMethod( - 'setContexts', {'key': 'fixture-key', 'value': 'fixture-value'})) + 'setContexts', {'key': 'fixture-key', 'value': normalizedValue})) .thenAnswer((_) => Future.value()); final sut = fixture.getSut(); - await sut.setContexts('fixture-key', 'fixture-value'); + await sut.setContexts('fixture-key', value); verify(fixture.methodChannel.invokeMethod( - 'setContexts', {'key': 'fixture-key', 'value': 'fixture-value'})); + 'setContexts', {'key': 'fixture-key', 'value': normalizedValue})); }); test('removeContexts', () async { @@ -121,15 +138,17 @@ void main() { }); test('setExtra', () async { + final value = {'object': Object()}; + final normalizedValue = MethodChannelHelper.normalize(value); when(fixture.methodChannel.invokeMethod( - 'setExtra', {'key': 'fixture-key', 'value': 'fixture-value'})) + 'setExtra', {'key': 'fixture-key', 'value': normalizedValue})) .thenAnswer((_) => Future.value()); final sut = fixture.getSut(); - await sut.setExtra('fixture-key', 'fixture-value'); + await sut.setExtra('fixture-key', value); verify(fixture.methodChannel.invokeMethod( - 'setExtra', {'key': 'fixture-key', 'value': 'fixture-value'})); + 'setExtra', {'key': 'fixture-key', 'value': normalizedValue})); }); test('removeExtra', () async { From 1d47eb7abe33d581dd45627a4387ea6a5e47cc40 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 21:56:14 +0200 Subject: [PATCH 004/166] chore(deps): update Cocoa SDK to v8.11.0 (#1626) Co-authored-by: GitHub --- CHANGELOG.md | 6 +++--- flutter/ios/sentry_flutter.podspec | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8af73e66a5..dd68f3d14a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,9 +12,9 @@ - Bump Android SDK from v6.25.2 to v6.28.0 ([#1586](https://github.com/getsentry/sentry-dart/pull/1586)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6280) - [diff](https://github.com/getsentry/sentry-java/compare/6.25.2...6.28.0) -- Bump Cocoa SDK from v8.9.1 to v8.10.0 ([#1584](https://github.com/getsentry/sentry-dart/pull/1584), [#1606](https://github.com/getsentry/sentry-dart/pull/1606)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8100) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.9.1...8.10.0) +- Bump Cocoa SDK from v8.9.1 to v8.11.0 ([#1584](https://github.com/getsentry/sentry-dart/pull/1584), [#1606](https://github.com/getsentry/sentry-dart/pull/1606), [#1626](https://github.com/getsentry/sentry-dart/pull/1626)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8110) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.9.1...8.11.0) ## 7.9.0 diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 0b0351bd44..4ba99f91c8 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.10.0' + s.dependency 'Sentry/HybridSDK', '8.11.0' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' From 280ab9f07e076ac22e67751b5cb131c1d773f155 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 6 Sep 2023 11:01:42 +0000 Subject: [PATCH 005/166] Tracing without performance (#1621) * implement propagationContext * remove sampled and parentSpanId for now * update changelog * fix build error * create new propagation context on startTransaction if tracing is disabled * remove print * propagate trace for http requests * add tracing client test * fix tests * format * fix compile * tests * fix analysis score * fix analysis score * fix compilation * fix score * fix score * fix score * fix score * update tests --- CHANGELOG.md | 4 + dart/lib/src/http_client/tracing_client.dart | 23 ++- dart/lib/src/hub.dart | 10 +- dart/lib/src/hub_adapter.dart | 4 + dart/lib/src/noop_hub.dart | 4 + dart/lib/src/propagation_context.dart | 12 ++ .../src/protocol/sentry_trace_context.dart | 12 ++ dart/lib/src/scope.dart | 19 ++- dart/lib/src/sentry_baggage.dart | 26 +++- dart/lib/src/sentry_client.dart | 16 ++- dart/lib/src/sentry_trace_context_header.dart | 9 ++ dart/lib/src/utils/tracing_utils.dart | 57 +++++--- .../test/http_client/tracing_client_test.dart | 46 ++++-- dart/test/hub_test.dart | 8 ++ dart/test/mocks/mock_hub.dart | 3 + dart/test/sentry_client_test.dart | 131 ++++++++++++++++++ dart/test/utils/tracing_utils_test.dart | 32 ++++- dio/lib/src/tracing_client_adapter.dart | 4 +- 18 files changed, 361 insertions(+), 59 deletions(-) create mode 100644 dart/lib/src/propagation_context.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index dd68f3d14a..41447b7328 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Features + +- Tracing without performance ([#1621](https://github.com/getsentry/sentry-dart/pull/1621)) + ### Fixes - Normalize data properties of `SentryUser` and `Breadcrumb` before sending over method channel ([#1591](https://github.com/getsentry/sentry-dart/pull/1591)) diff --git a/dart/lib/src/http_client/tracing_client.dart b/dart/lib/src/http_client/tracing_client.dart index ae7a81e973..4a469d9d3c 100644 --- a/dart/lib/src/http_client/tracing_client.dart +++ b/dart/lib/src/http_client/tracing_client.dart @@ -46,15 +46,28 @@ class TracingClient extends BaseClient { StreamedResponse? response; try { - if (span != null) { - if (containsTargetOrMatchesRegExp( - _hub.options.tracePropagationTargets, request.url.toString())) { - addSentryTraceHeader(span, request.headers); - addBaggageHeader( + if (containsTargetOrMatchesRegExp( + _hub.options.tracePropagationTargets, request.url.toString())) { + if (span != null) { + addSentryTraceHeaderFromSpan(span, request.headers); + addBaggageHeaderFromSpan( span, request.headers, logger: _hub.options.logger, ); + } else { + final scope = _hub.scope; + final propagationContext = scope.propagationContext; + + final traceHeader = propagationContext.toSentryTrace(); + addSentryTraceHeader(traceHeader, request.headers); + + final baggage = propagationContext.baggage; + if (baggage != null) { + final baggageHeader = SentryBaggageHeader.fromBaggage(baggage); + addBaggageHeader(baggageHeader, request.headers, + logger: _hub.options.logger); + } } } diff --git a/dart/lib/src/hub.dart b/dart/lib/src/hub.dart index e1ffe802dd..855f2b9438 100644 --- a/dart/lib/src/hub.dart +++ b/dart/lib/src/hub.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:collection'; import 'package:meta/meta.dart'; +import 'propagation_context.dart'; import 'transport/data_category.dart'; import '../sentry.dart'; @@ -65,6 +66,9 @@ class Hub { /// Last event id recorded by the Hub SentryId get lastEventId => _lastEventId; + @internal + Scope get scope => _peek().scope; + /// Captures the event. Future captureEvent( SentryEvent event, { @@ -426,10 +430,8 @@ class Hub { "Instance is disabled and this 'startTransaction' call is a no-op.", ); } else if (!_options.isTracingEnabled()) { - _options.logger( - SentryLevel.info, - "Tracing is disabled and this 'startTransaction' returns a no-op.", - ); + final item = _peek(); + item.scope.propagationContext = PropagationContext(); } else { final item = _peek(); diff --git a/dart/lib/src/hub_adapter.dart b/dart/lib/src/hub_adapter.dart index 8c1a176df8..0775042e04 100644 --- a/dart/lib/src/hub_adapter.dart +++ b/dart/lib/src/hub_adapter.dart @@ -5,6 +5,7 @@ import 'hint.dart'; import 'hub.dart'; import 'protocol.dart'; +import 'scope.dart'; import 'sentry.dart'; import 'sentry_client.dart'; import 'sentry_user_feedback.dart'; @@ -166,4 +167,7 @@ class HubAdapter implements Hub { String transaction, ) => Sentry.currentHub.setSpanContext(throwable, span, transaction); + + @override + Scope get scope => Sentry.currentHub.scope; } diff --git a/dart/lib/src/noop_hub.dart b/dart/lib/src/noop_hub.dart index ea005184b6..28a56de249 100644 --- a/dart/lib/src/noop_hub.dart +++ b/dart/lib/src/noop_hub.dart @@ -5,6 +5,7 @@ import 'package:meta/meta.dart'; import 'hint.dart'; import 'hub.dart'; import 'protocol.dart'; +import 'scope.dart'; import 'sentry_client.dart'; import 'sentry_options.dart'; import 'sentry_user_feedback.dart'; @@ -118,4 +119,7 @@ class NoOpHub implements Hub { @override void setSpanContext(throwable, ISentrySpan span, String transaction) {} + + @override + Scope get scope => Scope(_options); } diff --git a/dart/lib/src/propagation_context.dart b/dart/lib/src/propagation_context.dart new file mode 100644 index 0000000000..1a0f32355a --- /dev/null +++ b/dart/lib/src/propagation_context.dart @@ -0,0 +1,12 @@ +import 'package:meta/meta.dart'; +import 'protocol.dart'; +import 'sentry_baggage.dart'; + +@internal +class PropagationContext { + late SentryId traceId = SentryId.newId(); + late SpanId spanId = SpanId.newId(); + SentryBaggage? baggage; + + SentryTraceHeader toSentryTrace() => SentryTraceHeader(traceId, spanId); +} diff --git a/dart/lib/src/protocol/sentry_trace_context.dart b/dart/lib/src/protocol/sentry_trace_context.dart index fab3d1444d..25c4ca7ad8 100644 --- a/dart/lib/src/protocol/sentry_trace_context.dart +++ b/dart/lib/src/protocol/sentry_trace_context.dart @@ -1,5 +1,7 @@ import 'package:meta/meta.dart'; +import '../../sentry.dart'; +import '../propagation_context.dart'; import '../protocol.dart'; @immutable @@ -87,4 +89,14 @@ class SentryTraceContext { this.origin, }) : traceId = traceId ?? SentryId.newId(), spanId = spanId ?? SpanId.newId(); + + @internal + factory SentryTraceContext.fromPropagationContext( + PropagationContext propagationContext) { + return SentryTraceContext( + traceId: propagationContext.traceId, + spanId: propagationContext.spanId, + operation: 'default', + ); + } } diff --git a/dart/lib/src/scope.dart b/dart/lib/src/scope.dart index f9cb3796aa..aa37d67993 100644 --- a/dart/lib/src/scope.dart +++ b/dart/lib/src/scope.dart @@ -1,8 +1,11 @@ import 'dart:async'; import 'dart:collection'; +import 'package:meta/meta.dart'; + import 'event_processor.dart'; import 'hint.dart'; +import 'propagation_context.dart'; import 'protocol.dart'; import 'scope_observer.dart'; import 'sentry_attachment/sentry_attachment.dart'; @@ -39,6 +42,9 @@ class Scope { /// Returns active transaction or null if there is no active transaction. ISentrySpan? span; + @internal + PropagationContext propagationContext = PropagationContext(); + SentryUser? _user; /// Get the current user. @@ -311,10 +317,15 @@ class Scope { }); final newSpan = span; - if (event.contexts.trace == null && newSpan != null) { - event.contexts.trace = newSpan.context.toTraceContext( - sampled: newSpan.samplingDecision?.sampled, - ); + if (event.contexts.trace == null) { + if (newSpan != null) { + event.contexts.trace = newSpan.context.toTraceContext( + sampled: newSpan.samplingDecision?.sampled, + ); + } else { + event.contexts.trace = + SentryTraceContext.fromPropagationContext(propagationContext); + } } SentryEvent? processedEvent = event; diff --git a/dart/lib/src/sentry_baggage.dart b/dart/lib/src/sentry_baggage.dart index 50547622d5..60ac395648 100644 --- a/dart/lib/src/sentry_baggage.dart +++ b/dart/lib/src/sentry_baggage.dart @@ -1,4 +1,7 @@ -import 'protocol/sentry_level.dart'; +import 'package:meta/meta.dart'; +import 'scope.dart'; +import 'protocol.dart'; + import 'sentry_options.dart'; class SentryBaggage { @@ -87,6 +90,27 @@ class SentryBaggage { return SentryBaggage(keyValues, logger: logger); } + @internal + setValuesFromScope(Scope scope, SentryOptions options) { + final propagationContext = scope.propagationContext; + setTraceId(propagationContext.traceId.toString()); + if (options.dsn != null) { + setPublicKey(Dsn.parse(options.dsn!).publicKey); + } + if (options.release != null) { + setRelease(options.release!); + } + if (options.environment != null) { + setEnvironment(options.environment!); + } + if (scope.user?.id != null) { + setUserId(scope.user!.id!); + } + if (scope.user?.segment != null) { + setUserSegment(scope.user!.segment!); + } + } + static Map _extractKeyValuesFromBaggageString( String headerValue, { SentryLogger? logger, diff --git a/dart/lib/src/sentry_client.dart b/dart/lib/src/sentry_client.dart index 09f98e4d02..a2af9c47b2 100644 --- a/dart/lib/src/sentry_client.dart +++ b/dart/lib/src/sentry_client.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:math'; import 'package:meta/meta.dart'; +import 'sentry_baggage.dart'; import 'sentry_attachment/sentry_attachment.dart'; import 'event_processor.dart'; @@ -122,11 +123,24 @@ class SentryClient { attachments.add(viewHierarchy); } + var traceContext = scope?.span?.traceContext(); + if (traceContext == null) { + if (scope?.propagationContext.baggage == null) { + scope?.propagationContext.baggage = + SentryBaggage({}, logger: _options.logger); + scope?.propagationContext.baggage?.setValuesFromScope(scope, _options); + } + if (scope != null) { + traceContext = SentryTraceContextHeader.fromBaggage( + scope.propagationContext.baggage!); + } + } + final envelope = SentryEnvelope.fromEvent( preparedEvent, _options.sdk, dsn: _options.dsn, - traceContext: scope?.span?.traceContext(), + traceContext: traceContext, attachments: attachments.isNotEmpty ? attachments : null, ); diff --git a/dart/lib/src/sentry_trace_context_header.dart b/dart/lib/src/sentry_trace_context_header.dart index 181752b359..68208a7096 100644 --- a/dart/lib/src/sentry_trace_context_header.dart +++ b/dart/lib/src/sentry_trace_context_header.dart @@ -79,4 +79,13 @@ class SentryTraceContextHeader { return baggage; } + + factory SentryTraceContextHeader.fromBaggage(SentryBaggage baggage) { + return SentryTraceContextHeader( + SentryId.fromId(baggage.get('sentry-trace_id').toString()), + baggage.get('sentry-public_key').toString(), + release: baggage.get('sentry-release'), + environment: baggage.get('sentry-environment'), + ); + } } diff --git a/dart/lib/src/utils/tracing_utils.dart b/dart/lib/src/utils/tracing_utils.dart index a60497509f..6198062ddc 100644 --- a/dart/lib/src/utils/tracing_utils.dart +++ b/dart/lib/src/utils/tracing_utils.dart @@ -1,42 +1,55 @@ import '../../sentry.dart'; -void addSentryTraceHeader(ISentrySpan span, Map headers) { +void addSentryTraceHeaderFromSpan( + ISentrySpan span, Map headers) { final traceHeader = span.toSentryTrace(); headers[traceHeader.name] = traceHeader.value; } -void addBaggageHeader( +void addSentryTraceHeader( + SentryTraceHeader traceHeader, Map headers) { + headers[traceHeader.name] = traceHeader.value; +} + +void addBaggageHeaderFromSpan( ISentrySpan span, Map headers, { SentryLogger? logger, }) { final baggage = span.toBaggageHeader(); if (baggage != null) { - final currentValue = headers[baggage.name] as String? ?? ''; + addBaggageHeader(baggage, headers, logger: logger); + } +} - final currentBaggage = SentryBaggage.fromHeader( - currentValue, - logger: logger, - ); - final sentryBaggage = SentryBaggage.fromHeader( - baggage.value, - logger: logger, - ); +void addBaggageHeader( + SentryBaggageHeader baggage, + Map headers, { + SentryLogger? logger, +}) { + final currentValue = headers[baggage.name] as String? ?? ''; - // overwrite sentry's keys https://develop.sentry.dev/sdk/performance/dynamic-sampling-context/#baggage - final filteredBaggageHeader = Map.from(currentBaggage.keyValues); - filteredBaggageHeader - .removeWhere((key, value) => key.startsWith('sentry-')); + final currentBaggage = SentryBaggage.fromHeader( + currentValue, + logger: logger, + ); + final sentryBaggage = SentryBaggage.fromHeader( + baggage.value, + logger: logger, + ); - final mergedBaggage = { - ...filteredBaggageHeader, - ...sentryBaggage.keyValues, - }; + // overwrite sentry's keys https://develop.sentry.dev/sdk/performance/dynamic-sampling-context/#baggage + final filteredBaggageHeader = Map.from(currentBaggage.keyValues); + filteredBaggageHeader.removeWhere((key, value) => key.startsWith('sentry-')); - final newBaggage = SentryBaggage(mergedBaggage, logger: logger); + final mergedBaggage = { + ...filteredBaggageHeader, + ...sentryBaggage.keyValues, + }; - headers[baggage.name] = newBaggage.toHeaderString(); - } + final newBaggage = SentryBaggage(mergedBaggage, logger: logger); + + headers[baggage.name] = newBaggage.toHeaderString(); } bool containsTargetOrMatchesRegExp( diff --git a/dart/test/http_client/tracing_client_test.dart b/dart/test/http_client/tracing_client_test.dart index dce3b3ef31..0e34f7da90 100644 --- a/dart/test/http_client/tracing_client_test.dart +++ b/dart/test/http_client/tracing_client_test.dart @@ -141,20 +141,6 @@ void main() { expect(response.request!.headers[sentryTrace.name], sentryTrace.value); }); - test('captured span do not add headers if NoOp', () async { - final sut = fixture.getSut( - client: fixture.getClient(statusCode: 200, reason: 'OK'), - ); - - await fixture._hub - .configureScope((scope) => scope.span = NoOpSentrySpan()); - - final response = await sut.get(requestUri); - - expect(response.request!.headers['baggage'], null); - expect(response.request!.headers['sentry-trace'], null); - }); - test('captured span do not add headers if origins not set', () async { final sut = fixture.getSut( client: fixture.getClient( @@ -188,6 +174,38 @@ void main() { await sut.get(requestUri); }); + + test('set headers from propagationContext when tracing is disabled', + () async { + fixture._options.enableTracing = false; + final sut = fixture.getSut( + client: fixture.getClient(statusCode: 200, reason: 'OK'), + ); + + final propagationContext = fixture._hub.scope.propagationContext; + propagationContext.baggage = SentryBaggage({'foo': 'bar'}); + + final response = await sut.get(requestUri); + + expect(response.request!.headers['sentry-trace'], + propagationContext.toSentryTrace().value); + expect(response.request!.headers['baggage'], 'foo=bar'); + }); + + test('set headers from propagationContext when no transaction', () async { + final sut = fixture.getSut( + client: fixture.getClient(statusCode: 200, reason: 'OK'), + ); + + final propagationContext = fixture._hub.scope.propagationContext; + propagationContext.baggage = SentryBaggage({'foo': 'bar'}); + + final response = await sut.get(requestUri); + + expect(response.request!.headers['sentry-trace'], + propagationContext.toSentryTrace().value); + expect(response.request!.headers['baggage'], 'foo=bar'); + }); }); } diff --git a/dart/test/hub_test.dart b/dart/test/hub_test.dart index 32e0f1021c..8cc4e99502 100644 --- a/dart/test/hub_test.dart +++ b/dart/test/hub_test.dart @@ -374,6 +374,14 @@ void main() { expect( fixture.client.captureTransactionCalls.first.traceContext, context); }); + + test('returns scope', () async { + final hub = fixture.getSut(); + + final scope = hub.scope; + + expect(scope, isNotNull); + }); }); group('Hub scope', () { diff --git a/dart/test/mocks/mock_hub.dart b/dart/test/mocks/mock_hub.dart index d8b4d7384b..351ad70672 100644 --- a/dart/test/mocks/mock_hub.dart +++ b/dart/test/mocks/mock_hub.dart @@ -131,6 +131,9 @@ class MockHub with NoSuchMethodProvider implements Hub { void setSpanContext(throwable, ISentrySpan span, String transaction) { spanContextCals++; } + + @override + Scope get scope => Scope(_options); } class CaptureEventCall { diff --git a/dart/test/sentry_client_test.dart b/dart/test/sentry_client_test.dart index 484dd009a5..cdbbd73950 100644 --- a/dart/test/sentry_client_test.dart +++ b/dart/test/sentry_client_test.dart @@ -542,6 +542,137 @@ void main() { fixture = Fixture(); }); + test( + 'when scope does not have an active transaction, trace state is set on the envelope from scope', + () async { + final client = fixture.getSut(); + final scope = Scope(fixture.options); + await client.captureEvent(SentryEvent(), scope: scope); + + final capturedEnvelope = (fixture.transport).envelopes.first; + final capturedTraceContext = capturedEnvelope.header.traceContext; + final capturedTraceId = capturedTraceContext?.traceId; + final propagationContextTraceId = scope.propagationContext.traceId; + + expect(capturedTraceContext, isNotNull); + expect(capturedTraceId, propagationContextTraceId); + }); + + test('attaches trace context from span if none present yet', () async { + final client = fixture.getSut(); + final spanContext = SentrySpanContext( + traceId: SentryId.newId(), + spanId: SpanId.newId(), + operation: 'op.load', + ); + final scope = Scope(fixture.options); + scope.span = SentrySpan(fixture.tracer, spanContext, MockHub()); + + final sentryEvent = SentryEvent(); + await client.captureEvent(sentryEvent, scope: scope); + + expect(fixture.transport.envelopes.length, 1); + expect(spanContext.spanId, sentryEvent.contexts.trace!.spanId); + expect(spanContext.traceId, sentryEvent.contexts.trace!.traceId); + }); + + test( + 'attaches trace context from scope if none present yet and no span on scope', + () async { + final client = fixture.getSut(); + + final scope = Scope(fixture.options); + final scopePropagationContext = scope.propagationContext; + + final sentryEvent = SentryEvent(); + await client.captureEvent(sentryEvent, scope: scope); + + expect(fixture.transport.envelopes.length, 1); + expect( + scopePropagationContext.traceId, sentryEvent.contexts.trace!.traceId); + expect( + scopePropagationContext.spanId, sentryEvent.contexts.trace!.spanId); + }); + + test('keeps existing trace context if already present', () async { + final client = fixture.getSut(); + + final spanContext = SentrySpanContext( + traceId: SentryId.newId(), + spanId: SpanId.newId(), + operation: 'op.load', + ); + final scope = Scope(fixture.options); + scope.span = SentrySpan(fixture.tracer, spanContext, MockHub()); + + final propagationContext = scope.propagationContext; + final preExistingSpanContext = SentryTraceContext( + traceId: SentryId.newId(), + spanId: SpanId.newId(), + operation: 'op.load'); + + final sentryEvent = SentryEvent(); + sentryEvent.contexts.trace = preExistingSpanContext; + await client.captureEvent(sentryEvent, scope: scope); + + expect(fixture.transport.envelopes.length, 1); + expect( + preExistingSpanContext.traceId, sentryEvent.contexts.trace!.traceId); + expect(preExistingSpanContext.spanId, sentryEvent.contexts.trace!.spanId); + expect(spanContext.traceId, isNot(sentryEvent.contexts.trace!.traceId)); + expect(spanContext.spanId, isNot(sentryEvent.contexts.trace!.spanId)); + expect(propagationContext.traceId, + isNot(sentryEvent.contexts.trace!.traceId)); + expect( + propagationContext.spanId, isNot(sentryEvent.contexts.trace!.spanId)); + }); + + test( + 'uses propagation context on scope for trace header if no transaction is on scope', + () async { + final client = fixture.getSut(); + + final scope = Scope(fixture.options); + final scopePropagationContext = scope.propagationContext; + + final sentryEvent = SentryEvent(); + await client.captureEvent(sentryEvent, scope: scope); + + final capturedEnvelope = fixture.transport.envelopes.first; + final capturedTraceContext = capturedEnvelope.header.traceContext; + + expect(fixture.transport.envelopes.length, 1); + expect(scope.span, isNull); + expect(capturedTraceContext, isNotNull); + expect(scopePropagationContext.traceId, capturedTraceContext!.traceId); + }); + + test( + 'uses trace context on transaction for trace header if a transaction is on scope', + () async { + final client = fixture.getSut(); + + final spanContext = SentrySpanContext( + traceId: SentryId.newId(), + spanId: SpanId.newId(), + operation: 'op.load', + ); + final scope = Scope(fixture.options); + scope.span = SentrySpan(fixture.tracer, spanContext, MockHub()); + + final sentryEvent = SentryEvent(); + await client.captureEvent(sentryEvent, scope: scope); + + final capturedEnvelope = fixture.transport.envelopes.first; + final capturedTraceContext = capturedEnvelope.header.traceContext; + + expect(fixture.transport.envelopes.length, 1); + expect(scope.span, isNotNull); + expect(capturedTraceContext, isNotNull); + expect( + scope.span!.traceContext()!.traceId, capturedTraceContext!.traceId); + }); + test('should contain a transaction in the envelope', () async { try { throw StateError('Error'); diff --git a/dart/test/utils/tracing_utils_test.dart b/dart/test/utils/tracing_utils_test.dart index 39d6da6349..3dd47c3186 100644 --- a/dart/test/utils/tracing_utils_test.dart +++ b/dart/test/utils/tracing_utils_test.dart @@ -50,15 +50,25 @@ void main() { }); }); - group('$addSentryTraceHeader', () { + group('$addSentryTraceHeaderFromSpan', () { final fixture = Fixture(); + test('adds sentry trace header from span', () { + final headers = {}; + final sut = fixture.getSut(); + final sentryHeader = sut.toSentryTrace(); + + addSentryTraceHeaderFromSpan(sut, headers); + + expect(headers[sentryHeader.name], sentryHeader.value); + }); + test('adds sentry trace header', () { final headers = {}; final sut = fixture.getSut(); final sentryHeader = sut.toSentryTrace(); - addSentryTraceHeader(sut, headers); + addSentryTraceHeader(sentryHeader, headers); expect(headers[sentryHeader.name], sentryHeader.value); }); @@ -72,12 +82,22 @@ void main() { final sut = fixture.getSut(); final baggage = sut.toBaggageHeader(); - addBaggageHeader(sut, headers); + addBaggageHeader(sut.toBaggageHeader()!, headers); + + expect(headers[baggage!.name], baggage.value); + }); + + test('adds baggage header from span', () { + final headers = {}; + final sut = fixture.getSut(); + final baggage = sut.toBaggageHeader(); + + addBaggageHeaderFromSpan(sut, headers); expect(headers[baggage!.name], baggage.value); }); - test('appends baggage header', () { + test('appends baggage header from span', () { final headers = {}; final oldValue = 'other-vendor-value-1=foo'; headers['baggage'] = oldValue; @@ -87,7 +107,7 @@ void main() { final newValue = '$oldValue,${baggage!.value}'; - addBaggageHeader(sut, headers); + addBaggageHeaderFromSpan(sut, headers); expect(headers[baggage.name], newValue); }); @@ -102,7 +122,7 @@ void main() { final sut = fixture.getSut(); final baggage = sut.toBaggageHeader(); - addBaggageHeader(sut, headers); + addBaggageHeaderFromSpan(sut, headers); expect(headers[baggage!.name], 'other-vendor-value=foo,sentry-trace_id=${sut.context.traceId},sentry-public_key=abc,sentry-release=release,sentry-environment=environment,sentry-user_segment=segment,sentry-transaction=name,sentry-sample_rate=1'); diff --git a/dio/lib/src/tracing_client_adapter.dart b/dio/lib/src/tracing_client_adapter.dart index 506339e7d4..ab06c5b685 100644 --- a/dio/lib/src/tracing_client_adapter.dart +++ b/dio/lib/src/tracing_client_adapter.dart @@ -57,8 +57,8 @@ class TracingClientAdapter implements HttpClientAdapter { _hub.options.tracePropagationTargets, options.uri.toString(), )) { - addSentryTraceHeader(span, options.headers); - addBaggageHeader( + addSentryTraceHeaderFromSpan(span, options.headers); + addBaggageHeaderFromSpan( span, options.headers, // ignore: invalid_use_of_internal_member From 9442665979e3bafe587119385b84cc6157302810 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Fri, 8 Sep 2023 07:58:41 +0000 Subject: [PATCH 006/166] [starfish] add attributes to db spans data (#1629) * add db attibutes to spans * change variable names * update changelog * update changelog * update tests * update imports * update tests * remove unused import * couple dbName to db instance * format * use path pub * don't set dbName to null when db close() is called --- CHANGELOG.md | 4 ++ sqflite/lib/src/sentry_batch.dart | 9 ++- sqflite/lib/src/sentry_database.dart | 25 +++++++-- sqflite/lib/src/sentry_database_executor.dart | 20 ++++++- .../lib/src/sentry_sqflite_transaction.dart | 7 ++- .../sentry_database_span_attributes.dart | 12 ++++ sqflite/pubspec.yaml | 1 + sqflite/test/mocks/mocks.dart | 3 +- sqflite/test/sentry_batch_test.dart | 33 +++++++++++ sqflite/test/sentry_database_test.dart | 55 +++++++++++++++++++ ...ry_sqflite_database_factory_dart_test.dart | 4 +- sqflite/test/sentry_sqflite_test.dart | 1 + 12 files changed, 163 insertions(+), 11 deletions(-) create mode 100644 sqflite/lib/src/utils/sentry_database_span_attributes.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index 41447b7328..4e74ed4b33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Enhancements + +- Add db.system and db.name attributes to db spans data ([#1629](https://github.com/getsentry/sentry-dart/pull/1629)) + ### Features - Tracing without performance ([#1621](https://github.com/getsentry/sentry-dart/pull/1621)) diff --git a/sqflite/lib/src/sentry_batch.dart b/sqflite/lib/src/sentry_batch.dart index 95949125bd..150b1c51da 100644 --- a/sqflite/lib/src/sentry_batch.dart +++ b/sqflite/lib/src/sentry_batch.dart @@ -6,6 +6,7 @@ import 'package:sqflite/sqflite.dart'; import 'package:sqflite_common/src/sql_builder.dart'; import 'sentry_database.dart'; +import 'utils/sentry_database_span_attributes.dart'; /// A [Batch] wrapper that adds Sentry support. /// @@ -21,6 +22,7 @@ import 'sentry_database.dart'; class SentryBatch implements Batch { final Batch _batch; final Hub _hub; + final String? _dbName; // we don't clear the buffer because SqfliteBatch don't either final _buffer = StringBuffer(); @@ -36,7 +38,9 @@ class SentryBatch implements Batch { SentryBatch( this._batch, { @internal Hub? hub, - }) : _hub = hub ?? HubAdapter(); + @internal String? dbName, + }) : _hub = hub ?? HubAdapter(), + _dbName = dbName; @override Future> apply({bool? noResult, bool? continueOnError}) { @@ -47,8 +51,10 @@ class SentryBatch implements Batch { SentryDatabase.dbOp, description: _buffer.toString().trim(), ); + // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteBatch; + setDatabaseAttributeData(span, _dbName); try { final result = await _batch.apply( @@ -86,6 +92,7 @@ class SentryBatch implements Batch { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteBatch; + setDatabaseAttributeData(span, _dbName); try { final result = await _batch.commit( diff --git a/sqflite/lib/src/sentry_database.dart b/sqflite/lib/src/sentry_database.dart index f47551cff8..71147c3464 100644 --- a/sqflite/lib/src/sentry_database.dart +++ b/sqflite/lib/src/sentry_database.dart @@ -5,6 +5,8 @@ import 'package:sqflite/sqflite.dart'; import 'sentry_database_executor.dart'; import 'sentry_sqflite_transaction.dart'; import 'version.dart'; +import 'utils/sentry_database_span_attributes.dart'; +import 'package:path/path.dart' as p; /// A [Database] wrapper that adds Sentry support. /// @@ -31,6 +33,18 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { static const dbSqlQueryOp = 'db.sql.query'; static const _dbSqlOp = 'db.sql.transaction'; + @internal + // ignore: public_member_api_docs + static const dbSystemKey = 'db.system'; + @internal + // ignore: public_member_api_docs + static const dbSystem = 'sqlite'; + @internal + // ignore: public_member_api_docs + static const dbNameKey = 'db.name'; + @internal + // ignore: public_member_api_docs + String dbName; /// ```dart /// import 'package:sqflite/sqflite.dart'; @@ -43,7 +57,9 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { this._database, { @internal Hub? hub, }) : _hub = hub ?? HubAdapter(), - super(_database, hub: hub) { + dbName = p.basenameWithoutExtension(_database.path), + super(_database, + hub: hub, dbName: p.basenameWithoutExtension(_database.path)) { // ignore: invalid_use_of_internal_member final options = _hub.options; options.sdk.addIntegration('SentrySqfliteTracing'); @@ -113,12 +129,13 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabase; + setDatabaseAttributeData(span, dbName); Future newAction(Transaction txn) async { - final executor = - SentryDatabaseExecutor(txn, parentSpan: span, hub: _hub); + final executor = SentryDatabaseExecutor(txn, + parentSpan: span, hub: _hub, dbName: dbName); final sentrySqfliteTransaction = - SentrySqfliteTransaction(executor, hub: _hub); + SentrySqfliteTransaction(executor, hub: _hub, dbName: dbName); return await action(sentrySqfliteTransaction); } diff --git a/sqflite/lib/src/sentry_database_executor.dart b/sqflite/lib/src/sentry_database_executor.dart index b43d13c8d6..c232ca9e24 100644 --- a/sqflite/lib/src/sentry_database_executor.dart +++ b/sqflite/lib/src/sentry_database_executor.dart @@ -7,24 +7,28 @@ import 'package:sqflite_common/src/sql_builder.dart'; import 'sentry_batch.dart'; import 'sentry_database.dart'; +import 'utils/sentry_database_span_attributes.dart'; @internal // ignore: public_member_api_docs class SentryDatabaseExecutor implements DatabaseExecutor { final DatabaseExecutor _executor; final ISentrySpan? _parentSpan; + final String? _dbName; // ignore: public_member_api_docs SentryDatabaseExecutor( this._executor, { ISentrySpan? parentSpan, @internal Hub? hub, + @internal String? dbName, }) : _parentSpan = parentSpan, - _hub = hub ?? HubAdapter(); + _hub = hub ?? HubAdapter(), + _dbName = dbName; final Hub _hub; @override - Batch batch() => SentryBatch(_executor.batch(), hub: _hub); + Batch batch() => SentryBatch(_executor.batch(), hub: _hub, dbName: _dbName); @override Database get database => _executor.database; @@ -41,6 +45,7 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; + setDatabaseAttributeData(span, _dbName); try { final result = @@ -68,8 +73,10 @@ class SentryDatabaseExecutor implements DatabaseExecutor { SentryDatabase.dbSqlExecuteOp, description: sql, ); + span?.setData(SentryDatabase.dbSystemKey, SentryDatabase.dbSystem); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; + setDatabaseAttributeData(span, _dbName); try { await _executor.execute(sql, arguments); @@ -107,6 +114,7 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; + setDatabaseAttributeData(span, _dbName); try { final result = await _executor.insert( @@ -163,6 +171,7 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; + setDatabaseAttributeData(span, _dbName); try { final result = await _executor.query( @@ -226,6 +235,7 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; + setDatabaseAttributeData(span, _dbName); try { final result = await _executor.queryCursor( @@ -266,6 +276,7 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; + setDatabaseAttributeData(span, _dbName); try { final result = await _executor.rawDelete(sql, arguments); @@ -294,6 +305,7 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; + setDatabaseAttributeData(span, _dbName); try { final result = await _executor.rawInsert(sql, arguments); @@ -325,6 +337,7 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; + setDatabaseAttributeData(span, _dbName); try { final result = await _executor.rawQuery(sql, arguments); @@ -357,6 +370,7 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; + setDatabaseAttributeData(span, _dbName); try { final result = await _executor.rawQueryCursor( @@ -389,6 +403,7 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; + setDatabaseAttributeData(span, _dbName); try { final result = await _executor.rawUpdate(sql, arguments); @@ -430,6 +445,7 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; + setDatabaseAttributeData(span, _dbName); try { final result = await _executor.update( diff --git a/sqflite/lib/src/sentry_sqflite_transaction.dart b/sqflite/lib/src/sentry_sqflite_transaction.dart index c207023e9c..78c41b487d 100644 --- a/sqflite/lib/src/sentry_sqflite_transaction.dart +++ b/sqflite/lib/src/sentry_sqflite_transaction.dart @@ -21,16 +21,19 @@ import 'sentry_batch.dart'; class SentrySqfliteTransaction extends Transaction implements DatabaseExecutor { final DatabaseExecutor _executor; final Hub _hub; + final String? _dbName; // ignore: public_member_api_docs @internal SentrySqfliteTransaction( this._executor, { @internal Hub? hub, - }) : _hub = hub ?? HubAdapter(); + @internal String? dbName, + }) : _hub = hub ?? HubAdapter(), + _dbName = dbName; @override - Batch batch() => SentryBatch(_executor.batch(), hub: _hub); + Batch batch() => SentryBatch(_executor.batch(), hub: _hub, dbName: _dbName); @override Database get database => _executor.database; diff --git a/sqflite/lib/src/utils/sentry_database_span_attributes.dart b/sqflite/lib/src/utils/sentry_database_span_attributes.dart new file mode 100644 index 0000000000..119f2dd1b8 --- /dev/null +++ b/sqflite/lib/src/utils/sentry_database_span_attributes.dart @@ -0,0 +1,12 @@ +import 'package:sentry/sentry.dart'; + +import '../../sentry_sqflite.dart'; + +/// Sets the database attributes on the [span]. +/// It contains the database system and the database name. +void setDatabaseAttributeData(ISentrySpan? span, String? dbName) { + span?.setData(SentryDatabase.dbSystemKey, SentryDatabase.dbSystem); + if (dbName != null) { + span?.setData(SentryDatabase.dbNameKey, dbName); + } +} diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index db60eec2a5..55fa554d05 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -14,6 +14,7 @@ dependencies: sqflite: ^2.0.0 sqflite_common: ^2.0.0 meta: ^1.3.0 + path: ^1.8.3 dev_dependencies: lints: ^2.0.0 diff --git a/sqflite/test/mocks/mocks.dart b/sqflite/test/mocks/mocks.dart index 0a3115df74..3f0af8274c 100644 --- a/sqflite/test/mocks/mocks.dart +++ b/sqflite/test/mocks/mocks.dart @@ -33,7 +33,8 @@ ISentrySpan startTransactionShim( DatabaseExecutor, ], customMocks: [ - MockSpec(fallbackGenerators: {#startTransaction: startTransactionShim}) + MockSpec( + fallbackGenerators: {#startTransaction: startTransactionShim}), ], ) void main() {} diff --git a/sqflite/test/sentry_batch_test.dart b/sqflite/test/sentry_batch_test.dart index e01aa4d5c7..ce6f59e0d5 100644 --- a/sqflite/test/sentry_batch_test.dart +++ b/sqflite/test/sentry_batch_test.dart @@ -285,6 +285,39 @@ SELECT * FROM Product'''; await db.close(); }); + test('apply creates db span with dbSystem and dbName attributes', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.insert('Product', {'title': 'Product 1'}); + + await batch.apply(); + + final span = fixture.tracer.children.last; + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect( + span.data[SentryDatabase.dbNameKey], (db as SentryDatabase).dbName); + + await db.close(); + }); + + test('commit creates db span with dbSystem and dbName attributes', + () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.insert('Product', {'title': 'Product 1'}); + + await batch.commit(); + + final span = fixture.tracer.children.last; + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect( + span.data[SentryDatabase.dbNameKey], (db as SentryDatabase).dbName); + + await db.close(); + }); + tearDown(() { databaseFactory = sqfliteDatabaseFactoryDefault; }); diff --git a/sqflite/test/sentry_database_test.dart b/sqflite/test/sentry_database_test.dart index 3a76d8066e..e05bd2367c 100644 --- a/sqflite/test/sentry_database_test.dart +++ b/sqflite/test/sentry_database_test.dart @@ -84,6 +84,8 @@ void main() { expect(span.context.operation, 'db.sql.transaction'); expect(span.context.description, 'Transaction DB: $inMemoryDatabasePath'); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, // ignore: invalid_use_of_internal_member @@ -109,6 +111,9 @@ void main() { ); expect(insertSpan.context.parentSpanId, trSpan.context.spanId); expect(insertSpan.status, SpanStatus.ok()); + expect( + insertSpan.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(insertSpan.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( insertSpan.origin, @@ -130,6 +135,34 @@ void main() { await db.close(); }); + test('opening db sets currentDbName with :memory:', () async { + final db = await fixture.getSut(); + + expect(db.dbName, ':memory:'); + + await db.close(); + }); + + test('opening db sets currentDbName with db file without extension', + () async { + final db = await fixture.getSut( + database: await openDatabase('path/database/mydatabase.db'), + execute: false, + ); + + expect(db.dbName, 'mydatabase'); + + await db.close(); + }); + + test('closing db sets currentDbName to null', () async { + final db = await fixture.getSut(); + + expect(db.dbName, inMemoryDatabasePath); + + await db.close(); + }); + tearDown(() { databaseFactory = sqfliteDatabaseFactoryDefault; }); @@ -212,6 +245,8 @@ void main() { expect(span.context.operation, 'db.sql.execute'); expect(span.context.description, 'DELETE FROM Product'); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, @@ -231,6 +266,8 @@ void main() { expect(span.context.operation, 'db.sql.execute'); expect(span.context.description, 'DELETE FROM Product'); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, @@ -253,6 +290,8 @@ void main() { 'INSERT INTO Product (title) VALUES (?)', ); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, @@ -272,6 +311,8 @@ void main() { expect(span.context.operation, 'db.sql.query'); expect(span.context.description, 'SELECT * FROM Product'); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, @@ -291,6 +332,8 @@ void main() { expect(span.context.operation, 'db.sql.query'); expect(span.context.description, 'SELECT * FROM Product'); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, @@ -310,6 +353,8 @@ void main() { expect(span.context.operation, 'db.sql.execute'); expect(span.context.description, 'DELETE FROM Product'); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, @@ -333,6 +378,8 @@ void main() { 'INSERT INTO Product (title) VALUES (?)', ); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, @@ -352,6 +399,8 @@ void main() { expect(span.context.operation, 'db.sql.query'); expect(span.context.description, 'SELECT * FROM Product'); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, @@ -371,6 +420,8 @@ void main() { expect(span.context.operation, 'db.sql.query'); expect(span.context.description, 'SELECT * FROM Product'); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, @@ -390,6 +441,8 @@ void main() { expect(span.context.operation, 'db.sql.execute'); expect(span.context.description, 'UPDATE Product SET title = ?'); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, @@ -409,6 +462,8 @@ void main() { expect(span.context.operation, 'db.sql.execute'); expect(span.context.description, 'UPDATE Product SET title = ?'); expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( span.origin, diff --git a/sqflite/test/sentry_sqflite_database_factory_dart_test.dart b/sqflite/test/sentry_sqflite_database_factory_dart_test.dart index 61f8aaa9ca..d2ed2e9fb5 100644 --- a/sqflite/test/sentry_sqflite_database_factory_dart_test.dart +++ b/sqflite/test/sentry_sqflite_database_factory_dart_test.dart @@ -38,6 +38,7 @@ void main() { final db = await openDatabase(inMemoryDatabasePath); expect(db is SentryDatabase, true); + expect((db as SentryDatabase).dbName, inMemoryDatabasePath); await db.close(); }); @@ -56,10 +57,11 @@ void main() { () async { final db = await openDatabase(inMemoryDatabasePath); + expect((db as SentryDatabase).dbName, inMemoryDatabasePath); + final span = fixture.tracer.children.last; expect(span.context.operation, 'db'); expect(span.context.description, 'Open DB: $inMemoryDatabasePath'); - expect(span.context.description, 'Open DB: $inMemoryDatabasePath'); expect( span.origin, diff --git a/sqflite/test/sentry_sqflite_test.dart b/sqflite/test/sentry_sqflite_test.dart index 54ff24232d..ff75d67e6d 100644 --- a/sqflite/test/sentry_sqflite_test.dart +++ b/sqflite/test/sentry_sqflite_test.dart @@ -97,6 +97,7 @@ void main() { expect(span.status, SpanStatus.ok()); // ignore: invalid_use_of_internal_member expect(span.origin, SentryTraceOrigins.autoDbSqfliteOpenDatabase); + expect((db as SentryDatabase).dbName, inMemoryDatabasePath); await db.close(); }); From 4ad2751b7824f5312c9ddd3374520e03aaf107b3 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Fri, 8 Sep 2023 09:44:15 +0000 Subject: [PATCH 007/166] [starfish] add http.request.method attribute to http spans (#1633) * add http.request.method to http spans * update changelog --- CHANGELOG.md | 1 + dart/lib/src/http_client/tracing_client.dart | 2 +- dart/test/http_client/tracing_client_test.dart | 2 +- dio/lib/src/sentry_transformer.dart | 4 ++-- dio/lib/src/tracing_client_adapter.dart | 2 +- dio/test/sentry_transformer_test.dart | 8 ++++---- dio/test/tracing_client_adapter_test.dart | 2 +- 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e74ed4b33..41a9161046 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Enhancements +- Add http.request.method attribute to http spans data ([#1633](https://github.com/getsentry/sentry-dart/pull/1633)) - Add db.system and db.name attributes to db spans data ([#1629](https://github.com/getsentry/sentry-dart/pull/1629)) ### Features diff --git a/dart/lib/src/http_client/tracing_client.dart b/dart/lib/src/http_client/tracing_client.dart index 4a469d9d3c..95627724c3 100644 --- a/dart/lib/src/http_client/tracing_client.dart +++ b/dart/lib/src/http_client/tracing_client.dart @@ -41,7 +41,7 @@ class TracingClient extends BaseClient { span = null; } - span?.setData('http.method', request.method); + span?.setData('http.request.method', request.method); urlDetails?.applyToSpan(span); StreamedResponse? response; diff --git a/dart/test/http_client/tracing_client_test.dart b/dart/test/http_client/tracing_client_test.dart index 0e34f7da90..cc48d5cb37 100644 --- a/dart/test/http_client/tracing_client_test.dart +++ b/dart/test/http_client/tracing_client_test.dart @@ -38,7 +38,7 @@ void main() { expect(span.status, SpanStatus.ok()); expect(span.context.operation, 'http.client'); expect(span.context.description, 'GET https://example.com'); - expect(span.data['http.method'], 'GET'); + expect(span.data['http.request.method'], 'GET'); expect(span.data['url'], 'https://example.com'); expect(span.data['http.query'], 'foo=bar'); expect(span.data['http.fragment'], 'baz'); diff --git a/dio/lib/src/sentry_transformer.dart b/dio/lib/src/sentry_transformer.dart index 5b43afbfeb..f5fb7c8ac4 100644 --- a/dio/lib/src/sentry_transformer.dart +++ b/dio/lib/src/sentry_transformer.dart @@ -27,7 +27,7 @@ class SentryTransformer implements Transformer { description: description, ); - span?.setData('http.method', options.method); + span?.setData('http.request.method', options.method); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoHttpDioTransformer; @@ -65,7 +65,7 @@ class SentryTransformer implements Transformer { description: description, ); - span?.setData('http.method', options.method); + span?.setData('http.request.method', options.method); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoHttpDioTransformer; diff --git a/dio/lib/src/tracing_client_adapter.dart b/dio/lib/src/tracing_client_adapter.dart index ab06c5b685..19a003b633 100644 --- a/dio/lib/src/tracing_client_adapter.dart +++ b/dio/lib/src/tracing_client_adapter.dart @@ -46,7 +46,7 @@ class TracingClientAdapter implements HttpClientAdapter { span = null; } - span?.setData('http.method', options.method); + span?.setData('http.request.method', options.method); urlDetails?.applyToSpan(span); ResponseBody? response; diff --git a/dio/test/sentry_transformer_test.dart b/dio/test/sentry_transformer_test.dart index 492f6e9b23..ffa793c791 100644 --- a/dio/test/sentry_transformer_test.dart +++ b/dio/test/sentry_transformer_test.dart @@ -39,7 +39,7 @@ void main() { expect(span.status, SpanStatus.ok()); expect(span.context.operation, 'serialize.http.client'); expect(span.context.description, 'GET https://example.com'); - expect(span.data['http.method'], 'GET'); + expect(span.data['http.request.method'], 'GET'); expect(span.data['url'], 'https://example.com'); expect(span.data['http.query'], 'foo=bar'); expect(span.data['http.fragment'], 'baz'); @@ -67,7 +67,7 @@ void main() { expect(span.status, SpanStatus.internalError()); expect(span.context.operation, 'serialize.http.client'); expect(span.context.description, 'GET https://example.com'); - expect(span.data['http.method'], 'GET'); + expect(span.data['http.request.method'], 'GET'); expect(span.data['url'], 'https://example.com'); expect(span.data['http.query'], 'foo=bar'); expect(span.data['http.fragment'], 'baz'); @@ -96,7 +96,7 @@ void main() { expect(span.status, SpanStatus.ok()); expect(span.context.operation, 'serialize.http.client'); expect(span.context.description, 'GET https://example.com'); - expect(span.data['http.method'], 'GET'); + expect(span.data['http.request.method'], 'GET'); expect(span.data['url'], 'https://example.com'); expect(span.data['http.query'], 'foo=bar'); expect(span.data['http.fragment'], 'baz'); @@ -126,7 +126,7 @@ void main() { expect(span.status, SpanStatus.internalError()); expect(span.context.operation, 'serialize.http.client'); expect(span.context.description, 'GET https://example.com'); - expect(span.data['http.method'], 'GET'); + expect(span.data['http.request.method'], 'GET'); expect(span.data['url'], 'https://example.com'); expect(span.data['http.query'], 'foo=bar'); expect(span.data['http.fragment'], 'baz'); diff --git a/dio/test/tracing_client_adapter_test.dart b/dio/test/tracing_client_adapter_test.dart index e0d07d527d..b758c5a765 100644 --- a/dio/test/tracing_client_adapter_test.dart +++ b/dio/test/tracing_client_adapter_test.dart @@ -43,7 +43,7 @@ void main() { expect(span.status, SpanStatus.ok()); expect(span.context.operation, 'http.client'); expect(span.context.description, 'GET https://example.com'); - expect(span.data['http.method'], 'GET'); + expect(span.data['http.request.method'], 'GET'); expect(span.data['url'], 'https://example.com'); expect(span.data['http.query'], 'foo=bar'); expect(span.data['http.fragment'], 'baz'); From 6852b3397776a87a7e0deb61ca975573e27b3749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 11 Sep 2023 08:10:16 +0000 Subject: [PATCH 008/166] Fix Android & iOS CI issues (#1627) --- .github/workflows/flutter_test.yml | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 375db90f57..15305acb7d 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -59,19 +59,20 @@ jobs: path: | ~/.android/avd/* ~/.android/adb* - key: avd-21 + key: avd-31 - name: create AVD and generate snapshot for caching if: steps.avd-cache.outputs.cache-hit != 'true' uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b #pin@v2.28.0 with: working-directory: ./flutter/example - api-level: 21 - force-avd-creation: false - emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: false - arch: x86_64 + api-level: 31 profile: Nexus 6 + arch: x86_64 + force-avd-creation: false + avd-name: macOS-avd-x86_64-31 + emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: true script: echo 'Generated AVD snapshot for caching.' - name: build apk @@ -82,24 +83,26 @@ jobs: uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b #pin@v2.28.0 with: working-directory: ./flutter/example/android - api-level: 21 + api-level: 31 + profile: Nexus 6 + arch: x86_64 force-avd-creation: false + avd-name: macOS-avd-x86_64-31 emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true - arch: x86_64 - profile: Nexus 6 script: ./gradlew testDebugUnitTest - name: launch android emulator & run android integration test uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b #pin@v2.28.0 with: working-directory: ./flutter/example - api-level: 21 + api-level: 31 + profile: Nexus 6 + arch: x86_64 force-avd-creation: false + avd-name: macOS-avd-x86_64-31 emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true - arch: x86_64 - profile: Nexus 6 script: flutter test integration_test/integration_test.dart --verbose test-ios: @@ -134,7 +137,7 @@ jobs: - name: launch ios simulator id: sim run: | - simulator_id=$(xcrun simctl create sentryPhone com.apple.CoreSimulator.SimDeviceType.iPhone-14 com.apple.CoreSimulator.SimRuntime.iOS-16-2) + simulator_id=$(xcrun simctl create sentryPhone com.apple.CoreSimulator.SimDeviceType.iPhone-14 com.apple.CoreSimulator.SimRuntime.iOS-16-4) echo "SIMULATOR_ID=${simulator_id}" >> "$GITHUB_OUTPUT" xcrun simctl boot ${simulator_id} # Disable flutter integration tests because of flaky execution From c9d3212f2912cb01a1648be804a482edeee6b791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 11 Sep 2023 10:49:21 +0000 Subject: [PATCH 009/166] Disable scope sync for cloned scopes (#1628) --- CHANGELOG.md | 1 + dart/lib/src/scope.dart | 6 +++-- dart/test/scope_test.dart | 8 +++++++ dio/test/dio_event_processor_test.dart | 24 +++++++++---------- dio/test/failed_request_interceptor_test.dart | 2 +- dio/test/mocks.dart | 2 +- 6 files changed, 27 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41a9161046..cc97755793 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ - Normalize data properties of `SentryUser` and `Breadcrumb` before sending over method channel ([#1591](https://github.com/getsentry/sentry-dart/pull/1591)) - Fixing memory leak issue in SentryFlutterPlugin (Android Plugin) ([#1588](https://github.com/getsentry/sentry-dart/pull/1588)) +- Disable scope sync for cloned scopes ([#1628](https://github.com/getsentry/sentry-dart/pull/1628)) ### Dependencies diff --git a/dart/lib/src/scope.dart b/dart/lib/src/scope.dart index aa37d67993..0a63badc92 100644 --- a/dart/lib/src/scope.dart +++ b/dart/lib/src/scope.dart @@ -142,6 +142,7 @@ class Scope { List.unmodifiable(_eventProcessors); final SentryOptions _options; + bool _enableScopeSync = true; final List _attachments = []; @@ -423,7 +424,8 @@ class Scope { ..level = level ..fingerprint = List.from(fingerprint) .._transaction = _transaction - ..span = span; + ..span = span + .._enableScopeSync = false; clone._setUserSync(user); @@ -461,7 +463,7 @@ class Scope { } Future _callScopeObservers(_OnScopeObserver action) async { - if (_options.enableScopeSync) { + if (_options.enableScopeSync && _enableScopeSync) { for (final scopeObserver in _options.scopeObservers) { await action(scopeObserver); } diff --git a/dart/test/scope_test.dart b/dart/test/scope_test.dart index e8d2e08bf9..6f21e5e63c 100644 --- a/dart/test/scope_test.dart +++ b/dart/test/scope_test.dart @@ -375,6 +375,14 @@ void main() { expect(1, fixture.mockScopeObserver.numberOfRemoveTagCalls); }); + test('clone has disabled scope sync', () async { + final sut = fixture.getSut(scopeObserver: fixture.mockScopeObserver); + final clone = sut.clone(); + + await clone.setContexts("fixture-contexts-key", "fixture-contexts-value"); + expect(0, fixture.mockScopeObserver.numberOfSetContextsCalls); + }); + group('Scope apply', () { final scopeUser = SentryUser( id: '800', diff --git a/dio/test/dio_event_processor_test.dart b/dio/test/dio_event_processor_test.dart index af45d0c681..3cd060ea8e 100644 --- a/dio/test/dio_event_processor_test.dart +++ b/dio/test/dio_event_processor_test.dart @@ -67,7 +67,7 @@ void main() { throwable: throwable, exceptions: [ fixture.sentryError(throwable), - fixture.sentryError(dioError) + fixture.sentryError(dioError), ], ); final processedEvent = sut.apply(event) as SentryEvent; @@ -96,7 +96,7 @@ void main() { throwable: throwable, exceptions: [ fixture.sentryError(throwable), - fixture.sentryError(dioError) + fixture.sentryError(dioError), ], ); final processedEvent = sut.apply(event) as SentryEvent; @@ -125,7 +125,7 @@ void main() { throwable: throwable, exceptions: [ fixture.sentryError(throwable), - fixture.sentryError(dioError) + fixture.sentryError(dioError), ], ); final processedEvent = sut.apply(event) as SentryEvent; @@ -177,7 +177,7 @@ void main() { throwable: throwable, exceptions: [ fixture.sentryError(throwable), - fixture.sentryError(dioError) + fixture.sentryError(dioError), ], ); final processedEvent = sut.apply(event) as SentryEvent; @@ -207,7 +207,7 @@ void main() { data: 'foobar', headers: Headers.fromMap(>{ 'foo': ['bar'], - 'set-cookie': ['foo=bar'] + 'set-cookie': ['foo=bar'], }), requestOptions: request, isRedirect: true, @@ -219,7 +219,7 @@ void main() { throwable: throwable, exceptions: [ fixture.sentryError(throwable), - fixture.sentryError(dioError) + fixture.sentryError(dioError), ], ); final processedEvent = sut.apply(event) as SentryEvent; @@ -248,7 +248,7 @@ void main() { response: Response( data: 'foobar', headers: Headers.fromMap(>{ - 'foo': ['bar'] + 'foo': ['bar'], }), requestOptions: request, isRedirect: true, @@ -260,7 +260,7 @@ void main() { throwable: throwable, exceptions: [ fixture.sentryError(throwable), - fixture.sentryError(dioError) + fixture.sentryError(dioError), ], ); final processedEvent = sut.apply(event) as SentryEvent; @@ -320,7 +320,7 @@ void main() { throwable: throwable, exceptions: [ fixture.sentryError(throwable), - fixture.sentryError(dioError) + fixture.sentryError(dioError), ], ); final processedEvent = sut.apply(event) as SentryEvent; @@ -338,7 +338,7 @@ void main() { final dataByType = { ResponseType.plain: ['plain'], ResponseType.bytes: [ - [1337] + [1337], ], ResponseType.json: [ 9001, @@ -347,7 +347,7 @@ void main() { true, ['list'], {'map-key': 'map-value'}, - ] + ], }; for (final entry in dataByType.entries) { @@ -375,7 +375,7 @@ void main() { throwable: throwable, exceptions: [ fixture.sentryError(throwable), - fixture.sentryError(dioError) + fixture.sentryError(dioError), ], ); final processedEvent = sut.apply(event) as SentryEvent; diff --git a/dio/test/failed_request_interceptor_test.dart b/dio/test/failed_request_interceptor_test.dart index 80eede8803..e7fb5a63e1 100644 --- a/dio/test/failed_request_interceptor_test.dart +++ b/dio/test/failed_request_interceptor_test.dart @@ -113,7 +113,7 @@ class Fixture { FailedRequestInterceptor getSut({ List failedRequestStatusCodes = const [ - SentryStatusCode.defaultRange() + SentryStatusCode.defaultRange(), ], List failedRequestTargets = const ['.*'], }) { diff --git a/dio/test/mocks.dart b/dio/test/mocks.dart index 83454cbfb3..5ed6dcd00a 100644 --- a/dio/test/mocks.dart +++ b/dio/test/mocks.dart @@ -42,7 +42,7 @@ final fakeEvent = SentryEvent( type: 'navigation', data: {'screen': 'MainActivity', 'state': 'created'}, level: SentryLevel.info, - ) + ), ], contexts: Contexts( operatingSystem: const SentryOperatingSystem( From df7b25720f989e3ed903224d4427ddd69543d3a1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 11:27:45 +0000 Subject: [PATCH 010/166] chore: update flutter/scripts/update-android.sh to 6.29.0 (#1630) Co-authored-by: GitHub --- CHANGELOG.md | 6 +++--- flutter/android/build.gradle | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc97755793..a7b0e579bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,9 +19,9 @@ ### Dependencies -- Bump Android SDK from v6.25.2 to v6.28.0 ([#1586](https://github.com/getsentry/sentry-dart/pull/1586)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6280) - - [diff](https://github.com/getsentry/sentry-java/compare/6.25.2...6.28.0) +- Bump Android SDK from v6.25.2 to v6.29.0 ([#1586](https://github.com/getsentry/sentry-dart/pull/1586), [#1630](https://github.com/getsentry/sentry-dart/pull/1630)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6290) + - [diff](https://github.com/getsentry/sentry-java/compare/6.25.2...6.29.0) - Bump Cocoa SDK from v8.9.1 to v8.11.0 ([#1584](https://github.com/getsentry/sentry-dart/pull/1584), [#1606](https://github.com/getsentry/sentry-dart/pull/1606), [#1626](https://github.com/getsentry/sentry-dart/pull/1626)) - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8110) - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.9.1...8.11.0) diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index 6773e4fd96..47619a3105 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -60,7 +60,7 @@ android { } dependencies { - api 'io.sentry:sentry-android:6.28.0' + api 'io.sentry:sentry-android:6.29.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // Required -- JUnit 4 framework From 9d43f714e4f8a4fdf68e41799b520c6f7d0514b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 11 Sep 2023 11:42:40 +0000 Subject: [PATCH 011/166] Discard empty stack frames (#1625) --- CHANGELOG.md | 1 + flutter/lib/src/jvm/jvm_exception.dart | 8 +++-- flutter/test/jvm/jvm_exception_test.dart | 30 ++++++++++++++++++- .../test/sentry_navigator_observer_test.dart | 1 + sqflite/lib/src/sentry_database.dart | 15 +++++++--- sqflite/test/mocks/mocks.dart | 3 +- sqflite/test/sentry_batch_test.dart | 8 +++-- sqflite/test/sentry_database_test.dart | 4 ++- 8 files changed, 59 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7b0e579bc..23aef939fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ - Normalize data properties of `SentryUser` and `Breadcrumb` before sending over method channel ([#1591](https://github.com/getsentry/sentry-dart/pull/1591)) - Fixing memory leak issue in SentryFlutterPlugin (Android Plugin) ([#1588](https://github.com/getsentry/sentry-dart/pull/1588)) +- Discard empty stack frames ([#1625](https://github.com/getsentry/sentry-dart/pull/1625)) - Disable scope sync for cloned scopes ([#1628](https://github.com/getsentry/sentry-dart/pull/1628)) ### Dependencies diff --git a/flutter/lib/src/jvm/jvm_exception.dart b/flutter/lib/src/jvm/jvm_exception.dart index adaf71cac1..352092b1ed 100644 --- a/flutter/lib/src/jvm/jvm_exception.dart +++ b/flutter/lib/src/jvm/jvm_exception.dart @@ -256,8 +256,12 @@ class JvmException { frames.add(trimmed); } - final thisExceptionFrames = - thisException.map((e) => JvmFrame.parse(e)).toList(growable: false); + final thisExceptionFrames = thisException + // Sometimes stringified exceptions from the native side have + // empty lines. Discard those! + .where((line) => line.trim().isNotEmpty) + .map((e) => JvmFrame.parse(e)) + .toList(growable: false); final suppressedExceptions = supressed .map((e) => JvmException.parse(e.join(_newLine))) diff --git a/flutter/test/jvm/jvm_exception_test.dart b/flutter/test/jvm/jvm_exception_test.dart index 3202da097d..de8a3b4e29 100644 --- a/flutter/test/jvm/jvm_exception_test.dart +++ b/flutter/test/jvm/jvm_exception_test.dart @@ -40,7 +40,7 @@ void main() { 'Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]'); expect(thirdCause.thread, null); expect(thirdCause.type, 'java.sql.SQLException'); - expect(thirdCause.stackTrace.length, 6); + expect(thirdCause.stackTrace.length, 5); expect(thirdCause.causes, null); expect(thirdCause.suppressed, null); }); @@ -85,6 +85,16 @@ void main() { expect(exception.stackTrace[0].fileName, 'StandardMessageCodec.java'); expect(exception.stackTrace[0].lineNumber, 292); }); + + test('parse drops empty frames', () { + final exception = JvmException.parse(platformExceptionWithEmptyStackFrames); + expect(exception.stackTrace.length, 13); + expect(exception.stackTrace.last.className, + 'com.android.internal.os.ZygoteInit'); + expect(exception.stackTrace.last.fileName, 'ZygoteInit.java'); + expect(exception.stackTrace.last.method, 'main'); + expect(exception.stackTrace.last.lineNumber, 936); + }); } const javaExceptionWithCauses = ''' @@ -194,3 +204,21 @@ java.lang.IllegalArgumentException: Unsupported value: '[Ljava.lang.StackTraceEl at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit\$MethodAndArgsCaller.run(RuntimeInit.java:556) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1037)'''; + +const platformExceptionWithEmptyStackFrames = ''' +java.lang.RuntimeException: Catch this platform exception! + at io.sentry.samples.flutter.MainActivity\$configureFlutterEngine\$1.onMethodCall(MainActivity.kt:40) + at io.flutter.plugin.common.MethodChannel\$IncomingMethodCallHandler.onMessage(MethodChannel.java:258) + at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295) + at io.flutter.embedding.engine.dart.DartMessenger.lambda\$dispatchMessageToQueue\$0\$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322) + at io.flutter.embedding.engine.dart.DartMessenger\$\$ExternalSyntheticLambda0.run(Unknown Source:12) + at android.os.Handler.handleCallback(Handler.java:942) + at android.os.Handler.dispatchMessage(Handler.java:99) + at android.os.Looper.loopOnce(Looper.java:201) + at android.os.Looper.loop(Looper.java:288) + at android.app.ActivityThread.main(ActivityThread.java:7872) + at java.lang.reflect.Method.invoke + at com.android.internal.os.RuntimeInit\$MethodAndArgsCaller.run(RuntimeInit.java:548) + at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) + + '''; diff --git a/flutter/test/sentry_navigator_observer_test.dart b/flutter/test/sentry_navigator_observer_test.dart index d3871b4390..d4c2499efc 100644 --- a/flutter/test/sentry_navigator_observer_test.dart +++ b/flutter/test/sentry_navigator_observer_test.dart @@ -756,6 +756,7 @@ class _MockHub extends MockHub { @override final options = SentryOptions(dsn: fakeDsn); + @override late final scope = Scope(options); @override diff --git a/sqflite/lib/src/sentry_database.dart b/sqflite/lib/src/sentry_database.dart index 71147c3464..d148eb7ded 100644 --- a/sqflite/lib/src/sentry_database.dart +++ b/sqflite/lib/src/sentry_database.dart @@ -58,8 +58,11 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { @internal Hub? hub, }) : _hub = hub ?? HubAdapter(), dbName = p.basenameWithoutExtension(_database.path), - super(_database, - hub: hub, dbName: p.basenameWithoutExtension(_database.path)) { + super( + _database, + hub: hub, + dbName: p.basenameWithoutExtension(_database.path), + ) { // ignore: invalid_use_of_internal_member final options = _hub.options; options.sdk.addIntegration('SentrySqfliteTracing'); @@ -132,8 +135,12 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { setDatabaseAttributeData(span, dbName); Future newAction(Transaction txn) async { - final executor = SentryDatabaseExecutor(txn, - parentSpan: span, hub: _hub, dbName: dbName); + final executor = SentryDatabaseExecutor( + txn, + parentSpan: span, + hub: _hub, + dbName: dbName, + ); final sentrySqfliteTransaction = SentrySqfliteTransaction(executor, hub: _hub, dbName: dbName); diff --git a/sqflite/test/mocks/mocks.dart b/sqflite/test/mocks/mocks.dart index 3f0af8274c..bcafb94302 100644 --- a/sqflite/test/mocks/mocks.dart +++ b/sqflite/test/mocks/mocks.dart @@ -34,7 +34,8 @@ ISentrySpan startTransactionShim( ], customMocks: [ MockSpec( - fallbackGenerators: {#startTransaction: startTransactionShim}), + fallbackGenerators: {#startTransaction: startTransactionShim}, + ), ], ) void main() {} diff --git a/sqflite/test/sentry_batch_test.dart b/sqflite/test/sentry_batch_test.dart index ce6f59e0d5..e3b24d811a 100644 --- a/sqflite/test/sentry_batch_test.dart +++ b/sqflite/test/sentry_batch_test.dart @@ -296,7 +296,9 @@ SELECT * FROM Product'''; final span = fixture.tracer.children.last; expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); expect( - span.data[SentryDatabase.dbNameKey], (db as SentryDatabase).dbName); + span.data[SentryDatabase.dbNameKey], + (db as SentryDatabase).dbName, + ); await db.close(); }); @@ -313,7 +315,9 @@ SELECT * FROM Product'''; final span = fixture.tracer.children.last; expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); expect( - span.data[SentryDatabase.dbNameKey], (db as SentryDatabase).dbName); + span.data[SentryDatabase.dbNameKey], + (db as SentryDatabase).dbName, + ); await db.close(); }); diff --git a/sqflite/test/sentry_database_test.dart b/sqflite/test/sentry_database_test.dart index e05bd2367c..5c954426bb 100644 --- a/sqflite/test/sentry_database_test.dart +++ b/sqflite/test/sentry_database_test.dart @@ -112,7 +112,9 @@ void main() { expect(insertSpan.context.parentSpanId, trSpan.context.spanId); expect(insertSpan.status, SpanStatus.ok()); expect( - insertSpan.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + insertSpan.data[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); expect(insertSpan.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); expect( From f124efcd4ff650cc35f47d5efb6572d52335b785 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 11 Sep 2023 11:43:09 +0000 Subject: [PATCH 012/166] Introduce workflow dispatch action for`format` & `fix --apply` (#1575) --- .github/workflows/analyze.yml | 14 ++------ .github/workflows/format-and-fix.yml | 54 ++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/format-and-fix.yml diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 2ebce36cac..9b418a78d9 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -24,7 +24,6 @@ jobs: access_token: ${{ github.token }} analyze: - name: Format, fix & analyze Code if: ${{ !startsWith(github.ref, 'refs/heads/release/') }} runs-on: ubuntu-latest timeout-minutes: 20 @@ -39,17 +38,8 @@ jobs: if: ${{ inputs.sdk == 'flutter' }} - run: ${{ inputs.sdk }} pub get - - - run: dart format . - - - run: dart fix --apply - - # actions/checkout fetches only a single commit in a detached HEAD state. Therefore - # we need to pass the current branch, otherwise we can't commit the changes. - # GITHUB_HEAD_REF is the name of the head branch. GitHub Actions only sets this for PRs. - - run: ../scripts/commit-formatted-code.sh $GITHUB_HEAD_REF - if: env.GITHUB_HEAD_REF != null - + - run: dart format --set-exit-if-changed ./ + - name: dart analyze uses: invertase/github-action-dart-analyzer@1cda5922c6369263b1c7e2fbe281f69704f4d63e # pin@v2.0.0 with: diff --git a/.github/workflows/format-and-fix.yml b/.github/workflows/format-and-fix.yml new file mode 100644 index 0000000000..fa77a33098 --- /dev/null +++ b/.github/workflows/format-and-fix.yml @@ -0,0 +1,54 @@ +on: + workflow_dispatch: + +jobs: + cancel-previous-workflow: + runs-on: ubuntu-latest + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + with: + access_token: ${{ github.token }} + + format-and-fix: + name: Format & fix code + if: ${{ !startsWith(github.ref, 'refs/heads/release/') }} + runs-on: ubuntu-latest + timeout-minutes: 20 + strategy: + matrix: + package: [ + {name: dart, sdk: dart}, + {name: dio, sdk: dart}, + {name: file, sdk: dart}, + {name: flutter, sdk: flutter}, + {name: logging, sdk: dart}, + {name: sqflite, sdk: flutter}, + ] + defaults: + run: + working-directory: ${{ matrix.package.name }} + steps: + - uses: actions/checkout@v3 + - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + if: ${{ matrix.package.sdk == 'dart' }} + - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + if: ${{ matrix.package.sdk == 'flutter' }} + + - run: ${{ matrix.package.sdk }} pub get + + - run: dart format . + + - run: dart fix --apply + + # Source: https://stackoverflow.com/a/58035262 + - name: Extract branch name + shell: bash + run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT + id: extract_branch + + # actions/checkout fetches only a single commit in a detached HEAD state. Therefore + # we need to pass the current branch, otherwise we can't commit the changes. + # GITHUB_HEAD_REF is the name of the head branch. GitHub Actions only sets this for PRs. + - name: Commit & push + run: ./scripts/commit-formatted-code.sh ${{ steps.extract_branch.outputs.branch }} From 7c822cd28034ede1013932945b1b11c919ae9860 Mon Sep 17 00:00:00 2001 From: Ivan Dlugos <6349682+vaind@users.noreply.github.com> Date: Tue, 12 Sep 2023 10:31:11 +0200 Subject: [PATCH 013/166] feat/refactor: add cocoa FFI binding (#1631) --- .github/workflows/update-deps.yml | 3 +- flutter/.gitignore | 1 + flutter/ffi-cocoa.yaml | 16 + flutter/lib/src/sentry_cocoa.dart | 71521 +++++++++++++++++++ flutter/scripts/generate-cocoa-bindings.sh | 38 + flutter/scripts/update-cocoa.sh | 1 + 6 files changed, 71579 insertions(+), 1 deletion(-) create mode 100644 flutter/ffi-cocoa.yaml create mode 100644 flutter/lib/src/sentry_cocoa.dart create mode 100755 flutter/scripts/generate-cocoa-bindings.sh diff --git a/.github/workflows/update-deps.yml b/.github/workflows/update-deps.yml index 233afc3d69..953c63cf49 100644 --- a/.github/workflows/update-deps.yml +++ b/.github/workflows/update-deps.yml @@ -3,7 +3,7 @@ name: Update Dependencies on: # Run every day. schedule: - - cron: '0 3 * * *' + - cron: "0 3 * * *" # And on on every PR merge so we get the updated dependencies ASAP, and to make sure the changelog doesn't conflict. push: branches: @@ -23,6 +23,7 @@ jobs: with: path: flutter/scripts/update-cocoa.sh name: Cocoa SDK + runs-on: macos-latest secrets: api-token: ${{ secrets.CI_DEPLOY_KEY }} diff --git a/flutter/.gitignore b/flutter/.gitignore index f0f719b22d..068bf84155 100644 --- a/flutter/.gitignore +++ b/flutter/.gitignore @@ -10,3 +10,4 @@ build/ .cxx/ .vscode/launch.json +cocoa_bindings_temp diff --git a/flutter/ffi-cocoa.yaml b/flutter/ffi-cocoa.yaml new file mode 100644 index 0000000000..5fdf4330c5 --- /dev/null +++ b/flutter/ffi-cocoa.yaml @@ -0,0 +1,16 @@ +name: SentryCocoa +description: Sentry Cocoa SDK FFI binding. +language: objc +output: lib/src/sentry_cocoa.dart +headers: + entry-points: + - ./cocoa_bindings_temp/Sentry.framework/Versions/A/PrivateHeaders/PrivateSentrySDKOnly.h + - ./cocoa_bindings_temp/Sentry.framework/Versions/A/Headers/SentryId.h +compiler-opts: + - -DSENTRY_TARGET_PROFILING_SUPPORTED=1 + - -DCOCOAPODS=1 +exclude-all-by-default: true +objc-interfaces: + include: + - PrivateSentrySDKOnly + - SentryId diff --git a/flutter/lib/src/sentry_cocoa.dart b/flutter/lib/src/sentry_cocoa.dart new file mode 100644 index 0000000000..8d5b378edc --- /dev/null +++ b/flutter/lib/src/sentry_cocoa.dart @@ -0,0 +1,71521 @@ +// AUTO GENERATED FILE, DO NOT EDIT. +// +// Generated by `package:ffigen`. +// ignore_for_file: type=lint +import 'dart:ffi' as ffi; +import 'package:ffi/ffi.dart' as pkg_ffi; + +/// Sentry Cocoa SDK FFI binding. +class SentryCocoa { + /// Holds the symbol lookup function. + final ffi.Pointer Function(String symbolName) + _lookup; + + /// The symbols are looked up in [dynamicLibrary]. + SentryCocoa(ffi.DynamicLibrary dynamicLibrary) + : _lookup = dynamicLibrary.lookup; + + /// The symbols are looked up with [lookup]. + SentryCocoa.fromLookup( + ffi.Pointer Function(String symbolName) + lookup) + : _lookup = lookup; + + ffi.Pointer _registerName1(String name) { + final cstr = name.toNativeUtf8(); + final sel = _sel_registerName(cstr.cast()); + pkg_ffi.calloc.free(cstr); + return sel; + } + + ffi.Pointer _sel_registerName( + ffi.Pointer str, + ) { + return __sel_registerName( + str, + ); + } + + late final __sel_registerNamePtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('sel_registerName'); + late final __sel_registerName = __sel_registerNamePtr + .asFunction Function(ffi.Pointer)>(); + + ffi.Pointer _getClass1(String name) { + final cstr = name.toNativeUtf8(); + final clazz = _objc_getClass(cstr.cast()); + pkg_ffi.calloc.free(cstr); + if (clazz == ffi.nullptr) { + throw Exception('Failed to load Objective-C class: $name'); + } + return clazz; + } + + ffi.Pointer _objc_getClass( + ffi.Pointer str, + ) { + return __objc_getClass( + str, + ); + } + + late final __objc_getClassPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('objc_getClass'); + late final __objc_getClass = __objc_getClassPtr + .asFunction Function(ffi.Pointer)>(); + + ffi.Pointer _objc_retain( + ffi.Pointer value, + ) { + return __objc_retain( + value, + ); + } + + late final __objc_retainPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('objc_retain'); + late final __objc_retain = __objc_retainPtr + .asFunction Function(ffi.Pointer)>(); + + void _objc_release( + ffi.Pointer value, + ) { + return __objc_release( + value, + ); + } + + late final __objc_releasePtr = + _lookup)>>( + 'objc_release'); + late final __objc_release = + __objc_releasePtr.asFunction)>(); + + late final _objc_releaseFinalizer2 = + ffi.NativeFinalizer(__objc_releasePtr.cast()); + late final _class_PrivateSentrySDKOnly1 = _getClass1("PrivateSentrySDKOnly"); + bool _objc_msgSend_0( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer clazz, + ) { + return __objc_msgSend_0( + obj, + sel, + clazz, + ); + } + + late final __objc_msgSend_0Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_0 = __objc_msgSend_0Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_isKindOfClass_1 = _registerName1("isKindOfClass:"); + late final _class_SentryEnvelope1 = _getClass1("SentryEnvelope"); + late final _class_SentryId1 = _getClass1("SentryId"); + late final _class_NSObject1 = _getClass1("NSObject"); + late final _sel_load1 = _registerName1("load"); + void _objc_msgSend_1( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1( + obj, + sel, + ); + } + + late final __objc_msgSend_1Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1 = __objc_msgSend_1Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initialize1 = _registerName1("initialize"); + late final _sel_init1 = _registerName1("init"); + instancetype _objc_msgSend_2( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_2( + obj, + sel, + ); + } + + late final __objc_msgSend_2Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_2 = __objc_msgSend_2Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_new1 = _registerName1("new"); + late final _sel_allocWithZone_1 = _registerName1("allocWithZone:"); + instancetype _objc_msgSend_3( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_NSZone> zone, + ) { + return __objc_msgSend_3( + obj, + sel, + zone, + ); + } + + late final __objc_msgSend_3Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_NSZone>)>>('objc_msgSend'); + late final __objc_msgSend_3 = __objc_msgSend_3Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_NSZone>)>(); + + late final _sel_alloc1 = _registerName1("alloc"); + late final _sel_dealloc1 = _registerName1("dealloc"); + late final _sel_finalize1 = _registerName1("finalize"); + late final _sel_copy1 = _registerName1("copy"); + late final _sel_mutableCopy1 = _registerName1("mutableCopy"); + late final _sel_copyWithZone_1 = _registerName1("copyWithZone:"); + late final _sel_mutableCopyWithZone_1 = + _registerName1("mutableCopyWithZone:"); + late final _sel_instancesRespondToSelector_1 = + _registerName1("instancesRespondToSelector:"); + bool _objc_msgSend_4( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_4( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_4Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_4 = __objc_msgSend_4Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_Protocol1 = _getClass1("Protocol"); + late final _sel_conformsToProtocol_1 = _registerName1("conformsToProtocol:"); + bool _objc_msgSend_5( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer protocol, + ) { + return __objc_msgSend_5( + obj, + sel, + protocol, + ); + } + + late final __objc_msgSend_5Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_5 = __objc_msgSend_5Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_methodForSelector_1 = _registerName1("methodForSelector:"); + ffi.Pointer> _objc_msgSend_6( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_6( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_6Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_6 = __objc_msgSend_6Ptr.asFunction< + ffi.Pointer> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_instanceMethodForSelector_1 = + _registerName1("instanceMethodForSelector:"); + late final _sel_doesNotRecognizeSelector_1 = + _registerName1("doesNotRecognizeSelector:"); + void _objc_msgSend_7( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_7( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_7Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_7 = __objc_msgSend_7Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_forwardingTargetForSelector_1 = + _registerName1("forwardingTargetForSelector:"); + ffi.Pointer _objc_msgSend_8( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_8( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_8Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_8 = __objc_msgSend_8Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSInvocation1 = _getClass1("NSInvocation"); + late final _class_NSMethodSignature1 = _getClass1("NSMethodSignature"); + late final _sel_signatureWithObjCTypes_1 = + _registerName1("signatureWithObjCTypes:"); + ffi.Pointer _objc_msgSend_9( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer types, + ) { + return __objc_msgSend_9( + obj, + sel, + types, + ); + } + + late final __objc_msgSend_9Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_9 = __objc_msgSend_9Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_numberOfArguments1 = _registerName1("numberOfArguments"); + int _objc_msgSend_10( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_10( + obj, + sel, + ); + } + + late final __objc_msgSend_10Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_10 = __objc_msgSend_10Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_getArgumentTypeAtIndex_1 = + _registerName1("getArgumentTypeAtIndex:"); + ffi.Pointer _objc_msgSend_11( + ffi.Pointer obj, + ffi.Pointer sel, + int idx, + ) { + return __objc_msgSend_11( + obj, + sel, + idx, + ); + } + + late final __objc_msgSend_11Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_11 = __objc_msgSend_11Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_frameLength1 = _registerName1("frameLength"); + late final _sel_isOneway1 = _registerName1("isOneway"); + bool _objc_msgSend_12( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_12( + obj, + sel, + ); + } + + late final __objc_msgSend_12Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_12 = __objc_msgSend_12Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_methodReturnType1 = _registerName1("methodReturnType"); + ffi.Pointer _objc_msgSend_13( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_13( + obj, + sel, + ); + } + + late final __objc_msgSend_13Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_13 = __objc_msgSend_13Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_methodReturnLength1 = _registerName1("methodReturnLength"); + late final _sel_cancelPreviousPerformRequestsWithTarget_selector_object_1 = + _registerName1( + "cancelPreviousPerformRequestsWithTarget:selector:object:"); + void _objc_msgSend_14( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aTarget, + ffi.Pointer aSelector, + ffi.Pointer anArgument, + ) { + return __objc_msgSend_14( + obj, + sel, + aTarget, + aSelector, + anArgument, + ); + } + + late final __objc_msgSend_14Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_14 = __objc_msgSend_14Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_cancelPreviousPerformRequestsWithTarget_1 = + _registerName1("cancelPreviousPerformRequestsWithTarget:"); + void _objc_msgSend_15( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aTarget, + ) { + return __objc_msgSend_15( + obj, + sel, + aTarget, + ); + } + + late final __objc_msgSend_15Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_15 = __objc_msgSend_15Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_accessInstanceVariablesDirectly1 = + _registerName1("accessInstanceVariablesDirectly"); + late final _sel_useStoredAccessor1 = _registerName1("useStoredAccessor"); + late final _class_NSSet1 = _getClass1("NSSet"); + late final _sel_count1 = _registerName1("count"); + late final _sel_member_1 = _registerName1("member:"); + ffi.Pointer _objc_msgSend_16( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer object, + ) { + return __objc_msgSend_16( + obj, + sel, + object, + ); + } + + late final __objc_msgSend_16Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_16 = __objc_msgSend_16Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSEnumerator1 = _getClass1("NSEnumerator"); + late final _sel_nextObject1 = _registerName1("nextObject"); + late final _sel_allObjects1 = _registerName1("allObjects"); + late final _class_NSString1 = _getClass1("NSString"); + late final _sel_length1 = _registerName1("length"); + late final _sel_characterAtIndex_1 = _registerName1("characterAtIndex:"); + int _objc_msgSend_17( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_17( + obj, + sel, + index, + ); + } + + late final __objc_msgSend_17Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedShort Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_17 = __objc_msgSend_17Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _class_NSCoder1 = _getClass1("NSCoder"); + late final _sel_encodeValueOfObjCType_at_1 = + _registerName1("encodeValueOfObjCType:at:"); + void _objc_msgSend_18( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer type, + ffi.Pointer addr, + ) { + return __objc_msgSend_18( + obj, + sel, + type, + addr, + ); + } + + late final __objc_msgSend_18Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_18 = __objc_msgSend_18Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSData1 = _getClass1("NSData"); + late final _sel_bytes1 = _registerName1("bytes"); + ffi.Pointer _objc_msgSend_19( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_19( + obj, + sel, + ); + } + + late final __objc_msgSend_19Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_19 = __objc_msgSend_19Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_description1 = _registerName1("description"); + ffi.Pointer _objc_msgSend_20( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_20( + obj, + sel, + ); + } + + late final __objc_msgSend_20Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_20 = __objc_msgSend_20Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_getBytes_length_1 = _registerName1("getBytes:length:"); + void _objc_msgSend_21( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + int length, + ) { + return __objc_msgSend_21( + obj, + sel, + buffer, + length, + ); + } + + late final __objc_msgSend_21Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_21 = __objc_msgSend_21Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_getBytes_range_1 = _registerName1("getBytes:range:"); + void _objc_msgSend_22( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + _NSRange range, + ) { + return __objc_msgSend_22( + obj, + sel, + buffer, + range, + ); + } + + late final __objc_msgSend_22Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_22 = __objc_msgSend_22Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>(); + + late final _sel_isEqualToData_1 = _registerName1("isEqualToData:"); + bool _objc_msgSend_23( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + ) { + return __objc_msgSend_23( + obj, + sel, + other, + ); + } + + late final __objc_msgSend_23Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_23 = __objc_msgSend_23Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_subdataWithRange_1 = _registerName1("subdataWithRange:"); + ffi.Pointer _objc_msgSend_24( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ) { + return __objc_msgSend_24( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_24Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_24 = __objc_msgSend_24Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _sel_writeToFile_atomically_1 = + _registerName1("writeToFile:atomically:"); + bool _objc_msgSend_25( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool useAuxiliaryFile, + ) { + return __objc_msgSend_25( + obj, + sel, + path, + useAuxiliaryFile, + ); + } + + late final __objc_msgSend_25Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_25 = __objc_msgSend_25Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _class_NSURL1 = _getClass1("NSURL"); + late final _sel_initWithScheme_host_path_1 = + _registerName1("initWithScheme:host:path:"); + instancetype _objc_msgSend_26( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer scheme, + ffi.Pointer host, + ffi.Pointer path, + ) { + return __objc_msgSend_26( + obj, + sel, + scheme, + host, + path, + ); + } + + late final __objc_msgSend_26Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_26 = __objc_msgSend_26Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initFileURLWithPath_isDirectory_relativeToURL_1 = + _registerName1("initFileURLWithPath:isDirectory:relativeToURL:"); + instancetype _objc_msgSend_27( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_27( + obj, + sel, + path, + isDir, + baseURL, + ); + } + + late final __objc_msgSend_27Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_27 = __objc_msgSend_27Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool, ffi.Pointer)>(); + + late final _sel_initFileURLWithPath_relativeToURL_1 = + _registerName1("initFileURLWithPath:relativeToURL:"); + instancetype _objc_msgSend_28( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_28( + obj, + sel, + path, + baseURL, + ); + } + + late final __objc_msgSend_28Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_28 = __objc_msgSend_28Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initFileURLWithPath_isDirectory_1 = + _registerName1("initFileURLWithPath:isDirectory:"); + instancetype _objc_msgSend_29( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ) { + return __objc_msgSend_29( + obj, + sel, + path, + isDir, + ); + } + + late final __objc_msgSend_29Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_29 = __objc_msgSend_29Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_initFileURLWithPath_1 = + _registerName1("initFileURLWithPath:"); + instancetype _objc_msgSend_30( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ) { + return __objc_msgSend_30( + obj, + sel, + path, + ); + } + + late final __objc_msgSend_30Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_30 = __objc_msgSend_30Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_fileURLWithPath_isDirectory_relativeToURL_1 = + _registerName1("fileURLWithPath:isDirectory:relativeToURL:"); + ffi.Pointer _objc_msgSend_31( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_31( + obj, + sel, + path, + isDir, + baseURL, + ); + } + + late final __objc_msgSend_31Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_31 = __objc_msgSend_31Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>(); + + late final _sel_fileURLWithPath_relativeToURL_1 = + _registerName1("fileURLWithPath:relativeToURL:"); + ffi.Pointer _objc_msgSend_32( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_32( + obj, + sel, + path, + baseURL, + ); + } + + late final __objc_msgSend_32Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_32 = __objc_msgSend_32Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_fileURLWithPath_isDirectory_1 = + _registerName1("fileURLWithPath:isDirectory:"); + ffi.Pointer _objc_msgSend_33( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ) { + return __objc_msgSend_33( + obj, + sel, + path, + isDir, + ); + } + + late final __objc_msgSend_33Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_33 = __objc_msgSend_33Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_fileURLWithPath_1 = _registerName1("fileURLWithPath:"); + ffi.Pointer _objc_msgSend_34( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ) { + return __objc_msgSend_34( + obj, + sel, + path, + ); + } + + late final __objc_msgSend_34Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_34 = __objc_msgSend_34Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1 = + _registerName1( + "initFileURLWithFileSystemRepresentation:isDirectory:relativeToURL:"); + instancetype _objc_msgSend_35( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_35( + obj, + sel, + path, + isDir, + baseURL, + ); + } + + late final __objc_msgSend_35Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_35 = __objc_msgSend_35Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool, ffi.Pointer)>(); + + late final _sel_fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1 = + _registerName1( + "fileURLWithFileSystemRepresentation:isDirectory:relativeToURL:"); + ffi.Pointer _objc_msgSend_36( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool isDir, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_36( + obj, + sel, + path, + isDir, + baseURL, + ); + } + + late final __objc_msgSend_36Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_36 = __objc_msgSend_36Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>(); + + late final _sel_initWithString_1 = _registerName1("initWithString:"); + late final _sel_initWithString_relativeToURL_1 = + _registerName1("initWithString:relativeToURL:"); + late final _sel_URLWithString_1 = _registerName1("URLWithString:"); + late final _sel_URLWithString_relativeToURL_1 = + _registerName1("URLWithString:relativeToURL:"); + late final _sel_initWithDataRepresentation_relativeToURL_1 = + _registerName1("initWithDataRepresentation:relativeToURL:"); + instancetype _objc_msgSend_37( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_37( + obj, + sel, + data, + baseURL, + ); + } + + late final __objc_msgSend_37Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_37 = __objc_msgSend_37Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_URLWithDataRepresentation_relativeToURL_1 = + _registerName1("URLWithDataRepresentation:relativeToURL:"); + ffi.Pointer _objc_msgSend_38( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ffi.Pointer baseURL, + ) { + return __objc_msgSend_38( + obj, + sel, + data, + baseURL, + ); + } + + late final __objc_msgSend_38Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_38 = __objc_msgSend_38Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initAbsoluteURLWithDataRepresentation_relativeToURL_1 = + _registerName1("initAbsoluteURLWithDataRepresentation:relativeToURL:"); + late final _sel_absoluteURLWithDataRepresentation_relativeToURL_1 = + _registerName1("absoluteURLWithDataRepresentation:relativeToURL:"); + late final _sel_dataRepresentation1 = _registerName1("dataRepresentation"); + ffi.Pointer _objc_msgSend_39( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_39( + obj, + sel, + ); + } + + late final __objc_msgSend_39Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_39 = __objc_msgSend_39Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_absoluteString1 = _registerName1("absoluteString"); + late final _sel_relativeString1 = _registerName1("relativeString"); + late final _sel_baseURL1 = _registerName1("baseURL"); + ffi.Pointer _objc_msgSend_40( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_40( + obj, + sel, + ); + } + + late final __objc_msgSend_40Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_40 = __objc_msgSend_40Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_absoluteURL1 = _registerName1("absoluteURL"); + late final _sel_scheme1 = _registerName1("scheme"); + late final _sel_resourceSpecifier1 = _registerName1("resourceSpecifier"); + late final _sel_host1 = _registerName1("host"); + late final _class_NSNumber1 = _getClass1("NSNumber"); + late final _class_NSValue1 = _getClass1("NSValue"); + late final _sel_getValue_size_1 = _registerName1("getValue:size:"); + late final _sel_objCType1 = _registerName1("objCType"); + late final _sel_initWithBytes_objCType_1 = + _registerName1("initWithBytes:objCType:"); + instancetype _objc_msgSend_41( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ffi.Pointer type, + ) { + return __objc_msgSend_41( + obj, + sel, + value, + type, + ); + } + + late final __objc_msgSend_41Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_41 = __objc_msgSend_41Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithCoder_1 = _registerName1("initWithCoder:"); + instancetype _objc_msgSend_42( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer coder, + ) { + return __objc_msgSend_42( + obj, + sel, + coder, + ); + } + + late final __objc_msgSend_42Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_42 = __objc_msgSend_42Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_valueWithBytes_objCType_1 = + _registerName1("valueWithBytes:objCType:"); + ffi.Pointer _objc_msgSend_43( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ffi.Pointer type, + ) { + return __objc_msgSend_43( + obj, + sel, + value, + type, + ); + } + + late final __objc_msgSend_43Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_43 = __objc_msgSend_43Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_value_withObjCType_1 = _registerName1("value:withObjCType:"); + late final _sel_valueWithNonretainedObject_1 = + _registerName1("valueWithNonretainedObject:"); + ffi.Pointer _objc_msgSend_44( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anObject, + ) { + return __objc_msgSend_44( + obj, + sel, + anObject, + ); + } + + late final __objc_msgSend_44Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_44 = __objc_msgSend_44Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_nonretainedObjectValue1 = + _registerName1("nonretainedObjectValue"); + late final _sel_valueWithPointer_1 = _registerName1("valueWithPointer:"); + ffi.Pointer _objc_msgSend_45( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer pointer, + ) { + return __objc_msgSend_45( + obj, + sel, + pointer, + ); + } + + late final __objc_msgSend_45Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_45 = __objc_msgSend_45Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_pointerValue1 = _registerName1("pointerValue"); + late final _sel_isEqualToValue_1 = _registerName1("isEqualToValue:"); + bool _objc_msgSend_46( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_46( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_46Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_46 = __objc_msgSend_46Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_getValue_1 = _registerName1("getValue:"); + void _objc_msgSend_47( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_47( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_47Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_47 = __objc_msgSend_47Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_valueWithRange_1 = _registerName1("valueWithRange:"); + ffi.Pointer _objc_msgSend_48( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ) { + return __objc_msgSend_48( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_48Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_48 = __objc_msgSend_48Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _sel_rangeValue1 = _registerName1("rangeValue"); + void _objc_msgSend_49( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_49( + stret, + obj, + sel, + ); + } + + late final __objc_msgSend_49Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_49 = __objc_msgSend_49Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_valueWithPoint_1 = _registerName1("valueWithPoint:"); + ffi.Pointer _objc_msgSend_50( + ffi.Pointer obj, + ffi.Pointer sel, + CGPoint point, + ) { + return __objc_msgSend_50( + obj, + sel, + point, + ); + } + + late final __objc_msgSend_50Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, CGPoint)>>('objc_msgSend'); + late final __objc_msgSend_50 = __objc_msgSend_50Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, CGPoint)>(); + + late final _sel_valueWithSize_1 = _registerName1("valueWithSize:"); + ffi.Pointer _objc_msgSend_51( + ffi.Pointer obj, + ffi.Pointer sel, + CGSize size, + ) { + return __objc_msgSend_51( + obj, + sel, + size, + ); + } + + late final __objc_msgSend_51Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, CGSize)>>('objc_msgSend'); + late final __objc_msgSend_51 = __objc_msgSend_51Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, CGSize)>(); + + late final _sel_valueWithRect_1 = _registerName1("valueWithRect:"); + ffi.Pointer _objc_msgSend_52( + ffi.Pointer obj, + ffi.Pointer sel, + CGRect rect, + ) { + return __objc_msgSend_52( + obj, + sel, + rect, + ); + } + + late final __objc_msgSend_52Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, CGRect)>>('objc_msgSend'); + late final __objc_msgSend_52 = __objc_msgSend_52Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, CGRect)>(); + + late final _sel_valueWithEdgeInsets_1 = + _registerName1("valueWithEdgeInsets:"); + ffi.Pointer _objc_msgSend_53( + ffi.Pointer obj, + ffi.Pointer sel, + NSEdgeInsets insets, + ) { + return __objc_msgSend_53( + obj, + sel, + insets, + ); + } + + late final __objc_msgSend_53Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, NSEdgeInsets)>>('objc_msgSend'); + late final __objc_msgSend_53 = __objc_msgSend_53Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, NSEdgeInsets)>(); + + late final _sel_pointValue1 = _registerName1("pointValue"); + void _objc_msgSend_54( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_54( + stret, + obj, + sel, + ); + } + + late final __objc_msgSend_54Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_54 = __objc_msgSend_54Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_sizeValue1 = _registerName1("sizeValue"); + void _objc_msgSend_55( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_55( + stret, + obj, + sel, + ); + } + + late final __objc_msgSend_55Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_55 = __objc_msgSend_55Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_rectValue1 = _registerName1("rectValue"); + void _objc_msgSend_56( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_56( + stret, + obj, + sel, + ); + } + + late final __objc_msgSend_56Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_56 = __objc_msgSend_56Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_edgeInsetsValue1 = _registerName1("edgeInsetsValue"); + void _objc_msgSend_57( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_57( + stret, + obj, + sel, + ); + } + + late final __objc_msgSend_57Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_57 = __objc_msgSend_57Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_keyPathsForValuesAffectingValueForKey_1 = + _registerName1("keyPathsForValuesAffectingValueForKey:"); + ffi.Pointer _objc_msgSend_58( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_58( + obj, + sel, + key, + ); + } + + late final __objc_msgSend_58Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_58 = __objc_msgSend_58Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_automaticallyNotifiesObserversForKey_1 = + _registerName1("automaticallyNotifiesObserversForKey:"); + bool _objc_msgSend_59( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_59( + obj, + sel, + key, + ); + } + + late final __objc_msgSend_59Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_59 = __objc_msgSend_59Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSArray1 = _getClass1("NSArray"); + late final _sel_objectAtIndex_1 = _registerName1("objectAtIndex:"); + ffi.Pointer _objc_msgSend_60( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_60( + obj, + sel, + index, + ); + } + + late final __objc_msgSend_60Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_60 = __objc_msgSend_60Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithObjects_count_1 = + _registerName1("initWithObjects:count:"); + instancetype _objc_msgSend_61( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> objects, + int cnt, + ) { + return __objc_msgSend_61( + obj, + sel, + objects, + cnt, + ); + } + + late final __objc_msgSend_61Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_61 = __objc_msgSend_61Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>, int)>(); + + late final _sel_arrayByAddingObject_1 = + _registerName1("arrayByAddingObject:"); + ffi.Pointer _objc_msgSend_62( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anObject, + ) { + return __objc_msgSend_62( + obj, + sel, + anObject, + ); + } + + late final __objc_msgSend_62Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_62 = __objc_msgSend_62Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_arrayByAddingObjectsFromArray_1 = + _registerName1("arrayByAddingObjectsFromArray:"); + ffi.Pointer _objc_msgSend_63( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherArray, + ) { + return __objc_msgSend_63( + obj, + sel, + otherArray, + ); + } + + late final __objc_msgSend_63Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_63 = __objc_msgSend_63Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_componentsJoinedByString_1 = + _registerName1("componentsJoinedByString:"); + ffi.Pointer _objc_msgSend_64( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer separator, + ) { + return __objc_msgSend_64( + obj, + sel, + separator, + ); + } + + late final __objc_msgSend_64Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_64 = __objc_msgSend_64Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_containsObject_1 = _registerName1("containsObject:"); + late final _sel_descriptionWithLocale_1 = + _registerName1("descriptionWithLocale:"); + ffi.Pointer _objc_msgSend_65( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer locale, + ) { + return __objc_msgSend_65( + obj, + sel, + locale, + ); + } + + late final __objc_msgSend_65Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_65 = __objc_msgSend_65Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_descriptionWithLocale_indent_1 = + _registerName1("descriptionWithLocale:indent:"); + ffi.Pointer _objc_msgSend_66( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer locale, + int level, + ) { + return __objc_msgSend_66( + obj, + sel, + locale, + level, + ); + } + + late final __objc_msgSend_66Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_66 = __objc_msgSend_66Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_firstObjectCommonWithArray_1 = + _registerName1("firstObjectCommonWithArray:"); + ffi.Pointer _objc_msgSend_67( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherArray, + ) { + return __objc_msgSend_67( + obj, + sel, + otherArray, + ); + } + + late final __objc_msgSend_67Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_67 = __objc_msgSend_67Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_getObjects_range_1 = _registerName1("getObjects:range:"); + void _objc_msgSend_68( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> objects, + _NSRange range, + ) { + return __objc_msgSend_68( + obj, + sel, + objects, + range, + ); + } + + late final __objc_msgSend_68Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_68 = __objc_msgSend_68Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>, _NSRange)>(); + + late final _sel_indexOfObject_1 = _registerName1("indexOfObject:"); + int _objc_msgSend_69( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anObject, + ) { + return __objc_msgSend_69( + obj, + sel, + anObject, + ); + } + + late final __objc_msgSend_69Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_69 = __objc_msgSend_69Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_indexOfObject_inRange_1 = + _registerName1("indexOfObject:inRange:"); + int _objc_msgSend_70( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anObject, + _NSRange range, + ) { + return __objc_msgSend_70( + obj, + sel, + anObject, + range, + ); + } + + late final __objc_msgSend_70Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_70 = __objc_msgSend_70Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>(); + + late final _sel_indexOfObjectIdenticalTo_1 = + _registerName1("indexOfObjectIdenticalTo:"); + late final _sel_indexOfObjectIdenticalTo_inRange_1 = + _registerName1("indexOfObjectIdenticalTo:inRange:"); + late final _sel_isEqualToArray_1 = _registerName1("isEqualToArray:"); + bool _objc_msgSend_71( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherArray, + ) { + return __objc_msgSend_71( + obj, + sel, + otherArray, + ); + } + + late final __objc_msgSend_71Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_71 = __objc_msgSend_71Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_firstObject1 = _registerName1("firstObject"); + late final _sel_lastObject1 = _registerName1("lastObject"); + late final _sel_objectEnumerator1 = _registerName1("objectEnumerator"); + ffi.Pointer _objc_msgSend_72( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_72( + obj, + sel, + ); + } + + late final __objc_msgSend_72Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_72 = __objc_msgSend_72Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_reverseObjectEnumerator1 = + _registerName1("reverseObjectEnumerator"); + late final _sel_sortedArrayHint1 = _registerName1("sortedArrayHint"); + late final _sel_sortedArrayUsingFunction_context_1 = + _registerName1("sortedArrayUsingFunction:context:"); + ffi.Pointer _objc_msgSend_73( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>> + comparator, + ffi.Pointer context, + ) { + return __objc_msgSend_73( + obj, + sel, + comparator, + context, + ); + } + + late final __objc_msgSend_73Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_73 = __objc_msgSend_73Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>, + ffi.Pointer)>(); + + late final _sel_sortedArrayUsingFunction_context_hint_1 = + _registerName1("sortedArrayUsingFunction:context:hint:"); + ffi.Pointer _objc_msgSend_74( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>> + comparator, + ffi.Pointer context, + ffi.Pointer hint, + ) { + return __objc_msgSend_74( + obj, + sel, + comparator, + context, + hint, + ); + } + + late final __objc_msgSend_74Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_74 = __objc_msgSend_74Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_sortedArrayUsingSelector_1 = + _registerName1("sortedArrayUsingSelector:"); + ffi.Pointer _objc_msgSend_75( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer comparator, + ) { + return __objc_msgSend_75( + obj, + sel, + comparator, + ); + } + + late final __objc_msgSend_75Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_75 = __objc_msgSend_75Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_subarrayWithRange_1 = _registerName1("subarrayWithRange:"); + ffi.Pointer _objc_msgSend_76( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ) { + return __objc_msgSend_76( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_76Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_76 = __objc_msgSend_76Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _class_NSError1 = _getClass1("NSError"); + late final _sel_initWithDomain_code_userInfo_1 = + _registerName1("initWithDomain:code:userInfo:"); + instancetype _objc_msgSend_77( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer domain, + int code, + ffi.Pointer dict, + ) { + return __objc_msgSend_77( + obj, + sel, + domain, + code, + dict, + ); + } + + late final __objc_msgSend_77Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_77 = __objc_msgSend_77Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_errorWithDomain_code_userInfo_1 = + _registerName1("errorWithDomain:code:userInfo:"); + late final _sel_domain1 = _registerName1("domain"); + late final _sel_code1 = _registerName1("code"); + int _objc_msgSend_78( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_78( + obj, + sel, + ); + } + + late final __objc_msgSend_78Ptr = _lookup< + ffi.NativeFunction< + ffi.Long Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_78 = __objc_msgSend_78Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_userInfo1 = _registerName1("userInfo"); + late final _sel_localizedDescription1 = + _registerName1("localizedDescription"); + late final _sel_localizedFailureReason1 = + _registerName1("localizedFailureReason"); + late final _sel_localizedRecoverySuggestion1 = + _registerName1("localizedRecoverySuggestion"); + late final _sel_localizedRecoveryOptions1 = + _registerName1("localizedRecoveryOptions"); + ffi.Pointer _objc_msgSend_79( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_79( + obj, + sel, + ); + } + + late final __objc_msgSend_79Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_79 = __objc_msgSend_79Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_recoveryAttempter1 = _registerName1("recoveryAttempter"); + late final _sel_helpAnchor1 = _registerName1("helpAnchor"); + late final _sel_underlyingErrors1 = _registerName1("underlyingErrors"); + ffi.Pointer<_ObjCBlockDesc> _newBlockDesc1() { + final d = + pkg_ffi.calloc.allocate<_ObjCBlockDesc>(ffi.sizeOf<_ObjCBlockDesc>()); + d.ref.reserved = 0; + d.ref.size = ffi.sizeOf<_ObjCBlock>(); + d.ref.copy_helper = ffi.nullptr; + d.ref.dispose_helper = ffi.nullptr; + d.ref.signature = ffi.nullptr; + return d; + } + + late final _objc_block_desc1 = _newBlockDesc1(); + late final _objc_concrete_global_block1 = + _lookup('_NSConcreteGlobalBlock'); + ffi.Pointer<_ObjCBlock> _newBlock1( + ffi.Pointer invoke, ffi.Pointer target) { + final b = pkg_ffi.calloc.allocate<_ObjCBlock>(ffi.sizeOf<_ObjCBlock>()); + b.ref.isa = _objc_concrete_global_block1; + b.ref.flags = 0; + b.ref.reserved = 0; + b.ref.invoke = invoke; + b.ref.target = target; + b.ref.descriptor = _objc_block_desc1; + final copy = _Block_copy(b.cast()).cast<_ObjCBlock>(); + pkg_ffi.calloc.free(b); + return copy; + } + + ffi.Pointer _Block_copy( + ffi.Pointer value, + ) { + return __Block_copy( + value, + ); + } + + late final __Block_copyPtr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>('_Block_copy'); + late final __Block_copy = __Block_copyPtr + .asFunction Function(ffi.Pointer)>(); + + void _Block_release( + ffi.Pointer value, + ) { + return __Block_release( + value, + ); + } + + late final __Block_releasePtr = + _lookup)>>( + '_Block_release'); + late final __Block_release = + __Block_releasePtr.asFunction)>(); + + late final _objc_releaseFinalizer11 = + ffi.NativeFinalizer(__Block_releasePtr.cast()); + late final _sel_setUserInfoValueProviderForDomain_provider_1 = + _registerName1("setUserInfoValueProviderForDomain:provider:"); + void _objc_msgSend_80( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer errorDomain, + ffi.Pointer<_ObjCBlock> provider, + ) { + return __objc_msgSend_80( + obj, + sel, + errorDomain, + provider, + ); + } + + late final __objc_msgSend_80Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_80 = __objc_msgSend_80Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_userInfoValueProviderForDomain_1 = + _registerName1("userInfoValueProviderForDomain:"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_81( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer err, + ffi.Pointer userInfoKey, + ffi.Pointer errorDomain, + ) { + return __objc_msgSend_81( + obj, + sel, + err, + userInfoKey, + errorDomain, + ); + } + + late final __objc_msgSend_81Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_81 = __objc_msgSend_81Ptr.asFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setKeys_triggerChangeNotificationsForDependentKey_1 = + _registerName1("setKeys:triggerChangeNotificationsForDependentKey:"); + void _objc_msgSend_82( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keys, + ffi.Pointer dependentKey, + ) { + return __objc_msgSend_82( + obj, + sel, + keys, + dependentKey, + ); + } + + late final __objc_msgSend_82Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_82 = __objc_msgSend_82Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_classFallbacksForKeyedArchiver1 = + _registerName1("classFallbacksForKeyedArchiver"); + late final _sel_classForKeyedUnarchiver1 = + _registerName1("classForKeyedUnarchiver"); + late final _sel_writeToURL_error_1 = _registerName1("writeToURL:error:"); + bool _objc_msgSend_83( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer> error, + ) { + return __objc_msgSend_83( + obj, + sel, + url, + error, + ); + } + + late final __objc_msgSend_83Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_83 = __objc_msgSend_83Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); + + late final _sel_makeObjectsPerformSelector_1 = + _registerName1("makeObjectsPerformSelector:"); + late final _sel_makeObjectsPerformSelector_withObject_1 = + _registerName1("makeObjectsPerformSelector:withObject:"); + void _objc_msgSend_84( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ffi.Pointer argument, + ) { + return __objc_msgSend_84( + obj, + sel, + aSelector, + argument, + ); + } + + late final __objc_msgSend_84Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_84 = __objc_msgSend_84Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSIndexSet1 = _getClass1("NSIndexSet"); + late final _sel_indexSet1 = _registerName1("indexSet"); + late final _sel_indexSetWithIndex_1 = _registerName1("indexSetWithIndex:"); + late final _sel_indexSetWithIndexesInRange_1 = + _registerName1("indexSetWithIndexesInRange:"); + instancetype _objc_msgSend_85( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ) { + return __objc_msgSend_85( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_85Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_85 = __objc_msgSend_85Ptr.asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _sel_initWithIndexesInRange_1 = + _registerName1("initWithIndexesInRange:"); + late final _sel_initWithIndexSet_1 = _registerName1("initWithIndexSet:"); + instancetype _objc_msgSend_86( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer indexSet, + ) { + return __objc_msgSend_86( + obj, + sel, + indexSet, + ); + } + + late final __objc_msgSend_86Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_86 = __objc_msgSend_86Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithIndex_1 = _registerName1("initWithIndex:"); + late final _sel_isEqualToIndexSet_1 = _registerName1("isEqualToIndexSet:"); + bool _objc_msgSend_87( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer indexSet, + ) { + return __objc_msgSend_87( + obj, + sel, + indexSet, + ); + } + + late final __objc_msgSend_87Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_87 = __objc_msgSend_87Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_firstIndex1 = _registerName1("firstIndex"); + late final _sel_lastIndex1 = _registerName1("lastIndex"); + late final _sel_indexGreaterThanIndex_1 = + _registerName1("indexGreaterThanIndex:"); + int _objc_msgSend_88( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_88( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_88Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_88 = __objc_msgSend_88Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_indexLessThanIndex_1 = _registerName1("indexLessThanIndex:"); + late final _sel_indexGreaterThanOrEqualToIndex_1 = + _registerName1("indexGreaterThanOrEqualToIndex:"); + late final _sel_indexLessThanOrEqualToIndex_1 = + _registerName1("indexLessThanOrEqualToIndex:"); + late final _sel_getIndexes_maxCount_inIndexRange_1 = + _registerName1("getIndexes:maxCount:inIndexRange:"); + int _objc_msgSend_89( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer indexBuffer, + int bufferSize, + ffi.Pointer<_NSRange> range, + ) { + return __objc_msgSend_89( + obj, + sel, + indexBuffer, + bufferSize, + range, + ); + } + + late final __objc_msgSend_89Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>)>>('objc_msgSend'); + late final __objc_msgSend_89 = __objc_msgSend_89Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_NSRange>)>(); + + late final _sel_countOfIndexesInRange_1 = + _registerName1("countOfIndexesInRange:"); + int _objc_msgSend_90( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ) { + return __objc_msgSend_90( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_90Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_90 = __objc_msgSend_90Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _sel_containsIndex_1 = _registerName1("containsIndex:"); + bool _objc_msgSend_91( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_91( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_91Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_91 = __objc_msgSend_91Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_containsIndexesInRange_1 = + _registerName1("containsIndexesInRange:"); + bool _objc_msgSend_92( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ) { + return __objc_msgSend_92( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_92Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_92 = __objc_msgSend_92Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _sel_containsIndexes_1 = _registerName1("containsIndexes:"); + late final _sel_intersectsIndexesInRange_1 = + _registerName1("intersectsIndexesInRange:"); + late final _sel_enumerateIndexesUsingBlock_1 = + _registerName1("enumerateIndexesUsingBlock:"); + void _objc_msgSend_93( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_93( + obj, + sel, + block, + ); + } + + late final __objc_msgSend_93Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_93 = __objc_msgSend_93Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_enumerateIndexesWithOptions_usingBlock_1 = + _registerName1("enumerateIndexesWithOptions:usingBlock:"); + void _objc_msgSend_94( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_94( + obj, + sel, + opts, + block, + ); + } + + late final __objc_msgSend_94Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_94 = __objc_msgSend_94Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_enumerateIndexesInRange_options_usingBlock_1 = + _registerName1("enumerateIndexesInRange:options:usingBlock:"); + void _objc_msgSend_95( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_95( + obj, + sel, + range, + opts, + block, + ); + } + + late final __objc_msgSend_95Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_95 = __objc_msgSend_95Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexPassingTest_1 = _registerName1("indexPassingTest:"); + int _objc_msgSend_96( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_96( + obj, + sel, + predicate, + ); + } + + late final __objc_msgSend_96Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_96 = __objc_msgSend_96Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexWithOptions_passingTest_1 = + _registerName1("indexWithOptions:passingTest:"); + int _objc_msgSend_97( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_97( + obj, + sel, + opts, + predicate, + ); + } + + late final __objc_msgSend_97Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_97 = __objc_msgSend_97Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexInRange_options_passingTest_1 = + _registerName1("indexInRange:options:passingTest:"); + int _objc_msgSend_98( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + int opts, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_98( + obj, + sel, + range, + opts, + predicate, + ); + } + + late final __objc_msgSend_98Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_98 = __objc_msgSend_98Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, _NSRange, int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexesPassingTest_1 = _registerName1("indexesPassingTest:"); + ffi.Pointer _objc_msgSend_99( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_99( + obj, + sel, + predicate, + ); + } + + late final __objc_msgSend_99Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_99 = __objc_msgSend_99Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexesWithOptions_passingTest_1 = + _registerName1("indexesWithOptions:passingTest:"); + ffi.Pointer _objc_msgSend_100( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_100( + obj, + sel, + opts, + predicate, + ); + } + + late final __objc_msgSend_100Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_100 = __objc_msgSend_100Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexesInRange_options_passingTest_1 = + _registerName1("indexesInRange:options:passingTest:"); + ffi.Pointer _objc_msgSend_101( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + int opts, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_101( + obj, + sel, + range, + opts, + predicate, + ); + } + + late final __objc_msgSend_101Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_101 = __objc_msgSend_101Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_enumerateRangesUsingBlock_1 = + _registerName1("enumerateRangesUsingBlock:"); + void _objc_msgSend_102( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_102( + obj, + sel, + block, + ); + } + + late final __objc_msgSend_102Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_102 = __objc_msgSend_102Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_enumerateRangesWithOptions_usingBlock_1 = + _registerName1("enumerateRangesWithOptions:usingBlock:"); + void _objc_msgSend_103( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_103( + obj, + sel, + opts, + block, + ); + } + + late final __objc_msgSend_103Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_103 = __objc_msgSend_103Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_enumerateRangesInRange_options_usingBlock_1 = + _registerName1("enumerateRangesInRange:options:usingBlock:"); + void _objc_msgSend_104( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_104( + obj, + sel, + range, + opts, + block, + ); + } + + late final __objc_msgSend_104Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_104 = __objc_msgSend_104Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_objectsAtIndexes_1 = _registerName1("objectsAtIndexes:"); + ffi.Pointer _objc_msgSend_105( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer indexes, + ) { + return __objc_msgSend_105( + obj, + sel, + indexes, + ); + } + + late final __objc_msgSend_105Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_105 = __objc_msgSend_105Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_objectAtIndexedSubscript_1 = + _registerName1("objectAtIndexedSubscript:"); + late final _sel_enumerateObjectsUsingBlock_1 = + _registerName1("enumerateObjectsUsingBlock:"); + void _objc_msgSend_106( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_106( + obj, + sel, + block, + ); + } + + late final __objc_msgSend_106Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_106 = __objc_msgSend_106Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_enumerateObjectsWithOptions_usingBlock_1 = + _registerName1("enumerateObjectsWithOptions:usingBlock:"); + void _objc_msgSend_107( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_107( + obj, + sel, + opts, + block, + ); + } + + late final __objc_msgSend_107Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_107 = __objc_msgSend_107Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_enumerateObjectsAtIndexes_options_usingBlock_1 = + _registerName1("enumerateObjectsAtIndexes:options:usingBlock:"); + void _objc_msgSend_108( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer s, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_108( + obj, + sel, + s, + opts, + block, + ); + } + + late final __objc_msgSend_108Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_108 = __objc_msgSend_108Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexOfObjectPassingTest_1 = + _registerName1("indexOfObjectPassingTest:"); + int _objc_msgSend_109( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_109( + obj, + sel, + predicate, + ); + } + + late final __objc_msgSend_109Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_109 = __objc_msgSend_109Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexOfObjectWithOptions_passingTest_1 = + _registerName1("indexOfObjectWithOptions:passingTest:"); + int _objc_msgSend_110( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_110( + obj, + sel, + opts, + predicate, + ); + } + + late final __objc_msgSend_110Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_110 = __objc_msgSend_110Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexOfObjectAtIndexes_options_passingTest_1 = + _registerName1("indexOfObjectAtIndexes:options:passingTest:"); + int _objc_msgSend_111( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer s, + int opts, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_111( + obj, + sel, + s, + opts, + predicate, + ); + } + + late final __objc_msgSend_111Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_111 = __objc_msgSend_111Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexesOfObjectsPassingTest_1 = + _registerName1("indexesOfObjectsPassingTest:"); + ffi.Pointer _objc_msgSend_112( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_112( + obj, + sel, + predicate, + ); + } + + late final __objc_msgSend_112Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_112 = __objc_msgSend_112Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexesOfObjectsWithOptions_passingTest_1 = + _registerName1("indexesOfObjectsWithOptions:passingTest:"); + ffi.Pointer _objc_msgSend_113( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_113( + obj, + sel, + opts, + predicate, + ); + } + + late final __objc_msgSend_113Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_113 = __objc_msgSend_113Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexesOfObjectsAtIndexes_options_passingTest_1 = + _registerName1("indexesOfObjectsAtIndexes:options:passingTest:"); + ffi.Pointer _objc_msgSend_114( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer s, + int opts, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_114( + obj, + sel, + s, + opts, + predicate, + ); + } + + late final __objc_msgSend_114Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_114 = __objc_msgSend_114Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_sortedArrayUsingComparator_1 = + _registerName1("sortedArrayUsingComparator:"); + ffi.Pointer _objc_msgSend_115( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> cmptr, + ) { + return __objc_msgSend_115( + obj, + sel, + cmptr, + ); + } + + late final __objc_msgSend_115Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_115 = __objc_msgSend_115Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_sortedArrayWithOptions_usingComparator_1 = + _registerName1("sortedArrayWithOptions:usingComparator:"); + ffi.Pointer _objc_msgSend_116( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> cmptr, + ) { + return __objc_msgSend_116( + obj, + sel, + opts, + cmptr, + ); + } + + late final __objc_msgSend_116Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_116 = __objc_msgSend_116Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_indexOfObject_inSortedRange_options_usingComparator_1 = + _registerName1("indexOfObject:inSortedRange:options:usingComparator:"); + int _objc_msgSend_117( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer obj1, + _NSRange r, + int opts, + ffi.Pointer<_ObjCBlock> cmp, + ) { + return __objc_msgSend_117( + obj, + sel, + obj1, + r, + opts, + cmp, + ); + } + + late final __objc_msgSend_117Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_117 = __objc_msgSend_117Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_array1 = _registerName1("array"); + late final _sel_arrayWithObject_1 = _registerName1("arrayWithObject:"); + late final _sel_arrayWithObjects_count_1 = + _registerName1("arrayWithObjects:count:"); + late final _sel_arrayWithObjects_1 = _registerName1("arrayWithObjects:"); + late final _sel_arrayWithArray_1 = _registerName1("arrayWithArray:"); + late final _sel_initWithObjects_1 = _registerName1("initWithObjects:"); + late final _sel_initWithArray_1 = _registerName1("initWithArray:"); + late final _sel_initWithArray_copyItems_1 = + _registerName1("initWithArray:copyItems:"); + instancetype _objc_msgSend_118( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer array, + bool flag, + ) { + return __objc_msgSend_118( + obj, + sel, + array, + flag, + ); + } + + late final __objc_msgSend_118Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_118 = __objc_msgSend_118Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_initWithContentsOfURL_error_1 = + _registerName1("initWithContentsOfURL:error:"); + ffi.Pointer _objc_msgSend_119( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer> error, + ) { + return __objc_msgSend_119( + obj, + sel, + url, + error, + ); + } + + late final __objc_msgSend_119Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_119 = __objc_msgSend_119Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_arrayWithContentsOfURL_error_1 = + _registerName1("arrayWithContentsOfURL:error:"); + late final _sel_differenceFromArray_withOptions_usingEquivalenceTest_1 = + _registerName1("differenceFromArray:withOptions:usingEquivalenceTest:"); + ffi.Pointer _objc_msgSend_120( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + int options, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_120( + obj, + sel, + other, + options, + block, + ); + } + + late final __objc_msgSend_120Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_120 = __objc_msgSend_120Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_differenceFromArray_withOptions_1 = + _registerName1("differenceFromArray:withOptions:"); + ffi.Pointer _objc_msgSend_121( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + int options, + ) { + return __objc_msgSend_121( + obj, + sel, + other, + options, + ); + } + + late final __objc_msgSend_121Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_121 = __objc_msgSend_121Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_differenceFromArray_1 = + _registerName1("differenceFromArray:"); + late final _sel_arrayByApplyingDifference_1 = + _registerName1("arrayByApplyingDifference:"); + late final _sel_getObjects_1 = _registerName1("getObjects:"); + void _objc_msgSend_122( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> objects, + ) { + return __objc_msgSend_122( + obj, + sel, + objects, + ); + } + + late final __objc_msgSend_122Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_122 = __objc_msgSend_122Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_arrayWithContentsOfFile_1 = + _registerName1("arrayWithContentsOfFile:"); + ffi.Pointer _objc_msgSend_123( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ) { + return __objc_msgSend_123( + obj, + sel, + path, + ); + } + + late final __objc_msgSend_123Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_123 = __objc_msgSend_123Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_arrayWithContentsOfURL_1 = + _registerName1("arrayWithContentsOfURL:"); + ffi.Pointer _objc_msgSend_124( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ) { + return __objc_msgSend_124( + obj, + sel, + url, + ); + } + + late final __objc_msgSend_124Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_124 = __objc_msgSend_124Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithContentsOfFile_1 = + _registerName1("initWithContentsOfFile:"); + late final _sel_initWithContentsOfURL_1 = + _registerName1("initWithContentsOfURL:"); + late final _sel_writeToURL_atomically_1 = + _registerName1("writeToURL:atomically:"); + bool _objc_msgSend_125( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + bool atomically, + ) { + return __objc_msgSend_125( + obj, + sel, + url, + atomically, + ); + } + + late final __objc_msgSend_125Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_125 = __objc_msgSend_125Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_pathsMatchingExtensions_1 = + _registerName1("pathsMatchingExtensions:"); + late final _sel_valueForKey_1 = _registerName1("valueForKey:"); + late final _sel_setValue_forKey_1 = _registerName1("setValue:forKey:"); + void _objc_msgSend_126( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ffi.Pointer key, + ) { + return __objc_msgSend_126( + obj, + sel, + value, + key, + ); + } + + late final __objc_msgSend_126Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_126 = __objc_msgSend_126Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_addObserver_toObjectsAtIndexes_forKeyPath_options_context_1 = + _registerName1( + "addObserver:toObjectsAtIndexes:forKeyPath:options:context:"); + void _objc_msgSend_127( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer observer, + ffi.Pointer indexes, + ffi.Pointer keyPath, + int options, + ffi.Pointer context, + ) { + return __objc_msgSend_127( + obj, + sel, + observer, + indexes, + keyPath, + options, + context, + ); + } + + late final __objc_msgSend_127Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_127 = __objc_msgSend_127Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + + late final _sel_removeObserver_fromObjectsAtIndexes_forKeyPath_context_1 = + _registerName1("removeObserver:fromObjectsAtIndexes:forKeyPath:context:"); + void _objc_msgSend_128( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer observer, + ffi.Pointer indexes, + ffi.Pointer keyPath, + ffi.Pointer context, + ) { + return __objc_msgSend_128( + obj, + sel, + observer, + indexes, + keyPath, + context, + ); + } + + late final __objc_msgSend_128Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_128 = __objc_msgSend_128Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_removeObserver_fromObjectsAtIndexes_forKeyPath_1 = + _registerName1("removeObserver:fromObjectsAtIndexes:forKeyPath:"); + void _objc_msgSend_129( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer observer, + ffi.Pointer indexes, + ffi.Pointer keyPath, + ) { + return __objc_msgSend_129( + obj, + sel, + observer, + indexes, + keyPath, + ); + } + + late final __objc_msgSend_129Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_129 = __objc_msgSend_129Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_addObserver_forKeyPath_options_context_1 = + _registerName1("addObserver:forKeyPath:options:context:"); + void _objc_msgSend_130( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer observer, + ffi.Pointer keyPath, + int options, + ffi.Pointer context, + ) { + return __objc_msgSend_130( + obj, + sel, + observer, + keyPath, + options, + context, + ); + } + + late final __objc_msgSend_130Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_130 = __objc_msgSend_130Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + + late final _sel_removeObserver_forKeyPath_context_1 = + _registerName1("removeObserver:forKeyPath:context:"); + void _objc_msgSend_131( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer observer, + ffi.Pointer keyPath, + ffi.Pointer context, + ) { + return __objc_msgSend_131( + obj, + sel, + observer, + keyPath, + context, + ); + } + + late final __objc_msgSend_131Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_131 = __objc_msgSend_131Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_removeObserver_forKeyPath_1 = + _registerName1("removeObserver:forKeyPath:"); + void _objc_msgSend_132( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer observer, + ffi.Pointer keyPath, + ) { + return __objc_msgSend_132( + obj, + sel, + observer, + keyPath, + ); + } + + late final __objc_msgSend_132Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_132 = __objc_msgSend_132Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_sortedArrayUsingDescriptors_1 = + _registerName1("sortedArrayUsingDescriptors:"); + late final _class_NSPredicate1 = _getClass1("NSPredicate"); + late final _sel_predicateWithFormat_argumentArray_1 = + _registerName1("predicateWithFormat:argumentArray:"); + ffi.Pointer _objc_msgSend_133( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer predicateFormat, + ffi.Pointer arguments, + ) { + return __objc_msgSend_133( + obj, + sel, + predicateFormat, + arguments, + ); + } + + late final __objc_msgSend_133Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_133 = __objc_msgSend_133Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_predicateWithFormat_1 = + _registerName1("predicateWithFormat:"); + ffi.Pointer _objc_msgSend_134( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer predicateFormat, + ) { + return __objc_msgSend_134( + obj, + sel, + predicateFormat, + ); + } + + late final __objc_msgSend_134Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_134 = __objc_msgSend_134Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_predicateWithFormat_arguments_1 = + _registerName1("predicateWithFormat:arguments:"); + ffi.Pointer _objc_msgSend_135( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer predicateFormat, + ffi.Pointer argList, + ) { + return __objc_msgSend_135( + obj, + sel, + predicateFormat, + argList, + ); + } + + late final __objc_msgSend_135Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_135 = __objc_msgSend_135Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_predicateFromMetadataQueryString_1 = + _registerName1("predicateFromMetadataQueryString:"); + late final _sel_predicateWithValue_1 = _registerName1("predicateWithValue:"); + ffi.Pointer _objc_msgSend_136( + ffi.Pointer obj, + ffi.Pointer sel, + bool value, + ) { + return __objc_msgSend_136( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_136Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_136 = __objc_msgSend_136Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _class_NSDictionary1 = _getClass1("NSDictionary"); + late final _sel_objectForKey_1 = _registerName1("objectForKey:"); + late final _sel_keyEnumerator1 = _registerName1("keyEnumerator"); + late final _sel_initWithObjects_forKeys_count_1 = + _registerName1("initWithObjects:forKeys:count:"); + instancetype _objc_msgSend_137( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> objects, + ffi.Pointer> keys, + int cnt, + ) { + return __objc_msgSend_137( + obj, + sel, + objects, + keys, + cnt, + ); + } + + late final __objc_msgSend_137Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_137 = __objc_msgSend_137Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>, + int)>(); + + late final _sel_allKeys1 = _registerName1("allKeys"); + late final _sel_allKeysForObject_1 = _registerName1("allKeysForObject:"); + late final _sel_allValues1 = _registerName1("allValues"); + late final _sel_descriptionInStringsFileFormat1 = + _registerName1("descriptionInStringsFileFormat"); + late final _sel_isEqualToDictionary_1 = + _registerName1("isEqualToDictionary:"); + bool _objc_msgSend_138( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherDictionary, + ) { + return __objc_msgSend_138( + obj, + sel, + otherDictionary, + ); + } + + late final __objc_msgSend_138Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_138 = __objc_msgSend_138Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_objectsForKeys_notFoundMarker_1 = + _registerName1("objectsForKeys:notFoundMarker:"); + ffi.Pointer _objc_msgSend_139( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keys, + ffi.Pointer marker, + ) { + return __objc_msgSend_139( + obj, + sel, + keys, + marker, + ); + } + + late final __objc_msgSend_139Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_139 = __objc_msgSend_139Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_keysSortedByValueUsingSelector_1 = + _registerName1("keysSortedByValueUsingSelector:"); + late final _sel_getObjects_andKeys_count_1 = + _registerName1("getObjects:andKeys:count:"); + void _objc_msgSend_140( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> objects, + ffi.Pointer> keys, + int count, + ) { + return __objc_msgSend_140( + obj, + sel, + objects, + keys, + count, + ); + } + + late final __objc_msgSend_140Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_140 = __objc_msgSend_140Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>, + int)>(); + + late final _sel_objectForKeyedSubscript_1 = + _registerName1("objectForKeyedSubscript:"); + late final _sel_enumerateKeysAndObjectsUsingBlock_1 = + _registerName1("enumerateKeysAndObjectsUsingBlock:"); + void _objc_msgSend_141( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_141( + obj, + sel, + block, + ); + } + + late final __objc_msgSend_141Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_141 = __objc_msgSend_141Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_enumerateKeysAndObjectsWithOptions_usingBlock_1 = + _registerName1("enumerateKeysAndObjectsWithOptions:usingBlock:"); + void _objc_msgSend_142( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_142( + obj, + sel, + opts, + block, + ); + } + + late final __objc_msgSend_142Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_142 = __objc_msgSend_142Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_keysSortedByValueUsingComparator_1 = + _registerName1("keysSortedByValueUsingComparator:"); + late final _sel_keysSortedByValueWithOptions_usingComparator_1 = + _registerName1("keysSortedByValueWithOptions:usingComparator:"); + late final _sel_keysOfEntriesPassingTest_1 = + _registerName1("keysOfEntriesPassingTest:"); + ffi.Pointer _objc_msgSend_143( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_143( + obj, + sel, + predicate, + ); + } + + late final __objc_msgSend_143Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_143 = __objc_msgSend_143Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_keysOfEntriesWithOptions_passingTest_1 = + _registerName1("keysOfEntriesWithOptions:passingTest:"); + ffi.Pointer _objc_msgSend_144( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_144( + obj, + sel, + opts, + predicate, + ); + } + + late final __objc_msgSend_144Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_144 = __objc_msgSend_144Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_getObjects_andKeys_1 = _registerName1("getObjects:andKeys:"); + void _objc_msgSend_145( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> objects, + ffi.Pointer> keys, + ) { + return __objc_msgSend_145( + obj, + sel, + objects, + keys, + ); + } + + late final __objc_msgSend_145Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_145 = __objc_msgSend_145Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); + + late final _sel_dictionaryWithContentsOfFile_1 = + _registerName1("dictionaryWithContentsOfFile:"); + ffi.Pointer _objc_msgSend_146( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ) { + return __objc_msgSend_146( + obj, + sel, + path, + ); + } + + late final __objc_msgSend_146Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_146 = __objc_msgSend_146Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_dictionaryWithContentsOfURL_1 = + _registerName1("dictionaryWithContentsOfURL:"); + ffi.Pointer _objc_msgSend_147( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ) { + return __objc_msgSend_147( + obj, + sel, + url, + ); + } + + late final __objc_msgSend_147Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_147 = __objc_msgSend_147Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_dictionary1 = _registerName1("dictionary"); + late final _sel_dictionaryWithObject_forKey_1 = + _registerName1("dictionaryWithObject:forKey:"); + instancetype _objc_msgSend_148( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer object, + ffi.Pointer key, + ) { + return __objc_msgSend_148( + obj, + sel, + object, + key, + ); + } + + late final __objc_msgSend_148Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_148 = __objc_msgSend_148Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_dictionaryWithObjects_forKeys_count_1 = + _registerName1("dictionaryWithObjects:forKeys:count:"); + late final _sel_dictionaryWithObjectsAndKeys_1 = + _registerName1("dictionaryWithObjectsAndKeys:"); + late final _sel_dictionaryWithDictionary_1 = + _registerName1("dictionaryWithDictionary:"); + instancetype _objc_msgSend_149( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer dict, + ) { + return __objc_msgSend_149( + obj, + sel, + dict, + ); + } + + late final __objc_msgSend_149Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_149 = __objc_msgSend_149Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_dictionaryWithObjects_forKeys_1 = + _registerName1("dictionaryWithObjects:forKeys:"); + instancetype _objc_msgSend_150( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer objects, + ffi.Pointer keys, + ) { + return __objc_msgSend_150( + obj, + sel, + objects, + keys, + ); + } + + late final __objc_msgSend_150Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_150 = __objc_msgSend_150Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithObjectsAndKeys_1 = + _registerName1("initWithObjectsAndKeys:"); + late final _sel_initWithDictionary_1 = _registerName1("initWithDictionary:"); + late final _sel_initWithDictionary_copyItems_1 = + _registerName1("initWithDictionary:copyItems:"); + instancetype _objc_msgSend_151( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherDictionary, + bool flag, + ) { + return __objc_msgSend_151( + obj, + sel, + otherDictionary, + flag, + ); + } + + late final __objc_msgSend_151Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_151 = __objc_msgSend_151Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_initWithObjects_forKeys_1 = + _registerName1("initWithObjects:forKeys:"); + ffi.Pointer _objc_msgSend_152( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer> error, + ) { + return __objc_msgSend_152( + obj, + sel, + url, + error, + ); + } + + late final __objc_msgSend_152Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_152 = __objc_msgSend_152Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_dictionaryWithContentsOfURL_error_1 = + _registerName1("dictionaryWithContentsOfURL:error:"); + late final _sel_sharedKeySetForKeys_1 = + _registerName1("sharedKeySetForKeys:"); + late final _sel_countByEnumeratingWithState_objects_count_1 = + _registerName1("countByEnumeratingWithState:objects:count:"); + int _objc_msgSend_153( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer state, + ffi.Pointer> buffer, + int len, + ) { + return __objc_msgSend_153( + obj, + sel, + state, + buffer, + len, + ); + } + + late final __objc_msgSend_153Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_153 = __objc_msgSend_153Ptr.asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + int)>(); + + late final _sel_fileSize1 = _registerName1("fileSize"); + int _objc_msgSend_154( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_154( + obj, + sel, + ); + } + + late final __objc_msgSend_154Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLongLong Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_154 = __objc_msgSend_154Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSDate1 = _getClass1("NSDate"); + late final _sel_timeIntervalSinceReferenceDate1 = + _registerName1("timeIntervalSinceReferenceDate"); + double _objc_msgSend_155( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_155( + obj, + sel, + ); + } + + late final __objc_msgSend_155Ptr = _lookup< + ffi.NativeFunction< + ffi.Double Function(ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_fpret'); + late final __objc_msgSend_155 = __objc_msgSend_155Ptr.asFunction< + double Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithTimeIntervalSinceReferenceDate_1 = + _registerName1("initWithTimeIntervalSinceReferenceDate:"); + instancetype _objc_msgSend_156( + ffi.Pointer obj, + ffi.Pointer sel, + double ti, + ) { + return __objc_msgSend_156( + obj, + sel, + ti, + ); + } + + late final __objc_msgSend_156Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Double)>>('objc_msgSend'); + late final __objc_msgSend_156 = __objc_msgSend_156Ptr.asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer, double)>(); + + late final _sel_timeIntervalSinceDate_1 = + _registerName1("timeIntervalSinceDate:"); + double _objc_msgSend_157( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anotherDate, + ) { + return __objc_msgSend_157( + obj, + sel, + anotherDate, + ); + } + + late final __objc_msgSend_157Ptr = _lookup< + ffi.NativeFunction< + ffi.Double Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_fpret'); + late final __objc_msgSend_157 = __objc_msgSend_157Ptr.asFunction< + double Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_timeIntervalSinceNow1 = + _registerName1("timeIntervalSinceNow"); + late final _sel_timeIntervalSince19701 = + _registerName1("timeIntervalSince1970"); + late final _sel_addTimeInterval_1 = _registerName1("addTimeInterval:"); + late final _sel_dateByAddingTimeInterval_1 = + _registerName1("dateByAddingTimeInterval:"); + late final _sel_earlierDate_1 = _registerName1("earlierDate:"); + ffi.Pointer _objc_msgSend_158( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anotherDate, + ) { + return __objc_msgSend_158( + obj, + sel, + anotherDate, + ); + } + + late final __objc_msgSend_158Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_158 = __objc_msgSend_158Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_laterDate_1 = _registerName1("laterDate:"); + late final _sel_compare_1 = _registerName1("compare:"); + int _objc_msgSend_159( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + ) { + return __objc_msgSend_159( + obj, + sel, + other, + ); + } + + late final __objc_msgSend_159Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_159 = __objc_msgSend_159Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_isEqualToDate_1 = _registerName1("isEqualToDate:"); + bool _objc_msgSend_160( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherDate, + ) { + return __objc_msgSend_160( + obj, + sel, + otherDate, + ); + } + + late final __objc_msgSend_160Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_160 = __objc_msgSend_160Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_date1 = _registerName1("date"); + late final _sel_dateWithTimeIntervalSinceNow_1 = + _registerName1("dateWithTimeIntervalSinceNow:"); + late final _sel_dateWithTimeIntervalSinceReferenceDate_1 = + _registerName1("dateWithTimeIntervalSinceReferenceDate:"); + late final _sel_dateWithTimeIntervalSince1970_1 = + _registerName1("dateWithTimeIntervalSince1970:"); + late final _sel_dateWithTimeInterval_sinceDate_1 = + _registerName1("dateWithTimeInterval:sinceDate:"); + instancetype _objc_msgSend_161( + ffi.Pointer obj, + ffi.Pointer sel, + double secsToBeAdded, + ffi.Pointer date, + ) { + return __objc_msgSend_161( + obj, + sel, + secsToBeAdded, + date, + ); + } + + late final __objc_msgSend_161Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Double, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_161 = __objc_msgSend_161Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + double, ffi.Pointer)>(); + + late final _sel_distantFuture1 = _registerName1("distantFuture"); + ffi.Pointer _objc_msgSend_162( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_162( + obj, + sel, + ); + } + + late final __objc_msgSend_162Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_162 = __objc_msgSend_162Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_distantPast1 = _registerName1("distantPast"); + late final _sel_now1 = _registerName1("now"); + late final _sel_initWithTimeIntervalSinceNow_1 = + _registerName1("initWithTimeIntervalSinceNow:"); + late final _sel_initWithTimeIntervalSince1970_1 = + _registerName1("initWithTimeIntervalSince1970:"); + late final _sel_initWithTimeInterval_sinceDate_1 = + _registerName1("initWithTimeInterval:sinceDate:"); + late final _sel_dateWithNaturalLanguageString_locale_1 = + _registerName1("dateWithNaturalLanguageString:locale:"); + ffi.Pointer _objc_msgSend_163( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + ffi.Pointer locale, + ) { + return __objc_msgSend_163( + obj, + sel, + string, + locale, + ); + } + + late final __objc_msgSend_163Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_163 = __objc_msgSend_163Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_dateWithNaturalLanguageString_1 = + _registerName1("dateWithNaturalLanguageString:"); + late final _sel_dateWithString_1 = _registerName1("dateWithString:"); + late final _class_NSCalendarDate1 = _getClass1("NSCalendarDate"); + late final _sel_calendarDate1 = _registerName1("calendarDate"); + late final _sel_dateWithString_calendarFormat_locale_1 = + _registerName1("dateWithString:calendarFormat:locale:"); + ffi.Pointer _objc_msgSend_164( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer description, + ffi.Pointer format, + ffi.Pointer locale, + ) { + return __objc_msgSend_164( + obj, + sel, + description, + format, + locale, + ); + } + + late final __objc_msgSend_164Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_164 = __objc_msgSend_164Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_dateWithString_calendarFormat_1 = + _registerName1("dateWithString:calendarFormat:"); + ffi.Pointer _objc_msgSend_165( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer description, + ffi.Pointer format, + ) { + return __objc_msgSend_165( + obj, + sel, + description, + format, + ); + } + + late final __objc_msgSend_165Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_165 = __objc_msgSend_165Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSTimeZone1 = _getClass1("NSTimeZone"); + late final _sel_name1 = _registerName1("name"); + late final _sel_data1 = _registerName1("data"); + late final _sel_secondsFromGMTForDate_1 = + _registerName1("secondsFromGMTForDate:"); + int _objc_msgSend_166( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aDate, + ) { + return __objc_msgSend_166( + obj, + sel, + aDate, + ); + } + + late final __objc_msgSend_166Ptr = _lookup< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_166 = __objc_msgSend_166Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_abbreviationForDate_1 = + _registerName1("abbreviationForDate:"); + ffi.Pointer _objc_msgSend_167( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aDate, + ) { + return __objc_msgSend_167( + obj, + sel, + aDate, + ); + } + + late final __objc_msgSend_167Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_167 = __objc_msgSend_167Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_isDaylightSavingTimeForDate_1 = + _registerName1("isDaylightSavingTimeForDate:"); + late final _sel_daylightSavingTimeOffsetForDate_1 = + _registerName1("daylightSavingTimeOffsetForDate:"); + late final _sel_nextDaylightSavingTimeTransitionAfterDate_1 = + _registerName1("nextDaylightSavingTimeTransitionAfterDate:"); + late final _sel_systemTimeZone1 = _registerName1("systemTimeZone"); + ffi.Pointer _objc_msgSend_168( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_168( + obj, + sel, + ); + } + + late final __objc_msgSend_168Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_168 = __objc_msgSend_168Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_resetSystemTimeZone1 = _registerName1("resetSystemTimeZone"); + late final _sel_defaultTimeZone1 = _registerName1("defaultTimeZone"); + late final _sel_setDefaultTimeZone_1 = _registerName1("setDefaultTimeZone:"); + void _objc_msgSend_169( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_169( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_169Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_169 = __objc_msgSend_169Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_localTimeZone1 = _registerName1("localTimeZone"); + late final _sel_knownTimeZoneNames1 = _registerName1("knownTimeZoneNames"); + late final _sel_abbreviationDictionary1 = + _registerName1("abbreviationDictionary"); + ffi.Pointer _objc_msgSend_170( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_170( + obj, + sel, + ); + } + + late final __objc_msgSend_170Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_170 = __objc_msgSend_170Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setAbbreviationDictionary_1 = + _registerName1("setAbbreviationDictionary:"); + void _objc_msgSend_171( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_171( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_171Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_171 = __objc_msgSend_171Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_timeZoneDataVersion1 = _registerName1("timeZoneDataVersion"); + late final _sel_secondsFromGMT1 = _registerName1("secondsFromGMT"); + late final _sel_abbreviation1 = _registerName1("abbreviation"); + late final _sel_isDaylightSavingTime1 = + _registerName1("isDaylightSavingTime"); + late final _sel_daylightSavingTimeOffset1 = + _registerName1("daylightSavingTimeOffset"); + late final _sel_nextDaylightSavingTimeTransition1 = + _registerName1("nextDaylightSavingTimeTransition"); + late final _sel_isEqualToTimeZone_1 = _registerName1("isEqualToTimeZone:"); + bool _objc_msgSend_172( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aTimeZone, + ) { + return __objc_msgSend_172( + obj, + sel, + aTimeZone, + ); + } + + late final __objc_msgSend_172Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_172 = __objc_msgSend_172Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSLocale1 = _getClass1("NSLocale"); + late final _sel_displayNameForKey_value_1 = + _registerName1("displayNameForKey:value:"); + ffi.Pointer _objc_msgSend_173( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ffi.Pointer value, + ) { + return __objc_msgSend_173( + obj, + sel, + key, + value, + ); + } + + late final __objc_msgSend_173Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_173 = __objc_msgSend_173Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithLocaleIdentifier_1 = + _registerName1("initWithLocaleIdentifier:"); + late final _sel_localeIdentifier1 = _registerName1("localeIdentifier"); + late final _sel_localizedStringForLocaleIdentifier_1 = + _registerName1("localizedStringForLocaleIdentifier:"); + late final _sel_languageCode1 = _registerName1("languageCode"); + late final _sel_localizedStringForLanguageCode_1 = + _registerName1("localizedStringForLanguageCode:"); + late final _sel_countryCode1 = _registerName1("countryCode"); + late final _sel_localizedStringForCountryCode_1 = + _registerName1("localizedStringForCountryCode:"); + late final _sel_scriptCode1 = _registerName1("scriptCode"); + late final _sel_localizedStringForScriptCode_1 = + _registerName1("localizedStringForScriptCode:"); + late final _sel_variantCode1 = _registerName1("variantCode"); + late final _sel_localizedStringForVariantCode_1 = + _registerName1("localizedStringForVariantCode:"); + late final _class_NSCharacterSet1 = _getClass1("NSCharacterSet"); + late final _sel_controlCharacterSet1 = _registerName1("controlCharacterSet"); + ffi.Pointer _objc_msgSend_174( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_174( + obj, + sel, + ); + } + + late final __objc_msgSend_174Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_174 = __objc_msgSend_174Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_whitespaceCharacterSet1 = + _registerName1("whitespaceCharacterSet"); + late final _sel_whitespaceAndNewlineCharacterSet1 = + _registerName1("whitespaceAndNewlineCharacterSet"); + late final _sel_decimalDigitCharacterSet1 = + _registerName1("decimalDigitCharacterSet"); + late final _sel_letterCharacterSet1 = _registerName1("letterCharacterSet"); + late final _sel_lowercaseLetterCharacterSet1 = + _registerName1("lowercaseLetterCharacterSet"); + late final _sel_uppercaseLetterCharacterSet1 = + _registerName1("uppercaseLetterCharacterSet"); + late final _sel_nonBaseCharacterSet1 = _registerName1("nonBaseCharacterSet"); + late final _sel_alphanumericCharacterSet1 = + _registerName1("alphanumericCharacterSet"); + late final _sel_decomposableCharacterSet1 = + _registerName1("decomposableCharacterSet"); + late final _sel_illegalCharacterSet1 = _registerName1("illegalCharacterSet"); + late final _sel_punctuationCharacterSet1 = + _registerName1("punctuationCharacterSet"); + late final _sel_capitalizedLetterCharacterSet1 = + _registerName1("capitalizedLetterCharacterSet"); + late final _sel_symbolCharacterSet1 = _registerName1("symbolCharacterSet"); + late final _sel_newlineCharacterSet1 = _registerName1("newlineCharacterSet"); + late final _sel_characterSetWithRange_1 = + _registerName1("characterSetWithRange:"); + ffi.Pointer _objc_msgSend_175( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange aRange, + ) { + return __objc_msgSend_175( + obj, + sel, + aRange, + ); + } + + late final __objc_msgSend_175Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_175 = __objc_msgSend_175Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _sel_characterSetWithCharactersInString_1 = + _registerName1("characterSetWithCharactersInString:"); + ffi.Pointer _objc_msgSend_176( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aString, + ) { + return __objc_msgSend_176( + obj, + sel, + aString, + ); + } + + late final __objc_msgSend_176Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_176 = __objc_msgSend_176Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_characterSetWithBitmapRepresentation_1 = + _registerName1("characterSetWithBitmapRepresentation:"); + ffi.Pointer _objc_msgSend_177( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ) { + return __objc_msgSend_177( + obj, + sel, + data, + ); + } + + late final __objc_msgSend_177Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_177 = __objc_msgSend_177Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_characterSetWithContentsOfFile_1 = + _registerName1("characterSetWithContentsOfFile:"); + late final _sel_characterIsMember_1 = _registerName1("characterIsMember:"); + bool _objc_msgSend_178( + ffi.Pointer obj, + ffi.Pointer sel, + int aCharacter, + ) { + return __objc_msgSend_178( + obj, + sel, + aCharacter, + ); + } + + late final __objc_msgSend_178Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedShort)>>('objc_msgSend'); + late final __objc_msgSend_178 = __objc_msgSend_178Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_bitmapRepresentation1 = + _registerName1("bitmapRepresentation"); + late final _sel_invertedSet1 = _registerName1("invertedSet"); + late final _sel_longCharacterIsMember_1 = + _registerName1("longCharacterIsMember:"); + bool _objc_msgSend_179( + ffi.Pointer obj, + ffi.Pointer sel, + int theLongChar, + ) { + return __objc_msgSend_179( + obj, + sel, + theLongChar, + ); + } + + late final __objc_msgSend_179Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedInt)>>('objc_msgSend'); + late final __objc_msgSend_179 = __objc_msgSend_179Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_isSupersetOfSet_1 = _registerName1("isSupersetOfSet:"); + bool _objc_msgSend_180( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer theOtherSet, + ) { + return __objc_msgSend_180( + obj, + sel, + theOtherSet, + ); + } + + late final __objc_msgSend_180Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_180 = __objc_msgSend_180Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_hasMemberInPlane_1 = _registerName1("hasMemberInPlane:"); + bool _objc_msgSend_181( + ffi.Pointer obj, + ffi.Pointer sel, + int thePlane, + ) { + return __objc_msgSend_181( + obj, + sel, + thePlane, + ); + } + + late final __objc_msgSend_181Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Uint8)>>('objc_msgSend'); + late final __objc_msgSend_181 = __objc_msgSend_181Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_URLUserAllowedCharacterSet1 = + _registerName1("URLUserAllowedCharacterSet"); + late final _sel_URLPasswordAllowedCharacterSet1 = + _registerName1("URLPasswordAllowedCharacterSet"); + late final _sel_URLHostAllowedCharacterSet1 = + _registerName1("URLHostAllowedCharacterSet"); + late final _sel_URLPathAllowedCharacterSet1 = + _registerName1("URLPathAllowedCharacterSet"); + late final _sel_URLQueryAllowedCharacterSet1 = + _registerName1("URLQueryAllowedCharacterSet"); + late final _sel_URLFragmentAllowedCharacterSet1 = + _registerName1("URLFragmentAllowedCharacterSet"); + late final _sel_exemplarCharacterSet1 = + _registerName1("exemplarCharacterSet"); + late final _sel_calendarIdentifier1 = _registerName1("calendarIdentifier"); + late final _sel_localizedStringForCalendarIdentifier_1 = + _registerName1("localizedStringForCalendarIdentifier:"); + late final _sel_collationIdentifier1 = _registerName1("collationIdentifier"); + late final _sel_localizedStringForCollationIdentifier_1 = + _registerName1("localizedStringForCollationIdentifier:"); + late final _sel_usesMetricSystem1 = _registerName1("usesMetricSystem"); + late final _sel_decimalSeparator1 = _registerName1("decimalSeparator"); + late final _sel_groupingSeparator1 = _registerName1("groupingSeparator"); + late final _sel_currencySymbol1 = _registerName1("currencySymbol"); + late final _sel_currencyCode1 = _registerName1("currencyCode"); + late final _sel_localizedStringForCurrencyCode_1 = + _registerName1("localizedStringForCurrencyCode:"); + late final _sel_collatorIdentifier1 = _registerName1("collatorIdentifier"); + late final _sel_localizedStringForCollatorIdentifier_1 = + _registerName1("localizedStringForCollatorIdentifier:"); + late final _sel_quotationBeginDelimiter1 = + _registerName1("quotationBeginDelimiter"); + late final _sel_quotationEndDelimiter1 = + _registerName1("quotationEndDelimiter"); + late final _sel_alternateQuotationBeginDelimiter1 = + _registerName1("alternateQuotationBeginDelimiter"); + late final _sel_alternateQuotationEndDelimiter1 = + _registerName1("alternateQuotationEndDelimiter"); + late final _sel_autoupdatingCurrentLocale1 = + _registerName1("autoupdatingCurrentLocale"); + ffi.Pointer _objc_msgSend_182( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_182( + obj, + sel, + ); + } + + late final __objc_msgSend_182Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_182 = __objc_msgSend_182Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_currentLocale1 = _registerName1("currentLocale"); + late final _sel_systemLocale1 = _registerName1("systemLocale"); + late final _sel_localeWithLocaleIdentifier_1 = + _registerName1("localeWithLocaleIdentifier:"); + late final _sel_availableLocaleIdentifiers1 = + _registerName1("availableLocaleIdentifiers"); + late final _sel_ISOLanguageCodes1 = _registerName1("ISOLanguageCodes"); + late final _sel_ISOCountryCodes1 = _registerName1("ISOCountryCodes"); + late final _sel_ISOCurrencyCodes1 = _registerName1("ISOCurrencyCodes"); + late final _sel_commonISOCurrencyCodes1 = + _registerName1("commonISOCurrencyCodes"); + late final _sel_preferredLanguages1 = _registerName1("preferredLanguages"); + late final _sel_componentsFromLocaleIdentifier_1 = + _registerName1("componentsFromLocaleIdentifier:"); + late final _sel_localeIdentifierFromComponents_1 = + _registerName1("localeIdentifierFromComponents:"); + ffi.Pointer _objc_msgSend_183( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer dict, + ) { + return __objc_msgSend_183( + obj, + sel, + dict, + ); + } + + late final __objc_msgSend_183Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_183 = __objc_msgSend_183Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_canonicalLocaleIdentifierFromString_1 = + _registerName1("canonicalLocaleIdentifierFromString:"); + late final _sel_canonicalLanguageIdentifierFromString_1 = + _registerName1("canonicalLanguageIdentifierFromString:"); + late final _sel_localeIdentifierFromWindowsLocaleCode_1 = + _registerName1("localeIdentifierFromWindowsLocaleCode:"); + ffi.Pointer _objc_msgSend_184( + ffi.Pointer obj, + ffi.Pointer sel, + int lcid, + ) { + return __objc_msgSend_184( + obj, + sel, + lcid, + ); + } + + late final __objc_msgSend_184Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Uint32)>>('objc_msgSend'); + late final __objc_msgSend_184 = __objc_msgSend_184Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_windowsLocaleCodeFromLocaleIdentifier_1 = + _registerName1("windowsLocaleCodeFromLocaleIdentifier:"); + int _objc_msgSend_185( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer localeIdentifier, + ) { + return __objc_msgSend_185( + obj, + sel, + localeIdentifier, + ); + } + + late final __objc_msgSend_185Ptr = _lookup< + ffi.NativeFunction< + ffi.Uint32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_185 = __objc_msgSend_185Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_characterDirectionForLanguage_1 = + _registerName1("characterDirectionForLanguage:"); + int _objc_msgSend_186( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer isoLangCode, + ) { + return __objc_msgSend_186( + obj, + sel, + isoLangCode, + ); + } + + late final __objc_msgSend_186Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_186 = __objc_msgSend_186Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_lineDirectionForLanguage_1 = + _registerName1("lineDirectionForLanguage:"); + late final _sel_localizedName_locale_1 = + _registerName1("localizedName:locale:"); + ffi.Pointer _objc_msgSend_187( + ffi.Pointer obj, + ffi.Pointer sel, + int style, + ffi.Pointer locale, + ) { + return __objc_msgSend_187( + obj, + sel, + style, + locale, + ); + } + + late final __objc_msgSend_187Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_187 = __objc_msgSend_187Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_timeZoneWithName_1 = _registerName1("timeZoneWithName:"); + late final _sel_timeZoneWithName_data_1 = + _registerName1("timeZoneWithName:data:"); + instancetype _objc_msgSend_188( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer tzName, + ffi.Pointer aData, + ) { + return __objc_msgSend_188( + obj, + sel, + tzName, + aData, + ); + } + + late final __objc_msgSend_188Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_188 = __objc_msgSend_188Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithName_1 = _registerName1("initWithName:"); + late final _sel_initWithName_data_1 = _registerName1("initWithName:data:"); + late final _sel_timeZoneForSecondsFromGMT_1 = + _registerName1("timeZoneForSecondsFromGMT:"); + instancetype _objc_msgSend_189( + ffi.Pointer obj, + ffi.Pointer sel, + int seconds, + ) { + return __objc_msgSend_189( + obj, + sel, + seconds, + ); + } + + late final __objc_msgSend_189Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_189 = __objc_msgSend_189Ptr.asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_timeZoneWithAbbreviation_1 = + _registerName1("timeZoneWithAbbreviation:"); + late final _sel_dateWithYear_month_day_hour_minute_second_timeZone_1 = + _registerName1("dateWithYear:month:day:hour:minute:second:timeZone:"); + ffi.Pointer _objc_msgSend_190( + ffi.Pointer obj, + ffi.Pointer sel, + int year, + int month, + int day, + int hour, + int minute, + int second, + ffi.Pointer aTimeZone, + ) { + return __objc_msgSend_190( + obj, + sel, + year, + month, + day, + hour, + minute, + second, + aTimeZone, + ); + } + + late final __objc_msgSend_190Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_190 = __objc_msgSend_190Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + int, + int, + int, + int, + ffi.Pointer)>(); + + late final _sel_dateByAddingYears_months_days_hours_minutes_seconds_1 = + _registerName1("dateByAddingYears:months:days:hours:minutes:seconds:"); + ffi.Pointer _objc_msgSend_191( + ffi.Pointer obj, + ffi.Pointer sel, + int year, + int month, + int day, + int hour, + int minute, + int second, + ) { + return __objc_msgSend_191( + obj, + sel, + year, + month, + day, + hour, + minute, + second, + ); + } + + late final __objc_msgSend_191Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_191 = __objc_msgSend_191Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, int, int, int, int, int)>(); + + late final _sel_dayOfCommonEra1 = _registerName1("dayOfCommonEra"); + late final _sel_dayOfMonth1 = _registerName1("dayOfMonth"); + late final _sel_dayOfWeek1 = _registerName1("dayOfWeek"); + late final _sel_dayOfYear1 = _registerName1("dayOfYear"); + late final _sel_hourOfDay1 = _registerName1("hourOfDay"); + late final _sel_minuteOfHour1 = _registerName1("minuteOfHour"); + late final _sel_monthOfYear1 = _registerName1("monthOfYear"); + late final _sel_secondOfMinute1 = _registerName1("secondOfMinute"); + late final _sel_yearOfCommonEra1 = _registerName1("yearOfCommonEra"); + late final _sel_calendarFormat1 = _registerName1("calendarFormat"); + late final _sel_descriptionWithCalendarFormat_locale_1 = + _registerName1("descriptionWithCalendarFormat:locale:"); + late final _sel_descriptionWithCalendarFormat_1 = + _registerName1("descriptionWithCalendarFormat:"); + late final _sel_timeZone1 = _registerName1("timeZone"); + late final _sel_initWithString_calendarFormat_locale_1 = + _registerName1("initWithString:calendarFormat:locale:"); + late final _sel_initWithString_calendarFormat_1 = + _registerName1("initWithString:calendarFormat:"); + late final _sel_initWithYear_month_day_hour_minute_second_timeZone_1 = + _registerName1("initWithYear:month:day:hour:minute:second:timeZone:"); + late final _sel_setCalendarFormat_1 = _registerName1("setCalendarFormat:"); + void _objc_msgSend_192( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ) { + return __objc_msgSend_192( + obj, + sel, + format, + ); + } + + late final __objc_msgSend_192Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_192 = __objc_msgSend_192Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setTimeZone_1 = _registerName1("setTimeZone:"); + void _objc_msgSend_193( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aTimeZone, + ) { + return __objc_msgSend_193( + obj, + sel, + aTimeZone, + ); + } + + late final __objc_msgSend_193Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_193 = __objc_msgSend_193Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_years_months_days_hours_minutes_seconds_sinceDate_1 = + _registerName1("years:months:days:hours:minutes:seconds:sinceDate:"); + void _objc_msgSend_194( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer yp, + ffi.Pointer mop, + ffi.Pointer dp, + ffi.Pointer hp, + ffi.Pointer mip, + ffi.Pointer sp, + ffi.Pointer date, + ) { + return __objc_msgSend_194( + obj, + sel, + yp, + mop, + dp, + hp, + mip, + sp, + date, + ); + } + + late final __objc_msgSend_194Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_194 = __objc_msgSend_194Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_dateWithCalendarFormat_timeZone_1 = + _registerName1("dateWithCalendarFormat:timeZone:"); + ffi.Pointer _objc_msgSend_195( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer aTimeZone, + ) { + return __objc_msgSend_195( + obj, + sel, + format, + aTimeZone, + ); + } + + late final __objc_msgSend_195Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_195 = __objc_msgSend_195Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_descriptionWithCalendarFormat_timeZone_locale_1 = + _registerName1("descriptionWithCalendarFormat:timeZone:locale:"); + ffi.Pointer _objc_msgSend_196( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer aTimeZone, + ffi.Pointer locale, + ) { + return __objc_msgSend_196( + obj, + sel, + format, + aTimeZone, + locale, + ); + } + + late final __objc_msgSend_196Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_196 = __objc_msgSend_196Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_fileModificationDate1 = + _registerName1("fileModificationDate"); + late final _sel_fileType1 = _registerName1("fileType"); + late final _sel_filePosixPermissions1 = + _registerName1("filePosixPermissions"); + late final _sel_fileOwnerAccountName1 = + _registerName1("fileOwnerAccountName"); + late final _sel_fileGroupOwnerAccountName1 = + _registerName1("fileGroupOwnerAccountName"); + late final _sel_fileSystemNumber1 = _registerName1("fileSystemNumber"); + late final _sel_fileSystemFileNumber1 = + _registerName1("fileSystemFileNumber"); + late final _sel_fileExtensionHidden1 = _registerName1("fileExtensionHidden"); + late final _sel_fileHFSCreatorCode1 = _registerName1("fileHFSCreatorCode"); + int _objc_msgSend_197( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_197( + obj, + sel, + ); + } + + late final __objc_msgSend_197Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedInt Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_197 = __objc_msgSend_197Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_fileHFSTypeCode1 = _registerName1("fileHFSTypeCode"); + late final _sel_fileIsImmutable1 = _registerName1("fileIsImmutable"); + late final _sel_fileIsAppendOnly1 = _registerName1("fileIsAppendOnly"); + late final _sel_fileCreationDate1 = _registerName1("fileCreationDate"); + late final _sel_fileOwnerAccountID1 = _registerName1("fileOwnerAccountID"); + ffi.Pointer _objc_msgSend_198( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_198( + obj, + sel, + ); + } + + late final __objc_msgSend_198Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_198 = __objc_msgSend_198Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_fileGroupOwnerAccountID1 = + _registerName1("fileGroupOwnerAccountID"); + late final _sel_predicateWithBlock_1 = _registerName1("predicateWithBlock:"); + ffi.Pointer _objc_msgSend_199( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_199( + obj, + sel, + block, + ); + } + + late final __objc_msgSend_199Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_199 = __objc_msgSend_199Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_predicateFormat1 = _registerName1("predicateFormat"); + late final _sel_predicateWithSubstitutionVariables_1 = + _registerName1("predicateWithSubstitutionVariables:"); + late final _sel_evaluateWithObject_1 = _registerName1("evaluateWithObject:"); + late final _sel_evaluateWithObject_substitutionVariables_1 = + _registerName1("evaluateWithObject:substitutionVariables:"); + bool _objc_msgSend_200( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer object, + ffi.Pointer bindings, + ) { + return __objc_msgSend_200( + obj, + sel, + object, + bindings, + ); + } + + late final __objc_msgSend_200Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_200 = __objc_msgSend_200Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_allowEvaluation1 = _registerName1("allowEvaluation"); + late final _sel_filteredArrayUsingPredicate_1 = + _registerName1("filteredArrayUsingPredicate:"); + ffi.Pointer _objc_msgSend_201( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer predicate, + ) { + return __objc_msgSend_201( + obj, + sel, + predicate, + ); + } + + late final __objc_msgSend_201Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_201 = __objc_msgSend_201Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithChar_1 = _registerName1("initWithChar:"); + ffi.Pointer _objc_msgSend_202( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_202( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_202Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Char)>>('objc_msgSend'); + late final __objc_msgSend_202 = __objc_msgSend_202Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithUnsignedChar_1 = + _registerName1("initWithUnsignedChar:"); + ffi.Pointer _objc_msgSend_203( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_203( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_203Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedChar)>>('objc_msgSend'); + late final __objc_msgSend_203 = __objc_msgSend_203Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithShort_1 = _registerName1("initWithShort:"); + ffi.Pointer _objc_msgSend_204( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_204( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_204Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Short)>>('objc_msgSend'); + late final __objc_msgSend_204 = __objc_msgSend_204Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithUnsignedShort_1 = + _registerName1("initWithUnsignedShort:"); + ffi.Pointer _objc_msgSend_205( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_205( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_205Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedShort)>>('objc_msgSend'); + late final __objc_msgSend_205 = __objc_msgSend_205Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithInt_1 = _registerName1("initWithInt:"); + ffi.Pointer _objc_msgSend_206( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_206( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_206Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int)>>('objc_msgSend'); + late final __objc_msgSend_206 = __objc_msgSend_206Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithUnsignedInt_1 = + _registerName1("initWithUnsignedInt:"); + ffi.Pointer _objc_msgSend_207( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_207( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_207Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); + late final __objc_msgSend_207 = __objc_msgSend_207Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithLong_1 = _registerName1("initWithLong:"); + ffi.Pointer _objc_msgSend_208( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_208( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_208Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_208 = __objc_msgSend_208Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithUnsignedLong_1 = + _registerName1("initWithUnsignedLong:"); + ffi.Pointer _objc_msgSend_209( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_209( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_209Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_209 = __objc_msgSend_209Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithLongLong_1 = _registerName1("initWithLongLong:"); + ffi.Pointer _objc_msgSend_210( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_210( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_210Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.LongLong)>>('objc_msgSend'); + late final __objc_msgSend_210 = __objc_msgSend_210Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithUnsignedLongLong_1 = + _registerName1("initWithUnsignedLongLong:"); + ffi.Pointer _objc_msgSend_211( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_211( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_211Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLongLong)>>('objc_msgSend'); + late final __objc_msgSend_211 = __objc_msgSend_211Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithFloat_1 = _registerName1("initWithFloat:"); + ffi.Pointer _objc_msgSend_212( + ffi.Pointer obj, + ffi.Pointer sel, + double value, + ) { + return __objc_msgSend_212( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_212Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Float)>>('objc_msgSend'); + late final __objc_msgSend_212 = __objc_msgSend_212Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, double)>(); + + late final _sel_initWithDouble_1 = _registerName1("initWithDouble:"); + ffi.Pointer _objc_msgSend_213( + ffi.Pointer obj, + ffi.Pointer sel, + double value, + ) { + return __objc_msgSend_213( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_213Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>('objc_msgSend'); + late final __objc_msgSend_213 = __objc_msgSend_213Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, double)>(); + + late final _sel_initWithBool_1 = _registerName1("initWithBool:"); + ffi.Pointer _objc_msgSend_214( + ffi.Pointer obj, + ffi.Pointer sel, + bool value, + ) { + return __objc_msgSend_214( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_214Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_214 = __objc_msgSend_214Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_initWithInteger_1 = _registerName1("initWithInteger:"); + late final _sel_initWithUnsignedInteger_1 = + _registerName1("initWithUnsignedInteger:"); + late final _sel_charValue1 = _registerName1("charValue"); + int _objc_msgSend_215( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_215( + obj, + sel, + ); + } + + late final __objc_msgSend_215Ptr = _lookup< + ffi.NativeFunction< + ffi.Char Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_215 = __objc_msgSend_215Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_unsignedCharValue1 = _registerName1("unsignedCharValue"); + int _objc_msgSend_216( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_216( + obj, + sel, + ); + } + + late final __objc_msgSend_216Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedChar Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_216 = __objc_msgSend_216Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_shortValue1 = _registerName1("shortValue"); + int _objc_msgSend_217( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_217( + obj, + sel, + ); + } + + late final __objc_msgSend_217Ptr = _lookup< + ffi.NativeFunction< + ffi.Short Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_217 = __objc_msgSend_217Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_unsignedShortValue1 = _registerName1("unsignedShortValue"); + int _objc_msgSend_218( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_218( + obj, + sel, + ); + } + + late final __objc_msgSend_218Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedShort Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_218 = __objc_msgSend_218Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_intValue1 = _registerName1("intValue"); + int _objc_msgSend_219( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_219( + obj, + sel, + ); + } + + late final __objc_msgSend_219Ptr = _lookup< + ffi.NativeFunction< + ffi.Int Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_219 = __objc_msgSend_219Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_unsignedIntValue1 = _registerName1("unsignedIntValue"); + late final _sel_longValue1 = _registerName1("longValue"); + late final _sel_unsignedLongValue1 = _registerName1("unsignedLongValue"); + late final _sel_longLongValue1 = _registerName1("longLongValue"); + int _objc_msgSend_220( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_220( + obj, + sel, + ); + } + + late final __objc_msgSend_220Ptr = _lookup< + ffi.NativeFunction< + ffi.LongLong Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_220 = __objc_msgSend_220Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_unsignedLongLongValue1 = + _registerName1("unsignedLongLongValue"); + late final _sel_floatValue1 = _registerName1("floatValue"); + double _objc_msgSend_221( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_221( + obj, + sel, + ); + } + + late final __objc_msgSend_221Ptr = _lookup< + ffi.NativeFunction< + ffi.Float Function(ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_fpret'); + late final __objc_msgSend_221 = __objc_msgSend_221Ptr.asFunction< + double Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_doubleValue1 = _registerName1("doubleValue"); + late final _sel_boolValue1 = _registerName1("boolValue"); + late final _sel_integerValue1 = _registerName1("integerValue"); + late final _sel_unsignedIntegerValue1 = + _registerName1("unsignedIntegerValue"); + late final _sel_stringValue1 = _registerName1("stringValue"); + int _objc_msgSend_222( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherNumber, + ) { + return __objc_msgSend_222( + obj, + sel, + otherNumber, + ); + } + + late final __objc_msgSend_222Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_222 = __objc_msgSend_222Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_isEqualToNumber_1 = _registerName1("isEqualToNumber:"); + bool _objc_msgSend_223( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer number, + ) { + return __objc_msgSend_223( + obj, + sel, + number, + ); + } + + late final __objc_msgSend_223Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_223 = __objc_msgSend_223Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_numberWithChar_1 = _registerName1("numberWithChar:"); + late final _sel_numberWithUnsignedChar_1 = + _registerName1("numberWithUnsignedChar:"); + late final _sel_numberWithShort_1 = _registerName1("numberWithShort:"); + late final _sel_numberWithUnsignedShort_1 = + _registerName1("numberWithUnsignedShort:"); + late final _sel_numberWithInt_1 = _registerName1("numberWithInt:"); + late final _sel_numberWithUnsignedInt_1 = + _registerName1("numberWithUnsignedInt:"); + late final _sel_numberWithLong_1 = _registerName1("numberWithLong:"); + late final _sel_numberWithUnsignedLong_1 = + _registerName1("numberWithUnsignedLong:"); + late final _sel_numberWithLongLong_1 = _registerName1("numberWithLongLong:"); + late final _sel_numberWithUnsignedLongLong_1 = + _registerName1("numberWithUnsignedLongLong:"); + late final _sel_numberWithFloat_1 = _registerName1("numberWithFloat:"); + late final _sel_numberWithDouble_1 = _registerName1("numberWithDouble:"); + late final _sel_numberWithBool_1 = _registerName1("numberWithBool:"); + late final _sel_numberWithInteger_1 = _registerName1("numberWithInteger:"); + late final _sel_numberWithUnsignedInteger_1 = + _registerName1("numberWithUnsignedInteger:"); + late final _sel_port1 = _registerName1("port"); + late final _sel_user1 = _registerName1("user"); + late final _sel_password1 = _registerName1("password"); + late final _sel_path1 = _registerName1("path"); + late final _sel_fragment1 = _registerName1("fragment"); + late final _sel_parameterString1 = _registerName1("parameterString"); + late final _sel_query1 = _registerName1("query"); + late final _sel_relativePath1 = _registerName1("relativePath"); + late final _sel_hasDirectoryPath1 = _registerName1("hasDirectoryPath"); + late final _sel_getFileSystemRepresentation_maxLength_1 = + _registerName1("getFileSystemRepresentation:maxLength:"); + bool _objc_msgSend_224( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + int maxBufferLength, + ) { + return __objc_msgSend_224( + obj, + sel, + buffer, + maxBufferLength, + ); + } + + late final __objc_msgSend_224Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_224 = __objc_msgSend_224Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_fileSystemRepresentation1 = + _registerName1("fileSystemRepresentation"); + late final _sel_isFileURL1 = _registerName1("isFileURL"); + late final _sel_standardizedURL1 = _registerName1("standardizedURL"); + late final _sel_checkResourceIsReachableAndReturnError_1 = + _registerName1("checkResourceIsReachableAndReturnError:"); + bool _objc_msgSend_225( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> error, + ) { + return __objc_msgSend_225( + obj, + sel, + error, + ); + } + + late final __objc_msgSend_225Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_225 = __objc_msgSend_225Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_isFileReferenceURL1 = _registerName1("isFileReferenceURL"); + late final _sel_fileReferenceURL1 = _registerName1("fileReferenceURL"); + late final _sel_filePathURL1 = _registerName1("filePathURL"); + late final _sel_getResourceValue_forKey_error_1 = + _registerName1("getResourceValue:forKey:error:"); + bool _objc_msgSend_226( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> value, + ffi.Pointer key, + ffi.Pointer> error, + ) { + return __objc_msgSend_226( + obj, + sel, + value, + key, + error, + ); + } + + late final __objc_msgSend_226Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_226 = __objc_msgSend_226Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_resourceValuesForKeys_error_1 = + _registerName1("resourceValuesForKeys:error:"); + ffi.Pointer _objc_msgSend_227( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keys, + ffi.Pointer> error, + ) { + return __objc_msgSend_227( + obj, + sel, + keys, + error, + ); + } + + late final __objc_msgSend_227Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_227 = __objc_msgSend_227Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_setResourceValue_forKey_error_1 = + _registerName1("setResourceValue:forKey:error:"); + bool _objc_msgSend_228( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ffi.Pointer key, + ffi.Pointer> error, + ) { + return __objc_msgSend_228( + obj, + sel, + value, + key, + error, + ); + } + + late final __objc_msgSend_228Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_228 = __objc_msgSend_228Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_setResourceValues_error_1 = + _registerName1("setResourceValues:error:"); + bool _objc_msgSend_229( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keyedValues, + ffi.Pointer> error, + ) { + return __objc_msgSend_229( + obj, + sel, + keyedValues, + error, + ); + } + + late final __objc_msgSend_229Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_229 = __objc_msgSend_229Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); + + late final _sel_removeCachedResourceValueForKey_1 = + _registerName1("removeCachedResourceValueForKey:"); + late final _sel_removeAllCachedResourceValues1 = + _registerName1("removeAllCachedResourceValues"); + late final _sel_setTemporaryResourceValue_forKey_1 = + _registerName1("setTemporaryResourceValue:forKey:"); + late final _sel_bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_1 = + _registerName1( + "bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:"); + ffi.Pointer _objc_msgSend_230( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ffi.Pointer keys, + ffi.Pointer relativeURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_230( + obj, + sel, + options, + keys, + relativeURL, + error, + ); + } + + late final __objc_msgSend_230Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_230 = __objc_msgSend_230Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1 = + _registerName1( + "initByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:"); + instancetype _objc_msgSend_231( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bookmarkData, + int options, + ffi.Pointer relativeURL, + ffi.Pointer isStale, + ffi.Pointer> error, + ) { + return __objc_msgSend_231( + obj, + sel, + bookmarkData, + options, + relativeURL, + isStale, + error, + ); + } + + late final __objc_msgSend_231Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_231 = __objc_msgSend_231Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1 = + _registerName1( + "URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:"); + late final _sel_resourceValuesForKeys_fromBookmarkData_1 = + _registerName1("resourceValuesForKeys:fromBookmarkData:"); + ffi.Pointer _objc_msgSend_232( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keys, + ffi.Pointer bookmarkData, + ) { + return __objc_msgSend_232( + obj, + sel, + keys, + bookmarkData, + ); + } + + late final __objc_msgSend_232Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_232 = __objc_msgSend_232Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_writeBookmarkData_toURL_options_error_1 = + _registerName1("writeBookmarkData:toURL:options:error:"); + bool _objc_msgSend_233( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bookmarkData, + ffi.Pointer bookmarkFileURL, + int options, + ffi.Pointer> error, + ) { + return __objc_msgSend_233( + obj, + sel, + bookmarkData, + bookmarkFileURL, + options, + error, + ); + } + + late final __objc_msgSend_233Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_233 = __objc_msgSend_233Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_bookmarkDataWithContentsOfURL_error_1 = + _registerName1("bookmarkDataWithContentsOfURL:error:"); + ffi.Pointer _objc_msgSend_234( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bookmarkFileURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_234( + obj, + sel, + bookmarkFileURL, + error, + ); + } + + late final __objc_msgSend_234Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_234 = __objc_msgSend_234Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_URLByResolvingAliasFileAtURL_options_error_1 = + _registerName1("URLByResolvingAliasFileAtURL:options:error:"); + instancetype _objc_msgSend_235( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int options, + ffi.Pointer> error, + ) { + return __objc_msgSend_235( + obj, + sel, + url, + options, + error, + ); + } + + late final __objc_msgSend_235Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_235 = __objc_msgSend_235Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_startAccessingSecurityScopedResource1 = + _registerName1("startAccessingSecurityScopedResource"); + late final _sel_stopAccessingSecurityScopedResource1 = + _registerName1("stopAccessingSecurityScopedResource"); + late final _sel_getPromisedItemResourceValue_forKey_error_1 = + _registerName1("getPromisedItemResourceValue:forKey:error:"); + late final _sel_promisedItemResourceValuesForKeys_error_1 = + _registerName1("promisedItemResourceValuesForKeys:error:"); + ffi.Pointer _objc_msgSend_236( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keys, + ffi.Pointer> error, + ) { + return __objc_msgSend_236( + obj, + sel, + keys, + error, + ); + } + + late final __objc_msgSend_236Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_236 = __objc_msgSend_236Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_checkPromisedItemIsReachableAndReturnError_1 = + _registerName1("checkPromisedItemIsReachableAndReturnError:"); + late final _sel_fileURLWithPathComponents_1 = + _registerName1("fileURLWithPathComponents:"); + ffi.Pointer _objc_msgSend_237( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer components, + ) { + return __objc_msgSend_237( + obj, + sel, + components, + ); + } + + late final __objc_msgSend_237Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_237 = __objc_msgSend_237Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_pathComponents1 = _registerName1("pathComponents"); + late final _sel_lastPathComponent1 = _registerName1("lastPathComponent"); + late final _sel_pathExtension1 = _registerName1("pathExtension"); + late final _sel_URLByAppendingPathComponent_1 = + _registerName1("URLByAppendingPathComponent:"); + late final _sel_URLByAppendingPathComponent_isDirectory_1 = + _registerName1("URLByAppendingPathComponent:isDirectory:"); + late final _sel_URLByDeletingLastPathComponent1 = + _registerName1("URLByDeletingLastPathComponent"); + late final _sel_URLByAppendingPathExtension_1 = + _registerName1("URLByAppendingPathExtension:"); + late final _sel_URLByDeletingPathExtension1 = + _registerName1("URLByDeletingPathExtension"); + late final _sel_URLByStandardizingPath1 = + _registerName1("URLByStandardizingPath"); + late final _sel_URLByResolvingSymlinksInPath1 = + _registerName1("URLByResolvingSymlinksInPath"); + late final _sel_resourceDataUsingCache_1 = + _registerName1("resourceDataUsingCache:"); + ffi.Pointer _objc_msgSend_238( + ffi.Pointer obj, + ffi.Pointer sel, + bool shouldUseCache, + ) { + return __objc_msgSend_238( + obj, + sel, + shouldUseCache, + ); + } + + late final __objc_msgSend_238Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_238 = __objc_msgSend_238Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_loadResourceDataNotifyingClient_usingCache_1 = + _registerName1("loadResourceDataNotifyingClient:usingCache:"); + void _objc_msgSend_239( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer client, + bool shouldUseCache, + ) { + return __objc_msgSend_239( + obj, + sel, + client, + shouldUseCache, + ); + } + + late final __objc_msgSend_239Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_239 = __objc_msgSend_239Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_propertyForKey_1 = _registerName1("propertyForKey:"); + late final _sel_setResourceData_1 = _registerName1("setResourceData:"); + late final _sel_setProperty_forKey_1 = _registerName1("setProperty:forKey:"); + bool _objc_msgSend_240( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer property, + ffi.Pointer propertyKey, + ) { + return __objc_msgSend_240( + obj, + sel, + property, + propertyKey, + ); + } + + late final __objc_msgSend_240Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_240 = __objc_msgSend_240Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSURLHandle1 = _getClass1("NSURLHandle"); + late final _sel_registerURLHandleClass_1 = + _registerName1("registerURLHandleClass:"); + late final _sel_URLHandleClassForURL_1 = + _registerName1("URLHandleClassForURL:"); + ffi.Pointer _objc_msgSend_241( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anURL, + ) { + return __objc_msgSend_241( + obj, + sel, + anURL, + ); + } + + late final __objc_msgSend_241Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_241 = __objc_msgSend_241Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_status1 = _registerName1("status"); + int _objc_msgSend_242( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_242( + obj, + sel, + ); + } + + late final __objc_msgSend_242Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_242 = __objc_msgSend_242Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_failureReason1 = _registerName1("failureReason"); + late final _sel_addClient_1 = _registerName1("addClient:"); + late final _sel_removeClient_1 = _registerName1("removeClient:"); + late final _sel_loadInBackground1 = _registerName1("loadInBackground"); + late final _sel_cancelLoadInBackground1 = + _registerName1("cancelLoadInBackground"); + late final _sel_resourceData1 = _registerName1("resourceData"); + late final _sel_availableResourceData1 = + _registerName1("availableResourceData"); + late final _sel_expectedResourceDataSize1 = + _registerName1("expectedResourceDataSize"); + late final _sel_flushCachedData1 = _registerName1("flushCachedData"); + late final _sel_backgroundLoadDidFailWithReason_1 = + _registerName1("backgroundLoadDidFailWithReason:"); + late final _sel_didLoadBytes_loadComplete_1 = + _registerName1("didLoadBytes:loadComplete:"); + void _objc_msgSend_243( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer newBytes, + bool yorn, + ) { + return __objc_msgSend_243( + obj, + sel, + newBytes, + yorn, + ); + } + + late final __objc_msgSend_243Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_243 = __objc_msgSend_243Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_canInitWithURL_1 = _registerName1("canInitWithURL:"); + bool _objc_msgSend_244( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anURL, + ) { + return __objc_msgSend_244( + obj, + sel, + anURL, + ); + } + + late final __objc_msgSend_244Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_244 = __objc_msgSend_244Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_cachedHandleForURL_1 = _registerName1("cachedHandleForURL:"); + ffi.Pointer _objc_msgSend_245( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anURL, + ) { + return __objc_msgSend_245( + obj, + sel, + anURL, + ); + } + + late final __objc_msgSend_245Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_245 = __objc_msgSend_245Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithURL_cached_1 = _registerName1("initWithURL:cached:"); + ffi.Pointer _objc_msgSend_246( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anURL, + bool willCache, + ) { + return __objc_msgSend_246( + obj, + sel, + anURL, + willCache, + ); + } + + late final __objc_msgSend_246Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_246 = __objc_msgSend_246Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_propertyForKeyIfAvailable_1 = + _registerName1("propertyForKeyIfAvailable:"); + late final _sel_writeProperty_forKey_1 = + _registerName1("writeProperty:forKey:"); + late final _sel_writeData_1 = _registerName1("writeData:"); + late final _sel_loadInForeground1 = _registerName1("loadInForeground"); + late final _sel_beginLoadInBackground1 = + _registerName1("beginLoadInBackground"); + late final _sel_endLoadInBackground1 = _registerName1("endLoadInBackground"); + late final _sel_URLHandleUsingCache_1 = + _registerName1("URLHandleUsingCache:"); + ffi.Pointer _objc_msgSend_247( + ffi.Pointer obj, + ffi.Pointer sel, + bool shouldUseCache, + ) { + return __objc_msgSend_247( + obj, + sel, + shouldUseCache, + ); + } + + late final __objc_msgSend_247Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_247 = __objc_msgSend_247Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_writeToFile_options_error_1 = + _registerName1("writeToFile:options:error:"); + bool _objc_msgSend_248( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + int writeOptionsMask, + ffi.Pointer> errorPtr, + ) { + return __objc_msgSend_248( + obj, + sel, + path, + writeOptionsMask, + errorPtr, + ); + } + + late final __objc_msgSend_248Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_248 = __objc_msgSend_248Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_writeToURL_options_error_1 = + _registerName1("writeToURL:options:error:"); + bool _objc_msgSend_249( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int writeOptionsMask, + ffi.Pointer> errorPtr, + ) { + return __objc_msgSend_249( + obj, + sel, + url, + writeOptionsMask, + errorPtr, + ); + } + + late final __objc_msgSend_249Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_249 = __objc_msgSend_249Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_rangeOfData_options_range_1 = + _registerName1("rangeOfData:options:range:"); + void _objc_msgSend_250( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer dataToFind, + int mask, + _NSRange searchRange, + ) { + return __objc_msgSend_250( + stret, + obj, + sel, + dataToFind, + mask, + searchRange, + ); + } + + late final __objc_msgSend_250Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend_stret'); + late final __objc_msgSend_250 = __objc_msgSend_250Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, _NSRange)>(); + + late final _sel_enumerateByteRangesUsingBlock_1 = + _registerName1("enumerateByteRangesUsingBlock:"); + void _objc_msgSend_251( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_251( + obj, + sel, + block, + ); + } + + late final __objc_msgSend_251Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_251 = __objc_msgSend_251Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_dataWithBytes_length_1 = + _registerName1("dataWithBytes:length:"); + instancetype _objc_msgSend_252( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int length, + ) { + return __objc_msgSend_252( + obj, + sel, + bytes, + length, + ); + } + + late final __objc_msgSend_252Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_252 = __objc_msgSend_252Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_dataWithBytesNoCopy_length_1 = + _registerName1("dataWithBytesNoCopy:length:"); + late final _sel_dataWithBytesNoCopy_length_freeWhenDone_1 = + _registerName1("dataWithBytesNoCopy:length:freeWhenDone:"); + instancetype _objc_msgSend_253( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int length, + bool b, + ) { + return __objc_msgSend_253( + obj, + sel, + bytes, + length, + b, + ); + } + + late final __objc_msgSend_253Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_253 = __objc_msgSend_253Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, bool)>(); + + late final _sel_dataWithContentsOfFile_options_error_1 = + _registerName1("dataWithContentsOfFile:options:error:"); + instancetype _objc_msgSend_254( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + int readOptionsMask, + ffi.Pointer> errorPtr, + ) { + return __objc_msgSend_254( + obj, + sel, + path, + readOptionsMask, + errorPtr, + ); + } + + late final __objc_msgSend_254Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_254 = __objc_msgSend_254Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_dataWithContentsOfURL_options_error_1 = + _registerName1("dataWithContentsOfURL:options:error:"); + instancetype _objc_msgSend_255( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int readOptionsMask, + ffi.Pointer> errorPtr, + ) { + return __objc_msgSend_255( + obj, + sel, + url, + readOptionsMask, + errorPtr, + ); + } + + late final __objc_msgSend_255Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_255 = __objc_msgSend_255Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_dataWithContentsOfFile_1 = + _registerName1("dataWithContentsOfFile:"); + late final _sel_dataWithContentsOfURL_1 = + _registerName1("dataWithContentsOfURL:"); + late final _sel_initWithBytes_length_1 = + _registerName1("initWithBytes:length:"); + late final _sel_initWithBytesNoCopy_length_1 = + _registerName1("initWithBytesNoCopy:length:"); + late final _sel_initWithBytesNoCopy_length_freeWhenDone_1 = + _registerName1("initWithBytesNoCopy:length:freeWhenDone:"); + late final _sel_initWithBytesNoCopy_length_deallocator_1 = + _registerName1("initWithBytesNoCopy:length:deallocator:"); + instancetype _objc_msgSend_256( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int length, + ffi.Pointer<_ObjCBlock> deallocator, + ) { + return __objc_msgSend_256( + obj, + sel, + bytes, + length, + deallocator, + ); + } + + late final __objc_msgSend_256Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_256 = __objc_msgSend_256Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_initWithContentsOfFile_options_error_1 = + _registerName1("initWithContentsOfFile:options:error:"); + late final _sel_initWithContentsOfURL_options_error_1 = + _registerName1("initWithContentsOfURL:options:error:"); + late final _sel_initWithData_1 = _registerName1("initWithData:"); + instancetype _objc_msgSend_257( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ) { + return __objc_msgSend_257( + obj, + sel, + data, + ); + } + + late final __objc_msgSend_257Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_257 = __objc_msgSend_257Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_dataWithData_1 = _registerName1("dataWithData:"); + late final _sel_initWithBase64EncodedString_options_1 = + _registerName1("initWithBase64EncodedString:options:"); + instancetype _objc_msgSend_258( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer base64String, + int options, + ) { + return __objc_msgSend_258( + obj, + sel, + base64String, + options, + ); + } + + late final __objc_msgSend_258Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_258 = __objc_msgSend_258Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_base64EncodedStringWithOptions_1 = + _registerName1("base64EncodedStringWithOptions:"); + ffi.Pointer _objc_msgSend_259( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ) { + return __objc_msgSend_259( + obj, + sel, + options, + ); + } + + late final __objc_msgSend_259Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_259 = __objc_msgSend_259Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithBase64EncodedData_options_1 = + _registerName1("initWithBase64EncodedData:options:"); + instancetype _objc_msgSend_260( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer base64Data, + int options, + ) { + return __objc_msgSend_260( + obj, + sel, + base64Data, + options, + ); + } + + late final __objc_msgSend_260Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_260 = __objc_msgSend_260Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_base64EncodedDataWithOptions_1 = + _registerName1("base64EncodedDataWithOptions:"); + ffi.Pointer _objc_msgSend_261( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ) { + return __objc_msgSend_261( + obj, + sel, + options, + ); + } + + late final __objc_msgSend_261Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_261 = __objc_msgSend_261Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_decompressedDataUsingAlgorithm_error_1 = + _registerName1("decompressedDataUsingAlgorithm:error:"); + instancetype _objc_msgSend_262( + ffi.Pointer obj, + ffi.Pointer sel, + int algorithm, + ffi.Pointer> error, + ) { + return __objc_msgSend_262( + obj, + sel, + algorithm, + error, + ); + } + + late final __objc_msgSend_262Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_262 = __objc_msgSend_262Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer>)>(); + + late final _sel_compressedDataUsingAlgorithm_error_1 = + _registerName1("compressedDataUsingAlgorithm:error:"); + late final _sel_getBytes_1 = _registerName1("getBytes:"); + late final _sel_dataWithContentsOfMappedFile_1 = + _registerName1("dataWithContentsOfMappedFile:"); + late final _sel_initWithContentsOfMappedFile_1 = + _registerName1("initWithContentsOfMappedFile:"); + late final _sel_initWithBase64Encoding_1 = + _registerName1("initWithBase64Encoding:"); + late final _sel_base64Encoding1 = _registerName1("base64Encoding"); + late final _sel_encodeDataObject_1 = _registerName1("encodeDataObject:"); + void _objc_msgSend_263( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ) { + return __objc_msgSend_263( + obj, + sel, + data, + ); + } + + late final __objc_msgSend_263Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_263 = __objc_msgSend_263Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeDataObject1 = _registerName1("decodeDataObject"); + late final _sel_decodeValueOfObjCType_at_size_1 = + _registerName1("decodeValueOfObjCType:at:size:"); + void _objc_msgSend_264( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer type, + ffi.Pointer data, + int size, + ) { + return __objc_msgSend_264( + obj, + sel, + type, + data, + size, + ); + } + + late final __objc_msgSend_264Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_264 = __objc_msgSend_264Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_versionForClassName_1 = + _registerName1("versionForClassName:"); + int _objc_msgSend_265( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer className, + ) { + return __objc_msgSend_265( + obj, + sel, + className, + ); + } + + late final __objc_msgSend_265Ptr = _lookup< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_265 = __objc_msgSend_265Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_encodeObject_1 = _registerName1("encodeObject:"); + late final _sel_encodeRootObject_1 = _registerName1("encodeRootObject:"); + late final _sel_encodeBycopyObject_1 = _registerName1("encodeBycopyObject:"); + late final _sel_encodeByrefObject_1 = _registerName1("encodeByrefObject:"); + late final _sel_encodeConditionalObject_1 = + _registerName1("encodeConditionalObject:"); + late final _sel_encodeValuesOfObjCTypes_1 = + _registerName1("encodeValuesOfObjCTypes:"); + void _objc_msgSend_266( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer types, + ) { + return __objc_msgSend_266( + obj, + sel, + types, + ); + } + + late final __objc_msgSend_266Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_266 = __objc_msgSend_266Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_encodeArrayOfObjCType_count_at_1 = + _registerName1("encodeArrayOfObjCType:count:at:"); + void _objc_msgSend_267( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer type, + int count, + ffi.Pointer array, + ) { + return __objc_msgSend_267( + obj, + sel, + type, + count, + array, + ); + } + + late final __objc_msgSend_267Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_267 = __objc_msgSend_267Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_encodeBytes_length_1 = _registerName1("encodeBytes:length:"); + late final _sel_decodeObject1 = _registerName1("decodeObject"); + late final _sel_decodeTopLevelObjectAndReturnError_1 = + _registerName1("decodeTopLevelObjectAndReturnError:"); + ffi.Pointer _objc_msgSend_268( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> error, + ) { + return __objc_msgSend_268( + obj, + sel, + error, + ); + } + + late final __objc_msgSend_268Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_268 = __objc_msgSend_268Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); + + late final _sel_decodeValuesOfObjCTypes_1 = + _registerName1("decodeValuesOfObjCTypes:"); + late final _sel_decodeArrayOfObjCType_count_at_1 = + _registerName1("decodeArrayOfObjCType:count:at:"); + late final _sel_decodeBytesWithReturnedLength_1 = + _registerName1("decodeBytesWithReturnedLength:"); + ffi.Pointer _objc_msgSend_269( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer lengthp, + ) { + return __objc_msgSend_269( + obj, + sel, + lengthp, + ); + } + + late final __objc_msgSend_269Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_269 = __objc_msgSend_269Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_encodePropertyList_1 = _registerName1("encodePropertyList:"); + late final _sel_decodePropertyList1 = _registerName1("decodePropertyList"); + late final _sel_setObjectZone_1 = _registerName1("setObjectZone:"); + void _objc_msgSend_270( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_NSZone> zone, + ) { + return __objc_msgSend_270( + obj, + sel, + zone, + ); + } + + late final __objc_msgSend_270Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_NSZone>)>>('objc_msgSend'); + late final __objc_msgSend_270 = __objc_msgSend_270Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_NSZone>)>(); + + late final _sel_objectZone1 = _registerName1("objectZone"); + ffi.Pointer<_NSZone> _objc_msgSend_271( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_271( + obj, + sel, + ); + } + + late final __objc_msgSend_271Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer<_NSZone> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_271 = __objc_msgSend_271Ptr.asFunction< + ffi.Pointer<_NSZone> Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_systemVersion1 = _registerName1("systemVersion"); + late final _sel_allowsKeyedCoding1 = _registerName1("allowsKeyedCoding"); + late final _sel_encodeObject_forKey_1 = + _registerName1("encodeObject:forKey:"); + late final _sel_encodeConditionalObject_forKey_1 = + _registerName1("encodeConditionalObject:forKey:"); + late final _sel_encodeBool_forKey_1 = _registerName1("encodeBool:forKey:"); + void _objc_msgSend_272( + ffi.Pointer obj, + ffi.Pointer sel, + bool value, + ffi.Pointer key, + ) { + return __objc_msgSend_272( + obj, + sel, + value, + key, + ); + } + + late final __objc_msgSend_272Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Bool, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_272 = __objc_msgSend_272Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, bool, + ffi.Pointer)>(); + + late final _sel_encodeInt_forKey_1 = _registerName1("encodeInt:forKey:"); + void _objc_msgSend_273( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ffi.Pointer key, + ) { + return __objc_msgSend_273( + obj, + sel, + value, + key, + ); + } + + late final __objc_msgSend_273Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_273 = __objc_msgSend_273Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); + + late final _sel_encodeInt32_forKey_1 = _registerName1("encodeInt32:forKey:"); + void _objc_msgSend_274( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ffi.Pointer key, + ) { + return __objc_msgSend_274( + obj, + sel, + value, + key, + ); + } + + late final __objc_msgSend_274Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_274 = __objc_msgSend_274Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); + + late final _sel_encodeInt64_forKey_1 = _registerName1("encodeInt64:forKey:"); + void _objc_msgSend_275( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ffi.Pointer key, + ) { + return __objc_msgSend_275( + obj, + sel, + value, + key, + ); + } + + late final __objc_msgSend_275Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int64, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_275 = __objc_msgSend_275Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); + + late final _sel_encodeFloat_forKey_1 = _registerName1("encodeFloat:forKey:"); + void _objc_msgSend_276( + ffi.Pointer obj, + ffi.Pointer sel, + double value, + ffi.Pointer key, + ) { + return __objc_msgSend_276( + obj, + sel, + value, + key, + ); + } + + late final __objc_msgSend_276Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Float, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_276 = __objc_msgSend_276Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, double, + ffi.Pointer)>(); + + late final _sel_encodeDouble_forKey_1 = + _registerName1("encodeDouble:forKey:"); + void _objc_msgSend_277( + ffi.Pointer obj, + ffi.Pointer sel, + double value, + ffi.Pointer key, + ) { + return __objc_msgSend_277( + obj, + sel, + value, + key, + ); + } + + late final __objc_msgSend_277Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Double, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_277 = __objc_msgSend_277Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, double, + ffi.Pointer)>(); + + late final _sel_encodeBytes_length_forKey_1 = + _registerName1("encodeBytes:length:forKey:"); + void _objc_msgSend_278( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int length, + ffi.Pointer key, + ) { + return __objc_msgSend_278( + obj, + sel, + bytes, + length, + key, + ); + } + + late final __objc_msgSend_278Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_278 = __objc_msgSend_278Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_containsValueForKey_1 = + _registerName1("containsValueForKey:"); + late final _sel_decodeObjectForKey_1 = _registerName1("decodeObjectForKey:"); + late final _sel_decodeTopLevelObjectForKey_error_1 = + _registerName1("decodeTopLevelObjectForKey:error:"); + ffi.Pointer _objc_msgSend_279( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ffi.Pointer> error, + ) { + return __objc_msgSend_279( + obj, + sel, + key, + error, + ); + } + + late final __objc_msgSend_279Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_279 = __objc_msgSend_279Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_decodeBoolForKey_1 = _registerName1("decodeBoolForKey:"); + late final _sel_decodeIntForKey_1 = _registerName1("decodeIntForKey:"); + int _objc_msgSend_280( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_280( + obj, + sel, + key, + ); + } + + late final __objc_msgSend_280Ptr = _lookup< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_280 = __objc_msgSend_280Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeInt32ForKey_1 = _registerName1("decodeInt32ForKey:"); + int _objc_msgSend_281( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_281( + obj, + sel, + key, + ); + } + + late final __objc_msgSend_281Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_281 = __objc_msgSend_281Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeInt64ForKey_1 = _registerName1("decodeInt64ForKey:"); + int _objc_msgSend_282( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_282( + obj, + sel, + key, + ); + } + + late final __objc_msgSend_282Ptr = _lookup< + ffi.NativeFunction< + ffi.Int64 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_282 = __objc_msgSend_282Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeFloatForKey_1 = _registerName1("decodeFloatForKey:"); + double _objc_msgSend_283( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_283( + obj, + sel, + key, + ); + } + + late final __objc_msgSend_283Ptr = _lookup< + ffi.NativeFunction< + ffi.Float Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_fpret'); + late final __objc_msgSend_283 = __objc_msgSend_283Ptr.asFunction< + double Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeDoubleForKey_1 = _registerName1("decodeDoubleForKey:"); + double _objc_msgSend_284( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_284( + obj, + sel, + key, + ); + } + + late final __objc_msgSend_284Ptr = _lookup< + ffi.NativeFunction< + ffi.Double Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_fpret'); + late final __objc_msgSend_284 = __objc_msgSend_284Ptr.asFunction< + double Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeBytesForKey_returnedLength_1 = + _registerName1("decodeBytesForKey:returnedLength:"); + ffi.Pointer _objc_msgSend_285( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ffi.Pointer lengthp, + ) { + return __objc_msgSend_285( + obj, + sel, + key, + lengthp, + ); + } + + late final __objc_msgSend_285Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_285 = __objc_msgSend_285Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_encodeInteger_forKey_1 = + _registerName1("encodeInteger:forKey:"); + void _objc_msgSend_286( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ffi.Pointer key, + ) { + return __objc_msgSend_286( + obj, + sel, + value, + key, + ); + } + + late final __objc_msgSend_286Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Long, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_286 = __objc_msgSend_286Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); + + late final _sel_decodeIntegerForKey_1 = + _registerName1("decodeIntegerForKey:"); + late final _sel_requiresSecureCoding1 = + _registerName1("requiresSecureCoding"); + late final _sel_decodeObjectOfClass_forKey_1 = + _registerName1("decodeObjectOfClass:forKey:"); + ffi.Pointer _objc_msgSend_287( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aClass, + ffi.Pointer key, + ) { + return __objc_msgSend_287( + obj, + sel, + aClass, + key, + ); + } + + late final __objc_msgSend_287Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_287 = __objc_msgSend_287Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeTopLevelObjectOfClass_forKey_error_1 = + _registerName1("decodeTopLevelObjectOfClass:forKey:error:"); + ffi.Pointer _objc_msgSend_288( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aClass, + ffi.Pointer key, + ffi.Pointer> error, + ) { + return __objc_msgSend_288( + obj, + sel, + aClass, + key, + error, + ); + } + + late final __objc_msgSend_288Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_288 = __objc_msgSend_288Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_decodeArrayOfObjectsOfClass_forKey_1 = + _registerName1("decodeArrayOfObjectsOfClass:forKey:"); + ffi.Pointer _objc_msgSend_289( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer cls, + ffi.Pointer key, + ) { + return __objc_msgSend_289( + obj, + sel, + cls, + key, + ); + } + + late final __objc_msgSend_289Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_289 = __objc_msgSend_289Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeDictionaryWithKeysOfClass_objectsOfClass_forKey_1 = + _registerName1("decodeDictionaryWithKeysOfClass:objectsOfClass:forKey:"); + ffi.Pointer _objc_msgSend_290( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keyCls, + ffi.Pointer objectCls, + ffi.Pointer key, + ) { + return __objc_msgSend_290( + obj, + sel, + keyCls, + objectCls, + key, + ); + } + + late final __objc_msgSend_290Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_290 = __objc_msgSend_290Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeObjectOfClasses_forKey_1 = + _registerName1("decodeObjectOfClasses:forKey:"); + ffi.Pointer _objc_msgSend_291( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer classes, + ffi.Pointer key, + ) { + return __objc_msgSend_291( + obj, + sel, + classes, + key, + ); + } + + late final __objc_msgSend_291Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_291 = __objc_msgSend_291Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeTopLevelObjectOfClasses_forKey_error_1 = + _registerName1("decodeTopLevelObjectOfClasses:forKey:error:"); + ffi.Pointer _objc_msgSend_292( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer classes, + ffi.Pointer key, + ffi.Pointer> error, + ) { + return __objc_msgSend_292( + obj, + sel, + classes, + key, + error, + ); + } + + late final __objc_msgSend_292Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_292 = __objc_msgSend_292Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_decodeArrayOfObjectsOfClasses_forKey_1 = + _registerName1("decodeArrayOfObjectsOfClasses:forKey:"); + ffi.Pointer _objc_msgSend_293( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer classes, + ffi.Pointer key, + ) { + return __objc_msgSend_293( + obj, + sel, + classes, + key, + ); + } + + late final __objc_msgSend_293Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_293 = __objc_msgSend_293Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey_1 = + _registerName1( + "decodeDictionaryWithKeysOfClasses:objectsOfClasses:forKey:"); + ffi.Pointer _objc_msgSend_294( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keyClasses, + ffi.Pointer objectClasses, + ffi.Pointer key, + ) { + return __objc_msgSend_294( + obj, + sel, + keyClasses, + objectClasses, + key, + ); + } + + late final __objc_msgSend_294Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_294 = __objc_msgSend_294Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodePropertyListForKey_1 = + _registerName1("decodePropertyListForKey:"); + late final _sel_allowedClasses1 = _registerName1("allowedClasses"); + ffi.Pointer _objc_msgSend_295( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_295( + obj, + sel, + ); + } + + late final __objc_msgSend_295Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_295 = __objc_msgSend_295Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_failWithError_1 = _registerName1("failWithError:"); + void _objc_msgSend_296( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer error, + ) { + return __objc_msgSend_296( + obj, + sel, + error, + ); + } + + late final __objc_msgSend_296Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_296 = __objc_msgSend_296Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodingFailurePolicy1 = + _registerName1("decodingFailurePolicy"); + int _objc_msgSend_297( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_297( + obj, + sel, + ); + } + + late final __objc_msgSend_297Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_297 = __objc_msgSend_297Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_error1 = _registerName1("error"); + ffi.Pointer _objc_msgSend_298( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_298( + obj, + sel, + ); + } + + late final __objc_msgSend_298Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_298 = __objc_msgSend_298Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_encodeNXObject_1 = _registerName1("encodeNXObject:"); + late final _sel_decodeNXObject1 = _registerName1("decodeNXObject"); + late final _sel_decodeValueOfObjCType_at_1 = + _registerName1("decodeValueOfObjCType:at:"); + late final _sel_encodePoint_1 = _registerName1("encodePoint:"); + void _objc_msgSend_299( + ffi.Pointer obj, + ffi.Pointer sel, + CGPoint point, + ) { + return __objc_msgSend_299( + obj, + sel, + point, + ); + } + + late final __objc_msgSend_299Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + CGPoint)>>('objc_msgSend'); + late final __objc_msgSend_299 = __objc_msgSend_299Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, CGPoint)>(); + + late final _sel_decodePoint1 = _registerName1("decodePoint"); + late final _sel_encodeSize_1 = _registerName1("encodeSize:"); + void _objc_msgSend_300( + ffi.Pointer obj, + ffi.Pointer sel, + CGSize size, + ) { + return __objc_msgSend_300( + obj, + sel, + size, + ); + } + + late final __objc_msgSend_300Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + CGSize)>>('objc_msgSend'); + late final __objc_msgSend_300 = __objc_msgSend_300Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, CGSize)>(); + + late final _sel_decodeSize1 = _registerName1("decodeSize"); + late final _sel_encodeRect_1 = _registerName1("encodeRect:"); + void _objc_msgSend_301( + ffi.Pointer obj, + ffi.Pointer sel, + CGRect rect, + ) { + return __objc_msgSend_301( + obj, + sel, + rect, + ); + } + + late final __objc_msgSend_301Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + CGRect)>>('objc_msgSend'); + late final __objc_msgSend_301 = __objc_msgSend_301Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, CGRect)>(); + + late final _sel_decodeRect1 = _registerName1("decodeRect"); + late final _sel_encodePoint_forKey_1 = _registerName1("encodePoint:forKey:"); + void _objc_msgSend_302( + ffi.Pointer obj, + ffi.Pointer sel, + CGPoint point, + ffi.Pointer key, + ) { + return __objc_msgSend_302( + obj, + sel, + point, + key, + ); + } + + late final __objc_msgSend_302Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + CGPoint, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_302 = __objc_msgSend_302Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, CGPoint, + ffi.Pointer)>(); + + late final _sel_encodeSize_forKey_1 = _registerName1("encodeSize:forKey:"); + void _objc_msgSend_303( + ffi.Pointer obj, + ffi.Pointer sel, + CGSize size, + ffi.Pointer key, + ) { + return __objc_msgSend_303( + obj, + sel, + size, + key, + ); + } + + late final __objc_msgSend_303Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + CGSize, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_303 = __objc_msgSend_303Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, CGSize, + ffi.Pointer)>(); + + late final _sel_encodeRect_forKey_1 = _registerName1("encodeRect:forKey:"); + void _objc_msgSend_304( + ffi.Pointer obj, + ffi.Pointer sel, + CGRect rect, + ffi.Pointer key, + ) { + return __objc_msgSend_304( + obj, + sel, + rect, + key, + ); + } + + late final __objc_msgSend_304Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + CGRect, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_304 = __objc_msgSend_304Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, CGRect, + ffi.Pointer)>(); + + late final _sel_decodePointForKey_1 = _registerName1("decodePointForKey:"); + void _objc_msgSend_305( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_305( + stret, + obj, + sel, + key, + ); + } + + late final __objc_msgSend_305Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_305 = __objc_msgSend_305Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_decodeSizeForKey_1 = _registerName1("decodeSizeForKey:"); + void _objc_msgSend_306( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_306( + stret, + obj, + sel, + key, + ); + } + + late final __objc_msgSend_306Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_306 = __objc_msgSend_306Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_decodeRectForKey_1 = _registerName1("decodeRectForKey:"); + void _objc_msgSend_307( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_307( + stret, + obj, + sel, + key, + ); + } + + late final __objc_msgSend_307Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_307 = __objc_msgSend_307Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_substringFromIndex_1 = _registerName1("substringFromIndex:"); + ffi.Pointer _objc_msgSend_308( + ffi.Pointer obj, + ffi.Pointer sel, + int from, + ) { + return __objc_msgSend_308( + obj, + sel, + from, + ); + } + + late final __objc_msgSend_308Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_308 = __objc_msgSend_308Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_substringToIndex_1 = _registerName1("substringToIndex:"); + late final _sel_substringWithRange_1 = _registerName1("substringWithRange:"); + ffi.Pointer _objc_msgSend_309( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ) { + return __objc_msgSend_309( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_309Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_309 = __objc_msgSend_309Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _sel_getCharacters_range_1 = + _registerName1("getCharacters:range:"); + void _objc_msgSend_310( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + _NSRange range, + ) { + return __objc_msgSend_310( + obj, + sel, + buffer, + range, + ); + } + + late final __objc_msgSend_310Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_310 = __objc_msgSend_310Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>(); + + int _objc_msgSend_311( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + ) { + return __objc_msgSend_311( + obj, + sel, + string, + ); + } + + late final __objc_msgSend_311Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_311 = __objc_msgSend_311Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_compare_options_1 = _registerName1("compare:options:"); + int _objc_msgSend_312( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int mask, + ) { + return __objc_msgSend_312( + obj, + sel, + string, + mask, + ); + } + + late final __objc_msgSend_312Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_312 = __objc_msgSend_312Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_compare_options_range_1 = + _registerName1("compare:options:range:"); + int _objc_msgSend_313( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int mask, + _NSRange rangeOfReceiverToCompare, + ) { + return __objc_msgSend_313( + obj, + sel, + string, + mask, + rangeOfReceiverToCompare, + ); + } + + late final __objc_msgSend_313Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_313 = __objc_msgSend_313Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, _NSRange)>(); + + late final _sel_compare_options_range_locale_1 = + _registerName1("compare:options:range:locale:"); + int _objc_msgSend_314( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int mask, + _NSRange rangeOfReceiverToCompare, + ffi.Pointer locale, + ) { + return __objc_msgSend_314( + obj, + sel, + string, + mask, + rangeOfReceiverToCompare, + locale, + ); + } + + late final __objc_msgSend_314Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_314 = __objc_msgSend_314Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, _NSRange, ffi.Pointer)>(); + + late final _sel_caseInsensitiveCompare_1 = + _registerName1("caseInsensitiveCompare:"); + late final _sel_localizedCompare_1 = _registerName1("localizedCompare:"); + late final _sel_localizedCaseInsensitiveCompare_1 = + _registerName1("localizedCaseInsensitiveCompare:"); + late final _sel_localizedStandardCompare_1 = + _registerName1("localizedStandardCompare:"); + late final _sel_isEqualToString_1 = _registerName1("isEqualToString:"); + late final _sel_hasPrefix_1 = _registerName1("hasPrefix:"); + late final _sel_hasSuffix_1 = _registerName1("hasSuffix:"); + late final _sel_commonPrefixWithString_options_1 = + _registerName1("commonPrefixWithString:options:"); + ffi.Pointer _objc_msgSend_315( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer str, + int mask, + ) { + return __objc_msgSend_315( + obj, + sel, + str, + mask, + ); + } + + late final __objc_msgSend_315Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_315 = __objc_msgSend_315Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_containsString_1 = _registerName1("containsString:"); + late final _sel_localizedCaseInsensitiveContainsString_1 = + _registerName1("localizedCaseInsensitiveContainsString:"); + late final _sel_localizedStandardContainsString_1 = + _registerName1("localizedStandardContainsString:"); + late final _sel_localizedStandardRangeOfString_1 = + _registerName1("localizedStandardRangeOfString:"); + void _objc_msgSend_316( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer str, + ) { + return __objc_msgSend_316( + stret, + obj, + sel, + str, + ); + } + + late final __objc_msgSend_316Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_316 = __objc_msgSend_316Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_rangeOfString_1 = _registerName1("rangeOfString:"); + late final _sel_rangeOfString_options_1 = + _registerName1("rangeOfString:options:"); + void _objc_msgSend_317( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchString, + int mask, + ) { + return __objc_msgSend_317( + stret, + obj, + sel, + searchString, + mask, + ); + } + + late final __objc_msgSend_317Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend_stret'); + late final __objc_msgSend_317 = __objc_msgSend_317Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_rangeOfString_options_range_1 = + _registerName1("rangeOfString:options:range:"); + void _objc_msgSend_318( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchString, + int mask, + _NSRange rangeOfReceiverToSearch, + ) { + return __objc_msgSend_318( + stret, + obj, + sel, + searchString, + mask, + rangeOfReceiverToSearch, + ); + } + + late final __objc_msgSend_318Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend_stret'); + late final __objc_msgSend_318 = __objc_msgSend_318Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, _NSRange)>(); + + late final _sel_rangeOfString_options_range_locale_1 = + _registerName1("rangeOfString:options:range:locale:"); + void _objc_msgSend_319( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchString, + int mask, + _NSRange rangeOfReceiverToSearch, + ffi.Pointer locale, + ) { + return __objc_msgSend_319( + stret, + obj, + sel, + searchString, + mask, + rangeOfReceiverToSearch, + locale, + ); + } + + late final __objc_msgSend_319Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_319 = __objc_msgSend_319Ptr.asFunction< + void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); + + late final _sel_rangeOfCharacterFromSet_1 = + _registerName1("rangeOfCharacterFromSet:"); + void _objc_msgSend_320( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchSet, + ) { + return __objc_msgSend_320( + stret, + obj, + sel, + searchSet, + ); + } + + late final __objc_msgSend_320Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_320 = __objc_msgSend_320Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_rangeOfCharacterFromSet_options_1 = + _registerName1("rangeOfCharacterFromSet:options:"); + void _objc_msgSend_321( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchSet, + int mask, + ) { + return __objc_msgSend_321( + stret, + obj, + sel, + searchSet, + mask, + ); + } + + late final __objc_msgSend_321Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend_stret'); + late final __objc_msgSend_321 = __objc_msgSend_321Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_rangeOfCharacterFromSet_options_range_1 = + _registerName1("rangeOfCharacterFromSet:options:range:"); + void _objc_msgSend_322( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer searchSet, + int mask, + _NSRange rangeOfReceiverToSearch, + ) { + return __objc_msgSend_322( + stret, + obj, + sel, + searchSet, + mask, + rangeOfReceiverToSearch, + ); + } + + late final __objc_msgSend_322Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend_stret'); + late final __objc_msgSend_322 = __objc_msgSend_322Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, _NSRange)>(); + + late final _sel_rangeOfComposedCharacterSequenceAtIndex_1 = + _registerName1("rangeOfComposedCharacterSequenceAtIndex:"); + void _objc_msgSend_323( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_323( + stret, + obj, + sel, + index, + ); + } + + late final __objc_msgSend_323Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend_stret'); + late final __objc_msgSend_323 = __objc_msgSend_323Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_rangeOfComposedCharacterSequencesForRange_1 = + _registerName1("rangeOfComposedCharacterSequencesForRange:"); + void _objc_msgSend_324( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ) { + return __objc_msgSend_324( + stret, + obj, + sel, + range, + ); + } + + late final __objc_msgSend_324Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend_stret'); + late final __objc_msgSend_324 = __objc_msgSend_324Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, _NSRange)>(); + + late final _sel_stringByAppendingString_1 = + _registerName1("stringByAppendingString:"); + late final _sel_stringByAppendingFormat_1 = + _registerName1("stringByAppendingFormat:"); + late final _sel_uppercaseString1 = _registerName1("uppercaseString"); + late final _sel_lowercaseString1 = _registerName1("lowercaseString"); + late final _sel_capitalizedString1 = _registerName1("capitalizedString"); + late final _sel_localizedUppercaseString1 = + _registerName1("localizedUppercaseString"); + late final _sel_localizedLowercaseString1 = + _registerName1("localizedLowercaseString"); + late final _sel_localizedCapitalizedString1 = + _registerName1("localizedCapitalizedString"); + late final _sel_uppercaseStringWithLocale_1 = + _registerName1("uppercaseStringWithLocale:"); + ffi.Pointer _objc_msgSend_325( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer locale, + ) { + return __objc_msgSend_325( + obj, + sel, + locale, + ); + } + + late final __objc_msgSend_325Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_325 = __objc_msgSend_325Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_lowercaseStringWithLocale_1 = + _registerName1("lowercaseStringWithLocale:"); + late final _sel_capitalizedStringWithLocale_1 = + _registerName1("capitalizedStringWithLocale:"); + late final _sel_getLineStart_end_contentsEnd_forRange_1 = + _registerName1("getLineStart:end:contentsEnd:forRange:"); + void _objc_msgSend_326( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer startPtr, + ffi.Pointer lineEndPtr, + ffi.Pointer contentsEndPtr, + _NSRange range, + ) { + return __objc_msgSend_326( + obj, + sel, + startPtr, + lineEndPtr, + contentsEndPtr, + range, + ); + } + + late final __objc_msgSend_326Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_326 = __objc_msgSend_326Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>(); + + late final _sel_lineRangeForRange_1 = _registerName1("lineRangeForRange:"); + late final _sel_getParagraphStart_end_contentsEnd_forRange_1 = + _registerName1("getParagraphStart:end:contentsEnd:forRange:"); + late final _sel_paragraphRangeForRange_1 = + _registerName1("paragraphRangeForRange:"); + late final _sel_enumerateSubstringsInRange_options_usingBlock_1 = + _registerName1("enumerateSubstringsInRange:options:usingBlock:"); + void _objc_msgSend_327( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_327( + obj, + sel, + range, + opts, + block, + ); + } + + late final __objc_msgSend_327Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_327 = __objc_msgSend_327Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_enumerateLinesUsingBlock_1 = + _registerName1("enumerateLinesUsingBlock:"); + void _objc_msgSend_328( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_328( + obj, + sel, + block, + ); + } + + late final __objc_msgSend_328Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_328 = __objc_msgSend_328Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_UTF8String1 = _registerName1("UTF8String"); + late final _sel_fastestEncoding1 = _registerName1("fastestEncoding"); + late final _sel_smallestEncoding1 = _registerName1("smallestEncoding"); + late final _sel_dataUsingEncoding_allowLossyConversion_1 = + _registerName1("dataUsingEncoding:allowLossyConversion:"); + ffi.Pointer _objc_msgSend_329( + ffi.Pointer obj, + ffi.Pointer sel, + int encoding, + bool lossy, + ) { + return __objc_msgSend_329( + obj, + sel, + encoding, + lossy, + ); + } + + late final __objc_msgSend_329Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_329 = __objc_msgSend_329Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int, bool)>(); + + late final _sel_dataUsingEncoding_1 = _registerName1("dataUsingEncoding:"); + ffi.Pointer _objc_msgSend_330( + ffi.Pointer obj, + ffi.Pointer sel, + int encoding, + ) { + return __objc_msgSend_330( + obj, + sel, + encoding, + ); + } + + late final __objc_msgSend_330Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_330 = __objc_msgSend_330Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_canBeConvertedToEncoding_1 = + _registerName1("canBeConvertedToEncoding:"); + late final _sel_cStringUsingEncoding_1 = + _registerName1("cStringUsingEncoding:"); + late final _sel_getCString_maxLength_encoding_1 = + _registerName1("getCString:maxLength:encoding:"); + bool _objc_msgSend_331( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + int maxBufferCount, + int encoding, + ) { + return __objc_msgSend_331( + obj, + sel, + buffer, + maxBufferCount, + encoding, + ); + } + + late final __objc_msgSend_331Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_331 = __objc_msgSend_331Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, int)>(); + + late final _sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1 = + _registerName1( + "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:"); + bool _objc_msgSend_332( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + int maxBufferCount, + ffi.Pointer usedBufferCount, + int encoding, + int options, + _NSRange range, + ffi.Pointer<_NSRange> leftover, + ) { + return __objc_msgSend_332( + obj, + sel, + buffer, + maxBufferCount, + usedBufferCount, + encoding, + options, + range, + leftover, + ); + } + + late final __objc_msgSend_332Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Int32, + _NSRange, + ffi.Pointer<_NSRange>)>>('objc_msgSend'); + late final __objc_msgSend_332 = __objc_msgSend_332Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + int, + int, + _NSRange, + ffi.Pointer<_NSRange>)>(); + + late final _sel_maximumLengthOfBytesUsingEncoding_1 = + _registerName1("maximumLengthOfBytesUsingEncoding:"); + late final _sel_lengthOfBytesUsingEncoding_1 = + _registerName1("lengthOfBytesUsingEncoding:"); + late final _sel_availableStringEncodings1 = + _registerName1("availableStringEncodings"); + ffi.Pointer _objc_msgSend_333( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_333( + obj, + sel, + ); + } + + late final __objc_msgSend_333Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_333 = __objc_msgSend_333Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_localizedNameOfStringEncoding_1 = + _registerName1("localizedNameOfStringEncoding:"); + late final _sel_defaultCStringEncoding1 = + _registerName1("defaultCStringEncoding"); + late final _sel_decomposedStringWithCanonicalMapping1 = + _registerName1("decomposedStringWithCanonicalMapping"); + late final _sel_precomposedStringWithCanonicalMapping1 = + _registerName1("precomposedStringWithCanonicalMapping"); + late final _sel_decomposedStringWithCompatibilityMapping1 = + _registerName1("decomposedStringWithCompatibilityMapping"); + late final _sel_precomposedStringWithCompatibilityMapping1 = + _registerName1("precomposedStringWithCompatibilityMapping"); + late final _sel_componentsSeparatedByString_1 = + _registerName1("componentsSeparatedByString:"); + late final _sel_componentsSeparatedByCharactersInSet_1 = + _registerName1("componentsSeparatedByCharactersInSet:"); + ffi.Pointer _objc_msgSend_334( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer separator, + ) { + return __objc_msgSend_334( + obj, + sel, + separator, + ); + } + + late final __objc_msgSend_334Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_334 = __objc_msgSend_334Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_stringByTrimmingCharactersInSet_1 = + _registerName1("stringByTrimmingCharactersInSet:"); + ffi.Pointer _objc_msgSend_335( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer set1, + ) { + return __objc_msgSend_335( + obj, + sel, + set1, + ); + } + + late final __objc_msgSend_335Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_335 = __objc_msgSend_335Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_stringByPaddingToLength_withString_startingAtIndex_1 = + _registerName1("stringByPaddingToLength:withString:startingAtIndex:"); + ffi.Pointer _objc_msgSend_336( + ffi.Pointer obj, + ffi.Pointer sel, + int newLength, + ffi.Pointer padString, + int padIndex, + ) { + return __objc_msgSend_336( + obj, + sel, + newLength, + padString, + padIndex, + ); + } + + late final __objc_msgSend_336Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_336 = __objc_msgSend_336Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer, int)>(); + + late final _sel_stringByFoldingWithOptions_locale_1 = + _registerName1("stringByFoldingWithOptions:locale:"); + ffi.Pointer _objc_msgSend_337( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ffi.Pointer locale, + ) { + return __objc_msgSend_337( + obj, + sel, + options, + locale, + ); + } + + late final __objc_msgSend_337Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_337 = __objc_msgSend_337Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_stringByReplacingOccurrencesOfString_withString_options_range_1 = + _registerName1( + "stringByReplacingOccurrencesOfString:withString:options:range:"); + ffi.Pointer _objc_msgSend_338( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer target, + ffi.Pointer replacement, + int options, + _NSRange searchRange, + ) { + return __objc_msgSend_338( + obj, + sel, + target, + replacement, + options, + searchRange, + ); + } + + late final __objc_msgSend_338Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_338 = __objc_msgSend_338Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange)>(); + + late final _sel_stringByReplacingOccurrencesOfString_withString_1 = + _registerName1("stringByReplacingOccurrencesOfString:withString:"); + ffi.Pointer _objc_msgSend_339( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer target, + ffi.Pointer replacement, + ) { + return __objc_msgSend_339( + obj, + sel, + target, + replacement, + ); + } + + late final __objc_msgSend_339Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_339 = __objc_msgSend_339Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_stringByReplacingCharactersInRange_withString_1 = + _registerName1("stringByReplacingCharactersInRange:withString:"); + ffi.Pointer _objc_msgSend_340( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer replacement, + ) { + return __objc_msgSend_340( + obj, + sel, + range, + replacement, + ); + } + + late final __objc_msgSend_340Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_340 = __objc_msgSend_340Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); + + late final _sel_stringByApplyingTransform_reverse_1 = + _registerName1("stringByApplyingTransform:reverse:"); + ffi.Pointer _objc_msgSend_341( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer transform, + bool reverse, + ) { + return __objc_msgSend_341( + obj, + sel, + transform, + reverse, + ); + } + + late final __objc_msgSend_341Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_341 = __objc_msgSend_341Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_writeToURL_atomically_encoding_error_1 = + _registerName1("writeToURL:atomically:encoding:error:"); + bool _objc_msgSend_342( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + bool useAuxiliaryFile, + int enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_342( + obj, + sel, + url, + useAuxiliaryFile, + enc, + error, + ); + } + + late final __objc_msgSend_342Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_342 = __objc_msgSend_342Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + int, + ffi.Pointer>)>(); + + late final _sel_writeToFile_atomically_encoding_error_1 = + _registerName1("writeToFile:atomically:encoding:error:"); + bool _objc_msgSend_343( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool useAuxiliaryFile, + int enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_343( + obj, + sel, + path, + useAuxiliaryFile, + enc, + error, + ); + } + + late final __objc_msgSend_343Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_343 = __objc_msgSend_343Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + int, + ffi.Pointer>)>(); + + late final _sel_hash1 = _registerName1("hash"); + late final _sel_initWithCharactersNoCopy_length_freeWhenDone_1 = + _registerName1("initWithCharactersNoCopy:length:freeWhenDone:"); + instancetype _objc_msgSend_344( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer characters, + int length, + bool freeBuffer, + ) { + return __objc_msgSend_344( + obj, + sel, + characters, + length, + freeBuffer, + ); + } + + late final __objc_msgSend_344Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_344 = __objc_msgSend_344Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, bool)>(); + + late final _sel_initWithCharactersNoCopy_length_deallocator_1 = + _registerName1("initWithCharactersNoCopy:length:deallocator:"); + instancetype _objc_msgSend_345( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer chars, + int len, + ffi.Pointer<_ObjCBlock> deallocator, + ) { + return __objc_msgSend_345( + obj, + sel, + chars, + len, + deallocator, + ); + } + + late final __objc_msgSend_345Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_345 = __objc_msgSend_345Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_initWithCharacters_length_1 = + _registerName1("initWithCharacters:length:"); + instancetype _objc_msgSend_346( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer characters, + int length, + ) { + return __objc_msgSend_346( + obj, + sel, + characters, + length, + ); + } + + late final __objc_msgSend_346Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_346 = __objc_msgSend_346Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_initWithUTF8String_1 = _registerName1("initWithUTF8String:"); + instancetype _objc_msgSend_347( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer nullTerminatedCString, + ) { + return __objc_msgSend_347( + obj, + sel, + nullTerminatedCString, + ); + } + + late final __objc_msgSend_347Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_347 = __objc_msgSend_347Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithFormat_1 = _registerName1("initWithFormat:"); + late final _sel_initWithFormat_arguments_1 = + _registerName1("initWithFormat:arguments:"); + instancetype _objc_msgSend_348( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer argList, + ) { + return __objc_msgSend_348( + obj, + sel, + format, + argList, + ); + } + + late final __objc_msgSend_348Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_348 = __objc_msgSend_348Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithFormat_locale_1 = + _registerName1("initWithFormat:locale:"); + late final _sel_initWithFormat_locale_arguments_1 = + _registerName1("initWithFormat:locale:arguments:"); + instancetype _objc_msgSend_349( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer locale, + ffi.Pointer argList, + ) { + return __objc_msgSend_349( + obj, + sel, + format, + locale, + argList, + ); + } + + late final __objc_msgSend_349Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_349 = __objc_msgSend_349Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithValidatedFormat_validFormatSpecifiers_error_1 = + _registerName1("initWithValidatedFormat:validFormatSpecifiers:error:"); + instancetype _objc_msgSend_350( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer validFormatSpecifiers, + ffi.Pointer> error, + ) { + return __objc_msgSend_350( + obj, + sel, + format, + validFormatSpecifiers, + error, + ); + } + + late final __objc_msgSend_350Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_350 = __objc_msgSend_350Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1 = + _registerName1( + "initWithValidatedFormat:validFormatSpecifiers:locale:error:"); + instancetype _objc_msgSend_351( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer validFormatSpecifiers, + ffi.Pointer locale, + ffi.Pointer> error, + ) { + return __objc_msgSend_351( + obj, + sel, + format, + validFormatSpecifiers, + locale, + error, + ); + } + + late final __objc_msgSend_351Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_351 = __objc_msgSend_351Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1 = + _registerName1( + "initWithValidatedFormat:validFormatSpecifiers:arguments:error:"); + instancetype _objc_msgSend_352( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer validFormatSpecifiers, + ffi.Pointer argList, + ffi.Pointer> error, + ) { + return __objc_msgSend_352( + obj, + sel, + format, + validFormatSpecifiers, + argList, + error, + ); + } + + late final __objc_msgSend_352Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_352 = __objc_msgSend_352Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1 = + _registerName1( + "initWithValidatedFormat:validFormatSpecifiers:locale:arguments:error:"); + instancetype _objc_msgSend_353( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + ffi.Pointer validFormatSpecifiers, + ffi.Pointer locale, + ffi.Pointer argList, + ffi.Pointer> error, + ) { + return __objc_msgSend_353( + obj, + sel, + format, + validFormatSpecifiers, + locale, + argList, + error, + ); + } + + late final __objc_msgSend_353Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_353 = __objc_msgSend_353Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithData_encoding_1 = + _registerName1("initWithData:encoding:"); + instancetype _objc_msgSend_354( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + int encoding, + ) { + return __objc_msgSend_354( + obj, + sel, + data, + encoding, + ); + } + + late final __objc_msgSend_354Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_354 = __objc_msgSend_354Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_initWithBytes_length_encoding_1 = + _registerName1("initWithBytes:length:encoding:"); + instancetype _objc_msgSend_355( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int len, + int encoding, + ) { + return __objc_msgSend_355( + obj, + sel, + bytes, + len, + encoding, + ); + } + + late final __objc_msgSend_355Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_355 = __objc_msgSend_355Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, int)>(); + + late final _sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1 = + _registerName1("initWithBytesNoCopy:length:encoding:freeWhenDone:"); + instancetype _objc_msgSend_356( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int len, + int encoding, + bool freeBuffer, + ) { + return __objc_msgSend_356( + obj, + sel, + bytes, + len, + encoding, + freeBuffer, + ); + } + + late final __objc_msgSend_356Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_356 = __objc_msgSend_356Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, int, bool)>(); + + late final _sel_initWithBytesNoCopy_length_encoding_deallocator_1 = + _registerName1("initWithBytesNoCopy:length:encoding:deallocator:"); + instancetype _objc_msgSend_357( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int len, + int encoding, + ffi.Pointer<_ObjCBlock> deallocator, + ) { + return __objc_msgSend_357( + obj, + sel, + bytes, + len, + encoding, + deallocator, + ); + } + + late final __objc_msgSend_357Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_357 = __objc_msgSend_357Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_string1 = _registerName1("string"); + late final _sel_stringWithString_1 = _registerName1("stringWithString:"); + late final _sel_stringWithCharacters_length_1 = + _registerName1("stringWithCharacters:length:"); + late final _sel_stringWithUTF8String_1 = + _registerName1("stringWithUTF8String:"); + late final _sel_stringWithFormat_1 = _registerName1("stringWithFormat:"); + late final _sel_localizedStringWithFormat_1 = + _registerName1("localizedStringWithFormat:"); + late final _sel_stringWithValidatedFormat_validFormatSpecifiers_error_1 = + _registerName1("stringWithValidatedFormat:validFormatSpecifiers:error:"); + late final _sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1 = + _registerName1( + "localizedStringWithValidatedFormat:validFormatSpecifiers:error:"); + late final _sel_initWithCString_encoding_1 = + _registerName1("initWithCString:encoding:"); + instancetype _objc_msgSend_358( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer nullTerminatedCString, + int encoding, + ) { + return __objc_msgSend_358( + obj, + sel, + nullTerminatedCString, + encoding, + ); + } + + late final __objc_msgSend_358Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_358 = __objc_msgSend_358Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_stringWithCString_encoding_1 = + _registerName1("stringWithCString:encoding:"); + late final _sel_initWithContentsOfURL_encoding_error_1 = + _registerName1("initWithContentsOfURL:encoding:error:"); + instancetype _objc_msgSend_359( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_359( + obj, + sel, + url, + enc, + error, + ); + } + + late final __objc_msgSend_359Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_359 = __objc_msgSend_359Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_initWithContentsOfFile_encoding_error_1 = + _registerName1("initWithContentsOfFile:encoding:error:"); + instancetype _objc_msgSend_360( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + int enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_360( + obj, + sel, + path, + enc, + error, + ); + } + + late final __objc_msgSend_360Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_360 = __objc_msgSend_360Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_stringWithContentsOfURL_encoding_error_1 = + _registerName1("stringWithContentsOfURL:encoding:error:"); + late final _sel_stringWithContentsOfFile_encoding_error_1 = + _registerName1("stringWithContentsOfFile:encoding:error:"); + late final _sel_initWithContentsOfURL_usedEncoding_error_1 = + _registerName1("initWithContentsOfURL:usedEncoding:error:"); + instancetype _objc_msgSend_361( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_361( + obj, + sel, + url, + enc, + error, + ); + } + + late final __objc_msgSend_361Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_361 = __objc_msgSend_361Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithContentsOfFile_usedEncoding_error_1 = + _registerName1("initWithContentsOfFile:usedEncoding:error:"); + instancetype _objc_msgSend_362( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer enc, + ffi.Pointer> error, + ) { + return __objc_msgSend_362( + obj, + sel, + path, + enc, + error, + ); + } + + late final __objc_msgSend_362Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_362 = __objc_msgSend_362Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_stringWithContentsOfURL_usedEncoding_error_1 = + _registerName1("stringWithContentsOfURL:usedEncoding:error:"); + late final _sel_stringWithContentsOfFile_usedEncoding_error_1 = + _registerName1("stringWithContentsOfFile:usedEncoding:error:"); + late final _sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1 = + _registerName1( + "stringEncodingForData:encodingOptions:convertedString:usedLossyConversion:"); + int _objc_msgSend_363( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ffi.Pointer opts, + ffi.Pointer> string, + ffi.Pointer usedLossyConversion, + ) { + return __objc_msgSend_363( + obj, + sel, + data, + opts, + string, + usedLossyConversion, + ); + } + + late final __objc_msgSend_363Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_363 = __objc_msgSend_363Ptr.asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>(); + + late final _sel_propertyList1 = _registerName1("propertyList"); + late final _sel_propertyListFromStringsFileFormat1 = + _registerName1("propertyListFromStringsFileFormat"); + late final _sel_cString1 = _registerName1("cString"); + late final _sel_lossyCString1 = _registerName1("lossyCString"); + late final _sel_cStringLength1 = _registerName1("cStringLength"); + late final _sel_getCString_1 = _registerName1("getCString:"); + late final _sel_getCString_maxLength_1 = + _registerName1("getCString:maxLength:"); + void _objc_msgSend_364( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int maxLength, + ) { + return __objc_msgSend_364( + obj, + sel, + bytes, + maxLength, + ); + } + + late final __objc_msgSend_364Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_364 = __objc_msgSend_364Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_getCString_maxLength_range_remainingRange_1 = + _registerName1("getCString:maxLength:range:remainingRange:"); + void _objc_msgSend_365( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int maxLength, + _NSRange aRange, + ffi.Pointer<_NSRange> leftoverRange, + ) { + return __objc_msgSend_365( + obj, + sel, + bytes, + maxLength, + aRange, + leftoverRange, + ); + } + + late final __objc_msgSend_365Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + _NSRange, + ffi.Pointer<_NSRange>)>>('objc_msgSend'); + late final __objc_msgSend_365 = __objc_msgSend_365Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, _NSRange, ffi.Pointer<_NSRange>)>(); + + late final _sel_stringWithContentsOfFile_1 = + _registerName1("stringWithContentsOfFile:"); + late final _sel_stringWithContentsOfURL_1 = + _registerName1("stringWithContentsOfURL:"); + late final _sel_initWithCStringNoCopy_length_freeWhenDone_1 = + _registerName1("initWithCStringNoCopy:length:freeWhenDone:"); + ffi.Pointer _objc_msgSend_366( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + int length, + bool freeBuffer, + ) { + return __objc_msgSend_366( + obj, + sel, + bytes, + length, + freeBuffer, + ); + } + + late final __objc_msgSend_366Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_366 = __objc_msgSend_366Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, bool)>(); + + late final _sel_initWithCString_length_1 = + _registerName1("initWithCString:length:"); + late final _sel_initWithCString_1 = _registerName1("initWithCString:"); + late final _sel_stringWithCString_length_1 = + _registerName1("stringWithCString:length:"); + late final _sel_stringWithCString_1 = _registerName1("stringWithCString:"); + late final _sel_getCharacters_1 = _registerName1("getCharacters:"); + void _objc_msgSend_367( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + ) { + return __objc_msgSend_367( + obj, + sel, + buffer, + ); + } + + late final __objc_msgSend_367Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_367 = __objc_msgSend_367Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_variantFittingPresentationWidth_1 = + _registerName1("variantFittingPresentationWidth:"); + ffi.Pointer _objc_msgSend_368( + ffi.Pointer obj, + ffi.Pointer sel, + int width, + ) { + return __objc_msgSend_368( + obj, + sel, + width, + ); + } + + late final __objc_msgSend_368Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_368 = __objc_msgSend_368Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_pathWithComponents_1 = _registerName1("pathWithComponents:"); + ffi.Pointer _objc_msgSend_369( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer components, + ) { + return __objc_msgSend_369( + obj, + sel, + components, + ); + } + + late final __objc_msgSend_369Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_369 = __objc_msgSend_369Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_isAbsolutePath1 = _registerName1("isAbsolutePath"); + late final _sel_stringByDeletingLastPathComponent1 = + _registerName1("stringByDeletingLastPathComponent"); + late final _sel_stringByAppendingPathComponent_1 = + _registerName1("stringByAppendingPathComponent:"); + late final _sel_stringByDeletingPathExtension1 = + _registerName1("stringByDeletingPathExtension"); + late final _sel_stringByAppendingPathExtension_1 = + _registerName1("stringByAppendingPathExtension:"); + late final _sel_stringByAbbreviatingWithTildeInPath1 = + _registerName1("stringByAbbreviatingWithTildeInPath"); + late final _sel_stringByExpandingTildeInPath1 = + _registerName1("stringByExpandingTildeInPath"); + late final _sel_stringByStandardizingPath1 = + _registerName1("stringByStandardizingPath"); + late final _sel_stringByResolvingSymlinksInPath1 = + _registerName1("stringByResolvingSymlinksInPath"); + late final _sel_stringsByAppendingPaths_1 = + _registerName1("stringsByAppendingPaths:"); + late final _sel_completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_1 = + _registerName1( + "completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:"); + int _objc_msgSend_370( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> outputName, + bool flag, + ffi.Pointer> outputArray, + ffi.Pointer filterTypes, + ) { + return __objc_msgSend_370( + obj, + sel, + outputName, + flag, + outputArray, + filterTypes, + ); + } + + late final __objc_msgSend_370Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Bool, + ffi.Pointer>, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_370 = __objc_msgSend_370Ptr.asFunction< + int Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + bool, + ffi.Pointer>, + ffi.Pointer)>(); + + late final _sel_stringByAddingPercentEncodingWithAllowedCharacters_1 = + _registerName1("stringByAddingPercentEncodingWithAllowedCharacters:"); + late final _sel_stringByRemovingPercentEncoding1 = + _registerName1("stringByRemovingPercentEncoding"); + late final _sel_stringByAddingPercentEscapesUsingEncoding_1 = + _registerName1("stringByAddingPercentEscapesUsingEncoding:"); + late final _sel_stringByReplacingPercentEscapesUsingEncoding_1 = + _registerName1("stringByReplacingPercentEscapesUsingEncoding:"); + late final _class_NSOrthography1 = _getClass1("NSOrthography"); + late final _sel_dominantScript1 = _registerName1("dominantScript"); + late final _sel_languageMap1 = _registerName1("languageMap"); + late final _sel_initWithDominantScript_languageMap_1 = + _registerName1("initWithDominantScript:languageMap:"); + instancetype _objc_msgSend_371( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer script, + ffi.Pointer map, + ) { + return __objc_msgSend_371( + obj, + sel, + script, + map, + ); + } + + late final __objc_msgSend_371Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_371 = __objc_msgSend_371Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_languagesForScript_1 = _registerName1("languagesForScript:"); + late final _sel_dominantLanguageForScript_1 = + _registerName1("dominantLanguageForScript:"); + late final _sel_dominantLanguage1 = _registerName1("dominantLanguage"); + late final _sel_allScripts1 = _registerName1("allScripts"); + late final _sel_allLanguages1 = _registerName1("allLanguages"); + late final _sel_defaultOrthographyForLanguage_1 = + _registerName1("defaultOrthographyForLanguage:"); + late final _sel_orthographyWithDominantScript_languageMap_1 = + _registerName1("orthographyWithDominantScript:languageMap:"); + late final _sel_linguisticTagsInRange_scheme_options_orthography_tokenRanges_1 = + _registerName1( + "linguisticTagsInRange:scheme:options:orthography:tokenRanges:"); + ffi.Pointer _objc_msgSend_372( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer scheme, + int options, + ffi.Pointer orthography, + ffi.Pointer> tokenRanges, + ) { + return __objc_msgSend_372( + obj, + sel, + range, + scheme, + options, + orthography, + tokenRanges, + ); + } + + late final __objc_msgSend_372Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_372 = __objc_msgSend_372Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_enumerateLinguisticTagsInRange_scheme_options_orthography_usingBlock_1 = + _registerName1( + "enumerateLinguisticTagsInRange:scheme:options:orthography:usingBlock:"); + void _objc_msgSend_373( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer scheme, + int options, + ffi.Pointer orthography, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_373( + obj, + sel, + range, + scheme, + options, + orthography, + block, + ); + } + + late final __objc_msgSend_373Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_373 = __objc_msgSend_373Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_anyObject1 = _registerName1("anyObject"); + late final _sel_intersectsSet_1 = _registerName1("intersectsSet:"); + bool _objc_msgSend_374( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherSet, + ) { + return __objc_msgSend_374( + obj, + sel, + otherSet, + ); + } + + late final __objc_msgSend_374Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_374 = __objc_msgSend_374Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_isEqualToSet_1 = _registerName1("isEqualToSet:"); + late final _sel_isSubsetOfSet_1 = _registerName1("isSubsetOfSet:"); + late final _sel_setByAddingObject_1 = _registerName1("setByAddingObject:"); + ffi.Pointer _objc_msgSend_375( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anObject, + ) { + return __objc_msgSend_375( + obj, + sel, + anObject, + ); + } + + late final __objc_msgSend_375Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_375 = __objc_msgSend_375Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setByAddingObjectsFromSet_1 = + _registerName1("setByAddingObjectsFromSet:"); + ffi.Pointer _objc_msgSend_376( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + ) { + return __objc_msgSend_376( + obj, + sel, + other, + ); + } + + late final __objc_msgSend_376Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_376 = __objc_msgSend_376Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setByAddingObjectsFromArray_1 = + _registerName1("setByAddingObjectsFromArray:"); + ffi.Pointer _objc_msgSend_377( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + ) { + return __objc_msgSend_377( + obj, + sel, + other, + ); + } + + late final __objc_msgSend_377Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_377 = __objc_msgSend_377Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + void _objc_msgSend_378( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_378( + obj, + sel, + block, + ); + } + + late final __objc_msgSend_378Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_378 = __objc_msgSend_378Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + void _objc_msgSend_379( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_379( + obj, + sel, + opts, + block, + ); + } + + late final __objc_msgSend_379Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_379 = __objc_msgSend_379Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_objectsPassingTest_1 = _registerName1("objectsPassingTest:"); + ffi.Pointer _objc_msgSend_380( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_380( + obj, + sel, + predicate, + ); + } + + late final __objc_msgSend_380Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_380 = __objc_msgSend_380Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_objectsWithOptions_passingTest_1 = + _registerName1("objectsWithOptions:passingTest:"); + ffi.Pointer _objc_msgSend_381( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> predicate, + ) { + return __objc_msgSend_381( + obj, + sel, + opts, + predicate, + ); + } + + late final __objc_msgSend_381Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_381 = __objc_msgSend_381Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_set1 = _registerName1("set"); + late final _sel_setWithObject_1 = _registerName1("setWithObject:"); + late final _sel_setWithObjects_count_1 = + _registerName1("setWithObjects:count:"); + late final _sel_setWithObjects_1 = _registerName1("setWithObjects:"); + late final _sel_setWithSet_1 = _registerName1("setWithSet:"); + instancetype _objc_msgSend_382( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer set1, + ) { + return __objc_msgSend_382( + obj, + sel, + set1, + ); + } + + late final __objc_msgSend_382Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_382 = __objc_msgSend_382Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setWithArray_1 = _registerName1("setWithArray:"); + late final _sel_initWithSet_1 = _registerName1("initWithSet:"); + late final _sel_initWithSet_copyItems_1 = + _registerName1("initWithSet:copyItems:"); + instancetype _objc_msgSend_383( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer set1, + bool flag, + ) { + return __objc_msgSend_383( + obj, + sel, + set1, + flag, + ); + } + + late final __objc_msgSend_383Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_383 = __objc_msgSend_383Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_filteredSetUsingPredicate_1 = + _registerName1("filteredSetUsingPredicate:"); + ffi.Pointer _objc_msgSend_384( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer predicate, + ) { + return __objc_msgSend_384( + obj, + sel, + predicate, + ); + } + + late final __objc_msgSend_384Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_384 = __objc_msgSend_384Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_invocationWithMethodSignature_1 = + _registerName1("invocationWithMethodSignature:"); + ffi.Pointer _objc_msgSend_385( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer sig, + ) { + return __objc_msgSend_385( + obj, + sel, + sig, + ); + } + + late final __objc_msgSend_385Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_385 = __objc_msgSend_385Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_methodSignature1 = _registerName1("methodSignature"); + ffi.Pointer _objc_msgSend_386( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_386( + obj, + sel, + ); + } + + late final __objc_msgSend_386Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_386 = __objc_msgSend_386Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_retainArguments1 = _registerName1("retainArguments"); + late final _sel_argumentsRetained1 = _registerName1("argumentsRetained"); + late final _sel_target1 = _registerName1("target"); + late final _sel_setTarget_1 = _registerName1("setTarget:"); + void _objc_msgSend_387( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_387( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_387Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_387 = __objc_msgSend_387Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_selector1 = _registerName1("selector"); + ffi.Pointer _objc_msgSend_388( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_388( + obj, + sel, + ); + } + + late final __objc_msgSend_388Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_388 = __objc_msgSend_388Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setSelector_1 = _registerName1("setSelector:"); + void _objc_msgSend_389( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_389( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_389Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_389 = __objc_msgSend_389Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_getReturnValue_1 = _registerName1("getReturnValue:"); + late final _sel_setReturnValue_1 = _registerName1("setReturnValue:"); + late final _sel_getArgument_atIndex_1 = + _registerName1("getArgument:atIndex:"); + void _objc_msgSend_390( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer argumentLocation, + int idx, + ) { + return __objc_msgSend_390( + obj, + sel, + argumentLocation, + idx, + ); + } + + late final __objc_msgSend_390Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_390 = __objc_msgSend_390Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_setArgument_atIndex_1 = + _registerName1("setArgument:atIndex:"); + late final _sel_invoke1 = _registerName1("invoke"); + late final _sel_invokeWithTarget_1 = _registerName1("invokeWithTarget:"); + late final _sel_invokeUsingIMP_1 = _registerName1("invokeUsingIMP:"); + void _objc_msgSend_391( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> imp, + ) { + return __objc_msgSend_391( + obj, + sel, + imp, + ); + } + + late final __objc_msgSend_391Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>>( + 'objc_msgSend'); + late final __objc_msgSend_391 = __objc_msgSend_391Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_forwardInvocation_1 = _registerName1("forwardInvocation:"); + void _objc_msgSend_392( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anInvocation, + ) { + return __objc_msgSend_392( + obj, + sel, + anInvocation, + ); + } + + late final __objc_msgSend_392Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_392 = __objc_msgSend_392Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_methodSignatureForSelector_1 = + _registerName1("methodSignatureForSelector:"); + ffi.Pointer _objc_msgSend_393( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ) { + return __objc_msgSend_393( + obj, + sel, + aSelector, + ); + } + + late final __objc_msgSend_393Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_393 = __objc_msgSend_393Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_instanceMethodSignatureForSelector_1 = + _registerName1("instanceMethodSignatureForSelector:"); + late final _sel_allowsWeakReference1 = _registerName1("allowsWeakReference"); + late final _sel_retainWeakReference1 = _registerName1("retainWeakReference"); + late final _sel_isSubclassOfClass_1 = _registerName1("isSubclassOfClass:"); + late final _sel_resolveClassMethod_1 = _registerName1("resolveClassMethod:"); + late final _sel_resolveInstanceMethod_1 = + _registerName1("resolveInstanceMethod:"); + late final _sel_superclass1 = _registerName1("superclass"); + late final _sel_class1 = _registerName1("class"); + late final _sel_debugDescription1 = _registerName1("debugDescription"); + late final _sel_version1 = _registerName1("version"); + late final _sel_setVersion_1 = _registerName1("setVersion:"); + void _objc_msgSend_394( + ffi.Pointer obj, + ffi.Pointer sel, + int aVersion, + ) { + return __objc_msgSend_394( + obj, + sel, + aVersion, + ); + } + + late final __objc_msgSend_394Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_394 = __objc_msgSend_394Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_classForCoder1 = _registerName1("classForCoder"); + late final _sel_replacementObjectForCoder_1 = + _registerName1("replacementObjectForCoder:"); + late final _sel_awakeAfterUsingCoder_1 = + _registerName1("awakeAfterUsingCoder:"); + late final _sel_poseAsClass_1 = _registerName1("poseAsClass:"); + late final _sel_autoContentAccessingProxy1 = + _registerName1("autoContentAccessingProxy"); + late final _sel_attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_1 = + _registerName1( + "attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:"); + void _objc_msgSend_395( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer error, + int recoveryOptionIndex, + ffi.Pointer delegate, + ffi.Pointer didRecoverSelector, + ffi.Pointer contextInfo, + ) { + return __objc_msgSend_395( + obj, + sel, + error, + recoveryOptionIndex, + delegate, + didRecoverSelector, + contextInfo, + ); + } + + late final __objc_msgSend_395Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_395 = __objc_msgSend_395Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_attemptRecoveryFromError_optionIndex_1 = + _registerName1("attemptRecoveryFromError:optionIndex:"); + bool _objc_msgSend_396( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer error, + int recoveryOptionIndex, + ) { + return __objc_msgSend_396( + obj, + sel, + error, + recoveryOptionIndex, + ); + } + + late final __objc_msgSend_396Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_396 = __objc_msgSend_396Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_performSelector_withObject_afterDelay_inModes_1 = + _registerName1("performSelector:withObject:afterDelay:inModes:"); + void _objc_msgSend_397( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ffi.Pointer anArgument, + double delay, + ffi.Pointer modes, + ) { + return __objc_msgSend_397( + obj, + sel, + aSelector, + anArgument, + delay, + modes, + ); + } + + late final __objc_msgSend_397Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_397 = __objc_msgSend_397Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer)>(); + + late final _sel_performSelector_withObject_afterDelay_1 = + _registerName1("performSelector:withObject:afterDelay:"); + void _objc_msgSend_398( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ffi.Pointer anArgument, + double delay, + ) { + return __objc_msgSend_398( + obj, + sel, + aSelector, + anArgument, + delay, + ); + } + + late final __objc_msgSend_398Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double)>>('objc_msgSend'); + late final __objc_msgSend_398 = __objc_msgSend_398Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, double)>(); + + late final _sel_URL_resourceDataDidBecomeAvailable_1 = + _registerName1("URL:resourceDataDidBecomeAvailable:"); + void _objc_msgSend_399( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer sender, + ffi.Pointer newBytes, + ) { + return __objc_msgSend_399( + obj, + sel, + sender, + newBytes, + ); + } + + late final __objc_msgSend_399Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_399 = __objc_msgSend_399Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_URLResourceDidFinishLoading_1 = + _registerName1("URLResourceDidFinishLoading:"); + void _objc_msgSend_400( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer sender, + ) { + return __objc_msgSend_400( + obj, + sel, + sender, + ); + } + + late final __objc_msgSend_400Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_400 = __objc_msgSend_400Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_URLResourceDidCancelLoading_1 = + _registerName1("URLResourceDidCancelLoading:"); + late final _sel_URL_resourceDidFailLoadingWithReason_1 = + _registerName1("URL:resourceDidFailLoadingWithReason:"); + void _objc_msgSend_401( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer sender, + ffi.Pointer reason, + ) { + return __objc_msgSend_401( + obj, + sel, + sender, + reason, + ); + } + + late final __objc_msgSend_401Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_401 = __objc_msgSend_401Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSFileManager1 = _getClass1("NSFileManager"); + late final _sel_defaultManager1 = _registerName1("defaultManager"); + ffi.Pointer _objc_msgSend_402( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_402( + obj, + sel, + ); + } + + late final __objc_msgSend_402Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_402 = __objc_msgSend_402Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_mountedVolumeURLsIncludingResourceValuesForKeys_options_1 = + _registerName1( + "mountedVolumeURLsIncludingResourceValuesForKeys:options:"); + ffi.Pointer _objc_msgSend_403( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer propertyKeys, + int options, + ) { + return __objc_msgSend_403( + obj, + sel, + propertyKeys, + options, + ); + } + + late final __objc_msgSend_403Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_403 = __objc_msgSend_403Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_unmountVolumeAtURL_options_completionHandler_1 = + _registerName1("unmountVolumeAtURL:options:completionHandler:"); + void _objc_msgSend_404( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int mask, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_404( + obj, + sel, + url, + mask, + completionHandler, + ); + } + + late final __objc_msgSend_404Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_404 = __objc_msgSend_404Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_1 = + _registerName1( + "contentsOfDirectoryAtURL:includingPropertiesForKeys:options:error:"); + ffi.Pointer _objc_msgSend_405( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer keys, + int mask, + ffi.Pointer> error, + ) { + return __objc_msgSend_405( + obj, + sel, + url, + keys, + mask, + error, + ); + } + + late final __objc_msgSend_405Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_405 = __objc_msgSend_405Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_URLsForDirectory_inDomains_1 = + _registerName1("URLsForDirectory:inDomains:"); + ffi.Pointer _objc_msgSend_406( + ffi.Pointer obj, + ffi.Pointer sel, + int directory, + int domainMask, + ) { + return __objc_msgSend_406( + obj, + sel, + directory, + domainMask, + ); + } + + late final __objc_msgSend_406Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_406 = __objc_msgSend_406Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int, int)>(); + + late final _sel_URLForDirectory_inDomain_appropriateForURL_create_error_1 = + _registerName1( + "URLForDirectory:inDomain:appropriateForURL:create:error:"); + ffi.Pointer _objc_msgSend_407( + ffi.Pointer obj, + ffi.Pointer sel, + int directory, + int domain, + ffi.Pointer url, + bool shouldCreate, + ffi.Pointer> error, + ) { + return __objc_msgSend_407( + obj, + sel, + directory, + domain, + url, + shouldCreate, + error, + ); + } + + late final __objc_msgSend_407Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer, + ffi.Bool, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_407 = __objc_msgSend_407Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + bool, + ffi.Pointer>)>(); + + late final _sel_getRelationship_ofDirectoryAtURL_toItemAtURL_error_1 = + _registerName1("getRelationship:ofDirectoryAtURL:toItemAtURL:error:"); + bool _objc_msgSend_408( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer outRelationship, + ffi.Pointer directoryURL, + ffi.Pointer otherURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_408( + obj, + sel, + outRelationship, + directoryURL, + otherURL, + error, + ); + } + + late final __objc_msgSend_408Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_408 = __objc_msgSend_408Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_getRelationship_ofDirectory_inDomain_toItemAtURL_error_1 = + _registerName1("getRelationship:ofDirectory:inDomain:toItemAtURL:error:"); + bool _objc_msgSend_409( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer outRelationship, + int directory, + int domainMask, + ffi.Pointer url, + ffi.Pointer> error, + ) { + return __objc_msgSend_409( + obj, + sel, + outRelationship, + directory, + domainMask, + url, + error, + ); + } + + late final __objc_msgSend_409Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_409 = __objc_msgSend_409Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + int, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_createDirectoryAtURL_withIntermediateDirectories_attributes_error_1 = + _registerName1( + "createDirectoryAtURL:withIntermediateDirectories:attributes:error:"); + bool _objc_msgSend_410( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + bool createIntermediates, + ffi.Pointer attributes, + ffi.Pointer> error, + ) { + return __objc_msgSend_410( + obj, + sel, + url, + createIntermediates, + attributes, + error, + ); + } + + late final __objc_msgSend_410Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_410 = __objc_msgSend_410Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_createSymbolicLinkAtURL_withDestinationURL_error_1 = + _registerName1("createSymbolicLinkAtURL:withDestinationURL:error:"); + bool _objc_msgSend_411( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer destURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_411( + obj, + sel, + url, + destURL, + error, + ); + } + + late final __objc_msgSend_411Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_411 = __objc_msgSend_411Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_delegate1 = _registerName1("delegate"); + late final _sel_setDelegate_1 = _registerName1("setDelegate:"); + late final _sel_setAttributes_ofItemAtPath_error_1 = + _registerName1("setAttributes:ofItemAtPath:error:"); + bool _objc_msgSend_412( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer attributes, + ffi.Pointer path, + ffi.Pointer> error, + ) { + return __objc_msgSend_412( + obj, + sel, + attributes, + path, + error, + ); + } + + late final __objc_msgSend_412Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_412 = __objc_msgSend_412Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_createDirectoryAtPath_withIntermediateDirectories_attributes_error_1 = + _registerName1( + "createDirectoryAtPath:withIntermediateDirectories:attributes:error:"); + bool _objc_msgSend_413( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool createIntermediates, + ffi.Pointer attributes, + ffi.Pointer> error, + ) { + return __objc_msgSend_413( + obj, + sel, + path, + createIntermediates, + attributes, + error, + ); + } + + late final __objc_msgSend_413Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_413 = __objc_msgSend_413Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_contentsOfDirectoryAtPath_error_1 = + _registerName1("contentsOfDirectoryAtPath:error:"); + ffi.Pointer _objc_msgSend_414( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer> error, + ) { + return __objc_msgSend_414( + obj, + sel, + path, + error, + ); + } + + late final __objc_msgSend_414Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_414 = __objc_msgSend_414Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_subpathsOfDirectoryAtPath_error_1 = + _registerName1("subpathsOfDirectoryAtPath:error:"); + late final _sel_attributesOfItemAtPath_error_1 = + _registerName1("attributesOfItemAtPath:error:"); + ffi.Pointer _objc_msgSend_415( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer> error, + ) { + return __objc_msgSend_415( + obj, + sel, + path, + error, + ); + } + + late final __objc_msgSend_415Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_415 = __objc_msgSend_415Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_attributesOfFileSystemForPath_error_1 = + _registerName1("attributesOfFileSystemForPath:error:"); + late final _sel_createSymbolicLinkAtPath_withDestinationPath_error_1 = + _registerName1("createSymbolicLinkAtPath:withDestinationPath:error:"); + bool _objc_msgSend_416( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer destPath, + ffi.Pointer> error, + ) { + return __objc_msgSend_416( + obj, + sel, + path, + destPath, + error, + ); + } + + late final __objc_msgSend_416Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_416 = __objc_msgSend_416Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_destinationOfSymbolicLinkAtPath_error_1 = + _registerName1("destinationOfSymbolicLinkAtPath:error:"); + ffi.Pointer _objc_msgSend_417( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer> error, + ) { + return __objc_msgSend_417( + obj, + sel, + path, + error, + ); + } + + late final __objc_msgSend_417Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_417 = __objc_msgSend_417Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_copyItemAtPath_toPath_error_1 = + _registerName1("copyItemAtPath:toPath:error:"); + late final _sel_moveItemAtPath_toPath_error_1 = + _registerName1("moveItemAtPath:toPath:error:"); + late final _sel_linkItemAtPath_toPath_error_1 = + _registerName1("linkItemAtPath:toPath:error:"); + late final _sel_removeItemAtPath_error_1 = + _registerName1("removeItemAtPath:error:"); + bool _objc_msgSend_418( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer> error, + ) { + return __objc_msgSend_418( + obj, + sel, + path, + error, + ); + } + + late final __objc_msgSend_418Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_418 = __objc_msgSend_418Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); + + late final _sel_copyItemAtURL_toURL_error_1 = + _registerName1("copyItemAtURL:toURL:error:"); + late final _sel_moveItemAtURL_toURL_error_1 = + _registerName1("moveItemAtURL:toURL:error:"); + late final _sel_linkItemAtURL_toURL_error_1 = + _registerName1("linkItemAtURL:toURL:error:"); + late final _sel_removeItemAtURL_error_1 = + _registerName1("removeItemAtURL:error:"); + late final _sel_trashItemAtURL_resultingItemURL_error_1 = + _registerName1("trashItemAtURL:resultingItemURL:error:"); + bool _objc_msgSend_419( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer> outResultingURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_419( + obj, + sel, + url, + outResultingURL, + error, + ); + } + + late final __objc_msgSend_419Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_419 = __objc_msgSend_419Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); + + late final _sel_fileAttributesAtPath_traverseLink_1 = + _registerName1("fileAttributesAtPath:traverseLink:"); + ffi.Pointer _objc_msgSend_420( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool yorn, + ) { + return __objc_msgSend_420( + obj, + sel, + path, + yorn, + ); + } + + late final __objc_msgSend_420Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_420 = __objc_msgSend_420Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_changeFileAttributes_atPath_1 = + _registerName1("changeFileAttributes:atPath:"); + bool _objc_msgSend_421( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer attributes, + ffi.Pointer path, + ) { + return __objc_msgSend_421( + obj, + sel, + attributes, + path, + ); + } + + late final __objc_msgSend_421Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_421 = __objc_msgSend_421Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_directoryContentsAtPath_1 = + _registerName1("directoryContentsAtPath:"); + late final _sel_fileSystemAttributesAtPath_1 = + _registerName1("fileSystemAttributesAtPath:"); + late final _sel_pathContentOfSymbolicLinkAtPath_1 = + _registerName1("pathContentOfSymbolicLinkAtPath:"); + late final _sel_createSymbolicLinkAtPath_pathContent_1 = + _registerName1("createSymbolicLinkAtPath:pathContent:"); + bool _objc_msgSend_422( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer otherpath, + ) { + return __objc_msgSend_422( + obj, + sel, + path, + otherpath, + ); + } + + late final __objc_msgSend_422Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_422 = __objc_msgSend_422Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_createDirectoryAtPath_attributes_1 = + _registerName1("createDirectoryAtPath:attributes:"); + bool _objc_msgSend_423( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer attributes, + ) { + return __objc_msgSend_423( + obj, + sel, + path, + attributes, + ); + } + + late final __objc_msgSend_423Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_423 = __objc_msgSend_423Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_linkPath_toPath_handler_1 = + _registerName1("linkPath:toPath:handler:"); + bool _objc_msgSend_424( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer src, + ffi.Pointer dest, + ffi.Pointer handler, + ) { + return __objc_msgSend_424( + obj, + sel, + src, + dest, + handler, + ); + } + + late final __objc_msgSend_424Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_424 = __objc_msgSend_424Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_copyPath_toPath_handler_1 = + _registerName1("copyPath:toPath:handler:"); + late final _sel_movePath_toPath_handler_1 = + _registerName1("movePath:toPath:handler:"); + late final _sel_removeFileAtPath_handler_1 = + _registerName1("removeFileAtPath:handler:"); + bool _objc_msgSend_425( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer handler, + ) { + return __objc_msgSend_425( + obj, + sel, + path, + handler, + ); + } + + late final __objc_msgSend_425Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_425 = __objc_msgSend_425Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_currentDirectoryPath1 = + _registerName1("currentDirectoryPath"); + late final _sel_changeCurrentDirectoryPath_1 = + _registerName1("changeCurrentDirectoryPath:"); + late final _sel_fileExistsAtPath_1 = _registerName1("fileExistsAtPath:"); + late final _sel_fileExistsAtPath_isDirectory_1 = + _registerName1("fileExistsAtPath:isDirectory:"); + bool _objc_msgSend_426( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer isDirectory, + ) { + return __objc_msgSend_426( + obj, + sel, + path, + isDirectory, + ); + } + + late final __objc_msgSend_426Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_426 = __objc_msgSend_426Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_isReadableFileAtPath_1 = + _registerName1("isReadableFileAtPath:"); + late final _sel_isWritableFileAtPath_1 = + _registerName1("isWritableFileAtPath:"); + late final _sel_isExecutableFileAtPath_1 = + _registerName1("isExecutableFileAtPath:"); + late final _sel_isDeletableFileAtPath_1 = + _registerName1("isDeletableFileAtPath:"); + late final _sel_contentsEqualAtPath_andPath_1 = + _registerName1("contentsEqualAtPath:andPath:"); + late final _sel_displayNameAtPath_1 = _registerName1("displayNameAtPath:"); + late final _sel_componentsToDisplayForPath_1 = + _registerName1("componentsToDisplayForPath:"); + late final _sel_enumeratorAtPath_1 = _registerName1("enumeratorAtPath:"); + late final _sel_enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_1 = + _registerName1( + "enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:"); + ffi.Pointer _objc_msgSend_427( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer keys, + int mask, + ffi.Pointer<_ObjCBlock> handler, + ) { + return __objc_msgSend_427( + obj, + sel, + url, + keys, + mask, + handler, + ); + } + + late final __objc_msgSend_427Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_427 = __objc_msgSend_427Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_subpathsAtPath_1 = _registerName1("subpathsAtPath:"); + late final _sel_contentsAtPath_1 = _registerName1("contentsAtPath:"); + ffi.Pointer _objc_msgSend_428( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ) { + return __objc_msgSend_428( + obj, + sel, + path, + ); + } + + late final __objc_msgSend_428Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_428 = __objc_msgSend_428Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_createFileAtPath_contents_attributes_1 = + _registerName1("createFileAtPath:contents:attributes:"); + bool _objc_msgSend_429( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer data, + ffi.Pointer attr, + ) { + return __objc_msgSend_429( + obj, + sel, + path, + data, + attr, + ); + } + + late final __objc_msgSend_429Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_429 = __objc_msgSend_429Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_fileSystemRepresentationWithPath_1 = + _registerName1("fileSystemRepresentationWithPath:"); + ffi.Pointer _objc_msgSend_430( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ) { + return __objc_msgSend_430( + obj, + sel, + path, + ); + } + + late final __objc_msgSend_430Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_430 = __objc_msgSend_430Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_stringWithFileSystemRepresentation_length_1 = + _registerName1("stringWithFileSystemRepresentation:length:"); + ffi.Pointer _objc_msgSend_431( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer str, + int len, + ) { + return __objc_msgSend_431( + obj, + sel, + str, + len, + ); + } + + late final __objc_msgSend_431Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_431 = __objc_msgSend_431Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_1 = + _registerName1( + "replaceItemAtURL:withItemAtURL:backupItemName:options:resultingItemURL:error:"); + bool _objc_msgSend_432( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer originalItemURL, + ffi.Pointer newItemURL, + ffi.Pointer backupItemName, + int options, + ffi.Pointer> resultingURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_432( + obj, + sel, + originalItemURL, + newItemURL, + backupItemName, + options, + resultingURL, + error, + ); + } + + late final __objc_msgSend_432Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_432 = __objc_msgSend_432Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); + + late final _sel_setUbiquitous_itemAtURL_destinationURL_error_1 = + _registerName1("setUbiquitous:itemAtURL:destinationURL:error:"); + bool _objc_msgSend_433( + ffi.Pointer obj, + ffi.Pointer sel, + bool flag, + ffi.Pointer url, + ffi.Pointer destinationURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_433( + obj, + sel, + flag, + url, + destinationURL, + error, + ); + } + + late final __objc_msgSend_433Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_433 = __objc_msgSend_433Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_isUbiquitousItemAtURL_1 = + _registerName1("isUbiquitousItemAtURL:"); + late final _sel_startDownloadingUbiquitousItemAtURL_error_1 = + _registerName1("startDownloadingUbiquitousItemAtURL:error:"); + late final _sel_evictUbiquitousItemAtURL_error_1 = + _registerName1("evictUbiquitousItemAtURL:error:"); + late final _sel_URLForUbiquityContainerIdentifier_1 = + _registerName1("URLForUbiquityContainerIdentifier:"); + late final _sel_URLForPublishingUbiquitousItemAtURL_expirationDate_error_1 = + _registerName1( + "URLForPublishingUbiquitousItemAtURL:expirationDate:error:"); + ffi.Pointer _objc_msgSend_434( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer> outDate, + ffi.Pointer> error, + ) { + return __objc_msgSend_434( + obj, + sel, + url, + outDate, + error, + ); + } + + late final __objc_msgSend_434Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_434 = __objc_msgSend_434Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); + + late final _sel_ubiquityIdentityToken1 = + _registerName1("ubiquityIdentityToken"); + late final _sel_getFileProviderServicesForItemAtURL_completionHandler_1 = + _registerName1("getFileProviderServicesForItemAtURL:completionHandler:"); + void _objc_msgSend_435( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_435( + obj, + sel, + url, + completionHandler, + ); + } + + late final __objc_msgSend_435Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_435 = __objc_msgSend_435Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_containerURLForSecurityApplicationGroupIdentifier_1 = + _registerName1("containerURLForSecurityApplicationGroupIdentifier:"); + late final _sel_homeDirectoryForCurrentUser1 = + _registerName1("homeDirectoryForCurrentUser"); + late final _sel_temporaryDirectory1 = _registerName1("temporaryDirectory"); + late final _sel_homeDirectoryForUser_1 = + _registerName1("homeDirectoryForUser:"); + late final _sel_fileManager_shouldProceedAfterError_1 = + _registerName1("fileManager:shouldProceedAfterError:"); + bool _objc_msgSend_436( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer fm, + ffi.Pointer errorInfo, + ) { + return __objc_msgSend_436( + obj, + sel, + fm, + errorInfo, + ); + } + + late final __objc_msgSend_436Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_436 = __objc_msgSend_436Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_fileManager_willProcessPath_1 = + _registerName1("fileManager:willProcessPath:"); + void _objc_msgSend_437( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer fm, + ffi.Pointer path, + ) { + return __objc_msgSend_437( + obj, + sel, + fm, + path, + ); + } + + late final __objc_msgSend_437Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_437 = __objc_msgSend_437Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_validateValue_forKey_error_1 = + _registerName1("validateValue:forKey:error:"); + late final _class_NSMutableArray1 = _getClass1("NSMutableArray"); + late final _sel_addObject_1 = _registerName1("addObject:"); + late final _sel_insertObject_atIndex_1 = + _registerName1("insertObject:atIndex:"); + void _objc_msgSend_438( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anObject, + int index, + ) { + return __objc_msgSend_438( + obj, + sel, + anObject, + index, + ); + } + + late final __objc_msgSend_438Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_438 = __objc_msgSend_438Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_removeLastObject1 = _registerName1("removeLastObject"); + late final _sel_removeObjectAtIndex_1 = + _registerName1("removeObjectAtIndex:"); + void _objc_msgSend_439( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_439( + obj, + sel, + index, + ); + } + + late final __objc_msgSend_439Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_439 = __objc_msgSend_439Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_replaceObjectAtIndex_withObject_1 = + _registerName1("replaceObjectAtIndex:withObject:"); + void _objc_msgSend_440( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ffi.Pointer anObject, + ) { + return __objc_msgSend_440( + obj, + sel, + index, + anObject, + ); + } + + late final __objc_msgSend_440Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_440 = __objc_msgSend_440Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); + + late final _sel_initWithCapacity_1 = _registerName1("initWithCapacity:"); + late final _sel_addObjectsFromArray_1 = + _registerName1("addObjectsFromArray:"); + void _objc_msgSend_441( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherArray, + ) { + return __objc_msgSend_441( + obj, + sel, + otherArray, + ); + } + + late final __objc_msgSend_441Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_441 = __objc_msgSend_441Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_exchangeObjectAtIndex_withObjectAtIndex_1 = + _registerName1("exchangeObjectAtIndex:withObjectAtIndex:"); + void _objc_msgSend_442( + ffi.Pointer obj, + ffi.Pointer sel, + int idx1, + int idx2, + ) { + return __objc_msgSend_442( + obj, + sel, + idx1, + idx2, + ); + } + + late final __objc_msgSend_442Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLong, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_442 = __objc_msgSend_442Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, int)>(); + + late final _sel_removeAllObjects1 = _registerName1("removeAllObjects"); + late final _sel_removeObject_inRange_1 = + _registerName1("removeObject:inRange:"); + void _objc_msgSend_443( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anObject, + _NSRange range, + ) { + return __objc_msgSend_443( + obj, + sel, + anObject, + range, + ); + } + + late final __objc_msgSend_443Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_443 = __objc_msgSend_443Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>(); + + late final _sel_removeObject_1 = _registerName1("removeObject:"); + late final _sel_removeObjectIdenticalTo_inRange_1 = + _registerName1("removeObjectIdenticalTo:inRange:"); + late final _sel_removeObjectIdenticalTo_1 = + _registerName1("removeObjectIdenticalTo:"); + late final _sel_removeObjectsFromIndices_numIndices_1 = + _registerName1("removeObjectsFromIndices:numIndices:"); + void _objc_msgSend_444( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer indices, + int cnt, + ) { + return __objc_msgSend_444( + obj, + sel, + indices, + cnt, + ); + } + + late final __objc_msgSend_444Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_444 = __objc_msgSend_444Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_removeObjectsInArray_1 = + _registerName1("removeObjectsInArray:"); + late final _sel_removeObjectsInRange_1 = + _registerName1("removeObjectsInRange:"); + void _objc_msgSend_445( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ) { + return __objc_msgSend_445( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_445Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_445 = __objc_msgSend_445Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _sel_replaceObjectsInRange_withObjectsFromArray_range_1 = + _registerName1("replaceObjectsInRange:withObjectsFromArray:range:"); + void _objc_msgSend_446( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer otherArray, + _NSRange otherRange, + ) { + return __objc_msgSend_446( + obj, + sel, + range, + otherArray, + otherRange, + ); + } + + late final __objc_msgSend_446Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_446 = __objc_msgSend_446Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + ffi.Pointer, _NSRange)>(); + + late final _sel_replaceObjectsInRange_withObjectsFromArray_1 = + _registerName1("replaceObjectsInRange:withObjectsFromArray:"); + void _objc_msgSend_447( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer otherArray, + ) { + return __objc_msgSend_447( + obj, + sel, + range, + otherArray, + ); + } + + late final __objc_msgSend_447Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_447 = __objc_msgSend_447Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + ffi.Pointer)>(); + + late final _sel_setArray_1 = _registerName1("setArray:"); + late final _sel_sortUsingFunction_context_1 = + _registerName1("sortUsingFunction:context:"); + void _objc_msgSend_448( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>> + compare, + ffi.Pointer context, + ) { + return __objc_msgSend_448( + obj, + sel, + compare, + context, + ); + } + + late final __objc_msgSend_448Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_448 = __objc_msgSend_448Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>, + ffi.Pointer)>(); + + late final _sel_sortUsingSelector_1 = _registerName1("sortUsingSelector:"); + late final _sel_insertObjects_atIndexes_1 = + _registerName1("insertObjects:atIndexes:"); + void _objc_msgSend_449( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer objects, + ffi.Pointer indexes, + ) { + return __objc_msgSend_449( + obj, + sel, + objects, + indexes, + ); + } + + late final __objc_msgSend_449Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_449 = __objc_msgSend_449Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_removeObjectsAtIndexes_1 = + _registerName1("removeObjectsAtIndexes:"); + void _objc_msgSend_450( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer indexes, + ) { + return __objc_msgSend_450( + obj, + sel, + indexes, + ); + } + + late final __objc_msgSend_450Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_450 = __objc_msgSend_450Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_replaceObjectsAtIndexes_withObjects_1 = + _registerName1("replaceObjectsAtIndexes:withObjects:"); + void _objc_msgSend_451( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer indexes, + ffi.Pointer objects, + ) { + return __objc_msgSend_451( + obj, + sel, + indexes, + objects, + ); + } + + late final __objc_msgSend_451Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_451 = __objc_msgSend_451Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setObject_atIndexedSubscript_1 = + _registerName1("setObject:atIndexedSubscript:"); + late final _sel_sortUsingComparator_1 = + _registerName1("sortUsingComparator:"); + void _objc_msgSend_452( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> cmptr, + ) { + return __objc_msgSend_452( + obj, + sel, + cmptr, + ); + } + + late final __objc_msgSend_452Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_452 = __objc_msgSend_452Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_sortWithOptions_usingComparator_1 = + _registerName1("sortWithOptions:usingComparator:"); + void _objc_msgSend_453( + ffi.Pointer obj, + ffi.Pointer sel, + int opts, + ffi.Pointer<_ObjCBlock> cmptr, + ) { + return __objc_msgSend_453( + obj, + sel, + opts, + cmptr, + ); + } + + late final __objc_msgSend_453Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_453 = __objc_msgSend_453Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_arrayWithCapacity_1 = _registerName1("arrayWithCapacity:"); + ffi.Pointer _objc_msgSend_454( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ) { + return __objc_msgSend_454( + obj, + sel, + path, + ); + } + + late final __objc_msgSend_454Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_454 = __objc_msgSend_454Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + ffi.Pointer _objc_msgSend_455( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ) { + return __objc_msgSend_455( + obj, + sel, + url, + ); + } + + late final __objc_msgSend_455Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_455 = __objc_msgSend_455Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_applyDifference_1 = _registerName1("applyDifference:"); + late final _sel_sortUsingDescriptors_1 = + _registerName1("sortUsingDescriptors:"); + late final _sel_filterUsingPredicate_1 = + _registerName1("filterUsingPredicate:"); + void _objc_msgSend_456( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer predicate, + ) { + return __objc_msgSend_456( + obj, + sel, + predicate, + ); + } + + late final __objc_msgSend_456Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_456 = __objc_msgSend_456Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_mutableArrayValueForKey_1 = + _registerName1("mutableArrayValueForKey:"); + late final _class_NSMutableOrderedSet1 = _getClass1("NSMutableOrderedSet"); + late final _class_NSOrderedSet1 = _getClass1("NSOrderedSet"); + late final _sel_isEqualToOrderedSet_1 = + _registerName1("isEqualToOrderedSet:"); + bool _objc_msgSend_457( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + ) { + return __objc_msgSend_457( + obj, + sel, + other, + ); + } + + late final __objc_msgSend_457Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_457 = __objc_msgSend_457Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_intersectsOrderedSet_1 = + _registerName1("intersectsOrderedSet:"); + late final _sel_isSubsetOfOrderedSet_1 = + _registerName1("isSubsetOfOrderedSet:"); + late final _sel_reversedOrderedSet1 = _registerName1("reversedOrderedSet"); + ffi.Pointer _objc_msgSend_458( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_458( + obj, + sel, + ); + } + + late final __objc_msgSend_458Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_458 = __objc_msgSend_458Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_orderedSet1 = _registerName1("orderedSet"); + late final _sel_orderedSetWithObject_1 = + _registerName1("orderedSetWithObject:"); + late final _sel_orderedSetWithObjects_count_1 = + _registerName1("orderedSetWithObjects:count:"); + late final _sel_orderedSetWithObjects_1 = + _registerName1("orderedSetWithObjects:"); + late final _sel_orderedSetWithOrderedSet_1 = + _registerName1("orderedSetWithOrderedSet:"); + instancetype _objc_msgSend_459( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer set1, + ) { + return __objc_msgSend_459( + obj, + sel, + set1, + ); + } + + late final __objc_msgSend_459Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_459 = __objc_msgSend_459Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_orderedSetWithOrderedSet_range_copyItems_1 = + _registerName1("orderedSetWithOrderedSet:range:copyItems:"); + instancetype _objc_msgSend_460( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer set1, + _NSRange range, + bool flag, + ) { + return __objc_msgSend_460( + obj, + sel, + set1, + range, + flag, + ); + } + + late final __objc_msgSend_460Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_460 = __objc_msgSend_460Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange, bool)>(); + + late final _sel_orderedSetWithArray_1 = + _registerName1("orderedSetWithArray:"); + late final _sel_orderedSetWithArray_range_copyItems_1 = + _registerName1("orderedSetWithArray:range:copyItems:"); + instancetype _objc_msgSend_461( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer array, + _NSRange range, + bool flag, + ) { + return __objc_msgSend_461( + obj, + sel, + array, + range, + flag, + ); + } + + late final __objc_msgSend_461Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_461 = __objc_msgSend_461Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange, bool)>(); + + late final _sel_orderedSetWithSet_1 = _registerName1("orderedSetWithSet:"); + late final _sel_orderedSetWithSet_copyItems_1 = + _registerName1("orderedSetWithSet:copyItems:"); + late final _sel_initWithObject_1 = _registerName1("initWithObject:"); + late final _sel_initWithOrderedSet_1 = _registerName1("initWithOrderedSet:"); + late final _sel_initWithOrderedSet_copyItems_1 = + _registerName1("initWithOrderedSet:copyItems:"); + instancetype _objc_msgSend_462( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer set1, + bool flag, + ) { + return __objc_msgSend_462( + obj, + sel, + set1, + flag, + ); + } + + late final __objc_msgSend_462Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_462 = __objc_msgSend_462Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_initWithOrderedSet_range_copyItems_1 = + _registerName1("initWithOrderedSet:range:copyItems:"); + late final _sel_initWithArray_range_copyItems_1 = + _registerName1("initWithArray:range:copyItems:"); + late final _sel_differenceFromOrderedSet_withOptions_usingEquivalenceTest_1 = + _registerName1( + "differenceFromOrderedSet:withOptions:usingEquivalenceTest:"); + ffi.Pointer _objc_msgSend_463( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + int options, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_463( + obj, + sel, + other, + options, + block, + ); + } + + late final __objc_msgSend_463Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_463 = __objc_msgSend_463Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_differenceFromOrderedSet_withOptions_1 = + _registerName1("differenceFromOrderedSet:withOptions:"); + ffi.Pointer _objc_msgSend_464( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + int options, + ) { + return __objc_msgSend_464( + obj, + sel, + other, + options, + ); + } + + late final __objc_msgSend_464Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_464 = __objc_msgSend_464Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_differenceFromOrderedSet_1 = + _registerName1("differenceFromOrderedSet:"); + late final _sel_orderedSetByApplyingDifference_1 = + _registerName1("orderedSetByApplyingDifference:"); + ffi.Pointer _objc_msgSend_465( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer difference, + ) { + return __objc_msgSend_465( + obj, + sel, + difference, + ); + } + + late final __objc_msgSend_465Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_465 = __objc_msgSend_465Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_filteredOrderedSetUsingPredicate_1 = + _registerName1("filteredOrderedSetUsingPredicate:"); + ffi.Pointer _objc_msgSend_466( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer p, + ) { + return __objc_msgSend_466( + obj, + sel, + p, + ); + } + + late final __objc_msgSend_466Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_466 = __objc_msgSend_466Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_addObjects_count_1 = _registerName1("addObjects:count:"); + void _objc_msgSend_467( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> objects, + int count, + ) { + return __objc_msgSend_467( + obj, + sel, + objects, + count, + ); + } + + late final __objc_msgSend_467Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_467 = __objc_msgSend_467Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer>, int)>(); + + late final _sel_moveObjectsAtIndexes_toIndex_1 = + _registerName1("moveObjectsAtIndexes:toIndex:"); + void _objc_msgSend_468( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer indexes, + int idx, + ) { + return __objc_msgSend_468( + obj, + sel, + indexes, + idx, + ); + } + + late final __objc_msgSend_468Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_468 = __objc_msgSend_468Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_setObject_atIndex_1 = _registerName1("setObject:atIndex:"); + late final _sel_replaceObjectsInRange_withObjects_count_1 = + _registerName1("replaceObjectsInRange:withObjects:count:"); + void _objc_msgSend_469( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer> objects, + int count, + ) { + return __objc_msgSend_469( + obj, + sel, + range, + objects, + count, + ); + } + + late final __objc_msgSend_469Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer>, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_469 = __objc_msgSend_469Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + ffi.Pointer>, int)>(); + + late final _sel_intersectOrderedSet_1 = + _registerName1("intersectOrderedSet:"); + void _objc_msgSend_470( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + ) { + return __objc_msgSend_470( + obj, + sel, + other, + ); + } + + late final __objc_msgSend_470Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_470 = __objc_msgSend_470Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_minusOrderedSet_1 = _registerName1("minusOrderedSet:"); + late final _sel_unionOrderedSet_1 = _registerName1("unionOrderedSet:"); + late final _sel_intersectSet_1 = _registerName1("intersectSet:"); + void _objc_msgSend_471( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + ) { + return __objc_msgSend_471( + obj, + sel, + other, + ); + } + + late final __objc_msgSend_471Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_471 = __objc_msgSend_471Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_minusSet_1 = _registerName1("minusSet:"); + late final _sel_unionSet_1 = _registerName1("unionSet:"); + late final _sel_sortRange_options_usingComparator_1 = + _registerName1("sortRange:options:usingComparator:"); + void _objc_msgSend_472( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + int opts, + ffi.Pointer<_ObjCBlock> cmptr, + ) { + return __objc_msgSend_472( + obj, + sel, + range, + opts, + cmptr, + ); + } + + late final __objc_msgSend_472Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_472 = __objc_msgSend_472Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_orderedSetWithCapacity_1 = + _registerName1("orderedSetWithCapacity:"); + late final _sel_mutableOrderedSetValueForKey_1 = + _registerName1("mutableOrderedSetValueForKey:"); + ffi.Pointer _objc_msgSend_473( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_473( + obj, + sel, + key, + ); + } + + late final __objc_msgSend_473Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_473 = __objc_msgSend_473Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSMutableSet1 = _getClass1("NSMutableSet"); + late final _sel_setSet_1 = _registerName1("setSet:"); + late final _sel_setWithCapacity_1 = _registerName1("setWithCapacity:"); + late final _sel_mutableSetValueForKey_1 = + _registerName1("mutableSetValueForKey:"); + ffi.Pointer _objc_msgSend_474( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_474( + obj, + sel, + key, + ); + } + + late final __objc_msgSend_474Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_474 = __objc_msgSend_474Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_valueForKeyPath_1 = _registerName1("valueForKeyPath:"); + late final _sel_setValue_forKeyPath_1 = + _registerName1("setValue:forKeyPath:"); + late final _sel_validateValue_forKeyPath_error_1 = + _registerName1("validateValue:forKeyPath:error:"); + late final _sel_mutableArrayValueForKeyPath_1 = + _registerName1("mutableArrayValueForKeyPath:"); + late final _sel_mutableOrderedSetValueForKeyPath_1 = + _registerName1("mutableOrderedSetValueForKeyPath:"); + late final _sel_mutableSetValueForKeyPath_1 = + _registerName1("mutableSetValueForKeyPath:"); + late final _sel_valueForUndefinedKey_1 = + _registerName1("valueForUndefinedKey:"); + late final _sel_setValue_forUndefinedKey_1 = + _registerName1("setValue:forUndefinedKey:"); + late final _sel_setNilValueForKey_1 = _registerName1("setNilValueForKey:"); + late final _sel_dictionaryWithValuesForKeys_1 = + _registerName1("dictionaryWithValuesForKeys:"); + ffi.Pointer _objc_msgSend_475( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keys, + ) { + return __objc_msgSend_475( + obj, + sel, + keys, + ); + } + + late final __objc_msgSend_475Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_475 = __objc_msgSend_475Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setValuesForKeysWithDictionary_1 = + _registerName1("setValuesForKeysWithDictionary:"); + void _objc_msgSend_476( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keyedValues, + ) { + return __objc_msgSend_476( + obj, + sel, + keyedValues, + ); + } + + late final __objc_msgSend_476Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_476 = __objc_msgSend_476Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_storedValueForKey_1 = _registerName1("storedValueForKey:"); + late final _sel_takeStoredValue_forKey_1 = + _registerName1("takeStoredValue:forKey:"); + late final _sel_takeValue_forKey_1 = _registerName1("takeValue:forKey:"); + late final _sel_takeValue_forKeyPath_1 = + _registerName1("takeValue:forKeyPath:"); + late final _sel_handleQueryWithUnboundKey_1 = + _registerName1("handleQueryWithUnboundKey:"); + late final _sel_handleTakeValue_forUnboundKey_1 = + _registerName1("handleTakeValue:forUnboundKey:"); + late final _sel_unableToSetNilForKey_1 = + _registerName1("unableToSetNilForKey:"); + late final _sel_valuesForKeys_1 = _registerName1("valuesForKeys:"); + late final _sel_takeValuesFromDictionary_1 = + _registerName1("takeValuesFromDictionary:"); + late final _sel_observeValueForKeyPath_ofObject_change_context_1 = + _registerName1("observeValueForKeyPath:ofObject:change:context:"); + void _objc_msgSend_477( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keyPath, + ffi.Pointer object, + ffi.Pointer change, + ffi.Pointer context, + ) { + return __objc_msgSend_477( + obj, + sel, + keyPath, + object, + change, + context, + ); + } + + late final __objc_msgSend_477Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_477 = __objc_msgSend_477Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_willChangeValueForKey_1 = + _registerName1("willChangeValueForKey:"); + late final _sel_didChangeValueForKey_1 = + _registerName1("didChangeValueForKey:"); + late final _sel_willChange_valuesAtIndexes_forKey_1 = + _registerName1("willChange:valuesAtIndexes:forKey:"); + void _objc_msgSend_478( + ffi.Pointer obj, + ffi.Pointer sel, + int changeKind, + ffi.Pointer indexes, + ffi.Pointer key, + ) { + return __objc_msgSend_478( + obj, + sel, + changeKind, + indexes, + key, + ); + } + + late final __objc_msgSend_478Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_478 = __objc_msgSend_478Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_didChange_valuesAtIndexes_forKey_1 = + _registerName1("didChange:valuesAtIndexes:forKey:"); + late final _sel_willChangeValueForKey_withSetMutation_usingObjects_1 = + _registerName1("willChangeValueForKey:withSetMutation:usingObjects:"); + void _objc_msgSend_479( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + int mutationKind, + ffi.Pointer objects, + ) { + return __objc_msgSend_479( + obj, + sel, + key, + mutationKind, + objects, + ); + } + + late final __objc_msgSend_479Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_479 = __objc_msgSend_479Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_didChangeValueForKey_withSetMutation_usingObjects_1 = + _registerName1("didChangeValueForKey:withSetMutation:usingObjects:"); + late final _sel_observationInfo1 = _registerName1("observationInfo"); + late final _sel_setObservationInfo_1 = _registerName1("setObservationInfo:"); + void _objc_msgSend_480( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_480( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_480Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_480 = __objc_msgSend_480Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_classForKeyedArchiver1 = + _registerName1("classForKeyedArchiver"); + late final _class_NSKeyedArchiver1 = _getClass1("NSKeyedArchiver"); + late final _sel_initRequiringSecureCoding_1 = + _registerName1("initRequiringSecureCoding:"); + instancetype _objc_msgSend_481( + ffi.Pointer obj, + ffi.Pointer sel, + bool requiresSecureCoding, + ) { + return __objc_msgSend_481( + obj, + sel, + requiresSecureCoding, + ); + } + + late final __objc_msgSend_481Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_481 = __objc_msgSend_481Ptr.asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_archivedDataWithRootObject_requiringSecureCoding_error_1 = + _registerName1("archivedDataWithRootObject:requiringSecureCoding:error:"); + ffi.Pointer _objc_msgSend_482( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer object, + bool requiresSecureCoding, + ffi.Pointer> error, + ) { + return __objc_msgSend_482( + obj, + sel, + object, + requiresSecureCoding, + error, + ); + } + + late final __objc_msgSend_482Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_482 = __objc_msgSend_482Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer>)>(); + + late final _class_NSMutableData1 = _getClass1("NSMutableData"); + late final _sel_mutableBytes1 = _registerName1("mutableBytes"); + late final _sel_setLength_1 = _registerName1("setLength:"); + void _objc_msgSend_483( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_483( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_483Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_483 = __objc_msgSend_483Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_appendBytes_length_1 = _registerName1("appendBytes:length:"); + late final _sel_appendData_1 = _registerName1("appendData:"); + late final _sel_increaseLengthBy_1 = _registerName1("increaseLengthBy:"); + late final _sel_replaceBytesInRange_withBytes_1 = + _registerName1("replaceBytesInRange:withBytes:"); + void _objc_msgSend_484( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer bytes, + ) { + return __objc_msgSend_484( + obj, + sel, + range, + bytes, + ); + } + + late final __objc_msgSend_484Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_484 = __objc_msgSend_484Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + ffi.Pointer)>(); + + late final _sel_resetBytesInRange_1 = _registerName1("resetBytesInRange:"); + late final _sel_setData_1 = _registerName1("setData:"); + late final _sel_replaceBytesInRange_withBytes_length_1 = + _registerName1("replaceBytesInRange:withBytes:length:"); + void _objc_msgSend_485( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer replacementBytes, + int replacementLength, + ) { + return __objc_msgSend_485( + obj, + sel, + range, + replacementBytes, + replacementLength, + ); + } + + late final __objc_msgSend_485Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_485 = __objc_msgSend_485Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + ffi.Pointer, int)>(); + + late final _sel_dataWithCapacity_1 = _registerName1("dataWithCapacity:"); + late final _sel_dataWithLength_1 = _registerName1("dataWithLength:"); + late final _sel_initWithLength_1 = _registerName1("initWithLength:"); + late final _sel_decompressUsingAlgorithm_error_1 = + _registerName1("decompressUsingAlgorithm:error:"); + bool _objc_msgSend_486( + ffi.Pointer obj, + ffi.Pointer sel, + int algorithm, + ffi.Pointer> error, + ) { + return __objc_msgSend_486( + obj, + sel, + algorithm, + error, + ); + } + + late final __objc_msgSend_486Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_486 = __objc_msgSend_486Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer>)>(); + + late final _sel_compressUsingAlgorithm_error_1 = + _registerName1("compressUsingAlgorithm:error:"); + late final _sel_initForWritingWithMutableData_1 = + _registerName1("initForWritingWithMutableData:"); + instancetype _objc_msgSend_487( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ) { + return __objc_msgSend_487( + obj, + sel, + data, + ); + } + + late final __objc_msgSend_487Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_487 = __objc_msgSend_487Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_archivedDataWithRootObject_1 = + _registerName1("archivedDataWithRootObject:"); + ffi.Pointer _objc_msgSend_488( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer rootObject, + ) { + return __objc_msgSend_488( + obj, + sel, + rootObject, + ); + } + + late final __objc_msgSend_488Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_488 = __objc_msgSend_488Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_archiveRootObject_toFile_1 = + _registerName1("archiveRootObject:toFile:"); + late final _sel_outputFormat1 = _registerName1("outputFormat"); + int _objc_msgSend_489( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_489( + obj, + sel, + ); + } + + late final __objc_msgSend_489Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_489 = __objc_msgSend_489Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setOutputFormat_1 = _registerName1("setOutputFormat:"); + void _objc_msgSend_490( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_490( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_490Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_490 = __objc_msgSend_490Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_encodedData1 = _registerName1("encodedData"); + late final _sel_finishEncoding1 = _registerName1("finishEncoding"); + late final _sel_setClassName_forClass_1 = + _registerName1("setClassName:forClass:"); + void _objc_msgSend_491( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer codedName, + ffi.Pointer cls, + ) { + return __objc_msgSend_491( + obj, + sel, + codedName, + cls, + ); + } + + late final __objc_msgSend_491Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_491 = __objc_msgSend_491Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_classNameForClass_1 = _registerName1("classNameForClass:"); + late final _sel_setRequiresSecureCoding_1 = + _registerName1("setRequiresSecureCoding:"); + void _objc_msgSend_492( + ffi.Pointer obj, + ffi.Pointer sel, + bool value, + ) { + return __objc_msgSend_492( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_492Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_492 = __objc_msgSend_492Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_replacementObjectForKeyedArchiver_1 = + _registerName1("replacementObjectForKeyedArchiver:"); + ffi.Pointer _objc_msgSend_493( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer archiver, + ) { + return __objc_msgSend_493( + obj, + sel, + archiver, + ); + } + + late final __objc_msgSend_493Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_493 = __objc_msgSend_493Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_performSelectorOnMainThread_withObject_waitUntilDone_modes_1 = + _registerName1( + "performSelectorOnMainThread:withObject:waitUntilDone:modes:"); + void _objc_msgSend_494( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ffi.Pointer arg, + bool wait, + ffi.Pointer array, + ) { + return __objc_msgSend_494( + obj, + sel, + aSelector, + arg, + wait, + array, + ); + } + + late final __objc_msgSend_494Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_494 = __objc_msgSend_494Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>(); + + late final _sel_performSelectorOnMainThread_withObject_waitUntilDone_1 = + _registerName1("performSelectorOnMainThread:withObject:waitUntilDone:"); + void _objc_msgSend_495( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ffi.Pointer arg, + bool wait, + ) { + return __objc_msgSend_495( + obj, + sel, + aSelector, + arg, + wait, + ); + } + + late final __objc_msgSend_495Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_495 = __objc_msgSend_495Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _class_NSThread1 = _getClass1("NSThread"); + late final _sel_currentThread1 = _registerName1("currentThread"); + ffi.Pointer _objc_msgSend_496( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_496( + obj, + sel, + ); + } + + late final __objc_msgSend_496Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_496 = __objc_msgSend_496Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_detachNewThreadWithBlock_1 = + _registerName1("detachNewThreadWithBlock:"); + void _objc_msgSend_497( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_497( + obj, + sel, + block, + ); + } + + late final __objc_msgSend_497Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_497 = __objc_msgSend_497Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_detachNewThreadSelector_toTarget_withObject_1 = + _registerName1("detachNewThreadSelector:toTarget:withObject:"); + void _objc_msgSend_498( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer selector, + ffi.Pointer target, + ffi.Pointer argument, + ) { + return __objc_msgSend_498( + obj, + sel, + selector, + target, + argument, + ); + } + + late final __objc_msgSend_498Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_498 = __objc_msgSend_498Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_isMultiThreaded1 = _registerName1("isMultiThreaded"); + late final _class_NSMutableDictionary1 = _getClass1("NSMutableDictionary"); + late final _sel_removeObjectForKey_1 = _registerName1("removeObjectForKey:"); + late final _sel_setObject_forKey_1 = _registerName1("setObject:forKey:"); + void _objc_msgSend_499( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anObject, + ffi.Pointer aKey, + ) { + return __objc_msgSend_499( + obj, + sel, + anObject, + aKey, + ); + } + + late final __objc_msgSend_499Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_499 = __objc_msgSend_499Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_addEntriesFromDictionary_1 = + _registerName1("addEntriesFromDictionary:"); + late final _sel_removeObjectsForKeys_1 = + _registerName1("removeObjectsForKeys:"); + late final _sel_setDictionary_1 = _registerName1("setDictionary:"); + late final _sel_setObject_forKeyedSubscript_1 = + _registerName1("setObject:forKeyedSubscript:"); + late final _sel_dictionaryWithCapacity_1 = + _registerName1("dictionaryWithCapacity:"); + ffi.Pointer _objc_msgSend_500( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ) { + return __objc_msgSend_500( + obj, + sel, + path, + ); + } + + late final __objc_msgSend_500Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_500 = __objc_msgSend_500Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + ffi.Pointer _objc_msgSend_501( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ) { + return __objc_msgSend_501( + obj, + sel, + url, + ); + } + + late final __objc_msgSend_501Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_501 = __objc_msgSend_501Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_dictionaryWithSharedKeySet_1 = + _registerName1("dictionaryWithSharedKeySet:"); + ffi.Pointer _objc_msgSend_502( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer keyset, + ) { + return __objc_msgSend_502( + obj, + sel, + keyset, + ); + } + + late final __objc_msgSend_502Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_502 = __objc_msgSend_502Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_threadDictionary1 = _registerName1("threadDictionary"); + ffi.Pointer _objc_msgSend_503( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_503( + obj, + sel, + ); + } + + late final __objc_msgSend_503Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_503 = __objc_msgSend_503Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_sleepUntilDate_1 = _registerName1("sleepUntilDate:"); + void _objc_msgSend_504( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date, + ) { + return __objc_msgSend_504( + obj, + sel, + date, + ); + } + + late final __objc_msgSend_504Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_504 = __objc_msgSend_504Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_sleepForTimeInterval_1 = + _registerName1("sleepForTimeInterval:"); + void _objc_msgSend_505( + ffi.Pointer obj, + ffi.Pointer sel, + double ti, + ) { + return __objc_msgSend_505( + obj, + sel, + ti, + ); + } + + late final __objc_msgSend_505Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Double)>>('objc_msgSend'); + late final __objc_msgSend_505 = __objc_msgSend_505Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, double)>(); + + late final _sel_exit1 = _registerName1("exit"); + late final _sel_threadPriority1 = _registerName1("threadPriority"); + late final _sel_setThreadPriority_1 = _registerName1("setThreadPriority:"); + void _objc_msgSend_506( + ffi.Pointer obj, + ffi.Pointer sel, + double value, + ) { + return __objc_msgSend_506( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_506Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Double)>>('objc_msgSend'); + late final __objc_msgSend_506 = __objc_msgSend_506Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, double)>(); + + late final _sel_qualityOfService1 = _registerName1("qualityOfService"); + int _objc_msgSend_507( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_507( + obj, + sel, + ); + } + + late final __objc_msgSend_507Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_507 = __objc_msgSend_507Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setQualityOfService_1 = + _registerName1("setQualityOfService:"); + void _objc_msgSend_508( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_508( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_508Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_508 = __objc_msgSend_508Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_callStackReturnAddresses1 = + _registerName1("callStackReturnAddresses"); + late final _sel_callStackSymbols1 = _registerName1("callStackSymbols"); + late final _sel_setName_1 = _registerName1("setName:"); + void _objc_msgSend_509( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_509( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_509Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_509 = __objc_msgSend_509Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_stackSize1 = _registerName1("stackSize"); + late final _sel_setStackSize_1 = _registerName1("setStackSize:"); + late final _sel_isMainThread1 = _registerName1("isMainThread"); + late final _sel_mainThread1 = _registerName1("mainThread"); + late final _sel_initWithTarget_selector_object_1 = + _registerName1("initWithTarget:selector:object:"); + instancetype _objc_msgSend_510( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer target, + ffi.Pointer selector, + ffi.Pointer argument, + ) { + return __objc_msgSend_510( + obj, + sel, + target, + selector, + argument, + ); + } + + late final __objc_msgSend_510Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_510 = __objc_msgSend_510Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithBlock_1 = _registerName1("initWithBlock:"); + instancetype _objc_msgSend_511( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_511( + obj, + sel, + block, + ); + } + + late final __objc_msgSend_511Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_511 = __objc_msgSend_511Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_isExecuting1 = _registerName1("isExecuting"); + late final _sel_isFinished1 = _registerName1("isFinished"); + late final _sel_isCancelled1 = _registerName1("isCancelled"); + late final _sel_cancel1 = _registerName1("cancel"); + late final _sel_start1 = _registerName1("start"); + late final _sel_main1 = _registerName1("main"); + late final _sel_performSelector_onThread_withObject_waitUntilDone_modes_1 = + _registerName1( + "performSelector:onThread:withObject:waitUntilDone:modes:"); + void _objc_msgSend_512( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ffi.Pointer thr, + ffi.Pointer arg, + bool wait, + ffi.Pointer array, + ) { + return __objc_msgSend_512( + obj, + sel, + aSelector, + thr, + arg, + wait, + array, + ); + } + + late final __objc_msgSend_512Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_512 = __objc_msgSend_512Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool, + ffi.Pointer)>(); + + late final _sel_performSelector_onThread_withObject_waitUntilDone_1 = + _registerName1("performSelector:onThread:withObject:waitUntilDone:"); + void _objc_msgSend_513( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ffi.Pointer thr, + ffi.Pointer arg, + bool wait, + ) { + return __objc_msgSend_513( + obj, + sel, + aSelector, + thr, + arg, + wait, + ); + } + + late final __objc_msgSend_513Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_513 = __objc_msgSend_513Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); + + late final _sel_performSelectorInBackground_withObject_1 = + _registerName1("performSelectorInBackground:withObject:"); + late final _sel_classForArchiver1 = _registerName1("classForArchiver"); + late final _class_NSArchiver1 = _getClass1("NSArchiver"); + late final _sel_archiverData1 = _registerName1("archiverData"); + ffi.Pointer _objc_msgSend_514( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_514( + obj, + sel, + ); + } + + late final __objc_msgSend_514Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_514 = __objc_msgSend_514Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_encodeClassName_intoClassName_1 = + _registerName1("encodeClassName:intoClassName:"); + void _objc_msgSend_515( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer trueName, + ffi.Pointer inArchiveName, + ) { + return __objc_msgSend_515( + obj, + sel, + trueName, + inArchiveName, + ); + } + + late final __objc_msgSend_515Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_515 = __objc_msgSend_515Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_classNameEncodedForTrueClassName_1 = + _registerName1("classNameEncodedForTrueClassName:"); + late final _sel_replaceObject_withObject_1 = + _registerName1("replaceObject:withObject:"); + late final _sel_replacementObjectForArchiver_1 = + _registerName1("replacementObjectForArchiver:"); + ffi.Pointer _objc_msgSend_516( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer archiver, + ) { + return __objc_msgSend_516( + obj, + sel, + archiver, + ); + } + + late final __objc_msgSend_516Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_516 = __objc_msgSend_516Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_classForPortCoder1 = _registerName1("classForPortCoder"); + late final _class_NSPortCoder1 = _getClass1("NSPortCoder"); + late final _sel_isBycopy1 = _registerName1("isBycopy"); + late final _sel_isByref1 = _registerName1("isByref"); + late final _class_NSPort1 = _getClass1("NSPort"); + ffi.Pointer _objc_msgSend_517( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_517( + obj, + sel, + ); + } + + late final __objc_msgSend_517Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_517 = __objc_msgSend_517Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_invalidate1 = _registerName1("invalidate"); + late final _sel_isValid1 = _registerName1("isValid"); + late final _class_NSRunLoop1 = _getClass1("NSRunLoop"); + late final _sel_currentRunLoop1 = _registerName1("currentRunLoop"); + ffi.Pointer _objc_msgSend_518( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_518( + obj, + sel, + ); + } + + late final __objc_msgSend_518Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_518 = __objc_msgSend_518Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_mainRunLoop1 = _registerName1("mainRunLoop"); + late final _sel_currentMode1 = _registerName1("currentMode"); + late final _sel_getCFRunLoop1 = _registerName1("getCFRunLoop"); + ffi.Pointer<__CFRunLoop> _objc_msgSend_519( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_519( + obj, + sel, + ); + } + + late final __objc_msgSend_519Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer<__CFRunLoop> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_519 = __objc_msgSend_519Ptr.asFunction< + ffi.Pointer<__CFRunLoop> Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSTimer1 = _getClass1("NSTimer"); + late final _sel_timerWithTimeInterval_invocation_repeats_1 = + _registerName1("timerWithTimeInterval:invocation:repeats:"); + ffi.Pointer _objc_msgSend_520( + ffi.Pointer obj, + ffi.Pointer sel, + double ti, + ffi.Pointer invocation, + bool yesOrNo, + ) { + return __objc_msgSend_520( + obj, + sel, + ti, + invocation, + yesOrNo, + ); + } + + late final __objc_msgSend_520Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_520 = __objc_msgSend_520Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, double, ffi.Pointer, bool)>(); + + late final _sel_scheduledTimerWithTimeInterval_invocation_repeats_1 = + _registerName1("scheduledTimerWithTimeInterval:invocation:repeats:"); + late final _sel_timerWithTimeInterval_target_selector_userInfo_repeats_1 = + _registerName1("timerWithTimeInterval:target:selector:userInfo:repeats:"); + ffi.Pointer _objc_msgSend_521( + ffi.Pointer obj, + ffi.Pointer sel, + double ti, + ffi.Pointer aTarget, + ffi.Pointer aSelector, + ffi.Pointer userInfo, + bool yesOrNo, + ) { + return __objc_msgSend_521( + obj, + sel, + ti, + aTarget, + aSelector, + userInfo, + yesOrNo, + ); + } + + late final __objc_msgSend_521Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_521 = __objc_msgSend_521Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); + + late final _sel_scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_1 = + _registerName1( + "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:"); + late final _sel_timerWithTimeInterval_repeats_block_1 = + _registerName1("timerWithTimeInterval:repeats:block:"); + ffi.Pointer _objc_msgSend_522( + ffi.Pointer obj, + ffi.Pointer sel, + double interval, + bool repeats, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_522( + obj, + sel, + interval, + repeats, + block, + ); + } + + late final __objc_msgSend_522Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Bool, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_522 = __objc_msgSend_522Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, double, bool, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_scheduledTimerWithTimeInterval_repeats_block_1 = + _registerName1("scheduledTimerWithTimeInterval:repeats:block:"); + late final _sel_initWithFireDate_interval_repeats_block_1 = + _registerName1("initWithFireDate:interval:repeats:block:"); + instancetype _objc_msgSend_523( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date, + double interval, + bool repeats, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_523( + obj, + sel, + date, + interval, + repeats, + block, + ); + } + + late final __objc_msgSend_523Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Bool, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_523 = __objc_msgSend_523Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, double, bool, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_initWithFireDate_interval_target_selector_userInfo_repeats_1 = + _registerName1( + "initWithFireDate:interval:target:selector:userInfo:repeats:"); + instancetype _objc_msgSend_524( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date, + double ti, + ffi.Pointer t, + ffi.Pointer s, + ffi.Pointer ui, + bool rep, + ) { + return __objc_msgSend_524( + obj, + sel, + date, + ti, + t, + s, + ui, + rep, + ); + } + + late final __objc_msgSend_524Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_524 = __objc_msgSend_524Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + double, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + bool)>(); + + late final _sel_fire1 = _registerName1("fire"); + late final _sel_fireDate1 = _registerName1("fireDate"); + late final _sel_setFireDate_1 = _registerName1("setFireDate:"); + void _objc_msgSend_525( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_525( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_525Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_525 = __objc_msgSend_525Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_timeInterval1 = _registerName1("timeInterval"); + late final _sel_tolerance1 = _registerName1("tolerance"); + late final _sel_setTolerance_1 = _registerName1("setTolerance:"); + late final _sel_addTimer_forMode_1 = _registerName1("addTimer:forMode:"); + void _objc_msgSend_526( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer timer, + ffi.Pointer mode, + ) { + return __objc_msgSend_526( + obj, + sel, + timer, + mode, + ); + } + + late final __objc_msgSend_526Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_526 = __objc_msgSend_526Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_addPort_forMode_1 = _registerName1("addPort:forMode:"); + void _objc_msgSend_527( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aPort, + ffi.Pointer mode, + ) { + return __objc_msgSend_527( + obj, + sel, + aPort, + mode, + ); + } + + late final __objc_msgSend_527Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_527 = __objc_msgSend_527Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_removePort_forMode_1 = _registerName1("removePort:forMode:"); + late final _sel_limitDateForMode_1 = _registerName1("limitDateForMode:"); + ffi.Pointer _objc_msgSend_528( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer mode, + ) { + return __objc_msgSend_528( + obj, + sel, + mode, + ); + } + + late final __objc_msgSend_528Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_528 = __objc_msgSend_528Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_acceptInputForMode_beforeDate_1 = + _registerName1("acceptInputForMode:beforeDate:"); + void _objc_msgSend_529( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer mode, + ffi.Pointer limitDate, + ) { + return __objc_msgSend_529( + obj, + sel, + mode, + limitDate, + ); + } + + late final __objc_msgSend_529Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_529 = __objc_msgSend_529Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_run1 = _registerName1("run"); + late final _sel_runUntilDate_1 = _registerName1("runUntilDate:"); + late final _sel_runMode_beforeDate_1 = _registerName1("runMode:beforeDate:"); + bool _objc_msgSend_530( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer mode, + ffi.Pointer limitDate, + ) { + return __objc_msgSend_530( + obj, + sel, + mode, + limitDate, + ); + } + + late final __objc_msgSend_530Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_530 = __objc_msgSend_530Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_configureAsServer1 = _registerName1("configureAsServer"); + late final _sel_performInModes_block_1 = + _registerName1("performInModes:block:"); + void _objc_msgSend_531( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer modes, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_531( + obj, + sel, + modes, + block, + ); + } + + late final __objc_msgSend_531Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_531 = __objc_msgSend_531Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_performBlock_1 = _registerName1("performBlock:"); + late final _sel_performSelector_target_argument_order_modes_1 = + _registerName1("performSelector:target:argument:order:modes:"); + void _objc_msgSend_532( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aSelector, + ffi.Pointer target, + ffi.Pointer arg, + int order, + ffi.Pointer modes, + ) { + return __objc_msgSend_532( + obj, + sel, + aSelector, + target, + arg, + order, + modes, + ); + } + + late final __objc_msgSend_532Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_532 = __objc_msgSend_532Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + + late final _sel_cancelPerformSelector_target_argument_1 = + _registerName1("cancelPerformSelector:target:argument:"); + late final _sel_cancelPerformSelectorsWithTarget_1 = + _registerName1("cancelPerformSelectorsWithTarget:"); + late final _sel_scheduleInRunLoop_forMode_1 = + _registerName1("scheduleInRunLoop:forMode:"); + void _objc_msgSend_533( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer runLoop, + ffi.Pointer mode, + ) { + return __objc_msgSend_533( + obj, + sel, + runLoop, + mode, + ); + } + + late final __objc_msgSend_533Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_533 = __objc_msgSend_533Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_removeFromRunLoop_forMode_1 = + _registerName1("removeFromRunLoop:forMode:"); + late final _sel_reservedSpaceLength1 = _registerName1("reservedSpaceLength"); + late final _sel_sendBeforeDate_components_from_reserved_1 = + _registerName1("sendBeforeDate:components:from:reserved:"); + bool _objc_msgSend_534( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer limitDate, + ffi.Pointer components, + ffi.Pointer receivePort, + int headerSpaceReserved, + ) { + return __objc_msgSend_534( + obj, + sel, + limitDate, + components, + receivePort, + headerSpaceReserved, + ); + } + + late final __objc_msgSend_534Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_534 = __objc_msgSend_534Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); + + late final _sel_sendBeforeDate_msgid_components_from_reserved_1 = + _registerName1("sendBeforeDate:msgid:components:from:reserved:"); + bool _objc_msgSend_535( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer limitDate, + int msgID, + ffi.Pointer components, + ffi.Pointer receivePort, + int headerSpaceReserved, + ) { + return __objc_msgSend_535( + obj, + sel, + limitDate, + msgID, + components, + receivePort, + headerSpaceReserved, + ); + } + + late final __objc_msgSend_535Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_535 = __objc_msgSend_535Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + int)>(); + + late final _class_NSConnection1 = _getClass1("NSConnection"); + late final _sel_statistics1 = _registerName1("statistics"); + late final _sel_allConnections1 = _registerName1("allConnections"); + late final _sel_defaultConnection1 = _registerName1("defaultConnection"); + ffi.Pointer _objc_msgSend_536( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_536( + obj, + sel, + ); + } + + late final __objc_msgSend_536Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_536 = __objc_msgSend_536Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_connectionWithRegisteredName_host_1 = + _registerName1("connectionWithRegisteredName:host:"); + late final _class_NSPortNameServer1 = _getClass1("NSPortNameServer"); + late final _sel_systemDefaultPortNameServer1 = + _registerName1("systemDefaultPortNameServer"); + ffi.Pointer _objc_msgSend_537( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_537( + obj, + sel, + ); + } + + late final __objc_msgSend_537Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_537 = __objc_msgSend_537Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_portForName_1 = _registerName1("portForName:"); + ffi.Pointer _objc_msgSend_538( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ) { + return __objc_msgSend_538( + obj, + sel, + name, + ); + } + + late final __objc_msgSend_538Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_538 = __objc_msgSend_538Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_portForName_host_1 = _registerName1("portForName:host:"); + ffi.Pointer _objc_msgSend_539( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer host, + ) { + return __objc_msgSend_539( + obj, + sel, + name, + host, + ); + } + + late final __objc_msgSend_539Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_539 = __objc_msgSend_539Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_registerPort_name_1 = _registerName1("registerPort:name:"); + bool _objc_msgSend_540( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer port, + ffi.Pointer name, + ) { + return __objc_msgSend_540( + obj, + sel, + port, + name, + ); + } + + late final __objc_msgSend_540Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_540 = __objc_msgSend_540Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_removePortForName_1 = _registerName1("removePortForName:"); + late final _sel_connectionWithRegisteredName_host_usingNameServer_1 = + _registerName1("connectionWithRegisteredName:host:usingNameServer:"); + instancetype _objc_msgSend_541( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer hostName, + ffi.Pointer server, + ) { + return __objc_msgSend_541( + obj, + sel, + name, + hostName, + server, + ); + } + + late final __objc_msgSend_541Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_541 = __objc_msgSend_541Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSDistantObject1 = _getClass1("NSDistantObject"); + late final _class_NSProxy1 = _getClass1("NSProxy"); + late final _sel_respondsToSelector_1 = _registerName1("respondsToSelector:"); + late final _sel_proxyWithTarget_connection_1 = + _registerName1("proxyWithTarget:connection:"); + ffi.Pointer _objc_msgSend_542( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer target, + ffi.Pointer connection, + ) { + return __objc_msgSend_542( + obj, + sel, + target, + connection, + ); + } + + late final __objc_msgSend_542Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_542 = __objc_msgSend_542Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithTarget_connection_1 = + _registerName1("initWithTarget:connection:"); + late final _sel_proxyWithLocal_connection_1 = + _registerName1("proxyWithLocal:connection:"); + late final _sel_initWithLocal_connection_1 = + _registerName1("initWithLocal:connection:"); + late final _sel_setProtocolForProxy_1 = + _registerName1("setProtocolForProxy:"); + void _objc_msgSend_543( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer proto, + ) { + return __objc_msgSend_543( + obj, + sel, + proto, + ); + } + + late final __objc_msgSend_543Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_543 = __objc_msgSend_543Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_connectionForProxy1 = _registerName1("connectionForProxy"); + late final _sel_rootProxyForConnectionWithRegisteredName_host_1 = + _registerName1("rootProxyForConnectionWithRegisteredName:host:"); + ffi.Pointer _objc_msgSend_544( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer hostName, + ) { + return __objc_msgSend_544( + obj, + sel, + name, + hostName, + ); + } + + late final __objc_msgSend_544Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_544 = __objc_msgSend_544Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_rootProxyForConnectionWithRegisteredName_host_usingNameServer_1 = + _registerName1( + "rootProxyForConnectionWithRegisteredName:host:usingNameServer:"); + ffi.Pointer _objc_msgSend_545( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer hostName, + ffi.Pointer server, + ) { + return __objc_msgSend_545( + obj, + sel, + name, + hostName, + server, + ); + } + + late final __objc_msgSend_545Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_545 = __objc_msgSend_545Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_serviceConnectionWithName_rootObject_usingNameServer_1 = + _registerName1("serviceConnectionWithName:rootObject:usingNameServer:"); + instancetype _objc_msgSend_546( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer root, + ffi.Pointer server, + ) { + return __objc_msgSend_546( + obj, + sel, + name, + root, + server, + ); + } + + late final __objc_msgSend_546Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_546 = __objc_msgSend_546Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_serviceConnectionWithName_rootObject_1 = + _registerName1("serviceConnectionWithName:rootObject:"); + late final _sel_requestTimeout1 = _registerName1("requestTimeout"); + late final _sel_setRequestTimeout_1 = _registerName1("setRequestTimeout:"); + late final _sel_replyTimeout1 = _registerName1("replyTimeout"); + late final _sel_setReplyTimeout_1 = _registerName1("setReplyTimeout:"); + late final _sel_rootObject1 = _registerName1("rootObject"); + late final _sel_setRootObject_1 = _registerName1("setRootObject:"); + late final _sel_independentConversationQueueing1 = + _registerName1("independentConversationQueueing"); + late final _sel_setIndependentConversationQueueing_1 = + _registerName1("setIndependentConversationQueueing:"); + late final _sel_rootProxy1 = _registerName1("rootProxy"); + ffi.Pointer _objc_msgSend_547( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_547( + obj, + sel, + ); + } + + late final __objc_msgSend_547Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_547 = __objc_msgSend_547Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_addRequestMode_1 = _registerName1("addRequestMode:"); + late final _sel_removeRequestMode_1 = _registerName1("removeRequestMode:"); + late final _sel_requestModes1 = _registerName1("requestModes"); + late final _sel_registerName_1 = _registerName1("registerName:"); + late final _sel_registerName_withNameServer_1 = + _registerName1("registerName:withNameServer:"); + bool _objc_msgSend_548( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer server, + ) { + return __objc_msgSend_548( + obj, + sel, + name, + server, + ); + } + + late final __objc_msgSend_548Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_548 = __objc_msgSend_548Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_connectionWithReceivePort_sendPort_1 = + _registerName1("connectionWithReceivePort:sendPort:"); + instancetype _objc_msgSend_549( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer receivePort, + ffi.Pointer sendPort, + ) { + return __objc_msgSend_549( + obj, + sel, + receivePort, + sendPort, + ); + } + + late final __objc_msgSend_549Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_549 = __objc_msgSend_549Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_currentConversation1 = _registerName1("currentConversation"); + late final _sel_initWithReceivePort_sendPort_1 = + _registerName1("initWithReceivePort:sendPort:"); + late final _sel_sendPort1 = _registerName1("sendPort"); + late final _sel_receivePort1 = _registerName1("receivePort"); + late final _sel_enableMultipleThreads1 = + _registerName1("enableMultipleThreads"); + late final _sel_multipleThreadsEnabled1 = + _registerName1("multipleThreadsEnabled"); + late final _sel_addRunLoop_1 = _registerName1("addRunLoop:"); + void _objc_msgSend_550( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer runloop, + ) { + return __objc_msgSend_550( + obj, + sel, + runloop, + ); + } + + late final __objc_msgSend_550Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_550 = __objc_msgSend_550Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_removeRunLoop_1 = _registerName1("removeRunLoop:"); + late final _sel_runInNewThread1 = _registerName1("runInNewThread"); + late final _sel_remoteObjects1 = _registerName1("remoteObjects"); + late final _sel_localObjects1 = _registerName1("localObjects"); + late final _sel_dispatchWithComponents_1 = + _registerName1("dispatchWithComponents:"); + late final _sel_addConnection_toRunLoop_forMode_1 = + _registerName1("addConnection:toRunLoop:forMode:"); + void _objc_msgSend_551( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer conn, + ffi.Pointer runLoop, + ffi.Pointer mode, + ) { + return __objc_msgSend_551( + obj, + sel, + conn, + runLoop, + mode, + ); + } + + late final __objc_msgSend_551Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_551 = __objc_msgSend_551Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_removeConnection_fromRunLoop_forMode_1 = + _registerName1("removeConnection:fromRunLoop:forMode:"); + late final _sel_encodePortObject_1 = _registerName1("encodePortObject:"); + void _objc_msgSend_552( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aport, + ) { + return __objc_msgSend_552( + obj, + sel, + aport, + ); + } + + late final __objc_msgSend_552Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_552 = __objc_msgSend_552Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_decodePortObject1 = _registerName1("decodePortObject"); + late final _sel_connection1 = _registerName1("connection"); + late final _sel_portCoderWithReceivePort_sendPort_components_1 = + _registerName1("portCoderWithReceivePort:sendPort:components:"); + ffi.Pointer _objc_msgSend_553( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer rcvPort, + ffi.Pointer sndPort, + ffi.Pointer comps, + ) { + return __objc_msgSend_553( + obj, + sel, + rcvPort, + sndPort, + comps, + ); + } + + late final __objc_msgSend_553Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_553 = __objc_msgSend_553Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithReceivePort_sendPort_components_1 = + _registerName1("initWithReceivePort:sendPort:components:"); + late final _sel_dispatch1 = _registerName1("dispatch"); + late final _sel_replacementObjectForPortCoder_1 = + _registerName1("replacementObjectForPortCoder:"); + ffi.Pointer _objc_msgSend_554( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer coder, + ) { + return __objc_msgSend_554( + obj, + sel, + coder, + ); + } + + late final __objc_msgSend_554Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_554 = __objc_msgSend_554Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSClassDescription1 = _getClass1("NSClassDescription"); + late final _sel_registerClassDescription_forClass_1 = + _registerName1("registerClassDescription:forClass:"); + void _objc_msgSend_555( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer description, + ffi.Pointer aClass, + ) { + return __objc_msgSend_555( + obj, + sel, + description, + aClass, + ); + } + + late final __objc_msgSend_555Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_555 = __objc_msgSend_555Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_invalidateClassDescriptionCache1 = + _registerName1("invalidateClassDescriptionCache"); + late final _sel_classDescriptionForClass_1 = + _registerName1("classDescriptionForClass:"); + ffi.Pointer _objc_msgSend_556( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aClass, + ) { + return __objc_msgSend_556( + obj, + sel, + aClass, + ); + } + + late final __objc_msgSend_556Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_556 = __objc_msgSend_556Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_attributeKeys1 = _registerName1("attributeKeys"); + late final _sel_toOneRelationshipKeys1 = + _registerName1("toOneRelationshipKeys"); + late final _sel_toManyRelationshipKeys1 = + _registerName1("toManyRelationshipKeys"); + late final _sel_inverseForRelationshipKey_1 = + _registerName1("inverseForRelationshipKey:"); + late final _sel_classDescription1 = _registerName1("classDescription"); + ffi.Pointer _objc_msgSend_557( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_557( + obj, + sel, + ); + } + + late final __objc_msgSend_557Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_557 = __objc_msgSend_557Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSScriptObjectSpecifier1 = + _getClass1("NSScriptObjectSpecifier"); + late final _class_NSAppleEventDescriptor1 = + _getClass1("NSAppleEventDescriptor"); + late final _sel_nullDescriptor1 = _registerName1("nullDescriptor"); + ffi.Pointer _objc_msgSend_558( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_558( + obj, + sel, + ); + } + + late final __objc_msgSend_558Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_558 = __objc_msgSend_558Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_descriptorWithDescriptorType_bytes_length_1 = + _registerName1("descriptorWithDescriptorType:bytes:length:"); + ffi.Pointer _objc_msgSend_559( + ffi.Pointer obj, + ffi.Pointer sel, + int descriptorType, + ffi.Pointer bytes, + int byteCount, + ) { + return __objc_msgSend_559( + obj, + sel, + descriptorType, + bytes, + byteCount, + ); + } + + late final __objc_msgSend_559Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_559 = __objc_msgSend_559Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer, int)>(); + + late final _sel_descriptorWithDescriptorType_data_1 = + _registerName1("descriptorWithDescriptorType:data:"); + ffi.Pointer _objc_msgSend_560( + ffi.Pointer obj, + ffi.Pointer sel, + int descriptorType, + ffi.Pointer data, + ) { + return __objc_msgSend_560( + obj, + sel, + descriptorType, + data, + ); + } + + late final __objc_msgSend_560Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_560 = __objc_msgSend_560Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_descriptorWithBoolean_1 = + _registerName1("descriptorWithBoolean:"); + ffi.Pointer _objc_msgSend_561( + ffi.Pointer obj, + ffi.Pointer sel, + int boolean, + ) { + return __objc_msgSend_561( + obj, + sel, + boolean, + ); + } + + late final __objc_msgSend_561Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedChar)>>('objc_msgSend'); + late final __objc_msgSend_561 = __objc_msgSend_561Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_descriptorWithEnumCode_1 = + _registerName1("descriptorWithEnumCode:"); + ffi.Pointer _objc_msgSend_562( + ffi.Pointer obj, + ffi.Pointer sel, + int enumerator, + ) { + return __objc_msgSend_562( + obj, + sel, + enumerator, + ); + } + + late final __objc_msgSend_562Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); + late final __objc_msgSend_562 = __objc_msgSend_562Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_descriptorWithInt32_1 = + _registerName1("descriptorWithInt32:"); + ffi.Pointer _objc_msgSend_563( + ffi.Pointer obj, + ffi.Pointer sel, + int signedInt, + ) { + return __objc_msgSend_563( + obj, + sel, + signedInt, + ); + } + + late final __objc_msgSend_563Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int)>>('objc_msgSend'); + late final __objc_msgSend_563 = __objc_msgSend_563Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_descriptorWithDouble_1 = + _registerName1("descriptorWithDouble:"); + ffi.Pointer _objc_msgSend_564( + ffi.Pointer obj, + ffi.Pointer sel, + double doubleValue, + ) { + return __objc_msgSend_564( + obj, + sel, + doubleValue, + ); + } + + late final __objc_msgSend_564Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Double)>>('objc_msgSend'); + late final __objc_msgSend_564 = __objc_msgSend_564Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, double)>(); + + late final _sel_descriptorWithTypeCode_1 = + _registerName1("descriptorWithTypeCode:"); + late final _sel_descriptorWithString_1 = + _registerName1("descriptorWithString:"); + ffi.Pointer _objc_msgSend_565( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + ) { + return __objc_msgSend_565( + obj, + sel, + string, + ); + } + + late final __objc_msgSend_565Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_565 = __objc_msgSend_565Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_descriptorWithDate_1 = _registerName1("descriptorWithDate:"); + ffi.Pointer _objc_msgSend_566( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date, + ) { + return __objc_msgSend_566( + obj, + sel, + date, + ); + } + + late final __objc_msgSend_566Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_566 = __objc_msgSend_566Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_descriptorWithFileURL_1 = + _registerName1("descriptorWithFileURL:"); + ffi.Pointer _objc_msgSend_567( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer fileURL, + ) { + return __objc_msgSend_567( + obj, + sel, + fileURL, + ); + } + + late final __objc_msgSend_567Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_567 = __objc_msgSend_567Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_1 = + _registerName1( + "appleEventWithEventClass:eventID:targetDescriptor:returnID:transactionID:"); + ffi.Pointer _objc_msgSend_568( + ffi.Pointer obj, + ffi.Pointer sel, + int eventClass, + int eventID, + ffi.Pointer targetDescriptor, + int returnID, + int transactionID, + ) { + return __objc_msgSend_568( + obj, + sel, + eventClass, + eventID, + targetDescriptor, + returnID, + transactionID, + ); + } + + late final __objc_msgSend_568Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.UnsignedInt, + ffi.Pointer, + ffi.Short, + ffi.Int)>>('objc_msgSend'); + late final __objc_msgSend_568 = __objc_msgSend_568Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, int, ffi.Pointer, int, int)>(); + + late final _sel_listDescriptor1 = _registerName1("listDescriptor"); + late final _sel_recordDescriptor1 = _registerName1("recordDescriptor"); + late final _sel_currentProcessDescriptor1 = + _registerName1("currentProcessDescriptor"); + late final _sel_descriptorWithProcessIdentifier_1 = + _registerName1("descriptorWithProcessIdentifier:"); + late final _sel_descriptorWithBundleIdentifier_1 = + _registerName1("descriptorWithBundleIdentifier:"); + late final _sel_descriptorWithApplicationURL_1 = + _registerName1("descriptorWithApplicationURL:"); + late final _sel_initWithAEDescNoCopy_1 = + _registerName1("initWithAEDescNoCopy:"); + instancetype _objc_msgSend_569( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aeDesc, + ) { + return __objc_msgSend_569( + obj, + sel, + aeDesc, + ); + } + + late final __objc_msgSend_569Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_569 = __objc_msgSend_569Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithDescriptorType_bytes_length_1 = + _registerName1("initWithDescriptorType:bytes:length:"); + instancetype _objc_msgSend_570( + ffi.Pointer obj, + ffi.Pointer sel, + int descriptorType, + ffi.Pointer bytes, + int byteCount, + ) { + return __objc_msgSend_570( + obj, + sel, + descriptorType, + bytes, + byteCount, + ); + } + + late final __objc_msgSend_570Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_570 = __objc_msgSend_570Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer, int)>(); + + late final _sel_initWithDescriptorType_data_1 = + _registerName1("initWithDescriptorType:data:"); + instancetype _objc_msgSend_571( + ffi.Pointer obj, + ffi.Pointer sel, + int descriptorType, + ffi.Pointer data, + ) { + return __objc_msgSend_571( + obj, + sel, + descriptorType, + data, + ); + } + + late final __objc_msgSend_571Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedInt, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_571 = __objc_msgSend_571Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); + + late final _sel_initWithEventClass_eventID_targetDescriptor_returnID_transactionID_1 = + _registerName1( + "initWithEventClass:eventID:targetDescriptor:returnID:transactionID:"); + instancetype _objc_msgSend_572( + ffi.Pointer obj, + ffi.Pointer sel, + int eventClass, + int eventID, + ffi.Pointer targetDescriptor, + int returnID, + int transactionID, + ) { + return __objc_msgSend_572( + obj, + sel, + eventClass, + eventID, + targetDescriptor, + returnID, + transactionID, + ); + } + + late final __objc_msgSend_572Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedInt, + ffi.UnsignedInt, + ffi.Pointer, + ffi.Short, + ffi.Int)>>('objc_msgSend'); + late final __objc_msgSend_572 = __objc_msgSend_572Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, int, + int, ffi.Pointer, int, int)>(); + + late final _sel_initListDescriptor1 = _registerName1("initListDescriptor"); + late final _sel_initRecordDescriptor1 = + _registerName1("initRecordDescriptor"); + late final _sel_aeDesc1 = _registerName1("aeDesc"); + ffi.Pointer _objc_msgSend_573( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_573( + obj, + sel, + ); + } + + late final __objc_msgSend_573Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_573 = __objc_msgSend_573Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_descriptorType1 = _registerName1("descriptorType"); + late final _sel_booleanValue1 = _registerName1("booleanValue"); + late final _sel_enumCodeValue1 = _registerName1("enumCodeValue"); + late final _sel_int32Value1 = _registerName1("int32Value"); + late final _sel_typeCodeValue1 = _registerName1("typeCodeValue"); + late final _sel_dateValue1 = _registerName1("dateValue"); + late final _sel_fileURLValue1 = _registerName1("fileURLValue"); + late final _sel_eventClass1 = _registerName1("eventClass"); + late final _sel_eventID1 = _registerName1("eventID"); + late final _sel_returnID1 = _registerName1("returnID"); + late final _sel_transactionID1 = _registerName1("transactionID"); + late final _sel_setParamDescriptor_forKeyword_1 = + _registerName1("setParamDescriptor:forKeyword:"); + void _objc_msgSend_574( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer descriptor, + int keyword, + ) { + return __objc_msgSend_574( + obj, + sel, + descriptor, + keyword, + ); + } + + late final __objc_msgSend_574Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); + late final __objc_msgSend_574 = __objc_msgSend_574Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_paramDescriptorForKeyword_1 = + _registerName1("paramDescriptorForKeyword:"); + late final _sel_removeParamDescriptorWithKeyword_1 = + _registerName1("removeParamDescriptorWithKeyword:"); + void _objc_msgSend_575( + ffi.Pointer obj, + ffi.Pointer sel, + int keyword, + ) { + return __objc_msgSend_575( + obj, + sel, + keyword, + ); + } + + late final __objc_msgSend_575Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedInt)>>('objc_msgSend'); + late final __objc_msgSend_575 = __objc_msgSend_575Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_setAttributeDescriptor_forKeyword_1 = + _registerName1("setAttributeDescriptor:forKeyword:"); + late final _sel_attributeDescriptorForKeyword_1 = + _registerName1("attributeDescriptorForKeyword:"); + late final _sel_sendEventWithOptions_timeout_error_1 = + _registerName1("sendEventWithOptions:timeout:error:"); + ffi.Pointer _objc_msgSend_576( + ffi.Pointer obj, + ffi.Pointer sel, + int sendOptions, + double timeoutInSeconds, + ffi.Pointer> error, + ) { + return __objc_msgSend_576( + obj, + sel, + sendOptions, + timeoutInSeconds, + error, + ); + } + + late final __objc_msgSend_576Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Double, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_576 = __objc_msgSend_576Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + double, + ffi.Pointer>)>(); + + late final _sel_isRecordDescriptor1 = _registerName1("isRecordDescriptor"); + late final _sel_numberOfItems1 = _registerName1("numberOfItems"); + late final _sel_insertDescriptor_atIndex_1 = + _registerName1("insertDescriptor:atIndex:"); + void _objc_msgSend_577( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer descriptor, + int index, + ) { + return __objc_msgSend_577( + obj, + sel, + descriptor, + index, + ); + } + + late final __objc_msgSend_577Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_577 = __objc_msgSend_577Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_descriptorAtIndex_1 = _registerName1("descriptorAtIndex:"); + ffi.Pointer _objc_msgSend_578( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_578( + obj, + sel, + index, + ); + } + + late final __objc_msgSend_578Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_578 = __objc_msgSend_578Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_removeDescriptorAtIndex_1 = + _registerName1("removeDescriptorAtIndex:"); + late final _sel_setDescriptor_forKeyword_1 = + _registerName1("setDescriptor:forKeyword:"); + late final _sel_descriptorForKeyword_1 = + _registerName1("descriptorForKeyword:"); + late final _sel_removeDescriptorWithKeyword_1 = + _registerName1("removeDescriptorWithKeyword:"); + late final _sel_keywordForDescriptorAtIndex_1 = + _registerName1("keywordForDescriptorAtIndex:"); + int _objc_msgSend_579( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_579( + obj, + sel, + index, + ); + } + + late final __objc_msgSend_579Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedInt Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_579 = __objc_msgSend_579Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_coerceToDescriptorType_1 = + _registerName1("coerceToDescriptorType:"); + late final _sel_objectSpecifierWithDescriptor_1 = + _registerName1("objectSpecifierWithDescriptor:"); + ffi.Pointer _objc_msgSend_580( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer descriptor, + ) { + return __objc_msgSend_580( + obj, + sel, + descriptor, + ); + } + + late final __objc_msgSend_580Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_580 = __objc_msgSend_580Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithContainerSpecifier_key_1 = + _registerName1("initWithContainerSpecifier:key:"); + instancetype _objc_msgSend_581( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer container, + ffi.Pointer property, + ) { + return __objc_msgSend_581( + obj, + sel, + container, + property, + ); + } + + late final __objc_msgSend_581Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_581 = __objc_msgSend_581Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSScriptClassDescription1 = + _getClass1("NSScriptClassDescription"); + ffi.Pointer _objc_msgSend_582( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aClass, + ) { + return __objc_msgSend_582( + obj, + sel, + aClass, + ); + } + + late final __objc_msgSend_582Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_582 = __objc_msgSend_582Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithSuiteName_className_dictionary_1 = + _registerName1("initWithSuiteName:className:dictionary:"); + instancetype _objc_msgSend_583( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer suiteName, + ffi.Pointer className, + ffi.Pointer classDeclaration, + ) { + return __objc_msgSend_583( + obj, + sel, + suiteName, + className, + classDeclaration, + ); + } + + late final __objc_msgSend_583Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_583 = __objc_msgSend_583Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_suiteName1 = _registerName1("suiteName"); + late final _sel_className1 = _registerName1("className"); + late final _sel_implementationClassName1 = + _registerName1("implementationClassName"); + late final _sel_superclassDescription1 = + _registerName1("superclassDescription"); + ffi.Pointer _objc_msgSend_584( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_584( + obj, + sel, + ); + } + + late final __objc_msgSend_584Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_584 = __objc_msgSend_584Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_appleEventCode1 = _registerName1("appleEventCode"); + late final _sel_matchesAppleEventCode_1 = + _registerName1("matchesAppleEventCode:"); + late final _class_NSScriptCommandDescription1 = + _getClass1("NSScriptCommandDescription"); + late final _sel_initWithSuiteName_commandName_dictionary_1 = + _registerName1("initWithSuiteName:commandName:dictionary:"); + late final _sel_commandName1 = _registerName1("commandName"); + late final _sel_appleEventClassCode1 = _registerName1("appleEventClassCode"); + late final _sel_commandClassName1 = _registerName1("commandClassName"); + late final _sel_returnType1 = _registerName1("returnType"); + late final _sel_appleEventCodeForReturnType1 = + _registerName1("appleEventCodeForReturnType"); + late final _sel_argumentNames1 = _registerName1("argumentNames"); + late final _sel_typeForArgumentWithName_1 = + _registerName1("typeForArgumentWithName:"); + late final _sel_appleEventCodeForArgumentWithName_1 = + _registerName1("appleEventCodeForArgumentWithName:"); + int _objc_msgSend_585( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer argumentName, + ) { + return __objc_msgSend_585( + obj, + sel, + argumentName, + ); + } + + late final __objc_msgSend_585Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedInt Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_585 = __objc_msgSend_585Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_isOptionalArgumentWithName_1 = + _registerName1("isOptionalArgumentWithName:"); + late final _class_NSScriptCommand1 = _getClass1("NSScriptCommand"); + late final _sel_initWithCommandDescription_1 = + _registerName1("initWithCommandDescription:"); + instancetype _objc_msgSend_586( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer commandDef, + ) { + return __objc_msgSend_586( + obj, + sel, + commandDef, + ); + } + + late final __objc_msgSend_586Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_586 = __objc_msgSend_586Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_commandDescription1 = _registerName1("commandDescription"); + ffi.Pointer _objc_msgSend_587( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_587( + obj, + sel, + ); + } + + late final __objc_msgSend_587Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_587 = __objc_msgSend_587Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_directParameter1 = _registerName1("directParameter"); + late final _sel_setDirectParameter_1 = _registerName1("setDirectParameter:"); + late final _sel_receiversSpecifier1 = _registerName1("receiversSpecifier"); + ffi.Pointer _objc_msgSend_588( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_588( + obj, + sel, + ); + } + + late final __objc_msgSend_588Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_588 = __objc_msgSend_588Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setReceiversSpecifier_1 = + _registerName1("setReceiversSpecifier:"); + void _objc_msgSend_589( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_589( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_589Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_589 = __objc_msgSend_589Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_evaluatedReceivers1 = _registerName1("evaluatedReceivers"); + late final _sel_arguments1 = _registerName1("arguments"); + late final _sel_setArguments_1 = _registerName1("setArguments:"); + late final _sel_evaluatedArguments1 = _registerName1("evaluatedArguments"); + late final _sel_isWellFormed1 = _registerName1("isWellFormed"); + late final _sel_performDefaultImplementation1 = + _registerName1("performDefaultImplementation"); + late final _sel_executeCommand1 = _registerName1("executeCommand"); + late final _sel_scriptErrorNumber1 = _registerName1("scriptErrorNumber"); + late final _sel_setScriptErrorNumber_1 = + _registerName1("setScriptErrorNumber:"); + void _objc_msgSend_590( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_590( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_590Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_590 = __objc_msgSend_590Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_scriptErrorOffendingObjectDescriptor1 = + _registerName1("scriptErrorOffendingObjectDescriptor"); + late final _sel_setScriptErrorOffendingObjectDescriptor_1 = + _registerName1("setScriptErrorOffendingObjectDescriptor:"); + void _objc_msgSend_591( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_591( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_591Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_591 = __objc_msgSend_591Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_scriptErrorExpectedTypeDescriptor1 = + _registerName1("scriptErrorExpectedTypeDescriptor"); + late final _sel_setScriptErrorExpectedTypeDescriptor_1 = + _registerName1("setScriptErrorExpectedTypeDescriptor:"); + late final _sel_scriptErrorString1 = _registerName1("scriptErrorString"); + late final _sel_setScriptErrorString_1 = + _registerName1("setScriptErrorString:"); + late final _sel_currentCommand1 = _registerName1("currentCommand"); + ffi.Pointer _objc_msgSend_592( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_592( + obj, + sel, + ); + } + + late final __objc_msgSend_592Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_592 = __objc_msgSend_592Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_appleEvent1 = _registerName1("appleEvent"); + late final _sel_suspendExecution1 = _registerName1("suspendExecution"); + late final _sel_resumeExecutionWithResult_1 = + _registerName1("resumeExecutionWithResult:"); + late final _sel_createCommandInstance1 = + _registerName1("createCommandInstance"); + late final _sel_createCommandInstanceWithZone_1 = + _registerName1("createCommandInstanceWithZone:"); + ffi.Pointer _objc_msgSend_593( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_NSZone> zone, + ) { + return __objc_msgSend_593( + obj, + sel, + zone, + ); + } + + late final __objc_msgSend_593Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>>('objc_msgSend'); + late final __objc_msgSend_593 = __objc_msgSend_593Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<_NSZone>)>(); + + late final _sel_supportsCommand_1 = _registerName1("supportsCommand:"); + bool _objc_msgSend_594( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer commandDescription, + ) { + return __objc_msgSend_594( + obj, + sel, + commandDescription, + ); + } + + late final __objc_msgSend_594Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_594 = __objc_msgSend_594Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_selectorForCommand_1 = _registerName1("selectorForCommand:"); + ffi.Pointer _objc_msgSend_595( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer commandDescription, + ) { + return __objc_msgSend_595( + obj, + sel, + commandDescription, + ); + } + + late final __objc_msgSend_595Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_595 = __objc_msgSend_595Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_typeForKey_1 = _registerName1("typeForKey:"); + late final _sel_classDescriptionForKey_1 = + _registerName1("classDescriptionForKey:"); + ffi.Pointer _objc_msgSend_596( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ) { + return __objc_msgSend_596( + obj, + sel, + key, + ); + } + + late final __objc_msgSend_596Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_596 = __objc_msgSend_596Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_appleEventCodeForKey_1 = + _registerName1("appleEventCodeForKey:"); + late final _sel_keyWithAppleEventCode_1 = + _registerName1("keyWithAppleEventCode:"); + ffi.Pointer _objc_msgSend_597( + ffi.Pointer obj, + ffi.Pointer sel, + int appleEventCode, + ) { + return __objc_msgSend_597( + obj, + sel, + appleEventCode, + ); + } + + late final __objc_msgSend_597Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedInt)>>('objc_msgSend'); + late final __objc_msgSend_597 = __objc_msgSend_597Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_defaultSubcontainerAttributeKey1 = + _registerName1("defaultSubcontainerAttributeKey"); + late final _sel_isLocationRequiredToCreateForKey_1 = + _registerName1("isLocationRequiredToCreateForKey:"); + late final _sel_hasPropertyForKey_1 = _registerName1("hasPropertyForKey:"); + late final _sel_hasOrderedToManyRelationshipForKey_1 = + _registerName1("hasOrderedToManyRelationshipForKey:"); + late final _sel_hasReadablePropertyForKey_1 = + _registerName1("hasReadablePropertyForKey:"); + late final _sel_hasWritablePropertyForKey_1 = + _registerName1("hasWritablePropertyForKey:"); + late final _sel_isReadOnlyKey_1 = _registerName1("isReadOnlyKey:"); + late final _sel_initWithContainerClassDescription_containerSpecifier_key_1 = + _registerName1( + "initWithContainerClassDescription:containerSpecifier:key:"); + instancetype _objc_msgSend_598( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer classDesc, + ffi.Pointer container, + ffi.Pointer property, + ) { + return __objc_msgSend_598( + obj, + sel, + classDesc, + container, + property, + ); + } + + late final __objc_msgSend_598Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_598 = __objc_msgSend_598Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_childSpecifier1 = _registerName1("childSpecifier"); + late final _sel_setChildSpecifier_1 = _registerName1("setChildSpecifier:"); + late final _sel_containerSpecifier1 = _registerName1("containerSpecifier"); + late final _sel_setContainerSpecifier_1 = + _registerName1("setContainerSpecifier:"); + late final _sel_containerIsObjectBeingTested1 = + _registerName1("containerIsObjectBeingTested"); + late final _sel_setContainerIsObjectBeingTested_1 = + _registerName1("setContainerIsObjectBeingTested:"); + late final _sel_containerIsRangeContainerObject1 = + _registerName1("containerIsRangeContainerObject"); + late final _sel_setContainerIsRangeContainerObject_1 = + _registerName1("setContainerIsRangeContainerObject:"); + late final _sel_key1 = _registerName1("key"); + late final _sel_setKey_1 = _registerName1("setKey:"); + late final _sel_containerClassDescription1 = + _registerName1("containerClassDescription"); + late final _sel_setContainerClassDescription_1 = + _registerName1("setContainerClassDescription:"); + void _objc_msgSend_599( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_599( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_599Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_599 = __objc_msgSend_599Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_keyClassDescription1 = _registerName1("keyClassDescription"); + late final _sel_indicesOfObjectsByEvaluatingWithContainer_count_1 = + _registerName1("indicesOfObjectsByEvaluatingWithContainer:count:"); + ffi.Pointer _objc_msgSend_600( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer container, + ffi.Pointer count, + ) { + return __objc_msgSend_600( + obj, + sel, + container, + count, + ); + } + + late final __objc_msgSend_600Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_600 = __objc_msgSend_600Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_objectsByEvaluatingWithContainers_1 = + _registerName1("objectsByEvaluatingWithContainers:"); + late final _sel_objectsByEvaluatingSpecifier1 = + _registerName1("objectsByEvaluatingSpecifier"); + late final _sel_evaluationErrorNumber1 = + _registerName1("evaluationErrorNumber"); + late final _sel_setEvaluationErrorNumber_1 = + _registerName1("setEvaluationErrorNumber:"); + late final _sel_evaluationErrorSpecifier1 = + _registerName1("evaluationErrorSpecifier"); + late final _sel_descriptor1 = _registerName1("descriptor"); + late final _sel_scriptingValueForSpecifier_1 = + _registerName1("scriptingValueForSpecifier:"); + ffi.Pointer _objc_msgSend_601( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer objectSpecifier, + ) { + return __objc_msgSend_601( + obj, + sel, + objectSpecifier, + ); + } + + late final __objc_msgSend_601Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_601 = __objc_msgSend_601Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_scriptingProperties1 = _registerName1("scriptingProperties"); + late final _sel_setScriptingProperties_1 = + _registerName1("setScriptingProperties:"); + late final _sel_copyScriptingValue_forKey_withProperties_1 = + _registerName1("copyScriptingValue:forKey:withProperties:"); + ffi.Pointer _objc_msgSend_602( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ffi.Pointer key, + ffi.Pointer properties, + ) { + return __objc_msgSend_602( + obj, + sel, + value, + key, + properties, + ); + } + + late final __objc_msgSend_602Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_602 = __objc_msgSend_602Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_newScriptingObjectOfClass_forValueForKey_withContentsValue_properties_1 = + _registerName1( + "newScriptingObjectOfClass:forValueForKey:withContentsValue:properties:"); + ffi.Pointer _objc_msgSend_603( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer objectClass, + ffi.Pointer key, + ffi.Pointer contentsValue, + ffi.Pointer properties, + ) { + return __objc_msgSend_603( + obj, + sel, + objectClass, + key, + contentsValue, + properties, + ); + } + + late final __objc_msgSend_603Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_603 = __objc_msgSend_603Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_classCode1 = _registerName1("classCode"); + late final _sel_valueAtIndex_inPropertyWithKey_1 = + _registerName1("valueAtIndex:inPropertyWithKey:"); + ffi.Pointer _objc_msgSend_604( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ffi.Pointer key, + ) { + return __objc_msgSend_604( + obj, + sel, + index, + key, + ); + } + + late final __objc_msgSend_604Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_604 = __objc_msgSend_604Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_valueWithName_inPropertyWithKey_1 = + _registerName1("valueWithName:inPropertyWithKey:"); + late final _sel_valueWithUniqueID_inPropertyWithKey_1 = + _registerName1("valueWithUniqueID:inPropertyWithKey:"); + late final _sel_insertValue_atIndex_inPropertyWithKey_1 = + _registerName1("insertValue:atIndex:inPropertyWithKey:"); + void _objc_msgSend_605( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + int index, + ffi.Pointer key, + ) { + return __objc_msgSend_605( + obj, + sel, + value, + index, + key, + ); + } + + late final __objc_msgSend_605Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_605 = __objc_msgSend_605Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_removeValueAtIndex_fromPropertyWithKey_1 = + _registerName1("removeValueAtIndex:fromPropertyWithKey:"); + void _objc_msgSend_606( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ffi.Pointer key, + ) { + return __objc_msgSend_606( + obj, + sel, + index, + key, + ); + } + + late final __objc_msgSend_606Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_606 = __objc_msgSend_606Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); + + late final _sel_replaceValueAtIndex_inPropertyWithKey_withValue_1 = + _registerName1("replaceValueAtIndex:inPropertyWithKey:withValue:"); + void _objc_msgSend_607( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ffi.Pointer key, + ffi.Pointer value, + ) { + return __objc_msgSend_607( + obj, + sel, + index, + key, + value, + ); + } + + late final __objc_msgSend_607Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_607 = __objc_msgSend_607Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_insertValue_inPropertyWithKey_1 = + _registerName1("insertValue:inPropertyWithKey:"); + late final _sel_coerceValue_forKey_1 = _registerName1("coerceValue:forKey:"); + late final _sel_objectSpecifier1 = _registerName1("objectSpecifier"); + late final _sel_indicesOfObjectsByEvaluatingObjectSpecifier_1 = + _registerName1("indicesOfObjectsByEvaluatingObjectSpecifier:"); + ffi.Pointer _objc_msgSend_608( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer specifier, + ) { + return __objc_msgSend_608( + obj, + sel, + specifier, + ); + } + + late final __objc_msgSend_608Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_608 = __objc_msgSend_608Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_isEqualTo_1 = _registerName1("isEqualTo:"); + late final _sel_isLessThanOrEqualTo_1 = + _registerName1("isLessThanOrEqualTo:"); + late final _sel_isLessThan_1 = _registerName1("isLessThan:"); + late final _sel_isGreaterThanOrEqualTo_1 = + _registerName1("isGreaterThanOrEqualTo:"); + late final _sel_isGreaterThan_1 = _registerName1("isGreaterThan:"); + late final _sel_isNotEqualTo_1 = _registerName1("isNotEqualTo:"); + late final _sel_doesContain_1 = _registerName1("doesContain:"); + late final _sel_isLike_1 = _registerName1("isLike:"); + late final _sel_isCaseInsensitiveLike_1 = + _registerName1("isCaseInsensitiveLike:"); + late final _sel_scriptingIsEqualTo_1 = _registerName1("scriptingIsEqualTo:"); + late final _sel_scriptingIsLessThanOrEqualTo_1 = + _registerName1("scriptingIsLessThanOrEqualTo:"); + late final _sel_scriptingIsLessThan_1 = + _registerName1("scriptingIsLessThan:"); + late final _sel_scriptingIsGreaterThanOrEqualTo_1 = + _registerName1("scriptingIsGreaterThanOrEqualTo:"); + late final _sel_scriptingIsGreaterThan_1 = + _registerName1("scriptingIsGreaterThan:"); + late final _sel_scriptingBeginsWith_1 = + _registerName1("scriptingBeginsWith:"); + late final _sel_scriptingEndsWith_1 = _registerName1("scriptingEndsWith:"); + late final _sel_scriptingContains_1 = _registerName1("scriptingContains:"); + late final _class_NSUUID1 = _getClass1("NSUUID"); + late final _sel_UUID1 = _registerName1("UUID"); + late final _sel_initWithUUIDString_1 = _registerName1("initWithUUIDString:"); + late final _sel_initWithUUIDBytes_1 = _registerName1("initWithUUIDBytes:"); + instancetype _objc_msgSend_609( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer bytes, + ) { + return __objc_msgSend_609( + obj, + sel, + bytes, + ); + } + + late final __objc_msgSend_609Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_609 = __objc_msgSend_609Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_getUUIDBytes_1 = _registerName1("getUUIDBytes:"); + void _objc_msgSend_610( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer uuid, + ) { + return __objc_msgSend_610( + obj, + sel, + uuid, + ); + } + + late final __objc_msgSend_610Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_610 = __objc_msgSend_610Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + int _objc_msgSend_611( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherUUID, + ) { + return __objc_msgSend_611( + obj, + sel, + otherUUID, + ); + } + + late final __objc_msgSend_611Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_611 = __objc_msgSend_611Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_UUIDString1 = _registerName1("UUIDString"); + late final _sel_initWithUUID_1 = _registerName1("initWithUUID:"); + instancetype _objc_msgSend_612( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer uuid, + ) { + return __objc_msgSend_612( + obj, + sel, + uuid, + ); + } + + late final __objc_msgSend_612Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_612 = __objc_msgSend_612Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_sentryIdString1 = _registerName1("sentryIdString"); + late final _sel_empty1 = _registerName1("empty"); + ffi.Pointer _objc_msgSend_613( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_613( + obj, + sel, + ); + } + + late final __objc_msgSend_613Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_613 = __objc_msgSend_613Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _class_SentryEnvelopeItem1 = _getClass1("SentryEnvelopeItem"); + late final _class_SentryEvent1 = _getClass1("SentryEvent"); + late final _sel_initWithEvent_1 = _registerName1("initWithEvent:"); + instancetype _objc_msgSend_614( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer event, + ) { + return __objc_msgSend_614( + obj, + sel, + event, + ); + } + + late final __objc_msgSend_614Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_614 = __objc_msgSend_614Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_SentrySession1 = _getClass1("SentrySession"); + late final _sel_initWithSession_1 = _registerName1("initWithSession:"); + instancetype _objc_msgSend_615( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer session, + ) { + return __objc_msgSend_615( + obj, + sel, + session, + ); + } + + late final __objc_msgSend_615Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_615 = __objc_msgSend_615Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_SentryUserFeedback1 = _getClass1("SentryUserFeedback"); + late final _sel_initWithUserFeedback_1 = + _registerName1("initWithUserFeedback:"); + instancetype _objc_msgSend_616( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer userFeedback, + ) { + return __objc_msgSend_616( + obj, + sel, + userFeedback, + ); + } + + late final __objc_msgSend_616Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_616 = __objc_msgSend_616Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_SentryAttachment1 = _getClass1("SentryAttachment"); + late final _sel_initWithAttachment_maxAttachmentSize_1 = + _registerName1("initWithAttachment:maxAttachmentSize:"); + instancetype _objc_msgSend_617( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer attachment, + ffi.Pointer maxAttachmentSize, + ) { + return __objc_msgSend_617( + obj, + sel, + attachment, + maxAttachmentSize, + ); + } + + late final __objc_msgSend_617Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_617 = __objc_msgSend_617Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_SentryEnvelopeItemHeader1 = + _getClass1("SentryEnvelopeItemHeader"); + late final _sel_initWithHeader_data_1 = + _registerName1("initWithHeader:data:"); + instancetype _objc_msgSend_618( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer header, + ffi.Pointer data, + ) { + return __objc_msgSend_618( + obj, + sel, + header, + data, + ); + } + + late final __objc_msgSend_618Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_618 = __objc_msgSend_618Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_header1 = _registerName1("header"); + ffi.Pointer _objc_msgSend_619( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_619( + obj, + sel, + ); + } + + late final __objc_msgSend_619Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_619 = __objc_msgSend_619Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + ffi.Pointer _objc_msgSend_620( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_620( + obj, + sel, + ); + } + + late final __objc_msgSend_620Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_620 = __objc_msgSend_620Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithId_singleItem_1 = + _registerName1("initWithId:singleItem:"); + instancetype _objc_msgSend_621( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer id, + ffi.Pointer item, + ) { + return __objc_msgSend_621( + obj, + sel, + id, + item, + ); + } + + late final __objc_msgSend_621Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_621 = __objc_msgSend_621Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_SentryEnvelopeHeader1 = _getClass1("SentryEnvelopeHeader"); + late final _sel_initWithId_1 = _registerName1("initWithId:"); + instancetype _objc_msgSend_622( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer eventId, + ) { + return __objc_msgSend_622( + obj, + sel, + eventId, + ); + } + + late final __objc_msgSend_622Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_622 = __objc_msgSend_622Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_SentryTraceContext1 = _getClass1("SentryTraceContext"); + late final _sel_initWithId_traceContext_1 = + _registerName1("initWithId:traceContext:"); + instancetype _objc_msgSend_623( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer eventId, + ffi.Pointer traceContext, + ) { + return __objc_msgSend_623( + obj, + sel, + eventId, + traceContext, + ); + } + + late final __objc_msgSend_623Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_623 = __objc_msgSend_623Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_SentrySdkInfo1 = _getClass1("SentrySdkInfo"); + late final _sel_initWithId_sdkInfo_traceContext_1 = + _registerName1("initWithId:sdkInfo:traceContext:"); + instancetype _objc_msgSend_624( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer eventId, + ffi.Pointer sdkInfo, + ffi.Pointer traceContext, + ) { + return __objc_msgSend_624( + obj, + sel, + eventId, + sdkInfo, + traceContext, + ); + } + + late final __objc_msgSend_624Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_624 = __objc_msgSend_624Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_eventId1 = _registerName1("eventId"); + late final _sel_sdkInfo1 = _registerName1("sdkInfo"); + ffi.Pointer _objc_msgSend_625( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_625( + obj, + sel, + ); + } + + late final __objc_msgSend_625Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_625 = __objc_msgSend_625Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_traceContext1 = _registerName1("traceContext"); + ffi.Pointer _objc_msgSend_626( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_626( + obj, + sel, + ); + } + + late final __objc_msgSend_626Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_626 = __objc_msgSend_626Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_sentAt1 = _registerName1("sentAt"); + late final _sel_setSentAt_1 = _registerName1("setSentAt:"); + void _objc_msgSend_627( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_627( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_627Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_627 = __objc_msgSend_627Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithHeader_singleItem_1 = + _registerName1("initWithHeader:singleItem:"); + instancetype _objc_msgSend_628( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer header, + ffi.Pointer item, + ) { + return __objc_msgSend_628( + obj, + sel, + header, + item, + ); + } + + late final __objc_msgSend_628Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_628 = __objc_msgSend_628Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithId_items_1 = _registerName1("initWithId:items:"); + instancetype _objc_msgSend_629( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer id, + ffi.Pointer items, + ) { + return __objc_msgSend_629( + obj, + sel, + id, + items, + ); + } + + late final __objc_msgSend_629Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_629 = __objc_msgSend_629Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithSessions_1 = _registerName1("initWithSessions:"); + late final _sel_initWithHeader_items_1 = + _registerName1("initWithHeader:items:"); + instancetype _objc_msgSend_630( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer header, + ffi.Pointer items, + ) { + return __objc_msgSend_630( + obj, + sel, + header, + items, + ); + } + + late final __objc_msgSend_630Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_630 = __objc_msgSend_630Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + ffi.Pointer _objc_msgSend_631( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_631( + obj, + sel, + ); + } + + late final __objc_msgSend_631Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_631 = __objc_msgSend_631Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_storeEnvelope_1 = _registerName1("storeEnvelope:"); + void _objc_msgSend_632( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer envelope, + ) { + return __objc_msgSend_632( + obj, + sel, + envelope, + ); + } + + late final __objc_msgSend_632Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_632 = __objc_msgSend_632Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_captureEnvelope_1 = _registerName1("captureEnvelope:"); + late final _sel_envelopeWithData_1 = _registerName1("envelopeWithData:"); + ffi.Pointer _objc_msgSend_633( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ) { + return __objc_msgSend_633( + obj, + sel, + data, + ); + } + + late final __objc_msgSend_633Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_633 = __objc_msgSend_633Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_getDebugImages1 = _registerName1("getDebugImages"); + late final _sel_getDebugImagesCrashed_1 = + _registerName1("getDebugImagesCrashed:"); + late final _sel_setSdkName_andVersionString_1 = + _registerName1("setSdkName:andVersionString:"); + late final _sel_setSdkName_1 = _registerName1("setSdkName:"); + late final _sel_getSdkName1 = _registerName1("getSdkName"); + late final _sel_getSdkVersionString1 = _registerName1("getSdkVersionString"); + late final _sel_getExtraContext1 = _registerName1("getExtraContext"); + late final _sel_startProfilerForTrace_1 = + _registerName1("startProfilerForTrace:"); + late final _sel_collectProfileBetween_and_forTrace_1 = + _registerName1("collectProfileBetween:and:forTrace:"); + ffi.Pointer _objc_msgSend_634( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer startSystemTime, + ffi.Pointer endSystemTime, + ffi.Pointer traceId, + ) { + return __objc_msgSend_634( + obj, + sel, + startSystemTime, + endSystemTime, + traceId, + ); + } + + late final __objc_msgSend_634Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_634 = __objc_msgSend_634Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_discardProfilerForTrace_1 = + _registerName1("discardProfilerForTrace:"); + void _objc_msgSend_635( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer traceId, + ) { + return __objc_msgSend_635( + obj, + sel, + traceId, + ); + } + + late final __objc_msgSend_635Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_635 = __objc_msgSend_635Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_SentryAppStartMeasurement1 = + _getClass1("SentryAppStartMeasurement"); + late final _sel_onAppStartMeasurementAvailable1 = + _registerName1("onAppStartMeasurementAvailable"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_636( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_636( + obj, + sel, + ); + } + + late final __objc_msgSend_636Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_636 = __objc_msgSend_636Ptr.asFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setOnAppStartMeasurementAvailable_1 = + _registerName1("setOnAppStartMeasurementAvailable:"); + void _objc_msgSend_637( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> value, + ) { + return __objc_msgSend_637( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_637Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_637 = __objc_msgSend_637Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_appStartMeasurement1 = _registerName1("appStartMeasurement"); + ffi.Pointer _objc_msgSend_638( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_638( + obj, + sel, + ); + } + + late final __objc_msgSend_638Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_638 = __objc_msgSend_638Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_installationID1 = _registerName1("installationID"); + late final _class_SentryOptions1 = _getClass1("SentryOptions"); + late final _sel_options1 = _registerName1("options"); + ffi.Pointer _objc_msgSend_639( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_639( + obj, + sel, + ); + } + + late final __objc_msgSend_639Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_639 = __objc_msgSend_639Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_appStartMeasurementHybridSDKMode1 = + _registerName1("appStartMeasurementHybridSDKMode"); + late final _sel_setAppStartMeasurementHybridSDKMode_1 = + _registerName1("setAppStartMeasurementHybridSDKMode:"); + void _objc_msgSend_640( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_640( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_640Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int)>>('objc_msgSend'); + late final __objc_msgSend_640 = __objc_msgSend_640Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _class_SentryUser1 = _getClass1("SentryUser"); + late final _sel_userWithDictionary_1 = _registerName1("userWithDictionary:"); + ffi.Pointer _objc_msgSend_641( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer dictionary, + ) { + return __objc_msgSend_641( + obj, + sel, + dictionary, + ); + } + + late final __objc_msgSend_641Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_641 = __objc_msgSend_641Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_SentryBreadcrumb1 = _getClass1("SentryBreadcrumb"); + late final _sel_breadcrumbWithDictionary_1 = + _registerName1("breadcrumbWithDictionary:"); + ffi.Pointer _objc_msgSend_642( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer dictionary, + ) { + return __objc_msgSend_642( + obj, + sel, + dictionary, + ); + } + + late final __objc_msgSend_642Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_642 = __objc_msgSend_642Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSItemProvider1 = _getClass1("NSItemProvider"); + late final _class_NSProgress1 = _getClass1("NSProgress"); + late final _sel_currentProgress1 = _registerName1("currentProgress"); + ffi.Pointer _objc_msgSend_643( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_643( + obj, + sel, + ); + } + + late final __objc_msgSend_643Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_643 = __objc_msgSend_643Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_progressWithTotalUnitCount_1 = + _registerName1("progressWithTotalUnitCount:"); + ffi.Pointer _objc_msgSend_644( + ffi.Pointer obj, + ffi.Pointer sel, + int unitCount, + ) { + return __objc_msgSend_644( + obj, + sel, + unitCount, + ); + } + + late final __objc_msgSend_644Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int64)>>('objc_msgSend'); + late final __objc_msgSend_644 = __objc_msgSend_644Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_discreteProgressWithTotalUnitCount_1 = + _registerName1("discreteProgressWithTotalUnitCount:"); + late final _sel_progressWithTotalUnitCount_parent_pendingUnitCount_1 = + _registerName1("progressWithTotalUnitCount:parent:pendingUnitCount:"); + ffi.Pointer _objc_msgSend_645( + ffi.Pointer obj, + ffi.Pointer sel, + int unitCount, + ffi.Pointer parent, + int portionOfParentTotalUnitCount, + ) { + return __objc_msgSend_645( + obj, + sel, + unitCount, + parent, + portionOfParentTotalUnitCount, + ); + } + + late final __objc_msgSend_645Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int64, + ffi.Pointer, + ffi.Int64)>>('objc_msgSend'); + late final __objc_msgSend_645 = __objc_msgSend_645Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer, int)>(); + + late final _sel_initWithParent_userInfo_1 = + _registerName1("initWithParent:userInfo:"); + instancetype _objc_msgSend_646( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer parentProgressOrNil, + ffi.Pointer userInfoOrNil, + ) { + return __objc_msgSend_646( + obj, + sel, + parentProgressOrNil, + userInfoOrNil, + ); + } + + late final __objc_msgSend_646Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_646 = __objc_msgSend_646Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_becomeCurrentWithPendingUnitCount_1 = + _registerName1("becomeCurrentWithPendingUnitCount:"); + void _objc_msgSend_647( + ffi.Pointer obj, + ffi.Pointer sel, + int unitCount, + ) { + return __objc_msgSend_647( + obj, + sel, + unitCount, + ); + } + + late final __objc_msgSend_647Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int64)>>('objc_msgSend'); + late final __objc_msgSend_647 = __objc_msgSend_647Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_performAsCurrentWithPendingUnitCount_usingBlock_1 = + _registerName1("performAsCurrentWithPendingUnitCount:usingBlock:"); + void _objc_msgSend_648( + ffi.Pointer obj, + ffi.Pointer sel, + int unitCount, + ffi.Pointer<_ObjCBlock> work, + ) { + return __objc_msgSend_648( + obj, + sel, + unitCount, + work, + ); + } + + late final __objc_msgSend_648Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int64, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_648 = __objc_msgSend_648Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_resignCurrent1 = _registerName1("resignCurrent"); + late final _sel_addChild_withPendingUnitCount_1 = + _registerName1("addChild:withPendingUnitCount:"); + void _objc_msgSend_649( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer child, + int inUnitCount, + ) { + return __objc_msgSend_649( + obj, + sel, + child, + inUnitCount, + ); + } + + late final __objc_msgSend_649Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int64)>>('objc_msgSend'); + late final __objc_msgSend_649 = __objc_msgSend_649Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_totalUnitCount1 = _registerName1("totalUnitCount"); + int _objc_msgSend_650( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_650( + obj, + sel, + ); + } + + late final __objc_msgSend_650Ptr = _lookup< + ffi.NativeFunction< + ffi.Int64 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_650 = __objc_msgSend_650Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setTotalUnitCount_1 = _registerName1("setTotalUnitCount:"); + void _objc_msgSend_651( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_651( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_651Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int64)>>('objc_msgSend'); + late final __objc_msgSend_651 = __objc_msgSend_651Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_completedUnitCount1 = _registerName1("completedUnitCount"); + late final _sel_setCompletedUnitCount_1 = + _registerName1("setCompletedUnitCount:"); + late final _sel_setLocalizedDescription_1 = + _registerName1("setLocalizedDescription:"); + late final _sel_localizedAdditionalDescription1 = + _registerName1("localizedAdditionalDescription"); + late final _sel_setLocalizedAdditionalDescription_1 = + _registerName1("setLocalizedAdditionalDescription:"); + late final _sel_isCancellable1 = _registerName1("isCancellable"); + late final _sel_setCancellable_1 = _registerName1("setCancellable:"); + late final _sel_isPausable1 = _registerName1("isPausable"); + late final _sel_setPausable_1 = _registerName1("setPausable:"); + late final _sel_isPaused1 = _registerName1("isPaused"); + late final _sel_cancellationHandler1 = _registerName1("cancellationHandler"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_652( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_652( + obj, + sel, + ); + } + + late final __objc_msgSend_652Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_652 = __objc_msgSend_652Ptr.asFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setCancellationHandler_1 = + _registerName1("setCancellationHandler:"); + void _objc_msgSend_653( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> value, + ) { + return __objc_msgSend_653( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_653Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_653 = __objc_msgSend_653Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_pausingHandler1 = _registerName1("pausingHandler"); + late final _sel_setPausingHandler_1 = _registerName1("setPausingHandler:"); + late final _sel_resumingHandler1 = _registerName1("resumingHandler"); + late final _sel_setResumingHandler_1 = _registerName1("setResumingHandler:"); + late final _sel_setUserInfoObject_forKey_1 = + _registerName1("setUserInfoObject:forKey:"); + late final _sel_isIndeterminate1 = _registerName1("isIndeterminate"); + late final _sel_fractionCompleted1 = _registerName1("fractionCompleted"); + late final _sel_pause1 = _registerName1("pause"); + late final _sel_resume1 = _registerName1("resume"); + late final _sel_kind1 = _registerName1("kind"); + late final _sel_setKind_1 = _registerName1("setKind:"); + late final _sel_estimatedTimeRemaining1 = + _registerName1("estimatedTimeRemaining"); + late final _sel_setEstimatedTimeRemaining_1 = + _registerName1("setEstimatedTimeRemaining:"); + void _objc_msgSend_654( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_654( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_654Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_654 = __objc_msgSend_654Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_throughput1 = _registerName1("throughput"); + late final _sel_setThroughput_1 = _registerName1("setThroughput:"); + late final _sel_fileOperationKind1 = _registerName1("fileOperationKind"); + late final _sel_setFileOperationKind_1 = + _registerName1("setFileOperationKind:"); + late final _sel_fileURL1 = _registerName1("fileURL"); + late final _sel_setFileURL_1 = _registerName1("setFileURL:"); + void _objc_msgSend_655( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_655( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_655Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_655 = __objc_msgSend_655Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_fileTotalCount1 = _registerName1("fileTotalCount"); + late final _sel_setFileTotalCount_1 = _registerName1("setFileTotalCount:"); + late final _sel_fileCompletedCount1 = _registerName1("fileCompletedCount"); + late final _sel_setFileCompletedCount_1 = + _registerName1("setFileCompletedCount:"); + late final _sel_publish1 = _registerName1("publish"); + late final _sel_unpublish1 = _registerName1("unpublish"); + late final _sel_addSubscriberForFileURL_withPublishingHandler_1 = + _registerName1("addSubscriberForFileURL:withPublishingHandler:"); + ffi.Pointer _objc_msgSend_656( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer<_ObjCBlock> publishingHandler, + ) { + return __objc_msgSend_656( + obj, + sel, + url, + publishingHandler, + ); + } + + late final __objc_msgSend_656Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_656 = __objc_msgSend_656Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_removeSubscriber_1 = _registerName1("removeSubscriber:"); + late final _sel_isOld1 = _registerName1("isOld"); + late final _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1 = + _registerName1( + "registerDataRepresentationForTypeIdentifier:visibility:loadHandler:"); + void _objc_msgSend_657( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer typeIdentifier, + int visibility, + ffi.Pointer<_ObjCBlock> loadHandler, + ) { + return __objc_msgSend_657( + obj, + sel, + typeIdentifier, + visibility, + loadHandler, + ); + } + + late final __objc_msgSend_657Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_657 = __objc_msgSend_657Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1 = + _registerName1( + "registerFileRepresentationForTypeIdentifier:fileOptions:visibility:loadHandler:"); + void _objc_msgSend_658( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer typeIdentifier, + int fileOptions, + int visibility, + ffi.Pointer<_ObjCBlock> loadHandler, + ) { + return __objc_msgSend_658( + obj, + sel, + typeIdentifier, + fileOptions, + visibility, + loadHandler, + ); + } + + late final __objc_msgSend_658Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_658 = __objc_msgSend_658Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_registeredTypeIdentifiers1 = + _registerName1("registeredTypeIdentifiers"); + late final _sel_registeredTypeIdentifiersWithFileOptions_1 = + _registerName1("registeredTypeIdentifiersWithFileOptions:"); + ffi.Pointer _objc_msgSend_659( + ffi.Pointer obj, + ffi.Pointer sel, + int fileOptions, + ) { + return __objc_msgSend_659( + obj, + sel, + fileOptions, + ); + } + + late final __objc_msgSend_659Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_659 = __objc_msgSend_659Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_hasItemConformingToTypeIdentifier_1 = + _registerName1("hasItemConformingToTypeIdentifier:"); + late final _sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1 = + _registerName1( + "hasRepresentationConformingToTypeIdentifier:fileOptions:"); + bool _objc_msgSend_660( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer typeIdentifier, + int fileOptions, + ) { + return __objc_msgSend_660( + obj, + sel, + typeIdentifier, + fileOptions, + ); + } + + late final __objc_msgSend_660Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_660 = __objc_msgSend_660Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_loadDataRepresentationForTypeIdentifier_completionHandler_1 = + _registerName1( + "loadDataRepresentationForTypeIdentifier:completionHandler:"); + ffi.Pointer _objc_msgSend_661( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer typeIdentifier, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_661( + obj, + sel, + typeIdentifier, + completionHandler, + ); + } + + late final __objc_msgSend_661Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_661 = __objc_msgSend_661Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_loadFileRepresentationForTypeIdentifier_completionHandler_1 = + _registerName1( + "loadFileRepresentationForTypeIdentifier:completionHandler:"); + ffi.Pointer _objc_msgSend_662( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer typeIdentifier, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_662( + obj, + sel, + typeIdentifier, + completionHandler, + ); + } + + late final __objc_msgSend_662Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_662 = __objc_msgSend_662Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1 = + _registerName1( + "loadInPlaceFileRepresentationForTypeIdentifier:completionHandler:"); + ffi.Pointer _objc_msgSend_663( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer typeIdentifier, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_663( + obj, + sel, + typeIdentifier, + completionHandler, + ); + } + + late final __objc_msgSend_663Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_663 = __objc_msgSend_663Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_suggestedName1 = _registerName1("suggestedName"); + late final _sel_setSuggestedName_1 = _registerName1("setSuggestedName:"); + late final _sel_registerObject_visibility_1 = + _registerName1("registerObject:visibility:"); + void _objc_msgSend_664( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer object, + int visibility, + ) { + return __objc_msgSend_664( + obj, + sel, + object, + visibility, + ); + } + + late final __objc_msgSend_664Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_664 = __objc_msgSend_664Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_registerObjectOfClass_visibility_loadHandler_1 = + _registerName1("registerObjectOfClass:visibility:loadHandler:"); + void _objc_msgSend_665( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aClass, + int visibility, + ffi.Pointer<_ObjCBlock> loadHandler, + ) { + return __objc_msgSend_665( + obj, + sel, + aClass, + visibility, + loadHandler, + ); + } + + late final __objc_msgSend_665Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_665 = __objc_msgSend_665Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_canLoadObjectOfClass_1 = + _registerName1("canLoadObjectOfClass:"); + late final _sel_loadObjectOfClass_completionHandler_1 = + _registerName1("loadObjectOfClass:completionHandler:"); + ffi.Pointer _objc_msgSend_666( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aClass, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_666( + obj, + sel, + aClass, + completionHandler, + ); + } + + late final __objc_msgSend_666Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_666 = __objc_msgSend_666Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_initWithItem_typeIdentifier_1 = + _registerName1("initWithItem:typeIdentifier:"); + late final _sel_registerItemForTypeIdentifier_loadHandler_1 = + _registerName1("registerItemForTypeIdentifier:loadHandler:"); + void _objc_msgSend_667( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer typeIdentifier, + ffi.Pointer<_ObjCBlock> loadHandler, + ) { + return __objc_msgSend_667( + obj, + sel, + typeIdentifier, + loadHandler, + ); + } + + late final __objc_msgSend_667Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_667 = __objc_msgSend_667Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_loadItemForTypeIdentifier_options_completionHandler_1 = + _registerName1("loadItemForTypeIdentifier:options:completionHandler:"); + void _objc_msgSend_668( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer typeIdentifier, + ffi.Pointer options, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_668( + obj, + sel, + typeIdentifier, + options, + completionHandler, + ); + } + + late final __objc_msgSend_668Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_668 = __objc_msgSend_668Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_previewImageHandler1 = _registerName1("previewImageHandler"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_669( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_669( + obj, + sel, + ); + } + + late final __objc_msgSend_669Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_669 = __objc_msgSend_669Ptr.asFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setPreviewImageHandler_1 = + _registerName1("setPreviewImageHandler:"); + void _objc_msgSend_670( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> value, + ) { + return __objc_msgSend_670( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_670Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_670 = __objc_msgSend_670Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_loadPreviewImageWithOptions_completionHandler_1 = + _registerName1("loadPreviewImageWithOptions:completionHandler:"); + void _objc_msgSend_671( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer options, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_671( + obj, + sel, + options, + completionHandler, + ); + } + + late final __objc_msgSend_671Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_671 = __objc_msgSend_671Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _class_NSMutableString1 = _getClass1("NSMutableString"); + late final _sel_replaceCharactersInRange_withString_1 = + _registerName1("replaceCharactersInRange:withString:"); + void _objc_msgSend_672( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer aString, + ) { + return __objc_msgSend_672( + obj, + sel, + range, + aString, + ); + } + + late final __objc_msgSend_672Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_672 = __objc_msgSend_672Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + ffi.Pointer)>(); + + late final _sel_insertString_atIndex_1 = + _registerName1("insertString:atIndex:"); + void _objc_msgSend_673( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aString, + int loc, + ) { + return __objc_msgSend_673( + obj, + sel, + aString, + loc, + ); + } + + late final __objc_msgSend_673Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_673 = __objc_msgSend_673Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_deleteCharactersInRange_1 = + _registerName1("deleteCharactersInRange:"); + late final _sel_appendString_1 = _registerName1("appendString:"); + late final _sel_appendFormat_1 = _registerName1("appendFormat:"); + late final _sel_setString_1 = _registerName1("setString:"); + late final _sel_replaceOccurrencesOfString_withString_options_range_1 = + _registerName1("replaceOccurrencesOfString:withString:options:range:"); + int _objc_msgSend_674( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer target, + ffi.Pointer replacement, + int options, + _NSRange searchRange, + ) { + return __objc_msgSend_674( + obj, + sel, + target, + replacement, + options, + searchRange, + ); + } + + late final __objc_msgSend_674Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_674 = __objc_msgSend_674Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, _NSRange)>(); + + late final _sel_applyTransform_reverse_range_updatedRange_1 = + _registerName1("applyTransform:reverse:range:updatedRange:"); + bool _objc_msgSend_675( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer transform, + bool reverse, + _NSRange range, + ffi.Pointer<_NSRange> resultingRange, + ) { + return __objc_msgSend_675( + obj, + sel, + transform, + reverse, + range, + resultingRange, + ); + } + + late final __objc_msgSend_675Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + _NSRange, + ffi.Pointer<_NSRange>)>>('objc_msgSend'); + late final __objc_msgSend_675 = __objc_msgSend_675Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool, _NSRange, ffi.Pointer<_NSRange>)>(); + + ffi.Pointer _objc_msgSend_676( + ffi.Pointer obj, + ffi.Pointer sel, + int capacity, + ) { + return __objc_msgSend_676( + obj, + sel, + capacity, + ); + } + + late final __objc_msgSend_676Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_676 = __objc_msgSend_676Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_stringWithCapacity_1 = _registerName1("stringWithCapacity:"); + late final _class_NSNotification1 = _getClass1("NSNotification"); + late final _sel_object1 = _registerName1("object"); + late final _sel_initWithName_object_userInfo_1 = + _registerName1("initWithName:object:userInfo:"); + instancetype _objc_msgSend_677( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer object, + ffi.Pointer userInfo, + ) { + return __objc_msgSend_677( + obj, + sel, + name, + object, + userInfo, + ); + } + + late final __objc_msgSend_677Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_677 = __objc_msgSend_677Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_notificationWithName_object_1 = + _registerName1("notificationWithName:object:"); + late final _sel_notificationWithName_object_userInfo_1 = + _registerName1("notificationWithName:object:userInfo:"); + late final _class_NSBundle1 = _getClass1("NSBundle"); + late final _sel_mainBundle1 = _registerName1("mainBundle"); + ffi.Pointer _objc_msgSend_678( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_678( + obj, + sel, + ); + } + + late final __objc_msgSend_678Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_678 = __objc_msgSend_678Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_bundleWithPath_1 = _registerName1("bundleWithPath:"); + late final _sel_initWithPath_1 = _registerName1("initWithPath:"); + late final _sel_bundleWithURL_1 = _registerName1("bundleWithURL:"); + late final _sel_initWithURL_1 = _registerName1("initWithURL:"); + late final _sel_bundleForClass_1 = _registerName1("bundleForClass:"); + ffi.Pointer _objc_msgSend_679( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aClass, + ) { + return __objc_msgSend_679( + obj, + sel, + aClass, + ); + } + + late final __objc_msgSend_679Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_679 = __objc_msgSend_679Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_bundleWithIdentifier_1 = + _registerName1("bundleWithIdentifier:"); + ffi.Pointer _objc_msgSend_680( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer identifier, + ) { + return __objc_msgSend_680( + obj, + sel, + identifier, + ); + } + + late final __objc_msgSend_680Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_680 = __objc_msgSend_680Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_allBundles1 = _registerName1("allBundles"); + late final _sel_allFrameworks1 = _registerName1("allFrameworks"); + late final _sel_isLoaded1 = _registerName1("isLoaded"); + late final _sel_unload1 = _registerName1("unload"); + late final _sel_preflightAndReturnError_1 = + _registerName1("preflightAndReturnError:"); + late final _sel_loadAndReturnError_1 = _registerName1("loadAndReturnError:"); + late final _sel_bundleURL1 = _registerName1("bundleURL"); + late final _sel_resourceURL1 = _registerName1("resourceURL"); + late final _sel_executableURL1 = _registerName1("executableURL"); + late final _sel_URLForAuxiliaryExecutable_1 = + _registerName1("URLForAuxiliaryExecutable:"); + late final _sel_privateFrameworksURL1 = + _registerName1("privateFrameworksURL"); + late final _sel_sharedFrameworksURL1 = _registerName1("sharedFrameworksURL"); + late final _sel_sharedSupportURL1 = _registerName1("sharedSupportURL"); + late final _sel_builtInPlugInsURL1 = _registerName1("builtInPlugInsURL"); + late final _sel_appStoreReceiptURL1 = _registerName1("appStoreReceiptURL"); + late final _sel_bundlePath1 = _registerName1("bundlePath"); + late final _sel_resourcePath1 = _registerName1("resourcePath"); + late final _sel_executablePath1 = _registerName1("executablePath"); + late final _sel_pathForAuxiliaryExecutable_1 = + _registerName1("pathForAuxiliaryExecutable:"); + late final _sel_privateFrameworksPath1 = + _registerName1("privateFrameworksPath"); + late final _sel_sharedFrameworksPath1 = + _registerName1("sharedFrameworksPath"); + late final _sel_sharedSupportPath1 = _registerName1("sharedSupportPath"); + late final _sel_builtInPlugInsPath1 = _registerName1("builtInPlugInsPath"); + late final _sel_URLForResource_withExtension_subdirectory_inBundleWithURL_1 = + _registerName1( + "URLForResource:withExtension:subdirectory:inBundleWithURL:"); + ffi.Pointer _objc_msgSend_681( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer ext, + ffi.Pointer subpath, + ffi.Pointer bundleURL, + ) { + return __objc_msgSend_681( + obj, + sel, + name, + ext, + subpath, + bundleURL, + ); + } + + late final __objc_msgSend_681Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_681 = __objc_msgSend_681Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_1 = + _registerName1( + "URLsForResourcesWithExtension:subdirectory:inBundleWithURL:"); + ffi.Pointer _objc_msgSend_682( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer ext, + ffi.Pointer subpath, + ffi.Pointer bundleURL, + ) { + return __objc_msgSend_682( + obj, + sel, + ext, + subpath, + bundleURL, + ); + } + + late final __objc_msgSend_682Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_682 = __objc_msgSend_682Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_URLForResource_withExtension_1 = + _registerName1("URLForResource:withExtension:"); + ffi.Pointer _objc_msgSend_683( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer ext, + ) { + return __objc_msgSend_683( + obj, + sel, + name, + ext, + ); + } + + late final __objc_msgSend_683Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_683 = __objc_msgSend_683Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_URLForResource_withExtension_subdirectory_1 = + _registerName1("URLForResource:withExtension:subdirectory:"); + ffi.Pointer _objc_msgSend_684( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer ext, + ffi.Pointer subpath, + ) { + return __objc_msgSend_684( + obj, + sel, + name, + ext, + subpath, + ); + } + + late final __objc_msgSend_684Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_684 = __objc_msgSend_684Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_URLForResource_withExtension_subdirectory_localization_1 = + _registerName1("URLForResource:withExtension:subdirectory:localization:"); + ffi.Pointer _objc_msgSend_685( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer ext, + ffi.Pointer subpath, + ffi.Pointer localizationName, + ) { + return __objc_msgSend_685( + obj, + sel, + name, + ext, + subpath, + localizationName, + ); + } + + late final __objc_msgSend_685Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_685 = __objc_msgSend_685Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_URLsForResourcesWithExtension_subdirectory_1 = + _registerName1("URLsForResourcesWithExtension:subdirectory:"); + ffi.Pointer _objc_msgSend_686( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer ext, + ffi.Pointer subpath, + ) { + return __objc_msgSend_686( + obj, + sel, + ext, + subpath, + ); + } + + late final __objc_msgSend_686Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_686 = __objc_msgSend_686Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_URLsForResourcesWithExtension_subdirectory_localization_1 = + _registerName1( + "URLsForResourcesWithExtension:subdirectory:localization:"); + ffi.Pointer _objc_msgSend_687( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer ext, + ffi.Pointer subpath, + ffi.Pointer localizationName, + ) { + return __objc_msgSend_687( + obj, + sel, + ext, + subpath, + localizationName, + ); + } + + late final __objc_msgSend_687Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_687 = __objc_msgSend_687Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_pathForResource_ofType_inDirectory_1 = + _registerName1("pathForResource:ofType:inDirectory:"); + ffi.Pointer _objc_msgSend_688( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer ext, + ffi.Pointer bundlePath, + ) { + return __objc_msgSend_688( + obj, + sel, + name, + ext, + bundlePath, + ); + } + + late final __objc_msgSend_688Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_688 = __objc_msgSend_688Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_pathsForResourcesOfType_inDirectory_1 = + _registerName1("pathsForResourcesOfType:inDirectory:"); + late final _sel_pathForResource_ofType_1 = + _registerName1("pathForResource:ofType:"); + late final _sel_pathForResource_ofType_inDirectory_forLocalization_1 = + _registerName1("pathForResource:ofType:inDirectory:forLocalization:"); + ffi.Pointer _objc_msgSend_689( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer ext, + ffi.Pointer subpath, + ffi.Pointer localizationName, + ) { + return __objc_msgSend_689( + obj, + sel, + name, + ext, + subpath, + localizationName, + ); + } + + late final __objc_msgSend_689Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_689 = __objc_msgSend_689Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_pathsForResourcesOfType_inDirectory_forLocalization_1 = + _registerName1("pathsForResourcesOfType:inDirectory:forLocalization:"); + late final _sel_localizedStringForKey_value_table_1 = + _registerName1("localizedStringForKey:value:table:"); + late final _class_NSAttributedString1 = _getClass1("NSAttributedString"); + late final _sel_attributesAtIndex_effectiveRange_1 = + _registerName1("attributesAtIndex:effectiveRange:"); + ffi.Pointer _objc_msgSend_690( + ffi.Pointer obj, + ffi.Pointer sel, + int location, + ffi.Pointer<_NSRange> range, + ) { + return __objc_msgSend_690( + obj, + sel, + location, + range, + ); + } + + late final __objc_msgSend_690Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>)>>('objc_msgSend'); + late final __objc_msgSend_690 = __objc_msgSend_690Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_NSRange>)>(); + + late final _sel_attribute_atIndex_effectiveRange_1 = + _registerName1("attribute:atIndex:effectiveRange:"); + ffi.Pointer _objc_msgSend_691( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer attrName, + int location, + ffi.Pointer<_NSRange> range, + ) { + return __objc_msgSend_691( + obj, + sel, + attrName, + location, + range, + ); + } + + late final __objc_msgSend_691Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>)>>('objc_msgSend'); + late final __objc_msgSend_691 = __objc_msgSend_691Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_NSRange>)>(); + + late final _sel_attributedSubstringFromRange_1 = + _registerName1("attributedSubstringFromRange:"); + ffi.Pointer _objc_msgSend_692( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ) { + return __objc_msgSend_692( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_692Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_692 = __objc_msgSend_692Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _sel_attributesAtIndex_longestEffectiveRange_inRange_1 = + _registerName1("attributesAtIndex:longestEffectiveRange:inRange:"); + ffi.Pointer _objc_msgSend_693( + ffi.Pointer obj, + ffi.Pointer sel, + int location, + ffi.Pointer<_NSRange> range, + _NSRange rangeLimit, + ) { + return __objc_msgSend_693( + obj, + sel, + location, + range, + rangeLimit, + ); + } + + late final __objc_msgSend_693Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_693 = __objc_msgSend_693Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_NSRange>, _NSRange)>(); + + late final _sel_attribute_atIndex_longestEffectiveRange_inRange_1 = + _registerName1("attribute:atIndex:longestEffectiveRange:inRange:"); + ffi.Pointer _objc_msgSend_694( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer attrName, + int location, + ffi.Pointer<_NSRange> range, + _NSRange rangeLimit, + ) { + return __objc_msgSend_694( + obj, + sel, + attrName, + location, + range, + rangeLimit, + ); + } + + late final __objc_msgSend_694Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_694 = __objc_msgSend_694Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_NSRange>, + _NSRange)>(); + + late final _sel_isEqualToAttributedString_1 = + _registerName1("isEqualToAttributedString:"); + bool _objc_msgSend_695( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer other, + ) { + return __objc_msgSend_695( + obj, + sel, + other, + ); + } + + late final __objc_msgSend_695Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_695 = __objc_msgSend_695Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithString_attributes_1 = + _registerName1("initWithString:attributes:"); + late final _sel_initWithAttributedString_1 = + _registerName1("initWithAttributedString:"); + instancetype _objc_msgSend_696( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer attrStr, + ) { + return __objc_msgSend_696( + obj, + sel, + attrStr, + ); + } + + late final __objc_msgSend_696Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_696 = __objc_msgSend_696Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_enumerateAttributesInRange_options_usingBlock_1 = + _registerName1("enumerateAttributesInRange:options:usingBlock:"); + void _objc_msgSend_697( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange enumerationRange, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_697( + obj, + sel, + enumerationRange, + opts, + block, + ); + } + + late final __objc_msgSend_697Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_697 = __objc_msgSend_697Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + int, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_enumerateAttribute_inRange_options_usingBlock_1 = + _registerName1("enumerateAttribute:inRange:options:usingBlock:"); + void _objc_msgSend_698( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer attrName, + _NSRange enumerationRange, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_698( + obj, + sel, + attrName, + enumerationRange, + opts, + block, + ); + } + + late final __objc_msgSend_698Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_698 = __objc_msgSend_698Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange, int, ffi.Pointer<_ObjCBlock>)>(); + + late final _class_NSAttributedStringMarkdownParsingOptions1 = + _getClass1("NSAttributedStringMarkdownParsingOptions"); + late final _sel_allowsExtendedAttributes1 = + _registerName1("allowsExtendedAttributes"); + late final _sel_setAllowsExtendedAttributes_1 = + _registerName1("setAllowsExtendedAttributes:"); + late final _sel_interpretedSyntax1 = _registerName1("interpretedSyntax"); + int _objc_msgSend_699( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_699( + obj, + sel, + ); + } + + late final __objc_msgSend_699Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_699 = __objc_msgSend_699Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setInterpretedSyntax_1 = + _registerName1("setInterpretedSyntax:"); + void _objc_msgSend_700( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_700( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_700Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_700 = __objc_msgSend_700Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_failurePolicy1 = _registerName1("failurePolicy"); + int _objc_msgSend_701( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_701( + obj, + sel, + ); + } + + late final __objc_msgSend_701Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_701 = __objc_msgSend_701Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setFailurePolicy_1 = _registerName1("setFailurePolicy:"); + void _objc_msgSend_702( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_702( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_702Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_702 = __objc_msgSend_702Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_setLanguageCode_1 = _registerName1("setLanguageCode:"); + late final _sel_appliesSourcePositionAttributes1 = + _registerName1("appliesSourcePositionAttributes"); + late final _sel_setAppliesSourcePositionAttributes_1 = + _registerName1("setAppliesSourcePositionAttributes:"); + late final _sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1 = + _registerName1( + "initWithContentsOfMarkdownFileAtURL:options:baseURL:error:"); + instancetype _objc_msgSend_703( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer markdownFile, + ffi.Pointer options, + ffi.Pointer baseURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_703( + obj, + sel, + markdownFile, + options, + baseURL, + error, + ); + } + + late final __objc_msgSend_703Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_703 = __objc_msgSend_703Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithMarkdown_options_baseURL_error_1 = + _registerName1("initWithMarkdown:options:baseURL:error:"); + instancetype _objc_msgSend_704( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer markdown, + ffi.Pointer options, + ffi.Pointer baseURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_704( + obj, + sel, + markdown, + options, + baseURL, + error, + ); + } + + late final __objc_msgSend_704Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_704 = __objc_msgSend_704Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithMarkdownString_options_baseURL_error_1 = + _registerName1("initWithMarkdownString:options:baseURL:error:"); + instancetype _objc_msgSend_705( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer markdownString, + ffi.Pointer options, + ffi.Pointer baseURL, + ffi.Pointer> error, + ) { + return __objc_msgSend_705( + obj, + sel, + markdownString, + options, + baseURL, + error, + ); + } + + late final __objc_msgSend_705Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_705 = __objc_msgSend_705Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_initWithFormat_options_locale_1 = + _registerName1("initWithFormat:options:locale:"); + instancetype _objc_msgSend_706( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + int options, + ffi.Pointer locale, + ) { + return __objc_msgSend_706( + obj, + sel, + format, + options, + locale, + ); + } + + late final __objc_msgSend_706Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_706 = __objc_msgSend_706Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_initWithFormat_options_locale_arguments_1 = + _registerName1("initWithFormat:options:locale:arguments:"); + instancetype _objc_msgSend_707( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + int options, + ffi.Pointer locale, + ffi.Pointer arguments, + ) { + return __objc_msgSend_707( + obj, + sel, + format, + options, + locale, + arguments, + ); + } + + late final __objc_msgSend_707Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_707 = __objc_msgSend_707Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_localizedAttributedStringWithFormat_1 = + _registerName1("localizedAttributedStringWithFormat:"); + late final _sel_localizedAttributedStringWithFormat_options_1 = + _registerName1("localizedAttributedStringWithFormat:options:"); + instancetype _objc_msgSend_708( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer format, + int options, + ) { + return __objc_msgSend_708( + obj, + sel, + format, + options, + ); + } + + late final __objc_msgSend_708Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_708 = __objc_msgSend_708Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_attributedStringByInflectingString1 = + _registerName1("attributedStringByInflectingString"); + ffi.Pointer _objc_msgSend_709( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_709( + obj, + sel, + ); + } + + late final __objc_msgSend_709Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_709 = __objc_msgSend_709Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_localizedAttributedStringForKey_value_table_1 = + _registerName1("localizedAttributedStringForKey:value:table:"); + ffi.Pointer _objc_msgSend_710( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ffi.Pointer value, + ffi.Pointer tableName, + ) { + return __objc_msgSend_710( + obj, + sel, + key, + value, + tableName, + ); + } + + late final __objc_msgSend_710Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_710 = __objc_msgSend_710Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_bundleIdentifier1 = _registerName1("bundleIdentifier"); + late final _sel_infoDictionary1 = _registerName1("infoDictionary"); + late final _sel_localizedInfoDictionary1 = + _registerName1("localizedInfoDictionary"); + late final _sel_objectForInfoDictionaryKey_1 = + _registerName1("objectForInfoDictionaryKey:"); + late final _sel_classNamed_1 = _registerName1("classNamed:"); + late final _sel_principalClass1 = _registerName1("principalClass"); + late final _sel_preferredLocalizations1 = + _registerName1("preferredLocalizations"); + late final _sel_localizations1 = _registerName1("localizations"); + late final _sel_developmentLocalization1 = + _registerName1("developmentLocalization"); + late final _sel_preferredLocalizationsFromArray_1 = + _registerName1("preferredLocalizationsFromArray:"); + late final _sel_preferredLocalizationsFromArray_forPreferences_1 = + _registerName1("preferredLocalizationsFromArray:forPreferences:"); + ffi.Pointer _objc_msgSend_711( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer localizationsArray, + ffi.Pointer preferencesArray, + ) { + return __objc_msgSend_711( + obj, + sel, + localizationsArray, + preferencesArray, + ); + } + + late final __objc_msgSend_711Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_711 = __objc_msgSend_711Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_executableArchitectures1 = + _registerName1("executableArchitectures"); + late final _sel_setPreservationPriority_forTags_1 = + _registerName1("setPreservationPriority:forTags:"); + void _objc_msgSend_712( + ffi.Pointer obj, + ffi.Pointer sel, + double priority, + ffi.Pointer tags, + ) { + return __objc_msgSend_712( + obj, + sel, + priority, + tags, + ); + } + + late final __objc_msgSend_712Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Double, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_712 = __objc_msgSend_712Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, double, + ffi.Pointer)>(); + + late final _sel_preservationPriorityForTag_1 = + _registerName1("preservationPriorityForTag:"); + late final _class_NSMutableAttributedString1 = + _getClass1("NSMutableAttributedString"); + late final _sel_setAttributes_range_1 = + _registerName1("setAttributes:range:"); + void _objc_msgSend_713( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer attrs, + _NSRange range, + ) { + return __objc_msgSend_713( + obj, + sel, + attrs, + range, + ); + } + + late final __objc_msgSend_713Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_713 = __objc_msgSend_713Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>(); + + late final _sel_mutableString1 = _registerName1("mutableString"); + ffi.Pointer _objc_msgSend_714( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_714( + obj, + sel, + ); + } + + late final __objc_msgSend_714Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_714 = __objc_msgSend_714Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_addAttribute_value_range_1 = + _registerName1("addAttribute:value:range:"); + void _objc_msgSend_715( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer value, + _NSRange range, + ) { + return __objc_msgSend_715( + obj, + sel, + name, + value, + range, + ); + } + + late final __objc_msgSend_715Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_715 = __objc_msgSend_715Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _sel_addAttributes_range_1 = + _registerName1("addAttributes:range:"); + late final _sel_removeAttribute_range_1 = + _registerName1("removeAttribute:range:"); + void _objc_msgSend_716( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + _NSRange range, + ) { + return __objc_msgSend_716( + obj, + sel, + name, + range, + ); + } + + late final __objc_msgSend_716Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_716 = __objc_msgSend_716Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>(); + + late final _sel_replaceCharactersInRange_withAttributedString_1 = + _registerName1("replaceCharactersInRange:withAttributedString:"); + void _objc_msgSend_717( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer attrString, + ) { + return __objc_msgSend_717( + obj, + sel, + range, + attrString, + ); + } + + late final __objc_msgSend_717Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_717 = __objc_msgSend_717Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + ffi.Pointer)>(); + + late final _sel_insertAttributedString_atIndex_1 = + _registerName1("insertAttributedString:atIndex:"); + void _objc_msgSend_718( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer attrString, + int loc, + ) { + return __objc_msgSend_718( + obj, + sel, + attrString, + loc, + ); + } + + late final __objc_msgSend_718Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_718 = __objc_msgSend_718Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_appendAttributedString_1 = + _registerName1("appendAttributedString:"); + void _objc_msgSend_719( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer attrString, + ) { + return __objc_msgSend_719( + obj, + sel, + attrString, + ); + } + + late final __objc_msgSend_719Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_719 = __objc_msgSend_719Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setAttributedString_1 = + _registerName1("setAttributedString:"); + late final _sel_beginEditing1 = _registerName1("beginEditing"); + late final _sel_endEditing1 = _registerName1("endEditing"); + late final _sel_appendLocalizedFormat_1 = + _registerName1("appendLocalizedFormat:"); + late final _class_NSDateFormatter1 = _getClass1("NSDateFormatter"); + late final _class_NSFormatter1 = _getClass1("NSFormatter"); + late final _sel_stringForObjectValue_1 = + _registerName1("stringForObjectValue:"); + late final _sel_attributedStringForObjectValue_withDefaultAttributes_1 = + _registerName1("attributedStringForObjectValue:withDefaultAttributes:"); + ffi.Pointer _objc_msgSend_720( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer obj1, + ffi.Pointer attrs, + ) { + return __objc_msgSend_720( + obj, + sel, + obj1, + attrs, + ); + } + + late final __objc_msgSend_720Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_720 = __objc_msgSend_720Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_editingStringForObjectValue_1 = + _registerName1("editingStringForObjectValue:"); + late final _sel_getObjectValue_forString_errorDescription_1 = + _registerName1("getObjectValue:forString:errorDescription:"); + bool _objc_msgSend_721( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> obj1, + ffi.Pointer string, + ffi.Pointer> error, + ) { + return __objc_msgSend_721( + obj, + sel, + obj1, + string, + error, + ); + } + + late final __objc_msgSend_721Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_721 = __objc_msgSend_721Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_isPartialStringValid_newEditingString_errorDescription_1 = + _registerName1("isPartialStringValid:newEditingString:errorDescription:"); + bool _objc_msgSend_722( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer partialString, + ffi.Pointer> newString, + ffi.Pointer> error, + ) { + return __objc_msgSend_722( + obj, + sel, + partialString, + newString, + error, + ); + } + + late final __objc_msgSend_722Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_722 = __objc_msgSend_722Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); + + late final _sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_1 = + _registerName1( + "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:"); + bool _objc_msgSend_723( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> partialStringPtr, + ffi.Pointer<_NSRange> proposedSelRangePtr, + ffi.Pointer origString, + _NSRange origSelRange, + ffi.Pointer> error, + ) { + return __objc_msgSend_723( + obj, + sel, + partialStringPtr, + proposedSelRangePtr, + origString, + origSelRange, + error, + ); + } + + late final __objc_msgSend_723Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer<_NSRange>, + ffi.Pointer, + _NSRange, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_723 = __objc_msgSend_723Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer<_NSRange>, + ffi.Pointer, + _NSRange, + ffi.Pointer>)>(); + + late final _sel_formattingContext1 = _registerName1("formattingContext"); + int _objc_msgSend_724( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_724( + obj, + sel, + ); + } + + late final __objc_msgSend_724Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_724 = __objc_msgSend_724Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setFormattingContext_1 = + _registerName1("setFormattingContext:"); + void _objc_msgSend_725( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_725( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_725Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_725 = __objc_msgSend_725Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_getObjectValue_forString_range_error_1 = + _registerName1("getObjectValue:forString:range:error:"); + bool _objc_msgSend_726( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> obj1, + ffi.Pointer string, + ffi.Pointer<_NSRange> rangep, + ffi.Pointer> error, + ) { + return __objc_msgSend_726( + obj, + sel, + obj1, + string, + rangep, + error, + ); + } + + late final __objc_msgSend_726Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_726 = __objc_msgSend_726Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.Pointer>)>(); + + late final _sel_stringFromDate_1 = _registerName1("stringFromDate:"); + late final _sel_dateFromString_1 = _registerName1("dateFromString:"); + late final _sel_localizedStringFromDate_dateStyle_timeStyle_1 = + _registerName1("localizedStringFromDate:dateStyle:timeStyle:"); + ffi.Pointer _objc_msgSend_727( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date, + int dstyle, + int tstyle, + ) { + return __objc_msgSend_727( + obj, + sel, + date, + dstyle, + tstyle, + ); + } + + late final __objc_msgSend_727Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_727 = __objc_msgSend_727Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, int)>(); + + late final _sel_dateFormatFromTemplate_options_locale_1 = + _registerName1("dateFormatFromTemplate:options:locale:"); + ffi.Pointer _objc_msgSend_728( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer tmplate, + int opts, + ffi.Pointer locale, + ) { + return __objc_msgSend_728( + obj, + sel, + tmplate, + opts, + locale, + ); + } + + late final __objc_msgSend_728Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_728 = __objc_msgSend_728Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + + late final _sel_defaultFormatterBehavior1 = + _registerName1("defaultFormatterBehavior"); + int _objc_msgSend_729( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_729( + obj, + sel, + ); + } + + late final __objc_msgSend_729Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_729 = __objc_msgSend_729Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setDefaultFormatterBehavior_1 = + _registerName1("setDefaultFormatterBehavior:"); + void _objc_msgSend_730( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_730( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_730Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_730 = __objc_msgSend_730Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_setLocalizedDateFormatFromTemplate_1 = + _registerName1("setLocalizedDateFormatFromTemplate:"); + late final _sel_dateFormat1 = _registerName1("dateFormat"); + late final _sel_setDateFormat_1 = _registerName1("setDateFormat:"); + late final _sel_dateStyle1 = _registerName1("dateStyle"); + int _objc_msgSend_731( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_731( + obj, + sel, + ); + } + + late final __objc_msgSend_731Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_731 = __objc_msgSend_731Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setDateStyle_1 = _registerName1("setDateStyle:"); + void _objc_msgSend_732( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_732( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_732Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_732 = __objc_msgSend_732Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_timeStyle1 = _registerName1("timeStyle"); + late final _sel_setTimeStyle_1 = _registerName1("setTimeStyle:"); + late final _sel_locale1 = _registerName1("locale"); + late final _sel_setLocale_1 = _registerName1("setLocale:"); + void _objc_msgSend_733( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_733( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_733Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_733 = __objc_msgSend_733Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_generatesCalendarDates1 = + _registerName1("generatesCalendarDates"); + late final _sel_setGeneratesCalendarDates_1 = + _registerName1("setGeneratesCalendarDates:"); + late final _sel_formatterBehavior1 = _registerName1("formatterBehavior"); + late final _sel_setFormatterBehavior_1 = + _registerName1("setFormatterBehavior:"); + late final _class_NSCalendar1 = _getClass1("NSCalendar"); + late final _sel_currentCalendar1 = _registerName1("currentCalendar"); + ffi.Pointer _objc_msgSend_734( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_734( + obj, + sel, + ); + } + + late final __objc_msgSend_734Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_734 = __objc_msgSend_734Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_autoupdatingCurrentCalendar1 = + _registerName1("autoupdatingCurrentCalendar"); + late final _sel_calendarWithIdentifier_1 = + _registerName1("calendarWithIdentifier:"); + ffi.Pointer _objc_msgSend_735( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer calendarIdentifierConstant, + ) { + return __objc_msgSend_735( + obj, + sel, + calendarIdentifierConstant, + ); + } + + late final __objc_msgSend_735Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_735 = __objc_msgSend_735Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithCalendarIdentifier_1 = + _registerName1("initWithCalendarIdentifier:"); + late final _sel_firstWeekday1 = _registerName1("firstWeekday"); + late final _sel_setFirstWeekday_1 = _registerName1("setFirstWeekday:"); + late final _sel_minimumDaysInFirstWeek1 = + _registerName1("minimumDaysInFirstWeek"); + late final _sel_setMinimumDaysInFirstWeek_1 = + _registerName1("setMinimumDaysInFirstWeek:"); + late final _sel_eraSymbols1 = _registerName1("eraSymbols"); + late final _sel_longEraSymbols1 = _registerName1("longEraSymbols"); + late final _sel_monthSymbols1 = _registerName1("monthSymbols"); + late final _sel_shortMonthSymbols1 = _registerName1("shortMonthSymbols"); + late final _sel_veryShortMonthSymbols1 = + _registerName1("veryShortMonthSymbols"); + late final _sel_standaloneMonthSymbols1 = + _registerName1("standaloneMonthSymbols"); + late final _sel_shortStandaloneMonthSymbols1 = + _registerName1("shortStandaloneMonthSymbols"); + late final _sel_veryShortStandaloneMonthSymbols1 = + _registerName1("veryShortStandaloneMonthSymbols"); + late final _sel_weekdaySymbols1 = _registerName1("weekdaySymbols"); + late final _sel_shortWeekdaySymbols1 = _registerName1("shortWeekdaySymbols"); + late final _sel_veryShortWeekdaySymbols1 = + _registerName1("veryShortWeekdaySymbols"); + late final _sel_standaloneWeekdaySymbols1 = + _registerName1("standaloneWeekdaySymbols"); + late final _sel_shortStandaloneWeekdaySymbols1 = + _registerName1("shortStandaloneWeekdaySymbols"); + late final _sel_veryShortStandaloneWeekdaySymbols1 = + _registerName1("veryShortStandaloneWeekdaySymbols"); + late final _sel_quarterSymbols1 = _registerName1("quarterSymbols"); + late final _sel_shortQuarterSymbols1 = _registerName1("shortQuarterSymbols"); + late final _sel_standaloneQuarterSymbols1 = + _registerName1("standaloneQuarterSymbols"); + late final _sel_shortStandaloneQuarterSymbols1 = + _registerName1("shortStandaloneQuarterSymbols"); + late final _sel_AMSymbol1 = _registerName1("AMSymbol"); + late final _sel_PMSymbol1 = _registerName1("PMSymbol"); + late final _sel_minimumRangeOfUnit_1 = _registerName1("minimumRangeOfUnit:"); + void _objc_msgSend_736( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + int unit, + ) { + return __objc_msgSend_736( + stret, + obj, + sel, + unit, + ); + } + + late final __objc_msgSend_736Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend_stret'); + late final __objc_msgSend_736 = __objc_msgSend_736Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_maximumRangeOfUnit_1 = _registerName1("maximumRangeOfUnit:"); + late final _sel_rangeOfUnit_inUnit_forDate_1 = + _registerName1("rangeOfUnit:inUnit:forDate:"); + void _objc_msgSend_737( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + int smaller, + int larger, + ffi.Pointer date, + ) { + return __objc_msgSend_737( + stret, + obj, + sel, + smaller, + larger, + date, + ); + } + + late final __objc_msgSend_737Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_737 = __objc_msgSend_737Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, int, int, ffi.Pointer)>(); + + late final _sel_ordinalityOfUnit_inUnit_forDate_1 = + _registerName1("ordinalityOfUnit:inUnit:forDate:"); + int _objc_msgSend_738( + ffi.Pointer obj, + ffi.Pointer sel, + int smaller, + int larger, + ffi.Pointer date, + ) { + return __objc_msgSend_738( + obj, + sel, + smaller, + larger, + date, + ); + } + + late final __objc_msgSend_738Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_738 = __objc_msgSend_738Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, int, int, + ffi.Pointer)>(); + + late final _sel_rangeOfUnit_startDate_interval_forDate_1 = + _registerName1("rangeOfUnit:startDate:interval:forDate:"); + bool _objc_msgSend_739( + ffi.Pointer obj, + ffi.Pointer sel, + int unit, + ffi.Pointer> datep, + ffi.Pointer tip, + ffi.Pointer date, + ) { + return __objc_msgSend_739( + obj, + sel, + unit, + datep, + tip, + date, + ); + } + + late final __objc_msgSend_739Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_739 = __objc_msgSend_739Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSDateComponents1 = _getClass1("NSDateComponents"); + late final _sel_calendar1 = _registerName1("calendar"); + late final _sel_setCalendar_1 = _registerName1("setCalendar:"); + void _objc_msgSend_740( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_740( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_740Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_740 = __objc_msgSend_740Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_era1 = _registerName1("era"); + late final _sel_setEra_1 = _registerName1("setEra:"); + late final _sel_year1 = _registerName1("year"); + late final _sel_setYear_1 = _registerName1("setYear:"); + late final _sel_month1 = _registerName1("month"); + late final _sel_setMonth_1 = _registerName1("setMonth:"); + late final _sel_day1 = _registerName1("day"); + late final _sel_setDay_1 = _registerName1("setDay:"); + late final _sel_hour1 = _registerName1("hour"); + late final _sel_setHour_1 = _registerName1("setHour:"); + late final _sel_minute1 = _registerName1("minute"); + late final _sel_setMinute_1 = _registerName1("setMinute:"); + late final _sel_second1 = _registerName1("second"); + late final _sel_setSecond_1 = _registerName1("setSecond:"); + late final _sel_nanosecond1 = _registerName1("nanosecond"); + late final _sel_setNanosecond_1 = _registerName1("setNanosecond:"); + late final _sel_weekday1 = _registerName1("weekday"); + late final _sel_setWeekday_1 = _registerName1("setWeekday:"); + late final _sel_weekdayOrdinal1 = _registerName1("weekdayOrdinal"); + late final _sel_setWeekdayOrdinal_1 = _registerName1("setWeekdayOrdinal:"); + late final _sel_quarter1 = _registerName1("quarter"); + late final _sel_setQuarter_1 = _registerName1("setQuarter:"); + late final _sel_weekOfMonth1 = _registerName1("weekOfMonth"); + late final _sel_setWeekOfMonth_1 = _registerName1("setWeekOfMonth:"); + late final _sel_weekOfYear1 = _registerName1("weekOfYear"); + late final _sel_setWeekOfYear_1 = _registerName1("setWeekOfYear:"); + late final _sel_yearForWeekOfYear1 = _registerName1("yearForWeekOfYear"); + late final _sel_setYearForWeekOfYear_1 = + _registerName1("setYearForWeekOfYear:"); + late final _sel_isLeapMonth1 = _registerName1("isLeapMonth"); + late final _sel_setLeapMonth_1 = _registerName1("setLeapMonth:"); + late final _sel_week1 = _registerName1("week"); + late final _sel_setWeek_1 = _registerName1("setWeek:"); + late final _sel_setValue_forComponent_1 = + _registerName1("setValue:forComponent:"); + void _objc_msgSend_741( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + int unit, + ) { + return __objc_msgSend_741( + obj, + sel, + value, + unit, + ); + } + + late final __objc_msgSend_741Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Long, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_741 = __objc_msgSend_741Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, int)>(); + + late final _sel_valueForComponent_1 = _registerName1("valueForComponent:"); + int _objc_msgSend_742( + ffi.Pointer obj, + ffi.Pointer sel, + int unit, + ) { + return __objc_msgSend_742( + obj, + sel, + unit, + ); + } + + late final __objc_msgSend_742Ptr = _lookup< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_742 = __objc_msgSend_742Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_isValidDate1 = _registerName1("isValidDate"); + late final _sel_isValidDateInCalendar_1 = + _registerName1("isValidDateInCalendar:"); + bool _objc_msgSend_743( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer calendar, + ) { + return __objc_msgSend_743( + obj, + sel, + calendar, + ); + } + + late final __objc_msgSend_743Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_743 = __objc_msgSend_743Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_dateFromComponents_1 = _registerName1("dateFromComponents:"); + ffi.Pointer _objc_msgSend_744( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer comps, + ) { + return __objc_msgSend_744( + obj, + sel, + comps, + ); + } + + late final __objc_msgSend_744Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_744 = __objc_msgSend_744Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_components_fromDate_1 = + _registerName1("components:fromDate:"); + ffi.Pointer _objc_msgSend_745( + ffi.Pointer obj, + ffi.Pointer sel, + int unitFlags, + ffi.Pointer date, + ) { + return __objc_msgSend_745( + obj, + sel, + unitFlags, + date, + ); + } + + late final __objc_msgSend_745Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_745 = __objc_msgSend_745Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_dateByAddingComponents_toDate_options_1 = + _registerName1("dateByAddingComponents:toDate:options:"); + ffi.Pointer _objc_msgSend_746( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer comps, + ffi.Pointer date, + int opts, + ) { + return __objc_msgSend_746( + obj, + sel, + comps, + date, + opts, + ); + } + + late final __objc_msgSend_746Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_746 = __objc_msgSend_746Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); + + late final _sel_components_fromDate_toDate_options_1 = + _registerName1("components:fromDate:toDate:options:"); + ffi.Pointer _objc_msgSend_747( + ffi.Pointer obj, + ffi.Pointer sel, + int unitFlags, + ffi.Pointer startingDate, + ffi.Pointer resultDate, + int opts, + ) { + return __objc_msgSend_747( + obj, + sel, + unitFlags, + startingDate, + resultDate, + opts, + ); + } + + late final __objc_msgSend_747Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_747 = __objc_msgSend_747Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + int)>(); + + late final _sel_getEra_year_month_day_fromDate_1 = + _registerName1("getEra:year:month:day:fromDate:"); + void _objc_msgSend_748( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer eraValuePointer, + ffi.Pointer yearValuePointer, + ffi.Pointer monthValuePointer, + ffi.Pointer dayValuePointer, + ffi.Pointer date, + ) { + return __objc_msgSend_748( + obj, + sel, + eraValuePointer, + yearValuePointer, + monthValuePointer, + dayValuePointer, + date, + ); + } + + late final __objc_msgSend_748Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_748 = __objc_msgSend_748Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_1 = + _registerName1("getEra:yearForWeekOfYear:weekOfYear:weekday:fromDate:"); + late final _sel_getHour_minute_second_nanosecond_fromDate_1 = + _registerName1("getHour:minute:second:nanosecond:fromDate:"); + late final _sel_component_fromDate_1 = _registerName1("component:fromDate:"); + int _objc_msgSend_749( + ffi.Pointer obj, + ffi.Pointer sel, + int unit, + ffi.Pointer date, + ) { + return __objc_msgSend_749( + obj, + sel, + unit, + date, + ); + } + + late final __objc_msgSend_749Ptr = _lookup< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_749 = __objc_msgSend_749Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); + + late final _sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_1 = + _registerName1( + "dateWithEra:year:month:day:hour:minute:second:nanosecond:"); + ffi.Pointer _objc_msgSend_750( + ffi.Pointer obj, + ffi.Pointer sel, + int eraValue, + int yearValue, + int monthValue, + int dayValue, + int hourValue, + int minuteValue, + int secondValue, + int nanosecondValue, + ) { + return __objc_msgSend_750( + obj, + sel, + eraValue, + yearValue, + monthValue, + dayValue, + hourValue, + minuteValue, + secondValue, + nanosecondValue, + ); + } + + late final __objc_msgSend_750Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_750 = __objc_msgSend_750Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, int, int, int, int, int, int, int)>(); + + late final _sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_1 = + _registerName1( + "dateWithEra:yearForWeekOfYear:weekOfYear:weekday:hour:minute:second:nanosecond:"); + late final _sel_startOfDayForDate_1 = _registerName1("startOfDayForDate:"); + late final _sel_componentsInTimeZone_fromDate_1 = + _registerName1("componentsInTimeZone:fromDate:"); + ffi.Pointer _objc_msgSend_751( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer timezone, + ffi.Pointer date, + ) { + return __objc_msgSend_751( + obj, + sel, + timezone, + date, + ); + } + + late final __objc_msgSend_751Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_751 = __objc_msgSend_751Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_compareDate_toDate_toUnitGranularity_1 = + _registerName1("compareDate:toDate:toUnitGranularity:"); + int _objc_msgSend_752( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date1, + ffi.Pointer date2, + int unit, + ) { + return __objc_msgSend_752( + obj, + sel, + date1, + date2, + unit, + ); + } + + late final __objc_msgSend_752Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_752 = __objc_msgSend_752Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_isDate_equalToDate_toUnitGranularity_1 = + _registerName1("isDate:equalToDate:toUnitGranularity:"); + bool _objc_msgSend_753( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date1, + ffi.Pointer date2, + int unit, + ) { + return __objc_msgSend_753( + obj, + sel, + date1, + date2, + unit, + ); + } + + late final __objc_msgSend_753Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_753 = __objc_msgSend_753Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_isDate_inSameDayAsDate_1 = + _registerName1("isDate:inSameDayAsDate:"); + bool _objc_msgSend_754( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date1, + ffi.Pointer date2, + ) { + return __objc_msgSend_754( + obj, + sel, + date1, + date2, + ); + } + + late final __objc_msgSend_754Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_754 = __objc_msgSend_754Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_isDateInToday_1 = _registerName1("isDateInToday:"); + late final _sel_isDateInYesterday_1 = _registerName1("isDateInYesterday:"); + late final _sel_isDateInTomorrow_1 = _registerName1("isDateInTomorrow:"); + late final _sel_isDateInWeekend_1 = _registerName1("isDateInWeekend:"); + late final _sel_rangeOfWeekendStartDate_interval_containingDate_1 = + _registerName1("rangeOfWeekendStartDate:interval:containingDate:"); + bool _objc_msgSend_755( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> datep, + ffi.Pointer tip, + ffi.Pointer date, + ) { + return __objc_msgSend_755( + obj, + sel, + datep, + tip, + date, + ); + } + + late final __objc_msgSend_755Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_755 = __objc_msgSend_755Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_nextWeekendStartDate_interval_options_afterDate_1 = + _registerName1("nextWeekendStartDate:interval:options:afterDate:"); + bool _objc_msgSend_756( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> datep, + ffi.Pointer tip, + int options, + ffi.Pointer date, + ) { + return __objc_msgSend_756( + obj, + sel, + datep, + tip, + options, + date, + ); + } + + late final __objc_msgSend_756Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_756 = __objc_msgSend_756Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + int, + ffi.Pointer)>(); + + late final _sel_components_fromDateComponents_toDateComponents_options_1 = + _registerName1("components:fromDateComponents:toDateComponents:options:"); + ffi.Pointer _objc_msgSend_757( + ffi.Pointer obj, + ffi.Pointer sel, + int unitFlags, + ffi.Pointer startingDateComp, + ffi.Pointer resultDateComp, + int options, + ) { + return __objc_msgSend_757( + obj, + sel, + unitFlags, + startingDateComp, + resultDateComp, + options, + ); + } + + late final __objc_msgSend_757Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_757 = __objc_msgSend_757Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + int)>(); + + late final _sel_dateByAddingUnit_value_toDate_options_1 = + _registerName1("dateByAddingUnit:value:toDate:options:"); + ffi.Pointer _objc_msgSend_758( + ffi.Pointer obj, + ffi.Pointer sel, + int unit, + int value, + ffi.Pointer date, + int options, + ) { + return __objc_msgSend_758( + obj, + sel, + unit, + value, + date, + options, + ); + } + + late final __objc_msgSend_758Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Long, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_758 = __objc_msgSend_758Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, int, ffi.Pointer, int)>(); + + late final _sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_1 = + _registerName1( + "enumerateDatesStartingAfterDate:matchingComponents:options:usingBlock:"); + void _objc_msgSend_759( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer start, + ffi.Pointer comps, + int opts, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_759( + obj, + sel, + start, + comps, + opts, + block, + ); + } + + late final __objc_msgSend_759Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_759 = __objc_msgSend_759Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_nextDateAfterDate_matchingComponents_options_1 = + _registerName1("nextDateAfterDate:matchingComponents:options:"); + ffi.Pointer _objc_msgSend_760( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date, + ffi.Pointer comps, + int options, + ) { + return __objc_msgSend_760( + obj, + sel, + date, + comps, + options, + ); + } + + late final __objc_msgSend_760Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_760 = __objc_msgSend_760Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); + + late final _sel_nextDateAfterDate_matchingUnit_value_options_1 = + _registerName1("nextDateAfterDate:matchingUnit:value:options:"); + ffi.Pointer _objc_msgSend_761( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date, + int unit, + int value, + int options, + ) { + return __objc_msgSend_761( + obj, + sel, + date, + unit, + value, + options, + ); + } + + late final __objc_msgSend_761Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Long, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_761 = __objc_msgSend_761Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, int, int)>(); + + late final _sel_nextDateAfterDate_matchingHour_minute_second_options_1 = + _registerName1("nextDateAfterDate:matchingHour:minute:second:options:"); + ffi.Pointer _objc_msgSend_762( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date, + int hourValue, + int minuteValue, + int secondValue, + int options, + ) { + return __objc_msgSend_762( + obj, + sel, + date, + hourValue, + minuteValue, + secondValue, + options, + ); + } + + late final __objc_msgSend_762Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_762 = __objc_msgSend_762Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, int, int, int)>(); + + late final _sel_dateBySettingUnit_value_ofDate_options_1 = + _registerName1("dateBySettingUnit:value:ofDate:options:"); + late final _sel_dateBySettingHour_minute_second_ofDate_options_1 = + _registerName1("dateBySettingHour:minute:second:ofDate:options:"); + ffi.Pointer _objc_msgSend_763( + ffi.Pointer obj, + ffi.Pointer sel, + int h, + int m, + int s, + ffi.Pointer date, + int opts, + ) { + return __objc_msgSend_763( + obj, + sel, + h, + m, + s, + date, + opts, + ); + } + + late final __objc_msgSend_763Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_763 = __objc_msgSend_763Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, int, int, ffi.Pointer, int)>(); + + late final _sel_date_matchesComponents_1 = + _registerName1("date:matchesComponents:"); + bool _objc_msgSend_764( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer date, + ffi.Pointer components, + ) { + return __objc_msgSend_764( + obj, + sel, + date, + components, + ); + } + + late final __objc_msgSend_764Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_764 = __objc_msgSend_764Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_isLenient1 = _registerName1("isLenient"); + late final _sel_setLenient_1 = _registerName1("setLenient:"); + late final _sel_twoDigitStartDate1 = _registerName1("twoDigitStartDate"); + late final _sel_setTwoDigitStartDate_1 = + _registerName1("setTwoDigitStartDate:"); + late final _sel_defaultDate1 = _registerName1("defaultDate"); + late final _sel_setDefaultDate_1 = _registerName1("setDefaultDate:"); + late final _sel_setEraSymbols_1 = _registerName1("setEraSymbols:"); + void _objc_msgSend_765( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_765( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_765Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_765 = __objc_msgSend_765Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setMonthSymbols_1 = _registerName1("setMonthSymbols:"); + late final _sel_setShortMonthSymbols_1 = + _registerName1("setShortMonthSymbols:"); + late final _sel_setWeekdaySymbols_1 = _registerName1("setWeekdaySymbols:"); + late final _sel_setShortWeekdaySymbols_1 = + _registerName1("setShortWeekdaySymbols:"); + late final _sel_setAMSymbol_1 = _registerName1("setAMSymbol:"); + late final _sel_setPMSymbol_1 = _registerName1("setPMSymbol:"); + late final _sel_setLongEraSymbols_1 = _registerName1("setLongEraSymbols:"); + late final _sel_setVeryShortMonthSymbols_1 = + _registerName1("setVeryShortMonthSymbols:"); + late final _sel_setStandaloneMonthSymbols_1 = + _registerName1("setStandaloneMonthSymbols:"); + late final _sel_setShortStandaloneMonthSymbols_1 = + _registerName1("setShortStandaloneMonthSymbols:"); + late final _sel_setVeryShortStandaloneMonthSymbols_1 = + _registerName1("setVeryShortStandaloneMonthSymbols:"); + late final _sel_setVeryShortWeekdaySymbols_1 = + _registerName1("setVeryShortWeekdaySymbols:"); + late final _sel_setStandaloneWeekdaySymbols_1 = + _registerName1("setStandaloneWeekdaySymbols:"); + late final _sel_setShortStandaloneWeekdaySymbols_1 = + _registerName1("setShortStandaloneWeekdaySymbols:"); + late final _sel_setVeryShortStandaloneWeekdaySymbols_1 = + _registerName1("setVeryShortStandaloneWeekdaySymbols:"); + late final _sel_setQuarterSymbols_1 = _registerName1("setQuarterSymbols:"); + late final _sel_setShortQuarterSymbols_1 = + _registerName1("setShortQuarterSymbols:"); + late final _sel_setStandaloneQuarterSymbols_1 = + _registerName1("setStandaloneQuarterSymbols:"); + late final _sel_setShortStandaloneQuarterSymbols_1 = + _registerName1("setShortStandaloneQuarterSymbols:"); + late final _sel_gregorianStartDate1 = _registerName1("gregorianStartDate"); + late final _sel_setGregorianStartDate_1 = + _registerName1("setGregorianStartDate:"); + late final _sel_doesRelativeDateFormatting1 = + _registerName1("doesRelativeDateFormatting"); + late final _sel_setDoesRelativeDateFormatting_1 = + _registerName1("setDoesRelativeDateFormatting:"); + late final _sel_initWithDateFormat_allowNaturalLanguage_1 = + _registerName1("initWithDateFormat:allowNaturalLanguage:"); + late final _sel_allowsNaturalLanguage1 = + _registerName1("allowsNaturalLanguage"); + late final _class_NSNumberFormatter1 = _getClass1("NSNumberFormatter"); + late final _sel_stringFromNumber_1 = _registerName1("stringFromNumber:"); + ffi.Pointer _objc_msgSend_766( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer number, + ) { + return __objc_msgSend_766( + obj, + sel, + number, + ); + } + + late final __objc_msgSend_766Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_766 = __objc_msgSend_766Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_numberFromString_1 = _registerName1("numberFromString:"); + ffi.Pointer _objc_msgSend_767( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + ) { + return __objc_msgSend_767( + obj, + sel, + string, + ); + } + + late final __objc_msgSend_767Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_767 = __objc_msgSend_767Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_localizedStringFromNumber_numberStyle_1 = + _registerName1("localizedStringFromNumber:numberStyle:"); + ffi.Pointer _objc_msgSend_768( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer num, + int nstyle, + ) { + return __objc_msgSend_768( + obj, + sel, + num, + nstyle, + ); + } + + late final __objc_msgSend_768Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_768 = __objc_msgSend_768Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + int _objc_msgSend_769( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_769( + obj, + sel, + ); + } + + late final __objc_msgSend_769Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_769 = __objc_msgSend_769Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + void _objc_msgSend_770( + ffi.Pointer obj, + ffi.Pointer sel, + int behavior, + ) { + return __objc_msgSend_770( + obj, + sel, + behavior, + ); + } + + late final __objc_msgSend_770Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_770 = __objc_msgSend_770Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_numberStyle1 = _registerName1("numberStyle"); + int _objc_msgSend_771( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_771( + obj, + sel, + ); + } + + late final __objc_msgSend_771Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_771 = __objc_msgSend_771Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setNumberStyle_1 = _registerName1("setNumberStyle:"); + void _objc_msgSend_772( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_772( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_772Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_772 = __objc_msgSend_772Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_generatesDecimalNumbers1 = + _registerName1("generatesDecimalNumbers"); + late final _sel_setGeneratesDecimalNumbers_1 = + _registerName1("setGeneratesDecimalNumbers:"); + void _objc_msgSend_773( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_773( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_773Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_773 = __objc_msgSend_773Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_negativeFormat1 = _registerName1("negativeFormat"); + late final _sel_setNegativeFormat_1 = _registerName1("setNegativeFormat:"); + late final _sel_textAttributesForNegativeValues1 = + _registerName1("textAttributesForNegativeValues"); + late final _sel_setTextAttributesForNegativeValues_1 = + _registerName1("setTextAttributesForNegativeValues:"); + late final _sel_positiveFormat1 = _registerName1("positiveFormat"); + late final _sel_setPositiveFormat_1 = _registerName1("setPositiveFormat:"); + late final _sel_textAttributesForPositiveValues1 = + _registerName1("textAttributesForPositiveValues"); + late final _sel_setTextAttributesForPositiveValues_1 = + _registerName1("setTextAttributesForPositiveValues:"); + late final _sel_allowsFloats1 = _registerName1("allowsFloats"); + late final _sel_setAllowsFloats_1 = _registerName1("setAllowsFloats:"); + late final _sel_setDecimalSeparator_1 = + _registerName1("setDecimalSeparator:"); + late final _sel_alwaysShowsDecimalSeparator1 = + _registerName1("alwaysShowsDecimalSeparator"); + late final _sel_setAlwaysShowsDecimalSeparator_1 = + _registerName1("setAlwaysShowsDecimalSeparator:"); + late final _sel_currencyDecimalSeparator1 = + _registerName1("currencyDecimalSeparator"); + late final _sel_setCurrencyDecimalSeparator_1 = + _registerName1("setCurrencyDecimalSeparator:"); + late final _sel_usesGroupingSeparator1 = + _registerName1("usesGroupingSeparator"); + late final _sel_setUsesGroupingSeparator_1 = + _registerName1("setUsesGroupingSeparator:"); + late final _sel_setGroupingSeparator_1 = + _registerName1("setGroupingSeparator:"); + late final _sel_zeroSymbol1 = _registerName1("zeroSymbol"); + late final _sel_setZeroSymbol_1 = _registerName1("setZeroSymbol:"); + late final _sel_textAttributesForZero1 = + _registerName1("textAttributesForZero"); + late final _sel_setTextAttributesForZero_1 = + _registerName1("setTextAttributesForZero:"); + late final _sel_nilSymbol1 = _registerName1("nilSymbol"); + late final _sel_setNilSymbol_1 = _registerName1("setNilSymbol:"); + late final _sel_textAttributesForNil1 = + _registerName1("textAttributesForNil"); + late final _sel_setTextAttributesForNil_1 = + _registerName1("setTextAttributesForNil:"); + late final _sel_notANumberSymbol1 = _registerName1("notANumberSymbol"); + late final _sel_setNotANumberSymbol_1 = + _registerName1("setNotANumberSymbol:"); + late final _sel_textAttributesForNotANumber1 = + _registerName1("textAttributesForNotANumber"); + late final _sel_setTextAttributesForNotANumber_1 = + _registerName1("setTextAttributesForNotANumber:"); + late final _sel_positiveInfinitySymbol1 = + _registerName1("positiveInfinitySymbol"); + late final _sel_setPositiveInfinitySymbol_1 = + _registerName1("setPositiveInfinitySymbol:"); + late final _sel_textAttributesForPositiveInfinity1 = + _registerName1("textAttributesForPositiveInfinity"); + late final _sel_setTextAttributesForPositiveInfinity_1 = + _registerName1("setTextAttributesForPositiveInfinity:"); + late final _sel_negativeInfinitySymbol1 = + _registerName1("negativeInfinitySymbol"); + late final _sel_setNegativeInfinitySymbol_1 = + _registerName1("setNegativeInfinitySymbol:"); + late final _sel_textAttributesForNegativeInfinity1 = + _registerName1("textAttributesForNegativeInfinity"); + late final _sel_setTextAttributesForNegativeInfinity_1 = + _registerName1("setTextAttributesForNegativeInfinity:"); + late final _sel_positivePrefix1 = _registerName1("positivePrefix"); + late final _sel_setPositivePrefix_1 = _registerName1("setPositivePrefix:"); + late final _sel_positiveSuffix1 = _registerName1("positiveSuffix"); + late final _sel_setPositiveSuffix_1 = _registerName1("setPositiveSuffix:"); + late final _sel_negativePrefix1 = _registerName1("negativePrefix"); + late final _sel_setNegativePrefix_1 = _registerName1("setNegativePrefix:"); + late final _sel_negativeSuffix1 = _registerName1("negativeSuffix"); + late final _sel_setNegativeSuffix_1 = _registerName1("setNegativeSuffix:"); + late final _sel_setCurrencyCode_1 = _registerName1("setCurrencyCode:"); + late final _sel_setCurrencySymbol_1 = _registerName1("setCurrencySymbol:"); + late final _sel_internationalCurrencySymbol1 = + _registerName1("internationalCurrencySymbol"); + late final _sel_setInternationalCurrencySymbol_1 = + _registerName1("setInternationalCurrencySymbol:"); + late final _sel_percentSymbol1 = _registerName1("percentSymbol"); + late final _sel_setPercentSymbol_1 = _registerName1("setPercentSymbol:"); + late final _sel_perMillSymbol1 = _registerName1("perMillSymbol"); + late final _sel_setPerMillSymbol_1 = _registerName1("setPerMillSymbol:"); + late final _sel_minusSign1 = _registerName1("minusSign"); + late final _sel_setMinusSign_1 = _registerName1("setMinusSign:"); + late final _sel_plusSign1 = _registerName1("plusSign"); + late final _sel_setPlusSign_1 = _registerName1("setPlusSign:"); + late final _sel_exponentSymbol1 = _registerName1("exponentSymbol"); + late final _sel_setExponentSymbol_1 = _registerName1("setExponentSymbol:"); + late final _sel_groupingSize1 = _registerName1("groupingSize"); + late final _sel_setGroupingSize_1 = _registerName1("setGroupingSize:"); + late final _sel_secondaryGroupingSize1 = + _registerName1("secondaryGroupingSize"); + late final _sel_setSecondaryGroupingSize_1 = + _registerName1("setSecondaryGroupingSize:"); + late final _sel_multiplier1 = _registerName1("multiplier"); + late final _sel_setMultiplier_1 = _registerName1("setMultiplier:"); + late final _sel_formatWidth1 = _registerName1("formatWidth"); + late final _sel_setFormatWidth_1 = _registerName1("setFormatWidth:"); + late final _sel_paddingCharacter1 = _registerName1("paddingCharacter"); + late final _sel_setPaddingCharacter_1 = + _registerName1("setPaddingCharacter:"); + late final _sel_paddingPosition1 = _registerName1("paddingPosition"); + int _objc_msgSend_774( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_774( + obj, + sel, + ); + } + + late final __objc_msgSend_774Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_774 = __objc_msgSend_774Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setPaddingPosition_1 = _registerName1("setPaddingPosition:"); + void _objc_msgSend_775( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_775( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_775Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_775 = __objc_msgSend_775Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_roundingMode1 = _registerName1("roundingMode"); + int _objc_msgSend_776( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_776( + obj, + sel, + ); + } + + late final __objc_msgSend_776Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_776 = __objc_msgSend_776Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setRoundingMode_1 = _registerName1("setRoundingMode:"); + void _objc_msgSend_777( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_777( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_777Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_777 = __objc_msgSend_777Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_roundingIncrement1 = _registerName1("roundingIncrement"); + late final _sel_setRoundingIncrement_1 = + _registerName1("setRoundingIncrement:"); + late final _sel_minimumIntegerDigits1 = + _registerName1("minimumIntegerDigits"); + late final _sel_setMinimumIntegerDigits_1 = + _registerName1("setMinimumIntegerDigits:"); + late final _sel_maximumIntegerDigits1 = + _registerName1("maximumIntegerDigits"); + late final _sel_setMaximumIntegerDigits_1 = + _registerName1("setMaximumIntegerDigits:"); + late final _sel_minimumFractionDigits1 = + _registerName1("minimumFractionDigits"); + late final _sel_setMinimumFractionDigits_1 = + _registerName1("setMinimumFractionDigits:"); + late final _sel_maximumFractionDigits1 = + _registerName1("maximumFractionDigits"); + late final _sel_setMaximumFractionDigits_1 = + _registerName1("setMaximumFractionDigits:"); + late final _sel_minimum1 = _registerName1("minimum"); + late final _sel_setMinimum_1 = _registerName1("setMinimum:"); + late final _sel_maximum1 = _registerName1("maximum"); + late final _sel_setMaximum_1 = _registerName1("setMaximum:"); + late final _sel_currencyGroupingSeparator1 = + _registerName1("currencyGroupingSeparator"); + late final _sel_setCurrencyGroupingSeparator_1 = + _registerName1("setCurrencyGroupingSeparator:"); + late final _sel_usesSignificantDigits1 = + _registerName1("usesSignificantDigits"); + late final _sel_setUsesSignificantDigits_1 = + _registerName1("setUsesSignificantDigits:"); + late final _sel_minimumSignificantDigits1 = + _registerName1("minimumSignificantDigits"); + late final _sel_setMinimumSignificantDigits_1 = + _registerName1("setMinimumSignificantDigits:"); + late final _sel_maximumSignificantDigits1 = + _registerName1("maximumSignificantDigits"); + late final _sel_setMaximumSignificantDigits_1 = + _registerName1("setMaximumSignificantDigits:"); + late final _sel_isPartialStringValidationEnabled1 = + _registerName1("isPartialStringValidationEnabled"); + late final _sel_setPartialStringValidationEnabled_1 = + _registerName1("setPartialStringValidationEnabled:"); + late final _sel_hasThousandSeparators1 = + _registerName1("hasThousandSeparators"); + late final _sel_setHasThousandSeparators_1 = + _registerName1("setHasThousandSeparators:"); + late final _sel_thousandSeparator1 = _registerName1("thousandSeparator"); + late final _sel_setThousandSeparator_1 = + _registerName1("setThousandSeparator:"); + late final _sel_localizesFormat1 = _registerName1("localizesFormat"); + late final _sel_setLocalizesFormat_1 = _registerName1("setLocalizesFormat:"); + late final _sel_format1 = _registerName1("format"); + late final _sel_setFormat_1 = _registerName1("setFormat:"); + late final _sel_attributedStringForZero1 = + _registerName1("attributedStringForZero"); + late final _sel_setAttributedStringForZero_1 = + _registerName1("setAttributedStringForZero:"); + void _objc_msgSend_778( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_778( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_778Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_778 = __objc_msgSend_778Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_attributedStringForNil1 = + _registerName1("attributedStringForNil"); + late final _sel_setAttributedStringForNil_1 = + _registerName1("setAttributedStringForNil:"); + late final _sel_attributedStringForNotANumber1 = + _registerName1("attributedStringForNotANumber"); + late final _sel_setAttributedStringForNotANumber_1 = + _registerName1("setAttributedStringForNotANumber:"); + late final _class_NSDecimalNumberHandler1 = + _getClass1("NSDecimalNumberHandler"); + late final _sel_defaultDecimalNumberHandler1 = + _registerName1("defaultDecimalNumberHandler"); + ffi.Pointer _objc_msgSend_779( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_779( + obj, + sel, + ); + } + + late final __objc_msgSend_779Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_779 = __objc_msgSend_779Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1 = + _registerName1( + "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); + instancetype _objc_msgSend_780( + ffi.Pointer obj, + ffi.Pointer sel, + int roundingMode, + int scale, + bool exact, + bool overflow, + bool underflow, + bool divideByZero, + ) { + return __objc_msgSend_780( + obj, + sel, + roundingMode, + scale, + exact, + overflow, + underflow, + divideByZero, + ); + } + + late final __objc_msgSend_780Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Short, + ffi.Bool, + ffi.Bool, + ffi.Bool, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_780 = __objc_msgSend_780Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, int, + int, bool, bool, bool, bool)>(); + + late final _sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1 = + _registerName1( + "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); + late final _sel_roundingBehavior1 = _registerName1("roundingBehavior"); + late final _sel_setRoundingBehavior_1 = + _registerName1("setRoundingBehavior:"); + void _objc_msgSend_781( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_781( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_781Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_781 = __objc_msgSend_781Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSScanner1 = _getClass1("NSScanner"); + late final _sel_scanLocation1 = _registerName1("scanLocation"); + late final _sel_setScanLocation_1 = _registerName1("setScanLocation:"); + late final _sel_charactersToBeSkipped1 = + _registerName1("charactersToBeSkipped"); + late final _sel_setCharactersToBeSkipped_1 = + _registerName1("setCharactersToBeSkipped:"); + void _objc_msgSend_782( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_782( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_782Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_782 = __objc_msgSend_782Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_caseSensitive1 = _registerName1("caseSensitive"); + late final _sel_setCaseSensitive_1 = _registerName1("setCaseSensitive:"); + late final _sel_scanInt_1 = _registerName1("scanInt:"); + bool _objc_msgSend_783( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer result, + ) { + return __objc_msgSend_783( + obj, + sel, + result, + ); + } + + late final __objc_msgSend_783Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_783 = __objc_msgSend_783Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_scanInteger_1 = _registerName1("scanInteger:"); + bool _objc_msgSend_784( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer result, + ) { + return __objc_msgSend_784( + obj, + sel, + result, + ); + } + + late final __objc_msgSend_784Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_784 = __objc_msgSend_784Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_scanLongLong_1 = _registerName1("scanLongLong:"); + bool _objc_msgSend_785( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer result, + ) { + return __objc_msgSend_785( + obj, + sel, + result, + ); + } + + late final __objc_msgSend_785Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_785 = __objc_msgSend_785Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_scanUnsignedLongLong_1 = + _registerName1("scanUnsignedLongLong:"); + bool _objc_msgSend_786( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer result, + ) { + return __objc_msgSend_786( + obj, + sel, + result, + ); + } + + late final __objc_msgSend_786Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_786 = __objc_msgSend_786Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_scanFloat_1 = _registerName1("scanFloat:"); + bool _objc_msgSend_787( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer result, + ) { + return __objc_msgSend_787( + obj, + sel, + result, + ); + } + + late final __objc_msgSend_787Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_787 = __objc_msgSend_787Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_scanDouble_1 = _registerName1("scanDouble:"); + bool _objc_msgSend_788( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer result, + ) { + return __objc_msgSend_788( + obj, + sel, + result, + ); + } + + late final __objc_msgSend_788Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_788 = __objc_msgSend_788Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_scanHexInt_1 = _registerName1("scanHexInt:"); + bool _objc_msgSend_789( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer result, + ) { + return __objc_msgSend_789( + obj, + sel, + result, + ); + } + + late final __objc_msgSend_789Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_789 = __objc_msgSend_789Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_scanHexLongLong_1 = _registerName1("scanHexLongLong:"); + late final _sel_scanHexFloat_1 = _registerName1("scanHexFloat:"); + late final _sel_scanHexDouble_1 = _registerName1("scanHexDouble:"); + late final _sel_scanString_intoString_1 = + _registerName1("scanString:intoString:"); + bool _objc_msgSend_790( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + ffi.Pointer> result, + ) { + return __objc_msgSend_790( + obj, + sel, + string, + result, + ); + } + + late final __objc_msgSend_790Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_790 = __objc_msgSend_790Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); + + late final _sel_scanCharactersFromSet_intoString_1 = + _registerName1("scanCharactersFromSet:intoString:"); + bool _objc_msgSend_791( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer set1, + ffi.Pointer> result, + ) { + return __objc_msgSend_791( + obj, + sel, + set1, + result, + ); + } + + late final __objc_msgSend_791Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_791 = __objc_msgSend_791Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); + + late final _sel_scanUpToString_intoString_1 = + _registerName1("scanUpToString:intoString:"); + late final _sel_scanUpToCharactersFromSet_intoString_1 = + _registerName1("scanUpToCharactersFromSet:intoString:"); + late final _sel_isAtEnd1 = _registerName1("isAtEnd"); + late final _sel_scannerWithString_1 = _registerName1("scannerWithString:"); + late final _sel_localizedScannerWithString_1 = + _registerName1("localizedScannerWithString:"); + late final _sel_scanDecimal_1 = _registerName1("scanDecimal:"); + bool _objc_msgSend_792( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer dcm, + ) { + return __objc_msgSend_792( + obj, + sel, + dcm, + ); + } + + late final __objc_msgSend_792Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_792 = __objc_msgSend_792Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSException1 = _getClass1("NSException"); + late final _sel_exceptionWithName_reason_userInfo_1 = + _registerName1("exceptionWithName:reason:userInfo:"); + ffi.Pointer _objc_msgSend_793( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer reason, + ffi.Pointer userInfo, + ) { + return __objc_msgSend_793( + obj, + sel, + name, + reason, + userInfo, + ); + } + + late final __objc_msgSend_793Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_793 = __objc_msgSend_793Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithName_reason_userInfo_1 = + _registerName1("initWithName:reason:userInfo:"); + late final _sel_reason1 = _registerName1("reason"); + late final _sel_raise1 = _registerName1("raise"); + late final _sel_raise_format_1 = _registerName1("raise:format:"); + late final _sel_raise_format_arguments_1 = + _registerName1("raise:format:arguments:"); + void _objc_msgSend_794( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer format, + ffi.Pointer argList, + ) { + return __objc_msgSend_794( + obj, + sel, + name, + format, + argList, + ); + } + + late final __objc_msgSend_794Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_794 = __objc_msgSend_794Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSFileHandle1 = _getClass1("NSFileHandle"); + late final _sel_availableData1 = _registerName1("availableData"); + late final _sel_initWithFileDescriptor_closeOnDealloc_1 = + _registerName1("initWithFileDescriptor:closeOnDealloc:"); + instancetype _objc_msgSend_795( + ffi.Pointer obj, + ffi.Pointer sel, + int fd, + bool closeopt, + ) { + return __objc_msgSend_795( + obj, + sel, + fd, + closeopt, + ); + } + + late final __objc_msgSend_795Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Int, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_795 = __objc_msgSend_795Ptr.asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer, int, bool)>(); + + late final _sel_readDataToEndOfFileAndReturnError_1 = + _registerName1("readDataToEndOfFileAndReturnError:"); + ffi.Pointer _objc_msgSend_796( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> error, + ) { + return __objc_msgSend_796( + obj, + sel, + error, + ); + } + + late final __objc_msgSend_796Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_796 = __objc_msgSend_796Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); + + late final _sel_readDataUpToLength_error_1 = + _registerName1("readDataUpToLength:error:"); + ffi.Pointer _objc_msgSend_797( + ffi.Pointer obj, + ffi.Pointer sel, + int length, + ffi.Pointer> error, + ) { + return __objc_msgSend_797( + obj, + sel, + length, + error, + ); + } + + late final __objc_msgSend_797Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_797 = __objc_msgSend_797Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer>)>(); + + late final _sel_writeData_error_1 = _registerName1("writeData:error:"); + bool _objc_msgSend_798( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ffi.Pointer> error, + ) { + return __objc_msgSend_798( + obj, + sel, + data, + error, + ); + } + + late final __objc_msgSend_798Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_798 = __objc_msgSend_798Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); + + late final _sel_getOffset_error_1 = _registerName1("getOffset:error:"); + bool _objc_msgSend_799( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer offsetInFile, + ffi.Pointer> error, + ) { + return __objc_msgSend_799( + obj, + sel, + offsetInFile, + error, + ); + } + + late final __objc_msgSend_799Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_799 = __objc_msgSend_799Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_seekToEndReturningOffset_error_1 = + _registerName1("seekToEndReturningOffset:error:"); + late final _sel_seekToOffset_error_1 = _registerName1("seekToOffset:error:"); + bool _objc_msgSend_800( + ffi.Pointer obj, + ffi.Pointer sel, + int offset, + ffi.Pointer> error, + ) { + return __objc_msgSend_800( + obj, + sel, + offset, + error, + ); + } + + late final __objc_msgSend_800Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLongLong, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_800 = __objc_msgSend_800Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer>)>(); + + late final _sel_truncateAtOffset_error_1 = + _registerName1("truncateAtOffset:error:"); + late final _sel_synchronizeAndReturnError_1 = + _registerName1("synchronizeAndReturnError:"); + late final _sel_closeAndReturnError_1 = + _registerName1("closeAndReturnError:"); + late final _sel_fileHandleWithStandardInput1 = + _registerName1("fileHandleWithStandardInput"); + ffi.Pointer _objc_msgSend_801( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_801( + obj, + sel, + ); + } + + late final __objc_msgSend_801Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_801 = __objc_msgSend_801Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_fileHandleWithStandardOutput1 = + _registerName1("fileHandleWithStandardOutput"); + late final _sel_fileHandleWithStandardError1 = + _registerName1("fileHandleWithStandardError"); + late final _sel_fileHandleWithNullDevice1 = + _registerName1("fileHandleWithNullDevice"); + late final _sel_fileHandleForReadingAtPath_1 = + _registerName1("fileHandleForReadingAtPath:"); + late final _sel_fileHandleForWritingAtPath_1 = + _registerName1("fileHandleForWritingAtPath:"); + late final _sel_fileHandleForUpdatingAtPath_1 = + _registerName1("fileHandleForUpdatingAtPath:"); + late final _sel_fileHandleForReadingFromURL_error_1 = + _registerName1("fileHandleForReadingFromURL:error:"); + instancetype _objc_msgSend_802( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer> error, + ) { + return __objc_msgSend_802( + obj, + sel, + url, + error, + ); + } + + late final __objc_msgSend_802Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_802 = __objc_msgSend_802Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); + + late final _sel_fileHandleForWritingToURL_error_1 = + _registerName1("fileHandleForWritingToURL:error:"); + late final _sel_fileHandleForUpdatingURL_error_1 = + _registerName1("fileHandleForUpdatingURL:error:"); + late final _sel_readInBackgroundAndNotifyForModes_1 = + _registerName1("readInBackgroundAndNotifyForModes:"); + late final _sel_readInBackgroundAndNotify1 = + _registerName1("readInBackgroundAndNotify"); + late final _sel_readToEndOfFileInBackgroundAndNotifyForModes_1 = + _registerName1("readToEndOfFileInBackgroundAndNotifyForModes:"); + late final _sel_readToEndOfFileInBackgroundAndNotify1 = + _registerName1("readToEndOfFileInBackgroundAndNotify"); + late final _sel_acceptConnectionInBackgroundAndNotifyForModes_1 = + _registerName1("acceptConnectionInBackgroundAndNotifyForModes:"); + late final _sel_acceptConnectionInBackgroundAndNotify1 = + _registerName1("acceptConnectionInBackgroundAndNotify"); + late final _sel_waitForDataInBackgroundAndNotifyForModes_1 = + _registerName1("waitForDataInBackgroundAndNotifyForModes:"); + late final _sel_waitForDataInBackgroundAndNotify1 = + _registerName1("waitForDataInBackgroundAndNotify"); + late final _sel_readabilityHandler1 = _registerName1("readabilityHandler"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_803( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_803( + obj, + sel, + ); + } + + late final __objc_msgSend_803Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_803 = __objc_msgSend_803Ptr.asFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setReadabilityHandler_1 = + _registerName1("setReadabilityHandler:"); + void _objc_msgSend_804( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> value, + ) { + return __objc_msgSend_804( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_804Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_804 = __objc_msgSend_804Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_writeabilityHandler1 = _registerName1("writeabilityHandler"); + late final _sel_setWriteabilityHandler_1 = + _registerName1("setWriteabilityHandler:"); + late final _sel_initWithFileDescriptor_1 = + _registerName1("initWithFileDescriptor:"); + instancetype _objc_msgSend_805( + ffi.Pointer obj, + ffi.Pointer sel, + int fd, + ) { + return __objc_msgSend_805( + obj, + sel, + fd, + ); + } + + late final __objc_msgSend_805Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Int)>>('objc_msgSend'); + late final __objc_msgSend_805 = __objc_msgSend_805Ptr.asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_fileDescriptor1 = _registerName1("fileDescriptor"); + late final _sel_readDataToEndOfFile1 = _registerName1("readDataToEndOfFile"); + late final _sel_readDataOfLength_1 = _registerName1("readDataOfLength:"); + late final _sel_offsetInFile1 = _registerName1("offsetInFile"); + late final _sel_seekToEndOfFile1 = _registerName1("seekToEndOfFile"); + late final _sel_seekToFileOffset_1 = _registerName1("seekToFileOffset:"); + void _objc_msgSend_806( + ffi.Pointer obj, + ffi.Pointer sel, + int offset, + ) { + return __objc_msgSend_806( + obj, + sel, + offset, + ); + } + + late final __objc_msgSend_806Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLongLong)>>('objc_msgSend'); + late final __objc_msgSend_806 = __objc_msgSend_806Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_truncateFileAtOffset_1 = + _registerName1("truncateFileAtOffset:"); + late final _sel_synchronizeFile1 = _registerName1("synchronizeFile"); + late final _sel_closeFile1 = _registerName1("closeFile"); + late final _class_NSHTTPCookieStorage1 = _getClass1("NSHTTPCookieStorage"); + late final _sel_sharedHTTPCookieStorage1 = + _registerName1("sharedHTTPCookieStorage"); + ffi.Pointer _objc_msgSend_807( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_807( + obj, + sel, + ); + } + + late final __objc_msgSend_807Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_807 = __objc_msgSend_807Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_sharedCookieStorageForGroupContainerIdentifier_1 = + _registerName1("sharedCookieStorageForGroupContainerIdentifier:"); + ffi.Pointer _objc_msgSend_808( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer identifier, + ) { + return __objc_msgSend_808( + obj, + sel, + identifier, + ); + } + + late final __objc_msgSend_808Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_808 = __objc_msgSend_808Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_cookies1 = _registerName1("cookies"); + late final _class_NSHTTPCookie1 = _getClass1("NSHTTPCookie"); + late final _sel_initWithProperties_1 = _registerName1("initWithProperties:"); + late final _sel_cookieWithProperties_1 = + _registerName1("cookieWithProperties:"); + ffi.Pointer _objc_msgSend_809( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer properties, + ) { + return __objc_msgSend_809( + obj, + sel, + properties, + ); + } + + late final __objc_msgSend_809Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_809 = __objc_msgSend_809Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_requestHeaderFieldsWithCookies_1 = + _registerName1("requestHeaderFieldsWithCookies:"); + late final _sel_cookiesWithResponseHeaderFields_forURL_1 = + _registerName1("cookiesWithResponseHeaderFields:forURL:"); + ffi.Pointer _objc_msgSend_810( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer headerFields, + ffi.Pointer URL, + ) { + return __objc_msgSend_810( + obj, + sel, + headerFields, + URL, + ); + } + + late final __objc_msgSend_810Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_810 = __objc_msgSend_810Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_properties1 = _registerName1("properties"); + late final _sel_value1 = _registerName1("value"); + late final _sel_expiresDate1 = _registerName1("expiresDate"); + late final _sel_isSessionOnly1 = _registerName1("isSessionOnly"); + late final _sel_isSecure1 = _registerName1("isSecure"); + late final _sel_isHTTPOnly1 = _registerName1("isHTTPOnly"); + late final _sel_comment1 = _registerName1("comment"); + late final _sel_commentURL1 = _registerName1("commentURL"); + late final _sel_portList1 = _registerName1("portList"); + late final _sel_sameSitePolicy1 = _registerName1("sameSitePolicy"); + late final _sel_setCookie_1 = _registerName1("setCookie:"); + void _objc_msgSend_811( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer cookie, + ) { + return __objc_msgSend_811( + obj, + sel, + cookie, + ); + } + + late final __objc_msgSend_811Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_811 = __objc_msgSend_811Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_deleteCookie_1 = _registerName1("deleteCookie:"); + late final _sel_removeCookiesSinceDate_1 = + _registerName1("removeCookiesSinceDate:"); + late final _sel_cookiesForURL_1 = _registerName1("cookiesForURL:"); + late final _sel_setCookies_forURL_mainDocumentURL_1 = + _registerName1("setCookies:forURL:mainDocumentURL:"); + void _objc_msgSend_812( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer cookies, + ffi.Pointer URL, + ffi.Pointer mainDocumentURL, + ) { + return __objc_msgSend_812( + obj, + sel, + cookies, + URL, + mainDocumentURL, + ); + } + + late final __objc_msgSend_812Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_812 = __objc_msgSend_812Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_cookieAcceptPolicy1 = _registerName1("cookieAcceptPolicy"); + int _objc_msgSend_813( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_813( + obj, + sel, + ); + } + + late final __objc_msgSend_813Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_813 = __objc_msgSend_813Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setCookieAcceptPolicy_1 = + _registerName1("setCookieAcceptPolicy:"); + void _objc_msgSend_814( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_814( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_814Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_814 = __objc_msgSend_814Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_sortedCookiesUsingDescriptors_1 = + _registerName1("sortedCookiesUsingDescriptors:"); + late final _class_NSURLSessionTask1 = _getClass1("NSURLSessionTask"); + late final _sel_taskIdentifier1 = _registerName1("taskIdentifier"); + late final _class_NSURLRequest1 = _getClass1("NSURLRequest"); + late final _sel_requestWithURL_1 = _registerName1("requestWithURL:"); + late final _sel_supportsSecureCoding1 = + _registerName1("supportsSecureCoding"); + late final _sel_requestWithURL_cachePolicy_timeoutInterval_1 = + _registerName1("requestWithURL:cachePolicy:timeoutInterval:"); + instancetype _objc_msgSend_815( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer URL, + int cachePolicy, + double timeoutInterval, + ) { + return __objc_msgSend_815( + obj, + sel, + URL, + cachePolicy, + timeoutInterval, + ); + } + + late final __objc_msgSend_815Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32, ffi.Double)>>('objc_msgSend'); + late final __objc_msgSend_815 = __objc_msgSend_815Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, double)>(); + + late final _sel_initWithURL_cachePolicy_timeoutInterval_1 = + _registerName1("initWithURL:cachePolicy:timeoutInterval:"); + late final _sel_URL1 = _registerName1("URL"); + late final _sel_cachePolicy1 = _registerName1("cachePolicy"); + int _objc_msgSend_816( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_816( + obj, + sel, + ); + } + + late final __objc_msgSend_816Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_816 = __objc_msgSend_816Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_timeoutInterval1 = _registerName1("timeoutInterval"); + late final _sel_mainDocumentURL1 = _registerName1("mainDocumentURL"); + late final _sel_networkServiceType1 = _registerName1("networkServiceType"); + int _objc_msgSend_817( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_817( + obj, + sel, + ); + } + + late final __objc_msgSend_817Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_817 = __objc_msgSend_817Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_allowsCellularAccess1 = + _registerName1("allowsCellularAccess"); + late final _sel_allowsExpensiveNetworkAccess1 = + _registerName1("allowsExpensiveNetworkAccess"); + late final _sel_allowsConstrainedNetworkAccess1 = + _registerName1("allowsConstrainedNetworkAccess"); + late final _sel_assumesHTTP3Capable1 = _registerName1("assumesHTTP3Capable"); + late final _sel_attribution1 = _registerName1("attribution"); + int _objc_msgSend_818( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_818( + obj, + sel, + ); + } + + late final __objc_msgSend_818Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_818 = __objc_msgSend_818Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_requiresDNSSECValidation1 = + _registerName1("requiresDNSSECValidation"); + late final _sel_HTTPMethod1 = _registerName1("HTTPMethod"); + late final _sel_allHTTPHeaderFields1 = _registerName1("allHTTPHeaderFields"); + late final _sel_valueForHTTPHeaderField_1 = + _registerName1("valueForHTTPHeaderField:"); + late final _sel_HTTPBody1 = _registerName1("HTTPBody"); + late final _class_NSInputStream1 = _getClass1("NSInputStream"); + late final _class_NSStream1 = _getClass1("NSStream"); + late final _sel_open1 = _registerName1("open"); + late final _sel_close1 = _registerName1("close"); + late final _sel_streamStatus1 = _registerName1("streamStatus"); + int _objc_msgSend_819( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_819( + obj, + sel, + ); + } + + late final __objc_msgSend_819Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_819 = __objc_msgSend_819Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_streamError1 = _registerName1("streamError"); + late final _class_NSOutputStream1 = _getClass1("NSOutputStream"); + late final _sel_write_maxLength_1 = _registerName1("write:maxLength:"); + int _objc_msgSend_820( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + int len, + ) { + return __objc_msgSend_820( + obj, + sel, + buffer, + len, + ); + } + + late final __objc_msgSend_820Ptr = _lookup< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_820 = __objc_msgSend_820Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_hasSpaceAvailable1 = _registerName1("hasSpaceAvailable"); + late final _sel_initToMemory1 = _registerName1("initToMemory"); + late final _sel_initToBuffer_capacity_1 = + _registerName1("initToBuffer:capacity:"); + instancetype _objc_msgSend_821( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + int capacity, + ) { + return __objc_msgSend_821( + obj, + sel, + buffer, + capacity, + ); + } + + late final __objc_msgSend_821Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_821 = __objc_msgSend_821Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_initWithURL_append_1 = _registerName1("initWithURL:append:"); + late final _sel_initToFileAtPath_append_1 = + _registerName1("initToFileAtPath:append:"); + late final _sel_outputStreamToMemory1 = + _registerName1("outputStreamToMemory"); + late final _sel_outputStreamToBuffer_capacity_1 = + _registerName1("outputStreamToBuffer:capacity:"); + late final _sel_outputStreamToFileAtPath_append_1 = + _registerName1("outputStreamToFileAtPath:append:"); + late final _sel_outputStreamWithURL_append_1 = + _registerName1("outputStreamWithURL:append:"); + late final _sel_getStreamsToHostWithName_port_inputStream_outputStream_1 = + _registerName1("getStreamsToHostWithName:port:inputStream:outputStream:"); + void _objc_msgSend_822( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream, + ) { + return __objc_msgSend_822( + obj, + sel, + hostname, + port, + inputStream, + outputStream, + ); + } + + late final __objc_msgSend_822Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_822 = __objc_msgSend_822Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); + + late final _class_NSHost1 = _getClass1("NSHost"); + late final _sel_currentHost1 = _registerName1("currentHost"); + late final _sel_hostWithName_1 = _registerName1("hostWithName:"); + late final _sel_hostWithAddress_1 = _registerName1("hostWithAddress:"); + late final _sel_isEqualToHost_1 = _registerName1("isEqualToHost:"); + bool _objc_msgSend_823( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer aHost, + ) { + return __objc_msgSend_823( + obj, + sel, + aHost, + ); + } + + late final __objc_msgSend_823Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_823 = __objc_msgSend_823Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_names1 = _registerName1("names"); + late final _sel_address1 = _registerName1("address"); + late final _sel_addresses1 = _registerName1("addresses"); + late final _sel_localizedName1 = _registerName1("localizedName"); + late final _sel_setHostCacheEnabled_1 = + _registerName1("setHostCacheEnabled:"); + void _objc_msgSend_824( + ffi.Pointer obj, + ffi.Pointer sel, + bool flag, + ) { + return __objc_msgSend_824( + obj, + sel, + flag, + ); + } + + late final __objc_msgSend_824Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_824 = __objc_msgSend_824Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_isHostCacheEnabled1 = _registerName1("isHostCacheEnabled"); + late final _sel_flushHostCache1 = _registerName1("flushHostCache"); + late final _sel_getStreamsToHost_port_inputStream_outputStream_1 = + _registerName1("getStreamsToHost:port:inputStream:outputStream:"); + void _objc_msgSend_825( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream, + ) { + return __objc_msgSend_825( + obj, + sel, + host, + port, + inputStream, + outputStream, + ); + } + + late final __objc_msgSend_825Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_825 = __objc_msgSend_825Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); + + late final _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1 = + _registerName1("getBoundStreamsWithBufferSize:inputStream:outputStream:"); + void _objc_msgSend_826( + ffi.Pointer obj, + ffi.Pointer sel, + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream, + ) { + return __objc_msgSend_826( + obj, + sel, + bufferSize, + inputStream, + outputStream, + ); + } + + late final __objc_msgSend_826Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_826 = __objc_msgSend_826Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); + + late final _sel_read_maxLength_1 = _registerName1("read:maxLength:"); + late final _sel_getBuffer_length_1 = _registerName1("getBuffer:length:"); + bool _objc_msgSend_827( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> buffer, + ffi.Pointer len, + ) { + return __objc_msgSend_827( + obj, + sel, + buffer, + len, + ); + } + + late final __objc_msgSend_827Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_827 = __objc_msgSend_827Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer)>(); + + late final _sel_hasBytesAvailable1 = _registerName1("hasBytesAvailable"); + late final _sel_initWithFileAtPath_1 = _registerName1("initWithFileAtPath:"); + late final _sel_inputStreamWithData_1 = + _registerName1("inputStreamWithData:"); + late final _sel_inputStreamWithFileAtPath_1 = + _registerName1("inputStreamWithFileAtPath:"); + late final _sel_inputStreamWithURL_1 = _registerName1("inputStreamWithURL:"); + late final _sel_HTTPBodyStream1 = _registerName1("HTTPBodyStream"); + ffi.Pointer _objc_msgSend_828( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_828( + obj, + sel, + ); + } + + late final __objc_msgSend_828Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_828 = __objc_msgSend_828Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_HTTPShouldHandleCookies1 = + _registerName1("HTTPShouldHandleCookies"); + late final _sel_HTTPShouldUsePipelining1 = + _registerName1("HTTPShouldUsePipelining"); + late final _sel_originalRequest1 = _registerName1("originalRequest"); + ffi.Pointer _objc_msgSend_829( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_829( + obj, + sel, + ); + } + + late final __objc_msgSend_829Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_829 = __objc_msgSend_829Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_currentRequest1 = _registerName1("currentRequest"); + late final _class_NSURLResponse1 = _getClass1("NSURLResponse"); + late final _sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_1 = + _registerName1( + "initWithURL:MIMEType:expectedContentLength:textEncodingName:"); + instancetype _objc_msgSend_830( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer URL, + ffi.Pointer MIMEType, + int length, + ffi.Pointer name, + ) { + return __objc_msgSend_830( + obj, + sel, + URL, + MIMEType, + length, + name, + ); + } + + late final __objc_msgSend_830Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_830 = __objc_msgSend_830Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + + late final _sel_MIMEType1 = _registerName1("MIMEType"); + late final _sel_expectedContentLength1 = + _registerName1("expectedContentLength"); + late final _sel_textEncodingName1 = _registerName1("textEncodingName"); + late final _sel_suggestedFilename1 = _registerName1("suggestedFilename"); + late final _sel_response1 = _registerName1("response"); + ffi.Pointer _objc_msgSend_831( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_831( + obj, + sel, + ); + } + + late final __objc_msgSend_831Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_831 = __objc_msgSend_831Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_progress1 = _registerName1("progress"); + late final _sel_earliestBeginDate1 = _registerName1("earliestBeginDate"); + late final _sel_setEarliestBeginDate_1 = + _registerName1("setEarliestBeginDate:"); + late final _sel_countOfBytesClientExpectsToSend1 = + _registerName1("countOfBytesClientExpectsToSend"); + late final _sel_setCountOfBytesClientExpectsToSend_1 = + _registerName1("setCountOfBytesClientExpectsToSend:"); + late final _sel_countOfBytesClientExpectsToReceive1 = + _registerName1("countOfBytesClientExpectsToReceive"); + late final _sel_setCountOfBytesClientExpectsToReceive_1 = + _registerName1("setCountOfBytesClientExpectsToReceive:"); + late final _sel_countOfBytesSent1 = _registerName1("countOfBytesSent"); + late final _sel_countOfBytesReceived1 = + _registerName1("countOfBytesReceived"); + late final _sel_countOfBytesExpectedToSend1 = + _registerName1("countOfBytesExpectedToSend"); + late final _sel_countOfBytesExpectedToReceive1 = + _registerName1("countOfBytesExpectedToReceive"); + late final _sel_taskDescription1 = _registerName1("taskDescription"); + late final _sel_setTaskDescription_1 = _registerName1("setTaskDescription:"); + late final _sel_state1 = _registerName1("state"); + int _objc_msgSend_832( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_832( + obj, + sel, + ); + } + + late final __objc_msgSend_832Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_832 = __objc_msgSend_832Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_suspend1 = _registerName1("suspend"); + late final _sel_priority1 = _registerName1("priority"); + late final _sel_setPriority_1 = _registerName1("setPriority:"); + void _objc_msgSend_833( + ffi.Pointer obj, + ffi.Pointer sel, + double value, + ) { + return __objc_msgSend_833( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_833Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Float)>>('objc_msgSend'); + late final __objc_msgSend_833 = __objc_msgSend_833Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, double)>(); + + late final _sel_prefersIncrementalDelivery1 = + _registerName1("prefersIncrementalDelivery"); + late final _sel_setPrefersIncrementalDelivery_1 = + _registerName1("setPrefersIncrementalDelivery:"); + late final _sel_storeCookies_forTask_1 = + _registerName1("storeCookies:forTask:"); + void _objc_msgSend_834( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer cookies, + ffi.Pointer task, + ) { + return __objc_msgSend_834( + obj, + sel, + cookies, + task, + ); + } + + late final __objc_msgSend_834Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_834 = __objc_msgSend_834Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_getCookiesForTask_completionHandler_1 = + _registerName1("getCookiesForTask:completionHandler:"); + void _objc_msgSend_835( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer task, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_835( + obj, + sel, + task, + completionHandler, + ); + } + + late final __objc_msgSend_835Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_835 = __objc_msgSend_835Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _class_NSIndexPath1 = _getClass1("NSIndexPath"); + late final _sel_indexPathWithIndex_1 = _registerName1("indexPathWithIndex:"); + late final _sel_indexPathWithIndexes_length_1 = + _registerName1("indexPathWithIndexes:length:"); + instancetype _objc_msgSend_836( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer indexes, + int length, + ) { + return __objc_msgSend_836( + obj, + sel, + indexes, + length, + ); + } + + late final __objc_msgSend_836Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_836 = __objc_msgSend_836Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_initWithIndexes_length_1 = + _registerName1("initWithIndexes:length:"); + late final _sel_indexPathByAddingIndex_1 = + _registerName1("indexPathByAddingIndex:"); + ffi.Pointer _objc_msgSend_837( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_837( + obj, + sel, + index, + ); + } + + late final __objc_msgSend_837Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_837 = __objc_msgSend_837Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_indexPathByRemovingLastIndex1 = + _registerName1("indexPathByRemovingLastIndex"); + ffi.Pointer _objc_msgSend_838( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_838( + obj, + sel, + ); + } + + late final __objc_msgSend_838Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_838 = __objc_msgSend_838Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_indexAtPosition_1 = _registerName1("indexAtPosition:"); + late final _sel_getIndexes_range_1 = _registerName1("getIndexes:range:"); + void _objc_msgSend_839( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer indexes, + _NSRange positionRange, + ) { + return __objc_msgSend_839( + obj, + sel, + indexes, + positionRange, + ); + } + + late final __objc_msgSend_839Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_839 = __objc_msgSend_839Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>(); + + int _objc_msgSend_840( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer otherObject, + ) { + return __objc_msgSend_840( + obj, + sel, + otherObject, + ); + } + + late final __objc_msgSend_840Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_840 = __objc_msgSend_840Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_getIndexes_1 = _registerName1("getIndexes:"); + void _objc_msgSend_841( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer indexes, + ) { + return __objc_msgSend_841( + obj, + sel, + indexes, + ); + } + + late final __objc_msgSend_841Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_841 = __objc_msgSend_841Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSInflectionRule1 = _getClass1("NSInflectionRule"); + late final _sel_automaticRule1 = _registerName1("automaticRule"); + ffi.Pointer _objc_msgSend_842( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_842( + obj, + sel, + ); + } + + late final __objc_msgSend_842Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_842 = __objc_msgSend_842Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_canInflectLanguage_1 = _registerName1("canInflectLanguage:"); + late final _sel_canInflectPreferredLocalization1 = + _registerName1("canInflectPreferredLocalization"); + late final _class_NSMorphology1 = _getClass1("NSMorphology"); + late final _sel_grammaticalGender1 = _registerName1("grammaticalGender"); + int _objc_msgSend_843( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_843( + obj, + sel, + ); + } + + late final __objc_msgSend_843Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_843 = __objc_msgSend_843Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setGrammaticalGender_1 = + _registerName1("setGrammaticalGender:"); + void _objc_msgSend_844( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_844( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_844Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_844 = __objc_msgSend_844Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_partOfSpeech1 = _registerName1("partOfSpeech"); + int _objc_msgSend_845( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_845( + obj, + sel, + ); + } + + late final __objc_msgSend_845Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_845 = __objc_msgSend_845Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setPartOfSpeech_1 = _registerName1("setPartOfSpeech:"); + void _objc_msgSend_846( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_846( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_846Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_846 = __objc_msgSend_846Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_number1 = _registerName1("number"); + int _objc_msgSend_847( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_847( + obj, + sel, + ); + } + + late final __objc_msgSend_847Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_847 = __objc_msgSend_847Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setNumber_1 = _registerName1("setNumber:"); + void _objc_msgSend_848( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_848( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_848Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_848 = __objc_msgSend_848Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _class_NSMorphologyCustomPronoun1 = + _getClass1("NSMorphologyCustomPronoun"); + late final _sel_isSupportedForLanguage_1 = + _registerName1("isSupportedForLanguage:"); + late final _sel_requiredKeysForLanguage_1 = + _registerName1("requiredKeysForLanguage:"); + late final _sel_subjectForm1 = _registerName1("subjectForm"); + late final _sel_setSubjectForm_1 = _registerName1("setSubjectForm:"); + late final _sel_objectForm1 = _registerName1("objectForm"); + late final _sel_setObjectForm_1 = _registerName1("setObjectForm:"); + late final _sel_possessiveForm1 = _registerName1("possessiveForm"); + late final _sel_setPossessiveForm_1 = _registerName1("setPossessiveForm:"); + late final _sel_possessiveAdjectiveForm1 = + _registerName1("possessiveAdjectiveForm"); + late final _sel_setPossessiveAdjectiveForm_1 = + _registerName1("setPossessiveAdjectiveForm:"); + late final _sel_reflexiveForm1 = _registerName1("reflexiveForm"); + late final _sel_setReflexiveForm_1 = _registerName1("setReflexiveForm:"); + late final _sel_customPronounForLanguage_1 = + _registerName1("customPronounForLanguage:"); + ffi.Pointer _objc_msgSend_849( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer language, + ) { + return __objc_msgSend_849( + obj, + sel, + language, + ); + } + + late final __objc_msgSend_849Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_849 = __objc_msgSend_849Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setCustomPronoun_forLanguage_error_1 = + _registerName1("setCustomPronoun:forLanguage:error:"); + bool _objc_msgSend_850( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer features, + ffi.Pointer language, + ffi.Pointer> error, + ) { + return __objc_msgSend_850( + obj, + sel, + features, + language, + error, + ); + } + + late final __objc_msgSend_850Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_850 = __objc_msgSend_850Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_isUnspecified1 = _registerName1("isUnspecified"); + late final _sel_userMorphology1 = _registerName1("userMorphology"); + ffi.Pointer _objc_msgSend_851( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_851( + obj, + sel, + ); + } + + late final __objc_msgSend_851Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_851 = __objc_msgSend_851Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSOperationQueue1 = _getClass1("NSOperationQueue"); + late final _class_NSOperation1 = _getClass1("NSOperation"); + late final _sel_isConcurrent1 = _registerName1("isConcurrent"); + late final _sel_isAsynchronous1 = _registerName1("isAsynchronous"); + late final _sel_isReady1 = _registerName1("isReady"); + late final _sel_addDependency_1 = _registerName1("addDependency:"); + void _objc_msgSend_852( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer op, + ) { + return __objc_msgSend_852( + obj, + sel, + op, + ); + } + + late final __objc_msgSend_852Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_852 = __objc_msgSend_852Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_removeDependency_1 = _registerName1("removeDependency:"); + late final _sel_dependencies1 = _registerName1("dependencies"); + late final _sel_queuePriority1 = _registerName1("queuePriority"); + int _objc_msgSend_853( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_853( + obj, + sel, + ); + } + + late final __objc_msgSend_853Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_853 = __objc_msgSend_853Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setQueuePriority_1 = _registerName1("setQueuePriority:"); + void _objc_msgSend_854( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_854( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_854Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_854 = __objc_msgSend_854Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_completionBlock1 = _registerName1("completionBlock"); + late final _sel_setCompletionBlock_1 = _registerName1("setCompletionBlock:"); + late final _sel_waitUntilFinished1 = _registerName1("waitUntilFinished"); + late final _sel_addOperation_1 = _registerName1("addOperation:"); + late final _sel_addOperations_waitUntilFinished_1 = + _registerName1("addOperations:waitUntilFinished:"); + void _objc_msgSend_855( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer ops, + bool wait, + ) { + return __objc_msgSend_855( + obj, + sel, + ops, + wait, + ); + } + + late final __objc_msgSend_855Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_855 = __objc_msgSend_855Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_addOperationWithBlock_1 = + _registerName1("addOperationWithBlock:"); + late final _sel_addBarrierBlock_1 = _registerName1("addBarrierBlock:"); + late final _sel_maxConcurrentOperationCount1 = + _registerName1("maxConcurrentOperationCount"); + late final _sel_setMaxConcurrentOperationCount_1 = + _registerName1("setMaxConcurrentOperationCount:"); + late final _sel_isSuspended1 = _registerName1("isSuspended"); + late final _sel_setSuspended_1 = _registerName1("setSuspended:"); + late final _sel_underlyingQueue1 = _registerName1("underlyingQueue"); + ffi.Pointer _objc_msgSend_856( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_856( + obj, + sel, + ); + } + + late final __objc_msgSend_856Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_856 = __objc_msgSend_856Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setUnderlyingQueue_1 = _registerName1("setUnderlyingQueue:"); + void _objc_msgSend_857( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_857( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_857Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_857 = __objc_msgSend_857Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_cancelAllOperations1 = _registerName1("cancelAllOperations"); + late final _sel_waitUntilAllOperationsAreFinished1 = + _registerName1("waitUntilAllOperationsAreFinished"); + late final _sel_currentQueue1 = _registerName1("currentQueue"); + ffi.Pointer _objc_msgSend_858( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_858( + obj, + sel, + ); + } + + late final __objc_msgSend_858Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_858 = __objc_msgSend_858Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_mainQueue1 = _registerName1("mainQueue"); + late final _sel_operations1 = _registerName1("operations"); + late final _sel_operationCount1 = _registerName1("operationCount"); + late final _class_NSPointerArray1 = _getClass1("NSPointerArray"); + late final _sel_initWithOptions_1 = _registerName1("initWithOptions:"); + instancetype _objc_msgSend_859( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ) { + return __objc_msgSend_859( + obj, + sel, + options, + ); + } + + late final __objc_msgSend_859Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_859 = __objc_msgSend_859Ptr.asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _class_NSPointerFunctions1 = _getClass1("NSPointerFunctions"); + late final _sel_pointerFunctionsWithOptions_1 = + _registerName1("pointerFunctionsWithOptions:"); + ffi.Pointer _objc_msgSend_860( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ) { + return __objc_msgSend_860( + obj, + sel, + options, + ); + } + + late final __objc_msgSend_860Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_860 = __objc_msgSend_860Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_hashFunction1 = _registerName1("hashFunction"); + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + _objc_msgSend_861( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_861( + obj, + sel, + ); + } + + late final __objc_msgSend_861Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); + late final __objc_msgSend_861 = __objc_msgSend_861Ptr.asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setHashFunction_1 = _registerName1("setHashFunction:"); + void _objc_msgSend_862( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value, + ) { + return __objc_msgSend_862( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_862Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>( + 'objc_msgSend'); + late final __objc_msgSend_862 = __objc_msgSend_862Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>(); + + late final _sel_isEqualFunction1 = _registerName1("isEqualFunction"); + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + _objc_msgSend_863( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_863( + obj, + sel, + ); + } + + late final __objc_msgSend_863Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); + late final __objc_msgSend_863 = __objc_msgSend_863Ptr.asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setIsEqualFunction_1 = _registerName1("setIsEqualFunction:"); + void _objc_msgSend_864( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value, + ) { + return __objc_msgSend_864( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_864Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>( + 'objc_msgSend'); + late final __objc_msgSend_864 = __objc_msgSend_864Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>(); + + late final _sel_sizeFunction1 = _registerName1("sizeFunction"); + ffi.Pointer< + ffi.NativeFunction)>> + _objc_msgSend_865( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_865( + obj, + sel, + ); + } + + late final __objc_msgSend_865Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); + late final __objc_msgSend_865 = __objc_msgSend_865Ptr.asFunction< + ffi.Pointer< + ffi + .NativeFunction)>> + Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setSizeFunction_1 = _registerName1("setSizeFunction:"); + void _objc_msgSend_866( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer< + ffi + .NativeFunction)>> + value, + ) { + return __objc_msgSend_866( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_866Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>('objc_msgSend'); + late final __objc_msgSend_866 = __objc_msgSend_866Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>(); + + late final _sel_descriptionFunction1 = _registerName1("descriptionFunction"); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + _objc_msgSend_867( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_867( + obj, + sel, + ); + } + + late final __objc_msgSend_867Ptr = + _lookup< + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); + late final __objc_msgSend_867 = __objc_msgSend_867Ptr.asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setDescriptionFunction_1 = + _registerName1("setDescriptionFunction:"); + void _objc_msgSend_868( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + value, + ) { + return __objc_msgSend_868( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_868Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>)>>('objc_msgSend'); + late final __objc_msgSend_868 = __objc_msgSend_868Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>>)>(); + + late final _sel_relinquishFunction1 = _registerName1("relinquishFunction"); + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + _objc_msgSend_869( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_869( + obj, + sel, + ); + } + + late final __objc_msgSend_869Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); + late final __objc_msgSend_869 = __objc_msgSend_869Ptr.asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setRelinquishFunction_1 = + _registerName1("setRelinquishFunction:"); + void _objc_msgSend_870( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value, + ) { + return __objc_msgSend_870( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_870Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>( + 'objc_msgSend'); + late final __objc_msgSend_870 = __objc_msgSend_870Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>(); + + late final _sel_acquireFunction1 = _registerName1("acquireFunction"); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>, + ffi.Bool)>> _objc_msgSend_871( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_871( + obj, + sel, + ); + } + + late final __objc_msgSend_871Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); + late final __objc_msgSend_871 = __objc_msgSend_871Ptr.asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>> + Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setAcquireFunction_1 = _registerName1("setAcquireFunction:"); + void _objc_msgSend_872( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>, + ffi.Bool)>> + value, + ) { + return __objc_msgSend_872( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_872Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>>)>>('objc_msgSend'); + late final __objc_msgSend_872 = __objc_msgSend_872Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>>)>(); + + late final _sel_usesStrongWriteBarrier1 = + _registerName1("usesStrongWriteBarrier"); + late final _sel_setUsesStrongWriteBarrier_1 = + _registerName1("setUsesStrongWriteBarrier:"); + late final _sel_usesWeakReadAndWriteBarriers1 = + _registerName1("usesWeakReadAndWriteBarriers"); + late final _sel_setUsesWeakReadAndWriteBarriers_1 = + _registerName1("setUsesWeakReadAndWriteBarriers:"); + late final _sel_initWithPointerFunctions_1 = + _registerName1("initWithPointerFunctions:"); + instancetype _objc_msgSend_873( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer functions, + ) { + return __objc_msgSend_873( + obj, + sel, + functions, + ); + } + + late final __objc_msgSend_873Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_873 = __objc_msgSend_873Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_pointerArrayWithOptions_1 = + _registerName1("pointerArrayWithOptions:"); + ffi.Pointer _objc_msgSend_874( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ) { + return __objc_msgSend_874( + obj, + sel, + options, + ); + } + + late final __objc_msgSend_874Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_874 = __objc_msgSend_874Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_pointerArrayWithPointerFunctions_1 = + _registerName1("pointerArrayWithPointerFunctions:"); + ffi.Pointer _objc_msgSend_875( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer functions, + ) { + return __objc_msgSend_875( + obj, + sel, + functions, + ); + } + + late final __objc_msgSend_875Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_875 = __objc_msgSend_875Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_pointerFunctions1 = _registerName1("pointerFunctions"); + ffi.Pointer _objc_msgSend_876( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_876( + obj, + sel, + ); + } + + late final __objc_msgSend_876Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_876 = __objc_msgSend_876Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_pointerAtIndex_1 = _registerName1("pointerAtIndex:"); + ffi.Pointer _objc_msgSend_877( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_877( + obj, + sel, + index, + ); + } + + late final __objc_msgSend_877Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_877 = __objc_msgSend_877Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_addPointer_1 = _registerName1("addPointer:"); + late final _sel_removePointerAtIndex_1 = + _registerName1("removePointerAtIndex:"); + late final _sel_insertPointer_atIndex_1 = + _registerName1("insertPointer:atIndex:"); + late final _sel_replacePointerAtIndex_withPointer_1 = + _registerName1("replacePointerAtIndex:withPointer:"); + void _objc_msgSend_878( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ffi.Pointer item, + ) { + return __objc_msgSend_878( + obj, + sel, + index, + item, + ); + } + + late final __objc_msgSend_878Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_878 = __objc_msgSend_878Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); + + late final _sel_compact1 = _registerName1("compact"); + late final _sel_setCount_1 = _registerName1("setCount:"); + late final _sel_pointerArrayWithStrongObjects1 = + _registerName1("pointerArrayWithStrongObjects"); + late final _sel_pointerArrayWithWeakObjects1 = + _registerName1("pointerArrayWithWeakObjects"); + late final _sel_strongObjectsPointerArray1 = + _registerName1("strongObjectsPointerArray"); + ffi.Pointer _objc_msgSend_879( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_879( + obj, + sel, + ); + } + + late final __objc_msgSend_879Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_879 = __objc_msgSend_879Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_weakObjectsPointerArray1 = + _registerName1("weakObjectsPointerArray"); + late final _class_NSProcessInfo1 = _getClass1("NSProcessInfo"); + late final _sel_processInfo1 = _registerName1("processInfo"); + ffi.Pointer _objc_msgSend_880( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_880( + obj, + sel, + ); + } + + late final __objc_msgSend_880Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_880 = __objc_msgSend_880Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_environment1 = _registerName1("environment"); + late final _sel_hostName1 = _registerName1("hostName"); + late final _sel_processName1 = _registerName1("processName"); + late final _sel_setProcessName_1 = _registerName1("setProcessName:"); + late final _sel_processIdentifier1 = _registerName1("processIdentifier"); + late final _sel_globallyUniqueString1 = + _registerName1("globallyUniqueString"); + late final _sel_operatingSystem1 = _registerName1("operatingSystem"); + late final _sel_operatingSystemName1 = _registerName1("operatingSystemName"); + late final _sel_operatingSystemVersionString1 = + _registerName1("operatingSystemVersionString"); + late final _sel_operatingSystemVersion1 = + _registerName1("operatingSystemVersion"); + void _objc_msgSend_881( + ffi.Pointer stret, + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_881( + stret, + obj, + sel, + ); + } + + late final __objc_msgSend_881Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); + late final __objc_msgSend_881 = __objc_msgSend_881Ptr.asFunction< + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_processorCount1 = _registerName1("processorCount"); + late final _sel_activeProcessorCount1 = + _registerName1("activeProcessorCount"); + late final _sel_physicalMemory1 = _registerName1("physicalMemory"); + late final _sel_isOperatingSystemAtLeastVersion_1 = + _registerName1("isOperatingSystemAtLeastVersion:"); + bool _objc_msgSend_882( + ffi.Pointer obj, + ffi.Pointer sel, + NSOperatingSystemVersion version, + ) { + return __objc_msgSend_882( + obj, + sel, + version, + ); + } + + late final __objc_msgSend_882Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + NSOperatingSystemVersion)>>('objc_msgSend'); + late final __objc_msgSend_882 = __objc_msgSend_882Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + NSOperatingSystemVersion)>(); + + late final _sel_systemUptime1 = _registerName1("systemUptime"); + late final _sel_disableSuddenTermination1 = + _registerName1("disableSuddenTermination"); + late final _sel_enableSuddenTermination1 = + _registerName1("enableSuddenTermination"); + late final _sel_disableAutomaticTermination_1 = + _registerName1("disableAutomaticTermination:"); + late final _sel_enableAutomaticTermination_1 = + _registerName1("enableAutomaticTermination:"); + late final _sel_automaticTerminationSupportEnabled1 = + _registerName1("automaticTerminationSupportEnabled"); + late final _sel_setAutomaticTerminationSupportEnabled_1 = + _registerName1("setAutomaticTerminationSupportEnabled:"); + late final _sel_beginActivityWithOptions_reason_1 = + _registerName1("beginActivityWithOptions:reason:"); + ffi.Pointer _objc_msgSend_883( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ffi.Pointer reason, + ) { + return __objc_msgSend_883( + obj, + sel, + options, + reason, + ); + } + + late final __objc_msgSend_883Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_883 = __objc_msgSend_883Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); + + late final _sel_endActivity_1 = _registerName1("endActivity:"); + late final _sel_performActivityWithOptions_reason_usingBlock_1 = + _registerName1("performActivityWithOptions:reason:usingBlock:"); + void _objc_msgSend_884( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ffi.Pointer reason, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_884( + obj, + sel, + options, + reason, + block, + ); + } + + late final __objc_msgSend_884Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_884 = __objc_msgSend_884Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_performExpiringActivityWithReason_usingBlock_1 = + _registerName1("performExpiringActivityWithReason:usingBlock:"); + void _objc_msgSend_885( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer reason, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_885( + obj, + sel, + reason, + block, + ); + } + + late final __objc_msgSend_885Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_885 = __objc_msgSend_885Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_userName1 = _registerName1("userName"); + late final _sel_fullUserName1 = _registerName1("fullUserName"); + late final _sel_thermalState1 = _registerName1("thermalState"); + int _objc_msgSend_886( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_886( + obj, + sel, + ); + } + + late final __objc_msgSend_886Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_886 = __objc_msgSend_886Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_isLowPowerModeEnabled1 = + _registerName1("isLowPowerModeEnabled"); + late final _sel_isMacCatalystApp1 = _registerName1("isMacCatalystApp"); + late final _sel_isiOSAppOnMac1 = _registerName1("isiOSAppOnMac"); + late final _class_NSTextCheckingResult1 = _getClass1("NSTextCheckingResult"); + late final _sel_resultType1 = _registerName1("resultType"); + int _objc_msgSend_887( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_887( + obj, + sel, + ); + } + + late final __objc_msgSend_887Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_887 = __objc_msgSend_887Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_range1 = _registerName1("range"); + late final _sel_orthography1 = _registerName1("orthography"); + ffi.Pointer _objc_msgSend_888( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_888( + obj, + sel, + ); + } + + late final __objc_msgSend_888Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_888 = __objc_msgSend_888Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_grammarDetails1 = _registerName1("grammarDetails"); + late final _sel_duration1 = _registerName1("duration"); + late final _sel_components1 = _registerName1("components"); + late final _sel_replacementString1 = _registerName1("replacementString"); + late final _sel_alternativeStrings1 = _registerName1("alternativeStrings"); + late final _class_NSRegularExpression1 = _getClass1("NSRegularExpression"); + late final _sel_regularExpressionWithPattern_options_error_1 = + _registerName1("regularExpressionWithPattern:options:error:"); + ffi.Pointer _objc_msgSend_889( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer pattern, + int options, + ffi.Pointer> error, + ) { + return __objc_msgSend_889( + obj, + sel, + pattern, + options, + error, + ); + } + + late final __objc_msgSend_889Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_889 = __objc_msgSend_889Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_initWithPattern_options_error_1 = + _registerName1("initWithPattern:options:error:"); + instancetype _objc_msgSend_890( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer pattern, + int options, + ffi.Pointer> error, + ) { + return __objc_msgSend_890( + obj, + sel, + pattern, + options, + error, + ); + } + + late final __objc_msgSend_890Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_890 = __objc_msgSend_890Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_pattern1 = _registerName1("pattern"); + int _objc_msgSend_891( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_891( + obj, + sel, + ); + } + + late final __objc_msgSend_891Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_891 = __objc_msgSend_891Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_numberOfCaptureGroups1 = + _registerName1("numberOfCaptureGroups"); + late final _sel_escapedPatternForString_1 = + _registerName1("escapedPatternForString:"); + late final _sel_enumerateMatchesInString_options_range_usingBlock_1 = + _registerName1("enumerateMatchesInString:options:range:usingBlock:"); + void _objc_msgSend_892( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int options, + _NSRange range, + ffi.Pointer<_ObjCBlock> block, + ) { + return __objc_msgSend_892( + obj, + sel, + string, + options, + range, + block, + ); + } + + late final __objc_msgSend_892Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_892 = __objc_msgSend_892Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, _NSRange, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_matchesInString_options_range_1 = + _registerName1("matchesInString:options:range:"); + ffi.Pointer _objc_msgSend_893( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int options, + _NSRange range, + ) { + return __objc_msgSend_893( + obj, + sel, + string, + options, + range, + ); + } + + late final __objc_msgSend_893Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_893 = __objc_msgSend_893Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, _NSRange)>(); + + late final _sel_numberOfMatchesInString_options_range_1 = + _registerName1("numberOfMatchesInString:options:range:"); + int _objc_msgSend_894( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int options, + _NSRange range, + ) { + return __objc_msgSend_894( + obj, + sel, + string, + options, + range, + ); + } + + late final __objc_msgSend_894Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_894 = __objc_msgSend_894Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, _NSRange)>(); + + late final _sel_firstMatchInString_options_range_1 = + _registerName1("firstMatchInString:options:range:"); + ffi.Pointer _objc_msgSend_895( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int options, + _NSRange range, + ) { + return __objc_msgSend_895( + obj, + sel, + string, + options, + range, + ); + } + + late final __objc_msgSend_895Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_895 = __objc_msgSend_895Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, _NSRange)>(); + + late final _sel_rangeOfFirstMatchInString_options_range_1 = + _registerName1("rangeOfFirstMatchInString:options:range:"); + void _objc_msgSend_896( + ffi.Pointer<_NSRange> stret, + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int options, + _NSRange range, + ) { + return __objc_msgSend_896( + stret, + obj, + sel, + string, + options, + range, + ); + } + + late final __objc_msgSend_896Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend_stret'); + late final __objc_msgSend_896 = __objc_msgSend_896Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, _NSRange)>(); + + late final _sel_stringByReplacingMatchesInString_options_range_withTemplate_1 = + _registerName1( + "stringByReplacingMatchesInString:options:range:withTemplate:"); + ffi.Pointer _objc_msgSend_897( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int options, + _NSRange range, + ffi.Pointer templ, + ) { + return __objc_msgSend_897( + obj, + sel, + string, + options, + range, + templ, + ); + } + + late final __objc_msgSend_897Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_897 = __objc_msgSend_897Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); + + late final _sel_replaceMatchesInString_options_range_withTemplate_1 = + _registerName1("replaceMatchesInString:options:range:withTemplate:"); + int _objc_msgSend_898( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int options, + _NSRange range, + ffi.Pointer templ, + ) { + return __objc_msgSend_898( + obj, + sel, + string, + options, + range, + templ, + ); + } + + late final __objc_msgSend_898Ptr = _lookup< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_898 = __objc_msgSend_898Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, _NSRange, ffi.Pointer)>(); + + late final _sel_replacementStringForResult_inString_offset_template_1 = + _registerName1("replacementStringForResult:inString:offset:template:"); + ffi.Pointer _objc_msgSend_899( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer result, + ffi.Pointer string, + int offset, + ffi.Pointer templ, + ) { + return __objc_msgSend_899( + obj, + sel, + result, + string, + offset, + templ, + ); + } + + late final __objc_msgSend_899Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_899 = __objc_msgSend_899Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); + + late final _sel_escapedTemplateForString_1 = + _registerName1("escapedTemplateForString:"); + late final _sel_regularExpression1 = _registerName1("regularExpression"); + ffi.Pointer _objc_msgSend_900( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_900( + obj, + sel, + ); + } + + late final __objc_msgSend_900Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_900 = __objc_msgSend_900Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_phoneNumber1 = _registerName1("phoneNumber"); + late final _sel_numberOfRanges1 = _registerName1("numberOfRanges"); + late final _sel_rangeAtIndex_1 = _registerName1("rangeAtIndex:"); + late final _sel_rangeWithName_1 = _registerName1("rangeWithName:"); + late final _sel_resultByAdjustingRangesWithOffset_1 = + _registerName1("resultByAdjustingRangesWithOffset:"); + ffi.Pointer _objc_msgSend_901( + ffi.Pointer obj, + ffi.Pointer sel, + int offset, + ) { + return __objc_msgSend_901( + obj, + sel, + offset, + ); + } + + late final __objc_msgSend_901Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_901 = __objc_msgSend_901Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_addressComponents1 = _registerName1("addressComponents"); + late final _sel_orthographyCheckingResultWithRange_orthography_1 = + _registerName1("orthographyCheckingResultWithRange:orthography:"); + ffi.Pointer _objc_msgSend_902( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer orthography, + ) { + return __objc_msgSend_902( + obj, + sel, + range, + orthography, + ); + } + + late final __objc_msgSend_902Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_902 = __objc_msgSend_902Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); + + late final _sel_spellCheckingResultWithRange_1 = + _registerName1("spellCheckingResultWithRange:"); + ffi.Pointer _objc_msgSend_903( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ) { + return __objc_msgSend_903( + obj, + sel, + range, + ); + } + + late final __objc_msgSend_903Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); + late final __objc_msgSend_903 = __objc_msgSend_903Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, _NSRange)>(); + + late final _sel_grammarCheckingResultWithRange_details_1 = + _registerName1("grammarCheckingResultWithRange:details:"); + ffi.Pointer _objc_msgSend_904( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer details, + ) { + return __objc_msgSend_904( + obj, + sel, + range, + details, + ); + } + + late final __objc_msgSend_904Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_904 = __objc_msgSend_904Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); + + late final _sel_dateCheckingResultWithRange_date_1 = + _registerName1("dateCheckingResultWithRange:date:"); + ffi.Pointer _objc_msgSend_905( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer date, + ) { + return __objc_msgSend_905( + obj, + sel, + range, + date, + ); + } + + late final __objc_msgSend_905Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_905 = __objc_msgSend_905Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); + + late final _sel_dateCheckingResultWithRange_date_timeZone_duration_1 = + _registerName1("dateCheckingResultWithRange:date:timeZone:duration:"); + ffi.Pointer _objc_msgSend_906( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer date, + ffi.Pointer timeZone, + double duration, + ) { + return __objc_msgSend_906( + obj, + sel, + range, + date, + timeZone, + duration, + ); + } + + late final __objc_msgSend_906Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer, + ffi.Double)>>('objc_msgSend'); + late final __objc_msgSend_906 = __objc_msgSend_906Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer, + double)>(); + + late final _sel_addressCheckingResultWithRange_components_1 = + _registerName1("addressCheckingResultWithRange:components:"); + ffi.Pointer _objc_msgSend_907( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer components, + ) { + return __objc_msgSend_907( + obj, + sel, + range, + components, + ); + } + + late final __objc_msgSend_907Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_907 = __objc_msgSend_907Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); + + late final _sel_linkCheckingResultWithRange_URL_1 = + _registerName1("linkCheckingResultWithRange:URL:"); + ffi.Pointer _objc_msgSend_908( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer url, + ) { + return __objc_msgSend_908( + obj, + sel, + range, + url, + ); + } + + late final __objc_msgSend_908Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_908 = __objc_msgSend_908Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); + + late final _sel_quoteCheckingResultWithRange_replacementString_1 = + _registerName1("quoteCheckingResultWithRange:replacementString:"); + ffi.Pointer _objc_msgSend_909( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer replacementString, + ) { + return __objc_msgSend_909( + obj, + sel, + range, + replacementString, + ); + } + + late final __objc_msgSend_909Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_909 = __objc_msgSend_909Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); + + late final _sel_dashCheckingResultWithRange_replacementString_1 = + _registerName1("dashCheckingResultWithRange:replacementString:"); + late final _sel_replacementCheckingResultWithRange_replacementString_1 = + _registerName1("replacementCheckingResultWithRange:replacementString:"); + late final _sel_correctionCheckingResultWithRange_replacementString_1 = + _registerName1("correctionCheckingResultWithRange:replacementString:"); + late final _sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_1 = + _registerName1( + "correctionCheckingResultWithRange:replacementString:alternativeStrings:"); + ffi.Pointer _objc_msgSend_910( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer replacementString, + ffi.Pointer alternativeStrings, + ) { + return __objc_msgSend_910( + obj, + sel, + range, + replacementString, + alternativeStrings, + ); + } + + late final __objc_msgSend_910Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_910 = __objc_msgSend_910Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_regularExpressionCheckingResultWithRanges_count_regularExpression_1 = + _registerName1( + "regularExpressionCheckingResultWithRanges:count:regularExpression:"); + ffi.Pointer _objc_msgSend_911( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_NSRange> ranges, + int count, + ffi.Pointer regularExpression, + ) { + return __objc_msgSend_911( + obj, + sel, + ranges, + count, + regularExpression, + ); + } + + late final __objc_msgSend_911Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_911 = __objc_msgSend_911Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_NSRange>, + int, + ffi.Pointer)>(); + + late final _sel_phoneNumberCheckingResultWithRange_phoneNumber_1 = + _registerName1("phoneNumberCheckingResultWithRange:phoneNumber:"); + late final _sel_transitInformationCheckingResultWithRange_components_1 = + _registerName1("transitInformationCheckingResultWithRange:components:"); + late final _class_NSURLCache1 = _getClass1("NSURLCache"); + late final _sel_sharedURLCache1 = _registerName1("sharedURLCache"); + ffi.Pointer _objc_msgSend_912( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_912( + obj, + sel, + ); + } + + late final __objc_msgSend_912Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_912 = __objc_msgSend_912Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setSharedURLCache_1 = _registerName1("setSharedURLCache:"); + void _objc_msgSend_913( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_913( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_913Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_913 = __objc_msgSend_913Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithMemoryCapacity_diskCapacity_diskPath_1 = + _registerName1("initWithMemoryCapacity:diskCapacity:diskPath:"); + instancetype _objc_msgSend_914( + ffi.Pointer obj, + ffi.Pointer sel, + int memoryCapacity, + int diskCapacity, + ffi.Pointer path, + ) { + return __objc_msgSend_914( + obj, + sel, + memoryCapacity, + diskCapacity, + path, + ); + } + + late final __objc_msgSend_914Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_914 = __objc_msgSend_914Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, int, + int, ffi.Pointer)>(); + + late final _sel_initWithMemoryCapacity_diskCapacity_directoryURL_1 = + _registerName1("initWithMemoryCapacity:diskCapacity:directoryURL:"); + instancetype _objc_msgSend_915( + ffi.Pointer obj, + ffi.Pointer sel, + int memoryCapacity, + int diskCapacity, + ffi.Pointer directoryURL, + ) { + return __objc_msgSend_915( + obj, + sel, + memoryCapacity, + diskCapacity, + directoryURL, + ); + } + + late final __objc_msgSend_915Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_915 = __objc_msgSend_915Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, int, + int, ffi.Pointer)>(); + + late final _class_NSCachedURLResponse1 = _getClass1("NSCachedURLResponse"); + late final _sel_initWithResponse_data_1 = + _registerName1("initWithResponse:data:"); + instancetype _objc_msgSend_916( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer response, + ffi.Pointer data, + ) { + return __objc_msgSend_916( + obj, + sel, + response, + data, + ); + } + + late final __objc_msgSend_916Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_916 = __objc_msgSend_916Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithResponse_data_userInfo_storagePolicy_1 = + _registerName1("initWithResponse:data:userInfo:storagePolicy:"); + instancetype _objc_msgSend_917( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer response, + ffi.Pointer data, + ffi.Pointer userInfo, + int storagePolicy, + ) { + return __objc_msgSend_917( + obj, + sel, + response, + data, + userInfo, + storagePolicy, + ); + } + + late final __objc_msgSend_917Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_917 = __objc_msgSend_917Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); + + late final _sel_storagePolicy1 = _registerName1("storagePolicy"); + int _objc_msgSend_918( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_918( + obj, + sel, + ); + } + + late final __objc_msgSend_918Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_918 = __objc_msgSend_918Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_cachedResponseForRequest_1 = + _registerName1("cachedResponseForRequest:"); + ffi.Pointer _objc_msgSend_919( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ) { + return __objc_msgSend_919( + obj, + sel, + request, + ); + } + + late final __objc_msgSend_919Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_919 = __objc_msgSend_919Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_storeCachedResponse_forRequest_1 = + _registerName1("storeCachedResponse:forRequest:"); + void _objc_msgSend_920( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer cachedResponse, + ffi.Pointer request, + ) { + return __objc_msgSend_920( + obj, + sel, + cachedResponse, + request, + ); + } + + late final __objc_msgSend_920Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_920 = __objc_msgSend_920Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_removeCachedResponseForRequest_1 = + _registerName1("removeCachedResponseForRequest:"); + void _objc_msgSend_921( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ) { + return __objc_msgSend_921( + obj, + sel, + request, + ); + } + + late final __objc_msgSend_921Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_921 = __objc_msgSend_921Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_removeAllCachedResponses1 = + _registerName1("removeAllCachedResponses"); + late final _sel_removeCachedResponsesSinceDate_1 = + _registerName1("removeCachedResponsesSinceDate:"); + late final _sel_memoryCapacity1 = _registerName1("memoryCapacity"); + late final _sel_setMemoryCapacity_1 = _registerName1("setMemoryCapacity:"); + late final _sel_diskCapacity1 = _registerName1("diskCapacity"); + late final _sel_setDiskCapacity_1 = _registerName1("setDiskCapacity:"); + late final _sel_currentMemoryUsage1 = _registerName1("currentMemoryUsage"); + late final _sel_currentDiskUsage1 = _registerName1("currentDiskUsage"); + late final _class_NSURLSessionDataTask1 = _getClass1("NSURLSessionDataTask"); + late final _sel_storeCachedResponse_forDataTask_1 = + _registerName1("storeCachedResponse:forDataTask:"); + void _objc_msgSend_922( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer cachedResponse, + ffi.Pointer dataTask, + ) { + return __objc_msgSend_922( + obj, + sel, + cachedResponse, + dataTask, + ); + } + + late final __objc_msgSend_922Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_922 = __objc_msgSend_922Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_getCachedResponseForDataTask_completionHandler_1 = + _registerName1("getCachedResponseForDataTask:completionHandler:"); + void _objc_msgSend_923( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer dataTask, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_923( + obj, + sel, + dataTask, + completionHandler, + ); + } + + late final __objc_msgSend_923Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_923 = __objc_msgSend_923Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_removeCachedResponseForDataTask_1 = + _registerName1("removeCachedResponseForDataTask:"); + void _objc_msgSend_924( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer dataTask, + ) { + return __objc_msgSend_924( + obj, + sel, + dataTask, + ); + } + + late final __objc_msgSend_924Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_924 = __objc_msgSend_924Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSURLConnection1 = _getClass1("NSURLConnection"); + late final _sel_initWithRequest_delegate_startImmediately_1 = + _registerName1("initWithRequest:delegate:startImmediately:"); + instancetype _objc_msgSend_925( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer delegate, + bool startImmediately, + ) { + return __objc_msgSend_925( + obj, + sel, + request, + delegate, + startImmediately, + ); + } + + late final __objc_msgSend_925Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_925 = __objc_msgSend_925Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_initWithRequest_delegate_1 = + _registerName1("initWithRequest:delegate:"); + instancetype _objc_msgSend_926( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer delegate, + ) { + return __objc_msgSend_926( + obj, + sel, + request, + delegate, + ); + } + + late final __objc_msgSend_926Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_926 = __objc_msgSend_926Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_connectionWithRequest_delegate_1 = + _registerName1("connectionWithRequest:delegate:"); + ffi.Pointer _objc_msgSend_927( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer delegate, + ) { + return __objc_msgSend_927( + obj, + sel, + request, + delegate, + ); + } + + late final __objc_msgSend_927Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_927 = __objc_msgSend_927Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_unscheduleFromRunLoop_forMode_1 = + _registerName1("unscheduleFromRunLoop:forMode:"); + late final _sel_setDelegateQueue_1 = _registerName1("setDelegateQueue:"); + void _objc_msgSend_928( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer queue, + ) { + return __objc_msgSend_928( + obj, + sel, + queue, + ); + } + + late final __objc_msgSend_928Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_928 = __objc_msgSend_928Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_canHandleRequest_1 = _registerName1("canHandleRequest:"); + bool _objc_msgSend_929( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ) { + return __objc_msgSend_929( + obj, + sel, + request, + ); + } + + late final __objc_msgSend_929Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_929 = __objc_msgSend_929Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_sendSynchronousRequest_returningResponse_error_1 = + _registerName1("sendSynchronousRequest:returningResponse:error:"); + ffi.Pointer _objc_msgSend_930( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer> response, + ffi.Pointer> error, + ) { + return __objc_msgSend_930( + obj, + sel, + request, + response, + error, + ); + } + + late final __objc_msgSend_930Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_930 = __objc_msgSend_930Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); + + late final _sel_sendAsynchronousRequest_queue_completionHandler_1 = + _registerName1("sendAsynchronousRequest:queue:completionHandler:"); + void _objc_msgSend_931( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer queue, + ffi.Pointer<_ObjCBlock> handler, + ) { + return __objc_msgSend_931( + obj, + sel, + request, + queue, + handler, + ); + } + + late final __objc_msgSend_931Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_931 = __objc_msgSend_931Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _class_NSURLCredential1 = _getClass1("NSURLCredential"); + late final _sel_persistence1 = _registerName1("persistence"); + int _objc_msgSend_932( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_932( + obj, + sel, + ); + } + + late final __objc_msgSend_932Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_932 = __objc_msgSend_932Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithUser_password_persistence_1 = + _registerName1("initWithUser:password:persistence:"); + instancetype _objc_msgSend_933( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer user, + ffi.Pointer password, + int persistence, + ) { + return __objc_msgSend_933( + obj, + sel, + user, + password, + persistence, + ); + } + + late final __objc_msgSend_933Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_933 = __objc_msgSend_933Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_credentialWithUser_password_persistence_1 = + _registerName1("credentialWithUser:password:persistence:"); + ffi.Pointer _objc_msgSend_934( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer user, + ffi.Pointer password, + int persistence, + ) { + return __objc_msgSend_934( + obj, + sel, + user, + password, + persistence, + ); + } + + late final __objc_msgSend_934Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_934 = __objc_msgSend_934Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); + + late final _sel_hasPassword1 = _registerName1("hasPassword"); + late final _sel_initWithIdentity_certificates_persistence_1 = + _registerName1("initWithIdentity:certificates:persistence:"); + instancetype _objc_msgSend_935( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<__SecIdentity> identity, + ffi.Pointer certArray, + int persistence, + ) { + return __objc_msgSend_935( + obj, + sel, + identity, + certArray, + persistence, + ); + } + + late final __objc_msgSend_935Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_935 = __objc_msgSend_935Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<__SecIdentity>, ffi.Pointer, int)>(); + + late final _sel_credentialWithIdentity_certificates_persistence_1 = + _registerName1("credentialWithIdentity:certificates:persistence:"); + ffi.Pointer _objc_msgSend_936( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<__SecIdentity> identity, + ffi.Pointer certArray, + int persistence, + ) { + return __objc_msgSend_936( + obj, + sel, + identity, + certArray, + persistence, + ); + } + + late final __objc_msgSend_936Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_936 = __objc_msgSend_936Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + int)>(); + + late final _sel_identity1 = _registerName1("identity"); + ffi.Pointer<__SecIdentity> _objc_msgSend_937( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_937( + obj, + sel, + ); + } + + late final __objc_msgSend_937Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer<__SecIdentity> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_937 = __objc_msgSend_937Ptr.asFunction< + ffi.Pointer<__SecIdentity> Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_certificates1 = _registerName1("certificates"); + late final _sel_initWithTrust_1 = _registerName1("initWithTrust:"); + instancetype _objc_msgSend_938( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<__SecTrust> trust, + ) { + return __objc_msgSend_938( + obj, + sel, + trust, + ); + } + + late final __objc_msgSend_938Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<__SecTrust>)>>('objc_msgSend'); + late final __objc_msgSend_938 = __objc_msgSend_938Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<__SecTrust>)>(); + + late final _sel_credentialForTrust_1 = _registerName1("credentialForTrust:"); + ffi.Pointer _objc_msgSend_939( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<__SecTrust> trust, + ) { + return __objc_msgSend_939( + obj, + sel, + trust, + ); + } + + late final __objc_msgSend_939Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<__SecTrust>)>>('objc_msgSend'); + late final __objc_msgSend_939 = __objc_msgSend_939Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<__SecTrust>)>(); + + late final _class_NSURLProtectionSpace1 = _getClass1("NSURLProtectionSpace"); + late final _sel_initWithHost_port_protocol_realm_authenticationMethod_1 = + _registerName1("initWithHost:port:protocol:realm:authenticationMethod:"); + instancetype _objc_msgSend_940( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer host, + int port, + ffi.Pointer protocol, + ffi.Pointer realm, + ffi.Pointer authenticationMethod, + ) { + return __objc_msgSend_940( + obj, + sel, + host, + port, + protocol, + realm, + authenticationMethod, + ); + } + + late final __objc_msgSend_940Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_940 = __objc_msgSend_940Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithProxyHost_port_type_realm_authenticationMethod_1 = + _registerName1("initWithProxyHost:port:type:realm:authenticationMethod:"); + late final _sel_realm1 = _registerName1("realm"); + late final _sel_receivesCredentialSecurely1 = + _registerName1("receivesCredentialSecurely"); + late final _sel_isProxy1 = _registerName1("isProxy"); + late final _sel_proxyType1 = _registerName1("proxyType"); + late final _sel_protocol1 = _registerName1("protocol"); + late final _sel_authenticationMethod1 = + _registerName1("authenticationMethod"); + late final _sel_distinguishedNames1 = _registerName1("distinguishedNames"); + late final _sel_serverTrust1 = _registerName1("serverTrust"); + ffi.Pointer<__SecTrust> _objc_msgSend_941( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_941( + obj, + sel, + ); + } + + late final __objc_msgSend_941Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer<__SecTrust> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_941 = __objc_msgSend_941Ptr.asFunction< + ffi.Pointer<__SecTrust> Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSURLCredentialStorage1 = + _getClass1("NSURLCredentialStorage"); + late final _sel_sharedCredentialStorage1 = + _registerName1("sharedCredentialStorage"); + ffi.Pointer _objc_msgSend_942( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_942( + obj, + sel, + ); + } + + late final __objc_msgSend_942Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_942 = __objc_msgSend_942Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_credentialsForProtectionSpace_1 = + _registerName1("credentialsForProtectionSpace:"); + ffi.Pointer _objc_msgSend_943( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer space, + ) { + return __objc_msgSend_943( + obj, + sel, + space, + ); + } + + late final __objc_msgSend_943Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_943 = __objc_msgSend_943Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_allCredentials1 = _registerName1("allCredentials"); + late final _sel_setCredential_forProtectionSpace_1 = + _registerName1("setCredential:forProtectionSpace:"); + void _objc_msgSend_944( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer credential, + ffi.Pointer space, + ) { + return __objc_msgSend_944( + obj, + sel, + credential, + space, + ); + } + + late final __objc_msgSend_944Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_944 = __objc_msgSend_944Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_removeCredential_forProtectionSpace_1 = + _registerName1("removeCredential:forProtectionSpace:"); + late final _sel_removeCredential_forProtectionSpace_options_1 = + _registerName1("removeCredential:forProtectionSpace:options:"); + void _objc_msgSend_945( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer credential, + ffi.Pointer space, + ffi.Pointer options, + ) { + return __objc_msgSend_945( + obj, + sel, + credential, + space, + options, + ); + } + + late final __objc_msgSend_945Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_945 = __objc_msgSend_945Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_defaultCredentialForProtectionSpace_1 = + _registerName1("defaultCredentialForProtectionSpace:"); + ffi.Pointer _objc_msgSend_946( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer space, + ) { + return __objc_msgSend_946( + obj, + sel, + space, + ); + } + + late final __objc_msgSend_946Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_946 = __objc_msgSend_946Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setDefaultCredential_forProtectionSpace_1 = + _registerName1("setDefaultCredential:forProtectionSpace:"); + late final _sel_getCredentialsForProtectionSpace_task_completionHandler_1 = + _registerName1( + "getCredentialsForProtectionSpace:task:completionHandler:"); + void _objc_msgSend_947( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer protectionSpace, + ffi.Pointer task, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_947( + obj, + sel, + protectionSpace, + task, + completionHandler, + ); + } + + late final __objc_msgSend_947Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_947 = __objc_msgSend_947Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_setCredential_forProtectionSpace_task_1 = + _registerName1("setCredential:forProtectionSpace:task:"); + void _objc_msgSend_948( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer credential, + ffi.Pointer protectionSpace, + ffi.Pointer task, + ) { + return __objc_msgSend_948( + obj, + sel, + credential, + protectionSpace, + task, + ); + } + + late final __objc_msgSend_948Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_948 = __objc_msgSend_948Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_removeCredential_forProtectionSpace_options_task_1 = + _registerName1("removeCredential:forProtectionSpace:options:task:"); + void _objc_msgSend_949( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer credential, + ffi.Pointer protectionSpace, + ffi.Pointer options, + ffi.Pointer task, + ) { + return __objc_msgSend_949( + obj, + sel, + credential, + protectionSpace, + options, + task, + ); + } + + late final __objc_msgSend_949Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_949 = __objc_msgSend_949Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_getDefaultCredentialForProtectionSpace_task_completionHandler_1 = + _registerName1( + "getDefaultCredentialForProtectionSpace:task:completionHandler:"); + void _objc_msgSend_950( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer space, + ffi.Pointer task, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_950( + obj, + sel, + space, + task, + completionHandler, + ); + } + + late final __objc_msgSend_950Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_950 = __objc_msgSend_950Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_setDefaultCredential_forProtectionSpace_task_1 = + _registerName1("setDefaultCredential:forProtectionSpace:task:"); + late final _class_NSURLProtocol1 = _getClass1("NSURLProtocol"); + late final _sel_initWithRequest_cachedResponse_client_1 = + _registerName1("initWithRequest:cachedResponse:client:"); + instancetype _objc_msgSend_951( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer cachedResponse, + ffi.Pointer client, + ) { + return __objc_msgSend_951( + obj, + sel, + request, + cachedResponse, + client, + ); + } + + late final __objc_msgSend_951Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_951 = __objc_msgSend_951Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_client1 = _registerName1("client"); + late final _sel_request1 = _registerName1("request"); + late final _sel_cachedResponse1 = _registerName1("cachedResponse"); + ffi.Pointer _objc_msgSend_952( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_952( + obj, + sel, + ); + } + + late final __objc_msgSend_952Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_952 = __objc_msgSend_952Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_canInitWithRequest_1 = _registerName1("canInitWithRequest:"); + late final _sel_canonicalRequestForRequest_1 = + _registerName1("canonicalRequestForRequest:"); + ffi.Pointer _objc_msgSend_953( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ) { + return __objc_msgSend_953( + obj, + sel, + request, + ); + } + + late final __objc_msgSend_953Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_953 = __objc_msgSend_953Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_requestIsCacheEquivalent_toRequest_1 = + _registerName1("requestIsCacheEquivalent:toRequest:"); + bool _objc_msgSend_954( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer a, + ffi.Pointer b, + ) { + return __objc_msgSend_954( + obj, + sel, + a, + b, + ); + } + + late final __objc_msgSend_954Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_954 = __objc_msgSend_954Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_startLoading1 = _registerName1("startLoading"); + late final _sel_stopLoading1 = _registerName1("stopLoading"); + late final _sel_propertyForKey_inRequest_1 = + _registerName1("propertyForKey:inRequest:"); + ffi.Pointer _objc_msgSend_955( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ffi.Pointer request, + ) { + return __objc_msgSend_955( + obj, + sel, + key, + request, + ); + } + + late final __objc_msgSend_955Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_955 = __objc_msgSend_955Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSMutableURLRequest1 = _getClass1("NSMutableURLRequest"); + late final _sel_setURL_1 = _registerName1("setURL:"); + late final _sel_setCachePolicy_1 = _registerName1("setCachePolicy:"); + void _objc_msgSend_956( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_956( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_956Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_956 = __objc_msgSend_956Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_setTimeoutInterval_1 = _registerName1("setTimeoutInterval:"); + late final _sel_setMainDocumentURL_1 = _registerName1("setMainDocumentURL:"); + late final _sel_setNetworkServiceType_1 = + _registerName1("setNetworkServiceType:"); + void _objc_msgSend_957( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_957( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_957Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_957 = __objc_msgSend_957Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_setAllowsCellularAccess_1 = + _registerName1("setAllowsCellularAccess:"); + late final _sel_setAllowsExpensiveNetworkAccess_1 = + _registerName1("setAllowsExpensiveNetworkAccess:"); + late final _sel_setAllowsConstrainedNetworkAccess_1 = + _registerName1("setAllowsConstrainedNetworkAccess:"); + late final _sel_setAssumesHTTP3Capable_1 = + _registerName1("setAssumesHTTP3Capable:"); + late final _sel_setAttribution_1 = _registerName1("setAttribution:"); + void _objc_msgSend_958( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_958( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_958Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_958 = __objc_msgSend_958Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_setRequiresDNSSECValidation_1 = + _registerName1("setRequiresDNSSECValidation:"); + late final _sel_setHTTPMethod_1 = _registerName1("setHTTPMethod:"); + late final _sel_setAllHTTPHeaderFields_1 = + _registerName1("setAllHTTPHeaderFields:"); + late final _sel_setValue_forHTTPHeaderField_1 = + _registerName1("setValue:forHTTPHeaderField:"); + late final _sel_addValue_forHTTPHeaderField_1 = + _registerName1("addValue:forHTTPHeaderField:"); + late final _sel_setHTTPBody_1 = _registerName1("setHTTPBody:"); + void _objc_msgSend_959( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_959( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_959Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_959 = __objc_msgSend_959Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setHTTPBodyStream_1 = _registerName1("setHTTPBodyStream:"); + void _objc_msgSend_960( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_960( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_960Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_960 = __objc_msgSend_960Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setHTTPShouldHandleCookies_1 = + _registerName1("setHTTPShouldHandleCookies:"); + late final _sel_setHTTPShouldUsePipelining_1 = + _registerName1("setHTTPShouldUsePipelining:"); + late final _sel_setProperty_forKey_inRequest_1 = + _registerName1("setProperty:forKey:inRequest:"); + void _objc_msgSend_961( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ffi.Pointer key, + ffi.Pointer request, + ) { + return __objc_msgSend_961( + obj, + sel, + value, + key, + request, + ); + } + + late final __objc_msgSend_961Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_961 = __objc_msgSend_961Ptr.asFunction< + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_removePropertyForKey_inRequest_1 = + _registerName1("removePropertyForKey:inRequest:"); + void _objc_msgSend_962( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer key, + ffi.Pointer request, + ) { + return __objc_msgSend_962( + obj, + sel, + key, + request, + ); + } + + late final __objc_msgSend_962Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_962 = __objc_msgSend_962Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_registerClass_1 = _registerName1("registerClass:"); + late final _sel_unregisterClass_1 = _registerName1("unregisterClass:"); + late final _sel_canInitWithTask_1 = _registerName1("canInitWithTask:"); + bool _objc_msgSend_963( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer task, + ) { + return __objc_msgSend_963( + obj, + sel, + task, + ); + } + + late final __objc_msgSend_963Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_963 = __objc_msgSend_963Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_initWithTask_cachedResponse_client_1 = + _registerName1("initWithTask:cachedResponse:client:"); + instancetype _objc_msgSend_964( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer task, + ffi.Pointer cachedResponse, + ffi.Pointer client, + ) { + return __objc_msgSend_964( + obj, + sel, + task, + cachedResponse, + client, + ); + } + + late final __objc_msgSend_964Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_964 = __objc_msgSend_964Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_task1 = _registerName1("task"); + ffi.Pointer _objc_msgSend_965( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_965( + obj, + sel, + ); + } + + late final __objc_msgSend_965Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_965 = __objc_msgSend_965Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSXMLParser1 = _getClass1("NSXMLParser"); + late final _sel_initWithStream_1 = _registerName1("initWithStream:"); + instancetype _objc_msgSend_966( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer stream, + ) { + return __objc_msgSend_966( + obj, + sel, + stream, + ); + } + + late final __objc_msgSend_966Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_966 = __objc_msgSend_966Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_shouldProcessNamespaces1 = + _registerName1("shouldProcessNamespaces"); + late final _sel_setShouldProcessNamespaces_1 = + _registerName1("setShouldProcessNamespaces:"); + late final _sel_shouldReportNamespacePrefixes1 = + _registerName1("shouldReportNamespacePrefixes"); + late final _sel_setShouldReportNamespacePrefixes_1 = + _registerName1("setShouldReportNamespacePrefixes:"); + late final _sel_externalEntityResolvingPolicy1 = + _registerName1("externalEntityResolvingPolicy"); + int _objc_msgSend_967( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_967( + obj, + sel, + ); + } + + late final __objc_msgSend_967Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_967 = __objc_msgSend_967Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setExternalEntityResolvingPolicy_1 = + _registerName1("setExternalEntityResolvingPolicy:"); + void _objc_msgSend_968( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_968( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_968Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_968 = __objc_msgSend_968Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_allowedExternalEntityURLs1 = + _registerName1("allowedExternalEntityURLs"); + late final _sel_setAllowedExternalEntityURLs_1 = + _registerName1("setAllowedExternalEntityURLs:"); + void _objc_msgSend_969( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_969( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_969Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_969 = __objc_msgSend_969Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_parse1 = _registerName1("parse"); + late final _sel_abortParsing1 = _registerName1("abortParsing"); + late final _sel_parserError1 = _registerName1("parserError"); + late final _sel_shouldResolveExternalEntities1 = + _registerName1("shouldResolveExternalEntities"); + late final _sel_setShouldResolveExternalEntities_1 = + _registerName1("setShouldResolveExternalEntities:"); + late final _sel_publicID1 = _registerName1("publicID"); + late final _sel_systemID1 = _registerName1("systemID"); + late final _sel_lineNumber1 = _registerName1("lineNumber"); + late final _sel_columnNumber1 = _registerName1("columnNumber"); + late final _class_NSFileWrapper1 = _getClass1("NSFileWrapper"); + late final _sel_initWithURL_options_error_1 = + _registerName1("initWithURL:options:error:"); + instancetype _objc_msgSend_970( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int options, + ffi.Pointer> outError, + ) { + return __objc_msgSend_970( + obj, + sel, + url, + options, + outError, + ); + } + + late final __objc_msgSend_970Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_970 = __objc_msgSend_970Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_initDirectoryWithFileWrappers_1 = + _registerName1("initDirectoryWithFileWrappers:"); + late final _sel_initRegularFileWithContents_1 = + _registerName1("initRegularFileWithContents:"); + late final _sel_initSymbolicLinkWithDestinationURL_1 = + _registerName1("initSymbolicLinkWithDestinationURL:"); + late final _sel_initWithSerializedRepresentation_1 = + _registerName1("initWithSerializedRepresentation:"); + late final _sel_isDirectory1 = _registerName1("isDirectory"); + late final _sel_isRegularFile1 = _registerName1("isRegularFile"); + late final _sel_isSymbolicLink1 = _registerName1("isSymbolicLink"); + late final _sel_preferredFilename1 = _registerName1("preferredFilename"); + late final _sel_setPreferredFilename_1 = + _registerName1("setPreferredFilename:"); + late final _sel_filename1 = _registerName1("filename"); + late final _sel_setFilename_1 = _registerName1("setFilename:"); + late final _sel_fileAttributes1 = _registerName1("fileAttributes"); + late final _sel_setFileAttributes_1 = _registerName1("setFileAttributes:"); + late final _sel_matchesContentsOfURL_1 = + _registerName1("matchesContentsOfURL:"); + late final _sel_readFromURL_options_error_1 = + _registerName1("readFromURL:options:error:"); + bool _objc_msgSend_971( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int options, + ffi.Pointer> outError, + ) { + return __objc_msgSend_971( + obj, + sel, + url, + options, + outError, + ); + } + + late final __objc_msgSend_971Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_971 = __objc_msgSend_971Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_writeToURL_options_originalContentsURL_error_1 = + _registerName1("writeToURL:options:originalContentsURL:error:"); + bool _objc_msgSend_972( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int options, + ffi.Pointer originalContentsURL, + ffi.Pointer> outError, + ) { + return __objc_msgSend_972( + obj, + sel, + url, + options, + originalContentsURL, + outError, + ); + } + + late final __objc_msgSend_972Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_972 = __objc_msgSend_972Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_serializedRepresentation1 = + _registerName1("serializedRepresentation"); + late final _sel_addFileWrapper_1 = _registerName1("addFileWrapper:"); + ffi.Pointer _objc_msgSend_973( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer child, + ) { + return __objc_msgSend_973( + obj, + sel, + child, + ); + } + + late final __objc_msgSend_973Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_973 = __objc_msgSend_973Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_addRegularFileWithContents_preferredFilename_1 = + _registerName1("addRegularFileWithContents:preferredFilename:"); + ffi.Pointer _objc_msgSend_974( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + ffi.Pointer fileName, + ) { + return __objc_msgSend_974( + obj, + sel, + data, + fileName, + ); + } + + late final __objc_msgSend_974Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_974 = __objc_msgSend_974Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_removeFileWrapper_1 = _registerName1("removeFileWrapper:"); + void _objc_msgSend_975( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer child, + ) { + return __objc_msgSend_975( + obj, + sel, + child, + ); + } + + late final __objc_msgSend_975Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_975 = __objc_msgSend_975Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_fileWrappers1 = _registerName1("fileWrappers"); + late final _sel_keyForFileWrapper_1 = _registerName1("keyForFileWrapper:"); + late final _sel_regularFileContents1 = _registerName1("regularFileContents"); + late final _sel_symbolicLinkDestinationURL1 = + _registerName1("symbolicLinkDestinationURL"); + late final _sel_initSymbolicLinkWithDestination_1 = + _registerName1("initSymbolicLinkWithDestination:"); + late final _sel_needsToBeUpdatedFromPath_1 = + _registerName1("needsToBeUpdatedFromPath:"); + late final _sel_updateFromPath_1 = _registerName1("updateFromPath:"); + late final _sel_writeToFile_atomically_updateFilenames_1 = + _registerName1("writeToFile:atomically:updateFilenames:"); + bool _objc_msgSend_976( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + bool atomicFlag, + bool updateFilenamesFlag, + ) { + return __objc_msgSend_976( + obj, + sel, + path, + atomicFlag, + updateFilenamesFlag, + ); + } + + late final __objc_msgSend_976Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_976 = __objc_msgSend_976Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool, bool)>(); + + late final _sel_addFileWithPath_1 = _registerName1("addFileWithPath:"); + late final _sel_addSymbolicLinkWithDestination_preferredFilename_1 = + _registerName1("addSymbolicLinkWithDestination:preferredFilename:"); + late final _sel_symbolicLinkDestination1 = + _registerName1("symbolicLinkDestination"); + late final _class_NSURLSession1 = _getClass1("NSURLSession"); + late final _sel_sharedSession1 = _registerName1("sharedSession"); + ffi.Pointer _objc_msgSend_977( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_977( + obj, + sel, + ); + } + + late final __objc_msgSend_977Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_977 = __objc_msgSend_977Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSURLSessionConfiguration1 = + _getClass1("NSURLSessionConfiguration"); + late final _sel_defaultSessionConfiguration1 = + _registerName1("defaultSessionConfiguration"); + ffi.Pointer _objc_msgSend_978( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_978( + obj, + sel, + ); + } + + late final __objc_msgSend_978Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_978 = __objc_msgSend_978Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_ephemeralSessionConfiguration1 = + _registerName1("ephemeralSessionConfiguration"); + late final _sel_backgroundSessionConfigurationWithIdentifier_1 = + _registerName1("backgroundSessionConfigurationWithIdentifier:"); + ffi.Pointer _objc_msgSend_979( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer identifier, + ) { + return __objc_msgSend_979( + obj, + sel, + identifier, + ); + } + + late final __objc_msgSend_979Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_979 = __objc_msgSend_979Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_identifier1 = _registerName1("identifier"); + late final _sel_requestCachePolicy1 = _registerName1("requestCachePolicy"); + late final _sel_setRequestCachePolicy_1 = + _registerName1("setRequestCachePolicy:"); + late final _sel_timeoutIntervalForRequest1 = + _registerName1("timeoutIntervalForRequest"); + late final _sel_setTimeoutIntervalForRequest_1 = + _registerName1("setTimeoutIntervalForRequest:"); + late final _sel_timeoutIntervalForResource1 = + _registerName1("timeoutIntervalForResource"); + late final _sel_setTimeoutIntervalForResource_1 = + _registerName1("setTimeoutIntervalForResource:"); + late final _sel_waitsForConnectivity1 = + _registerName1("waitsForConnectivity"); + late final _sel_setWaitsForConnectivity_1 = + _registerName1("setWaitsForConnectivity:"); + late final _sel_isDiscretionary1 = _registerName1("isDiscretionary"); + late final _sel_setDiscretionary_1 = _registerName1("setDiscretionary:"); + late final _sel_sharedContainerIdentifier1 = + _registerName1("sharedContainerIdentifier"); + late final _sel_setSharedContainerIdentifier_1 = + _registerName1("setSharedContainerIdentifier:"); + late final _sel_sessionSendsLaunchEvents1 = + _registerName1("sessionSendsLaunchEvents"); + late final _sel_setSessionSendsLaunchEvents_1 = + _registerName1("setSessionSendsLaunchEvents:"); + late final _sel_connectionProxyDictionary1 = + _registerName1("connectionProxyDictionary"); + late final _sel_setConnectionProxyDictionary_1 = + _registerName1("setConnectionProxyDictionary:"); + late final _sel_TLSMinimumSupportedProtocol1 = + _registerName1("TLSMinimumSupportedProtocol"); + int _objc_msgSend_980( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_980( + obj, + sel, + ); + } + + late final __objc_msgSend_980Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_980 = __objc_msgSend_980Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setTLSMinimumSupportedProtocol_1 = + _registerName1("setTLSMinimumSupportedProtocol:"); + void _objc_msgSend_981( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_981( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_981Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_981 = __objc_msgSend_981Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_TLSMaximumSupportedProtocol1 = + _registerName1("TLSMaximumSupportedProtocol"); + late final _sel_setTLSMaximumSupportedProtocol_1 = + _registerName1("setTLSMaximumSupportedProtocol:"); + late final _sel_TLSMinimumSupportedProtocolVersion1 = + _registerName1("TLSMinimumSupportedProtocolVersion"); + int _objc_msgSend_982( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_982( + obj, + sel, + ); + } + + late final __objc_msgSend_982Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_982 = __objc_msgSend_982Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setTLSMinimumSupportedProtocolVersion_1 = + _registerName1("setTLSMinimumSupportedProtocolVersion:"); + void _objc_msgSend_983( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_983( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_983Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_983 = __objc_msgSend_983Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_TLSMaximumSupportedProtocolVersion1 = + _registerName1("TLSMaximumSupportedProtocolVersion"); + late final _sel_setTLSMaximumSupportedProtocolVersion_1 = + _registerName1("setTLSMaximumSupportedProtocolVersion:"); + late final _sel_HTTPShouldSetCookies1 = + _registerName1("HTTPShouldSetCookies"); + late final _sel_setHTTPShouldSetCookies_1 = + _registerName1("setHTTPShouldSetCookies:"); + late final _sel_HTTPCookieAcceptPolicy1 = + _registerName1("HTTPCookieAcceptPolicy"); + late final _sel_setHTTPCookieAcceptPolicy_1 = + _registerName1("setHTTPCookieAcceptPolicy:"); + late final _sel_HTTPAdditionalHeaders1 = + _registerName1("HTTPAdditionalHeaders"); + late final _sel_setHTTPAdditionalHeaders_1 = + _registerName1("setHTTPAdditionalHeaders:"); + late final _sel_HTTPMaximumConnectionsPerHost1 = + _registerName1("HTTPMaximumConnectionsPerHost"); + late final _sel_setHTTPMaximumConnectionsPerHost_1 = + _registerName1("setHTTPMaximumConnectionsPerHost:"); + late final _sel_HTTPCookieStorage1 = _registerName1("HTTPCookieStorage"); + late final _sel_setHTTPCookieStorage_1 = + _registerName1("setHTTPCookieStorage:"); + void _objc_msgSend_984( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_984( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_984Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_984 = __objc_msgSend_984Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_URLCredentialStorage1 = + _registerName1("URLCredentialStorage"); + late final _sel_setURLCredentialStorage_1 = + _registerName1("setURLCredentialStorage:"); + void _objc_msgSend_985( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_985( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_985Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_985 = __objc_msgSend_985Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_URLCache1 = _registerName1("URLCache"); + late final _sel_setURLCache_1 = _registerName1("setURLCache:"); + late final _sel_shouldUseExtendedBackgroundIdleMode1 = + _registerName1("shouldUseExtendedBackgroundIdleMode"); + late final _sel_setShouldUseExtendedBackgroundIdleMode_1 = + _registerName1("setShouldUseExtendedBackgroundIdleMode:"); + late final _sel_protocolClasses1 = _registerName1("protocolClasses"); + late final _sel_setProtocolClasses_1 = _registerName1("setProtocolClasses:"); + late final _sel_multipathServiceType1 = + _registerName1("multipathServiceType"); + int _objc_msgSend_986( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_986( + obj, + sel, + ); + } + + late final __objc_msgSend_986Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_986 = __objc_msgSend_986Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setMultipathServiceType_1 = + _registerName1("setMultipathServiceType:"); + void _objc_msgSend_987( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_987( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_987Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_987 = __objc_msgSend_987Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_backgroundSessionConfiguration_1 = + _registerName1("backgroundSessionConfiguration:"); + late final _sel_sessionWithConfiguration_1 = + _registerName1("sessionWithConfiguration:"); + ffi.Pointer _objc_msgSend_988( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer configuration, + ) { + return __objc_msgSend_988( + obj, + sel, + configuration, + ); + } + + late final __objc_msgSend_988Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_988 = __objc_msgSend_988Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_sessionWithConfiguration_delegate_delegateQueue_1 = + _registerName1("sessionWithConfiguration:delegate:delegateQueue:"); + ffi.Pointer _objc_msgSend_989( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer configuration, + ffi.Pointer delegate, + ffi.Pointer queue, + ) { + return __objc_msgSend_989( + obj, + sel, + configuration, + delegate, + queue, + ); + } + + late final __objc_msgSend_989Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_989 = __objc_msgSend_989Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_delegateQueue1 = _registerName1("delegateQueue"); + late final _sel_configuration1 = _registerName1("configuration"); + late final _sel_sessionDescription1 = _registerName1("sessionDescription"); + late final _sel_setSessionDescription_1 = + _registerName1("setSessionDescription:"); + late final _sel_finishTasksAndInvalidate1 = + _registerName1("finishTasksAndInvalidate"); + late final _sel_invalidateAndCancel1 = _registerName1("invalidateAndCancel"); + late final _sel_resetWithCompletionHandler_1 = + _registerName1("resetWithCompletionHandler:"); + late final _sel_flushWithCompletionHandler_1 = + _registerName1("flushWithCompletionHandler:"); + late final _sel_getTasksWithCompletionHandler_1 = + _registerName1("getTasksWithCompletionHandler:"); + void _objc_msgSend_990( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_990( + obj, + sel, + completionHandler, + ); + } + + late final __objc_msgSend_990Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_990 = __objc_msgSend_990Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_getAllTasksWithCompletionHandler_1 = + _registerName1("getAllTasksWithCompletionHandler:"); + void _objc_msgSend_991( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_991( + obj, + sel, + completionHandler, + ); + } + + late final __objc_msgSend_991Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_991 = __objc_msgSend_991Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_dataTaskWithRequest_1 = + _registerName1("dataTaskWithRequest:"); + ffi.Pointer _objc_msgSend_992( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ) { + return __objc_msgSend_992( + obj, + sel, + request, + ); + } + + late final __objc_msgSend_992Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_992 = __objc_msgSend_992Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_dataTaskWithURL_1 = _registerName1("dataTaskWithURL:"); + ffi.Pointer _objc_msgSend_993( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ) { + return __objc_msgSend_993( + obj, + sel, + url, + ); + } + + late final __objc_msgSend_993Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_993 = __objc_msgSend_993Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSURLSessionUploadTask1 = + _getClass1("NSURLSessionUploadTask"); + late final _sel_uploadTaskWithRequest_fromFile_1 = + _registerName1("uploadTaskWithRequest:fromFile:"); + ffi.Pointer _objc_msgSend_994( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer fileURL, + ) { + return __objc_msgSend_994( + obj, + sel, + request, + fileURL, + ); + } + + late final __objc_msgSend_994Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_994 = __objc_msgSend_994Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_uploadTaskWithRequest_fromData_1 = + _registerName1("uploadTaskWithRequest:fromData:"); + ffi.Pointer _objc_msgSend_995( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer bodyData, + ) { + return __objc_msgSend_995( + obj, + sel, + request, + bodyData, + ); + } + + late final __objc_msgSend_995Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_995 = __objc_msgSend_995Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_uploadTaskWithStreamedRequest_1 = + _registerName1("uploadTaskWithStreamedRequest:"); + ffi.Pointer _objc_msgSend_996( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ) { + return __objc_msgSend_996( + obj, + sel, + request, + ); + } + + late final __objc_msgSend_996Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_996 = __objc_msgSend_996Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSURLSessionDownloadTask1 = + _getClass1("NSURLSessionDownloadTask"); + late final _sel_cancelByProducingResumeData_1 = + _registerName1("cancelByProducingResumeData:"); + void _objc_msgSend_997( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_997( + obj, + sel, + completionHandler, + ); + } + + late final __objc_msgSend_997Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_997 = __objc_msgSend_997Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_downloadTaskWithRequest_1 = + _registerName1("downloadTaskWithRequest:"); + ffi.Pointer _objc_msgSend_998( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ) { + return __objc_msgSend_998( + obj, + sel, + request, + ); + } + + late final __objc_msgSend_998Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_998 = __objc_msgSend_998Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_downloadTaskWithURL_1 = + _registerName1("downloadTaskWithURL:"); + ffi.Pointer _objc_msgSend_999( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ) { + return __objc_msgSend_999( + obj, + sel, + url, + ); + } + + late final __objc_msgSend_999Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_999 = __objc_msgSend_999Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_downloadTaskWithResumeData_1 = + _registerName1("downloadTaskWithResumeData:"); + ffi.Pointer _objc_msgSend_1000( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer resumeData, + ) { + return __objc_msgSend_1000( + obj, + sel, + resumeData, + ); + } + + late final __objc_msgSend_1000Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1000 = __objc_msgSend_1000Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSURLSessionStreamTask1 = + _getClass1("NSURLSessionStreamTask"); + late final _sel_readDataOfMinLength_maxLength_timeout_completionHandler_1 = + _registerName1( + "readDataOfMinLength:maxLength:timeout:completionHandler:"); + void _objc_msgSend_1001( + ffi.Pointer obj, + ffi.Pointer sel, + int minBytes, + int maxBytes, + double timeout, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_1001( + obj, + sel, + minBytes, + maxBytes, + timeout, + completionHandler, + ); + } + + late final __objc_msgSend_1001Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Double, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1001 = __objc_msgSend_1001Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, int, + double, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_writeData_timeout_completionHandler_1 = + _registerName1("writeData:timeout:completionHandler:"); + void _objc_msgSend_1002( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + double timeout, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_1002( + obj, + sel, + data, + timeout, + completionHandler, + ); + } + + late final __objc_msgSend_1002Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1002 = __objc_msgSend_1002Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, double, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_captureStreams1 = _registerName1("captureStreams"); + late final _sel_closeWrite1 = _registerName1("closeWrite"); + late final _sel_closeRead1 = _registerName1("closeRead"); + late final _sel_startSecureConnection1 = + _registerName1("startSecureConnection"); + late final _sel_stopSecureConnection1 = + _registerName1("stopSecureConnection"); + late final _sel_streamTaskWithHostName_port_1 = + _registerName1("streamTaskWithHostName:port:"); + ffi.Pointer _objc_msgSend_1003( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer hostname, + int port, + ) { + return __objc_msgSend_1003( + obj, + sel, + hostname, + port, + ); + } + + late final __objc_msgSend_1003Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long)>>('objc_msgSend'); + late final __objc_msgSend_1003 = __objc_msgSend_1003Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); + + late final _class_NSNetService1 = _getClass1("NSNetService"); + late final _sel_initWithDomain_type_name_port_1 = + _registerName1("initWithDomain:type:name:port:"); + instancetype _objc_msgSend_1004( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer domain, + ffi.Pointer type, + ffi.Pointer name, + int port, + ) { + return __objc_msgSend_1004( + obj, + sel, + domain, + type, + name, + port, + ); + } + + late final __objc_msgSend_1004Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int)>>('objc_msgSend'); + late final __objc_msgSend_1004 = __objc_msgSend_1004Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); + + late final _sel_initWithDomain_type_name_1 = + _registerName1("initWithDomain:type:name:"); + late final _sel_includesPeerToPeer1 = _registerName1("includesPeerToPeer"); + late final _sel_setIncludesPeerToPeer_1 = + _registerName1("setIncludesPeerToPeer:"); + late final _sel_type1 = _registerName1("type"); + late final _sel_publishWithOptions_1 = _registerName1("publishWithOptions:"); + void _objc_msgSend_1005( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ) { + return __objc_msgSend_1005( + obj, + sel, + options, + ); + } + + late final __objc_msgSend_1005Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_1005 = __objc_msgSend_1005Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_resolve1 = _registerName1("resolve"); + late final _sel_stop1 = _registerName1("stop"); + late final _sel_dictionaryFromTXTRecordData_1 = + _registerName1("dictionaryFromTXTRecordData:"); + ffi.Pointer _objc_msgSend_1006( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer txtData, + ) { + return __objc_msgSend_1006( + obj, + sel, + txtData, + ); + } + + late final __objc_msgSend_1006Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1006 = __objc_msgSend_1006Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_dataFromTXTRecordDictionary_1 = + _registerName1("dataFromTXTRecordDictionary:"); + ffi.Pointer _objc_msgSend_1007( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer txtDictionary, + ) { + return __objc_msgSend_1007( + obj, + sel, + txtDictionary, + ); + } + + late final __objc_msgSend_1007Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1007 = __objc_msgSend_1007Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_resolveWithTimeout_1 = _registerName1("resolveWithTimeout:"); + late final _sel_getInputStream_outputStream_1 = + _registerName1("getInputStream:outputStream:"); + bool _objc_msgSend_1008( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream, + ) { + return __objc_msgSend_1008( + obj, + sel, + inputStream, + outputStream, + ); + } + + late final __objc_msgSend_1008Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_1008 = __objc_msgSend_1008Ptr.asFunction< + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); + + late final _sel_setTXTRecordData_1 = _registerName1("setTXTRecordData:"); + late final _sel_TXTRecordData1 = _registerName1("TXTRecordData"); + late final _sel_startMonitoring1 = _registerName1("startMonitoring"); + late final _sel_stopMonitoring1 = _registerName1("stopMonitoring"); + late final _sel_streamTaskWithNetService_1 = + _registerName1("streamTaskWithNetService:"); + ffi.Pointer _objc_msgSend_1009( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer service, + ) { + return __objc_msgSend_1009( + obj, + sel, + service, + ); + } + + late final __objc_msgSend_1009Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1009 = __objc_msgSend_1009Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _class_NSURLSessionWebSocketTask1 = + _getClass1("NSURLSessionWebSocketTask"); + late final _class_NSURLSessionWebSocketMessage1 = + _getClass1("NSURLSessionWebSocketMessage"); + int _objc_msgSend_1010( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1010( + obj, + sel, + ); + } + + late final __objc_msgSend_1010Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1010 = __objc_msgSend_1010Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_sendMessage_completionHandler_1 = + _registerName1("sendMessage:completionHandler:"); + void _objc_msgSend_1011( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer message, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_1011( + obj, + sel, + message, + completionHandler, + ); + } + + late final __objc_msgSend_1011Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1011 = __objc_msgSend_1011Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_receiveMessageWithCompletionHandler_1 = + _registerName1("receiveMessageWithCompletionHandler:"); + void _objc_msgSend_1012( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_1012( + obj, + sel, + completionHandler, + ); + } + + late final __objc_msgSend_1012Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1012 = __objc_msgSend_1012Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_sendPingWithPongReceiveHandler_1 = + _registerName1("sendPingWithPongReceiveHandler:"); + void _objc_msgSend_1013( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> pongReceiveHandler, + ) { + return __objc_msgSend_1013( + obj, + sel, + pongReceiveHandler, + ); + } + + late final __objc_msgSend_1013Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1013 = __objc_msgSend_1013Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_cancelWithCloseCode_reason_1 = + _registerName1("cancelWithCloseCode:reason:"); + void _objc_msgSend_1014( + ffi.Pointer obj, + ffi.Pointer sel, + int closeCode, + ffi.Pointer reason, + ) { + return __objc_msgSend_1014( + obj, + sel, + closeCode, + reason, + ); + } + + late final __objc_msgSend_1014Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1014 = __objc_msgSend_1014Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); + + late final _sel_maximumMessageSize1 = _registerName1("maximumMessageSize"); + late final _sel_setMaximumMessageSize_1 = + _registerName1("setMaximumMessageSize:"); + late final _sel_closeCode1 = _registerName1("closeCode"); + int _objc_msgSend_1015( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1015( + obj, + sel, + ); + } + + late final __objc_msgSend_1015Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1015 = __objc_msgSend_1015Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_closeReason1 = _registerName1("closeReason"); + late final _sel_webSocketTaskWithURL_1 = + _registerName1("webSocketTaskWithURL:"); + ffi.Pointer _objc_msgSend_1016( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ) { + return __objc_msgSend_1016( + obj, + sel, + url, + ); + } + + late final __objc_msgSend_1016Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1016 = __objc_msgSend_1016Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_webSocketTaskWithURL_protocols_1 = + _registerName1("webSocketTaskWithURL:protocols:"); + ffi.Pointer _objc_msgSend_1017( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer protocols, + ) { + return __objc_msgSend_1017( + obj, + sel, + url, + protocols, + ); + } + + late final __objc_msgSend_1017Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1017 = __objc_msgSend_1017Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_webSocketTaskWithRequest_1 = + _registerName1("webSocketTaskWithRequest:"); + ffi.Pointer _objc_msgSend_1018( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ) { + return __objc_msgSend_1018( + obj, + sel, + request, + ); + } + + late final __objc_msgSend_1018Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1018 = __objc_msgSend_1018Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_dataTaskWithRequest_completionHandler_1 = + _registerName1("dataTaskWithRequest:completionHandler:"); + ffi.Pointer _objc_msgSend_1019( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_1019( + obj, + sel, + request, + completionHandler, + ); + } + + late final __objc_msgSend_1019Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1019 = __objc_msgSend_1019Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_dataTaskWithURL_completionHandler_1 = + _registerName1("dataTaskWithURL:completionHandler:"); + ffi.Pointer _objc_msgSend_1020( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_1020( + obj, + sel, + url, + completionHandler, + ); + } + + late final __objc_msgSend_1020Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1020 = __objc_msgSend_1020Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_uploadTaskWithRequest_fromFile_completionHandler_1 = + _registerName1("uploadTaskWithRequest:fromFile:completionHandler:"); + ffi.Pointer _objc_msgSend_1021( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer fileURL, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_1021( + obj, + sel, + request, + fileURL, + completionHandler, + ); + } + + late final __objc_msgSend_1021Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1021 = __objc_msgSend_1021Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_uploadTaskWithRequest_fromData_completionHandler_1 = + _registerName1("uploadTaskWithRequest:fromData:completionHandler:"); + ffi.Pointer _objc_msgSend_1022( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer bodyData, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_1022( + obj, + sel, + request, + bodyData, + completionHandler, + ); + } + + late final __objc_msgSend_1022Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1022 = __objc_msgSend_1022Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_downloadTaskWithRequest_completionHandler_1 = + _registerName1("downloadTaskWithRequest:completionHandler:"); + ffi.Pointer _objc_msgSend_1023( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_1023( + obj, + sel, + request, + completionHandler, + ); + } + + late final __objc_msgSend_1023Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1023 = __objc_msgSend_1023Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_downloadTaskWithURL_completionHandler_1 = + _registerName1("downloadTaskWithURL:completionHandler:"); + ffi.Pointer _objc_msgSend_1024( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_1024( + obj, + sel, + url, + completionHandler, + ); + } + + late final __objc_msgSend_1024Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1024 = __objc_msgSend_1024Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_downloadTaskWithResumeData_completionHandler_1 = + _registerName1("downloadTaskWithResumeData:completionHandler:"); + ffi.Pointer _objc_msgSend_1025( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer resumeData, + ffi.Pointer<_ObjCBlock> completionHandler, + ) { + return __objc_msgSend_1025( + obj, + sel, + resumeData, + completionHandler, + ); + } + + late final __objc_msgSend_1025Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1025 = __objc_msgSend_1025Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _class_NSProtocolChecker1 = _getClass1("NSProtocolChecker"); + ffi.Pointer _objc_msgSend_1026( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1026( + obj, + sel, + ); + } + + late final __objc_msgSend_1026Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1026 = __objc_msgSend_1026Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_protocolCheckerWithTarget_protocol_1 = + _registerName1("protocolCheckerWithTarget:protocol:"); + instancetype _objc_msgSend_1027( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer anObject, + ffi.Pointer aProtocol, + ) { + return __objc_msgSend_1027( + obj, + sel, + anObject, + aProtocol, + ); + } + + late final __objc_msgSend_1027Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1027 = __objc_msgSend_1027Ptr.asFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_initWithTarget_protocol_1 = + _registerName1("initWithTarget:protocol:"); + late final _class_NSTask1 = _getClass1("NSTask"); + late final _sel_setExecutableURL_1 = _registerName1("setExecutableURL:"); + late final _sel_setEnvironment_1 = _registerName1("setEnvironment:"); + late final _sel_currentDirectoryURL1 = _registerName1("currentDirectoryURL"); + late final _sel_setCurrentDirectoryURL_1 = + _registerName1("setCurrentDirectoryURL:"); + late final _sel_standardInput1 = _registerName1("standardInput"); + late final _sel_setStandardInput_1 = _registerName1("setStandardInput:"); + late final _sel_standardOutput1 = _registerName1("standardOutput"); + late final _sel_setStandardOutput_1 = _registerName1("setStandardOutput:"); + late final _sel_standardError1 = _registerName1("standardError"); + late final _sel_setStandardError_1 = _registerName1("setStandardError:"); + late final _sel_launchAndReturnError_1 = + _registerName1("launchAndReturnError:"); + late final _sel_interrupt1 = _registerName1("interrupt"); + late final _sel_terminate1 = _registerName1("terminate"); + late final _sel_isRunning1 = _registerName1("isRunning"); + late final _sel_terminationStatus1 = _registerName1("terminationStatus"); + late final _sel_terminationReason1 = _registerName1("terminationReason"); + int _objc_msgSend_1028( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1028( + obj, + sel, + ); + } + + late final __objc_msgSend_1028Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1028 = __objc_msgSend_1028Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_terminationHandler1 = _registerName1("terminationHandler"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_1029( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1029( + obj, + sel, + ); + } + + late final __objc_msgSend_1029Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1029 = __objc_msgSend_1029Ptr.asFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setTerminationHandler_1 = + _registerName1("setTerminationHandler:"); + void _objc_msgSend_1030( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> value, + ) { + return __objc_msgSend_1030( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_1030Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1030 = __objc_msgSend_1030Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_1 = + _registerName1( + "launchedTaskWithExecutableURL:arguments:error:terminationHandler:"); + ffi.Pointer _objc_msgSend_1031( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer arguments, + ffi.Pointer> error, + ffi.Pointer<_ObjCBlock> terminationHandler, + ) { + return __objc_msgSend_1031( + obj, + sel, + url, + arguments, + error, + terminationHandler, + ); + } + + late final __objc_msgSend_1031Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + late final __objc_msgSend_1031 = __objc_msgSend_1031Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer<_ObjCBlock>)>(); + + late final _sel_waitUntilExit1 = _registerName1("waitUntilExit"); + late final _sel_launchPath1 = _registerName1("launchPath"); + late final _sel_setLaunchPath_1 = _registerName1("setLaunchPath:"); + late final _sel_setCurrentDirectoryPath_1 = + _registerName1("setCurrentDirectoryPath:"); + late final _sel_launch1 = _registerName1("launch"); + late final _sel_launchedTaskWithLaunchPath_arguments_1 = + _registerName1("launchedTaskWithLaunchPath:arguments:"); + ffi.Pointer _objc_msgSend_1032( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer path, + ffi.Pointer arguments, + ) { + return __objc_msgSend_1032( + obj, + sel, + path, + arguments, + ); + } + + late final __objc_msgSend_1032Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1032 = __objc_msgSend_1032Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _class_NSXMLElement1 = _getClass1("NSXMLElement"); + late final _class_NSXMLNode1 = _getClass1("NSXMLNode"); + late final _sel_initWithKind_1 = _registerName1("initWithKind:"); + instancetype _objc_msgSend_1033( + ffi.Pointer obj, + ffi.Pointer sel, + int kind, + ) { + return __objc_msgSend_1033( + obj, + sel, + kind, + ); + } + + late final __objc_msgSend_1033Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_1033 = __objc_msgSend_1033Ptr.asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_initWithKind_options_1 = + _registerName1("initWithKind:options:"); + instancetype _objc_msgSend_1034( + ffi.Pointer obj, + ffi.Pointer sel, + int kind, + int options, + ) { + return __objc_msgSend_1034( + obj, + sel, + kind, + options, + ); + } + + late final __objc_msgSend_1034Ptr = _lookup< + ffi.NativeFunction< + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_1034 = __objc_msgSend_1034Ptr.asFunction< + instancetype Function( + ffi.Pointer, ffi.Pointer, int, int)>(); + + late final _sel_document1 = _registerName1("document"); + late final _sel_documentWithRootElement_1 = + _registerName1("documentWithRootElement:"); + ffi.Pointer _objc_msgSend_1035( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer element, + ) { + return __objc_msgSend_1035( + obj, + sel, + element, + ); + } + + late final __objc_msgSend_1035Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1035 = __objc_msgSend_1035Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_elementWithName_1 = _registerName1("elementWithName:"); + late final _sel_elementWithName_URI_1 = + _registerName1("elementWithName:URI:"); + late final _sel_elementWithName_stringValue_1 = + _registerName1("elementWithName:stringValue:"); + late final _sel_elementWithName_children_attributes_1 = + _registerName1("elementWithName:children:attributes:"); + ffi.Pointer _objc_msgSend_1036( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer children, + ffi.Pointer attributes, + ) { + return __objc_msgSend_1036( + obj, + sel, + name, + children, + attributes, + ); + } + + late final __objc_msgSend_1036Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1036 = __objc_msgSend_1036Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_attributeWithName_stringValue_1 = + _registerName1("attributeWithName:stringValue:"); + late final _sel_attributeWithName_URI_stringValue_1 = + _registerName1("attributeWithName:URI:stringValue:"); + late final _sel_namespaceWithName_stringValue_1 = + _registerName1("namespaceWithName:stringValue:"); + late final _sel_processingInstructionWithName_stringValue_1 = + _registerName1("processingInstructionWithName:stringValue:"); + late final _sel_commentWithStringValue_1 = + _registerName1("commentWithStringValue:"); + late final _sel_textWithStringValue_1 = + _registerName1("textWithStringValue:"); + late final _sel_DTDNodeWithXMLString_1 = + _registerName1("DTDNodeWithXMLString:"); + int _objc_msgSend_1037( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1037( + obj, + sel, + ); + } + + late final __objc_msgSend_1037Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1037 = __objc_msgSend_1037Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_objectValue1 = _registerName1("objectValue"); + late final _sel_setObjectValue_1 = _registerName1("setObjectValue:"); + late final _sel_setStringValue_1 = _registerName1("setStringValue:"); + late final _sel_setStringValue_resolvingEntities_1 = + _registerName1("setStringValue:resolvingEntities:"); + void _objc_msgSend_1038( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + bool resolve, + ) { + return __objc_msgSend_1038( + obj, + sel, + string, + resolve, + ); + } + + late final __objc_msgSend_1038Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_1038 = __objc_msgSend_1038Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); + + late final _sel_index1 = _registerName1("index"); + late final _sel_level1 = _registerName1("level"); + late final _class_NSXMLDocument1 = _getClass1("NSXMLDocument"); + late final _sel_initWithXMLString_options_error_1 = + _registerName1("initWithXMLString:options:error:"); + instancetype _objc_msgSend_1039( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer string, + int mask, + ffi.Pointer> error, + ) { + return __objc_msgSend_1039( + obj, + sel, + string, + mask, + error, + ); + } + + late final __objc_msgSend_1039Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_1039 = __objc_msgSend_1039Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + instancetype _objc_msgSend_1040( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int mask, + ffi.Pointer> error, + ) { + return __objc_msgSend_1040( + obj, + sel, + url, + mask, + error, + ); + } + + late final __objc_msgSend_1040Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_1040 = __objc_msgSend_1040Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_initWithData_options_error_1 = + _registerName1("initWithData:options:error:"); + instancetype _objc_msgSend_1041( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer data, + int mask, + ffi.Pointer> error, + ) { + return __objc_msgSend_1041( + obj, + sel, + data, + mask, + error, + ); + } + + late final __objc_msgSend_1041Ptr = _lookup< + ffi.NativeFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_1041 = __objc_msgSend_1041Ptr.asFunction< + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); + + late final _sel_initWithRootElement_1 = + _registerName1("initWithRootElement:"); + late final _sel_replacementClassForClass_1 = + _registerName1("replacementClassForClass:"); + late final _sel_characterEncoding1 = _registerName1("characterEncoding"); + late final _sel_setCharacterEncoding_1 = + _registerName1("setCharacterEncoding:"); + late final _sel_isStandalone1 = _registerName1("isStandalone"); + late final _sel_setStandalone_1 = _registerName1("setStandalone:"); + late final _sel_documentContentKind1 = _registerName1("documentContentKind"); + int _objc_msgSend_1042( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1042( + obj, + sel, + ); + } + + late final __objc_msgSend_1042Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1042 = __objc_msgSend_1042Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setDocumentContentKind_1 = + _registerName1("setDocumentContentKind:"); + void _objc_msgSend_1043( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_1043( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_1043Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_1043 = __objc_msgSend_1043Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_setMIMEType_1 = _registerName1("setMIMEType:"); + late final _class_NSXMLDTD1 = _getClass1("NSXMLDTD"); + late final _sel_setPublicID_1 = _registerName1("setPublicID:"); + late final _sel_setSystemID_1 = _registerName1("setSystemID:"); + late final _sel_insertChild_atIndex_1 = + _registerName1("insertChild:atIndex:"); + void _objc_msgSend_1044( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer child, + int index, + ) { + return __objc_msgSend_1044( + obj, + sel, + child, + index, + ); + } + + late final __objc_msgSend_1044Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_1044 = __objc_msgSend_1044Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_insertChildren_atIndex_1 = + _registerName1("insertChildren:atIndex:"); + void _objc_msgSend_1045( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer children, + int index, + ) { + return __objc_msgSend_1045( + obj, + sel, + children, + index, + ); + } + + late final __objc_msgSend_1045Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_1045 = __objc_msgSend_1045Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); + + late final _sel_removeChildAtIndex_1 = _registerName1("removeChildAtIndex:"); + late final _sel_setChildren_1 = _registerName1("setChildren:"); + late final _sel_addChild_1 = _registerName1("addChild:"); + void _objc_msgSend_1046( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer child, + ) { + return __objc_msgSend_1046( + obj, + sel, + child, + ); + } + + late final __objc_msgSend_1046Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1046 = __objc_msgSend_1046Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_replaceChildAtIndex_withNode_1 = + _registerName1("replaceChildAtIndex:withNode:"); + void _objc_msgSend_1047( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ffi.Pointer node, + ) { + return __objc_msgSend_1047( + obj, + sel, + index, + node, + ); + } + + late final __objc_msgSend_1047Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1047 = __objc_msgSend_1047Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); + + late final _class_NSXMLDTDNode1 = _getClass1("NSXMLDTDNode"); + late final _sel_initWithXMLString_1 = _registerName1("initWithXMLString:"); + late final _sel_DTDKind1 = _registerName1("DTDKind"); + int _objc_msgSend_1048( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1048( + obj, + sel, + ); + } + + late final __objc_msgSend_1048Ptr = _lookup< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1048 = __objc_msgSend_1048Ptr.asFunction< + int Function(ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setDTDKind_1 = _registerName1("setDTDKind:"); + void _objc_msgSend_1049( + ffi.Pointer obj, + ffi.Pointer sel, + int value, + ) { + return __objc_msgSend_1049( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_1049Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_1049 = __objc_msgSend_1049Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_isExternal1 = _registerName1("isExternal"); + late final _sel_notationName1 = _registerName1("notationName"); + late final _sel_setNotationName_1 = _registerName1("setNotationName:"); + late final _sel_localNameForName_1 = _registerName1("localNameForName:"); + late final _sel_prefixForName_1 = _registerName1("prefixForName:"); + late final _sel_predefinedNamespaceForPrefix_1 = + _registerName1("predefinedNamespaceForPrefix:"); + ffi.Pointer _objc_msgSend_1050( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ) { + return __objc_msgSend_1050( + obj, + sel, + name, + ); + } + + late final __objc_msgSend_1050Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1050 = __objc_msgSend_1050Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_entityDeclarationForName_1 = + _registerName1("entityDeclarationForName:"); + ffi.Pointer _objc_msgSend_1051( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ) { + return __objc_msgSend_1051( + obj, + sel, + name, + ); + } + + late final __objc_msgSend_1051Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1051 = __objc_msgSend_1051Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_notationDeclarationForName_1 = + _registerName1("notationDeclarationForName:"); + late final _sel_elementDeclarationForName_1 = + _registerName1("elementDeclarationForName:"); + late final _sel_attributeDeclarationForName_elementName_1 = + _registerName1("attributeDeclarationForName:elementName:"); + ffi.Pointer _objc_msgSend_1052( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer elementName, + ) { + return __objc_msgSend_1052( + obj, + sel, + name, + elementName, + ); + } + + late final __objc_msgSend_1052Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1052 = __objc_msgSend_1052Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_predefinedEntityDeclarationForName_1 = + _registerName1("predefinedEntityDeclarationForName:"); + late final _sel_DTD1 = _registerName1("DTD"); + ffi.Pointer _objc_msgSend_1053( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1053( + obj, + sel, + ); + } + + late final __objc_msgSend_1053Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1053 = __objc_msgSend_1053Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_setDTD_1 = _registerName1("setDTD:"); + void _objc_msgSend_1054( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer value, + ) { + return __objc_msgSend_1054( + obj, + sel, + value, + ); + } + + late final __objc_msgSend_1054Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1054 = __objc_msgSend_1054Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_setRootElement_1 = _registerName1("setRootElement:"); + void _objc_msgSend_1055( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer root, + ) { + return __objc_msgSend_1055( + obj, + sel, + root, + ); + } + + late final __objc_msgSend_1055Ptr = _lookup< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1055 = __objc_msgSend_1055Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_rootElement1 = _registerName1("rootElement"); + ffi.Pointer _objc_msgSend_1056( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1056( + obj, + sel, + ); + } + + late final __objc_msgSend_1056Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1056 = __objc_msgSend_1056Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_XMLData1 = _registerName1("XMLData"); + late final _sel_XMLDataWithOptions_1 = _registerName1("XMLDataWithOptions:"); + ffi.Pointer _objc_msgSend_1057( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ) { + return __objc_msgSend_1057( + obj, + sel, + options, + ); + } + + late final __objc_msgSend_1057Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_1057 = __objc_msgSend_1057Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_objectByApplyingXSLT_arguments_error_1 = + _registerName1("objectByApplyingXSLT:arguments:error:"); + ffi.Pointer _objc_msgSend_1058( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer xslt, + ffi.Pointer arguments, + ffi.Pointer> error, + ) { + return __objc_msgSend_1058( + obj, + sel, + xslt, + arguments, + error, + ); + } + + late final __objc_msgSend_1058Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_1058 = __objc_msgSend_1058Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_objectByApplyingXSLTString_arguments_error_1 = + _registerName1("objectByApplyingXSLTString:arguments:error:"); + ffi.Pointer _objc_msgSend_1059( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer xslt, + ffi.Pointer arguments, + ffi.Pointer> error, + ) { + return __objc_msgSend_1059( + obj, + sel, + xslt, + arguments, + error, + ); + } + + late final __objc_msgSend_1059Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_1059 = __objc_msgSend_1059Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_objectByApplyingXSLTAtURL_arguments_error_1 = + _registerName1("objectByApplyingXSLTAtURL:arguments:error:"); + ffi.Pointer _objc_msgSend_1060( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer xsltURL, + ffi.Pointer argument, + ffi.Pointer> error, + ) { + return __objc_msgSend_1060( + obj, + sel, + xsltURL, + argument, + error, + ); + } + + late final __objc_msgSend_1060Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_1060 = __objc_msgSend_1060Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_validateAndReturnError_1 = + _registerName1("validateAndReturnError:"); + late final _sel_rootDocument1 = _registerName1("rootDocument"); + ffi.Pointer _objc_msgSend_1061( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1061( + obj, + sel, + ); + } + + late final __objc_msgSend_1061Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1061 = __objc_msgSend_1061Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_parent1 = _registerName1("parent"); + ffi.Pointer _objc_msgSend_1062( + ffi.Pointer obj, + ffi.Pointer sel, + ) { + return __objc_msgSend_1062( + obj, + sel, + ); + } + + late final __objc_msgSend_1062Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1062 = __objc_msgSend_1062Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_childCount1 = _registerName1("childCount"); + late final _sel_children1 = _registerName1("children"); + late final _sel_childAtIndex_1 = _registerName1("childAtIndex:"); + ffi.Pointer _objc_msgSend_1063( + ffi.Pointer obj, + ffi.Pointer sel, + int index, + ) { + return __objc_msgSend_1063( + obj, + sel, + index, + ); + } + + late final __objc_msgSend_1063Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + late final __objc_msgSend_1063 = __objc_msgSend_1063Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_previousSibling1 = _registerName1("previousSibling"); + late final _sel_nextSibling1 = _registerName1("nextSibling"); + late final _sel_previousNode1 = _registerName1("previousNode"); + late final _sel_nextNode1 = _registerName1("nextNode"); + late final _sel_detach1 = _registerName1("detach"); + late final _sel_XPath1 = _registerName1("XPath"); + late final _sel_localName1 = _registerName1("localName"); + late final _sel_prefix1 = _registerName1("prefix"); + late final _sel_URI1 = _registerName1("URI"); + late final _sel_setURI_1 = _registerName1("setURI:"); + late final _sel_XMLString1 = _registerName1("XMLString"); + late final _sel_XMLStringWithOptions_1 = + _registerName1("XMLStringWithOptions:"); + ffi.Pointer _objc_msgSend_1064( + ffi.Pointer obj, + ffi.Pointer sel, + int options, + ) { + return __objc_msgSend_1064( + obj, + sel, + options, + ); + } + + late final __objc_msgSend_1064Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_1064 = __objc_msgSend_1064Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); + + late final _sel_canonicalXMLStringPreservingComments_1 = + _registerName1("canonicalXMLStringPreservingComments:"); + ffi.Pointer _objc_msgSend_1065( + ffi.Pointer obj, + ffi.Pointer sel, + bool comments, + ) { + return __objc_msgSend_1065( + obj, + sel, + comments, + ); + } + + late final __objc_msgSend_1065Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + late final __objc_msgSend_1065 = __objc_msgSend_1065Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, bool)>(); + + late final _sel_nodesForXPath_error_1 = + _registerName1("nodesForXPath:error:"); + late final _sel_objectsForXQuery_constants_error_1 = + _registerName1("objectsForXQuery:constants:error:"); + ffi.Pointer _objc_msgSend_1066( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer xquery, + ffi.Pointer constants, + ffi.Pointer> error, + ) { + return __objc_msgSend_1066( + obj, + sel, + xquery, + constants, + error, + ); + } + + late final __objc_msgSend_1066Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); + late final __objc_msgSend_1066 = __objc_msgSend_1066Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); + + late final _sel_objectsForXQuery_error_1 = + _registerName1("objectsForXQuery:error:"); + late final _sel_initWithName_URI_1 = _registerName1("initWithName:URI:"); + late final _sel_initWithName_stringValue_1 = + _registerName1("initWithName:stringValue:"); + late final _sel_initWithXMLString_error_1 = + _registerName1("initWithXMLString:error:"); + late final _sel_elementsForName_1 = _registerName1("elementsForName:"); + late final _sel_elementsForLocalName_URI_1 = + _registerName1("elementsForLocalName:URI:"); + late final _sel_addAttribute_1 = _registerName1("addAttribute:"); + late final _sel_removeAttributeForName_1 = + _registerName1("removeAttributeForName:"); + late final _sel_attributes1 = _registerName1("attributes"); + late final _sel_setAttributes_1 = _registerName1("setAttributes:"); + late final _sel_setAttributesWithDictionary_1 = + _registerName1("setAttributesWithDictionary:"); + late final _sel_attributeForName_1 = _registerName1("attributeForName:"); + late final _sel_attributeForLocalName_URI_1 = + _registerName1("attributeForLocalName:URI:"); + ffi.Pointer _objc_msgSend_1067( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer localName, + ffi.Pointer URI, + ) { + return __objc_msgSend_1067( + obj, + sel, + localName, + URI, + ); + } + + late final __objc_msgSend_1067Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1067 = __objc_msgSend_1067Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_addNamespace_1 = _registerName1("addNamespace:"); + late final _sel_removeNamespaceForPrefix_1 = + _registerName1("removeNamespaceForPrefix:"); + late final _sel_namespaces1 = _registerName1("namespaces"); + late final _sel_setNamespaces_1 = _registerName1("setNamespaces:"); + late final _sel_namespaceForPrefix_1 = _registerName1("namespaceForPrefix:"); + late final _sel_resolveNamespaceForName_1 = + _registerName1("resolveNamespaceForName:"); + late final _sel_resolvePrefixForNamespaceURI_1 = + _registerName1("resolvePrefixForNamespaceURI:"); + late final _sel_normalizeAdjacentTextNodesPreservingCDATA_1 = + _registerName1("normalizeAdjacentTextNodesPreservingCDATA:"); + late final _sel_setAttributesAsDictionary_1 = + _registerName1("setAttributesAsDictionary:"); +} + +/// @warning This class is reserved for hybrid SDKs. Methods may be changed, renamed or removed +/// without notice. If you want to use one of these methods here please open up an issue and let us +/// know. +/// @note The name of this class is supposed to be a bit weird and ugly. The name starts with private +/// on purpose so users don't see it in code completion when typing Sentry. We also add only at the +/// end to make it more obvious you shouldn't use it. +class _ObjCWrapper implements ffi.Finalizable { + final ffi.Pointer _id; + final SentryCocoa _lib; + bool _pendingRelease; + + _ObjCWrapper._(this._id, this._lib, + {bool retain = false, bool release = false}) + : _pendingRelease = release { + if (retain) { + _lib._objc_retain(_id.cast()); + } + if (release) { + _lib._objc_releaseFinalizer2.attach(this, _id.cast(), detach: this); + } + } + + /// Releases the reference to the underlying ObjC object held by this wrapper. + /// Throws a StateError if this wrapper doesn't currently hold a reference. + void release() { + if (_pendingRelease) { + _pendingRelease = false; + _lib._objc_release(_id.cast()); + _lib._objc_releaseFinalizer2.detach(this); + } else { + throw StateError( + 'Released an ObjC object that was unowned or already released.'); + } + } + + @override + bool operator ==(Object other) { + return other is _ObjCWrapper && _id == other._id; + } + + @override + int get hashCode => _id.hashCode; + + /// Return a pointer to this object. + ffi.Pointer get pointer => _id; +} + +class PrivateSentrySDKOnly extends _ObjCWrapper { + PrivateSentrySDKOnly._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [PrivateSentrySDKOnly] that points to the same underlying object as [other]. + static PrivateSentrySDKOnly castFrom(T other) { + return PrivateSentrySDKOnly._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [PrivateSentrySDKOnly] that wraps the given raw object pointer. + static PrivateSentrySDKOnly castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return PrivateSentrySDKOnly._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [PrivateSentrySDKOnly]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_PrivateSentrySDKOnly1); + } + + /// For storing an envelope synchronously to disk. + static void storeEnvelope_(SentryCocoa _lib, SentryEnvelope? envelope) { + _lib._objc_msgSend_632(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_storeEnvelope_1, envelope?._id ?? ffi.nullptr); + } + + static void captureEnvelope_(SentryCocoa _lib, SentryEnvelope? envelope) { + _lib._objc_msgSend_632(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_captureEnvelope_1, envelope?._id ?? ffi.nullptr); + } + + /// Create an envelope from @c NSData. Needed for example by Flutter. + static SentryEnvelope envelopeWithData_(SentryCocoa _lib, NSObject data) { + final _ret = _lib._objc_msgSend_633(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_envelopeWithData_1, data._id); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); + } + + /// Returns the current list of debug images. Be aware that the @c SentryDebugMeta is actually + /// describing a debug image. + /// @warning This assumes a crash has occurred and attempts to read the crash information from each + /// image's data segment, which may not be present or be invalid if a crash has not actually + /// occurred. To avoid this, use the new @c +[getDebugImagesCrashed:] instead. + static NSObject getDebugImages(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_getDebugImages1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + /// Returns the current list of debug images. Be aware that the @c SentryDebugMeta is actually + /// describing a debug image. + /// @param isCrash @c YES if we're collecting binary images for a crash report, @c NO if we're + /// gathering them for other backtrace information, like a performance transaction. If this is for a + /// crash, each image's data section crash info is also included. + static NSObject getDebugImagesCrashed_(SentryCocoa _lib, NSObject isCrash) { + final _ret = _lib._objc_msgSend_16(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_getDebugImagesCrashed_1, isCrash._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + /// Override SDK information. + static void setSdkName_andVersionString_( + SentryCocoa _lib, NSObject sdkName, NSObject versionString) { + _lib._objc_msgSend_499( + _lib._class_PrivateSentrySDKOnly1, + _lib._sel_setSdkName_andVersionString_1, + sdkName._id, + versionString._id); + } + + /// Override SDK information. + static void setSdkName_(SentryCocoa _lib, NSObject sdkName) { + _lib._objc_msgSend_15( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_setSdkName_1, sdkName._id); + } + + /// Retrieves the SDK name + static NSObject getSdkName(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_getSdkName1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + /// Retrieves the SDK version string + static NSObject getSdkVersionString(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_getSdkVersionString1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + /// Retrieves extra context + static NSObject getExtraContext(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_getExtraContext1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + /// Start a profiler session associated with the given @c SentryId. + /// @return The system time when the profiler session started. + static NSObject startProfilerForTrace_(SentryCocoa _lib, SentryId? traceId) { + final _ret = _lib._objc_msgSend_622(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_startProfilerForTrace_1, traceId?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + /// Collect a profiler session data associated with the given @c SentryId. + /// This also discards the profiler. + static NSObject collectProfileBetween_and_forTrace_(SentryCocoa _lib, + NSObject startSystemTime, NSObject endSystemTime, SentryId? traceId) { + final _ret = _lib._objc_msgSend_634( + _lib._class_PrivateSentrySDKOnly1, + _lib._sel_collectProfileBetween_and_forTrace_1, + startSystemTime._id, + endSystemTime._id, + traceId?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + /// Discard profiler session data associated with the given @c SentryId. + /// This only needs to be called in case you haven't collected the profile (and don't intend to). + static void discardProfilerForTrace_(SentryCocoa _lib, SentryId? traceId) { + _lib._objc_msgSend_635(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_discardProfilerForTrace_1, traceId?._id ?? ffi.nullptr); + } + + static ObjCBlock_ffiInt_SentryAppStartMeasurement + getOnAppStartMeasurementAvailable(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_636(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_onAppStartMeasurementAvailable1); + return ObjCBlock_ffiInt_SentryAppStartMeasurement._(_ret, _lib); + } + + static void setOnAppStartMeasurementAvailable( + SentryCocoa _lib, ObjCBlock_ffiInt_SentryAppStartMeasurement value) { + return _lib._objc_msgSend_637(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_setOnAppStartMeasurementAvailable_1, value._id); + } + + static SentryAppStartMeasurement? getAppStartMeasurement(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_638( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_appStartMeasurement1); + return _ret.address == 0 + ? null + : SentryAppStartMeasurement._(_ret, _lib, retain: true, release: true); + } + + static ffi.Pointer getInstallationID(SentryCocoa _lib) { + return _lib._objc_msgSend_620( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_installationID1); + } + + static SentryOptions? getOptions(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_639( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_options1); + return _ret.address == 0 + ? null + : SentryOptions._(_ret, _lib, retain: true, release: true); + } + + /// If enabled, the SDK won't send the app start measurement with the first transaction. Instead, if + /// @c enableAutoPerformanceTracing is enabled, the SDK measures the app start and then calls + /// @c onAppStartMeasurementAvailable. Furthermore, the SDK doesn't set all values for the app start + /// measurement because the HybridSDKs initialize the Cocoa SDK too late to receive all + /// notifications. Instead, the SDK sets the @c appStartDuration to @c 0 and the + /// @c didFinishLaunchingTimestamp to @c timeIntervalSinceReferenceDate. + /// @note Default is @c NO. + static int getAppStartMeasurementHybridSDKMode(SentryCocoa _lib) { + return _lib._objc_msgSend_219(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_appStartMeasurementHybridSDKMode1); + } + + /// If enabled, the SDK won't send the app start measurement with the first transaction. Instead, if + /// @c enableAutoPerformanceTracing is enabled, the SDK measures the app start and then calls + /// @c onAppStartMeasurementAvailable. Furthermore, the SDK doesn't set all values for the app start + /// measurement because the HybridSDKs initialize the Cocoa SDK too late to receive all + /// notifications. Instead, the SDK sets the @c appStartDuration to @c 0 and the + /// @c didFinishLaunchingTimestamp to @c timeIntervalSinceReferenceDate. + /// @note Default is @c NO. + static void setAppStartMeasurementHybridSDKMode(SentryCocoa _lib, int value) { + return _lib._objc_msgSend_640(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_setAppStartMeasurementHybridSDKMode_1, value); + } + + static SentryUser userWithDictionary_(SentryCocoa _lib, NSObject dictionary) { + final _ret = _lib._objc_msgSend_641(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_userWithDictionary_1, dictionary._id); + return SentryUser._(_ret, _lib, retain: true, release: true); + } + + static SentryBreadcrumb breadcrumbWithDictionary_( + SentryCocoa _lib, NSObject dictionary) { + final _ret = _lib._objc_msgSend_642(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_breadcrumbWithDictionary_1, dictionary._id); + return SentryBreadcrumb._(_ret, _lib, retain: true, release: true); + } +} + +class ObjCSel extends ffi.Opaque {} + +class ObjCObject extends ffi.Opaque {} + +class SentryEnvelope extends _ObjCWrapper { + SentryEnvelope._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryEnvelope] that points to the same underlying object as [other]. + static SentryEnvelope castFrom(T other) { + return SentryEnvelope._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [SentryEnvelope] that wraps the given raw object pointer. + static SentryEnvelope castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryEnvelope._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryEnvelope]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryEnvelope1); + } + + SentryEnvelope initWithId_singleItem_( + SentryId? id, SentryEnvelopeItem? item) { + final _ret = _lib._objc_msgSend_621(_id, _lib._sel_initWithId_singleItem_1, + id?._id ?? ffi.nullptr, item?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); + } + + SentryEnvelope initWithHeader_singleItem_( + SentryEnvelopeHeader? header, SentryEnvelopeItem? item) { + final _ret = _lib._objc_msgSend_628( + _id, + _lib._sel_initWithHeader_singleItem_1, + header?._id ?? ffi.nullptr, + item?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); + } + + SentryEnvelope initWithId_items_(SentryId? id, NSObject items) { + final _ret = _lib._objc_msgSend_629( + _id, _lib._sel_initWithId_items_1, id?._id ?? ffi.nullptr, items._id); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); + } + + /// Initializes a @c SentryEnvelope with a single session. + /// @param session to init the envelope with. + SentryEnvelope initWithSession_(SentrySession? session) { + final _ret = _lib._objc_msgSend_615( + _id, _lib._sel_initWithSession_1, session?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); + } + + /// Initializes a @c SentryEnvelope with a list of sessions. + /// Can be used when an operation that starts a session closes an ongoing session. + /// @param sessions to init the envelope with. + SentryEnvelope initWithSessions_(NSObject sessions) { + final _ret = + _lib._objc_msgSend_16(_id, _lib._sel_initWithSessions_1, sessions._id); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); + } + + SentryEnvelope initWithHeader_items_( + SentryEnvelopeHeader? header, NSObject items) { + final _ret = _lib._objc_msgSend_630(_id, _lib._sel_initWithHeader_items_1, + header?._id ?? ffi.nullptr, items._id); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); + } + + /// Convenience init for a single event. + SentryEnvelope initWithEvent_(SentryEvent? event) { + final _ret = _lib._objc_msgSend_614( + _id, _lib._sel_initWithEvent_1, event?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); + } + + SentryEnvelope initWithUserFeedback_(SentryUserFeedback? userFeedback) { + final _ret = _lib._objc_msgSend_616(_id, _lib._sel_initWithUserFeedback_1, + userFeedback?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); + } + + /// The envelope header. + SentryEnvelopeHeader? get header { + final _ret = _lib._objc_msgSend_631(_id, _lib._sel_header1); + return _ret.address == 0 + ? null + : SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); + } +} + +typedef instancetype = ffi.Pointer; + +class SentryId extends NSObject { + SentryId._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryId] that points to the same underlying object as [other]. + static SentryId castFrom(T other) { + return SentryId._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [SentryId] that wraps the given raw object pointer. + static SentryId castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryId._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryId]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryId1); + } + + /// Creates a @c SentryId with a random UUID. + @override + SentryId init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return SentryId._(_ret, _lib, retain: true, release: true); + } + + /// Creates a SentryId with the given UUID. + SentryId initWithUUID_(NSUUID? uuid) { + final _ret = _lib._objc_msgSend_612( + _id, _lib._sel_initWithUUID_1, uuid?._id ?? ffi.nullptr); + return SentryId._(_ret, _lib, retain: true, release: true); + } + + /// Creates a @c SentryId from a 32 character hexadecimal string without dashes such as + /// "12c2d058d58442709aa2eca08bf20986" or a 36 character hexadecimal string such as such as + /// "12c2d058-d584-4270-9aa2-eca08bf20986". + /// @return SentryId.empty for invalid strings. + SentryId initWithUUIDString_(NSString? string) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithUUIDString_1, string?._id ?? ffi.nullptr); + return SentryId._(_ret, _lib, retain: true, release: true); + } + + /// Returns a 32 lowercase character hexadecimal string description of the @c SentryId, such as + /// "12c2d058d58442709aa2eca08bf20986". + NSString? get sentryIdString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_sentryIdString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + /// A @c SentryId with an empty UUID "00000000000000000000000000000000". + static SentryId? getEmpty(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_613(_lib._class_SentryId1, _lib._sel_empty1); + return _ret.address == 0 + ? null + : SentryId._(_ret, _lib, retain: true, release: true); + } + + static SentryId new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_SentryId1, _lib._sel_new1); + return SentryId._(_ret, _lib, retain: false, release: true); + } + + static SentryId allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_SentryId1, _lib._sel_allocWithZone_1, zone); + return SentryId._(_ret, _lib, retain: false, release: true); + } + + static SentryId alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_SentryId1, _lib._sel_alloc1); + return SentryId._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_SentryId1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_SentryId1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_SentryId1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_SentryId1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_SentryId1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_SentryId1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_SentryId1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_SentryId1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_SentryId1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSObject extends _ObjCWrapper { + NSObject._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSObject] that points to the same underlying object as [other]. + static NSObject castFrom(T other) { + return NSObject._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSObject] that wraps the given raw object pointer. + static NSObject castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSObject._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSObject]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSObject1); + } + + static void load(SentryCocoa _lib) { + _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_load1); + } + + static void initialize(SentryCocoa _lib) { + _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_initialize1); + } + + NSObject init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_new1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_allocWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_alloc1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + void dealloc() { + _lib._objc_msgSend_1(_id, _lib._sel_dealloc1); + } + + void finalize() { + _lib._objc_msgSend_1(_id, _lib._sel_finalize1); + } + + NSObject copy() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_copy1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + NSObject mutableCopy() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_mutableCopy1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject copyWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_copyWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject mutableCopyWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_mutableCopyWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static bool instancesRespondToSelector_( + SentryCocoa _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_4(_lib._class_NSObject1, + _lib._sel_instancesRespondToSelector_1, aSelector); + } + + static bool conformsToProtocol_(SentryCocoa _lib, Protocol? protocol) { + return _lib._objc_msgSend_5(_lib._class_NSObject1, + _lib._sel_conformsToProtocol_1, protocol?._id ?? ffi.nullptr); + } + + ffi.Pointer> methodForSelector_( + ffi.Pointer aSelector) { + return _lib._objc_msgSend_6(_id, _lib._sel_methodForSelector_1, aSelector); + } + + static ffi.Pointer> + instanceMethodForSelector_( + SentryCocoa _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_6(_lib._class_NSObject1, + _lib._sel_instanceMethodForSelector_1, aSelector); + } + + void doesNotRecognizeSelector_(ffi.Pointer aSelector) { + _lib._objc_msgSend_7(_id, _lib._sel_doesNotRecognizeSelector_1, aSelector); + } + + NSObject forwardingTargetForSelector_(ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_8( + _id, _lib._sel_forwardingTargetForSelector_1, aSelector); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void forwardInvocation_(NSInvocation? anInvocation) { + _lib._objc_msgSend_392( + _id, _lib._sel_forwardInvocation_1, anInvocation?._id ?? ffi.nullptr); + } + + NSMethodSignature methodSignatureForSelector_( + ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_393( + _id, _lib._sel_methodSignatureForSelector_1, aSelector); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + static NSMethodSignature instanceMethodSignatureForSelector_( + SentryCocoa _lib, ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_393(_lib._class_NSObject1, + _lib._sel_instanceMethodSignatureForSelector_1, aSelector); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + bool allowsWeakReference() { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsWeakReference1); + } + + bool retainWeakReference() { + return _lib._objc_msgSend_12(_id, _lib._sel_retainWeakReference1); + } + + static bool isSubclassOfClass_(SentryCocoa _lib, NSObject aClass) { + return _lib._objc_msgSend_0( + _lib._class_NSObject1, _lib._sel_isSubclassOfClass_1, aClass._id); + } + + static bool resolveClassMethod_(SentryCocoa _lib, ffi.Pointer sel) { + return _lib._objc_msgSend_4( + _lib._class_NSObject1, _lib._sel_resolveClassMethod_1, sel); + } + + static bool resolveInstanceMethod_( + SentryCocoa _lib, ffi.Pointer sel) { + return _lib._objc_msgSend_4( + _lib._class_NSObject1, _lib._sel_resolveInstanceMethod_1, sel); + } + + static int hash(SentryCocoa _lib) { + return _lib._objc_msgSend_10(_lib._class_NSObject1, _lib._sel_hash1); + } + + static NSObject superclass(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_superclass1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject class1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_class1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSString description(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_20(_lib._class_NSObject1, _lib._sel_description1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString debugDescription(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_20( + _lib._class_NSObject1, _lib._sel_debugDescription1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static int version(SentryCocoa _lib) { + return _lib._objc_msgSend_78(_lib._class_NSObject1, _lib._sel_version1); + } + + static void setVersion_(SentryCocoa _lib, int aVersion) { + _lib._objc_msgSend_394( + _lib._class_NSObject1, _lib._sel_setVersion_1, aVersion); + } + + NSObject get classForCoder { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_classForCoder1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject replacementObjectForCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_replacementObjectForCoder_1, coder?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject awakeAfterUsingCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_awakeAfterUsingCoder_1, coder?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static void poseAsClass_(SentryCocoa _lib, NSObject aClass) { + _lib._objc_msgSend_15( + _lib._class_NSObject1, _lib._sel_poseAsClass_1, aClass._id); + } + + NSObject get autoContentAccessingProxy { + final _ret = + _lib._objc_msgSend_2(_id, _lib._sel_autoContentAccessingProxy1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void + attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_( + NSError? error, + int recoveryOptionIndex, + NSObject delegate, + ffi.Pointer didRecoverSelector, + ffi.Pointer contextInfo) { + _lib._objc_msgSend_395( + _id, + _lib._sel_attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_1, + error?._id ?? ffi.nullptr, + recoveryOptionIndex, + delegate._id, + didRecoverSelector, + contextInfo); + } + + bool attemptRecoveryFromError_optionIndex_( + NSError? error, int recoveryOptionIndex) { + return _lib._objc_msgSend_396( + _id, + _lib._sel_attemptRecoveryFromError_optionIndex_1, + error?._id ?? ffi.nullptr, + recoveryOptionIndex); + } + + void performSelector_withObject_afterDelay_inModes_( + ffi.Pointer aSelector, + NSObject anArgument, + double delay, + NSArray? modes) { + _lib._objc_msgSend_397( + _id, + _lib._sel_performSelector_withObject_afterDelay_inModes_1, + aSelector, + anArgument._id, + delay, + modes?._id ?? ffi.nullptr); + } + + void performSelector_withObject_afterDelay_( + ffi.Pointer aSelector, NSObject anArgument, double delay) { + _lib._objc_msgSend_398( + _id, + _lib._sel_performSelector_withObject_afterDelay_1, + aSelector, + anArgument._id, + delay); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSObject1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSObject1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + void URL_resourceDataDidBecomeAvailable_(NSURL? sender, NSData? newBytes) { + _lib._objc_msgSend_399(_id, _lib._sel_URL_resourceDataDidBecomeAvailable_1, + sender?._id ?? ffi.nullptr, newBytes?._id ?? ffi.nullptr); + } + + void URLResourceDidFinishLoading_(NSURL? sender) { + _lib._objc_msgSend_400(_id, _lib._sel_URLResourceDidFinishLoading_1, + sender?._id ?? ffi.nullptr); + } + + void URLResourceDidCancelLoading_(NSURL? sender) { + _lib._objc_msgSend_400(_id, _lib._sel_URLResourceDidCancelLoading_1, + sender?._id ?? ffi.nullptr); + } + + void URL_resourceDidFailLoadingWithReason_(NSURL? sender, NSString? reason) { + _lib._objc_msgSend_401( + _id, + _lib._sel_URL_resourceDidFailLoadingWithReason_1, + sender?._id ?? ffi.nullptr, + reason?._id ?? ffi.nullptr); + } + + bool fileManager_shouldProceedAfterError_( + NSFileManager? fm, NSDictionary? errorInfo) { + return _lib._objc_msgSend_436( + _id, + _lib._sel_fileManager_shouldProceedAfterError_1, + fm?._id ?? ffi.nullptr, + errorInfo?._id ?? ffi.nullptr); + } + + void fileManager_willProcessPath_(NSFileManager? fm, NSString? path) { + _lib._objc_msgSend_437(_id, _lib._sel_fileManager_willProcessPath_1, + fm?._id ?? ffi.nullptr, path?._id ?? ffi.nullptr); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSObject1, _lib._sel_accessInstanceVariablesDirectly1); + } + + NSObject valueForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_valueForKey_1, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void setValue_forKey_(NSObject value, NSString? key) { + _lib._objc_msgSend_126( + _id, _lib._sel_setValue_forKey_1, value._id, key?._id ?? ffi.nullptr); + } + + bool validateValue_forKey_error_(ffi.Pointer> ioValue, + NSString? inKey, ffi.Pointer> outError) { + return _lib._objc_msgSend_226(_id, _lib._sel_validateValue_forKey_error_1, + ioValue, inKey?._id ?? ffi.nullptr, outError); + } + + NSMutableArray mutableArrayValueForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_454( + _id, _lib._sel_mutableArrayValueForKey_1, key?._id ?? ffi.nullptr); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + NSMutableOrderedSet mutableOrderedSetValueForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_473( + _id, _lib._sel_mutableOrderedSetValueForKey_1, key?._id ?? ffi.nullptr); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + NSMutableSet mutableSetValueForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_474( + _id, _lib._sel_mutableSetValueForKey_1, key?._id ?? ffi.nullptr); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + NSObject valueForKeyPath_(NSString? keyPath) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_valueForKeyPath_1, keyPath?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void setValue_forKeyPath_(NSObject value, NSString? keyPath) { + _lib._objc_msgSend_126(_id, _lib._sel_setValue_forKeyPath_1, value._id, + keyPath?._id ?? ffi.nullptr); + } + + bool validateValue_forKeyPath_error_( + ffi.Pointer> ioValue, + NSString? inKeyPath, + ffi.Pointer> outError) { + return _lib._objc_msgSend_226( + _id, + _lib._sel_validateValue_forKeyPath_error_1, + ioValue, + inKeyPath?._id ?? ffi.nullptr, + outError); + } + + NSMutableArray mutableArrayValueForKeyPath_(NSString? keyPath) { + final _ret = _lib._objc_msgSend_454(_id, + _lib._sel_mutableArrayValueForKeyPath_1, keyPath?._id ?? ffi.nullptr); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + NSMutableOrderedSet mutableOrderedSetValueForKeyPath_(NSString? keyPath) { + final _ret = _lib._objc_msgSend_473( + _id, + _lib._sel_mutableOrderedSetValueForKeyPath_1, + keyPath?._id ?? ffi.nullptr); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + NSMutableSet mutableSetValueForKeyPath_(NSString? keyPath) { + final _ret = _lib._objc_msgSend_474(_id, + _lib._sel_mutableSetValueForKeyPath_1, keyPath?._id ?? ffi.nullptr); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + NSObject valueForUndefinedKey_(NSString? key) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_valueForUndefinedKey_1, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void setValue_forUndefinedKey_(NSObject value, NSString? key) { + _lib._objc_msgSend_126(_id, _lib._sel_setValue_forUndefinedKey_1, value._id, + key?._id ?? ffi.nullptr); + } + + void setNilValueForKey_(NSString? key) { + _lib._objc_msgSend_192( + _id, _lib._sel_setNilValueForKey_1, key?._id ?? ffi.nullptr); + } + + NSDictionary dictionaryWithValuesForKeys_(NSArray? keys) { + final _ret = _lib._objc_msgSend_475( + _id, _lib._sel_dictionaryWithValuesForKeys_1, keys?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + void setValuesForKeysWithDictionary_(NSDictionary? keyedValues) { + _lib._objc_msgSend_476(_id, _lib._sel_setValuesForKeysWithDictionary_1, + keyedValues?._id ?? ffi.nullptr); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSObject1, _lib._sel_useStoredAccessor1); + } + + NSObject storedValueForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_storedValueForKey_1, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void takeStoredValue_forKey_(NSObject value, NSString? key) { + _lib._objc_msgSend_126(_id, _lib._sel_takeStoredValue_forKey_1, value._id, + key?._id ?? ffi.nullptr); + } + + void takeValue_forKey_(NSObject value, NSString? key) { + _lib._objc_msgSend_126( + _id, _lib._sel_takeValue_forKey_1, value._id, key?._id ?? ffi.nullptr); + } + + void takeValue_forKeyPath_(NSObject value, NSString? keyPath) { + _lib._objc_msgSend_126(_id, _lib._sel_takeValue_forKeyPath_1, value._id, + keyPath?._id ?? ffi.nullptr); + } + + NSObject handleQueryWithUnboundKey_(NSString? key) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_handleQueryWithUnboundKey_1, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void handleTakeValue_forUnboundKey_(NSObject value, NSString? key) { + _lib._objc_msgSend_126(_id, _lib._sel_handleTakeValue_forUnboundKey_1, + value._id, key?._id ?? ffi.nullptr); + } + + void unableToSetNilForKey_(NSString? key) { + _lib._objc_msgSend_192( + _id, _lib._sel_unableToSetNilForKey_1, key?._id ?? ffi.nullptr); + } + + NSDictionary valuesForKeys_(NSArray? keys) { + final _ret = _lib._objc_msgSend_475( + _id, _lib._sel_valuesForKeys_1, keys?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + void takeValuesFromDictionary_(NSDictionary? properties) { + _lib._objc_msgSend_476(_id, _lib._sel_takeValuesFromDictionary_1, + properties?._id ?? ffi.nullptr); + } + + void observeValueForKeyPath_ofObject_change_context_(NSString? keyPath, + NSObject object, NSDictionary? change, ffi.Pointer context) { + _lib._objc_msgSend_477( + _id, + _lib._sel_observeValueForKeyPath_ofObject_change_context_1, + keyPath?._id ?? ffi.nullptr, + object._id, + change?._id ?? ffi.nullptr, + context); + } + + void addObserver_forKeyPath_options_context_(NSObject? observer, + NSString? keyPath, int options, ffi.Pointer context) { + _lib._objc_msgSend_130( + _id, + _lib._sel_addObserver_forKeyPath_options_context_1, + observer?._id ?? ffi.nullptr, + keyPath?._id ?? ffi.nullptr, + options, + context); + } + + void removeObserver_forKeyPath_context_( + NSObject? observer, NSString? keyPath, ffi.Pointer context) { + _lib._objc_msgSend_131(_id, _lib._sel_removeObserver_forKeyPath_context_1, + observer?._id ?? ffi.nullptr, keyPath?._id ?? ffi.nullptr, context); + } + + void removeObserver_forKeyPath_(NSObject? observer, NSString? keyPath) { + _lib._objc_msgSend_132(_id, _lib._sel_removeObserver_forKeyPath_1, + observer?._id ?? ffi.nullptr, keyPath?._id ?? ffi.nullptr); + } + + void willChangeValueForKey_(NSString? key) { + _lib._objc_msgSend_192( + _id, _lib._sel_willChangeValueForKey_1, key?._id ?? ffi.nullptr); + } + + void didChangeValueForKey_(NSString? key) { + _lib._objc_msgSend_192( + _id, _lib._sel_didChangeValueForKey_1, key?._id ?? ffi.nullptr); + } + + void willChange_valuesAtIndexes_forKey_( + int changeKind, NSIndexSet? indexes, NSString? key) { + _lib._objc_msgSend_478(_id, _lib._sel_willChange_valuesAtIndexes_forKey_1, + changeKind, indexes?._id ?? ffi.nullptr, key?._id ?? ffi.nullptr); + } + + void didChange_valuesAtIndexes_forKey_( + int changeKind, NSIndexSet? indexes, NSString? key) { + _lib._objc_msgSend_478(_id, _lib._sel_didChange_valuesAtIndexes_forKey_1, + changeKind, indexes?._id ?? ffi.nullptr, key?._id ?? ffi.nullptr); + } + + void willChangeValueForKey_withSetMutation_usingObjects_( + NSString? key, int mutationKind, NSSet? objects) { + _lib._objc_msgSend_479( + _id, + _lib._sel_willChangeValueForKey_withSetMutation_usingObjects_1, + key?._id ?? ffi.nullptr, + mutationKind, + objects?._id ?? ffi.nullptr); + } + + void didChangeValueForKey_withSetMutation_usingObjects_( + NSString? key, int mutationKind, NSSet? objects) { + _lib._objc_msgSend_479( + _id, + _lib._sel_didChangeValueForKey_withSetMutation_usingObjects_1, + key?._id ?? ffi.nullptr, + mutationKind, + objects?._id ?? ffi.nullptr); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSObject1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSObject1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + ffi.Pointer get observationInfo { + return _lib._objc_msgSend_19(_id, _lib._sel_observationInfo1); + } + + set observationInfo(ffi.Pointer value) { + return _lib._objc_msgSend_480(_id, _lib._sel_setObservationInfo_1, value); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSObject1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + NSObject get classForKeyedArchiver { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_classForKeyedArchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject replacementObjectForKeyedArchiver_(NSKeyedArchiver? archiver) { + final _ret = _lib._objc_msgSend_493( + _id, + _lib._sel_replacementObjectForKeyedArchiver_1, + archiver?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSObject1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSObject1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void performSelectorOnMainThread_withObject_waitUntilDone_modes_( + ffi.Pointer aSelector, NSObject arg, bool wait, NSArray? array) { + _lib._objc_msgSend_494( + _id, + _lib._sel_performSelectorOnMainThread_withObject_waitUntilDone_modes_1, + aSelector, + arg._id, + wait, + array?._id ?? ffi.nullptr); + } + + void performSelectorOnMainThread_withObject_waitUntilDone_( + ffi.Pointer aSelector, NSObject arg, bool wait) { + _lib._objc_msgSend_495( + _id, + _lib._sel_performSelectorOnMainThread_withObject_waitUntilDone_1, + aSelector, + arg._id, + wait); + } + + void performSelector_onThread_withObject_waitUntilDone_modes_( + ffi.Pointer aSelector, + NSThread? thr, + NSObject arg, + bool wait, + NSArray? array) { + _lib._objc_msgSend_512( + _id, + _lib._sel_performSelector_onThread_withObject_waitUntilDone_modes_1, + aSelector, + thr?._id ?? ffi.nullptr, + arg._id, + wait, + array?._id ?? ffi.nullptr); + } + + void performSelector_onThread_withObject_waitUntilDone_( + ffi.Pointer aSelector, NSThread? thr, NSObject arg, bool wait) { + _lib._objc_msgSend_513( + _id, + _lib._sel_performSelector_onThread_withObject_waitUntilDone_1, + aSelector, + thr?._id ?? ffi.nullptr, + arg._id, + wait); + } + + void performSelectorInBackground_withObject_( + ffi.Pointer aSelector, NSObject arg) { + _lib._objc_msgSend_84(_id, + _lib._sel_performSelectorInBackground_withObject_1, aSelector, arg._id); + } + + NSObject get classForArchiver { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_classForArchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject replacementObjectForArchiver_(NSArchiver? archiver) { + final _ret = _lib._objc_msgSend_516(_id, + _lib._sel_replacementObjectForArchiver_1, archiver?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject get classForPortCoder { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_classForPortCoder1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject replacementObjectForPortCoder_(NSPortCoder? coder) { + final _ret = _lib._objc_msgSend_554(_id, + _lib._sel_replacementObjectForPortCoder_1, coder?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSClassDescription? get classDescription { + final _ret = _lib._objc_msgSend_557(_id, _lib._sel_classDescription1); + return _ret.address == 0 + ? null + : NSClassDescription._(_ret, _lib, retain: true, release: true); + } + + NSArray? get attributeKeys { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_attributeKeys1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get toOneRelationshipKeys { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_toOneRelationshipKeys1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get toManyRelationshipKeys { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_toManyRelationshipKeys1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString inverseForRelationshipKey_(NSString? relationshipKey) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_inverseForRelationshipKey_1, + relationshipKey?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSObject scriptingValueForSpecifier_( + NSScriptObjectSpecifier? objectSpecifier) { + final _ret = _lib._objc_msgSend_601( + _id, + _lib._sel_scriptingValueForSpecifier_1, + objectSpecifier?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get scriptingProperties { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_scriptingProperties1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set scriptingProperties(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, _lib._sel_setScriptingProperties_1, value?._id ?? ffi.nullptr); + } + + NSObject copyScriptingValue_forKey_withProperties_( + NSObject value, NSString? key, NSDictionary? properties) { + final _ret = _lib._objc_msgSend_602( + _id, + _lib._sel_copyScriptingValue_forKey_withProperties_1, + value._id, + key?._id ?? ffi.nullptr, + properties?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + NSObject + newScriptingObjectOfClass_forValueForKey_withContentsValue_properties_( + NSObject objectClass, + NSString? key, + NSObject contentsValue, + NSDictionary? properties) { + final _ret = _lib._objc_msgSend_603( + _id, + _lib._sel_newScriptingObjectOfClass_forValueForKey_withContentsValue_properties_1, + objectClass._id, + key?._id ?? ffi.nullptr, + contentsValue._id, + properties?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + int get classCode { + return _lib._objc_msgSend_197(_id, _lib._sel_classCode1); + } + + NSString? get className { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_className1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSObject valueAtIndex_inPropertyWithKey_(int index, NSString? key) { + final _ret = _lib._objc_msgSend_604( + _id, + _lib._sel_valueAtIndex_inPropertyWithKey_1, + index, + key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject valueWithName_inPropertyWithKey_(NSString? name, NSString? key) { + final _ret = _lib._objc_msgSend_165( + _id, + _lib._sel_valueWithName_inPropertyWithKey_1, + name?._id ?? ffi.nullptr, + key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject valueWithUniqueID_inPropertyWithKey_( + NSObject uniqueID, NSString? key) { + final _ret = _lib._objc_msgSend_287( + _id, + _lib._sel_valueWithUniqueID_inPropertyWithKey_1, + uniqueID._id, + key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void insertValue_atIndex_inPropertyWithKey_( + NSObject value, int index, NSString? key) { + _lib._objc_msgSend_605( + _id, + _lib._sel_insertValue_atIndex_inPropertyWithKey_1, + value._id, + index, + key?._id ?? ffi.nullptr); + } + + void removeValueAtIndex_fromPropertyWithKey_(int index, NSString? key) { + _lib._objc_msgSend_606( + _id, + _lib._sel_removeValueAtIndex_fromPropertyWithKey_1, + index, + key?._id ?? ffi.nullptr); + } + + void replaceValueAtIndex_inPropertyWithKey_withValue_( + int index, NSString? key, NSObject value) { + _lib._objc_msgSend_607( + _id, + _lib._sel_replaceValueAtIndex_inPropertyWithKey_withValue_1, + index, + key?._id ?? ffi.nullptr, + value._id); + } + + void insertValue_inPropertyWithKey_(NSObject value, NSString? key) { + _lib._objc_msgSend_126(_id, _lib._sel_insertValue_inPropertyWithKey_1, + value._id, key?._id ?? ffi.nullptr); + } + + NSObject coerceValue_forKey_(NSObject value, NSString? key) { + final _ret = _lib._objc_msgSend_287(_id, _lib._sel_coerceValue_forKey_1, + value._id, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSScriptObjectSpecifier? get objectSpecifier { + final _ret = _lib._objc_msgSend_588(_id, _lib._sel_objectSpecifier1); + return _ret.address == 0 + ? null + : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + } + + NSArray indicesOfObjectsByEvaluatingObjectSpecifier_( + NSScriptObjectSpecifier? specifier) { + final _ret = _lib._objc_msgSend_608( + _id, + _lib._sel_indicesOfObjectsByEvaluatingObjectSpecifier_1, + specifier?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + bool isEqualTo_(NSObject object) { + return _lib._objc_msgSend_0(_id, _lib._sel_isEqualTo_1, object._id); + } + + bool isLessThanOrEqualTo_(NSObject object) { + return _lib._objc_msgSend_0( + _id, _lib._sel_isLessThanOrEqualTo_1, object._id); + } + + bool isLessThan_(NSObject object) { + return _lib._objc_msgSend_0(_id, _lib._sel_isLessThan_1, object._id); + } + + bool isGreaterThanOrEqualTo_(NSObject object) { + return _lib._objc_msgSend_0( + _id, _lib._sel_isGreaterThanOrEqualTo_1, object._id); + } + + bool isGreaterThan_(NSObject object) { + return _lib._objc_msgSend_0(_id, _lib._sel_isGreaterThan_1, object._id); + } + + bool isNotEqualTo_(NSObject object) { + return _lib._objc_msgSend_0(_id, _lib._sel_isNotEqualTo_1, object._id); + } + + bool doesContain_(NSObject object) { + return _lib._objc_msgSend_0(_id, _lib._sel_doesContain_1, object._id); + } + + bool isLike_(NSString? object) { + return _lib._objc_msgSend_59( + _id, _lib._sel_isLike_1, object?._id ?? ffi.nullptr); + } + + bool isCaseInsensitiveLike_(NSString? object) { + return _lib._objc_msgSend_59( + _id, _lib._sel_isCaseInsensitiveLike_1, object?._id ?? ffi.nullptr); + } + + bool scriptingIsEqualTo_(NSObject object) { + return _lib._objc_msgSend_0( + _id, _lib._sel_scriptingIsEqualTo_1, object._id); + } + + bool scriptingIsLessThanOrEqualTo_(NSObject object) { + return _lib._objc_msgSend_0( + _id, _lib._sel_scriptingIsLessThanOrEqualTo_1, object._id); + } + + bool scriptingIsLessThan_(NSObject object) { + return _lib._objc_msgSend_0( + _id, _lib._sel_scriptingIsLessThan_1, object._id); + } + + bool scriptingIsGreaterThanOrEqualTo_(NSObject object) { + return _lib._objc_msgSend_0( + _id, _lib._sel_scriptingIsGreaterThanOrEqualTo_1, object._id); + } + + bool scriptingIsGreaterThan_(NSObject object) { + return _lib._objc_msgSend_0( + _id, _lib._sel_scriptingIsGreaterThan_1, object._id); + } + + bool scriptingBeginsWith_(NSObject object) { + return _lib._objc_msgSend_0( + _id, _lib._sel_scriptingBeginsWith_1, object._id); + } + + bool scriptingEndsWith_(NSObject object) { + return _lib._objc_msgSend_0(_id, _lib._sel_scriptingEndsWith_1, object._id); + } + + bool scriptingContains_(NSObject object) { + return _lib._objc_msgSend_0(_id, _lib._sel_scriptingContains_1, object._id); + } +} + +class _NSZone extends ffi.Opaque {} + +class Protocol extends _ObjCWrapper { + Protocol._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [Protocol] that points to the same underlying object as [other]. + static Protocol castFrom(T other) { + return Protocol._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [Protocol] that wraps the given raw object pointer. + static Protocol castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return Protocol._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [Protocol]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_Protocol1); + } +} + +class NSInvocation extends NSObject { + NSInvocation._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSInvocation] that points to the same underlying object as [other]. + static NSInvocation castFrom(T other) { + return NSInvocation._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSInvocation] that wraps the given raw object pointer. + static NSInvocation castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSInvocation._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSInvocation]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSInvocation1); + } + + static NSInvocation invocationWithMethodSignature_( + SentryCocoa _lib, NSMethodSignature? sig) { + final _ret = _lib._objc_msgSend_385(_lib._class_NSInvocation1, + _lib._sel_invocationWithMethodSignature_1, sig?._id ?? ffi.nullptr); + return NSInvocation._(_ret, _lib, retain: true, release: true); + } + + NSMethodSignature? get methodSignature { + final _ret = _lib._objc_msgSend_386(_id, _lib._sel_methodSignature1); + return _ret.address == 0 + ? null + : NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + void retainArguments() { + _lib._objc_msgSend_1(_id, _lib._sel_retainArguments1); + } + + bool get argumentsRetained { + return _lib._objc_msgSend_12(_id, _lib._sel_argumentsRetained1); + } + + NSObject get target { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_target1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set target(NSObject value) { + return _lib._objc_msgSend_387(_id, _lib._sel_setTarget_1, value._id); + } + + ffi.Pointer get selector { + return _lib._objc_msgSend_388(_id, _lib._sel_selector1); + } + + set selector(ffi.Pointer value) { + return _lib._objc_msgSend_389(_id, _lib._sel_setSelector_1, value); + } + + void getReturnValue_(ffi.Pointer retLoc) { + _lib._objc_msgSend_47(_id, _lib._sel_getReturnValue_1, retLoc); + } + + void setReturnValue_(ffi.Pointer retLoc) { + _lib._objc_msgSend_47(_id, _lib._sel_setReturnValue_1, retLoc); + } + + void getArgument_atIndex_(ffi.Pointer argumentLocation, int idx) { + _lib._objc_msgSend_390( + _id, _lib._sel_getArgument_atIndex_1, argumentLocation, idx); + } + + void setArgument_atIndex_(ffi.Pointer argumentLocation, int idx) { + _lib._objc_msgSend_390( + _id, _lib._sel_setArgument_atIndex_1, argumentLocation, idx); + } + + void invoke() { + _lib._objc_msgSend_1(_id, _lib._sel_invoke1); + } + + void invokeWithTarget_(NSObject target) { + _lib._objc_msgSend_15(_id, _lib._sel_invokeWithTarget_1, target._id); + } + + void invokeUsingIMP_( + ffi.Pointer> imp) { + _lib._objc_msgSend_391(_id, _lib._sel_invokeUsingIMP_1, imp); + } + + @override + NSInvocation init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSInvocation._(_ret, _lib, retain: true, release: true); + } + + static NSInvocation new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInvocation1, _lib._sel_new1); + return NSInvocation._(_ret, _lib, retain: false, release: true); + } + + static NSInvocation allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSInvocation1, _lib._sel_allocWithZone_1, zone); + return NSInvocation._(_ret, _lib, retain: false, release: true); + } + + static NSInvocation alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInvocation1, _lib._sel_alloc1); + return NSInvocation._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSInvocation1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSInvocation1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSInvocation1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSInvocation1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSInvocation1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSInvocation1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSInvocation1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSInvocation1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSInvocation1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSMethodSignature extends NSObject { + NSMethodSignature._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMethodSignature] that points to the same underlying object as [other]. + static NSMethodSignature castFrom(T other) { + return NSMethodSignature._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSMethodSignature] that wraps the given raw object pointer. + static NSMethodSignature castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMethodSignature._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMethodSignature]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMethodSignature1); + } + + static NSMethodSignature signatureWithObjCTypes_( + SentryCocoa _lib, ffi.Pointer types) { + final _ret = _lib._objc_msgSend_9(_lib._class_NSMethodSignature1, + _lib._sel_signatureWithObjCTypes_1, types); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + int get numberOfArguments { + return _lib._objc_msgSend_10(_id, _lib._sel_numberOfArguments1); + } + + ffi.Pointer getArgumentTypeAtIndex_(int idx) { + return _lib._objc_msgSend_11(_id, _lib._sel_getArgumentTypeAtIndex_1, idx); + } + + int get frameLength { + return _lib._objc_msgSend_10(_id, _lib._sel_frameLength1); + } + + bool isOneway() { + return _lib._objc_msgSend_12(_id, _lib._sel_isOneway1); + } + + ffi.Pointer get methodReturnType { + return _lib._objc_msgSend_13(_id, _lib._sel_methodReturnType1); + } + + int get methodReturnLength { + return _lib._objc_msgSend_10(_id, _lib._sel_methodReturnLength1); + } + + @override + NSMethodSignature init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + static NSMethodSignature new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMethodSignature1, _lib._sel_new1); + return NSMethodSignature._(_ret, _lib, retain: false, release: true); + } + + static NSMethodSignature allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSMethodSignature1, _lib._sel_allocWithZone_1, zone); + return NSMethodSignature._(_ret, _lib, retain: false, release: true); + } + + static NSMethodSignature alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMethodSignature1, _lib._sel_alloc1); + return NSMethodSignature._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSMethodSignature1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSMethodSignature1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSMethodSignature1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMethodSignature1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSMethodSignature1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSMethodSignature1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSMethodSignature1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSMethodSignature1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMethodSignature1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSSet extends NSObject { + NSSet._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSSet] that points to the same underlying object as [other]. + static NSSet castFrom(T other) { + return NSSet._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSSet] that wraps the given raw object pointer. + static NSSet castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSSet._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSSet]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSSet1); + } + + int get count { + return _lib._objc_msgSend_10(_id, _lib._sel_count1); + } + + NSObject member_(NSObject object) { + final _ret = _lib._objc_msgSend_16(_id, _lib._sel_member_1, object._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSEnumerator objectEnumerator() { + final _ret = _lib._objc_msgSend_72(_id, _lib._sel_objectEnumerator1); + return NSEnumerator._(_ret, _lib, retain: true, release: true); + } + + @override + NSSet init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + NSSet initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61( + _id, _lib._sel_initWithObjects_count_1, objects, cnt); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + NSSet initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + NSArray? get allObjects { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_allObjects1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSObject anyObject() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_anyObject1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool containsObject_(NSObject anObject) { + return _lib._objc_msgSend_0(_id, _lib._sel_containsObject_1, anObject._id); + } + + NSString? get description { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString descriptionWithLocale_(NSObject locale) { + final _ret = _lib._objc_msgSend_65( + _id, _lib._sel_descriptionWithLocale_1, locale._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + bool intersectsSet_(NSSet? otherSet) { + return _lib._objc_msgSend_374( + _id, _lib._sel_intersectsSet_1, otherSet?._id ?? ffi.nullptr); + } + + bool isEqualToSet_(NSSet? otherSet) { + return _lib._objc_msgSend_374( + _id, _lib._sel_isEqualToSet_1, otherSet?._id ?? ffi.nullptr); + } + + bool isSubsetOfSet_(NSSet? otherSet) { + return _lib._objc_msgSend_374( + _id, _lib._sel_isSubsetOfSet_1, otherSet?._id ?? ffi.nullptr); + } + + void makeObjectsPerformSelector_(ffi.Pointer aSelector) { + _lib._objc_msgSend_7( + _id, _lib._sel_makeObjectsPerformSelector_1, aSelector); + } + + void makeObjectsPerformSelector_withObject_( + ffi.Pointer aSelector, NSObject argument) { + _lib._objc_msgSend_84( + _id, + _lib._sel_makeObjectsPerformSelector_withObject_1, + aSelector, + argument._id); + } + + NSSet setByAddingObject_(NSObject anObject) { + final _ret = _lib._objc_msgSend_375( + _id, _lib._sel_setByAddingObject_1, anObject._id); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + NSSet setByAddingObjectsFromSet_(NSSet? other) { + final _ret = _lib._objc_msgSend_376( + _id, _lib._sel_setByAddingObjectsFromSet_1, other?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + NSSet setByAddingObjectsFromArray_(NSArray? other) { + final _ret = _lib._objc_msgSend_377(_id, + _lib._sel_setByAddingObjectsFromArray_1, other?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + void enumerateObjectsUsingBlock_(ObjCBlock_ffiVoid_ObjCObject_bool block) { + _lib._objc_msgSend_378( + _id, _lib._sel_enumerateObjectsUsingBlock_1, block._id); + } + + void enumerateObjectsWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_ObjCObject_bool block) { + _lib._objc_msgSend_379(_id, + _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._id); + } + + NSSet objectsPassingTest_(ObjCBlock_bool_ObjCObject_bool predicate) { + final _ret = _lib._objc_msgSend_380( + _id, _lib._sel_objectsPassingTest_1, predicate._id); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + NSSet objectsWithOptions_passingTest_( + int opts, ObjCBlock_bool_ObjCObject_bool predicate) { + final _ret = _lib._objc_msgSend_381( + _id, _lib._sel_objectsWithOptions_passingTest_1, opts, predicate._id); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static NSSet set1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSSet1, _lib._sel_set1); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static NSSet setWithObject_(SentryCocoa _lib, NSObject object) { + final _ret = _lib._objc_msgSend_16( + _lib._class_NSSet1, _lib._sel_setWithObject_1, object._id); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static NSSet setWithObjects_count_( + SentryCocoa _lib, ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61( + _lib._class_NSSet1, _lib._sel_setWithObjects_count_1, objects, cnt); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static NSSet setWithObjects_(SentryCocoa _lib, NSObject firstObj) { + final _ret = _lib._objc_msgSend_16( + _lib._class_NSSet1, _lib._sel_setWithObjects_1, firstObj._id); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static NSSet setWithSet_(SentryCocoa _lib, NSSet? set) { + final _ret = _lib._objc_msgSend_382( + _lib._class_NSSet1, _lib._sel_setWithSet_1, set?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static NSSet setWithArray_(SentryCocoa _lib, NSArray? array) { + final _ret = _lib._objc_msgSend_67(_lib._class_NSSet1, + _lib._sel_setWithArray_1, array?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + NSSet initWithObjects_(NSObject firstObj) { + final _ret = + _lib._objc_msgSend_16(_id, _lib._sel_initWithObjects_1, firstObj._id); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + NSSet initWithSet_(NSSet? set) { + final _ret = _lib._objc_msgSend_382( + _id, _lib._sel_initWithSet_1, set?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + NSSet initWithSet_copyItems_(NSSet? set, bool flag) { + final _ret = _lib._objc_msgSend_383( + _id, _lib._sel_initWithSet_copyItems_1, set?._id ?? ffi.nullptr, flag); + return NSSet._(_ret, _lib, retain: false, release: true); + } + + NSSet initWithArray_(NSArray? array) { + final _ret = _lib._objc_msgSend_67( + _id, _lib._sel_initWithArray_1, array?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSObject valueForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_valueForKey_1, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + @override + void setValue_forKey_(NSObject value, NSString? key) { + _lib._objc_msgSend_126( + _id, _lib._sel_setValue_forKey_1, value._id, key?._id ?? ffi.nullptr); + } + + @override + void addObserver_forKeyPath_options_context_(NSObject? observer, + NSString? keyPath, int options, ffi.Pointer context) { + _lib._objc_msgSend_130( + _id, + _lib._sel_addObserver_forKeyPath_options_context_1, + observer?._id ?? ffi.nullptr, + keyPath?._id ?? ffi.nullptr, + options, + context); + } + + @override + void removeObserver_forKeyPath_context_( + NSObject? observer, NSString? keyPath, ffi.Pointer context) { + _lib._objc_msgSend_131(_id, _lib._sel_removeObserver_forKeyPath_context_1, + observer?._id ?? ffi.nullptr, keyPath?._id ?? ffi.nullptr, context); + } + + @override + void removeObserver_forKeyPath_(NSObject? observer, NSString? keyPath) { + _lib._objc_msgSend_132(_id, _lib._sel_removeObserver_forKeyPath_1, + observer?._id ?? ffi.nullptr, keyPath?._id ?? ffi.nullptr); + } + + NSArray sortedArrayUsingDescriptors_(NSArray? sortDescriptors) { + final _ret = _lib._objc_msgSend_63( + _id, + _lib._sel_sortedArrayUsingDescriptors_1, + sortDescriptors?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSSet filteredSetUsingPredicate_(NSPredicate? predicate) { + final _ret = _lib._objc_msgSend_384(_id, + _lib._sel_filteredSetUsingPredicate_1, predicate?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static NSSet new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSSet1, _lib._sel_new1); + return NSSet._(_ret, _lib, retain: false, release: true); + } + + static NSSet allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSSet1, _lib._sel_allocWithZone_1, zone); + return NSSet._(_ret, _lib, retain: false, release: true); + } + + static NSSet alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSSet1, _lib._sel_alloc1); + return NSSet._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSSet1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSSet1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSSet1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSSet1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSSet1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSSet1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSSet1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSEnumerator extends NSObject { + NSEnumerator._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSEnumerator] that points to the same underlying object as [other]. + static NSEnumerator castFrom(T other) { + return NSEnumerator._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSEnumerator] that wraps the given raw object pointer. + static NSEnumerator castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSEnumerator._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSEnumerator]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSEnumerator1); + } + + NSObject nextObject() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_nextObject1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject? get allObjects { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_allObjects1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + @override + NSEnumerator init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSEnumerator._(_ret, _lib, retain: true, release: true); + } + + static NSEnumerator new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSEnumerator1, _lib._sel_new1); + return NSEnumerator._(_ret, _lib, retain: false, release: true); + } + + static NSEnumerator allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSEnumerator1, _lib._sel_allocWithZone_1, zone); + return NSEnumerator._(_ret, _lib, retain: false, release: true); + } + + static NSEnumerator alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSEnumerator1, _lib._sel_alloc1); + return NSEnumerator._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSEnumerator1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSEnumerator1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSEnumerator1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSEnumerator1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSEnumerator1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSEnumerator1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSEnumerator1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSEnumerator1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSEnumerator1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSString extends NSObject { + NSString._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSString] that points to the same underlying object as [other]. + static NSString castFrom(T other) { + return NSString._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSString] that wraps the given raw object pointer. + static NSString castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSString._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSString]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSString1); + } + + factory NSString(SentryCocoa _lib, String str) { + final cstr = str.toNativeUtf16(); + final nsstr = stringWithCharacters_length_(_lib, cstr.cast(), str.length); + pkg_ffi.calloc.free(cstr); + return nsstr; + } + + @override + String toString() { + final data = + dataUsingEncoding_(0x94000100 /* NSUTF16LittleEndianStringEncoding */); + return data.bytes.cast().toDartString(length: length); + } + + int get length { + return _lib._objc_msgSend_10(_id, _lib._sel_length1); + } + + int characterAtIndex_(int index) { + return _lib._objc_msgSend_17(_id, _lib._sel_characterAtIndex_1, index); + } + + @override + NSString init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString substringFromIndex_(int from) { + final _ret = + _lib._objc_msgSend_308(_id, _lib._sel_substringFromIndex_1, from); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString substringToIndex_(int to) { + final _ret = _lib._objc_msgSend_308(_id, _lib._sel_substringToIndex_1, to); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString substringWithRange_(_NSRange range) { + final _ret = + _lib._objc_msgSend_309(_id, _lib._sel_substringWithRange_1, range); + return NSString._(_ret, _lib, retain: true, release: true); + } + + void getCharacters_range_( + ffi.Pointer buffer, _NSRange range) { + _lib._objc_msgSend_310(_id, _lib._sel_getCharacters_range_1, buffer, range); + } + + int compare_(NSString? string) { + return _lib._objc_msgSend_311( + _id, _lib._sel_compare_1, string?._id ?? ffi.nullptr); + } + + int compare_options_(NSString? string, int mask) { + return _lib._objc_msgSend_312( + _id, _lib._sel_compare_options_1, string?._id ?? ffi.nullptr, mask); + } + + int compare_options_range_( + NSString? string, int mask, _NSRange rangeOfReceiverToCompare) { + return _lib._objc_msgSend_313(_id, _lib._sel_compare_options_range_1, + string?._id ?? ffi.nullptr, mask, rangeOfReceiverToCompare); + } + + int compare_options_range_locale_(NSString? string, int mask, + _NSRange rangeOfReceiverToCompare, NSObject locale) { + return _lib._objc_msgSend_314(_id, _lib._sel_compare_options_range_locale_1, + string?._id ?? ffi.nullptr, mask, rangeOfReceiverToCompare, locale._id); + } + + int caseInsensitiveCompare_(NSString? string) { + return _lib._objc_msgSend_311( + _id, _lib._sel_caseInsensitiveCompare_1, string?._id ?? ffi.nullptr); + } + + int localizedCompare_(NSString? string) { + return _lib._objc_msgSend_311( + _id, _lib._sel_localizedCompare_1, string?._id ?? ffi.nullptr); + } + + int localizedCaseInsensitiveCompare_(NSString? string) { + return _lib._objc_msgSend_311( + _id, + _lib._sel_localizedCaseInsensitiveCompare_1, + string?._id ?? ffi.nullptr); + } + + int localizedStandardCompare_(NSString? string) { + return _lib._objc_msgSend_311( + _id, _lib._sel_localizedStandardCompare_1, string?._id ?? ffi.nullptr); + } + + bool isEqualToString_(NSString? aString) { + return _lib._objc_msgSend_59( + _id, _lib._sel_isEqualToString_1, aString?._id ?? ffi.nullptr); + } + + bool hasPrefix_(NSString? str) { + return _lib._objc_msgSend_59( + _id, _lib._sel_hasPrefix_1, str?._id ?? ffi.nullptr); + } + + bool hasSuffix_(NSString? str) { + return _lib._objc_msgSend_59( + _id, _lib._sel_hasSuffix_1, str?._id ?? ffi.nullptr); + } + + NSString commonPrefixWithString_options_(NSString? str, int mask) { + final _ret = _lib._objc_msgSend_315( + _id, + _lib._sel_commonPrefixWithString_options_1, + str?._id ?? ffi.nullptr, + mask); + return NSString._(_ret, _lib, retain: true, release: true); + } + + bool containsString_(NSString? str) { + return _lib._objc_msgSend_59( + _id, _lib._sel_containsString_1, str?._id ?? ffi.nullptr); + } + + bool localizedCaseInsensitiveContainsString_(NSString? str) { + return _lib._objc_msgSend_59( + _id, + _lib._sel_localizedCaseInsensitiveContainsString_1, + str?._id ?? ffi.nullptr); + } + + bool localizedStandardContainsString_(NSString? str) { + return _lib._objc_msgSend_59(_id, + _lib._sel_localizedStandardContainsString_1, str?._id ?? ffi.nullptr); + } + + void localizedStandardRangeOfString_( + ffi.Pointer<_NSRange> stret, NSString? str) { + _lib._objc_msgSend_316(stret, _id, + _lib._sel_localizedStandardRangeOfString_1, str?._id ?? ffi.nullptr); + } + + void rangeOfString_(ffi.Pointer<_NSRange> stret, NSString? searchString) { + _lib._objc_msgSend_316(stret, _id, _lib._sel_rangeOfString_1, + searchString?._id ?? ffi.nullptr); + } + + void rangeOfString_options_( + ffi.Pointer<_NSRange> stret, NSString? searchString, int mask) { + _lib._objc_msgSend_317(stret, _id, _lib._sel_rangeOfString_options_1, + searchString?._id ?? ffi.nullptr, mask); + } + + void rangeOfString_options_range_(ffi.Pointer<_NSRange> stret, + NSString? searchString, int mask, _NSRange rangeOfReceiverToSearch) { + _lib._objc_msgSend_318(stret, _id, _lib._sel_rangeOfString_options_range_1, + searchString?._id ?? ffi.nullptr, mask, rangeOfReceiverToSearch); + } + + void rangeOfString_options_range_locale_( + ffi.Pointer<_NSRange> stret, + NSString? searchString, + int mask, + _NSRange rangeOfReceiverToSearch, + NSLocale? locale) { + _lib._objc_msgSend_319( + stret, + _id, + _lib._sel_rangeOfString_options_range_locale_1, + searchString?._id ?? ffi.nullptr, + mask, + rangeOfReceiverToSearch, + locale?._id ?? ffi.nullptr); + } + + void rangeOfCharacterFromSet_( + ffi.Pointer<_NSRange> stret, NSCharacterSet? searchSet) { + _lib._objc_msgSend_320(stret, _id, _lib._sel_rangeOfCharacterFromSet_1, + searchSet?._id ?? ffi.nullptr); + } + + void rangeOfCharacterFromSet_options_( + ffi.Pointer<_NSRange> stret, NSCharacterSet? searchSet, int mask) { + _lib._objc_msgSend_321( + stret, + _id, + _lib._sel_rangeOfCharacterFromSet_options_1, + searchSet?._id ?? ffi.nullptr, + mask); + } + + void rangeOfCharacterFromSet_options_range_(ffi.Pointer<_NSRange> stret, + NSCharacterSet? searchSet, int mask, _NSRange rangeOfReceiverToSearch) { + _lib._objc_msgSend_322( + stret, + _id, + _lib._sel_rangeOfCharacterFromSet_options_range_1, + searchSet?._id ?? ffi.nullptr, + mask, + rangeOfReceiverToSearch); + } + + void rangeOfComposedCharacterSequenceAtIndex_( + ffi.Pointer<_NSRange> stret, int index) { + _lib._objc_msgSend_323( + stret, _id, _lib._sel_rangeOfComposedCharacterSequenceAtIndex_1, index); + } + + void rangeOfComposedCharacterSequencesForRange_( + ffi.Pointer<_NSRange> stret, _NSRange range) { + _lib._objc_msgSend_324(stret, _id, + _lib._sel_rangeOfComposedCharacterSequencesForRange_1, range); + } + + NSString stringByAppendingString_(NSString? aString) { + final _ret = _lib._objc_msgSend_64( + _id, _lib._sel_stringByAppendingString_1, aString?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByAppendingFormat_(NSString? format) { + final _ret = _lib._objc_msgSend_64( + _id, _lib._sel_stringByAppendingFormat_1, format?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + double get doubleValue { + return _lib._objc_msgSend_155(_id, _lib._sel_doubleValue1); + } + + double get floatValue { + return _lib._objc_msgSend_221(_id, _lib._sel_floatValue1); + } + + int get intValue { + return _lib._objc_msgSend_219(_id, _lib._sel_intValue1); + } + + int get integerValue { + return _lib._objc_msgSend_78(_id, _lib._sel_integerValue1); + } + + int get longLongValue { + return _lib._objc_msgSend_220(_id, _lib._sel_longLongValue1); + } + + bool get boolValue { + return _lib._objc_msgSend_12(_id, _lib._sel_boolValue1); + } + + NSString? get uppercaseString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_uppercaseString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get lowercaseString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_lowercaseString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get capitalizedString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_capitalizedString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get localizedUppercaseString { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_localizedUppercaseString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get localizedLowercaseString { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_localizedLowercaseString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get localizedCapitalizedString { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_localizedCapitalizedString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString uppercaseStringWithLocale_(NSLocale? locale) { + final _ret = _lib._objc_msgSend_325( + _id, _lib._sel_uppercaseStringWithLocale_1, locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString lowercaseStringWithLocale_(NSLocale? locale) { + final _ret = _lib._objc_msgSend_325( + _id, _lib._sel_lowercaseStringWithLocale_1, locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString capitalizedStringWithLocale_(NSLocale? locale) { + final _ret = _lib._objc_msgSend_325(_id, + _lib._sel_capitalizedStringWithLocale_1, locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + void getLineStart_end_contentsEnd_forRange_( + ffi.Pointer startPtr, + ffi.Pointer lineEndPtr, + ffi.Pointer contentsEndPtr, + _NSRange range) { + _lib._objc_msgSend_326( + _id, + _lib._sel_getLineStart_end_contentsEnd_forRange_1, + startPtr, + lineEndPtr, + contentsEndPtr, + range); + } + + void lineRangeForRange_(ffi.Pointer<_NSRange> stret, _NSRange range) { + _lib._objc_msgSend_324(stret, _id, _lib._sel_lineRangeForRange_1, range); + } + + void getParagraphStart_end_contentsEnd_forRange_( + ffi.Pointer startPtr, + ffi.Pointer parEndPtr, + ffi.Pointer contentsEndPtr, + _NSRange range) { + _lib._objc_msgSend_326( + _id, + _lib._sel_getParagraphStart_end_contentsEnd_forRange_1, + startPtr, + parEndPtr, + contentsEndPtr, + range); + } + + void paragraphRangeForRange_(ffi.Pointer<_NSRange> stret, _NSRange range) { + _lib._objc_msgSend_324( + stret, _id, _lib._sel_paragraphRangeForRange_1, range); + } + + void enumerateSubstringsInRange_options_usingBlock_(_NSRange range, int opts, + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool block) { + _lib._objc_msgSend_327( + _id, + _lib._sel_enumerateSubstringsInRange_options_usingBlock_1, + range, + opts, + block._id); + } + + void enumerateLinesUsingBlock_(ObjCBlock_ffiVoid_NSString_bool block) { + _lib._objc_msgSend_328( + _id, _lib._sel_enumerateLinesUsingBlock_1, block._id); + } + + ffi.Pointer get UTF8String { + return _lib._objc_msgSend_13(_id, _lib._sel_UTF8String1); + } + + int get fastestEncoding { + return _lib._objc_msgSend_10(_id, _lib._sel_fastestEncoding1); + } + + int get smallestEncoding { + return _lib._objc_msgSend_10(_id, _lib._sel_smallestEncoding1); + } + + NSData dataUsingEncoding_allowLossyConversion_(int encoding, bool lossy) { + final _ret = _lib._objc_msgSend_329(_id, + _lib._sel_dataUsingEncoding_allowLossyConversion_1, encoding, lossy); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData dataUsingEncoding_(int encoding) { + final _ret = + _lib._objc_msgSend_330(_id, _lib._sel_dataUsingEncoding_1, encoding); + return NSData._(_ret, _lib, retain: true, release: true); + } + + bool canBeConvertedToEncoding_(int encoding) { + return _lib._objc_msgSend_91( + _id, _lib._sel_canBeConvertedToEncoding_1, encoding); + } + + ffi.Pointer cStringUsingEncoding_(int encoding) { + return _lib._objc_msgSend_11( + _id, _lib._sel_cStringUsingEncoding_1, encoding); + } + + bool getCString_maxLength_encoding_( + ffi.Pointer buffer, int maxBufferCount, int encoding) { + return _lib._objc_msgSend_331( + _id, + _lib._sel_getCString_maxLength_encoding_1, + buffer, + maxBufferCount, + encoding); + } + + bool getBytes_maxLength_usedLength_encoding_options_range_remainingRange_( + ffi.Pointer buffer, + int maxBufferCount, + ffi.Pointer usedBufferCount, + int encoding, + int options, + _NSRange range, + ffi.Pointer<_NSRange> leftover) { + return _lib._objc_msgSend_332( + _id, + _lib._sel_getBytes_maxLength_usedLength_encoding_options_range_remainingRange_1, + buffer, + maxBufferCount, + usedBufferCount, + encoding, + options, + range, + leftover); + } + + int maximumLengthOfBytesUsingEncoding_(int enc) { + return _lib._objc_msgSend_88( + _id, _lib._sel_maximumLengthOfBytesUsingEncoding_1, enc); + } + + int lengthOfBytesUsingEncoding_(int enc) { + return _lib._objc_msgSend_88( + _id, _lib._sel_lengthOfBytesUsingEncoding_1, enc); + } + + static ffi.Pointer getAvailableStringEncodings( + SentryCocoa _lib) { + return _lib._objc_msgSend_333( + _lib._class_NSString1, _lib._sel_availableStringEncodings1); + } + + static NSString localizedNameOfStringEncoding_( + SentryCocoa _lib, int encoding) { + final _ret = _lib._objc_msgSend_308(_lib._class_NSString1, + _lib._sel_localizedNameOfStringEncoding_1, encoding); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static int getDefaultCStringEncoding(SentryCocoa _lib) { + return _lib._objc_msgSend_10( + _lib._class_NSString1, _lib._sel_defaultCStringEncoding1); + } + + NSString? get decomposedStringWithCanonicalMapping { + final _ret = _lib._objc_msgSend_20( + _id, _lib._sel_decomposedStringWithCanonicalMapping1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get precomposedStringWithCanonicalMapping { + final _ret = _lib._objc_msgSend_20( + _id, _lib._sel_precomposedStringWithCanonicalMapping1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get decomposedStringWithCompatibilityMapping { + final _ret = _lib._objc_msgSend_20( + _id, _lib._sel_decomposedStringWithCompatibilityMapping1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get precomposedStringWithCompatibilityMapping { + final _ret = _lib._objc_msgSend_20( + _id, _lib._sel_precomposedStringWithCompatibilityMapping1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray componentsSeparatedByString_(NSString? separator) { + final _ret = _lib._objc_msgSend_123(_id, + _lib._sel_componentsSeparatedByString_1, separator?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray componentsSeparatedByCharactersInSet_(NSCharacterSet? separator) { + final _ret = _lib._objc_msgSend_334( + _id, + _lib._sel_componentsSeparatedByCharactersInSet_1, + separator?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString stringByTrimmingCharactersInSet_(NSCharacterSet? set) { + final _ret = _lib._objc_msgSend_335(_id, + _lib._sel_stringByTrimmingCharactersInSet_1, set?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByPaddingToLength_withString_startingAtIndex_( + int newLength, NSString? padString, int padIndex) { + final _ret = _lib._objc_msgSend_336( + _id, + _lib._sel_stringByPaddingToLength_withString_startingAtIndex_1, + newLength, + padString?._id ?? ffi.nullptr, + padIndex); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByFoldingWithOptions_locale_(int options, NSLocale? locale) { + final _ret = _lib._objc_msgSend_337( + _id, + _lib._sel_stringByFoldingWithOptions_locale_1, + options, + locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByReplacingOccurrencesOfString_withString_options_range_( + NSString? target, + NSString? replacement, + int options, + _NSRange searchRange) { + final _ret = _lib._objc_msgSend_338( + _id, + _lib._sel_stringByReplacingOccurrencesOfString_withString_options_range_1, + target?._id ?? ffi.nullptr, + replacement?._id ?? ffi.nullptr, + options, + searchRange); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByReplacingOccurrencesOfString_withString_( + NSString? target, NSString? replacement) { + final _ret = _lib._objc_msgSend_339( + _id, + _lib._sel_stringByReplacingOccurrencesOfString_withString_1, + target?._id ?? ffi.nullptr, + replacement?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByReplacingCharactersInRange_withString_( + _NSRange range, NSString? replacement) { + final _ret = _lib._objc_msgSend_340( + _id, + _lib._sel_stringByReplacingCharactersInRange_withString_1, + range, + replacement?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByApplyingTransform_reverse_( + NSString transform, bool reverse) { + final _ret = _lib._objc_msgSend_341(_id, + _lib._sel_stringByApplyingTransform_reverse_1, transform._id, reverse); + return NSString._(_ret, _lib, retain: true, release: true); + } + + bool writeToURL_atomically_encoding_error_(NSURL? url, bool useAuxiliaryFile, + int enc, ffi.Pointer> error) { + return _lib._objc_msgSend_342( + _id, + _lib._sel_writeToURL_atomically_encoding_error_1, + url?._id ?? ffi.nullptr, + useAuxiliaryFile, + enc, + error); + } + + bool writeToFile_atomically_encoding_error_( + NSString? path, + bool useAuxiliaryFile, + int enc, + ffi.Pointer> error) { + return _lib._objc_msgSend_343( + _id, + _lib._sel_writeToFile_atomically_encoding_error_1, + path?._id ?? ffi.nullptr, + useAuxiliaryFile, + enc, + error); + } + + NSString? get description { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get hash { + return _lib._objc_msgSend_10(_id, _lib._sel_hash1); + } + + NSString initWithCharactersNoCopy_length_freeWhenDone_( + ffi.Pointer characters, int length, bool freeBuffer) { + final _ret = _lib._objc_msgSend_344( + _id, + _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1, + characters, + length, + freeBuffer); + return NSString._(_ret, _lib, retain: false, release: true); + } + + NSString initWithCharactersNoCopy_length_deallocator_( + ffi.Pointer chars, + int len, + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong deallocator) { + final _ret = _lib._objc_msgSend_345( + _id, + _lib._sel_initWithCharactersNoCopy_length_deallocator_1, + chars, + len, + deallocator._id); + return NSString._(_ret, _lib, retain: false, release: true); + } + + NSString initWithCharacters_length_( + ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_346( + _id, _lib._sel_initWithCharacters_length_1, characters, length); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithUTF8String_(ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_347( + _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithString_(NSString? aString) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithString_1, aString?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithFormat_(NSString? format) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithFormat_1, format?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithFormat_arguments_( + NSString? format, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_348( + _id, + _lib._sel_initWithFormat_arguments_1, + format?._id ?? ffi.nullptr, + argList); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithFormat_locale_(NSString? format, NSObject locale) { + final _ret = _lib._objc_msgSend_163(_id, _lib._sel_initWithFormat_locale_1, + format?._id ?? ffi.nullptr, locale._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithFormat_locale_arguments_( + NSString? format, NSObject locale, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_349( + _id, + _lib._sel_initWithFormat_locale_arguments_1, + format?._id ?? ffi.nullptr, + locale._id, + argList); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithValidatedFormat_validFormatSpecifiers_error_( + NSString? format, + NSString? validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_350( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithValidatedFormat_validFormatSpecifiers_locale_error_( + NSString? format, + NSString? validFormatSpecifiers, + NSObject locale, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_351( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + locale._id, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithValidatedFormat_validFormatSpecifiers_arguments_error_( + NSString? format, + NSString? validFormatSpecifiers, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_352( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + argList, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString + initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( + NSString? format, + NSString? validFormatSpecifiers, + NSObject locale, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_353( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + locale._id, + argList, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithData_encoding_(NSData? data, int encoding) { + final _ret = _lib._objc_msgSend_354(_id, _lib._sel_initWithData_encoding_1, + data?._id ?? ffi.nullptr, encoding); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithBytes_length_encoding_( + ffi.Pointer bytes, int len, int encoding) { + final _ret = _lib._objc_msgSend_355( + _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithBytesNoCopy_length_encoding_freeWhenDone_( + ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { + final _ret = _lib._objc_msgSend_356( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1, + bytes, + len, + encoding, + freeBuffer); + return NSString._(_ret, _lib, retain: false, release: true); + } + + NSString initWithBytesNoCopy_length_encoding_deallocator_( + ffi.Pointer bytes, + int len, + int encoding, + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong deallocator) { + final _ret = _lib._objc_msgSend_357( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1, + bytes, + len, + encoding, + deallocator._id); + return NSString._(_ret, _lib, retain: false, release: true); + } + + static NSString string(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_string1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSString1, + _lib._sel_stringWithString_1, string?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithCharacters_length_( + SentryCocoa _lib, ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_346(_lib._class_NSString1, + _lib._sel_stringWithCharacters_length_1, characters, length); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithUTF8String_( + SentryCocoa _lib, ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_347(_lib._class_NSString1, + _lib._sel_stringWithUTF8String_1, nullTerminatedCString); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithFormat_(SentryCocoa _lib, NSString? format) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSString1, + _lib._sel_stringWithFormat_1, format?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString localizedStringWithFormat_( + SentryCocoa _lib, NSString? format) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSString1, + _lib._sel_localizedStringWithFormat_1, format?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithValidatedFormat_validFormatSpecifiers_error_( + SentryCocoa _lib, + NSString? format, + NSString? validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_350( + _lib._class_NSString1, + _lib._sel_stringWithValidatedFormat_validFormatSpecifiers_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString + localizedStringWithValidatedFormat_validFormatSpecifiers_error_( + SentryCocoa _lib, + NSString? format, + NSString? validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_350( + _lib._class_NSString1, + _lib._sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithCString_encoding_( + ffi.Pointer nullTerminatedCString, int encoding) { + final _ret = _lib._objc_msgSend_358(_id, + _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithCString_encoding_( + SentryCocoa _lib, ffi.Pointer cString, int enc) { + final _ret = _lib._objc_msgSend_358(_lib._class_NSString1, + _lib._sel_stringWithCString_encoding_1, cString, enc); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithContentsOfURL_encoding_error_( + NSURL? url, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_359( + _id, + _lib._sel_initWithContentsOfURL_encoding_error_1, + url?._id ?? ffi.nullptr, + enc, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithContentsOfFile_encoding_error_( + NSString? path, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_360( + _id, + _lib._sel_initWithContentsOfFile_encoding_error_1, + path?._id ?? ffi.nullptr, + enc, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithContentsOfURL_encoding_error_(SentryCocoa _lib, + NSURL? url, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_359( + _lib._class_NSString1, + _lib._sel_stringWithContentsOfURL_encoding_error_1, + url?._id ?? ffi.nullptr, + enc, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithContentsOfFile_encoding_error_(SentryCocoa _lib, + NSString? path, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_360( + _lib._class_NSString1, + _lib._sel_stringWithContentsOfFile_encoding_error_1, + path?._id ?? ffi.nullptr, + enc, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithContentsOfURL_usedEncoding_error_( + NSURL? url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_361( + _id, + _lib._sel_initWithContentsOfURL_usedEncoding_error_1, + url?._id ?? ffi.nullptr, + enc, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString initWithContentsOfFile_usedEncoding_error_( + NSString? path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_362( + _id, + _lib._sel_initWithContentsOfFile_usedEncoding_error_1, + path?._id ?? ffi.nullptr, + enc, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithContentsOfURL_usedEncoding_error_( + SentryCocoa _lib, + NSURL? url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_361( + _lib._class_NSString1, + _lib._sel_stringWithContentsOfURL_usedEncoding_error_1, + url?._id ?? ffi.nullptr, + enc, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString stringWithContentsOfFile_usedEncoding_error_( + SentryCocoa _lib, + NSString? path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_362( + _lib._class_NSString1, + _lib._sel_stringWithContentsOfFile_usedEncoding_error_1, + path?._id ?? ffi.nullptr, + enc, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static int + stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( + SentryCocoa _lib, + NSData? data, + NSDictionary? opts, + ffi.Pointer> string, + ffi.Pointer usedLossyConversion) { + return _lib._objc_msgSend_363( + _lib._class_NSString1, + _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1, + data?._id ?? ffi.nullptr, + opts?._id ?? ffi.nullptr, + string, + usedLossyConversion); + } + + NSObject propertyList() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_propertyList1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSDictionary propertyListFromStringsFileFormat() { + final _ret = _lib._objc_msgSend_170( + _id, _lib._sel_propertyListFromStringsFileFormat1); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + ffi.Pointer cString() { + return _lib._objc_msgSend_13(_id, _lib._sel_cString1); + } + + ffi.Pointer lossyCString() { + return _lib._objc_msgSend_13(_id, _lib._sel_lossyCString1); + } + + int cStringLength() { + return _lib._objc_msgSend_10(_id, _lib._sel_cStringLength1); + } + + void getCString_(ffi.Pointer bytes) { + _lib._objc_msgSend_266(_id, _lib._sel_getCString_1, bytes); + } + + void getCString_maxLength_(ffi.Pointer bytes, int maxLength) { + _lib._objc_msgSend_364( + _id, _lib._sel_getCString_maxLength_1, bytes, maxLength); + } + + void getCString_maxLength_range_remainingRange_(ffi.Pointer bytes, + int maxLength, _NSRange aRange, ffi.Pointer<_NSRange> leftoverRange) { + _lib._objc_msgSend_365( + _id, + _lib._sel_getCString_maxLength_range_remainingRange_1, + bytes, + maxLength, + aRange, + leftoverRange); + } + + bool writeToFile_atomically_(NSString? path, bool useAuxiliaryFile) { + return _lib._objc_msgSend_25(_id, _lib._sel_writeToFile_atomically_1, + path?._id ?? ffi.nullptr, useAuxiliaryFile); + } + + bool writeToURL_atomically_(NSURL? url, bool atomically) { + return _lib._objc_msgSend_125(_id, _lib._sel_writeToURL_atomically_1, + url?._id ?? ffi.nullptr, atomically); + } + + NSObject initWithContentsOfFile_(NSString? path) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithContentsOfURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject stringWithContentsOfFile_(SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSString1, + _lib._sel_stringWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject stringWithContentsOfURL_(SentryCocoa _lib, NSURL? url) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSString1, + _lib._sel_stringWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithCStringNoCopy_length_freeWhenDone_( + ffi.Pointer bytes, int length, bool freeBuffer) { + final _ret = _lib._objc_msgSend_366( + _id, + _lib._sel_initWithCStringNoCopy_length_freeWhenDone_1, + bytes, + length, + freeBuffer); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + NSObject initWithCString_length_(ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_358( + _id, _lib._sel_initWithCString_length_1, bytes, length); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithCString_(ffi.Pointer bytes) { + final _ret = + _lib._objc_msgSend_347(_id, _lib._sel_initWithCString_1, bytes); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject stringWithCString_length_( + SentryCocoa _lib, ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_358(_lib._class_NSString1, + _lib._sel_stringWithCString_length_1, bytes, length); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject stringWithCString_( + SentryCocoa _lib, ffi.Pointer bytes) { + final _ret = _lib._objc_msgSend_347( + _lib._class_NSString1, _lib._sel_stringWithCString_1, bytes); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void getCharacters_(ffi.Pointer buffer) { + _lib._objc_msgSend_367(_id, _lib._sel_getCharacters_1, buffer); + } + + NSString variantFittingPresentationWidth_(int width) { + final _ret = _lib._objc_msgSend_368( + _id, _lib._sel_variantFittingPresentationWidth_1, width); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString pathWithComponents_(SentryCocoa _lib, NSArray? components) { + final _ret = _lib._objc_msgSend_369(_lib._class_NSString1, + _lib._sel_pathWithComponents_1, components?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray? get pathComponents { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_pathComponents1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + bool get absolutePath { + return _lib._objc_msgSend_12(_id, _lib._sel_isAbsolutePath1); + } + + NSString? get lastPathComponent { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_lastPathComponent1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get stringByDeletingLastPathComponent { + final _ret = _lib._objc_msgSend_20( + _id, _lib._sel_stringByDeletingLastPathComponent1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByAppendingPathComponent_(NSString? str) { + final _ret = _lib._objc_msgSend_64(_id, + _lib._sel_stringByAppendingPathComponent_1, str?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get pathExtension { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_pathExtension1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get stringByDeletingPathExtension { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_stringByDeletingPathExtension1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByAppendingPathExtension_(NSString? str) { + final _ret = _lib._objc_msgSend_64(_id, + _lib._sel_stringByAppendingPathExtension_1, str?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get stringByAbbreviatingWithTildeInPath { + final _ret = _lib._objc_msgSend_20( + _id, _lib._sel_stringByAbbreviatingWithTildeInPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get stringByExpandingTildeInPath { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_stringByExpandingTildeInPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get stringByStandardizingPath { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_stringByStandardizingPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get stringByResolvingSymlinksInPath { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_stringByResolvingSymlinksInPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray stringsByAppendingPaths_(NSArray? paths) { + final _ret = _lib._objc_msgSend_63( + _id, _lib._sel_stringsByAppendingPaths_1, paths?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + int completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_( + ffi.Pointer> outputName, + bool flag, + ffi.Pointer> outputArray, + NSArray? filterTypes) { + return _lib._objc_msgSend_370( + _id, + _lib._sel_completePathIntoString_caseSensitive_matchesIntoArray_filterTypes_1, + outputName, + flag, + outputArray, + filterTypes?._id ?? ffi.nullptr); + } + + ffi.Pointer get fileSystemRepresentation { + return _lib._objc_msgSend_13(_id, _lib._sel_fileSystemRepresentation1); + } + + bool getFileSystemRepresentation_maxLength_( + ffi.Pointer cname, int max) { + return _lib._objc_msgSend_224( + _id, _lib._sel_getFileSystemRepresentation_maxLength_1, cname, max); + } + + NSString stringByAddingPercentEncodingWithAllowedCharacters_( + NSCharacterSet? allowedCharacters) { + final _ret = _lib._objc_msgSend_335( + _id, + _lib._sel_stringByAddingPercentEncodingWithAllowedCharacters_1, + allowedCharacters?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get stringByRemovingPercentEncoding { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_stringByRemovingPercentEncoding1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByAddingPercentEscapesUsingEncoding_(int enc) { + final _ret = _lib._objc_msgSend_308( + _id, _lib._sel_stringByAddingPercentEscapesUsingEncoding_1, enc); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString stringByReplacingPercentEscapesUsingEncoding_(int enc) { + final _ret = _lib._objc_msgSend_308( + _id, _lib._sel_stringByReplacingPercentEscapesUsingEncoding_1, enc); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray linguisticTagsInRange_scheme_options_orthography_tokenRanges_( + _NSRange range, + NSString scheme, + int options, + NSOrthography? orthography, + ffi.Pointer> tokenRanges) { + final _ret = _lib._objc_msgSend_372( + _id, + _lib._sel_linguisticTagsInRange_scheme_options_orthography_tokenRanges_1, + range, + scheme._id, + options, + orthography?._id ?? ffi.nullptr, + tokenRanges); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + void enumerateLinguisticTagsInRange_scheme_options_orthography_usingBlock_( + _NSRange range, + NSString scheme, + int options, + NSOrthography? orthography, + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool block) { + _lib._objc_msgSend_373( + _id, + _lib._sel_enumerateLinguisticTagsInRange_scheme_options_orthography_usingBlock_1, + range, + scheme._id, + options, + orthography?._id ?? ffi.nullptr, + block._id); + } + + static NSString new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_new1); + return NSString._(_ret, _lib, retain: false, release: true); + } + + static NSString allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSString1, _lib._sel_allocWithZone_1, zone); + return NSString._(_ret, _lib, retain: false, release: true); + } + + static NSString alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSString1, _lib._sel_alloc1); + return NSString._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSString1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSString1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSString1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSString1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSString1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSString1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSString1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSString1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSString1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +extension StringToNSString on String { + NSString toNSString(SentryCocoa lib) => NSString(lib, this); +} + +class NSCoder extends NSObject { + NSCoder._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSCoder] that points to the same underlying object as [other]. + static NSCoder castFrom(T other) { + return NSCoder._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSCoder] that wraps the given raw object pointer. + static NSCoder castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSCoder._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSCoder]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSCoder1); + } + + void encodeValueOfObjCType_at_( + ffi.Pointer type, ffi.Pointer addr) { + _lib._objc_msgSend_18( + _id, _lib._sel_encodeValueOfObjCType_at_1, type, addr); + } + + void encodeDataObject_(NSData? data) { + _lib._objc_msgSend_263( + _id, _lib._sel_encodeDataObject_1, data?._id ?? ffi.nullptr); + } + + NSData decodeDataObject() { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_decodeDataObject1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + void decodeValueOfObjCType_at_size_( + ffi.Pointer type, ffi.Pointer data, int size) { + _lib._objc_msgSend_264( + _id, _lib._sel_decodeValueOfObjCType_at_size_1, type, data, size); + } + + int versionForClassName_(NSString? className) { + return _lib._objc_msgSend_265( + _id, _lib._sel_versionForClassName_1, className?._id ?? ffi.nullptr); + } + + void encodeObject_(NSObject object) { + _lib._objc_msgSend_15(_id, _lib._sel_encodeObject_1, object._id); + } + + void encodeRootObject_(NSObject rootObject) { + _lib._objc_msgSend_15(_id, _lib._sel_encodeRootObject_1, rootObject._id); + } + + void encodeBycopyObject_(NSObject anObject) { + _lib._objc_msgSend_15(_id, _lib._sel_encodeBycopyObject_1, anObject._id); + } + + void encodeByrefObject_(NSObject anObject) { + _lib._objc_msgSend_15(_id, _lib._sel_encodeByrefObject_1, anObject._id); + } + + void encodeConditionalObject_(NSObject object) { + _lib._objc_msgSend_15(_id, _lib._sel_encodeConditionalObject_1, object._id); + } + + void encodeValuesOfObjCTypes_(ffi.Pointer types) { + _lib._objc_msgSend_266(_id, _lib._sel_encodeValuesOfObjCTypes_1, types); + } + + void encodeArrayOfObjCType_count_at_( + ffi.Pointer type, int count, ffi.Pointer array) { + _lib._objc_msgSend_267( + _id, _lib._sel_encodeArrayOfObjCType_count_at_1, type, count, array); + } + + void encodeBytes_length_(ffi.Pointer byteaddr, int length) { + _lib._objc_msgSend_21( + _id, _lib._sel_encodeBytes_length_1, byteaddr, length); + } + + NSObject decodeObject() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_decodeObject1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject decodeTopLevelObjectAndReturnError_( + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_268( + _id, _lib._sel_decodeTopLevelObjectAndReturnError_1, error); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void decodeValuesOfObjCTypes_(ffi.Pointer types) { + _lib._objc_msgSend_266(_id, _lib._sel_decodeValuesOfObjCTypes_1, types); + } + + void decodeArrayOfObjCType_count_at_( + ffi.Pointer itemType, int count, ffi.Pointer array) { + _lib._objc_msgSend_267(_id, _lib._sel_decodeArrayOfObjCType_count_at_1, + itemType, count, array); + } + + ffi.Pointer decodeBytesWithReturnedLength_( + ffi.Pointer lengthp) { + return _lib._objc_msgSend_269( + _id, _lib._sel_decodeBytesWithReturnedLength_1, lengthp); + } + + void encodePropertyList_(NSObject aPropertyList) { + _lib._objc_msgSend_15( + _id, _lib._sel_encodePropertyList_1, aPropertyList._id); + } + + NSObject decodePropertyList() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_decodePropertyList1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void setObjectZone_(ffi.Pointer<_NSZone> zone) { + _lib._objc_msgSend_270(_id, _lib._sel_setObjectZone_1, zone); + } + + ffi.Pointer<_NSZone> objectZone() { + return _lib._objc_msgSend_271(_id, _lib._sel_objectZone1); + } + + int get systemVersion { + return _lib._objc_msgSend_197(_id, _lib._sel_systemVersion1); + } + + bool get allowsKeyedCoding { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsKeyedCoding1); + } + + void encodeObject_forKey_(NSObject object, NSString? key) { + _lib._objc_msgSend_126(_id, _lib._sel_encodeObject_forKey_1, object._id, + key?._id ?? ffi.nullptr); + } + + void encodeConditionalObject_forKey_(NSObject object, NSString? key) { + _lib._objc_msgSend_126(_id, _lib._sel_encodeConditionalObject_forKey_1, + object._id, key?._id ?? ffi.nullptr); + } + + void encodeBool_forKey_(bool value, NSString? key) { + _lib._objc_msgSend_272( + _id, _lib._sel_encodeBool_forKey_1, value, key?._id ?? ffi.nullptr); + } + + void encodeInt_forKey_(int value, NSString? key) { + _lib._objc_msgSend_273( + _id, _lib._sel_encodeInt_forKey_1, value, key?._id ?? ffi.nullptr); + } + + void encodeInt32_forKey_(int value, NSString? key) { + _lib._objc_msgSend_274( + _id, _lib._sel_encodeInt32_forKey_1, value, key?._id ?? ffi.nullptr); + } + + void encodeInt64_forKey_(int value, NSString? key) { + _lib._objc_msgSend_275( + _id, _lib._sel_encodeInt64_forKey_1, value, key?._id ?? ffi.nullptr); + } + + void encodeFloat_forKey_(double value, NSString? key) { + _lib._objc_msgSend_276( + _id, _lib._sel_encodeFloat_forKey_1, value, key?._id ?? ffi.nullptr); + } + + void encodeDouble_forKey_(double value, NSString? key) { + _lib._objc_msgSend_277( + _id, _lib._sel_encodeDouble_forKey_1, value, key?._id ?? ffi.nullptr); + } + + void encodeBytes_length_forKey_( + ffi.Pointer bytes, int length, NSString? key) { + _lib._objc_msgSend_278(_id, _lib._sel_encodeBytes_length_forKey_1, bytes, + length, key?._id ?? ffi.nullptr); + } + + bool containsValueForKey_(NSString? key) { + return _lib._objc_msgSend_59( + _id, _lib._sel_containsValueForKey_1, key?._id ?? ffi.nullptr); + } + + NSObject decodeObjectForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_decodeObjectForKey_1, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject decodeTopLevelObjectForKey_error_( + NSString? key, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_279( + _id, + _lib._sel_decodeTopLevelObjectForKey_error_1, + key?._id ?? ffi.nullptr, + error); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool decodeBoolForKey_(NSString? key) { + return _lib._objc_msgSend_59( + _id, _lib._sel_decodeBoolForKey_1, key?._id ?? ffi.nullptr); + } + + int decodeIntForKey_(NSString? key) { + return _lib._objc_msgSend_280( + _id, _lib._sel_decodeIntForKey_1, key?._id ?? ffi.nullptr); + } + + int decodeInt32ForKey_(NSString? key) { + return _lib._objc_msgSend_281( + _id, _lib._sel_decodeInt32ForKey_1, key?._id ?? ffi.nullptr); + } + + int decodeInt64ForKey_(NSString? key) { + return _lib._objc_msgSend_282( + _id, _lib._sel_decodeInt64ForKey_1, key?._id ?? ffi.nullptr); + } + + double decodeFloatForKey_(NSString? key) { + return _lib._objc_msgSend_283( + _id, _lib._sel_decodeFloatForKey_1, key?._id ?? ffi.nullptr); + } + + double decodeDoubleForKey_(NSString? key) { + return _lib._objc_msgSend_284( + _id, _lib._sel_decodeDoubleForKey_1, key?._id ?? ffi.nullptr); + } + + ffi.Pointer decodeBytesForKey_returnedLength_( + NSString? key, ffi.Pointer lengthp) { + return _lib._objc_msgSend_285( + _id, + _lib._sel_decodeBytesForKey_returnedLength_1, + key?._id ?? ffi.nullptr, + lengthp); + } + + void encodeInteger_forKey_(int value, NSString? key) { + _lib._objc_msgSend_286( + _id, _lib._sel_encodeInteger_forKey_1, value, key?._id ?? ffi.nullptr); + } + + int decodeIntegerForKey_(NSString? key) { + return _lib._objc_msgSend_265( + _id, _lib._sel_decodeIntegerForKey_1, key?._id ?? ffi.nullptr); + } + + bool get requiresSecureCoding { + return _lib._objc_msgSend_12(_id, _lib._sel_requiresSecureCoding1); + } + + NSObject decodeObjectOfClass_forKey_(NSObject aClass, NSString? key) { + final _ret = _lib._objc_msgSend_287( + _id, + _lib._sel_decodeObjectOfClass_forKey_1, + aClass._id, + key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject decodeTopLevelObjectOfClass_forKey_error_(NSObject aClass, + NSString? key, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_288( + _id, + _lib._sel_decodeTopLevelObjectOfClass_forKey_error_1, + aClass._id, + key?._id ?? ffi.nullptr, + error); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSArray decodeArrayOfObjectsOfClass_forKey_(NSObject cls, NSString? key) { + final _ret = _lib._objc_msgSend_289( + _id, + _lib._sel_decodeArrayOfObjectsOfClass_forKey_1, + cls._id, + key?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSDictionary decodeDictionaryWithKeysOfClass_objectsOfClass_forKey_( + NSObject keyCls, NSObject objectCls, NSString? key) { + final _ret = _lib._objc_msgSend_290( + _id, + _lib._sel_decodeDictionaryWithKeysOfClass_objectsOfClass_forKey_1, + keyCls._id, + objectCls._id, + key?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSObject decodeObjectOfClasses_forKey_(NSSet? classes, NSString? key) { + final _ret = _lib._objc_msgSend_291( + _id, + _lib._sel_decodeObjectOfClasses_forKey_1, + classes?._id ?? ffi.nullptr, + key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject decodeTopLevelObjectOfClasses_forKey_error_(NSSet? classes, + NSString? key, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_292( + _id, + _lib._sel_decodeTopLevelObjectOfClasses_forKey_error_1, + classes?._id ?? ffi.nullptr, + key?._id ?? ffi.nullptr, + error); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSArray decodeArrayOfObjectsOfClasses_forKey_(NSSet? classes, NSString? key) { + final _ret = _lib._objc_msgSend_293( + _id, + _lib._sel_decodeArrayOfObjectsOfClasses_forKey_1, + classes?._id ?? ffi.nullptr, + key?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSDictionary decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey_( + NSSet? keyClasses, NSSet? objectClasses, NSString? key) { + final _ret = _lib._objc_msgSend_294( + _id, + _lib._sel_decodeDictionaryWithKeysOfClasses_objectsOfClasses_forKey_1, + keyClasses?._id ?? ffi.nullptr, + objectClasses?._id ?? ffi.nullptr, + key?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSObject decodePropertyListForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_decodePropertyListForKey_1, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSSet? get allowedClasses { + final _ret = _lib._objc_msgSend_295(_id, _lib._sel_allowedClasses1); + return _ret.address == 0 + ? null + : NSSet._(_ret, _lib, retain: true, release: true); + } + + void failWithError_(NSError? error) { + _lib._objc_msgSend_296( + _id, _lib._sel_failWithError_1, error?._id ?? ffi.nullptr); + } + + int get decodingFailurePolicy { + return _lib._objc_msgSend_297(_id, _lib._sel_decodingFailurePolicy1); + } + + NSError? get error { + final _ret = _lib._objc_msgSend_298(_id, _lib._sel_error1); + return _ret.address == 0 + ? null + : NSError._(_ret, _lib, retain: true, release: true); + } + + void encodeNXObject_(NSObject object) { + _lib._objc_msgSend_15(_id, _lib._sel_encodeNXObject_1, object._id); + } + + NSObject decodeNXObject() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_decodeNXObject1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void decodeValueOfObjCType_at_( + ffi.Pointer type, ffi.Pointer data) { + _lib._objc_msgSend_18( + _id, _lib._sel_decodeValueOfObjCType_at_1, type, data); + } + + void encodePoint_(CGPoint point) { + _lib._objc_msgSend_299(_id, _lib._sel_encodePoint_1, point); + } + + void decodePoint(ffi.Pointer stret) { + _lib._objc_msgSend_54(stret, _id, _lib._sel_decodePoint1); + } + + void encodeSize_(CGSize size) { + _lib._objc_msgSend_300(_id, _lib._sel_encodeSize_1, size); + } + + void decodeSize(ffi.Pointer stret) { + _lib._objc_msgSend_55(stret, _id, _lib._sel_decodeSize1); + } + + void encodeRect_(CGRect rect) { + _lib._objc_msgSend_301(_id, _lib._sel_encodeRect_1, rect); + } + + void decodeRect(ffi.Pointer stret) { + _lib._objc_msgSend_56(stret, _id, _lib._sel_decodeRect1); + } + + void encodePoint_forKey_(CGPoint point, NSString? key) { + _lib._objc_msgSend_302( + _id, _lib._sel_encodePoint_forKey_1, point, key?._id ?? ffi.nullptr); + } + + void encodeSize_forKey_(CGSize size, NSString? key) { + _lib._objc_msgSend_303( + _id, _lib._sel_encodeSize_forKey_1, size, key?._id ?? ffi.nullptr); + } + + void encodeRect_forKey_(CGRect rect, NSString? key) { + _lib._objc_msgSend_304( + _id, _lib._sel_encodeRect_forKey_1, rect, key?._id ?? ffi.nullptr); + } + + void decodePointForKey_(ffi.Pointer stret, NSString? key) { + _lib._objc_msgSend_305( + stret, _id, _lib._sel_decodePointForKey_1, key?._id ?? ffi.nullptr); + } + + void decodeSizeForKey_(ffi.Pointer stret, NSString? key) { + _lib._objc_msgSend_306( + stret, _id, _lib._sel_decodeSizeForKey_1, key?._id ?? ffi.nullptr); + } + + void decodeRectForKey_(ffi.Pointer stret, NSString? key) { + _lib._objc_msgSend_307( + stret, _id, _lib._sel_decodeRectForKey_1, key?._id ?? ffi.nullptr); + } + + @override + NSCoder init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSCoder._(_ret, _lib, retain: true, release: true); + } + + static NSCoder new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSCoder1, _lib._sel_new1); + return NSCoder._(_ret, _lib, retain: false, release: true); + } + + static NSCoder allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSCoder1, _lib._sel_allocWithZone_1, zone); + return NSCoder._(_ret, _lib, retain: false, release: true); + } + + static NSCoder alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSCoder1, _lib._sel_alloc1); + return NSCoder._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSCoder1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSCoder1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSCoder1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSCoder1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSCoder1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSCoder1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSCoder1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSCoder1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSCoder1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSData extends NSObject { + NSData._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSData] that points to the same underlying object as [other]. + static NSData castFrom(T other) { + return NSData._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSData] that wraps the given raw object pointer. + static NSData castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSData._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSData]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSData1); + } + + int get length { + return _lib._objc_msgSend_10(_id, _lib._sel_length1); + } + + ffi.Pointer get bytes { + return _lib._objc_msgSend_19(_id, _lib._sel_bytes1); + } + + NSString? get description { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + void getBytes_length_(ffi.Pointer buffer, int length) { + _lib._objc_msgSend_21(_id, _lib._sel_getBytes_length_1, buffer, length); + } + + void getBytes_range_(ffi.Pointer buffer, _NSRange range) { + _lib._objc_msgSend_22(_id, _lib._sel_getBytes_range_1, buffer, range); + } + + bool isEqualToData_(NSData? other) { + return _lib._objc_msgSend_23( + _id, _lib._sel_isEqualToData_1, other?._id ?? ffi.nullptr); + } + + NSData subdataWithRange_(_NSRange range) { + final _ret = + _lib._objc_msgSend_24(_id, _lib._sel_subdataWithRange_1, range); + return NSData._(_ret, _lib, retain: true, release: true); + } + + bool writeToFile_atomically_(NSString? path, bool useAuxiliaryFile) { + return _lib._objc_msgSend_25(_id, _lib._sel_writeToFile_atomically_1, + path?._id ?? ffi.nullptr, useAuxiliaryFile); + } + + bool writeToURL_atomically_(NSURL? url, bool atomically) { + return _lib._objc_msgSend_125(_id, _lib._sel_writeToURL_atomically_1, + url?._id ?? ffi.nullptr, atomically); + } + + bool writeToFile_options_error_(NSString? path, int writeOptionsMask, + ffi.Pointer> errorPtr) { + return _lib._objc_msgSend_248(_id, _lib._sel_writeToFile_options_error_1, + path?._id ?? ffi.nullptr, writeOptionsMask, errorPtr); + } + + bool writeToURL_options_error_(NSURL? url, int writeOptionsMask, + ffi.Pointer> errorPtr) { + return _lib._objc_msgSend_249(_id, _lib._sel_writeToURL_options_error_1, + url?._id ?? ffi.nullptr, writeOptionsMask, errorPtr); + } + + void rangeOfData_options_range_(ffi.Pointer<_NSRange> stret, + NSData? dataToFind, int mask, _NSRange searchRange) { + _lib._objc_msgSend_250(stret, _id, _lib._sel_rangeOfData_options_range_1, + dataToFind?._id ?? ffi.nullptr, mask, searchRange); + } + + void enumerateByteRangesUsingBlock_( + ObjCBlock_ffiVoid_ffiVoid_NSRange_bool block) { + _lib._objc_msgSend_251( + _id, _lib._sel_enumerateByteRangesUsingBlock_1, block._id); + } + + static NSData data(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSData1, _lib._sel_data1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static NSData dataWithBytes_length_( + SentryCocoa _lib, ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_252( + _lib._class_NSData1, _lib._sel_dataWithBytes_length_1, bytes, length); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static NSData dataWithBytesNoCopy_length_( + SentryCocoa _lib, ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_252(_lib._class_NSData1, + _lib._sel_dataWithBytesNoCopy_length_1, bytes, length); + return NSData._(_ret, _lib, retain: false, release: true); + } + + static NSData dataWithBytesNoCopy_length_freeWhenDone_( + SentryCocoa _lib, ffi.Pointer bytes, int length, bool b) { + final _ret = _lib._objc_msgSend_253(_lib._class_NSData1, + _lib._sel_dataWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); + return NSData._(_ret, _lib, retain: false, release: true); + } + + static NSData dataWithContentsOfFile_options_error_( + SentryCocoa _lib, + NSString? path, + int readOptionsMask, + ffi.Pointer> errorPtr) { + final _ret = _lib._objc_msgSend_254( + _lib._class_NSData1, + _lib._sel_dataWithContentsOfFile_options_error_1, + path?._id ?? ffi.nullptr, + readOptionsMask, + errorPtr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static NSData dataWithContentsOfURL_options_error_( + SentryCocoa _lib, + NSURL? url, + int readOptionsMask, + ffi.Pointer> errorPtr) { + final _ret = _lib._objc_msgSend_255( + _lib._class_NSData1, + _lib._sel_dataWithContentsOfURL_options_error_1, + url?._id ?? ffi.nullptr, + readOptionsMask, + errorPtr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static NSData dataWithContentsOfFile_(SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSData1, + _lib._sel_dataWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static NSData dataWithContentsOfURL_(SentryCocoa _lib, NSURL? url) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSData1, + _lib._sel_dataWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData initWithBytes_length_(ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_252( + _id, _lib._sel_initWithBytes_length_1, bytes, length); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData initWithBytesNoCopy_length_(ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_252( + _id, _lib._sel_initWithBytesNoCopy_length_1, bytes, length); + return NSData._(_ret, _lib, retain: false, release: true); + } + + NSData initWithBytesNoCopy_length_freeWhenDone_( + ffi.Pointer bytes, int length, bool b) { + final _ret = _lib._objc_msgSend_253(_id, + _lib._sel_initWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); + return NSData._(_ret, _lib, retain: false, release: true); + } + + NSData initWithBytesNoCopy_length_deallocator_(ffi.Pointer bytes, + int length, ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong deallocator) { + final _ret = _lib._objc_msgSend_256( + _id, + _lib._sel_initWithBytesNoCopy_length_deallocator_1, + bytes, + length, + deallocator._id); + return NSData._(_ret, _lib, retain: false, release: true); + } + + NSData initWithContentsOfFile_options_error_(NSString? path, + int readOptionsMask, ffi.Pointer> errorPtr) { + final _ret = _lib._objc_msgSend_254( + _id, + _lib._sel_initWithContentsOfFile_options_error_1, + path?._id ?? ffi.nullptr, + readOptionsMask, + errorPtr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData initWithContentsOfURL_options_error_(NSURL? url, int readOptionsMask, + ffi.Pointer> errorPtr) { + final _ret = _lib._objc_msgSend_255( + _id, + _lib._sel_initWithContentsOfURL_options_error_1, + url?._id ?? ffi.nullptr, + readOptionsMask, + errorPtr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData initWithContentsOfFile_(NSString? path) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData initWithContentsOfURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData initWithData_(NSData? data) { + final _ret = _lib._objc_msgSend_257( + _id, _lib._sel_initWithData_1, data?._id ?? ffi.nullptr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static NSData dataWithData_(SentryCocoa _lib, NSData? data) { + final _ret = _lib._objc_msgSend_257(_lib._class_NSData1, + _lib._sel_dataWithData_1, data?._id ?? ffi.nullptr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData initWithBase64EncodedString_options_( + NSString? base64String, int options) { + final _ret = _lib._objc_msgSend_258( + _id, + _lib._sel_initWithBase64EncodedString_options_1, + base64String?._id ?? ffi.nullptr, + options); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSString base64EncodedStringWithOptions_(int options) { + final _ret = _lib._objc_msgSend_259( + _id, _lib._sel_base64EncodedStringWithOptions_1, options); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSData initWithBase64EncodedData_options_(NSData? base64Data, int options) { + final _ret = _lib._objc_msgSend_260( + _id, + _lib._sel_initWithBase64EncodedData_options_1, + base64Data?._id ?? ffi.nullptr, + options); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData base64EncodedDataWithOptions_(int options) { + final _ret = _lib._objc_msgSend_261( + _id, _lib._sel_base64EncodedDataWithOptions_1, options); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData decompressedDataUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_262(_id, + _lib._sel_decompressedDataUsingAlgorithm_error_1, algorithm, error); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData compressedDataUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_262( + _id, _lib._sel_compressedDataUsingAlgorithm_error_1, algorithm, error); + return NSData._(_ret, _lib, retain: true, release: true); + } + + void getBytes_(ffi.Pointer buffer) { + _lib._objc_msgSend_47(_id, _lib._sel_getBytes_1, buffer); + } + + static NSObject dataWithContentsOfMappedFile_( + SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSData1, + _lib._sel_dataWithContentsOfMappedFile_1, path?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithContentsOfMappedFile_(NSString? path) { + final _ret = _lib._objc_msgSend_30(_id, + _lib._sel_initWithContentsOfMappedFile_1, path?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithBase64Encoding_(NSString? base64String) { + final _ret = _lib._objc_msgSend_30(_id, _lib._sel_initWithBase64Encoding_1, + base64String?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSString base64Encoding() { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_base64Encoding1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + @override + NSData init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static NSData new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSData1, _lib._sel_new1); + return NSData._(_ret, _lib, retain: false, release: true); + } + + static NSData allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSData1, _lib._sel_allocWithZone_1, zone); + return NSData._(_ret, _lib, retain: false, release: true); + } + + static NSData alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSData1, _lib._sel_alloc1); + return NSData._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSData1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSData1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSData1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSData1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSData1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSData1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSData1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSData1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSData1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class _NSRange extends ffi.Struct { + @ffi.UnsignedLong() + external int location; + + @ffi.UnsignedLong() + external int length; +} + +class NSURL extends NSObject { + NSURL._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURL] that points to the same underlying object as [other]. + static NSURL castFrom(T other) { + return NSURL._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSURL] that wraps the given raw object pointer. + static NSURL castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURL._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURL]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURL1); + } + + NSURL initWithScheme_host_path_( + NSString? scheme, NSString? host, NSString? path) { + final _ret = _lib._objc_msgSend_26( + _id, + _lib._sel_initWithScheme_host_path_1, + scheme?._id ?? ffi.nullptr, + host?._id ?? ffi.nullptr, + path?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL initFileURLWithPath_isDirectory_relativeToURL_( + NSString? path, bool isDir, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_27( + _id, + _lib._sel_initFileURLWithPath_isDirectory_relativeToURL_1, + path?._id ?? ffi.nullptr, + isDir, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL initFileURLWithPath_relativeToURL_(NSString? path, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_28( + _id, + _lib._sel_initFileURLWithPath_relativeToURL_1, + path?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL initFileURLWithPath_isDirectory_(NSString? path, bool isDir) { + final _ret = _lib._objc_msgSend_29( + _id, + _lib._sel_initFileURLWithPath_isDirectory_1, + path?._id ?? ffi.nullptr, + isDir); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL initFileURLWithPath_(NSString? path) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initFileURLWithPath_1, path?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL fileURLWithPath_isDirectory_relativeToURL_( + SentryCocoa _lib, NSString? path, bool isDir, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_31( + _lib._class_NSURL1, + _lib._sel_fileURLWithPath_isDirectory_relativeToURL_1, + path?._id ?? ffi.nullptr, + isDir, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL fileURLWithPath_relativeToURL_( + SentryCocoa _lib, NSString? path, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_32( + _lib._class_NSURL1, + _lib._sel_fileURLWithPath_relativeToURL_1, + path?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL fileURLWithPath_isDirectory_( + SentryCocoa _lib, NSString? path, bool isDir) { + final _ret = _lib._objc_msgSend_33( + _lib._class_NSURL1, + _lib._sel_fileURLWithPath_isDirectory_1, + path?._id ?? ffi.nullptr, + isDir); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL fileURLWithPath_(SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_34(_lib._class_NSURL1, + _lib._sel_fileURLWithPath_1, path?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_( + ffi.Pointer path, bool isDir, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_35( + _id, + _lib._sel_initFileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1, + path, + isDir, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_( + SentryCocoa _lib, + ffi.Pointer path, + bool isDir, + NSURL? baseURL) { + final _ret = _lib._objc_msgSend_36( + _lib._class_NSURL1, + _lib._sel_fileURLWithFileSystemRepresentation_isDirectory_relativeToURL_1, + path, + isDir, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL initWithString_(NSString? URLString) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithString_1, URLString?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL initWithString_relativeToURL_(NSString? URLString, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_28( + _id, + _lib._sel_initWithString_relativeToURL_1, + URLString?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL URLWithString_(SentryCocoa _lib, NSString? URLString) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSURL1, + _lib._sel_URLWithString_1, URLString?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL URLWithString_relativeToURL_( + SentryCocoa _lib, NSString? URLString, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_28( + _lib._class_NSURL1, + _lib._sel_URLWithString_relativeToURL_1, + URLString?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL initWithDataRepresentation_relativeToURL_( + NSData? data, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_37( + _id, + _lib._sel_initWithDataRepresentation_relativeToURL_1, + data?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL URLWithDataRepresentation_relativeToURL_( + SentryCocoa _lib, NSData? data, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_38( + _lib._class_NSURL1, + _lib._sel_URLWithDataRepresentation_relativeToURL_1, + data?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL initAbsoluteURLWithDataRepresentation_relativeToURL_( + NSData? data, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_37( + _id, + _lib._sel_initAbsoluteURLWithDataRepresentation_relativeToURL_1, + data?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL absoluteURLWithDataRepresentation_relativeToURL_( + SentryCocoa _lib, NSData? data, NSURL? baseURL) { + final _ret = _lib._objc_msgSend_38( + _lib._class_NSURL1, + _lib._sel_absoluteURLWithDataRepresentation_relativeToURL_1, + data?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSData? get dataRepresentation { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_dataRepresentation1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + NSString? get absoluteString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_absoluteString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get relativeString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_relativeString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSURL? get baseURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_baseURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get absoluteURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_absoluteURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSString? get scheme { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_scheme1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get resourceSpecifier { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_resourceSpecifier1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get host { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_host1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSNumber? get port { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_port1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSString? get user { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_user1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get password { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_password1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get path { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_path1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get fragment { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_fragment1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get parameterString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_parameterString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get query { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_query1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get relativePath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_relativePath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + bool get hasDirectoryPath { + return _lib._objc_msgSend_12(_id, _lib._sel_hasDirectoryPath1); + } + + bool getFileSystemRepresentation_maxLength_( + ffi.Pointer buffer, int maxBufferLength) { + return _lib._objc_msgSend_224( + _id, + _lib._sel_getFileSystemRepresentation_maxLength_1, + buffer, + maxBufferLength); + } + + ffi.Pointer get fileSystemRepresentation { + return _lib._objc_msgSend_13(_id, _lib._sel_fileSystemRepresentation1); + } + + bool get fileURL { + return _lib._objc_msgSend_12(_id, _lib._sel_isFileURL1); + } + + NSURL? get standardizedURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_standardizedURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + bool checkResourceIsReachableAndReturnError_( + ffi.Pointer> error) { + return _lib._objc_msgSend_225( + _id, _lib._sel_checkResourceIsReachableAndReturnError_1, error); + } + + bool isFileReferenceURL() { + return _lib._objc_msgSend_12(_id, _lib._sel_isFileReferenceURL1); + } + + NSURL fileReferenceURL() { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_fileReferenceURL1); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get filePathURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_filePathURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + bool getResourceValue_forKey_error_( + ffi.Pointer> value, + NSString key, + ffi.Pointer> error) { + return _lib._objc_msgSend_226( + _id, _lib._sel_getResourceValue_forKey_error_1, value, key._id, error); + } + + NSObject resourceValuesForKeys_error_( + NSArray? keys, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_227( + _id, + _lib._sel_resourceValuesForKeys_error_1, + keys?._id ?? ffi.nullptr, + error); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool setResourceValue_forKey_error_(NSObject value, NSString key, + ffi.Pointer> error) { + return _lib._objc_msgSend_228(_id, + _lib._sel_setResourceValue_forKey_error_1, value._id, key._id, error); + } + + bool setResourceValues_error_( + NSObject? keyedValues, ffi.Pointer> error) { + return _lib._objc_msgSend_229(_id, _lib._sel_setResourceValues_error_1, + keyedValues?._id ?? ffi.nullptr, error); + } + + void removeCachedResourceValueForKey_(NSString key) { + _lib._objc_msgSend_192( + _id, _lib._sel_removeCachedResourceValueForKey_1, key._id); + } + + void removeAllCachedResourceValues() { + _lib._objc_msgSend_1(_id, _lib._sel_removeAllCachedResourceValues1); + } + + void setTemporaryResourceValue_forKey_(NSObject value, NSString key) { + _lib._objc_msgSend_126( + _id, _lib._sel_setTemporaryResourceValue_forKey_1, value._id, key._id); + } + + NSData + bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_( + int options, + NSArray? keys, + NSURL? relativeURL, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_230( + _id, + _lib._sel_bookmarkDataWithOptions_includingResourceValuesForKeys_relativeToURL_error_1, + options, + keys?._id ?? ffi.nullptr, + relativeURL?._id ?? ffi.nullptr, + error); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSURL + initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_( + NSData? bookmarkData, + int options, + NSURL? relativeURL, + ffi.Pointer isStale, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_231( + _id, + _lib._sel_initByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1, + bookmarkData?._id ?? ffi.nullptr, + options, + relativeURL?._id ?? ffi.nullptr, + isStale, + error); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL + URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_( + SentryCocoa _lib, + NSData? bookmarkData, + int options, + NSURL? relativeURL, + ffi.Pointer isStale, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_231( + _lib._class_NSURL1, + _lib._sel_URLByResolvingBookmarkData_options_relativeToURL_bookmarkDataIsStale_error_1, + bookmarkData?._id ?? ffi.nullptr, + options, + relativeURL?._id ?? ffi.nullptr, + isStale, + error); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSObject resourceValuesForKeys_fromBookmarkData_( + SentryCocoa _lib, NSArray? keys, NSData? bookmarkData) { + final _ret = _lib._objc_msgSend_232( + _lib._class_NSURL1, + _lib._sel_resourceValuesForKeys_fromBookmarkData_1, + keys?._id ?? ffi.nullptr, + bookmarkData?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static bool writeBookmarkData_toURL_options_error_( + SentryCocoa _lib, + NSData? bookmarkData, + NSURL? bookmarkFileURL, + int options, + ffi.Pointer> error) { + return _lib._objc_msgSend_233( + _lib._class_NSURL1, + _lib._sel_writeBookmarkData_toURL_options_error_1, + bookmarkData?._id ?? ffi.nullptr, + bookmarkFileURL?._id ?? ffi.nullptr, + options, + error); + } + + static NSData bookmarkDataWithContentsOfURL_error_(SentryCocoa _lib, + NSURL? bookmarkFileURL, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_234( + _lib._class_NSURL1, + _lib._sel_bookmarkDataWithContentsOfURL_error_1, + bookmarkFileURL?._id ?? ffi.nullptr, + error); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static NSURL URLByResolvingAliasFileAtURL_options_error_(SentryCocoa _lib, + NSURL? url, int options, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_235( + _lib._class_NSURL1, + _lib._sel_URLByResolvingAliasFileAtURL_options_error_1, + url?._id ?? ffi.nullptr, + options, + error); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + bool startAccessingSecurityScopedResource() { + return _lib._objc_msgSend_12( + _id, _lib._sel_startAccessingSecurityScopedResource1); + } + + void stopAccessingSecurityScopedResource() { + _lib._objc_msgSend_1(_id, _lib._sel_stopAccessingSecurityScopedResource1); + } + + bool getPromisedItemResourceValue_forKey_error_( + ffi.Pointer> value, + NSString key, + ffi.Pointer> error) { + return _lib._objc_msgSend_226( + _id, + _lib._sel_getPromisedItemResourceValue_forKey_error_1, + value, + key._id, + error); + } + + NSDictionary promisedItemResourceValuesForKeys_error_( + NSArray? keys, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_236( + _id, + _lib._sel_promisedItemResourceValuesForKeys_error_1, + keys?._id ?? ffi.nullptr, + error); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + bool checkPromisedItemIsReachableAndReturnError_( + ffi.Pointer> error) { + return _lib._objc_msgSend_225( + _id, _lib._sel_checkPromisedItemIsReachableAndReturnError_1, error); + } + + static NSURL fileURLWithPathComponents_( + SentryCocoa _lib, NSArray? components) { + final _ret = _lib._objc_msgSend_237(_lib._class_NSURL1, + _lib._sel_fileURLWithPathComponents_1, components?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSArray? get pathComponents { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_pathComponents1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString? get lastPathComponent { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_lastPathComponent1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get pathExtension { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_pathExtension1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSURL URLByAppendingPathComponent_(NSString? pathComponent) { + final _ret = _lib._objc_msgSend_34( + _id, + _lib._sel_URLByAppendingPathComponent_1, + pathComponent?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL URLByAppendingPathComponent_isDirectory_( + NSString? pathComponent, bool isDirectory) { + final _ret = _lib._objc_msgSend_33( + _id, + _lib._sel_URLByAppendingPathComponent_isDirectory_1, + pathComponent?._id ?? ffi.nullptr, + isDirectory); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get URLByDeletingLastPathComponent { + final _ret = + _lib._objc_msgSend_40(_id, _lib._sel_URLByDeletingLastPathComponent1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL URLByAppendingPathExtension_(NSString? pathExtension) { + final _ret = _lib._objc_msgSend_34( + _id, + _lib._sel_URLByAppendingPathExtension_1, + pathExtension?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get URLByDeletingPathExtension { + final _ret = + _lib._objc_msgSend_40(_id, _lib._sel_URLByDeletingPathExtension1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get URLByStandardizingPath { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URLByStandardizingPath1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get URLByResolvingSymlinksInPath { + final _ret = + _lib._objc_msgSend_40(_id, _lib._sel_URLByResolvingSymlinksInPath1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSData resourceDataUsingCache_(bool shouldUseCache) { + final _ret = _lib._objc_msgSend_238( + _id, _lib._sel_resourceDataUsingCache_1, shouldUseCache); + return NSData._(_ret, _lib, retain: true, release: true); + } + + void loadResourceDataNotifyingClient_usingCache_( + NSObject client, bool shouldUseCache) { + _lib._objc_msgSend_239( + _id, + _lib._sel_loadResourceDataNotifyingClient_usingCache_1, + client._id, + shouldUseCache); + } + + NSObject propertyForKey_(NSString? propertyKey) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_propertyForKey_1, propertyKey?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool setResourceData_(NSData? data) { + return _lib._objc_msgSend_23( + _id, _lib._sel_setResourceData_1, data?._id ?? ffi.nullptr); + } + + bool setProperty_forKey_(NSObject property, NSString? propertyKey) { + return _lib._objc_msgSend_240(_id, _lib._sel_setProperty_forKey_1, + property._id, propertyKey?._id ?? ffi.nullptr); + } + + NSURLHandle URLHandleUsingCache_(bool shouldUseCache) { + final _ret = _lib._objc_msgSend_247( + _id, _lib._sel_URLHandleUsingCache_1, shouldUseCache); + return NSURLHandle._(_ret, _lib, retain: true, release: true); + } + + @override + NSURL init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSURL new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURL1, _lib._sel_new1); + return NSURL._(_ret, _lib, retain: false, release: true); + } + + static NSURL allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURL1, _lib._sel_allocWithZone_1, zone); + return NSURL._(_ret, _lib, retain: false, release: true); + } + + static NSURL alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURL1, _lib._sel_alloc1); + return NSURL._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURL1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURL1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURL1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURL1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURL1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURL1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURL1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSURL1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURL1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSNumber extends NSValue { + NSNumber._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSNumber] that points to the same underlying object as [other]. + static NSNumber castFrom(T other) { + return NSNumber._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSNumber] that wraps the given raw object pointer. + static NSNumber castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSNumber._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSNumber]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSNumber1); + } + + @override + NSNumber initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithChar_(int value) { + final _ret = _lib._objc_msgSend_202(_id, _lib._sel_initWithChar_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedChar_(int value) { + final _ret = + _lib._objc_msgSend_203(_id, _lib._sel_initWithUnsignedChar_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithShort_(int value) { + final _ret = _lib._objc_msgSend_204(_id, _lib._sel_initWithShort_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedShort_(int value) { + final _ret = + _lib._objc_msgSend_205(_id, _lib._sel_initWithUnsignedShort_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithInt_(int value) { + final _ret = _lib._objc_msgSend_206(_id, _lib._sel_initWithInt_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedInt_(int value) { + final _ret = + _lib._objc_msgSend_207(_id, _lib._sel_initWithUnsignedInt_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithLong_(int value) { + final _ret = _lib._objc_msgSend_208(_id, _lib._sel_initWithLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedLong_(int value) { + final _ret = + _lib._objc_msgSend_209(_id, _lib._sel_initWithUnsignedLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithLongLong_(int value) { + final _ret = + _lib._objc_msgSend_210(_id, _lib._sel_initWithLongLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedLongLong_(int value) { + final _ret = _lib._objc_msgSend_211( + _id, _lib._sel_initWithUnsignedLongLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithFloat_(double value) { + final _ret = _lib._objc_msgSend_212(_id, _lib._sel_initWithFloat_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithDouble_(double value) { + final _ret = _lib._objc_msgSend_213(_id, _lib._sel_initWithDouble_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithBool_(bool value) { + final _ret = _lib._objc_msgSend_214(_id, _lib._sel_initWithBool_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithInteger_(int value) { + final _ret = + _lib._objc_msgSend_208(_id, _lib._sel_initWithInteger_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber initWithUnsignedInteger_(int value) { + final _ret = + _lib._objc_msgSend_209(_id, _lib._sel_initWithUnsignedInteger_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + int get charValue { + return _lib._objc_msgSend_215(_id, _lib._sel_charValue1); + } + + int get unsignedCharValue { + return _lib._objc_msgSend_216(_id, _lib._sel_unsignedCharValue1); + } + + int get shortValue { + return _lib._objc_msgSend_217(_id, _lib._sel_shortValue1); + } + + int get unsignedShortValue { + return _lib._objc_msgSend_218(_id, _lib._sel_unsignedShortValue1); + } + + int get intValue { + return _lib._objc_msgSend_219(_id, _lib._sel_intValue1); + } + + int get unsignedIntValue { + return _lib._objc_msgSend_197(_id, _lib._sel_unsignedIntValue1); + } + + int get longValue { + return _lib._objc_msgSend_78(_id, _lib._sel_longValue1); + } + + int get unsignedLongValue { + return _lib._objc_msgSend_10(_id, _lib._sel_unsignedLongValue1); + } + + int get longLongValue { + return _lib._objc_msgSend_220(_id, _lib._sel_longLongValue1); + } + + int get unsignedLongLongValue { + return _lib._objc_msgSend_154(_id, _lib._sel_unsignedLongLongValue1); + } + + double get floatValue { + return _lib._objc_msgSend_221(_id, _lib._sel_floatValue1); + } + + double get doubleValue { + return _lib._objc_msgSend_155(_id, _lib._sel_doubleValue1); + } + + bool get boolValue { + return _lib._objc_msgSend_12(_id, _lib._sel_boolValue1); + } + + int get integerValue { + return _lib._objc_msgSend_78(_id, _lib._sel_integerValue1); + } + + int get unsignedIntegerValue { + return _lib._objc_msgSend_10(_id, _lib._sel_unsignedIntegerValue1); + } + + NSString? get stringValue { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_stringValue1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int compare_(NSNumber? otherNumber) { + return _lib._objc_msgSend_222( + _id, _lib._sel_compare_1, otherNumber?._id ?? ffi.nullptr); + } + + bool isEqualToNumber_(NSNumber? number) { + return _lib._objc_msgSend_223( + _id, _lib._sel_isEqualToNumber_1, number?._id ?? ffi.nullptr); + } + + NSString descriptionWithLocale_(NSObject locale) { + final _ret = _lib._objc_msgSend_65( + _id, _lib._sel_descriptionWithLocale_1, locale._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithChar_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_202( + _lib._class_NSNumber1, _lib._sel_numberWithChar_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithUnsignedChar_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_203( + _lib._class_NSNumber1, _lib._sel_numberWithUnsignedChar_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithShort_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_204( + _lib._class_NSNumber1, _lib._sel_numberWithShort_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithUnsignedShort_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_205( + _lib._class_NSNumber1, _lib._sel_numberWithUnsignedShort_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithInt_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_206( + _lib._class_NSNumber1, _lib._sel_numberWithInt_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithUnsignedInt_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_207( + _lib._class_NSNumber1, _lib._sel_numberWithUnsignedInt_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithLong_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_208( + _lib._class_NSNumber1, _lib._sel_numberWithLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithUnsignedLong_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_209( + _lib._class_NSNumber1, _lib._sel_numberWithUnsignedLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithLongLong_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_210( + _lib._class_NSNumber1, _lib._sel_numberWithLongLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithUnsignedLongLong_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_211( + _lib._class_NSNumber1, _lib._sel_numberWithUnsignedLongLong_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithFloat_(SentryCocoa _lib, double value) { + final _ret = _lib._objc_msgSend_212( + _lib._class_NSNumber1, _lib._sel_numberWithFloat_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithDouble_(SentryCocoa _lib, double value) { + final _ret = _lib._objc_msgSend_213( + _lib._class_NSNumber1, _lib._sel_numberWithDouble_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithBool_(SentryCocoa _lib, bool value) { + final _ret = _lib._objc_msgSend_214( + _lib._class_NSNumber1, _lib._sel_numberWithBool_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithInteger_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_208( + _lib._class_NSNumber1, _lib._sel_numberWithInteger_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber numberWithUnsignedInteger_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_209( + _lib._class_NSNumber1, _lib._sel_numberWithUnsignedInteger_1, value); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + @override + NSNumber initWithBytes_objCType_( + ffi.Pointer value, ffi.Pointer type) { + final _ret = _lib._objc_msgSend_41( + _id, _lib._sel_initWithBytes_objCType_1, value, type); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithBytes_objCType_(SentryCocoa _lib, + ffi.Pointer value, ffi.Pointer type) { + final _ret = _lib._objc_msgSend_43(_lib._class_NSNumber1, + _lib._sel_valueWithBytes_objCType_1, value, type); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue value_withObjCType_(SentryCocoa _lib, + ffi.Pointer value, ffi.Pointer type) { + final _ret = _lib._objc_msgSend_43( + _lib._class_NSNumber1, _lib._sel_value_withObjCType_1, value, type); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithNonretainedObject_( + SentryCocoa _lib, NSObject anObject) { + final _ret = _lib._objc_msgSend_44(_lib._class_NSNumber1, + _lib._sel_valueWithNonretainedObject_1, anObject._id); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithPointer_( + SentryCocoa _lib, ffi.Pointer pointer) { + final _ret = _lib._objc_msgSend_45( + _lib._class_NSNumber1, _lib._sel_valueWithPointer_1, pointer); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithRange_(SentryCocoa _lib, _NSRange range) { + final _ret = _lib._objc_msgSend_48( + _lib._class_NSNumber1, _lib._sel_valueWithRange_1, range); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithPoint_(SentryCocoa _lib, CGPoint point) { + final _ret = _lib._objc_msgSend_50( + _lib._class_NSNumber1, _lib._sel_valueWithPoint_1, point); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithSize_(SentryCocoa _lib, CGSize size) { + final _ret = _lib._objc_msgSend_51( + _lib._class_NSNumber1, _lib._sel_valueWithSize_1, size); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithRect_(SentryCocoa _lib, CGRect rect) { + final _ret = _lib._objc_msgSend_52( + _lib._class_NSNumber1, _lib._sel_valueWithRect_1, rect); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithEdgeInsets_(SentryCocoa _lib, NSEdgeInsets insets) { + final _ret = _lib._objc_msgSend_53( + _lib._class_NSNumber1, _lib._sel_valueWithEdgeInsets_1, insets); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + @override + NSNumber init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSNumber new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSNumber1, _lib._sel_new1); + return NSNumber._(_ret, _lib, retain: false, release: true); + } + + static NSNumber allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSNumber1, _lib._sel_allocWithZone_1, zone); + return NSNumber._(_ret, _lib, retain: false, release: true); + } + + static NSNumber alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSNumber1, _lib._sel_alloc1); + return NSNumber._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSNumber1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSNumber1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSNumber1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSNumber1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSNumber1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSNumber1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSNumber1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSNumber1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSNumber1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSValue extends NSObject { + NSValue._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSValue] that points to the same underlying object as [other]. + static NSValue castFrom(T other) { + return NSValue._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSValue] that wraps the given raw object pointer. + static NSValue castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSValue._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSValue]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSValue1); + } + + void getValue_size_(ffi.Pointer value, int size) { + _lib._objc_msgSend_21(_id, _lib._sel_getValue_size_1, value, size); + } + + ffi.Pointer get objCType { + return _lib._objc_msgSend_13(_id, _lib._sel_objCType1); + } + + NSValue initWithBytes_objCType_( + ffi.Pointer value, ffi.Pointer type) { + final _ret = _lib._objc_msgSend_41( + _id, _lib._sel_initWithBytes_objCType_1, value, type); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + NSValue initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithBytes_objCType_(SentryCocoa _lib, + ffi.Pointer value, ffi.Pointer type) { + final _ret = _lib._objc_msgSend_43( + _lib._class_NSValue1, _lib._sel_valueWithBytes_objCType_1, value, type); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue value_withObjCType_(SentryCocoa _lib, + ffi.Pointer value, ffi.Pointer type) { + final _ret = _lib._objc_msgSend_43( + _lib._class_NSValue1, _lib._sel_value_withObjCType_1, value, type); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithNonretainedObject_( + SentryCocoa _lib, NSObject anObject) { + final _ret = _lib._objc_msgSend_44(_lib._class_NSValue1, + _lib._sel_valueWithNonretainedObject_1, anObject._id); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + NSObject get nonretainedObjectValue { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_nonretainedObjectValue1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithPointer_( + SentryCocoa _lib, ffi.Pointer pointer) { + final _ret = _lib._objc_msgSend_45( + _lib._class_NSValue1, _lib._sel_valueWithPointer_1, pointer); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + ffi.Pointer get pointerValue { + return _lib._objc_msgSend_19(_id, _lib._sel_pointerValue1); + } + + bool isEqualToValue_(NSValue? value) { + return _lib._objc_msgSend_46( + _id, _lib._sel_isEqualToValue_1, value?._id ?? ffi.nullptr); + } + + void getValue_(ffi.Pointer value) { + _lib._objc_msgSend_47(_id, _lib._sel_getValue_1, value); + } + + static NSValue valueWithRange_(SentryCocoa _lib, _NSRange range) { + final _ret = _lib._objc_msgSend_48( + _lib._class_NSValue1, _lib._sel_valueWithRange_1, range); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + void getRangeValue(ffi.Pointer<_NSRange> stret) { + _lib._objc_msgSend_49(stret, _id, _lib._sel_rangeValue1); + } + + static NSValue valueWithPoint_(SentryCocoa _lib, CGPoint point) { + final _ret = _lib._objc_msgSend_50( + _lib._class_NSValue1, _lib._sel_valueWithPoint_1, point); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithSize_(SentryCocoa _lib, CGSize size) { + final _ret = _lib._objc_msgSend_51( + _lib._class_NSValue1, _lib._sel_valueWithSize_1, size); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithRect_(SentryCocoa _lib, CGRect rect) { + final _ret = _lib._objc_msgSend_52( + _lib._class_NSValue1, _lib._sel_valueWithRect_1, rect); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue valueWithEdgeInsets_(SentryCocoa _lib, NSEdgeInsets insets) { + final _ret = _lib._objc_msgSend_53( + _lib._class_NSValue1, _lib._sel_valueWithEdgeInsets_1, insets); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + void getPointValue(ffi.Pointer stret) { + _lib._objc_msgSend_54(stret, _id, _lib._sel_pointValue1); + } + + void getSizeValue(ffi.Pointer stret) { + _lib._objc_msgSend_55(stret, _id, _lib._sel_sizeValue1); + } + + void getRectValue(ffi.Pointer stret) { + _lib._objc_msgSend_56(stret, _id, _lib._sel_rectValue1); + } + + void getEdgeInsetsValue(ffi.Pointer stret) { + _lib._objc_msgSend_57(stret, _id, _lib._sel_edgeInsetsValue1); + } + + @override + NSValue init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSValue._(_ret, _lib, retain: true, release: true); + } + + static NSValue new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSValue1, _lib._sel_new1); + return NSValue._(_ret, _lib, retain: false, release: true); + } + + static NSValue allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSValue1, _lib._sel_allocWithZone_1, zone); + return NSValue._(_ret, _lib, retain: false, release: true); + } + + static NSValue alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSValue1, _lib._sel_alloc1); + return NSValue._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSValue1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSValue1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSValue1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSValue1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSValue1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSValue1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSValue1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSValue1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSValue1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class CGPoint extends ffi.Struct { + @ffi.Double() + external double x; + + @ffi.Double() + external double y; +} + +class CGSize extends ffi.Struct { + @ffi.Double() + external double width; + + @ffi.Double() + external double height; +} + +class CGRect extends ffi.Struct { + external CGPoint origin; + + external CGSize size; +} + +class NSEdgeInsets extends ffi.Struct { + @ffi.Double() + external double top; + + @ffi.Double() + external double left; + + @ffi.Double() + external double bottom; + + @ffi.Double() + external double right; +} + +class NSArray extends NSObject { + NSArray._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSArray] that points to the same underlying object as [other]. + static NSArray castFrom(T other) { + return NSArray._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSArray] that wraps the given raw object pointer. + static NSArray castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSArray._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSArray]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSArray1); + } + + int get count { + return _lib._objc_msgSend_10(_id, _lib._sel_count1); + } + + NSObject objectAtIndex_(int index) { + final _ret = _lib._objc_msgSend_60(_id, _lib._sel_objectAtIndex_1, index); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + @override + NSArray init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61( + _id, _lib._sel_initWithObjects_count_1, objects, cnt); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray arrayByAddingObject_(NSObject anObject) { + final _ret = _lib._objc_msgSend_62( + _id, _lib._sel_arrayByAddingObject_1, anObject._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray arrayByAddingObjectsFromArray_(NSArray? otherArray) { + final _ret = _lib._objc_msgSend_63( + _id, + _lib._sel_arrayByAddingObjectsFromArray_1, + otherArray?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString componentsJoinedByString_(NSString? separator) { + final _ret = _lib._objc_msgSend_64(_id, + _lib._sel_componentsJoinedByString_1, separator?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + bool containsObject_(NSObject anObject) { + return _lib._objc_msgSend_0(_id, _lib._sel_containsObject_1, anObject._id); + } + + NSString? get description { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString descriptionWithLocale_(NSObject locale) { + final _ret = _lib._objc_msgSend_65( + _id, _lib._sel_descriptionWithLocale_1, locale._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString descriptionWithLocale_indent_(NSObject locale, int level) { + final _ret = _lib._objc_msgSend_66( + _id, _lib._sel_descriptionWithLocale_indent_1, locale._id, level); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSObject firstObjectCommonWithArray_(NSArray? otherArray) { + final _ret = _lib._objc_msgSend_67(_id, + _lib._sel_firstObjectCommonWithArray_1, otherArray?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void getObjects_range_( + ffi.Pointer> objects, _NSRange range) { + _lib._objc_msgSend_68(_id, _lib._sel_getObjects_range_1, objects, range); + } + + int indexOfObject_(NSObject anObject) { + return _lib._objc_msgSend_69(_id, _lib._sel_indexOfObject_1, anObject._id); + } + + int indexOfObject_inRange_(NSObject anObject, _NSRange range) { + return _lib._objc_msgSend_70( + _id, _lib._sel_indexOfObject_inRange_1, anObject._id, range); + } + + int indexOfObjectIdenticalTo_(NSObject anObject) { + return _lib._objc_msgSend_69( + _id, _lib._sel_indexOfObjectIdenticalTo_1, anObject._id); + } + + int indexOfObjectIdenticalTo_inRange_(NSObject anObject, _NSRange range) { + return _lib._objc_msgSend_70( + _id, _lib._sel_indexOfObjectIdenticalTo_inRange_1, anObject._id, range); + } + + bool isEqualToArray_(NSArray? otherArray) { + return _lib._objc_msgSend_71( + _id, _lib._sel_isEqualToArray_1, otherArray?._id ?? ffi.nullptr); + } + + NSObject get firstObject { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_firstObject1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject get lastObject { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_lastObject1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSEnumerator objectEnumerator() { + final _ret = _lib._objc_msgSend_72(_id, _lib._sel_objectEnumerator1); + return NSEnumerator._(_ret, _lib, retain: true, release: true); + } + + NSEnumerator reverseObjectEnumerator() { + final _ret = _lib._objc_msgSend_72(_id, _lib._sel_reverseObjectEnumerator1); + return NSEnumerator._(_ret, _lib, retain: true, release: true); + } + + NSData? get sortedArrayHint { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_sortedArrayHint1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + NSArray sortedArrayUsingFunction_context_( + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>> + comparator, + ffi.Pointer context) { + final _ret = _lib._objc_msgSend_73( + _id, _lib._sel_sortedArrayUsingFunction_context_1, comparator, context); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray sortedArrayUsingFunction_context_hint_( + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>> + comparator, + ffi.Pointer context, + NSData? hint) { + final _ret = _lib._objc_msgSend_74( + _id, + _lib._sel_sortedArrayUsingFunction_context_hint_1, + comparator, + context, + hint?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray sortedArrayUsingSelector_(ffi.Pointer comparator) { + final _ret = _lib._objc_msgSend_75( + _id, _lib._sel_sortedArrayUsingSelector_1, comparator); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray subarrayWithRange_(_NSRange range) { + final _ret = + _lib._objc_msgSend_76(_id, _lib._sel_subarrayWithRange_1, range); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + bool writeToURL_error_( + NSURL? url, ffi.Pointer> error) { + return _lib._objc_msgSend_83( + _id, _lib._sel_writeToURL_error_1, url?._id ?? ffi.nullptr, error); + } + + void makeObjectsPerformSelector_(ffi.Pointer aSelector) { + _lib._objc_msgSend_7( + _id, _lib._sel_makeObjectsPerformSelector_1, aSelector); + } + + void makeObjectsPerformSelector_withObject_( + ffi.Pointer aSelector, NSObject argument) { + _lib._objc_msgSend_84( + _id, + _lib._sel_makeObjectsPerformSelector_withObject_1, + aSelector, + argument._id); + } + + NSArray objectsAtIndexes_(NSIndexSet? indexes) { + final _ret = _lib._objc_msgSend_105( + _id, _lib._sel_objectsAtIndexes_1, indexes?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSObject objectAtIndexedSubscript_(int idx) { + final _ret = + _lib._objc_msgSend_60(_id, _lib._sel_objectAtIndexedSubscript_1, idx); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void enumerateObjectsUsingBlock_( + ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { + _lib._objc_msgSend_106( + _id, _lib._sel_enumerateObjectsUsingBlock_1, block._id); + } + + void enumerateObjectsWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { + _lib._objc_msgSend_107(_id, + _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._id); + } + + void enumerateObjectsAtIndexes_options_usingBlock_(NSIndexSet? s, int opts, + ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { + _lib._objc_msgSend_108( + _id, + _lib._sel_enumerateObjectsAtIndexes_options_usingBlock_1, + s?._id ?? ffi.nullptr, + opts, + block._id); + } + + int indexOfObjectPassingTest_( + ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + return _lib._objc_msgSend_109( + _id, _lib._sel_indexOfObjectPassingTest_1, predicate._id); + } + + int indexOfObjectWithOptions_passingTest_( + int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + return _lib._objc_msgSend_110(_id, + _lib._sel_indexOfObjectWithOptions_passingTest_1, opts, predicate._id); + } + + int indexOfObjectAtIndexes_options_passingTest_(NSIndexSet? s, int opts, + ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + return _lib._objc_msgSend_111( + _id, + _lib._sel_indexOfObjectAtIndexes_options_passingTest_1, + s?._id ?? ffi.nullptr, + opts, + predicate._id); + } + + NSIndexSet indexesOfObjectsPassingTest_( + ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _lib._objc_msgSend_112( + _id, _lib._sel_indexesOfObjectsPassingTest_1, predicate._id); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + NSIndexSet indexesOfObjectsWithOptions_passingTest_( + int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _lib._objc_msgSend_113( + _id, + _lib._sel_indexesOfObjectsWithOptions_passingTest_1, + opts, + predicate._id); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + NSIndexSet indexesOfObjectsAtIndexes_options_passingTest_(NSIndexSet? s, + int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _lib._objc_msgSend_114( + _id, + _lib._sel_indexesOfObjectsAtIndexes_options_passingTest_1, + s?._id ?? ffi.nullptr, + opts, + predicate._id); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + NSArray sortedArrayUsingComparator_( + ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { + final _ret = _lib._objc_msgSend_115( + _id, _lib._sel_sortedArrayUsingComparator_1, cmptr._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray sortedArrayWithOptions_usingComparator_( + int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { + final _ret = _lib._objc_msgSend_116(_id, + _lib._sel_sortedArrayWithOptions_usingComparator_1, opts, cmptr._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + int indexOfObject_inSortedRange_options_usingComparator_( + NSObject obj, + _NSRange r, + int opts, + ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmp) { + return _lib._objc_msgSend_117( + _id, + _lib._sel_indexOfObject_inSortedRange_options_usingComparator_1, + obj._id, + r, + opts, + cmp._id); + } + + static NSArray array(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSArray1, _lib._sel_array1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray arrayWithObject_(SentryCocoa _lib, NSObject anObject) { + final _ret = _lib._objc_msgSend_16( + _lib._class_NSArray1, _lib._sel_arrayWithObject_1, anObject._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray arrayWithObjects_count_( + SentryCocoa _lib, ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61( + _lib._class_NSArray1, _lib._sel_arrayWithObjects_count_1, objects, cnt); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray arrayWithObjects_(SentryCocoa _lib, NSObject firstObj) { + final _ret = _lib._objc_msgSend_16( + _lib._class_NSArray1, _lib._sel_arrayWithObjects_1, firstObj._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray arrayWithArray_(SentryCocoa _lib, NSArray? array) { + final _ret = _lib._objc_msgSend_67(_lib._class_NSArray1, + _lib._sel_arrayWithArray_1, array?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray initWithObjects_(NSObject firstObj) { + final _ret = + _lib._objc_msgSend_16(_id, _lib._sel_initWithObjects_1, firstObj._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray initWithArray_(NSArray? array) { + final _ret = _lib._objc_msgSend_67( + _id, _lib._sel_initWithArray_1, array?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray initWithArray_copyItems_(NSArray? array, bool flag) { + final _ret = _lib._objc_msgSend_118(_id, + _lib._sel_initWithArray_copyItems_1, array?._id ?? ffi.nullptr, flag); + return NSArray._(_ret, _lib, retain: false, release: true); + } + + NSArray initWithContentsOfURL_error_( + NSURL? url, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_119( + _id, + _lib._sel_initWithContentsOfURL_error_1, + url?._id ?? ffi.nullptr, + error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray arrayWithContentsOfURL_error_(SentryCocoa _lib, NSURL? url, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSArray1, + _lib._sel_arrayWithContentsOfURL_error_1, + url?._id ?? ffi.nullptr, + error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSObject differenceFromArray_withOptions_usingEquivalenceTest_( + NSArray? other, int options, ObjCBlock_bool_ObjCObject_ObjCObject block) { + final _ret = _lib._objc_msgSend_120( + _id, + _lib._sel_differenceFromArray_withOptions_usingEquivalenceTest_1, + other?._id ?? ffi.nullptr, + options, + block._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject differenceFromArray_withOptions_(NSArray? other, int options) { + final _ret = _lib._objc_msgSend_121( + _id, + _lib._sel_differenceFromArray_withOptions_1, + other?._id ?? ffi.nullptr, + options); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject differenceFromArray_(NSArray? other) { + final _ret = _lib._objc_msgSend_67( + _id, _lib._sel_differenceFromArray_1, other?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSArray arrayByApplyingDifference_(NSObject? difference) { + final _ret = _lib._objc_msgSend_62(_id, + _lib._sel_arrayByApplyingDifference_1, difference?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + void getObjects_(ffi.Pointer> objects) { + _lib._objc_msgSend_122(_id, _lib._sel_getObjects_1, objects); + } + + static NSArray arrayWithContentsOfFile_(SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_123(_lib._class_NSArray1, + _lib._sel_arrayWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray arrayWithContentsOfURL_(SentryCocoa _lib, NSURL? url) { + final _ret = _lib._objc_msgSend_124(_lib._class_NSArray1, + _lib._sel_arrayWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray initWithContentsOfFile_(NSString? path) { + final _ret = _lib._objc_msgSend_123( + _id, _lib._sel_initWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray initWithContentsOfURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_124( + _id, _lib._sel_initWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + bool writeToFile_atomically_(NSString? path, bool useAuxiliaryFile) { + return _lib._objc_msgSend_25(_id, _lib._sel_writeToFile_atomically_1, + path?._id ?? ffi.nullptr, useAuxiliaryFile); + } + + bool writeToURL_atomically_(NSURL? url, bool atomically) { + return _lib._objc_msgSend_125(_id, _lib._sel_writeToURL_atomically_1, + url?._id ?? ffi.nullptr, atomically); + } + + NSArray pathsMatchingExtensions_(NSArray? filterTypes) { + final _ret = _lib._objc_msgSend_63(_id, _lib._sel_pathsMatchingExtensions_1, + filterTypes?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + @override + NSObject valueForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_valueForKey_1, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + @override + void setValue_forKey_(NSObject value, NSString? key) { + _lib._objc_msgSend_126( + _id, _lib._sel_setValue_forKey_1, value._id, key?._id ?? ffi.nullptr); + } + + void addObserver_toObjectsAtIndexes_forKeyPath_options_context_( + NSObject? observer, + NSIndexSet? indexes, + NSString? keyPath, + int options, + ffi.Pointer context) { + _lib._objc_msgSend_127( + _id, + _lib._sel_addObserver_toObjectsAtIndexes_forKeyPath_options_context_1, + observer?._id ?? ffi.nullptr, + indexes?._id ?? ffi.nullptr, + keyPath?._id ?? ffi.nullptr, + options, + context); + } + + void removeObserver_fromObjectsAtIndexes_forKeyPath_context_( + NSObject? observer, + NSIndexSet? indexes, + NSString? keyPath, + ffi.Pointer context) { + _lib._objc_msgSend_128( + _id, + _lib._sel_removeObserver_fromObjectsAtIndexes_forKeyPath_context_1, + observer?._id ?? ffi.nullptr, + indexes?._id ?? ffi.nullptr, + keyPath?._id ?? ffi.nullptr, + context); + } + + void removeObserver_fromObjectsAtIndexes_forKeyPath_( + NSObject? observer, NSIndexSet? indexes, NSString? keyPath) { + _lib._objc_msgSend_129( + _id, + _lib._sel_removeObserver_fromObjectsAtIndexes_forKeyPath_1, + observer?._id ?? ffi.nullptr, + indexes?._id ?? ffi.nullptr, + keyPath?._id ?? ffi.nullptr); + } + + @override + void addObserver_forKeyPath_options_context_(NSObject? observer, + NSString? keyPath, int options, ffi.Pointer context) { + _lib._objc_msgSend_130( + _id, + _lib._sel_addObserver_forKeyPath_options_context_1, + observer?._id ?? ffi.nullptr, + keyPath?._id ?? ffi.nullptr, + options, + context); + } + + @override + void removeObserver_forKeyPath_context_( + NSObject? observer, NSString? keyPath, ffi.Pointer context) { + _lib._objc_msgSend_131(_id, _lib._sel_removeObserver_forKeyPath_context_1, + observer?._id ?? ffi.nullptr, keyPath?._id ?? ffi.nullptr, context); + } + + @override + void removeObserver_forKeyPath_(NSObject? observer, NSString? keyPath) { + _lib._objc_msgSend_132(_id, _lib._sel_removeObserver_forKeyPath_1, + observer?._id ?? ffi.nullptr, keyPath?._id ?? ffi.nullptr); + } + + NSArray sortedArrayUsingDescriptors_(NSArray? sortDescriptors) { + final _ret = _lib._objc_msgSend_63( + _id, + _lib._sel_sortedArrayUsingDescriptors_1, + sortDescriptors?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray filteredArrayUsingPredicate_(NSPredicate? predicate) { + final _ret = _lib._objc_msgSend_201(_id, + _lib._sel_filteredArrayUsingPredicate_1, predicate?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSArray1, _lib._sel_new1); + return NSArray._(_ret, _lib, retain: false, release: true); + } + + static NSArray allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSArray1, _lib._sel_allocWithZone_1, zone); + return NSArray._(_ret, _lib, retain: false, release: true); + } + + static NSArray alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSArray1, _lib._sel_alloc1); + return NSArray._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSArray1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSArray1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSArray1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSArray1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSArray1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSArray1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSArray1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSArray1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSArray1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSError extends NSObject { + NSError._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSError] that points to the same underlying object as [other]. + static NSError castFrom(T other) { + return NSError._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSError] that wraps the given raw object pointer. + static NSError castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSError._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSError]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSError1); + } + + NSError initWithDomain_code_userInfo_( + NSString domain, int code, NSObject? dict) { + final _ret = _lib._objc_msgSend_77( + _id, + _lib._sel_initWithDomain_code_userInfo_1, + domain._id, + code, + dict?._id ?? ffi.nullptr); + return NSError._(_ret, _lib, retain: true, release: true); + } + + static NSError errorWithDomain_code_userInfo_( + SentryCocoa _lib, NSString domain, int code, NSObject? dict) { + final _ret = _lib._objc_msgSend_77( + _lib._class_NSError1, + _lib._sel_errorWithDomain_code_userInfo_1, + domain._id, + code, + dict?._id ?? ffi.nullptr); + return NSError._(_ret, _lib, retain: true, release: true); + } + + NSString get domain { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_domain1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + int get code { + return _lib._objc_msgSend_78(_id, _lib._sel_code1); + } + + NSObject? get userInfo { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_userInfo1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + NSString? get localizedDescription { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localizedDescription1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get localizedFailureReason { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localizedFailureReason1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get localizedRecoverySuggestion { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_localizedRecoverySuggestion1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray? get localizedRecoveryOptions { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_localizedRecoveryOptions1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSObject get recoveryAttempter { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_recoveryAttempter1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSString? get helpAnchor { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_helpAnchor1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray? get underlyingErrors { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_underlyingErrors1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + static void setUserInfoValueProviderForDomain_provider_(SentryCocoa _lib, + NSString errorDomain, ObjCBlock_ObjCObject_NSError_NSString provider) { + _lib._objc_msgSend_80( + _lib._class_NSError1, + _lib._sel_setUserInfoValueProviderForDomain_provider_1, + errorDomain._id, + provider._id); + } + + static ObjCBlock_ObjCObject_NSError_NSString userInfoValueProviderForDomain_( + SentryCocoa _lib, + NSError? err, + NSString userInfoKey, + NSString errorDomain) { + final _ret = _lib._objc_msgSend_81( + _lib._class_NSError1, + _lib._sel_userInfoValueProviderForDomain_1, + err?._id ?? ffi.nullptr, + userInfoKey._id, + errorDomain._id); + return ObjCBlock_ObjCObject_NSError_NSString._(_ret, _lib); + } + + @override + NSError init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSError._(_ret, _lib, retain: true, release: true); + } + + static NSError new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSError1, _lib._sel_new1); + return NSError._(_ret, _lib, retain: false, release: true); + } + + static NSError allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSError1, _lib._sel_allocWithZone_1, zone); + return NSError._(_ret, _lib, retain: false, release: true); + } + + static NSError alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSError1, _lib._sel_alloc1); + return NSError._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSError1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSError1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSError1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSError1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSError1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSError1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSError1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSError1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSError1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class _ObjCBlockBase implements ffi.Finalizable { + final ffi.Pointer<_ObjCBlock> _id; + final SentryCocoa _lib; + bool _pendingRelease; + + _ObjCBlockBase._(this._id, this._lib, + {bool retain = false, bool release = false}) + : _pendingRelease = release { + if (retain) { + _lib._Block_copy(_id.cast()); + } + if (release) { + _lib._objc_releaseFinalizer11.attach(this, _id.cast(), detach: this); + } + } + + /// Releases the reference to the underlying ObjC block held by this wrapper. + /// Throws a StateError if this wrapper doesn't currently hold a reference. + void release() { + if (_pendingRelease) { + _pendingRelease = false; + _lib._Block_release(_id.cast()); + _lib._objc_releaseFinalizer11.detach(this); + } else { + throw StateError( + 'Released an ObjC block that was unowned or already released.'); + } + } + + @override + bool operator ==(Object other) { + return other is _ObjCBlockBase && _id == other._id; + } + + @override + int get hashCode => _id.hashCode; + + /// Return a pointer to this object. + ffi.Pointer<_ObjCBlock> get pointer => _id; +} + +ffi.Pointer _ObjCBlock_ObjCObject_NSError_NSString_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_ObjCObject_NSError_NSString_closureRegistry = + {}; +int _ObjCBlock_ObjCObject_NSError_NSString_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ObjCObject_NSError_NSString_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ObjCObject_NSError_NSString_closureRegistryIndex; + _ObjCBlock_ObjCObject_NSError_NSString_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +ffi.Pointer + _ObjCBlock_ObjCObject_NSError_NSString_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_ObjCObject_NSError_NSString_closureRegistry[ + block.ref.target.address] + as ffi.Pointer Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_ObjCObject_NSError_NSString extends _ObjCBlockBase { + ObjCBlock_ObjCObject_NSError_NSString._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ObjCObject_NSError_NSString.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ObjCObject_NSError_NSString_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ObjCObject_NSError_NSString.fromFunction( + SentryCocoa lib, + ffi.Pointer Function( + ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ObjCObject_NSError_NSString_closureTrampoline) + .cast(), + _ObjCBlock_ObjCObject_NSError_NSString_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + ffi.Pointer call( + ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +class _ObjCBlockDesc extends ffi.Struct { + @ffi.UnsignedLong() + external int reserved; + + @ffi.UnsignedLong() + external int size; + + external ffi.Pointer copy_helper; + + external ffi.Pointer dispose_helper; + + external ffi.Pointer signature; +} + +class _ObjCBlock extends ffi.Struct { + external ffi.Pointer isa; + + @ffi.Int() + external int flags; + + @ffi.Int() + external int reserved; + + external ffi.Pointer invoke; + + external ffi.Pointer<_ObjCBlockDesc> descriptor; + + external ffi.Pointer target; +} + +class NSIndexSet extends NSObject { + NSIndexSet._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSIndexSet] that points to the same underlying object as [other]. + static NSIndexSet castFrom(T other) { + return NSIndexSet._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSIndexSet] that wraps the given raw object pointer. + static NSIndexSet castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSIndexSet._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSIndexSet]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSIndexSet1); + } + + static NSIndexSet indexSet(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSIndexSet1, _lib._sel_indexSet1); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + static NSIndexSet indexSetWithIndex_(SentryCocoa _lib, int value) { + final _ret = _lib._objc_msgSend_60( + _lib._class_NSIndexSet1, _lib._sel_indexSetWithIndex_1, value); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + static NSIndexSet indexSetWithIndexesInRange_( + SentryCocoa _lib, _NSRange range) { + final _ret = _lib._objc_msgSend_85( + _lib._class_NSIndexSet1, _lib._sel_indexSetWithIndexesInRange_1, range); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + NSIndexSet initWithIndexesInRange_(_NSRange range) { + final _ret = + _lib._objc_msgSend_85(_id, _lib._sel_initWithIndexesInRange_1, range); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + NSIndexSet initWithIndexSet_(NSIndexSet? indexSet) { + final _ret = _lib._objc_msgSend_86( + _id, _lib._sel_initWithIndexSet_1, indexSet?._id ?? ffi.nullptr); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + NSIndexSet initWithIndex_(int value) { + final _ret = _lib._objc_msgSend_60(_id, _lib._sel_initWithIndex_1, value); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + bool isEqualToIndexSet_(NSIndexSet? indexSet) { + return _lib._objc_msgSend_87( + _id, _lib._sel_isEqualToIndexSet_1, indexSet?._id ?? ffi.nullptr); + } + + int get count { + return _lib._objc_msgSend_10(_id, _lib._sel_count1); + } + + int get firstIndex { + return _lib._objc_msgSend_10(_id, _lib._sel_firstIndex1); + } + + int get lastIndex { + return _lib._objc_msgSend_10(_id, _lib._sel_lastIndex1); + } + + int indexGreaterThanIndex_(int value) { + return _lib._objc_msgSend_88(_id, _lib._sel_indexGreaterThanIndex_1, value); + } + + int indexLessThanIndex_(int value) { + return _lib._objc_msgSend_88(_id, _lib._sel_indexLessThanIndex_1, value); + } + + int indexGreaterThanOrEqualToIndex_(int value) { + return _lib._objc_msgSend_88( + _id, _lib._sel_indexGreaterThanOrEqualToIndex_1, value); + } + + int indexLessThanOrEqualToIndex_(int value) { + return _lib._objc_msgSend_88( + _id, _lib._sel_indexLessThanOrEqualToIndex_1, value); + } + + int getIndexes_maxCount_inIndexRange_( + ffi.Pointer indexBuffer, + int bufferSize, + ffi.Pointer<_NSRange> range) { + return _lib._objc_msgSend_89( + _id, + _lib._sel_getIndexes_maxCount_inIndexRange_1, + indexBuffer, + bufferSize, + range); + } + + int countOfIndexesInRange_(_NSRange range) { + return _lib._objc_msgSend_90(_id, _lib._sel_countOfIndexesInRange_1, range); + } + + bool containsIndex_(int value) { + return _lib._objc_msgSend_91(_id, _lib._sel_containsIndex_1, value); + } + + bool containsIndexesInRange_(_NSRange range) { + return _lib._objc_msgSend_92( + _id, _lib._sel_containsIndexesInRange_1, range); + } + + bool containsIndexes_(NSIndexSet? indexSet) { + return _lib._objc_msgSend_87( + _id, _lib._sel_containsIndexes_1, indexSet?._id ?? ffi.nullptr); + } + + bool intersectsIndexesInRange_(_NSRange range) { + return _lib._objc_msgSend_92( + _id, _lib._sel_intersectsIndexesInRange_1, range); + } + + void enumerateIndexesUsingBlock_( + ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { + _lib._objc_msgSend_93( + _id, _lib._sel_enumerateIndexesUsingBlock_1, block._id); + } + + void enumerateIndexesWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { + _lib._objc_msgSend_94(_id, + _lib._sel_enumerateIndexesWithOptions_usingBlock_1, opts, block._id); + } + + void enumerateIndexesInRange_options_usingBlock_( + _NSRange range, int opts, ObjCBlock_ffiVoid_ffiUnsignedLong_bool block) { + _lib._objc_msgSend_95( + _id, + _lib._sel_enumerateIndexesInRange_options_usingBlock_1, + range, + opts, + block._id); + } + + int indexPassingTest_(ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + return _lib._objc_msgSend_96( + _id, _lib._sel_indexPassingTest_1, predicate._id); + } + + int indexWithOptions_passingTest_( + int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + return _lib._objc_msgSend_97( + _id, _lib._sel_indexWithOptions_passingTest_1, opts, predicate._id); + } + + int indexInRange_options_passingTest_( + _NSRange range, int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + return _lib._objc_msgSend_98( + _id, + _lib._sel_indexInRange_options_passingTest_1, + range, + opts, + predicate._id); + } + + NSIndexSet indexesPassingTest_( + ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + final _ret = _lib._objc_msgSend_99( + _id, _lib._sel_indexesPassingTest_1, predicate._id); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + NSIndexSet indexesWithOptions_passingTest_( + int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + final _ret = _lib._objc_msgSend_100( + _id, _lib._sel_indexesWithOptions_passingTest_1, opts, predicate._id); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + NSIndexSet indexesInRange_options_passingTest_( + _NSRange range, int opts, ObjCBlock_bool_ffiUnsignedLong_bool predicate) { + final _ret = _lib._objc_msgSend_101( + _id, + _lib._sel_indexesInRange_options_passingTest_1, + range, + opts, + predicate._id); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + void enumerateRangesUsingBlock_(ObjCBlock_ffiVoid_NSRange_bool block) { + _lib._objc_msgSend_102( + _id, _lib._sel_enumerateRangesUsingBlock_1, block._id); + } + + void enumerateRangesWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_NSRange_bool block) { + _lib._objc_msgSend_103(_id, + _lib._sel_enumerateRangesWithOptions_usingBlock_1, opts, block._id); + } + + void enumerateRangesInRange_options_usingBlock_( + _NSRange range, int opts, ObjCBlock_ffiVoid_NSRange_bool block) { + _lib._objc_msgSend_104( + _id, + _lib._sel_enumerateRangesInRange_options_usingBlock_1, + range, + opts, + block._id); + } + + @override + NSIndexSet init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + static NSIndexSet new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSIndexSet1, _lib._sel_new1); + return NSIndexSet._(_ret, _lib, retain: false, release: true); + } + + static NSIndexSet allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSIndexSet1, _lib._sel_allocWithZone_1, zone); + return NSIndexSet._(_ret, _lib, retain: false, release: true); + } + + static NSIndexSet alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSIndexSet1, _lib._sel_alloc1); + return NSIndexSet._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSIndexSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSIndexSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSIndexSet1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSIndexSet1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSIndexSet1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSIndexSet1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSIndexSet1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSIndexSet1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSIndexSet1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +void _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() + .asFunction arg1)>()( + arg0, arg1); +} + +final _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) { + return (_ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureRegistry[block + .ref + .target + .address] as void Function(int, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_ffiVoid_ffiUnsignedLong_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ffiUnsignedLong_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_ffiUnsignedLong_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.UnsignedLong arg0, ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.UnsignedLong arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_ffiUnsignedLong_bool.fromFunction( + SentryCocoa lib, void Function(int arg0, ffi.Pointer arg1) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.UnsignedLong arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ffiUnsignedLong_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(int arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, int arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +abstract class NSEnumerationOptions { + static const int NSEnumerationConcurrent = 1; + static const int NSEnumerationReverse = 2; +} + +bool _ObjCBlock_bool_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() + .asFunction arg1)>()( + arg0, arg1); +} + +final _ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistry = {}; +int _ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_bool_ffiUnsignedLong_bool_registerClosure( + Function fn) { + final id = ++_ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistryIndex; + _ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +bool _ObjCBlock_bool_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, int arg0, ffi.Pointer arg1) { + return (_ObjCBlock_bool_ffiUnsignedLong_bool_closureRegistry[block.ref.target + .address] as bool Function(int, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_bool_ffiUnsignedLong_bool extends _ObjCBlockBase { + ObjCBlock_bool_ffiUnsignedLong_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_bool_ffiUnsignedLong_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.UnsignedLong arg0, ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.UnsignedLong arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ffiUnsignedLong_bool_fnPtrTrampoline, + false) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_bool_ffiUnsignedLong_bool.fromFunction( + SentryCocoa lib, bool Function(int arg0, ffi.Pointer arg1) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.UnsignedLong arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ffiUnsignedLong_bool_closureTrampoline, + false) + .cast(), + _ObjCBlock_bool_ffiUnsignedLong_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + bool call(int arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer<_ObjCBlock> block, + ffi.UnsignedLong arg0, ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer<_ObjCBlock> block, int arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +void _ObjCBlock_ffiVoid_NSRange_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, _NSRange arg0, ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(_NSRange arg0, ffi.Pointer arg1)>>() + .asFunction< + void Function( + _NSRange arg0, ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_ffiVoid_NSRange_bool_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSRange_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSRange_bool_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSRange_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSRange_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSRange_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, _NSRange arg0, ffi.Pointer arg1) { + return (_ObjCBlock_ffiVoid_NSRange_bool_closureRegistry[block.ref.target + .address] as void Function(_NSRange, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_ffiVoid_NSRange_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSRange_bool._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSRange_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(_NSRange arg0, ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + _NSRange arg0, ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSRange_bool.fromFunction(SentryCocoa lib, + void Function(_NSRange arg0, ffi.Pointer arg1) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + _NSRange arg0, ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSRange_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSRange_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(_NSRange arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, _NSRange arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, _NSRange arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +void _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer arg0, int arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, int, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call( + ffi.Pointer arg0, int arg1, ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +bool _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>>() + .asFunction< + bool Function(ffi.Pointer arg0, int arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistry = + {}; +int _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistryIndex; + _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +bool _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureRegistry[ + block.ref.target.address] + as bool Function(ffi.Pointer, int, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool extends _ObjCBlockBase { + ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1, ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>( + _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_fnPtrTrampoline, + false) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool.fromFunction( + SentryCocoa lib, + bool Function(ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>( + _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_closureTrampoline, + false) + .cast(), + _ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + bool call( + ffi.Pointer arg0, int arg1, ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1, + ffi.Pointer arg2)>>() + .asFunction< + bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +int _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + int Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistry = + {}; +int _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistryIndex; + _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +int _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureRegistry[ + block.ref.target.address] + as int Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject + extends _ObjCBlockBase { + ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Int32 Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Int32 Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_fnPtrTrampoline, + 0) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject.fromFunction( + SentryCocoa lib, + int Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Int32 Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_closureTrampoline, + 0) + .cast(), + _ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + int call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Int32 Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + int Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +abstract class NSComparisonResult { + static const int NSOrderedAscending = -1; + static const int NSOrderedSame = 0; + static const int NSOrderedDescending = 1; +} + +abstract class NSSortOptions { + static const int NSSortConcurrent = 1; + static const int NSSortStable = 16; +} + +abstract class NSBinarySearchingOptions { + static const int NSBinarySearchingFirstEqual = 256; + static const int NSBinarySearchingLastEqual = 512; + static const int NSBinarySearchingInsertionIndex = 1024; +} + +abstract class NSOrderedCollectionDifferenceCalculationOptions { + static const int NSOrderedCollectionDifferenceCalculationOmitInsertedObjects = + 1; + static const int NSOrderedCollectionDifferenceCalculationOmitRemovedObjects = + 2; + static const int NSOrderedCollectionDifferenceCalculationInferMoves = 4; +} + +bool _ObjCBlock_bool_ObjCObject_ObjCObject_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistry = {}; +int _ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_bool_ObjCObject_ObjCObject_registerClosure( + Function fn) { + final id = ++_ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistryIndex; + _ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +bool _ObjCBlock_bool_ObjCObject_ObjCObject_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_bool_ObjCObject_ObjCObject_closureRegistry[ + block.ref.target.address] + as bool Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_bool_ObjCObject_ObjCObject extends _ObjCBlockBase { + ObjCBlock_bool_ObjCObject_ObjCObject._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_bool_ObjCObject_ObjCObject.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ObjCObject_ObjCObject_fnPtrTrampoline, + false) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_bool_ObjCObject_ObjCObject.fromFunction( + SentryCocoa lib, + bool Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ObjCObject_ObjCObject_closureTrampoline, + false) + .cast(), + _ObjCBlock_bool_ObjCObject_ObjCObject_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + bool call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +abstract class NSKeyValueObservingOptions { + static const int NSKeyValueObservingOptionNew = 1; + static const int NSKeyValueObservingOptionOld = 2; + static const int NSKeyValueObservingOptionInitial = 4; + static const int NSKeyValueObservingOptionPrior = 8; +} + +class NSPredicate extends NSObject { + NSPredicate._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSPredicate] that points to the same underlying object as [other]. + static NSPredicate castFrom(T other) { + return NSPredicate._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSPredicate] that wraps the given raw object pointer. + static NSPredicate castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSPredicate._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSPredicate]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSPredicate1); + } + + static NSPredicate predicateWithFormat_argumentArray_( + SentryCocoa _lib, NSString? predicateFormat, NSArray? arguments) { + final _ret = _lib._objc_msgSend_133( + _lib._class_NSPredicate1, + _lib._sel_predicateWithFormat_argumentArray_1, + predicateFormat?._id ?? ffi.nullptr, + arguments?._id ?? ffi.nullptr); + return NSPredicate._(_ret, _lib, retain: true, release: true); + } + + static NSPredicate predicateWithFormat_( + SentryCocoa _lib, NSString? predicateFormat) { + final _ret = _lib._objc_msgSend_134(_lib._class_NSPredicate1, + _lib._sel_predicateWithFormat_1, predicateFormat?._id ?? ffi.nullptr); + return NSPredicate._(_ret, _lib, retain: true, release: true); + } + + static NSPredicate predicateWithFormat_arguments_(SentryCocoa _lib, + NSString? predicateFormat, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_135( + _lib._class_NSPredicate1, + _lib._sel_predicateWithFormat_arguments_1, + predicateFormat?._id ?? ffi.nullptr, + argList); + return NSPredicate._(_ret, _lib, retain: true, release: true); + } + + static NSPredicate predicateFromMetadataQueryString_( + SentryCocoa _lib, NSString? queryString) { + final _ret = _lib._objc_msgSend_134( + _lib._class_NSPredicate1, + _lib._sel_predicateFromMetadataQueryString_1, + queryString?._id ?? ffi.nullptr); + return NSPredicate._(_ret, _lib, retain: true, release: true); + } + + static NSPredicate predicateWithValue_(SentryCocoa _lib, bool value) { + final _ret = _lib._objc_msgSend_136( + _lib._class_NSPredicate1, _lib._sel_predicateWithValue_1, value); + return NSPredicate._(_ret, _lib, retain: true, release: true); + } + + static NSPredicate predicateWithBlock_( + SentryCocoa _lib, ObjCBlock_bool_ObjCObject_NSDictionary block) { + final _ret = _lib._objc_msgSend_199( + _lib._class_NSPredicate1, _lib._sel_predicateWithBlock_1, block._id); + return NSPredicate._(_ret, _lib, retain: true, release: true); + } + + NSString? get predicateFormat { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_predicateFormat1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSPredicate predicateWithSubstitutionVariables_(NSDictionary? variables) { + final _ret = _lib._objc_msgSend_149( + _id, + _lib._sel_predicateWithSubstitutionVariables_1, + variables?._id ?? ffi.nullptr); + return NSPredicate._(_ret, _lib, retain: true, release: true); + } + + bool evaluateWithObject_(NSObject object) { + return _lib._objc_msgSend_0( + _id, _lib._sel_evaluateWithObject_1, object._id); + } + + bool evaluateWithObject_substitutionVariables_( + NSObject object, NSDictionary? bindings) { + return _lib._objc_msgSend_200( + _id, + _lib._sel_evaluateWithObject_substitutionVariables_1, + object._id, + bindings?._id ?? ffi.nullptr); + } + + void allowEvaluation() { + _lib._objc_msgSend_1(_id, _lib._sel_allowEvaluation1); + } + + @override + NSPredicate init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSPredicate._(_ret, _lib, retain: true, release: true); + } + + static NSPredicate new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSPredicate1, _lib._sel_new1); + return NSPredicate._(_ret, _lib, retain: false, release: true); + } + + static NSPredicate allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSPredicate1, _lib._sel_allocWithZone_1, zone); + return NSPredicate._(_ret, _lib, retain: false, release: true); + } + + static NSPredicate alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSPredicate1, _lib._sel_alloc1); + return NSPredicate._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSPredicate1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSPredicate1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSPredicate1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSPredicate1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSPredicate1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSPredicate1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSPredicate1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSPredicate1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSPredicate1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +bool _ObjCBlock_bool_ObjCObject_NSDictionary_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistry = + {}; +int _ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_bool_ObjCObject_NSDictionary_registerClosure( + Function fn) { + final id = ++_ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistryIndex; + _ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +bool _ObjCBlock_bool_ObjCObject_NSDictionary_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_bool_ObjCObject_NSDictionary_closureRegistry[ + block.ref.target.address] + as bool Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_bool_ObjCObject_NSDictionary extends _ObjCBlockBase { + ObjCBlock_bool_ObjCObject_NSDictionary._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_bool_ObjCObject_NSDictionary.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ObjCObject_NSDictionary_fnPtrTrampoline, + false) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_bool_ObjCObject_NSDictionary.fromFunction( + SentryCocoa lib, + bool Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ObjCObject_NSDictionary_closureTrampoline, + false) + .cast(), + _ObjCBlock_bool_ObjCObject_NSDictionary_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + bool call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +class NSDictionary extends NSObject { + NSDictionary._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSDictionary] that points to the same underlying object as [other]. + static NSDictionary castFrom(T other) { + return NSDictionary._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSDictionary] that wraps the given raw object pointer. + static NSDictionary castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSDictionary._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSDictionary]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSDictionary1); + } + + int get count { + return _lib._objc_msgSend_10(_id, _lib._sel_count1); + } + + NSObject objectForKey_(NSObject aKey) { + final _ret = _lib._objc_msgSend_16(_id, _lib._sel_objectForKey_1, aKey._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSEnumerator keyEnumerator() { + final _ret = _lib._objc_msgSend_72(_id, _lib._sel_keyEnumerator1); + return NSEnumerator._(_ret, _lib, retain: true, release: true); + } + + @override + NSDictionary init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary initWithObjects_forKeys_count_( + ffi.Pointer> objects, + ffi.Pointer> keys, + int cnt) { + final _ret = _lib._objc_msgSend_137( + _id, _lib._sel_initWithObjects_forKeys_count_1, objects, keys, cnt); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSArray? get allKeys { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_allKeys1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray allKeysForObject_(NSObject anObject) { + final _ret = + _lib._objc_msgSend_62(_id, _lib._sel_allKeysForObject_1, anObject._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get allValues { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_allValues1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString? get description { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get descriptionInStringsFileFormat { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_descriptionInStringsFileFormat1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString descriptionWithLocale_(NSObject locale) { + final _ret = _lib._objc_msgSend_65( + _id, _lib._sel_descriptionWithLocale_1, locale._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString descriptionWithLocale_indent_(NSObject locale, int level) { + final _ret = _lib._objc_msgSend_66( + _id, _lib._sel_descriptionWithLocale_indent_1, locale._id, level); + return NSString._(_ret, _lib, retain: true, release: true); + } + + bool isEqualToDictionary_(NSDictionary? otherDictionary) { + return _lib._objc_msgSend_138(_id, _lib._sel_isEqualToDictionary_1, + otherDictionary?._id ?? ffi.nullptr); + } + + NSEnumerator objectEnumerator() { + final _ret = _lib._objc_msgSend_72(_id, _lib._sel_objectEnumerator1); + return NSEnumerator._(_ret, _lib, retain: true, release: true); + } + + NSArray objectsForKeys_notFoundMarker_(NSArray? keys, NSObject marker) { + final _ret = _lib._objc_msgSend_139( + _id, + _lib._sel_objectsForKeys_notFoundMarker_1, + keys?._id ?? ffi.nullptr, + marker._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + bool writeToURL_error_( + NSURL? url, ffi.Pointer> error) { + return _lib._objc_msgSend_83( + _id, _lib._sel_writeToURL_error_1, url?._id ?? ffi.nullptr, error); + } + + NSArray keysSortedByValueUsingSelector_(ffi.Pointer comparator) { + final _ret = _lib._objc_msgSend_75( + _id, _lib._sel_keysSortedByValueUsingSelector_1, comparator); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + void getObjects_andKeys_count_(ffi.Pointer> objects, + ffi.Pointer> keys, int count) { + _lib._objc_msgSend_140( + _id, _lib._sel_getObjects_andKeys_count_1, objects, keys, count); + } + + NSObject objectForKeyedSubscript_(NSObject key) { + final _ret = _lib._objc_msgSend_16( + _id, _lib._sel_objectForKeyedSubscript_1, key._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void enumerateKeysAndObjectsUsingBlock_( + ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool block) { + _lib._objc_msgSend_141( + _id, _lib._sel_enumerateKeysAndObjectsUsingBlock_1, block._id); + } + + void enumerateKeysAndObjectsWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool block) { + _lib._objc_msgSend_142( + _id, + _lib._sel_enumerateKeysAndObjectsWithOptions_usingBlock_1, + opts, + block._id); + } + + NSArray keysSortedByValueUsingComparator_( + ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { + final _ret = _lib._objc_msgSend_115( + _id, _lib._sel_keysSortedByValueUsingComparator_1, cmptr._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray keysSortedByValueWithOptions_usingComparator_( + int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { + final _ret = _lib._objc_msgSend_116( + _id, + _lib._sel_keysSortedByValueWithOptions_usingComparator_1, + opts, + cmptr._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSObject keysOfEntriesPassingTest_( + ObjCBlock_bool_ObjCObject_ObjCObject_bool predicate) { + final _ret = _lib._objc_msgSend_143( + _id, _lib._sel_keysOfEntriesPassingTest_1, predicate._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject keysOfEntriesWithOptions_passingTest_( + int opts, ObjCBlock_bool_ObjCObject_ObjCObject_bool predicate) { + final _ret = _lib._objc_msgSend_144(_id, + _lib._sel_keysOfEntriesWithOptions_passingTest_1, opts, predicate._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void getObjects_andKeys_(ffi.Pointer> objects, + ffi.Pointer> keys) { + _lib._objc_msgSend_145(_id, _lib._sel_getObjects_andKeys_1, objects, keys); + } + + static NSDictionary dictionaryWithContentsOfFile_( + SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_146(_lib._class_NSDictionary1, + _lib._sel_dictionaryWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary dictionaryWithContentsOfURL_( + SentryCocoa _lib, NSURL? url) { + final _ret = _lib._objc_msgSend_147(_lib._class_NSDictionary1, + _lib._sel_dictionaryWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary initWithContentsOfFile_(NSString? path) { + final _ret = _lib._objc_msgSend_146( + _id, _lib._sel_initWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary initWithContentsOfURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_147( + _id, _lib._sel_initWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + bool writeToFile_atomically_(NSString? path, bool useAuxiliaryFile) { + return _lib._objc_msgSend_25(_id, _lib._sel_writeToFile_atomically_1, + path?._id ?? ffi.nullptr, useAuxiliaryFile); + } + + bool writeToURL_atomically_(NSURL? url, bool atomically) { + return _lib._objc_msgSend_125(_id, _lib._sel_writeToURL_atomically_1, + url?._id ?? ffi.nullptr, atomically); + } + + static NSDictionary dictionary(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSDictionary1, _lib._sel_dictionary1); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary dictionaryWithObject_forKey_( + SentryCocoa _lib, NSObject object, NSObject? key) { + final _ret = _lib._objc_msgSend_148( + _lib._class_NSDictionary1, + _lib._sel_dictionaryWithObject_forKey_1, + object._id, + key?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary dictionaryWithObjects_forKeys_count_( + SentryCocoa _lib, + ffi.Pointer> objects, + ffi.Pointer> keys, + int cnt) { + final _ret = _lib._objc_msgSend_137(_lib._class_NSDictionary1, + _lib._sel_dictionaryWithObjects_forKeys_count_1, objects, keys, cnt); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary dictionaryWithObjectsAndKeys_( + SentryCocoa _lib, NSObject firstObject) { + final _ret = _lib._objc_msgSend_16(_lib._class_NSDictionary1, + _lib._sel_dictionaryWithObjectsAndKeys_1, firstObject._id); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary dictionaryWithDictionary_( + SentryCocoa _lib, NSDictionary? dict) { + final _ret = _lib._objc_msgSend_149(_lib._class_NSDictionary1, + _lib._sel_dictionaryWithDictionary_1, dict?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary dictionaryWithObjects_forKeys_( + SentryCocoa _lib, NSArray? objects, NSArray? keys) { + final _ret = _lib._objc_msgSend_150( + _lib._class_NSDictionary1, + _lib._sel_dictionaryWithObjects_forKeys_1, + objects?._id ?? ffi.nullptr, + keys?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary initWithObjectsAndKeys_(NSObject firstObject) { + final _ret = _lib._objc_msgSend_16( + _id, _lib._sel_initWithObjectsAndKeys_1, firstObject._id); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary initWithDictionary_(NSDictionary? otherDictionary) { + final _ret = _lib._objc_msgSend_149(_id, _lib._sel_initWithDictionary_1, + otherDictionary?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary initWithDictionary_copyItems_( + NSDictionary? otherDictionary, bool flag) { + final _ret = _lib._objc_msgSend_151( + _id, + _lib._sel_initWithDictionary_copyItems_1, + otherDictionary?._id ?? ffi.nullptr, + flag); + return NSDictionary._(_ret, _lib, retain: false, release: true); + } + + NSDictionary initWithObjects_forKeys_(NSArray? objects, NSArray? keys) { + final _ret = _lib._objc_msgSend_150( + _id, + _lib._sel_initWithObjects_forKeys_1, + objects?._id ?? ffi.nullptr, + keys?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary initWithContentsOfURL_error_( + NSURL? url, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_152( + _id, + _lib._sel_initWithContentsOfURL_error_1, + url?._id ?? ffi.nullptr, + error); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary dictionaryWithContentsOfURL_error_(SentryCocoa _lib, + NSURL? url, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_152( + _lib._class_NSDictionary1, + _lib._sel_dictionaryWithContentsOfURL_error_1, + url?._id ?? ffi.nullptr, + error); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSObject sharedKeySetForKeys_(SentryCocoa _lib, NSArray? keys) { + final _ret = _lib._objc_msgSend_67(_lib._class_NSDictionary1, + _lib._sel_sharedKeySetForKeys_1, keys?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + int countByEnumeratingWithState_objects_count_( + ffi.Pointer state, + ffi.Pointer> buffer, + int len) { + return _lib._objc_msgSend_153( + _id, + _lib._sel_countByEnumeratingWithState_objects_count_1, + state, + buffer, + len); + } + + int fileSize() { + return _lib._objc_msgSend_154(_id, _lib._sel_fileSize1); + } + + NSDate fileModificationDate() { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_fileModificationDate1); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSString fileType() { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_fileType1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + int filePosixPermissions() { + return _lib._objc_msgSend_10(_id, _lib._sel_filePosixPermissions1); + } + + NSString fileOwnerAccountName() { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_fileOwnerAccountName1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString fileGroupOwnerAccountName() { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_fileGroupOwnerAccountName1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + int fileSystemNumber() { + return _lib._objc_msgSend_78(_id, _lib._sel_fileSystemNumber1); + } + + int fileSystemFileNumber() { + return _lib._objc_msgSend_10(_id, _lib._sel_fileSystemFileNumber1); + } + + bool fileExtensionHidden() { + return _lib._objc_msgSend_12(_id, _lib._sel_fileExtensionHidden1); + } + + int fileHFSCreatorCode() { + return _lib._objc_msgSend_197(_id, _lib._sel_fileHFSCreatorCode1); + } + + int fileHFSTypeCode() { + return _lib._objc_msgSend_197(_id, _lib._sel_fileHFSTypeCode1); + } + + bool fileIsImmutable() { + return _lib._objc_msgSend_12(_id, _lib._sel_fileIsImmutable1); + } + + bool fileIsAppendOnly() { + return _lib._objc_msgSend_12(_id, _lib._sel_fileIsAppendOnly1); + } + + NSDate fileCreationDate() { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_fileCreationDate1); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSNumber fileOwnerAccountID() { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_fileOwnerAccountID1); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + NSNumber fileGroupOwnerAccountID() { + final _ret = + _lib._objc_msgSend_198(_id, _lib._sel_fileGroupOwnerAccountID1); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + @override + NSObject valueForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_valueForKey_1, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSDictionary1, _lib._sel_new1); + return NSDictionary._(_ret, _lib, retain: false, release: true); + } + + static NSDictionary allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSDictionary1, _lib._sel_allocWithZone_1, zone); + return NSDictionary._(_ret, _lib, retain: false, release: true); + } + + static NSDictionary alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSDictionary1, _lib._sel_alloc1); + return NSDictionary._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSDictionary1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSDictionary1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSDictionary1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSDictionary1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSDictionary1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSDictionary1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSDictionary1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSDictionary1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSDictionary1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +void _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1, ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_registerClosure(Function fn) { + final id = + ++_ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ObjCObject_ObjCObject_bool_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +bool _ObjCBlock_bool_ObjCObject_ObjCObject_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1, ffi.Pointer arg2)>>() + .asFunction< + bool Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistry = + {}; +int _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_bool_ObjCObject_ObjCObject_bool_registerClosure(Function fn) { + final id = ++_ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistryIndex; + _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +bool _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureRegistry[ + block.ref.target.address] + as bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_bool_ObjCObject_ObjCObject_bool extends _ObjCBlockBase { + ObjCBlock_bool_ObjCObject_ObjCObject_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_bool_ObjCObject_ObjCObject_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_bool_ObjCObject_ObjCObject_bool_fnPtrTrampoline, + false) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_bool_ObjCObject_ObjCObject_bool.fromFunction( + SentryCocoa lib, + bool Function(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_bool_ObjCObject_ObjCObject_bool_closureTrampoline, + false) + .cast(), + _ObjCBlock_bool_ObjCObject_ObjCObject_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + bool call(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +class NSFastEnumerationState extends ffi.Struct { + @ffi.UnsignedLong() + external int state; + + external ffi.Pointer> itemsPtr; + + external ffi.Pointer mutationsPtr; + + @ffi.Array.multi([5]) + external ffi.Array extra; +} + +class NSDate extends NSObject { + NSDate._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSDate] that points to the same underlying object as [other]. + static NSDate castFrom(T other) { + return NSDate._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSDate] that wraps the given raw object pointer. + static NSDate castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSDate._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSDate]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSDate1); + } + + double get timeIntervalSinceReferenceDate { + return _lib._objc_msgSend_155( + _id, _lib._sel_timeIntervalSinceReferenceDate1); + } + + @override + NSDate init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate initWithTimeIntervalSinceReferenceDate_(double ti) { + final _ret = _lib._objc_msgSend_156( + _id, _lib._sel_initWithTimeIntervalSinceReferenceDate_1, ti); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + double timeIntervalSinceDate_(NSDate? anotherDate) { + return _lib._objc_msgSend_157(_id, _lib._sel_timeIntervalSinceDate_1, + anotherDate?._id ?? ffi.nullptr); + } + + double get timeIntervalSinceNow { + return _lib._objc_msgSend_155(_id, _lib._sel_timeIntervalSinceNow1); + } + + double get timeIntervalSince1970 { + return _lib._objc_msgSend_155(_id, _lib._sel_timeIntervalSince19701); + } + + NSObject addTimeInterval_(double seconds) { + final _ret = + _lib._objc_msgSend_156(_id, _lib._sel_addTimeInterval_1, seconds); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSDate dateByAddingTimeInterval_(double ti) { + final _ret = + _lib._objc_msgSend_156(_id, _lib._sel_dateByAddingTimeInterval_1, ti); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate earlierDate_(NSDate? anotherDate) { + final _ret = _lib._objc_msgSend_158( + _id, _lib._sel_earlierDate_1, anotherDate?._id ?? ffi.nullptr); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate laterDate_(NSDate? anotherDate) { + final _ret = _lib._objc_msgSend_158( + _id, _lib._sel_laterDate_1, anotherDate?._id ?? ffi.nullptr); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + int compare_(NSDate? other) { + return _lib._objc_msgSend_159( + _id, _lib._sel_compare_1, other?._id ?? ffi.nullptr); + } + + bool isEqualToDate_(NSDate? otherDate) { + return _lib._objc_msgSend_160( + _id, _lib._sel_isEqualToDate_1, otherDate?._id ?? ffi.nullptr); + } + + NSString? get description { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString descriptionWithLocale_(NSObject locale) { + final _ret = _lib._objc_msgSend_65( + _id, _lib._sel_descriptionWithLocale_1, locale._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSDate date(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSDate1, _lib._sel_date1); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + static NSDate dateWithTimeIntervalSinceNow_(SentryCocoa _lib, double secs) { + final _ret = _lib._objc_msgSend_156( + _lib._class_NSDate1, _lib._sel_dateWithTimeIntervalSinceNow_1, secs); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + static NSDate dateWithTimeIntervalSinceReferenceDate_( + SentryCocoa _lib, double ti) { + final _ret = _lib._objc_msgSend_156(_lib._class_NSDate1, + _lib._sel_dateWithTimeIntervalSinceReferenceDate_1, ti); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + static NSDate dateWithTimeIntervalSince1970_(SentryCocoa _lib, double secs) { + final _ret = _lib._objc_msgSend_156( + _lib._class_NSDate1, _lib._sel_dateWithTimeIntervalSince1970_1, secs); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + static NSDate dateWithTimeInterval_sinceDate_( + SentryCocoa _lib, double secsToBeAdded, NSDate? date) { + final _ret = _lib._objc_msgSend_161( + _lib._class_NSDate1, + _lib._sel_dateWithTimeInterval_sinceDate_1, + secsToBeAdded, + date?._id ?? ffi.nullptr); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + static NSDate? getDistantFuture(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_162(_lib._class_NSDate1, _lib._sel_distantFuture1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + static NSDate? getDistantPast(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_162(_lib._class_NSDate1, _lib._sel_distantPast1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + static NSDate? getNow(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_162(_lib._class_NSDate1, _lib._sel_now1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate initWithTimeIntervalSinceNow_(double secs) { + final _ret = _lib._objc_msgSend_156( + _id, _lib._sel_initWithTimeIntervalSinceNow_1, secs); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate initWithTimeIntervalSince1970_(double secs) { + final _ret = _lib._objc_msgSend_156( + _id, _lib._sel_initWithTimeIntervalSince1970_1, secs); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate initWithTimeInterval_sinceDate_(double secsToBeAdded, NSDate? date) { + final _ret = _lib._objc_msgSend_161( + _id, + _lib._sel_initWithTimeInterval_sinceDate_1, + secsToBeAdded, + date?._id ?? ffi.nullptr); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + static NSObject dateWithNaturalLanguageString_locale_( + SentryCocoa _lib, NSString? string, NSObject locale) { + final _ret = _lib._objc_msgSend_163( + _lib._class_NSDate1, + _lib._sel_dateWithNaturalLanguageString_locale_1, + string?._id ?? ffi.nullptr, + locale._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject dateWithNaturalLanguageString_( + SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSDate1, + _lib._sel_dateWithNaturalLanguageString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject dateWithString_(SentryCocoa _lib, NSString? aString) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSDate1, + _lib._sel_dateWithString_1, aString?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSCalendarDate dateWithCalendarFormat_timeZone_( + NSString? format, NSTimeZone? aTimeZone) { + final _ret = _lib._objc_msgSend_195( + _id, + _lib._sel_dateWithCalendarFormat_timeZone_1, + format?._id ?? ffi.nullptr, + aTimeZone?._id ?? ffi.nullptr); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + NSString descriptionWithCalendarFormat_timeZone_locale_( + NSString? format, NSTimeZone? aTimeZone, NSObject locale) { + final _ret = _lib._objc_msgSend_196( + _id, + _lib._sel_descriptionWithCalendarFormat_timeZone_locale_1, + format?._id ?? ffi.nullptr, + aTimeZone?._id ?? ffi.nullptr, + locale._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithString_(NSString? description) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithString_1, description?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSDate new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSDate1, _lib._sel_new1); + return NSDate._(_ret, _lib, retain: false, release: true); + } + + static NSDate allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSDate1, _lib._sel_allocWithZone_1, zone); + return NSDate._(_ret, _lib, retain: false, release: true); + } + + static NSDate alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSDate1, _lib._sel_alloc1); + return NSDate._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSDate1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSDate1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSDate1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSDate1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSDate1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSDate1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSDate1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSDate1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSDate1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSCalendarDate extends NSDate { + NSCalendarDate._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSCalendarDate] that points to the same underlying object as [other]. + static NSCalendarDate castFrom(T other) { + return NSCalendarDate._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSCalendarDate] that wraps the given raw object pointer. + static NSCalendarDate castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSCalendarDate._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSCalendarDate]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSCalendarDate1); + } + + static NSObject calendarDate(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSCalendarDate1, _lib._sel_calendarDate1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject dateWithString_calendarFormat_locale_(SentryCocoa _lib, + NSString? description, NSString? format, NSObject locale) { + final _ret = _lib._objc_msgSend_164( + _lib._class_NSCalendarDate1, + _lib._sel_dateWithString_calendarFormat_locale_1, + description?._id ?? ffi.nullptr, + format?._id ?? ffi.nullptr, + locale._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject dateWithString_calendarFormat_( + SentryCocoa _lib, NSString? description, NSString? format) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSCalendarDate1, + _lib._sel_dateWithString_calendarFormat_1, + description?._id ?? ffi.nullptr, + format?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject dateWithYear_month_day_hour_minute_second_timeZone_( + SentryCocoa _lib, + int year, + int month, + int day, + int hour, + int minute, + int second, + NSTimeZone? aTimeZone) { + final _ret = _lib._objc_msgSend_190( + _lib._class_NSCalendarDate1, + _lib._sel_dateWithYear_month_day_hour_minute_second_timeZone_1, + year, + month, + day, + hour, + minute, + second, + aTimeZone?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSCalendarDate dateByAddingYears_months_days_hours_minutes_seconds_( + int year, int month, int day, int hour, int minute, int second) { + final _ret = _lib._objc_msgSend_191( + _id, + _lib._sel_dateByAddingYears_months_days_hours_minutes_seconds_1, + year, + month, + day, + hour, + minute, + second); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + int dayOfCommonEra() { + return _lib._objc_msgSend_78(_id, _lib._sel_dayOfCommonEra1); + } + + int dayOfMonth() { + return _lib._objc_msgSend_78(_id, _lib._sel_dayOfMonth1); + } + + int dayOfWeek() { + return _lib._objc_msgSend_78(_id, _lib._sel_dayOfWeek1); + } + + int dayOfYear() { + return _lib._objc_msgSend_78(_id, _lib._sel_dayOfYear1); + } + + int hourOfDay() { + return _lib._objc_msgSend_78(_id, _lib._sel_hourOfDay1); + } + + int minuteOfHour() { + return _lib._objc_msgSend_78(_id, _lib._sel_minuteOfHour1); + } + + int monthOfYear() { + return _lib._objc_msgSend_78(_id, _lib._sel_monthOfYear1); + } + + int secondOfMinute() { + return _lib._objc_msgSend_78(_id, _lib._sel_secondOfMinute1); + } + + int yearOfCommonEra() { + return _lib._objc_msgSend_78(_id, _lib._sel_yearOfCommonEra1); + } + + NSString calendarFormat() { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_calendarFormat1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString descriptionWithCalendarFormat_locale_( + NSString? format, NSObject locale) { + final _ret = _lib._objc_msgSend_173( + _id, + _lib._sel_descriptionWithCalendarFormat_locale_1, + format?._id ?? ffi.nullptr, + locale._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString descriptionWithCalendarFormat_(NSString? format) { + final _ret = _lib._objc_msgSend_64(_id, + _lib._sel_descriptionWithCalendarFormat_1, format?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + @override + NSString descriptionWithLocale_(NSObject locale) { + final _ret = _lib._objc_msgSend_65( + _id, _lib._sel_descriptionWithLocale_1, locale._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSTimeZone timeZone() { + final _ret = _lib._objc_msgSend_168(_id, _lib._sel_timeZone1); + return NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithString_calendarFormat_locale_( + NSString? description, NSString? format, NSObject locale) { + final _ret = _lib._objc_msgSend_164( + _id, + _lib._sel_initWithString_calendarFormat_locale_1, + description?._id ?? ffi.nullptr, + format?._id ?? ffi.nullptr, + locale._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithString_calendarFormat_( + NSString? description, NSString? format) { + final _ret = _lib._objc_msgSend_165( + _id, + _lib._sel_initWithString_calendarFormat_1, + description?._id ?? ffi.nullptr, + format?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + @override + NSObject initWithString_(NSString? description) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithString_1, description?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithYear_month_day_hour_minute_second_timeZone_( + int year, + int month, + int day, + int hour, + int minute, + int second, + NSTimeZone? aTimeZone) { + final _ret = _lib._objc_msgSend_190( + _id, + _lib._sel_initWithYear_month_day_hour_minute_second_timeZone_1, + year, + month, + day, + hour, + minute, + second, + aTimeZone?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void setCalendarFormat_(NSString? format) { + _lib._objc_msgSend_192( + _id, _lib._sel_setCalendarFormat_1, format?._id ?? ffi.nullptr); + } + + void setTimeZone_(NSTimeZone? aTimeZone) { + _lib._objc_msgSend_193( + _id, _lib._sel_setTimeZone_1, aTimeZone?._id ?? ffi.nullptr); + } + + void years_months_days_hours_minutes_seconds_sinceDate_( + ffi.Pointer yp, + ffi.Pointer mop, + ffi.Pointer dp, + ffi.Pointer hp, + ffi.Pointer mip, + ffi.Pointer sp, + NSCalendarDate? date) { + _lib._objc_msgSend_194( + _id, + _lib._sel_years_months_days_hours_minutes_seconds_sinceDate_1, + yp, + mop, + dp, + hp, + mip, + sp, + date?._id ?? ffi.nullptr); + } + + static NSDate? getDistantFuture(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_162( + _lib._class_NSCalendarDate1, _lib._sel_distantFuture1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + static NSDate? getDistantPast(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_162( + _lib._class_NSCalendarDate1, _lib._sel_distantPast1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + @override + NSCalendarDate init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + @override + NSCalendarDate initWithTimeIntervalSinceReferenceDate_(double ti) { + final _ret = _lib._objc_msgSend_156( + _id, _lib._sel_initWithTimeIntervalSinceReferenceDate_1, ti); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + @override + NSCalendarDate initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + @override + NSCalendarDate dateByAddingTimeInterval_(double ti) { + final _ret = + _lib._objc_msgSend_156(_id, _lib._sel_dateByAddingTimeInterval_1, ti); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + static NSCalendarDate date(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSCalendarDate1, _lib._sel_date1); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + static NSCalendarDate dateWithTimeIntervalSinceNow_( + SentryCocoa _lib, double secs) { + final _ret = _lib._objc_msgSend_156(_lib._class_NSCalendarDate1, + _lib._sel_dateWithTimeIntervalSinceNow_1, secs); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + static NSCalendarDate dateWithTimeIntervalSinceReferenceDate_( + SentryCocoa _lib, double ti) { + final _ret = _lib._objc_msgSend_156(_lib._class_NSCalendarDate1, + _lib._sel_dateWithTimeIntervalSinceReferenceDate_1, ti); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + static NSCalendarDate dateWithTimeIntervalSince1970_( + SentryCocoa _lib, double secs) { + final _ret = _lib._objc_msgSend_156(_lib._class_NSCalendarDate1, + _lib._sel_dateWithTimeIntervalSince1970_1, secs); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + static NSCalendarDate dateWithTimeInterval_sinceDate_( + SentryCocoa _lib, double secsToBeAdded, NSDate? date) { + final _ret = _lib._objc_msgSend_161( + _lib._class_NSCalendarDate1, + _lib._sel_dateWithTimeInterval_sinceDate_1, + secsToBeAdded, + date?._id ?? ffi.nullptr); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + static NSDate? getNow(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_162(_lib._class_NSCalendarDate1, _lib._sel_now1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + @override + NSCalendarDate initWithTimeIntervalSinceNow_(double secs) { + final _ret = _lib._objc_msgSend_156( + _id, _lib._sel_initWithTimeIntervalSinceNow_1, secs); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + @override + NSCalendarDate initWithTimeIntervalSince1970_(double secs) { + final _ret = _lib._objc_msgSend_156( + _id, _lib._sel_initWithTimeIntervalSince1970_1, secs); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + @override + NSCalendarDate initWithTimeInterval_sinceDate_( + double secsToBeAdded, NSDate? date) { + final _ret = _lib._objc_msgSend_161( + _id, + _lib._sel_initWithTimeInterval_sinceDate_1, + secsToBeAdded, + date?._id ?? ffi.nullptr); + return NSCalendarDate._(_ret, _lib, retain: true, release: true); + } + + static NSObject dateWithNaturalLanguageString_locale_( + SentryCocoa _lib, NSString? string, NSObject locale) { + final _ret = _lib._objc_msgSend_163( + _lib._class_NSCalendarDate1, + _lib._sel_dateWithNaturalLanguageString_locale_1, + string?._id ?? ffi.nullptr, + locale._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject dateWithNaturalLanguageString_( + SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSCalendarDate1, + _lib._sel_dateWithNaturalLanguageString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject dateWithString_(SentryCocoa _lib, NSString? aString) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSCalendarDate1, + _lib._sel_dateWithString_1, aString?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSCalendarDate new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSCalendarDate1, _lib._sel_new1); + return NSCalendarDate._(_ret, _lib, retain: false, release: true); + } + + static NSCalendarDate allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSCalendarDate1, _lib._sel_allocWithZone_1, zone); + return NSCalendarDate._(_ret, _lib, retain: false, release: true); + } + + static NSCalendarDate alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSCalendarDate1, _lib._sel_alloc1); + return NSCalendarDate._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSCalendarDate1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSCalendarDate1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSCalendarDate1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSCalendarDate1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSCalendarDate1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSCalendarDate1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSCalendarDate1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSCalendarDate1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSCalendarDate1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSTimeZone extends NSObject { + NSTimeZone._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSTimeZone] that points to the same underlying object as [other]. + static NSTimeZone castFrom(T other) { + return NSTimeZone._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSTimeZone] that wraps the given raw object pointer. + static NSTimeZone castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSTimeZone._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSTimeZone]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSTimeZone1); + } + + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSData? get data { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_data1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + int secondsFromGMTForDate_(NSDate? aDate) { + return _lib._objc_msgSend_166( + _id, _lib._sel_secondsFromGMTForDate_1, aDate?._id ?? ffi.nullptr); + } + + NSString abbreviationForDate_(NSDate? aDate) { + final _ret = _lib._objc_msgSend_167( + _id, _lib._sel_abbreviationForDate_1, aDate?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + bool isDaylightSavingTimeForDate_(NSDate? aDate) { + return _lib._objc_msgSend_160(_id, _lib._sel_isDaylightSavingTimeForDate_1, + aDate?._id ?? ffi.nullptr); + } + + double daylightSavingTimeOffsetForDate_(NSDate? aDate) { + return _lib._objc_msgSend_157(_id, + _lib._sel_daylightSavingTimeOffsetForDate_1, aDate?._id ?? ffi.nullptr); + } + + NSDate nextDaylightSavingTimeTransitionAfterDate_(NSDate? aDate) { + final _ret = _lib._objc_msgSend_158( + _id, + _lib._sel_nextDaylightSavingTimeTransitionAfterDate_1, + aDate?._id ?? ffi.nullptr); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + static NSTimeZone? getSystemTimeZone(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_168( + _lib._class_NSTimeZone1, _lib._sel_systemTimeZone1); + return _ret.address == 0 + ? null + : NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + static void resetSystemTimeZone(SentryCocoa _lib) { + _lib._objc_msgSend_1( + _lib._class_NSTimeZone1, _lib._sel_resetSystemTimeZone1); + } + + static NSTimeZone? getDefaultTimeZone(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_168( + _lib._class_NSTimeZone1, _lib._sel_defaultTimeZone1); + return _ret.address == 0 + ? null + : NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + static void setDefaultTimeZone(SentryCocoa _lib, NSTimeZone? value) { + return _lib._objc_msgSend_169(_lib._class_NSTimeZone1, + _lib._sel_setDefaultTimeZone_1, value?._id ?? ffi.nullptr); + } + + static NSTimeZone? getLocalTimeZone(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_168( + _lib._class_NSTimeZone1, _lib._sel_localTimeZone1); + return _ret.address == 0 + ? null + : NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + static NSArray? getKnownTimeZoneNames(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSTimeZone1, _lib._sel_knownTimeZoneNames1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary? getAbbreviationDictionary(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_170( + _lib._class_NSTimeZone1, _lib._sel_abbreviationDictionary1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static void setAbbreviationDictionary(SentryCocoa _lib, NSDictionary? value) { + return _lib._objc_msgSend_171(_lib._class_NSTimeZone1, + _lib._sel_setAbbreviationDictionary_1, value?._id ?? ffi.nullptr); + } + + static NSString? getTimeZoneDataVersion(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_20( + _lib._class_NSTimeZone1, _lib._sel_timeZoneDataVersion1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get secondsFromGMT { + return _lib._objc_msgSend_78(_id, _lib._sel_secondsFromGMT1); + } + + NSString? get abbreviation { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_abbreviation1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + bool get daylightSavingTime { + return _lib._objc_msgSend_12(_id, _lib._sel_isDaylightSavingTime1); + } + + double get daylightSavingTimeOffset { + return _lib._objc_msgSend_155(_id, _lib._sel_daylightSavingTimeOffset1); + } + + NSDate? get nextDaylightSavingTimeTransition { + final _ret = _lib._objc_msgSend_162( + _id, _lib._sel_nextDaylightSavingTimeTransition1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + NSString? get description { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + bool isEqualToTimeZone_(NSTimeZone? aTimeZone) { + return _lib._objc_msgSend_172( + _id, _lib._sel_isEqualToTimeZone_1, aTimeZone?._id ?? ffi.nullptr); + } + + NSString localizedName_locale_(int style, NSLocale? locale) { + final _ret = _lib._objc_msgSend_187(_id, _lib._sel_localizedName_locale_1, + style, locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSTimeZone timeZoneWithName_(SentryCocoa _lib, NSString? tzName) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSTimeZone1, + _lib._sel_timeZoneWithName_1, tzName?._id ?? ffi.nullptr); + return NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + static NSTimeZone timeZoneWithName_data_( + SentryCocoa _lib, NSString? tzName, NSData? aData) { + final _ret = _lib._objc_msgSend_188( + _lib._class_NSTimeZone1, + _lib._sel_timeZoneWithName_data_1, + tzName?._id ?? ffi.nullptr, + aData?._id ?? ffi.nullptr); + return NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + NSTimeZone initWithName_(NSString? tzName) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithName_1, tzName?._id ?? ffi.nullptr); + return NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + NSTimeZone initWithName_data_(NSString? tzName, NSData? aData) { + final _ret = _lib._objc_msgSend_188(_id, _lib._sel_initWithName_data_1, + tzName?._id ?? ffi.nullptr, aData?._id ?? ffi.nullptr); + return NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + static NSTimeZone timeZoneForSecondsFromGMT_(SentryCocoa _lib, int seconds) { + final _ret = _lib._objc_msgSend_189(_lib._class_NSTimeZone1, + _lib._sel_timeZoneForSecondsFromGMT_1, seconds); + return NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + static NSTimeZone timeZoneWithAbbreviation_( + SentryCocoa _lib, NSString? abbreviation) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSTimeZone1, + _lib._sel_timeZoneWithAbbreviation_1, abbreviation?._id ?? ffi.nullptr); + return NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + @override + NSTimeZone init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + static NSTimeZone new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSTimeZone1, _lib._sel_new1); + return NSTimeZone._(_ret, _lib, retain: false, release: true); + } + + static NSTimeZone allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSTimeZone1, _lib._sel_allocWithZone_1, zone); + return NSTimeZone._(_ret, _lib, retain: false, release: true); + } + + static NSTimeZone alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSTimeZone1, _lib._sel_alloc1); + return NSTimeZone._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSTimeZone1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSTimeZone1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSTimeZone1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSTimeZone1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSTimeZone1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSTimeZone1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSTimeZone1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSTimeZone1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSTimeZone1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSTimeZoneNameStyle { + static const int NSTimeZoneNameStyleStandard = 0; + static const int NSTimeZoneNameStyleShortStandard = 1; + static const int NSTimeZoneNameStyleDaylightSaving = 2; + static const int NSTimeZoneNameStyleShortDaylightSaving = 3; + static const int NSTimeZoneNameStyleGeneric = 4; + static const int NSTimeZoneNameStyleShortGeneric = 5; +} + +class NSLocale extends NSObject { + NSLocale._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSLocale] that points to the same underlying object as [other]. + static NSLocale castFrom(T other) { + return NSLocale._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSLocale] that wraps the given raw object pointer. + static NSLocale castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSLocale._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSLocale]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSLocale1); + } + + NSObject objectForKey_(NSString key) { + final _ret = _lib._objc_msgSend_30(_id, _lib._sel_objectForKey_1, key._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSString displayNameForKey_value_(NSString key, NSObject value) { + final _ret = _lib._objc_msgSend_173( + _id, _lib._sel_displayNameForKey_value_1, key._id, value._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSLocale initWithLocaleIdentifier_(NSString? string) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithLocaleIdentifier_1, string?._id ?? ffi.nullptr); + return NSLocale._(_ret, _lib, retain: true, release: true); + } + + NSLocale initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSLocale._(_ret, _lib, retain: true, release: true); + } + + NSString? get localeIdentifier { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localeIdentifier1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString localizedStringForLocaleIdentifier_(NSString? localeIdentifier) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_localizedStringForLocaleIdentifier_1, + localeIdentifier?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get languageCode { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_languageCode1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString localizedStringForLanguageCode_(NSString? languageCode) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_localizedStringForLanguageCode_1, + languageCode?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get countryCode { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_countryCode1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString localizedStringForCountryCode_(NSString? countryCode) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_localizedStringForCountryCode_1, + countryCode?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get scriptCode { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_scriptCode1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString localizedStringForScriptCode_(NSString? scriptCode) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_localizedStringForScriptCode_1, + scriptCode?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get variantCode { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_variantCode1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString localizedStringForVariantCode_(NSString? variantCode) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_localizedStringForVariantCode_1, + variantCode?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSCharacterSet? get exemplarCharacterSet { + final _ret = _lib._objc_msgSend_174(_id, _lib._sel_exemplarCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + NSString? get calendarIdentifier { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_calendarIdentifier1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString localizedStringForCalendarIdentifier_(NSString? calendarIdentifier) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_localizedStringForCalendarIdentifier_1, + calendarIdentifier?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get collationIdentifier { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_collationIdentifier1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString localizedStringForCollationIdentifier_( + NSString? collationIdentifier) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_localizedStringForCollationIdentifier_1, + collationIdentifier?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + bool get usesMetricSystem { + return _lib._objc_msgSend_12(_id, _lib._sel_usesMetricSystem1); + } + + NSString? get decimalSeparator { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_decimalSeparator1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get groupingSeparator { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_groupingSeparator1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get currencySymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_currencySymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get currencyCode { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_currencyCode1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString localizedStringForCurrencyCode_(NSString? currencyCode) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_localizedStringForCurrencyCode_1, + currencyCode?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get collatorIdentifier { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_collatorIdentifier1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString localizedStringForCollatorIdentifier_(NSString? collatorIdentifier) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_localizedStringForCollatorIdentifier_1, + collatorIdentifier?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get quotationBeginDelimiter { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_quotationBeginDelimiter1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get quotationEndDelimiter { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_quotationEndDelimiter1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get alternateQuotationBeginDelimiter { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_alternateQuotationBeginDelimiter1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get alternateQuotationEndDelimiter { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_alternateQuotationEndDelimiter1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSLocale? getAutoupdatingCurrentLocale(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_182( + _lib._class_NSLocale1, _lib._sel_autoupdatingCurrentLocale1); + return _ret.address == 0 + ? null + : NSLocale._(_ret, _lib, retain: true, release: true); + } + + static NSLocale? getCurrentLocale(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_182(_lib._class_NSLocale1, _lib._sel_currentLocale1); + return _ret.address == 0 + ? null + : NSLocale._(_ret, _lib, retain: true, release: true); + } + + static NSLocale? getSystemLocale(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_182(_lib._class_NSLocale1, _lib._sel_systemLocale1); + return _ret.address == 0 + ? null + : NSLocale._(_ret, _lib, retain: true, release: true); + } + + static NSLocale localeWithLocaleIdentifier_( + SentryCocoa _lib, NSString? ident) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSLocale1, + _lib._sel_localeWithLocaleIdentifier_1, ident?._id ?? ffi.nullptr); + return NSLocale._(_ret, _lib, retain: true, release: true); + } + + @override + NSLocale init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSLocale._(_ret, _lib, retain: true, release: true); + } + + static NSArray? getAvailableLocaleIdentifiers(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSLocale1, _lib._sel_availableLocaleIdentifiers1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray? getISOLanguageCodes(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSLocale1, _lib._sel_ISOLanguageCodes1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray? getISOCountryCodes(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSLocale1, _lib._sel_ISOCountryCodes1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray? getISOCurrencyCodes(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSLocale1, _lib._sel_ISOCurrencyCodes1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray? getCommonISOCurrencyCodes(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSLocale1, _lib._sel_commonISOCurrencyCodes1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray? getPreferredLanguages(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSLocale1, _lib._sel_preferredLanguages1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary componentsFromLocaleIdentifier_( + SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_146(_lib._class_NSLocale1, + _lib._sel_componentsFromLocaleIdentifier_1, string?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSString localeIdentifierFromComponents_( + SentryCocoa _lib, NSDictionary? dict) { + final _ret = _lib._objc_msgSend_183(_lib._class_NSLocale1, + _lib._sel_localeIdentifierFromComponents_1, dict?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString canonicalLocaleIdentifierFromString_( + SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_64( + _lib._class_NSLocale1, + _lib._sel_canonicalLocaleIdentifierFromString_1, + string?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString canonicalLanguageIdentifierFromString_( + SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_64( + _lib._class_NSLocale1, + _lib._sel_canonicalLanguageIdentifierFromString_1, + string?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString localeIdentifierFromWindowsLocaleCode_( + SentryCocoa _lib, int lcid) { + final _ret = _lib._objc_msgSend_184(_lib._class_NSLocale1, + _lib._sel_localeIdentifierFromWindowsLocaleCode_1, lcid); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static int windowsLocaleCodeFromLocaleIdentifier_( + SentryCocoa _lib, NSString? localeIdentifier) { + return _lib._objc_msgSend_185( + _lib._class_NSLocale1, + _lib._sel_windowsLocaleCodeFromLocaleIdentifier_1, + localeIdentifier?._id ?? ffi.nullptr); + } + + static int characterDirectionForLanguage_( + SentryCocoa _lib, NSString? isoLangCode) { + return _lib._objc_msgSend_186( + _lib._class_NSLocale1, + _lib._sel_characterDirectionForLanguage_1, + isoLangCode?._id ?? ffi.nullptr); + } + + static int lineDirectionForLanguage_( + SentryCocoa _lib, NSString? isoLangCode) { + return _lib._objc_msgSend_186(_lib._class_NSLocale1, + _lib._sel_lineDirectionForLanguage_1, isoLangCode?._id ?? ffi.nullptr); + } + + static NSLocale new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSLocale1, _lib._sel_new1); + return NSLocale._(_ret, _lib, retain: false, release: true); + } + + static NSLocale allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSLocale1, _lib._sel_allocWithZone_1, zone); + return NSLocale._(_ret, _lib, retain: false, release: true); + } + + static NSLocale alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSLocale1, _lib._sel_alloc1); + return NSLocale._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSLocale1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSLocale1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSLocale1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSLocale1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSLocale1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSLocale1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSLocale1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSLocale1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSLocale1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSCharacterSet extends NSObject { + NSCharacterSet._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSCharacterSet] that points to the same underlying object as [other]. + static NSCharacterSet castFrom(T other) { + return NSCharacterSet._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSCharacterSet] that wraps the given raw object pointer. + static NSCharacterSet castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSCharacterSet._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSCharacterSet]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSCharacterSet1); + } + + static NSCharacterSet? getControlCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_controlCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getWhitespaceCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_whitespaceCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getWhitespaceAndNewlineCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174(_lib._class_NSCharacterSet1, + _lib._sel_whitespaceAndNewlineCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getDecimalDigitCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_decimalDigitCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getLetterCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_letterCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getLowercaseLetterCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_lowercaseLetterCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getUppercaseLetterCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_uppercaseLetterCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getNonBaseCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_nonBaseCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getAlphanumericCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_alphanumericCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getDecomposableCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_decomposableCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getIllegalCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_illegalCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getPunctuationCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_punctuationCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getCapitalizedLetterCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_capitalizedLetterCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getSymbolCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_symbolCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getNewlineCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_newlineCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: false, release: true); + } + + static NSCharacterSet characterSetWithRange_( + SentryCocoa _lib, _NSRange aRange) { + final _ret = _lib._objc_msgSend_175( + _lib._class_NSCharacterSet1, _lib._sel_characterSetWithRange_1, aRange); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet characterSetWithCharactersInString_( + SentryCocoa _lib, NSString? aString) { + final _ret = _lib._objc_msgSend_176( + _lib._class_NSCharacterSet1, + _lib._sel_characterSetWithCharactersInString_1, + aString?._id ?? ffi.nullptr); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet characterSetWithBitmapRepresentation_( + SentryCocoa _lib, NSData? data) { + final _ret = _lib._objc_msgSend_177( + _lib._class_NSCharacterSet1, + _lib._sel_characterSetWithBitmapRepresentation_1, + data?._id ?? ffi.nullptr); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet characterSetWithContentsOfFile_( + SentryCocoa _lib, NSString? fName) { + final _ret = _lib._objc_msgSend_176(_lib._class_NSCharacterSet1, + _lib._sel_characterSetWithContentsOfFile_1, fName?._id ?? ffi.nullptr); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + NSCharacterSet initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + bool characterIsMember_(int aCharacter) { + return _lib._objc_msgSend_178( + _id, _lib._sel_characterIsMember_1, aCharacter); + } + + NSData? get bitmapRepresentation { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_bitmapRepresentation1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + NSCharacterSet? get invertedSet { + final _ret = _lib._objc_msgSend_174(_id, _lib._sel_invertedSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + bool longCharacterIsMember_(int theLongChar) { + return _lib._objc_msgSend_179( + _id, _lib._sel_longCharacterIsMember_1, theLongChar); + } + + bool isSupersetOfSet_(NSCharacterSet? theOtherSet) { + return _lib._objc_msgSend_180( + _id, _lib._sel_isSupersetOfSet_1, theOtherSet?._id ?? ffi.nullptr); + } + + bool hasMemberInPlane_(int thePlane) { + return _lib._objc_msgSend_181(_id, _lib._sel_hasMemberInPlane_1, thePlane); + } + + static NSCharacterSet? getURLUserAllowedCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_URLUserAllowedCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getURLPasswordAllowedCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_URLPasswordAllowedCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getURLHostAllowedCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_URLHostAllowedCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getURLPathAllowedCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_URLPathAllowedCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getURLQueryAllowedCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_URLQueryAllowedCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet? getURLFragmentAllowedCharacterSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_174( + _lib._class_NSCharacterSet1, _lib._sel_URLFragmentAllowedCharacterSet1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSCharacterSet init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + static NSCharacterSet new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSCharacterSet1, _lib._sel_new1); + return NSCharacterSet._(_ret, _lib, retain: false, release: true); + } + + static NSCharacterSet allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSCharacterSet1, _lib._sel_allocWithZone_1, zone); + return NSCharacterSet._(_ret, _lib, retain: false, release: true); + } + + static NSCharacterSet alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSCharacterSet1, _lib._sel_alloc1); + return NSCharacterSet._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSCharacterSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSCharacterSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSCharacterSet1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSCharacterSet1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSCharacterSet1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSCharacterSet1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSCharacterSet1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSCharacterSet1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSCharacterSet1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSLocaleLanguageDirection { + static const int NSLocaleLanguageDirectionUnknown = 0; + static const int NSLocaleLanguageDirectionLeftToRight = 1; + static const int NSLocaleLanguageDirectionRightToLeft = 2; + static const int NSLocaleLanguageDirectionTopToBottom = 3; + static const int NSLocaleLanguageDirectionBottomToTop = 4; +} + +abstract class NSURLBookmarkCreationOptions { + static const int NSURLBookmarkCreationPreferFileIDResolution = 256; + static const int NSURLBookmarkCreationMinimalBookmark = 512; + static const int NSURLBookmarkCreationSuitableForBookmarkFile = 1024; + static const int NSURLBookmarkCreationWithSecurityScope = 2048; + static const int NSURLBookmarkCreationSecurityScopeAllowOnlyReadAccess = 4096; + static const int NSURLBookmarkCreationWithoutImplicitSecurityScope = + 536870912; +} + +abstract class NSURLBookmarkResolutionOptions { + static const int NSURLBookmarkResolutionWithoutUI = 256; + static const int NSURLBookmarkResolutionWithoutMounting = 512; + static const int NSURLBookmarkResolutionWithSecurityScope = 1024; + static const int NSURLBookmarkResolutionWithoutImplicitStartAccessing = 32768; +} + +class NSURLHandle extends NSObject { + NSURLHandle._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLHandle] that points to the same underlying object as [other]. + static NSURLHandle castFrom(T other) { + return NSURLHandle._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSURLHandle] that wraps the given raw object pointer. + static NSURLHandle castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLHandle._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLHandle]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLHandle1); + } + + static void registerURLHandleClass_( + SentryCocoa _lib, NSObject anURLHandleSubclass) { + _lib._objc_msgSend_15(_lib._class_NSURLHandle1, + _lib._sel_registerURLHandleClass_1, anURLHandleSubclass._id); + } + + static NSObject URLHandleClassForURL_(SentryCocoa _lib, NSURL? anURL) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSURLHandle1, + _lib._sel_URLHandleClassForURL_1, anURL?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + int status() { + return _lib._objc_msgSend_242(_id, _lib._sel_status1); + } + + NSString failureReason() { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_failureReason1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + void addClient_(NSObject? client) { + _lib._objc_msgSend_15( + _id, _lib._sel_addClient_1, client?._id ?? ffi.nullptr); + } + + void removeClient_(NSObject? client) { + _lib._objc_msgSend_15( + _id, _lib._sel_removeClient_1, client?._id ?? ffi.nullptr); + } + + void loadInBackground() { + _lib._objc_msgSend_1(_id, _lib._sel_loadInBackground1); + } + + void cancelLoadInBackground() { + _lib._objc_msgSend_1(_id, _lib._sel_cancelLoadInBackground1); + } + + NSData resourceData() { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_resourceData1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData availableResourceData() { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_availableResourceData1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + int expectedResourceDataSize() { + return _lib._objc_msgSend_220(_id, _lib._sel_expectedResourceDataSize1); + } + + void flushCachedData() { + _lib._objc_msgSend_1(_id, _lib._sel_flushCachedData1); + } + + void backgroundLoadDidFailWithReason_(NSString? reason) { + _lib._objc_msgSend_192(_id, _lib._sel_backgroundLoadDidFailWithReason_1, + reason?._id ?? ffi.nullptr); + } + + void didLoadBytes_loadComplete_(NSData? newBytes, bool yorn) { + _lib._objc_msgSend_243(_id, _lib._sel_didLoadBytes_loadComplete_1, + newBytes?._id ?? ffi.nullptr, yorn); + } + + static bool canInitWithURL_(SentryCocoa _lib, NSURL? anURL) { + return _lib._objc_msgSend_244(_lib._class_NSURLHandle1, + _lib._sel_canInitWithURL_1, anURL?._id ?? ffi.nullptr); + } + + static NSURLHandle cachedHandleForURL_(SentryCocoa _lib, NSURL? anURL) { + final _ret = _lib._objc_msgSend_245(_lib._class_NSURLHandle1, + _lib._sel_cachedHandleForURL_1, anURL?._id ?? ffi.nullptr); + return NSURLHandle._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithURL_cached_(NSURL? anURL, bool willCache) { + final _ret = _lib._objc_msgSend_246(_id, _lib._sel_initWithURL_cached_1, + anURL?._id ?? ffi.nullptr, willCache); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject propertyForKey_(NSString? propertyKey) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_propertyForKey_1, propertyKey?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject propertyForKeyIfAvailable_(NSString? propertyKey) { + final _ret = _lib._objc_msgSend_30(_id, + _lib._sel_propertyForKeyIfAvailable_1, propertyKey?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool writeProperty_forKey_(NSObject propertyValue, NSString? propertyKey) { + return _lib._objc_msgSend_240(_id, _lib._sel_writeProperty_forKey_1, + propertyValue._id, propertyKey?._id ?? ffi.nullptr); + } + + bool writeData_(NSData? data) { + return _lib._objc_msgSend_23( + _id, _lib._sel_writeData_1, data?._id ?? ffi.nullptr); + } + + NSData loadInForeground() { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_loadInForeground1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + void beginLoadInBackground() { + _lib._objc_msgSend_1(_id, _lib._sel_beginLoadInBackground1); + } + + void endLoadInBackground() { + _lib._objc_msgSend_1(_id, _lib._sel_endLoadInBackground1); + } + + @override + NSURLHandle init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLHandle._(_ret, _lib, retain: true, release: true); + } + + static NSURLHandle new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLHandle1, _lib._sel_new1); + return NSURLHandle._(_ret, _lib, retain: false, release: true); + } + + static NSURLHandle allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLHandle1, _lib._sel_allocWithZone_1, zone); + return NSURLHandle._(_ret, _lib, retain: false, release: true); + } + + static NSURLHandle alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLHandle1, _lib._sel_alloc1); + return NSURLHandle._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLHandle1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLHandle1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLHandle1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLHandle1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLHandle1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLHandle1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLHandle1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSURLHandle1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLHandle1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSURLHandleStatus { + static const int NSURLHandleNotLoaded = 0; + static const int NSURLHandleLoadSucceeded = 1; + static const int NSURLHandleLoadInProgress = 2; + static const int NSURLHandleLoadFailed = 3; +} + +abstract class NSDataWritingOptions { + static const int NSDataWritingAtomic = 1; + static const int NSDataWritingWithoutOverwriting = 2; + static const int NSDataWritingFileProtectionNone = 268435456; + static const int NSDataWritingFileProtectionComplete = 536870912; + static const int NSDataWritingFileProtectionCompleteUnlessOpen = 805306368; + static const int + NSDataWritingFileProtectionCompleteUntilFirstUserAuthentication = + 1073741824; + static const int NSDataWritingFileProtectionMask = 4026531840; + static const int NSAtomicWrite = 1; +} + +abstract class NSDataSearchOptions { + static const int NSDataSearchBackwards = 1; + static const int NSDataSearchAnchored = 2; +} + +void _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, _NSRange, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_ffiVoid_NSRange_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ffiVoid_NSRange_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_ffiVoid_NSRange_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_ffiVoid_NSRange_bool.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ffiVoid_NSRange_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call( + ffi.Pointer arg0, _NSRange arg1, ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +abstract class NSDataReadingOptions { + static const int NSDataReadingMappedIfSafe = 1; + static const int NSDataReadingUncached = 2; + static const int NSDataReadingMappedAlways = 8; + static const int NSDataReadingMapped = 1; + static const int NSMappedRead = 1; + static const int NSUncachedRead = 2; +} + +void _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, int arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, ffi.UnsignedLong arg1)>>() + .asFunction arg0, int arg1)>()( + arg0, arg1); +} + +final _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistryIndex; + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, int arg1) { + return (_ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureRegistry[block + .ref + .target + .address] as void Function(ffi.Pointer, int))(arg0, arg1); +} + +class ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, ffi.UnsignedLong arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1)>( + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0, int arg1) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1)>( + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, int arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, ffi.UnsignedLong arg1)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, int arg1)>()(_id, arg0, arg1); + } +} + +abstract class NSDataBase64DecodingOptions { + static const int NSDataBase64DecodingIgnoreUnknownCharacters = 1; +} + +abstract class NSDataBase64EncodingOptions { + static const int NSDataBase64Encoding64CharacterLineLength = 1; + static const int NSDataBase64Encoding76CharacterLineLength = 2; + static const int NSDataBase64EncodingEndLineWithCarriageReturn = 16; + static const int NSDataBase64EncodingEndLineWithLineFeed = 32; +} + +abstract class NSDataCompressionAlgorithm { + static const int NSDataCompressionAlgorithmLZFSE = 0; + static const int NSDataCompressionAlgorithmLZ4 = 1; + static const int NSDataCompressionAlgorithmLZMA = 2; + static const int NSDataCompressionAlgorithmZlib = 3; +} + +abstract class NSDecodingFailurePolicy { + static const int NSDecodingFailurePolicyRaiseException = 0; + static const int NSDecodingFailurePolicySetErrorAndReturn = 1; +} + +abstract class NSStringCompareOptions { + static const int NSCaseInsensitiveSearch = 1; + static const int NSLiteralSearch = 2; + static const int NSBackwardsSearch = 4; + static const int NSAnchoredSearch = 8; + static const int NSNumericSearch = 64; + static const int NSDiacriticInsensitiveSearch = 128; + static const int NSWidthInsensitiveSearch = 256; + static const int NSForcedOrderingSearch = 512; + static const int NSRegularExpressionSearch = 1024; +} + +abstract class NSStringEnumerationOptions { + static const int NSStringEnumerationByLines = 0; + static const int NSStringEnumerationByParagraphs = 1; + static const int NSStringEnumerationByComposedCharacterSequences = 2; + static const int NSStringEnumerationByWords = 3; + static const int NSStringEnumerationBySentences = 4; + static const int NSStringEnumerationByCaretPositions = 5; + static const int NSStringEnumerationByDeletionClusters = 6; + static const int NSStringEnumerationReverse = 256; + static const int NSStringEnumerationSubstringNotRequired = 512; + static const int NSStringEnumerationLocalized = 1024; +} + +void _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, + _NSRange arg2, ffi.Pointer arg3)>>() + .asFunction< + void Function( + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3)>()(arg0, arg1, arg2, arg3); +} + +final _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3) { + return (_ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, _NSRange, _NSRange, + ffi.Pointer))(arg0, arg1, arg2, arg3); +} + +class ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, + _NSRange arg2, ffi.Pointer arg3)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3)>( + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, _NSRange arg1, _NSRange arg2, + ffi.Pointer arg3) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3)>( + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSString_NSRange_NSRange_bool_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, _NSRange arg1, _NSRange arg2, + ffi.Pointer arg3) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + _NSRange arg2, + ffi.Pointer arg3)>()(_id, arg0, arg1, arg2, arg3); + } +} + +void _ObjCBlock_ffiVoid_NSString_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_ffiVoid_NSString_bool_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSString_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSString_bool_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSString_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSString_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_ffiVoid_NSString_bool_closureRegistry[ + block.ref.target.address] + as void Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_ffiVoid_NSString_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSString_bool._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSString_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSString_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSString_bool.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSString_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSString_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +abstract class NSStringEncodingConversionOptions { + static const int NSStringEncodingConversionAllowLossy = 1; + static const int NSStringEncodingConversionExternalRepresentation = 2; +} + +void _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1)>>() + .asFunction< + void Function( + ffi.Pointer arg0, int arg1)>()(arg0, arg1); +} + +final _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistryIndex; + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1) { + return (_ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, int))(arg0, arg1); +} + +class ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong + extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.UnsignedLong arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1)>( + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, int arg1) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1)>( + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, int arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.UnsignedLong arg1)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1)>()(_id, arg0, arg1); + } +} + +abstract class NSLinguisticTaggerOptions { + static const int NSLinguisticTaggerOmitWords = 1; + static const int NSLinguisticTaggerOmitPunctuation = 2; + static const int NSLinguisticTaggerOmitWhitespace = 4; + static const int NSLinguisticTaggerOmitOther = 8; + static const int NSLinguisticTaggerJoinNames = 16; +} + +class NSOrthography extends NSObject { + NSOrthography._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSOrthography] that points to the same underlying object as [other]. + static NSOrthography castFrom(T other) { + return NSOrthography._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSOrthography] that wraps the given raw object pointer. + static NSOrthography castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSOrthography._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSOrthography]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSOrthography1); + } + + NSString? get dominantScript { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_dominantScript1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get languageMap { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_languageMap1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSOrthography initWithDominantScript_languageMap_( + NSString? script, NSDictionary? map) { + final _ret = _lib._objc_msgSend_371( + _id, + _lib._sel_initWithDominantScript_languageMap_1, + script?._id ?? ffi.nullptr, + map?._id ?? ffi.nullptr); + return NSOrthography._(_ret, _lib, retain: true, release: true); + } + + NSOrthography initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSOrthography._(_ret, _lib, retain: true, release: true); + } + + NSArray languagesForScript_(NSString? script) { + final _ret = _lib._objc_msgSend_123( + _id, _lib._sel_languagesForScript_1, script?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString dominantLanguageForScript_(NSString? script) { + final _ret = _lib._objc_msgSend_64( + _id, _lib._sel_dominantLanguageForScript_1, script?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get dominantLanguage { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_dominantLanguage1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray? get allScripts { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_allScripts1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get allLanguages { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_allLanguages1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSOrthography defaultOrthographyForLanguage_( + SentryCocoa _lib, NSString? language) { + final _ret = _lib._objc_msgSend_30( + _lib._class_NSOrthography1, + _lib._sel_defaultOrthographyForLanguage_1, + language?._id ?? ffi.nullptr); + return NSOrthography._(_ret, _lib, retain: true, release: true); + } + + static NSOrthography orthographyWithDominantScript_languageMap_( + SentryCocoa _lib, NSString? script, NSDictionary? map) { + final _ret = _lib._objc_msgSend_371( + _lib._class_NSOrthography1, + _lib._sel_orthographyWithDominantScript_languageMap_1, + script?._id ?? ffi.nullptr, + map?._id ?? ffi.nullptr); + return NSOrthography._(_ret, _lib, retain: true, release: true); + } + + @override + NSOrthography init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSOrthography._(_ret, _lib, retain: true, release: true); + } + + static NSOrthography new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSOrthography1, _lib._sel_new1); + return NSOrthography._(_ret, _lib, retain: false, release: true); + } + + static NSOrthography allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSOrthography1, _lib._sel_allocWithZone_1, zone); + return NSOrthography._(_ret, _lib, retain: false, release: true); + } + + static NSOrthography alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSOrthography1, _lib._sel_alloc1); + return NSOrthography._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSOrthography1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSOrthography1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSOrthography1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSOrthography1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSOrthography1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSOrthography1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSOrthography1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSOrthography1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSOrthography1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +void _ObjCBlock_ffiVoid_ObjCObject_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistry = {}; +int _ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_ObjCObject_bool_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_ObjCObject_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_ffiVoid_ObjCObject_bool_closureRegistry[ + block.ref.target.address] + as void Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_ffiVoid_ObjCObject_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ObjCObject_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_ObjCObject_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_ObjCObject_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_ObjCObject_bool.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_ObjCObject_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ObjCObject_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +bool _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer arg0, ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_bool_ObjCObject_bool_closureRegistry = {}; +int _ObjCBlock_bool_ObjCObject_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_bool_ObjCObject_bool_registerClosure( + Function fn) { + final id = ++_ObjCBlock_bool_ObjCObject_bool_closureRegistryIndex; + _ObjCBlock_bool_ObjCObject_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +bool _ObjCBlock_bool_ObjCObject_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_bool_ObjCObject_bool_closureRegistry[ + block.ref.target.address] + as bool Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_bool_ObjCObject_bool extends _ObjCBlockBase { + ObjCBlock_bool_ObjCObject_bool._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_bool_ObjCObject_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib + ._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, + false) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_bool_ObjCObject_bool.fromFunction( + SentryCocoa lib, + bool Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ObjCObject_bool_closureTrampoline, + false) + .cast(), + _ObjCBlock_bool_ObjCObject_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + bool call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +class NSFileManager extends NSObject { + NSFileManager._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSFileManager] that points to the same underlying object as [other]. + static NSFileManager castFrom(T other) { + return NSFileManager._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSFileManager] that wraps the given raw object pointer. + static NSFileManager castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSFileManager._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSFileManager]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFileManager1); + } + + static NSFileManager? getDefaultManager(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_402( + _lib._class_NSFileManager1, _lib._sel_defaultManager1); + return _ret.address == 0 + ? null + : NSFileManager._(_ret, _lib, retain: true, release: true); + } + + NSArray mountedVolumeURLsIncludingResourceValuesForKeys_options_( + NSArray? propertyKeys, int options) { + final _ret = _lib._objc_msgSend_403( + _id, + _lib._sel_mountedVolumeURLsIncludingResourceValuesForKeys_options_1, + propertyKeys?._id ?? ffi.nullptr, + options); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + void unmountVolumeAtURL_options_completionHandler_( + NSURL? url, int mask, ObjCBlock_ffiVoid_NSError completionHandler) { + _lib._objc_msgSend_404( + _id, + _lib._sel_unmountVolumeAtURL_options_completionHandler_1, + url?._id ?? ffi.nullptr, + mask, + completionHandler._id); + } + + NSArray contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_( + NSURL? url, + NSArray? keys, + int mask, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_405( + _id, + _lib._sel_contentsOfDirectoryAtURL_includingPropertiesForKeys_options_error_1, + url?._id ?? ffi.nullptr, + keys?._id ?? ffi.nullptr, + mask, + error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray URLsForDirectory_inDomains_(int directory, int domainMask) { + final _ret = _lib._objc_msgSend_406( + _id, _lib._sel_URLsForDirectory_inDomains_1, directory, domainMask); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSURL URLForDirectory_inDomain_appropriateForURL_create_error_( + int directory, + int domain, + NSURL? url, + bool shouldCreate, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_407( + _id, + _lib._sel_URLForDirectory_inDomain_appropriateForURL_create_error_1, + directory, + domain, + url?._id ?? ffi.nullptr, + shouldCreate, + error); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + bool getRelationship_ofDirectoryAtURL_toItemAtURL_error_( + ffi.Pointer outRelationship, + NSURL? directoryURL, + NSURL? otherURL, + ffi.Pointer> error) { + return _lib._objc_msgSend_408( + _id, + _lib._sel_getRelationship_ofDirectoryAtURL_toItemAtURL_error_1, + outRelationship, + directoryURL?._id ?? ffi.nullptr, + otherURL?._id ?? ffi.nullptr, + error); + } + + bool getRelationship_ofDirectory_inDomain_toItemAtURL_error_( + ffi.Pointer outRelationship, + int directory, + int domainMask, + NSURL? url, + ffi.Pointer> error) { + return _lib._objc_msgSend_409( + _id, + _lib._sel_getRelationship_ofDirectory_inDomain_toItemAtURL_error_1, + outRelationship, + directory, + domainMask, + url?._id ?? ffi.nullptr, + error); + } + + bool createDirectoryAtURL_withIntermediateDirectories_attributes_error_( + NSURL? url, + bool createIntermediates, + NSDictionary? attributes, + ffi.Pointer> error) { + return _lib._objc_msgSend_410( + _id, + _lib._sel_createDirectoryAtURL_withIntermediateDirectories_attributes_error_1, + url?._id ?? ffi.nullptr, + createIntermediates, + attributes?._id ?? ffi.nullptr, + error); + } + + bool createSymbolicLinkAtURL_withDestinationURL_error_( + NSURL? url, NSURL? destURL, ffi.Pointer> error) { + return _lib._objc_msgSend_411( + _id, + _lib._sel_createSymbolicLinkAtURL_withDestinationURL_error_1, + url?._id ?? ffi.nullptr, + destURL?._id ?? ffi.nullptr, + error); + } + + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + set delegate(NSObject? value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + } + + bool setAttributes_ofItemAtPath_error_(NSDictionary? attributes, + NSString? path, ffi.Pointer> error) { + return _lib._objc_msgSend_412( + _id, + _lib._sel_setAttributes_ofItemAtPath_error_1, + attributes?._id ?? ffi.nullptr, + path?._id ?? ffi.nullptr, + error); + } + + bool createDirectoryAtPath_withIntermediateDirectories_attributes_error_( + NSString? path, + bool createIntermediates, + NSDictionary? attributes, + ffi.Pointer> error) { + return _lib._objc_msgSend_413( + _id, + _lib._sel_createDirectoryAtPath_withIntermediateDirectories_attributes_error_1, + path?._id ?? ffi.nullptr, + createIntermediates, + attributes?._id ?? ffi.nullptr, + error); + } + + NSArray contentsOfDirectoryAtPath_error_( + NSString? path, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_414( + _id, + _lib._sel_contentsOfDirectoryAtPath_error_1, + path?._id ?? ffi.nullptr, + error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray subpathsOfDirectoryAtPath_error_( + NSString? path, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_414( + _id, + _lib._sel_subpathsOfDirectoryAtPath_error_1, + path?._id ?? ffi.nullptr, + error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSDictionary attributesOfItemAtPath_error_( + NSString? path, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_415( + _id, + _lib._sel_attributesOfItemAtPath_error_1, + path?._id ?? ffi.nullptr, + error); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary attributesOfFileSystemForPath_error_( + NSString? path, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_415( + _id, + _lib._sel_attributesOfFileSystemForPath_error_1, + path?._id ?? ffi.nullptr, + error); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + bool createSymbolicLinkAtPath_withDestinationPath_error_(NSString? path, + NSString? destPath, ffi.Pointer> error) { + return _lib._objc_msgSend_416( + _id, + _lib._sel_createSymbolicLinkAtPath_withDestinationPath_error_1, + path?._id ?? ffi.nullptr, + destPath?._id ?? ffi.nullptr, + error); + } + + NSString destinationOfSymbolicLinkAtPath_error_( + NSString? path, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_417( + _id, + _lib._sel_destinationOfSymbolicLinkAtPath_error_1, + path?._id ?? ffi.nullptr, + error); + return NSString._(_ret, _lib, retain: true, release: true); + } + + bool copyItemAtPath_toPath_error_(NSString? srcPath, NSString? dstPath, + ffi.Pointer> error) { + return _lib._objc_msgSend_416(_id, _lib._sel_copyItemAtPath_toPath_error_1, + srcPath?._id ?? ffi.nullptr, dstPath?._id ?? ffi.nullptr, error); + } + + bool moveItemAtPath_toPath_error_(NSString? srcPath, NSString? dstPath, + ffi.Pointer> error) { + return _lib._objc_msgSend_416(_id, _lib._sel_moveItemAtPath_toPath_error_1, + srcPath?._id ?? ffi.nullptr, dstPath?._id ?? ffi.nullptr, error); + } + + bool linkItemAtPath_toPath_error_(NSString? srcPath, NSString? dstPath, + ffi.Pointer> error) { + return _lib._objc_msgSend_416(_id, _lib._sel_linkItemAtPath_toPath_error_1, + srcPath?._id ?? ffi.nullptr, dstPath?._id ?? ffi.nullptr, error); + } + + bool removeItemAtPath_error_( + NSString? path, ffi.Pointer> error) { + return _lib._objc_msgSend_418(_id, _lib._sel_removeItemAtPath_error_1, + path?._id ?? ffi.nullptr, error); + } + + bool copyItemAtURL_toURL_error_(NSURL? srcURL, NSURL? dstURL, + ffi.Pointer> error) { + return _lib._objc_msgSend_411(_id, _lib._sel_copyItemAtURL_toURL_error_1, + srcURL?._id ?? ffi.nullptr, dstURL?._id ?? ffi.nullptr, error); + } + + bool moveItemAtURL_toURL_error_(NSURL? srcURL, NSURL? dstURL, + ffi.Pointer> error) { + return _lib._objc_msgSend_411(_id, _lib._sel_moveItemAtURL_toURL_error_1, + srcURL?._id ?? ffi.nullptr, dstURL?._id ?? ffi.nullptr, error); + } + + bool linkItemAtURL_toURL_error_(NSURL? srcURL, NSURL? dstURL, + ffi.Pointer> error) { + return _lib._objc_msgSend_411(_id, _lib._sel_linkItemAtURL_toURL_error_1, + srcURL?._id ?? ffi.nullptr, dstURL?._id ?? ffi.nullptr, error); + } + + bool removeItemAtURL_error_( + NSURL? URL, ffi.Pointer> error) { + return _lib._objc_msgSend_83( + _id, _lib._sel_removeItemAtURL_error_1, URL?._id ?? ffi.nullptr, error); + } + + bool trashItemAtURL_resultingItemURL_error_( + NSURL? url, + ffi.Pointer> outResultingURL, + ffi.Pointer> error) { + return _lib._objc_msgSend_419( + _id, + _lib._sel_trashItemAtURL_resultingItemURL_error_1, + url?._id ?? ffi.nullptr, + outResultingURL, + error); + } + + NSDictionary fileAttributesAtPath_traverseLink_(NSString? path, bool yorn) { + final _ret = _lib._objc_msgSend_420( + _id, + _lib._sel_fileAttributesAtPath_traverseLink_1, + path?._id ?? ffi.nullptr, + yorn); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + bool changeFileAttributes_atPath_(NSDictionary? attributes, NSString? path) { + return _lib._objc_msgSend_421(_id, _lib._sel_changeFileAttributes_atPath_1, + attributes?._id ?? ffi.nullptr, path?._id ?? ffi.nullptr); + } + + NSArray directoryContentsAtPath_(NSString? path) { + final _ret = _lib._objc_msgSend_123( + _id, _lib._sel_directoryContentsAtPath_1, path?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSDictionary fileSystemAttributesAtPath_(NSString? path) { + final _ret = _lib._objc_msgSend_146( + _id, _lib._sel_fileSystemAttributesAtPath_1, path?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSString pathContentOfSymbolicLinkAtPath_(NSString? path) { + final _ret = _lib._objc_msgSend_64(_id, + _lib._sel_pathContentOfSymbolicLinkAtPath_1, path?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + bool createSymbolicLinkAtPath_pathContent_( + NSString? path, NSString? otherpath) { + return _lib._objc_msgSend_422( + _id, + _lib._sel_createSymbolicLinkAtPath_pathContent_1, + path?._id ?? ffi.nullptr, + otherpath?._id ?? ffi.nullptr); + } + + bool createDirectoryAtPath_attributes_( + NSString? path, NSDictionary? attributes) { + return _lib._objc_msgSend_423( + _id, + _lib._sel_createDirectoryAtPath_attributes_1, + path?._id ?? ffi.nullptr, + attributes?._id ?? ffi.nullptr); + } + + bool linkPath_toPath_handler_( + NSString? src, NSString? dest, NSObject handler) { + return _lib._objc_msgSend_424(_id, _lib._sel_linkPath_toPath_handler_1, + src?._id ?? ffi.nullptr, dest?._id ?? ffi.nullptr, handler._id); + } + + bool copyPath_toPath_handler_( + NSString? src, NSString? dest, NSObject handler) { + return _lib._objc_msgSend_424(_id, _lib._sel_copyPath_toPath_handler_1, + src?._id ?? ffi.nullptr, dest?._id ?? ffi.nullptr, handler._id); + } + + bool movePath_toPath_handler_( + NSString? src, NSString? dest, NSObject handler) { + return _lib._objc_msgSend_424(_id, _lib._sel_movePath_toPath_handler_1, + src?._id ?? ffi.nullptr, dest?._id ?? ffi.nullptr, handler._id); + } + + bool removeFileAtPath_handler_(NSString? path, NSObject handler) { + return _lib._objc_msgSend_425(_id, _lib._sel_removeFileAtPath_handler_1, + path?._id ?? ffi.nullptr, handler._id); + } + + NSString? get currentDirectoryPath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_currentDirectoryPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + bool changeCurrentDirectoryPath_(NSString? path) { + return _lib._objc_msgSend_59( + _id, _lib._sel_changeCurrentDirectoryPath_1, path?._id ?? ffi.nullptr); + } + + bool fileExistsAtPath_(NSString? path) { + return _lib._objc_msgSend_59( + _id, _lib._sel_fileExistsAtPath_1, path?._id ?? ffi.nullptr); + } + + bool fileExistsAtPath_isDirectory_( + NSString? path, ffi.Pointer isDirectory) { + return _lib._objc_msgSend_426(_id, _lib._sel_fileExistsAtPath_isDirectory_1, + path?._id ?? ffi.nullptr, isDirectory); + } + + bool isReadableFileAtPath_(NSString? path) { + return _lib._objc_msgSend_59( + _id, _lib._sel_isReadableFileAtPath_1, path?._id ?? ffi.nullptr); + } + + bool isWritableFileAtPath_(NSString? path) { + return _lib._objc_msgSend_59( + _id, _lib._sel_isWritableFileAtPath_1, path?._id ?? ffi.nullptr); + } + + bool isExecutableFileAtPath_(NSString? path) { + return _lib._objc_msgSend_59( + _id, _lib._sel_isExecutableFileAtPath_1, path?._id ?? ffi.nullptr); + } + + bool isDeletableFileAtPath_(NSString? path) { + return _lib._objc_msgSend_59( + _id, _lib._sel_isDeletableFileAtPath_1, path?._id ?? ffi.nullptr); + } + + bool contentsEqualAtPath_andPath_(NSString? path1, NSString? path2) { + return _lib._objc_msgSend_422(_id, _lib._sel_contentsEqualAtPath_andPath_1, + path1?._id ?? ffi.nullptr, path2?._id ?? ffi.nullptr); + } + + NSString displayNameAtPath_(NSString? path) { + final _ret = _lib._objc_msgSend_64( + _id, _lib._sel_displayNameAtPath_1, path?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray componentsToDisplayForPath_(NSString? path) { + final _ret = _lib._objc_msgSend_123( + _id, _lib._sel_componentsToDisplayForPath_1, path?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSObject enumeratorAtPath_(NSString? path) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_enumeratorAtPath_1, path?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_( + NSURL? url, + NSArray? keys, + int mask, + ObjCBlock_bool_NSURL_NSError handler) { + final _ret = _lib._objc_msgSend_427( + _id, + _lib._sel_enumeratorAtURL_includingPropertiesForKeys_options_errorHandler_1, + url?._id ?? ffi.nullptr, + keys?._id ?? ffi.nullptr, + mask, + handler._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSArray subpathsAtPath_(NSString? path) { + final _ret = _lib._objc_msgSend_123( + _id, _lib._sel_subpathsAtPath_1, path?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSData contentsAtPath_(NSString? path) { + final _ret = _lib._objc_msgSend_428( + _id, _lib._sel_contentsAtPath_1, path?._id ?? ffi.nullptr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + bool createFileAtPath_contents_attributes_( + NSString? path, NSData? data, NSDictionary? attr) { + return _lib._objc_msgSend_429( + _id, + _lib._sel_createFileAtPath_contents_attributes_1, + path?._id ?? ffi.nullptr, + data?._id ?? ffi.nullptr, + attr?._id ?? ffi.nullptr); + } + + ffi.Pointer fileSystemRepresentationWithPath_(NSString? path) { + return _lib._objc_msgSend_430(_id, + _lib._sel_fileSystemRepresentationWithPath_1, path?._id ?? ffi.nullptr); + } + + NSString stringWithFileSystemRepresentation_length_( + ffi.Pointer str, int len) { + final _ret = _lib._objc_msgSend_431( + _id, _lib._sel_stringWithFileSystemRepresentation_length_1, str, len); + return NSString._(_ret, _lib, retain: true, release: true); + } + + bool + replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_( + NSURL? originalItemURL, + NSURL? newItemURL, + NSString? backupItemName, + int options, + ffi.Pointer> resultingURL, + ffi.Pointer> error) { + return _lib._objc_msgSend_432( + _id, + _lib._sel_replaceItemAtURL_withItemAtURL_backupItemName_options_resultingItemURL_error_1, + originalItemURL?._id ?? ffi.nullptr, + newItemURL?._id ?? ffi.nullptr, + backupItemName?._id ?? ffi.nullptr, + options, + resultingURL, + error); + } + + bool setUbiquitous_itemAtURL_destinationURL_error_(bool flag, NSURL? url, + NSURL? destinationURL, ffi.Pointer> error) { + return _lib._objc_msgSend_433( + _id, + _lib._sel_setUbiquitous_itemAtURL_destinationURL_error_1, + flag, + url?._id ?? ffi.nullptr, + destinationURL?._id ?? ffi.nullptr, + error); + } + + bool isUbiquitousItemAtURL_(NSURL? url) { + return _lib._objc_msgSend_244( + _id, _lib._sel_isUbiquitousItemAtURL_1, url?._id ?? ffi.nullptr); + } + + bool startDownloadingUbiquitousItemAtURL_error_( + NSURL? url, ffi.Pointer> error) { + return _lib._objc_msgSend_83( + _id, + _lib._sel_startDownloadingUbiquitousItemAtURL_error_1, + url?._id ?? ffi.nullptr, + error); + } + + bool evictUbiquitousItemAtURL_error_( + NSURL? url, ffi.Pointer> error) { + return _lib._objc_msgSend_83( + _id, + _lib._sel_evictUbiquitousItemAtURL_error_1, + url?._id ?? ffi.nullptr, + error); + } + + NSURL URLForUbiquityContainerIdentifier_(NSString? containerIdentifier) { + final _ret = _lib._objc_msgSend_34( + _id, + _lib._sel_URLForUbiquityContainerIdentifier_1, + containerIdentifier?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL URLForPublishingUbiquitousItemAtURL_expirationDate_error_( + NSURL? url, + ffi.Pointer> outDate, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_434( + _id, + _lib._sel_URLForPublishingUbiquitousItemAtURL_expirationDate_error_1, + url?._id ?? ffi.nullptr, + outDate, + error); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSObject? get ubiquityIdentityToken { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_ubiquityIdentityToken1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + void getFileProviderServicesForItemAtURL_completionHandler_( + NSURL? url, ObjCBlock_ffiVoid_NSDictionary_NSError completionHandler) { + _lib._objc_msgSend_435( + _id, + _lib._sel_getFileProviderServicesForItemAtURL_completionHandler_1, + url?._id ?? ffi.nullptr, + completionHandler._id); + } + + NSURL containerURLForSecurityApplicationGroupIdentifier_( + NSString? groupIdentifier) { + final _ret = _lib._objc_msgSend_34( + _id, + _lib._sel_containerURLForSecurityApplicationGroupIdentifier_1, + groupIdentifier?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get homeDirectoryForCurrentUser { + final _ret = + _lib._objc_msgSend_40(_id, _lib._sel_homeDirectoryForCurrentUser1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get temporaryDirectory { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_temporaryDirectory1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL homeDirectoryForUser_(NSString? userName) { + final _ret = _lib._objc_msgSend_34( + _id, _lib._sel_homeDirectoryForUser_1, userName?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + @override + NSFileManager init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSFileManager._(_ret, _lib, retain: true, release: true); + } + + static NSFileManager new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSFileManager1, _lib._sel_new1); + return NSFileManager._(_ret, _lib, retain: false, release: true); + } + + static NSFileManager allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSFileManager1, _lib._sel_allocWithZone_1, zone); + return NSFileManager._(_ret, _lib, retain: false, release: true); + } + + static NSFileManager alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSFileManager1, _lib._sel_alloc1); + return NSFileManager._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSFileManager1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSFileManager1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSFileManager1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSFileManager1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSFileManager1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSFileManager1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSFileManager1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSFileManager1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSFileManager1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSVolumeEnumerationOptions { + static const int NSVolumeEnumerationSkipHiddenVolumes = 2; + static const int NSVolumeEnumerationProduceFileReferenceURLs = 4; +} + +abstract class NSFileManagerUnmountOptions { + static const int NSFileManagerUnmountAllPartitionsAndEjectDisk = 1; + static const int NSFileManagerUnmountWithoutUI = 2; +} + +void _ObjCBlock_ffiVoid_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSError_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSError_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSError_closureRegistry[block.ref.target.address] + as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSError._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSError.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSError_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +abstract class NSDirectoryEnumerationOptions { + static const int NSDirectoryEnumerationSkipsSubdirectoryDescendants = 1; + static const int NSDirectoryEnumerationSkipsPackageDescendants = 2; + static const int NSDirectoryEnumerationSkipsHiddenFiles = 4; + static const int NSDirectoryEnumerationIncludesDirectoriesPostOrder = 8; + static const int NSDirectoryEnumerationProducesRelativePathURLs = 16; +} + +abstract class NSSearchPathDirectory { + static const int NSApplicationDirectory = 1; + static const int NSDemoApplicationDirectory = 2; + static const int NSDeveloperApplicationDirectory = 3; + static const int NSAdminApplicationDirectory = 4; + static const int NSLibraryDirectory = 5; + static const int NSDeveloperDirectory = 6; + static const int NSUserDirectory = 7; + static const int NSDocumentationDirectory = 8; + static const int NSDocumentDirectory = 9; + static const int NSCoreServiceDirectory = 10; + static const int NSAutosavedInformationDirectory = 11; + static const int NSDesktopDirectory = 12; + static const int NSCachesDirectory = 13; + static const int NSApplicationSupportDirectory = 14; + static const int NSDownloadsDirectory = 15; + static const int NSInputMethodsDirectory = 16; + static const int NSMoviesDirectory = 17; + static const int NSMusicDirectory = 18; + static const int NSPicturesDirectory = 19; + static const int NSPrinterDescriptionDirectory = 20; + static const int NSSharedPublicDirectory = 21; + static const int NSPreferencePanesDirectory = 22; + static const int NSApplicationScriptsDirectory = 23; + static const int NSItemReplacementDirectory = 99; + static const int NSAllApplicationsDirectory = 100; + static const int NSAllLibrariesDirectory = 101; + static const int NSTrashDirectory = 102; +} + +abstract class NSSearchPathDomainMask { + static const int NSUserDomainMask = 1; + static const int NSLocalDomainMask = 2; + static const int NSNetworkDomainMask = 4; + static const int NSSystemDomainMask = 8; + static const int NSAllDomainsMask = 65535; +} + +abstract class NSURLRelationship { + static const int NSURLRelationshipContains = 0; + static const int NSURLRelationshipSame = 1; + static const int NSURLRelationshipOther = 2; +} + +bool _ObjCBlock_bool_NSURL_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_bool_NSURL_NSError_closureRegistry = {}; +int _ObjCBlock_bool_NSURL_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_bool_NSURL_NSError_registerClosure( + Function fn) { + final id = ++_ObjCBlock_bool_NSURL_NSError_closureRegistryIndex; + _ObjCBlock_bool_NSURL_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +bool _ObjCBlock_bool_NSURL_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_bool_NSURL_NSError_closureRegistry[ + block.ref.target.address] + as bool Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_bool_NSURL_NSError extends _ObjCBlockBase { + ObjCBlock_bool_NSURL_NSError._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_bool_NSURL_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_NSURL_NSError_fnPtrTrampoline, false) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_bool_NSURL_NSError.fromFunction( + SentryCocoa lib, + bool Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_NSURL_NSError_closureTrampoline, false) + .cast(), + _ObjCBlock_bool_NSURL_NSError_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + bool call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +abstract class NSFileManagerItemReplacementOptions { + static const int NSFileManagerItemReplacementUsingNewMetadataOnly = 1; + static const int NSFileManagerItemReplacementWithoutDeletingBackupItem = 2; +} + +void _ObjCBlock_ffiVoid_NSDictionary_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_ffiVoid_NSDictionary_NSError_closureRegistry[ + block.ref.target.address] + as void Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_ffiVoid_NSDictionary_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSDictionary_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSDictionary_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSDictionary_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSDictionary_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSDictionary_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_NSError_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +class NSMutableArray extends NSArray { + NSMutableArray._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMutableArray] that points to the same underlying object as [other]. + static NSMutableArray castFrom(T other) { + return NSMutableArray._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSMutableArray] that wraps the given raw object pointer. + static NSMutableArray castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMutableArray._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMutableArray]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMutableArray1); + } + + void addObject_(NSObject anObject) { + _lib._objc_msgSend_15(_id, _lib._sel_addObject_1, anObject._id); + } + + void insertObject_atIndex_(NSObject anObject, int index) { + _lib._objc_msgSend_438( + _id, _lib._sel_insertObject_atIndex_1, anObject._id, index); + } + + void removeLastObject() { + _lib._objc_msgSend_1(_id, _lib._sel_removeLastObject1); + } + + void removeObjectAtIndex_(int index) { + _lib._objc_msgSend_439(_id, _lib._sel_removeObjectAtIndex_1, index); + } + + void replaceObjectAtIndex_withObject_(int index, NSObject anObject) { + _lib._objc_msgSend_440( + _id, _lib._sel_replaceObjectAtIndex_withObject_1, index, anObject._id); + } + + @override + NSMutableArray init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + NSMutableArray initWithCapacity_(int numItems) { + final _ret = + _lib._objc_msgSend_60(_id, _lib._sel_initWithCapacity_1, numItems); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableArray initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + void addObjectsFromArray_(NSArray? otherArray) { + _lib._objc_msgSend_441( + _id, _lib._sel_addObjectsFromArray_1, otherArray?._id ?? ffi.nullptr); + } + + void exchangeObjectAtIndex_withObjectAtIndex_(int idx1, int idx2) { + _lib._objc_msgSend_442( + _id, _lib._sel_exchangeObjectAtIndex_withObjectAtIndex_1, idx1, idx2); + } + + void removeAllObjects() { + _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); + } + + void removeObject_inRange_(NSObject anObject, _NSRange range) { + _lib._objc_msgSend_443( + _id, _lib._sel_removeObject_inRange_1, anObject._id, range); + } + + void removeObject_(NSObject anObject) { + _lib._objc_msgSend_15(_id, _lib._sel_removeObject_1, anObject._id); + } + + void removeObjectIdenticalTo_inRange_(NSObject anObject, _NSRange range) { + _lib._objc_msgSend_443( + _id, _lib._sel_removeObjectIdenticalTo_inRange_1, anObject._id, range); + } + + void removeObjectIdenticalTo_(NSObject anObject) { + _lib._objc_msgSend_15( + _id, _lib._sel_removeObjectIdenticalTo_1, anObject._id); + } + + void removeObjectsFromIndices_numIndices_( + ffi.Pointer indices, int cnt) { + _lib._objc_msgSend_444( + _id, _lib._sel_removeObjectsFromIndices_numIndices_1, indices, cnt); + } + + void removeObjectsInArray_(NSArray? otherArray) { + _lib._objc_msgSend_441( + _id, _lib._sel_removeObjectsInArray_1, otherArray?._id ?? ffi.nullptr); + } + + void removeObjectsInRange_(_NSRange range) { + _lib._objc_msgSend_445(_id, _lib._sel_removeObjectsInRange_1, range); + } + + void replaceObjectsInRange_withObjectsFromArray_range_( + _NSRange range, NSArray? otherArray, _NSRange otherRange) { + _lib._objc_msgSend_446( + _id, + _lib._sel_replaceObjectsInRange_withObjectsFromArray_range_1, + range, + otherArray?._id ?? ffi.nullptr, + otherRange); + } + + void replaceObjectsInRange_withObjectsFromArray_( + _NSRange range, NSArray? otherArray) { + _lib._objc_msgSend_447( + _id, + _lib._sel_replaceObjectsInRange_withObjectsFromArray_1, + range, + otherArray?._id ?? ffi.nullptr); + } + + void setArray_(NSArray? otherArray) { + _lib._objc_msgSend_441( + _id, _lib._sel_setArray_1, otherArray?._id ?? ffi.nullptr); + } + + void sortUsingFunction_context_( + ffi.Pointer< + ffi.NativeFunction< + ffi.Long Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>> + compare, + ffi.Pointer context) { + _lib._objc_msgSend_448( + _id, _lib._sel_sortUsingFunction_context_1, compare, context); + } + + void sortUsingSelector_(ffi.Pointer comparator) { + _lib._objc_msgSend_7(_id, _lib._sel_sortUsingSelector_1, comparator); + } + + void insertObjects_atIndexes_(NSArray? objects, NSIndexSet? indexes) { + _lib._objc_msgSend_449(_id, _lib._sel_insertObjects_atIndexes_1, + objects?._id ?? ffi.nullptr, indexes?._id ?? ffi.nullptr); + } + + void removeObjectsAtIndexes_(NSIndexSet? indexes) { + _lib._objc_msgSend_450( + _id, _lib._sel_removeObjectsAtIndexes_1, indexes?._id ?? ffi.nullptr); + } + + void replaceObjectsAtIndexes_withObjects_( + NSIndexSet? indexes, NSArray? objects) { + _lib._objc_msgSend_451(_id, _lib._sel_replaceObjectsAtIndexes_withObjects_1, + indexes?._id ?? ffi.nullptr, objects?._id ?? ffi.nullptr); + } + + void setObject_atIndexedSubscript_(NSObject obj, int idx) { + _lib._objc_msgSend_438( + _id, _lib._sel_setObject_atIndexedSubscript_1, obj._id, idx); + } + + void sortUsingComparator_( + ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { + _lib._objc_msgSend_452(_id, _lib._sel_sortUsingComparator_1, cmptr._id); + } + + void sortWithOptions_usingComparator_( + int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { + _lib._objc_msgSend_453( + _id, _lib._sel_sortWithOptions_usingComparator_1, opts, cmptr._id); + } + + static NSMutableArray arrayWithCapacity_(SentryCocoa _lib, int numItems) { + final _ret = _lib._objc_msgSend_60( + _lib._class_NSMutableArray1, _lib._sel_arrayWithCapacity_1, numItems); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + static NSMutableArray arrayWithContentsOfFile_( + SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_454(_lib._class_NSMutableArray1, + _lib._sel_arrayWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + static NSMutableArray arrayWithContentsOfURL_(SentryCocoa _lib, NSURL? url) { + final _ret = _lib._objc_msgSend_455(_lib._class_NSMutableArray1, + _lib._sel_arrayWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + NSMutableArray initWithContentsOfFile_(NSString? path) { + final _ret = _lib._objc_msgSend_454( + _id, _lib._sel_initWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + NSMutableArray initWithContentsOfURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_455( + _id, _lib._sel_initWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + void applyDifference_(NSObject? difference) { + _lib._objc_msgSend_15( + _id, _lib._sel_applyDifference_1, difference?._id ?? ffi.nullptr); + } + + void sortUsingDescriptors_(NSArray? sortDescriptors) { + _lib._objc_msgSend_441(_id, _lib._sel_sortUsingDescriptors_1, + sortDescriptors?._id ?? ffi.nullptr); + } + + void filterUsingPredicate_(NSPredicate? predicate) { + _lib._objc_msgSend_456( + _id, _lib._sel_filterUsingPredicate_1, predicate?._id ?? ffi.nullptr); + } + + @override + NSMutableArray initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61( + _id, _lib._sel_initWithObjects_count_1, objects, cnt); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + static NSMutableArray array(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableArray1, _lib._sel_array1); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + static NSMutableArray arrayWithObject_(SentryCocoa _lib, NSObject anObject) { + final _ret = _lib._objc_msgSend_16( + _lib._class_NSMutableArray1, _lib._sel_arrayWithObject_1, anObject._id); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + static NSMutableArray arrayWithObjects_count_( + SentryCocoa _lib, ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61(_lib._class_NSMutableArray1, + _lib._sel_arrayWithObjects_count_1, objects, cnt); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + static NSMutableArray arrayWithObjects_(SentryCocoa _lib, NSObject firstObj) { + final _ret = _lib._objc_msgSend_16(_lib._class_NSMutableArray1, + _lib._sel_arrayWithObjects_1, firstObj._id); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + static NSMutableArray arrayWithArray_(SentryCocoa _lib, NSArray? array) { + final _ret = _lib._objc_msgSend_67(_lib._class_NSMutableArray1, + _lib._sel_arrayWithArray_1, array?._id ?? ffi.nullptr); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableArray initWithObjects_(NSObject firstObj) { + final _ret = + _lib._objc_msgSend_16(_id, _lib._sel_initWithObjects_1, firstObj._id); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableArray initWithArray_(NSArray? array) { + final _ret = _lib._objc_msgSend_67( + _id, _lib._sel_initWithArray_1, array?._id ?? ffi.nullptr); + return NSMutableArray._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableArray initWithArray_copyItems_(NSArray? array, bool flag) { + final _ret = _lib._objc_msgSend_118(_id, + _lib._sel_initWithArray_copyItems_1, array?._id ?? ffi.nullptr, flag); + return NSMutableArray._(_ret, _lib, retain: false, release: true); + } + + static NSArray arrayWithContentsOfURL_error_(SentryCocoa _lib, NSURL? url, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_119( + _lib._class_NSMutableArray1, + _lib._sel_arrayWithContentsOfURL_error_1, + url?._id ?? ffi.nullptr, + error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSMutableArray new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableArray1, _lib._sel_new1); + return NSMutableArray._(_ret, _lib, retain: false, release: true); + } + + static NSMutableArray allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSMutableArray1, _lib._sel_allocWithZone_1, zone); + return NSMutableArray._(_ret, _lib, retain: false, release: true); + } + + static NSMutableArray alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableArray1, _lib._sel_alloc1); + return NSMutableArray._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSMutableArray1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSMutableArray1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSMutableArray1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableArray1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSMutableArray1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSMutableArray1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSMutableArray1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSMutableArray1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableArray1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSMutableOrderedSet extends NSOrderedSet { + NSMutableOrderedSet._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMutableOrderedSet] that points to the same underlying object as [other]. + static NSMutableOrderedSet castFrom(T other) { + return NSMutableOrderedSet._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSMutableOrderedSet] that wraps the given raw object pointer. + static NSMutableOrderedSet castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMutableOrderedSet._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMutableOrderedSet]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMutableOrderedSet1); + } + + void insertObject_atIndex_(NSObject object, int idx) { + _lib._objc_msgSend_438( + _id, _lib._sel_insertObject_atIndex_1, object._id, idx); + } + + void removeObjectAtIndex_(int idx) { + _lib._objc_msgSend_439(_id, _lib._sel_removeObjectAtIndex_1, idx); + } + + void replaceObjectAtIndex_withObject_(int idx, NSObject object) { + _lib._objc_msgSend_440( + _id, _lib._sel_replaceObjectAtIndex_withObject_1, idx, object._id); + } + + @override + NSMutableOrderedSet initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableOrderedSet init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + NSMutableOrderedSet initWithCapacity_(int numItems) { + final _ret = + _lib._objc_msgSend_60(_id, _lib._sel_initWithCapacity_1, numItems); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + void addObject_(NSObject object) { + _lib._objc_msgSend_15(_id, _lib._sel_addObject_1, object._id); + } + + void addObjects_count_( + ffi.Pointer> objects, int count) { + _lib._objc_msgSend_467(_id, _lib._sel_addObjects_count_1, objects, count); + } + + void addObjectsFromArray_(NSArray? array) { + _lib._objc_msgSend_441( + _id, _lib._sel_addObjectsFromArray_1, array?._id ?? ffi.nullptr); + } + + void exchangeObjectAtIndex_withObjectAtIndex_(int idx1, int idx2) { + _lib._objc_msgSend_442( + _id, _lib._sel_exchangeObjectAtIndex_withObjectAtIndex_1, idx1, idx2); + } + + void moveObjectsAtIndexes_toIndex_(NSIndexSet? indexes, int idx) { + _lib._objc_msgSend_468(_id, _lib._sel_moveObjectsAtIndexes_toIndex_1, + indexes?._id ?? ffi.nullptr, idx); + } + + void insertObjects_atIndexes_(NSArray? objects, NSIndexSet? indexes) { + _lib._objc_msgSend_449(_id, _lib._sel_insertObjects_atIndexes_1, + objects?._id ?? ffi.nullptr, indexes?._id ?? ffi.nullptr); + } + + void setObject_atIndex_(NSObject obj, int idx) { + _lib._objc_msgSend_438(_id, _lib._sel_setObject_atIndex_1, obj._id, idx); + } + + void setObject_atIndexedSubscript_(NSObject obj, int idx) { + _lib._objc_msgSend_438( + _id, _lib._sel_setObject_atIndexedSubscript_1, obj._id, idx); + } + + void replaceObjectsInRange_withObjects_count_( + _NSRange range, ffi.Pointer> objects, int count) { + _lib._objc_msgSend_469( + _id, + _lib._sel_replaceObjectsInRange_withObjects_count_1, + range, + objects, + count); + } + + void replaceObjectsAtIndexes_withObjects_( + NSIndexSet? indexes, NSArray? objects) { + _lib._objc_msgSend_451(_id, _lib._sel_replaceObjectsAtIndexes_withObjects_1, + indexes?._id ?? ffi.nullptr, objects?._id ?? ffi.nullptr); + } + + void removeObjectsInRange_(_NSRange range) { + _lib._objc_msgSend_445(_id, _lib._sel_removeObjectsInRange_1, range); + } + + void removeObjectsAtIndexes_(NSIndexSet? indexes) { + _lib._objc_msgSend_450( + _id, _lib._sel_removeObjectsAtIndexes_1, indexes?._id ?? ffi.nullptr); + } + + void removeAllObjects() { + _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); + } + + void removeObject_(NSObject object) { + _lib._objc_msgSend_15(_id, _lib._sel_removeObject_1, object._id); + } + + void removeObjectsInArray_(NSArray? array) { + _lib._objc_msgSend_441( + _id, _lib._sel_removeObjectsInArray_1, array?._id ?? ffi.nullptr); + } + + void intersectOrderedSet_(NSOrderedSet? other) { + _lib._objc_msgSend_470( + _id, _lib._sel_intersectOrderedSet_1, other?._id ?? ffi.nullptr); + } + + void minusOrderedSet_(NSOrderedSet? other) { + _lib._objc_msgSend_470( + _id, _lib._sel_minusOrderedSet_1, other?._id ?? ffi.nullptr); + } + + void unionOrderedSet_(NSOrderedSet? other) { + _lib._objc_msgSend_470( + _id, _lib._sel_unionOrderedSet_1, other?._id ?? ffi.nullptr); + } + + void intersectSet_(NSSet? other) { + _lib._objc_msgSend_471( + _id, _lib._sel_intersectSet_1, other?._id ?? ffi.nullptr); + } + + void minusSet_(NSSet? other) { + _lib._objc_msgSend_471( + _id, _lib._sel_minusSet_1, other?._id ?? ffi.nullptr); + } + + void unionSet_(NSSet? other) { + _lib._objc_msgSend_471( + _id, _lib._sel_unionSet_1, other?._id ?? ffi.nullptr); + } + + void sortUsingComparator_( + ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { + _lib._objc_msgSend_452(_id, _lib._sel_sortUsingComparator_1, cmptr._id); + } + + void sortWithOptions_usingComparator_( + int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { + _lib._objc_msgSend_453( + _id, _lib._sel_sortWithOptions_usingComparator_1, opts, cmptr._id); + } + + void sortRange_options_usingComparator_(_NSRange range, int opts, + ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { + _lib._objc_msgSend_472(_id, _lib._sel_sortRange_options_usingComparator_1, + range, opts, cmptr._id); + } + + static NSMutableOrderedSet orderedSetWithCapacity_( + SentryCocoa _lib, int numItems) { + final _ret = _lib._objc_msgSend_60(_lib._class_NSMutableOrderedSet1, + _lib._sel_orderedSetWithCapacity_1, numItems); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + void applyDifference_(NSObject? difference) { + _lib._objc_msgSend_15( + _id, _lib._sel_applyDifference_1, difference?._id ?? ffi.nullptr); + } + + void sortUsingDescriptors_(NSArray? sortDescriptors) { + _lib._objc_msgSend_441(_id, _lib._sel_sortUsingDescriptors_1, + sortDescriptors?._id ?? ffi.nullptr); + } + + void filterUsingPredicate_(NSPredicate? p) { + _lib._objc_msgSend_456( + _id, _lib._sel_filterUsingPredicate_1, p?._id ?? ffi.nullptr); + } + + @override + NSMutableOrderedSet initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61( + _id, _lib._sel_initWithObjects_count_1, objects, cnt); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableOrderedSet orderedSet(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableOrderedSet1, _lib._sel_orderedSet1); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableOrderedSet orderedSetWithObject_( + SentryCocoa _lib, NSObject object) { + final _ret = _lib._objc_msgSend_16(_lib._class_NSMutableOrderedSet1, + _lib._sel_orderedSetWithObject_1, object._id); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableOrderedSet orderedSetWithObjects_count_( + SentryCocoa _lib, ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61(_lib._class_NSMutableOrderedSet1, + _lib._sel_orderedSetWithObjects_count_1, objects, cnt); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableOrderedSet orderedSetWithObjects_( + SentryCocoa _lib, NSObject firstObj) { + final _ret = _lib._objc_msgSend_16(_lib._class_NSMutableOrderedSet1, + _lib._sel_orderedSetWithObjects_1, firstObj._id); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableOrderedSet orderedSetWithOrderedSet_( + SentryCocoa _lib, NSOrderedSet? set) { + final _ret = _lib._objc_msgSend_459(_lib._class_NSMutableOrderedSet1, + _lib._sel_orderedSetWithOrderedSet_1, set?._id ?? ffi.nullptr); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableOrderedSet orderedSetWithOrderedSet_range_copyItems_( + SentryCocoa _lib, NSOrderedSet? set, _NSRange range, bool flag) { + final _ret = _lib._objc_msgSend_460( + _lib._class_NSMutableOrderedSet1, + _lib._sel_orderedSetWithOrderedSet_range_copyItems_1, + set?._id ?? ffi.nullptr, + range, + flag); + return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); + } + + static NSMutableOrderedSet orderedSetWithArray_( + SentryCocoa _lib, NSArray? array) { + final _ret = _lib._objc_msgSend_67(_lib._class_NSMutableOrderedSet1, + _lib._sel_orderedSetWithArray_1, array?._id ?? ffi.nullptr); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableOrderedSet orderedSetWithArray_range_copyItems_( + SentryCocoa _lib, NSArray? array, _NSRange range, bool flag) { + final _ret = _lib._objc_msgSend_461( + _lib._class_NSMutableOrderedSet1, + _lib._sel_orderedSetWithArray_range_copyItems_1, + array?._id ?? ffi.nullptr, + range, + flag); + return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); + } + + static NSMutableOrderedSet orderedSetWithSet_(SentryCocoa _lib, NSSet? set) { + final _ret = _lib._objc_msgSend_382(_lib._class_NSMutableOrderedSet1, + _lib._sel_orderedSetWithSet_1, set?._id ?? ffi.nullptr); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableOrderedSet orderedSetWithSet_copyItems_( + SentryCocoa _lib, NSSet? set, bool flag) { + final _ret = _lib._objc_msgSend_383(_lib._class_NSMutableOrderedSet1, + _lib._sel_orderedSetWithSet_copyItems_1, set?._id ?? ffi.nullptr, flag); + return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableOrderedSet initWithObject_(NSObject object) { + final _ret = + _lib._objc_msgSend_16(_id, _lib._sel_initWithObject_1, object._id); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableOrderedSet initWithObjects_(NSObject firstObj) { + final _ret = + _lib._objc_msgSend_16(_id, _lib._sel_initWithObjects_1, firstObj._id); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableOrderedSet initWithOrderedSet_(NSOrderedSet? set) { + final _ret = _lib._objc_msgSend_459( + _id, _lib._sel_initWithOrderedSet_1, set?._id ?? ffi.nullptr); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableOrderedSet initWithOrderedSet_copyItems_( + NSOrderedSet? set, bool flag) { + final _ret = _lib._objc_msgSend_462( + _id, + _lib._sel_initWithOrderedSet_copyItems_1, + set?._id ?? ffi.nullptr, + flag); + return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableOrderedSet initWithOrderedSet_range_copyItems_( + NSOrderedSet? set, _NSRange range, bool flag) { + final _ret = _lib._objc_msgSend_460( + _id, + _lib._sel_initWithOrderedSet_range_copyItems_1, + set?._id ?? ffi.nullptr, + range, + flag); + return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableOrderedSet initWithArray_(NSArray? array) { + final _ret = _lib._objc_msgSend_67( + _id, _lib._sel_initWithArray_1, array?._id ?? ffi.nullptr); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableOrderedSet initWithArray_copyItems_(NSArray? set, bool flag) { + final _ret = _lib._objc_msgSend_118(_id, + _lib._sel_initWithArray_copyItems_1, set?._id ?? ffi.nullptr, flag); + return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableOrderedSet initWithArray_range_copyItems_( + NSArray? set, _NSRange range, bool flag) { + final _ret = _lib._objc_msgSend_461( + _id, + _lib._sel_initWithArray_range_copyItems_1, + set?._id ?? ffi.nullptr, + range, + flag); + return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableOrderedSet initWithSet_(NSSet? set) { + final _ret = _lib._objc_msgSend_382( + _id, _lib._sel_initWithSet_1, set?._id ?? ffi.nullptr); + return NSMutableOrderedSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableOrderedSet initWithSet_copyItems_(NSSet? set, bool flag) { + final _ret = _lib._objc_msgSend_383( + _id, _lib._sel_initWithSet_copyItems_1, set?._id ?? ffi.nullptr, flag); + return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); + } + + static NSMutableOrderedSet new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableOrderedSet1, _lib._sel_new1); + return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); + } + + static NSMutableOrderedSet allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSMutableOrderedSet1, _lib._sel_allocWithZone_1, zone); + return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); + } + + static NSMutableOrderedSet alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableOrderedSet1, _lib._sel_alloc1); + return NSMutableOrderedSet._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSMutableOrderedSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSMutableOrderedSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSMutableOrderedSet1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableOrderedSet1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSMutableOrderedSet1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSMutableOrderedSet1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSMutableOrderedSet1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSMutableOrderedSet1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableOrderedSet1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSOrderedSet extends NSObject { + NSOrderedSet._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSOrderedSet] that points to the same underlying object as [other]. + static NSOrderedSet castFrom(T other) { + return NSOrderedSet._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSOrderedSet] that wraps the given raw object pointer. + static NSOrderedSet castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSOrderedSet._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSOrderedSet]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSOrderedSet1); + } + + int get count { + return _lib._objc_msgSend_10(_id, _lib._sel_count1); + } + + NSObject objectAtIndex_(int idx) { + final _ret = _lib._objc_msgSend_60(_id, _lib._sel_objectAtIndex_1, idx); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + int indexOfObject_(NSObject object) { + return _lib._objc_msgSend_69(_id, _lib._sel_indexOfObject_1, object._id); + } + + @override + NSOrderedSet init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + NSOrderedSet initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61( + _id, _lib._sel_initWithObjects_count_1, objects, cnt); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + NSOrderedSet initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + void getObjects_range_( + ffi.Pointer> objects, _NSRange range) { + _lib._objc_msgSend_68(_id, _lib._sel_getObjects_range_1, objects, range); + } + + NSArray objectsAtIndexes_(NSIndexSet? indexes) { + final _ret = _lib._objc_msgSend_105( + _id, _lib._sel_objectsAtIndexes_1, indexes?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSObject get firstObject { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_firstObject1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject get lastObject { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_lastObject1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool isEqualToOrderedSet_(NSOrderedSet? other) { + return _lib._objc_msgSend_457( + _id, _lib._sel_isEqualToOrderedSet_1, other?._id ?? ffi.nullptr); + } + + bool containsObject_(NSObject object) { + return _lib._objc_msgSend_0(_id, _lib._sel_containsObject_1, object._id); + } + + bool intersectsOrderedSet_(NSOrderedSet? other) { + return _lib._objc_msgSend_457( + _id, _lib._sel_intersectsOrderedSet_1, other?._id ?? ffi.nullptr); + } + + bool intersectsSet_(NSSet? set) { + return _lib._objc_msgSend_374( + _id, _lib._sel_intersectsSet_1, set?._id ?? ffi.nullptr); + } + + bool isSubsetOfOrderedSet_(NSOrderedSet? other) { + return _lib._objc_msgSend_457( + _id, _lib._sel_isSubsetOfOrderedSet_1, other?._id ?? ffi.nullptr); + } + + bool isSubsetOfSet_(NSSet? set) { + return _lib._objc_msgSend_374( + _id, _lib._sel_isSubsetOfSet_1, set?._id ?? ffi.nullptr); + } + + NSObject objectAtIndexedSubscript_(int idx) { + final _ret = + _lib._objc_msgSend_60(_id, _lib._sel_objectAtIndexedSubscript_1, idx); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSEnumerator objectEnumerator() { + final _ret = _lib._objc_msgSend_72(_id, _lib._sel_objectEnumerator1); + return NSEnumerator._(_ret, _lib, retain: true, release: true); + } + + NSEnumerator reverseObjectEnumerator() { + final _ret = _lib._objc_msgSend_72(_id, _lib._sel_reverseObjectEnumerator1); + return NSEnumerator._(_ret, _lib, retain: true, release: true); + } + + NSOrderedSet? get reversedOrderedSet { + final _ret = _lib._objc_msgSend_458(_id, _lib._sel_reversedOrderedSet1); + return _ret.address == 0 + ? null + : NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + NSArray? get array { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_array1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSSet? get set1 { + final _ret = _lib._objc_msgSend_295(_id, _lib._sel_set1); + return _ret.address == 0 + ? null + : NSSet._(_ret, _lib, retain: true, release: true); + } + + void enumerateObjectsUsingBlock_( + ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { + _lib._objc_msgSend_106( + _id, _lib._sel_enumerateObjectsUsingBlock_1, block._id); + } + + void enumerateObjectsWithOptions_usingBlock_( + int opts, ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { + _lib._objc_msgSend_107(_id, + _lib._sel_enumerateObjectsWithOptions_usingBlock_1, opts, block._id); + } + + void enumerateObjectsAtIndexes_options_usingBlock_(NSIndexSet? s, int opts, + ObjCBlock_ffiVoid_ObjCObject_ffiUnsignedLong_bool block) { + _lib._objc_msgSend_108( + _id, + _lib._sel_enumerateObjectsAtIndexes_options_usingBlock_1, + s?._id ?? ffi.nullptr, + opts, + block._id); + } + + int indexOfObjectPassingTest_( + ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + return _lib._objc_msgSend_109( + _id, _lib._sel_indexOfObjectPassingTest_1, predicate._id); + } + + int indexOfObjectWithOptions_passingTest_( + int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + return _lib._objc_msgSend_110(_id, + _lib._sel_indexOfObjectWithOptions_passingTest_1, opts, predicate._id); + } + + int indexOfObjectAtIndexes_options_passingTest_(NSIndexSet? s, int opts, + ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + return _lib._objc_msgSend_111( + _id, + _lib._sel_indexOfObjectAtIndexes_options_passingTest_1, + s?._id ?? ffi.nullptr, + opts, + predicate._id); + } + + NSIndexSet indexesOfObjectsPassingTest_( + ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _lib._objc_msgSend_112( + _id, _lib._sel_indexesOfObjectsPassingTest_1, predicate._id); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + NSIndexSet indexesOfObjectsWithOptions_passingTest_( + int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _lib._objc_msgSend_113( + _id, + _lib._sel_indexesOfObjectsWithOptions_passingTest_1, + opts, + predicate._id); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + NSIndexSet indexesOfObjectsAtIndexes_options_passingTest_(NSIndexSet? s, + int opts, ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool predicate) { + final _ret = _lib._objc_msgSend_114( + _id, + _lib._sel_indexesOfObjectsAtIndexes_options_passingTest_1, + s?._id ?? ffi.nullptr, + opts, + predicate._id); + return NSIndexSet._(_ret, _lib, retain: true, release: true); + } + + int indexOfObject_inSortedRange_options_usingComparator_( + NSObject object, + _NSRange range, + int opts, + ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmp) { + return _lib._objc_msgSend_117( + _id, + _lib._sel_indexOfObject_inSortedRange_options_usingComparator_1, + object._id, + range, + opts, + cmp._id); + } + + NSArray sortedArrayUsingComparator_( + ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { + final _ret = _lib._objc_msgSend_115( + _id, _lib._sel_sortedArrayUsingComparator_1, cmptr._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray sortedArrayWithOptions_usingComparator_( + int opts, ObjCBlock_NSComparisonResult_ObjCObject_ObjCObject cmptr) { + final _ret = _lib._objc_msgSend_116(_id, + _lib._sel_sortedArrayWithOptions_usingComparator_1, opts, cmptr._id); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString? get description { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString descriptionWithLocale_(NSObject locale) { + final _ret = _lib._objc_msgSend_65( + _id, _lib._sel_descriptionWithLocale_1, locale._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString descriptionWithLocale_indent_(NSObject locale, int level) { + final _ret = _lib._objc_msgSend_66( + _id, _lib._sel_descriptionWithLocale_indent_1, locale._id, level); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSOrderedSet orderedSet(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSOrderedSet1, _lib._sel_orderedSet1); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSOrderedSet orderedSetWithObject_(SentryCocoa _lib, NSObject object) { + final _ret = _lib._objc_msgSend_16(_lib._class_NSOrderedSet1, + _lib._sel_orderedSetWithObject_1, object._id); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSOrderedSet orderedSetWithObjects_count_( + SentryCocoa _lib, ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61(_lib._class_NSOrderedSet1, + _lib._sel_orderedSetWithObjects_count_1, objects, cnt); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSOrderedSet orderedSetWithObjects_( + SentryCocoa _lib, NSObject firstObj) { + final _ret = _lib._objc_msgSend_16(_lib._class_NSOrderedSet1, + _lib._sel_orderedSetWithObjects_1, firstObj._id); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSOrderedSet orderedSetWithOrderedSet_( + SentryCocoa _lib, NSOrderedSet? set) { + final _ret = _lib._objc_msgSend_459(_lib._class_NSOrderedSet1, + _lib._sel_orderedSetWithOrderedSet_1, set?._id ?? ffi.nullptr); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSOrderedSet orderedSetWithOrderedSet_range_copyItems_( + SentryCocoa _lib, NSOrderedSet? set, _NSRange range, bool flag) { + final _ret = _lib._objc_msgSend_460( + _lib._class_NSOrderedSet1, + _lib._sel_orderedSetWithOrderedSet_range_copyItems_1, + set?._id ?? ffi.nullptr, + range, + flag); + return NSOrderedSet._(_ret, _lib, retain: false, release: true); + } + + static NSOrderedSet orderedSetWithArray_(SentryCocoa _lib, NSArray? array) { + final _ret = _lib._objc_msgSend_67(_lib._class_NSOrderedSet1, + _lib._sel_orderedSetWithArray_1, array?._id ?? ffi.nullptr); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSOrderedSet orderedSetWithArray_range_copyItems_( + SentryCocoa _lib, NSArray? array, _NSRange range, bool flag) { + final _ret = _lib._objc_msgSend_461( + _lib._class_NSOrderedSet1, + _lib._sel_orderedSetWithArray_range_copyItems_1, + array?._id ?? ffi.nullptr, + range, + flag); + return NSOrderedSet._(_ret, _lib, retain: false, release: true); + } + + static NSOrderedSet orderedSetWithSet_(SentryCocoa _lib, NSSet? set) { + final _ret = _lib._objc_msgSend_382(_lib._class_NSOrderedSet1, + _lib._sel_orderedSetWithSet_1, set?._id ?? ffi.nullptr); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSOrderedSet orderedSetWithSet_copyItems_( + SentryCocoa _lib, NSSet? set, bool flag) { + final _ret = _lib._objc_msgSend_383(_lib._class_NSOrderedSet1, + _lib._sel_orderedSetWithSet_copyItems_1, set?._id ?? ffi.nullptr, flag); + return NSOrderedSet._(_ret, _lib, retain: false, release: true); + } + + NSOrderedSet initWithObject_(NSObject object) { + final _ret = + _lib._objc_msgSend_16(_id, _lib._sel_initWithObject_1, object._id); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + NSOrderedSet initWithObjects_(NSObject firstObj) { + final _ret = + _lib._objc_msgSend_16(_id, _lib._sel_initWithObjects_1, firstObj._id); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + NSOrderedSet initWithOrderedSet_(NSOrderedSet? set) { + final _ret = _lib._objc_msgSend_459( + _id, _lib._sel_initWithOrderedSet_1, set?._id ?? ffi.nullptr); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + NSOrderedSet initWithOrderedSet_copyItems_(NSOrderedSet? set, bool flag) { + final _ret = _lib._objc_msgSend_462( + _id, + _lib._sel_initWithOrderedSet_copyItems_1, + set?._id ?? ffi.nullptr, + flag); + return NSOrderedSet._(_ret, _lib, retain: false, release: true); + } + + NSOrderedSet initWithOrderedSet_range_copyItems_( + NSOrderedSet? set, _NSRange range, bool flag) { + final _ret = _lib._objc_msgSend_460( + _id, + _lib._sel_initWithOrderedSet_range_copyItems_1, + set?._id ?? ffi.nullptr, + range, + flag); + return NSOrderedSet._(_ret, _lib, retain: false, release: true); + } + + NSOrderedSet initWithArray_(NSArray? array) { + final _ret = _lib._objc_msgSend_67( + _id, _lib._sel_initWithArray_1, array?._id ?? ffi.nullptr); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + NSOrderedSet initWithArray_copyItems_(NSArray? set, bool flag) { + final _ret = _lib._objc_msgSend_118(_id, + _lib._sel_initWithArray_copyItems_1, set?._id ?? ffi.nullptr, flag); + return NSOrderedSet._(_ret, _lib, retain: false, release: true); + } + + NSOrderedSet initWithArray_range_copyItems_( + NSArray? set, _NSRange range, bool flag) { + final _ret = _lib._objc_msgSend_461( + _id, + _lib._sel_initWithArray_range_copyItems_1, + set?._id ?? ffi.nullptr, + range, + flag); + return NSOrderedSet._(_ret, _lib, retain: false, release: true); + } + + NSOrderedSet initWithSet_(NSSet? set) { + final _ret = _lib._objc_msgSend_382( + _id, _lib._sel_initWithSet_1, set?._id ?? ffi.nullptr); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + NSOrderedSet initWithSet_copyItems_(NSSet? set, bool flag) { + final _ret = _lib._objc_msgSend_383( + _id, _lib._sel_initWithSet_copyItems_1, set?._id ?? ffi.nullptr, flag); + return NSOrderedSet._(_ret, _lib, retain: false, release: true); + } + + NSObject differenceFromOrderedSet_withOptions_usingEquivalenceTest_( + NSOrderedSet? other, + int options, + ObjCBlock_bool_ObjCObject_ObjCObject block) { + final _ret = _lib._objc_msgSend_463( + _id, + _lib._sel_differenceFromOrderedSet_withOptions_usingEquivalenceTest_1, + other?._id ?? ffi.nullptr, + options, + block._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject differenceFromOrderedSet_withOptions_( + NSOrderedSet? other, int options) { + final _ret = _lib._objc_msgSend_464( + _id, + _lib._sel_differenceFromOrderedSet_withOptions_1, + other?._id ?? ffi.nullptr, + options); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject differenceFromOrderedSet_(NSOrderedSet? other) { + final _ret = _lib._objc_msgSend_459( + _id, _lib._sel_differenceFromOrderedSet_1, other?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSOrderedSet orderedSetByApplyingDifference_(NSObject? difference) { + final _ret = _lib._objc_msgSend_465( + _id, + _lib._sel_orderedSetByApplyingDifference_1, + difference?._id ?? ffi.nullptr); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSObject valueForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_valueForKey_1, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + @override + void setValue_forKey_(NSObject value, NSString? key) { + _lib._objc_msgSend_126( + _id, _lib._sel_setValue_forKey_1, value._id, key?._id ?? ffi.nullptr); + } + + @override + void addObserver_forKeyPath_options_context_(NSObject? observer, + NSString? keyPath, int options, ffi.Pointer context) { + _lib._objc_msgSend_130( + _id, + _lib._sel_addObserver_forKeyPath_options_context_1, + observer?._id ?? ffi.nullptr, + keyPath?._id ?? ffi.nullptr, + options, + context); + } + + @override + void removeObserver_forKeyPath_context_( + NSObject? observer, NSString? keyPath, ffi.Pointer context) { + _lib._objc_msgSend_131(_id, _lib._sel_removeObserver_forKeyPath_context_1, + observer?._id ?? ffi.nullptr, keyPath?._id ?? ffi.nullptr, context); + } + + @override + void removeObserver_forKeyPath_(NSObject? observer, NSString? keyPath) { + _lib._objc_msgSend_132(_id, _lib._sel_removeObserver_forKeyPath_1, + observer?._id ?? ffi.nullptr, keyPath?._id ?? ffi.nullptr); + } + + NSArray sortedArrayUsingDescriptors_(NSArray? sortDescriptors) { + final _ret = _lib._objc_msgSend_63( + _id, + _lib._sel_sortedArrayUsingDescriptors_1, + sortDescriptors?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSOrderedSet filteredOrderedSetUsingPredicate_(NSPredicate? p) { + final _ret = _lib._objc_msgSend_466(_id, + _lib._sel_filteredOrderedSetUsingPredicate_1, p?._id ?? ffi.nullptr); + return NSOrderedSet._(_ret, _lib, retain: true, release: true); + } + + static NSOrderedSet new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSOrderedSet1, _lib._sel_new1); + return NSOrderedSet._(_ret, _lib, retain: false, release: true); + } + + static NSOrderedSet allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSOrderedSet1, _lib._sel_allocWithZone_1, zone); + return NSOrderedSet._(_ret, _lib, retain: false, release: true); + } + + static NSOrderedSet alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSOrderedSet1, _lib._sel_alloc1); + return NSOrderedSet._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSOrderedSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSOrderedSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSOrderedSet1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSOrderedSet1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSOrderedSet1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSOrderedSet1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSOrderedSet1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSOrderedSet1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSOrderedSet1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSMutableSet extends NSSet { + NSMutableSet._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMutableSet] that points to the same underlying object as [other]. + static NSMutableSet castFrom(T other) { + return NSMutableSet._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSMutableSet] that wraps the given raw object pointer. + static NSMutableSet castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMutableSet._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMutableSet]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSMutableSet1); + } + + void addObject_(NSObject object) { + _lib._objc_msgSend_15(_id, _lib._sel_addObject_1, object._id); + } + + void removeObject_(NSObject object) { + _lib._objc_msgSend_15(_id, _lib._sel_removeObject_1, object._id); + } + + @override + NSMutableSet initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableSet init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + NSMutableSet initWithCapacity_(int numItems) { + final _ret = + _lib._objc_msgSend_60(_id, _lib._sel_initWithCapacity_1, numItems); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + void addObjectsFromArray_(NSArray? array) { + _lib._objc_msgSend_441( + _id, _lib._sel_addObjectsFromArray_1, array?._id ?? ffi.nullptr); + } + + void intersectSet_(NSSet? otherSet) { + _lib._objc_msgSend_471( + _id, _lib._sel_intersectSet_1, otherSet?._id ?? ffi.nullptr); + } + + void minusSet_(NSSet? otherSet) { + _lib._objc_msgSend_471( + _id, _lib._sel_minusSet_1, otherSet?._id ?? ffi.nullptr); + } + + void removeAllObjects() { + _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); + } + + void unionSet_(NSSet? otherSet) { + _lib._objc_msgSend_471( + _id, _lib._sel_unionSet_1, otherSet?._id ?? ffi.nullptr); + } + + void setSet_(NSSet? otherSet) { + _lib._objc_msgSend_471( + _id, _lib._sel_setSet_1, otherSet?._id ?? ffi.nullptr); + } + + static NSMutableSet setWithCapacity_(SentryCocoa _lib, int numItems) { + final _ret = _lib._objc_msgSend_60( + _lib._class_NSMutableSet1, _lib._sel_setWithCapacity_1, numItems); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + void filterUsingPredicate_(NSPredicate? predicate) { + _lib._objc_msgSend_456( + _id, _lib._sel_filterUsingPredicate_1, predicate?._id ?? ffi.nullptr); + } + + @override + NSMutableSet initWithObjects_count_( + ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61( + _id, _lib._sel_initWithObjects_count_1, objects, cnt); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableSet set1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableSet1, _lib._sel_set1); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableSet setWithObject_(SentryCocoa _lib, NSObject object) { + final _ret = _lib._objc_msgSend_16( + _lib._class_NSMutableSet1, _lib._sel_setWithObject_1, object._id); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableSet setWithObjects_count_( + SentryCocoa _lib, ffi.Pointer> objects, int cnt) { + final _ret = _lib._objc_msgSend_61(_lib._class_NSMutableSet1, + _lib._sel_setWithObjects_count_1, objects, cnt); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableSet setWithObjects_(SentryCocoa _lib, NSObject firstObj) { + final _ret = _lib._objc_msgSend_16( + _lib._class_NSMutableSet1, _lib._sel_setWithObjects_1, firstObj._id); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableSet setWithSet_(SentryCocoa _lib, NSSet? set) { + final _ret = _lib._objc_msgSend_382(_lib._class_NSMutableSet1, + _lib._sel_setWithSet_1, set?._id ?? ffi.nullptr); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableSet setWithArray_(SentryCocoa _lib, NSArray? array) { + final _ret = _lib._objc_msgSend_67(_lib._class_NSMutableSet1, + _lib._sel_setWithArray_1, array?._id ?? ffi.nullptr); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableSet initWithObjects_(NSObject firstObj) { + final _ret = + _lib._objc_msgSend_16(_id, _lib._sel_initWithObjects_1, firstObj._id); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableSet initWithSet_(NSSet? set) { + final _ret = _lib._objc_msgSend_382( + _id, _lib._sel_initWithSet_1, set?._id ?? ffi.nullptr); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableSet initWithSet_copyItems_(NSSet? set, bool flag) { + final _ret = _lib._objc_msgSend_383( + _id, _lib._sel_initWithSet_copyItems_1, set?._id ?? ffi.nullptr, flag); + return NSMutableSet._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableSet initWithArray_(NSArray? array) { + final _ret = _lib._objc_msgSend_67( + _id, _lib._sel_initWithArray_1, array?._id ?? ffi.nullptr); + return NSMutableSet._(_ret, _lib, retain: true, release: true); + } + + static NSMutableSet new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableSet1, _lib._sel_new1); + return NSMutableSet._(_ret, _lib, retain: false, release: true); + } + + static NSMutableSet allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSMutableSet1, _lib._sel_allocWithZone_1, zone); + return NSMutableSet._(_ret, _lib, retain: false, release: true); + } + + static NSMutableSet alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableSet1, _lib._sel_alloc1); + return NSMutableSet._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSMutableSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSMutableSet1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableSet1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableSet1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSMutableSet1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSMutableSet1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSMutableSet1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSMutableSet1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableSet1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSKeyValueChange { + static const int NSKeyValueChangeSetting = 1; + static const int NSKeyValueChangeInsertion = 2; + static const int NSKeyValueChangeRemoval = 3; + static const int NSKeyValueChangeReplacement = 4; +} + +abstract class NSKeyValueSetMutationKind { + static const int NSKeyValueUnionSetMutation = 1; + static const int NSKeyValueMinusSetMutation = 2; + static const int NSKeyValueIntersectSetMutation = 3; + static const int NSKeyValueSetSetMutation = 4; +} + +class NSKeyedArchiver extends NSCoder { + NSKeyedArchiver._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSKeyedArchiver] that points to the same underlying object as [other]. + static NSKeyedArchiver castFrom(T other) { + return NSKeyedArchiver._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSKeyedArchiver] that wraps the given raw object pointer. + static NSKeyedArchiver castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSKeyedArchiver._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSKeyedArchiver]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSKeyedArchiver1); + } + + NSKeyedArchiver initRequiringSecureCoding_(bool requiresSecureCoding) { + final _ret = _lib._objc_msgSend_481( + _id, _lib._sel_initRequiringSecureCoding_1, requiresSecureCoding); + return NSKeyedArchiver._(_ret, _lib, retain: true, release: true); + } + + static NSData archivedDataWithRootObject_requiringSecureCoding_error_( + SentryCocoa _lib, + NSObject object, + bool requiresSecureCoding, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_482( + _lib._class_NSKeyedArchiver1, + _lib._sel_archivedDataWithRootObject_requiringSecureCoding_error_1, + object._id, + requiresSecureCoding, + error); + return NSData._(_ret, _lib, retain: true, release: true); + } + + @override + NSKeyedArchiver init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSKeyedArchiver._(_ret, _lib, retain: true, release: true); + } + + NSKeyedArchiver initForWritingWithMutableData_(NSMutableData? data) { + final _ret = _lib._objc_msgSend_487(_id, + _lib._sel_initForWritingWithMutableData_1, data?._id ?? ffi.nullptr); + return NSKeyedArchiver._(_ret, _lib, retain: true, release: true); + } + + static NSData archivedDataWithRootObject_( + SentryCocoa _lib, NSObject rootObject) { + final _ret = _lib._objc_msgSend_488(_lib._class_NSKeyedArchiver1, + _lib._sel_archivedDataWithRootObject_1, rootObject._id); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static bool archiveRootObject_toFile_( + SentryCocoa _lib, NSObject rootObject, NSString? path) { + return _lib._objc_msgSend_240( + _lib._class_NSKeyedArchiver1, + _lib._sel_archiveRootObject_toFile_1, + rootObject._id, + path?._id ?? ffi.nullptr); + } + + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + set delegate(NSObject? value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + } + + int get outputFormat { + return _lib._objc_msgSend_489(_id, _lib._sel_outputFormat1); + } + + set outputFormat(int value) { + return _lib._objc_msgSend_490(_id, _lib._sel_setOutputFormat_1, value); + } + + NSData? get encodedData { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_encodedData1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + void finishEncoding() { + _lib._objc_msgSend_1(_id, _lib._sel_finishEncoding1); + } + + static void setClassName_forClass_( + SentryCocoa _lib, NSString? codedName, NSObject cls) { + _lib._objc_msgSend_491( + _lib._class_NSKeyedArchiver1, + _lib._sel_setClassName_forClass_1, + codedName?._id ?? ffi.nullptr, + cls._id); + } + + static NSString classNameForClass_(SentryCocoa _lib, NSObject cls) { + final _ret = _lib._objc_msgSend_65( + _lib._class_NSKeyedArchiver1, _lib._sel_classNameForClass_1, cls._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + @override + void encodeObject_forKey_(NSObject object, NSString? key) { + _lib._objc_msgSend_126(_id, _lib._sel_encodeObject_forKey_1, object._id, + key?._id ?? ffi.nullptr); + } + + @override + void encodeConditionalObject_forKey_(NSObject object, NSString? key) { + _lib._objc_msgSend_126(_id, _lib._sel_encodeConditionalObject_forKey_1, + object._id, key?._id ?? ffi.nullptr); + } + + @override + void encodeBool_forKey_(bool value, NSString? key) { + _lib._objc_msgSend_272( + _id, _lib._sel_encodeBool_forKey_1, value, key?._id ?? ffi.nullptr); + } + + @override + void encodeInt_forKey_(int value, NSString? key) { + _lib._objc_msgSend_273( + _id, _lib._sel_encodeInt_forKey_1, value, key?._id ?? ffi.nullptr); + } + + @override + void encodeInt32_forKey_(int value, NSString? key) { + _lib._objc_msgSend_274( + _id, _lib._sel_encodeInt32_forKey_1, value, key?._id ?? ffi.nullptr); + } + + @override + void encodeInt64_forKey_(int value, NSString? key) { + _lib._objc_msgSend_275( + _id, _lib._sel_encodeInt64_forKey_1, value, key?._id ?? ffi.nullptr); + } + + @override + void encodeFloat_forKey_(double value, NSString? key) { + _lib._objc_msgSend_276( + _id, _lib._sel_encodeFloat_forKey_1, value, key?._id ?? ffi.nullptr); + } + + @override + void encodeDouble_forKey_(double value, NSString? key) { + _lib._objc_msgSend_277( + _id, _lib._sel_encodeDouble_forKey_1, value, key?._id ?? ffi.nullptr); + } + + @override + void encodeBytes_length_forKey_( + ffi.Pointer bytes, int length, NSString? key) { + _lib._objc_msgSend_278(_id, _lib._sel_encodeBytes_length_forKey_1, bytes, + length, key?._id ?? ffi.nullptr); + } + + @override + bool get requiresSecureCoding { + return _lib._objc_msgSend_12(_id, _lib._sel_requiresSecureCoding1); + } + + set requiresSecureCoding(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setRequiresSecureCoding_1, value); + } + + static NSKeyedArchiver new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSKeyedArchiver1, _lib._sel_new1); + return NSKeyedArchiver._(_ret, _lib, retain: false, release: true); + } + + static NSKeyedArchiver allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSKeyedArchiver1, _lib._sel_allocWithZone_1, zone); + return NSKeyedArchiver._(_ret, _lib, retain: false, release: true); + } + + static NSKeyedArchiver alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSKeyedArchiver1, _lib._sel_alloc1); + return NSKeyedArchiver._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSKeyedArchiver1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSKeyedArchiver1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSKeyedArchiver1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSKeyedArchiver1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSKeyedArchiver1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSKeyedArchiver1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSKeyedArchiver1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSKeyedArchiver1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSKeyedArchiver1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSMutableData extends NSData { + NSMutableData._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMutableData] that points to the same underlying object as [other]. + static NSMutableData castFrom(T other) { + return NSMutableData._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSMutableData] that wraps the given raw object pointer. + static NSMutableData castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMutableData._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMutableData]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSMutableData1); + } + + ffi.Pointer get mutableBytes { + return _lib._objc_msgSend_19(_id, _lib._sel_mutableBytes1); + } + + @override + int get length { + return _lib._objc_msgSend_10(_id, _lib._sel_length1); + } + + set length(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setLength_1, value); + } + + void appendBytes_length_(ffi.Pointer bytes, int length) { + _lib._objc_msgSend_21(_id, _lib._sel_appendBytes_length_1, bytes, length); + } + + void appendData_(NSData? other) { + _lib._objc_msgSend_263( + _id, _lib._sel_appendData_1, other?._id ?? ffi.nullptr); + } + + void increaseLengthBy_(int extraLength) { + _lib._objc_msgSend_439(_id, _lib._sel_increaseLengthBy_1, extraLength); + } + + void replaceBytesInRange_withBytes_( + _NSRange range, ffi.Pointer bytes) { + _lib._objc_msgSend_484( + _id, _lib._sel_replaceBytesInRange_withBytes_1, range, bytes); + } + + void resetBytesInRange_(_NSRange range) { + _lib._objc_msgSend_445(_id, _lib._sel_resetBytesInRange_1, range); + } + + void setData_(NSData? data) { + _lib._objc_msgSend_263(_id, _lib._sel_setData_1, data?._id ?? ffi.nullptr); + } + + void replaceBytesInRange_withBytes_length_(_NSRange range, + ffi.Pointer replacementBytes, int replacementLength) { + _lib._objc_msgSend_485( + _id, + _lib._sel_replaceBytesInRange_withBytes_length_1, + range, + replacementBytes, + replacementLength); + } + + static NSMutableData dataWithCapacity_(SentryCocoa _lib, int aNumItems) { + final _ret = _lib._objc_msgSend_60( + _lib._class_NSMutableData1, _lib._sel_dataWithCapacity_1, aNumItems); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + static NSMutableData dataWithLength_(SentryCocoa _lib, int length) { + final _ret = _lib._objc_msgSend_60( + _lib._class_NSMutableData1, _lib._sel_dataWithLength_1, length); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + NSMutableData initWithCapacity_(int capacity) { + final _ret = + _lib._objc_msgSend_60(_id, _lib._sel_initWithCapacity_1, capacity); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + NSMutableData initWithLength_(int length) { + final _ret = _lib._objc_msgSend_60(_id, _lib._sel_initWithLength_1, length); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + bool decompressUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + return _lib._objc_msgSend_486( + _id, _lib._sel_decompressUsingAlgorithm_error_1, algorithm, error); + } + + bool compressUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + return _lib._objc_msgSend_486( + _id, _lib._sel_compressUsingAlgorithm_error_1, algorithm, error); + } + + static NSMutableData data(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableData1, _lib._sel_data1); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + static NSMutableData dataWithBytes_length_( + SentryCocoa _lib, ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_252(_lib._class_NSMutableData1, + _lib._sel_dataWithBytes_length_1, bytes, length); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + static NSMutableData dataWithBytesNoCopy_length_( + SentryCocoa _lib, ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_252(_lib._class_NSMutableData1, + _lib._sel_dataWithBytesNoCopy_length_1, bytes, length); + return NSMutableData._(_ret, _lib, retain: false, release: true); + } + + static NSMutableData dataWithBytesNoCopy_length_freeWhenDone_( + SentryCocoa _lib, ffi.Pointer bytes, int length, bool b) { + final _ret = _lib._objc_msgSend_253(_lib._class_NSMutableData1, + _lib._sel_dataWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); + return NSMutableData._(_ret, _lib, retain: false, release: true); + } + + static NSMutableData dataWithContentsOfFile_options_error_( + SentryCocoa _lib, + NSString? path, + int readOptionsMask, + ffi.Pointer> errorPtr) { + final _ret = _lib._objc_msgSend_254( + _lib._class_NSMutableData1, + _lib._sel_dataWithContentsOfFile_options_error_1, + path?._id ?? ffi.nullptr, + readOptionsMask, + errorPtr); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + static NSMutableData dataWithContentsOfURL_options_error_( + SentryCocoa _lib, + NSURL? url, + int readOptionsMask, + ffi.Pointer> errorPtr) { + final _ret = _lib._objc_msgSend_255( + _lib._class_NSMutableData1, + _lib._sel_dataWithContentsOfURL_options_error_1, + url?._id ?? ffi.nullptr, + readOptionsMask, + errorPtr); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + static NSMutableData dataWithContentsOfFile_( + SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSMutableData1, + _lib._sel_dataWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + static NSMutableData dataWithContentsOfURL_(SentryCocoa _lib, NSURL? url) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSMutableData1, + _lib._sel_dataWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableData initWithBytes_length_(ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_252( + _id, _lib._sel_initWithBytes_length_1, bytes, length); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableData initWithBytesNoCopy_length_( + ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_252( + _id, _lib._sel_initWithBytesNoCopy_length_1, bytes, length); + return NSMutableData._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableData initWithBytesNoCopy_length_freeWhenDone_( + ffi.Pointer bytes, int length, bool b) { + final _ret = _lib._objc_msgSend_253(_id, + _lib._sel_initWithBytesNoCopy_length_freeWhenDone_1, bytes, length, b); + return NSMutableData._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableData initWithBytesNoCopy_length_deallocator_( + ffi.Pointer bytes, + int length, + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong deallocator) { + final _ret = _lib._objc_msgSend_256( + _id, + _lib._sel_initWithBytesNoCopy_length_deallocator_1, + bytes, + length, + deallocator._id); + return NSMutableData._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableData initWithContentsOfFile_options_error_(NSString? path, + int readOptionsMask, ffi.Pointer> errorPtr) { + final _ret = _lib._objc_msgSend_254( + _id, + _lib._sel_initWithContentsOfFile_options_error_1, + path?._id ?? ffi.nullptr, + readOptionsMask, + errorPtr); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableData initWithContentsOfURL_options_error_(NSURL? url, + int readOptionsMask, ffi.Pointer> errorPtr) { + final _ret = _lib._objc_msgSend_255( + _id, + _lib._sel_initWithContentsOfURL_options_error_1, + url?._id ?? ffi.nullptr, + readOptionsMask, + errorPtr); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableData initWithContentsOfFile_(NSString? path) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableData initWithContentsOfURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableData initWithData_(NSData? data) { + final _ret = _lib._objc_msgSend_257( + _id, _lib._sel_initWithData_1, data?._id ?? ffi.nullptr); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + static NSMutableData dataWithData_(SentryCocoa _lib, NSData? data) { + final _ret = _lib._objc_msgSend_257(_lib._class_NSMutableData1, + _lib._sel_dataWithData_1, data?._id ?? ffi.nullptr); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableData initWithBase64EncodedString_options_( + NSString? base64String, int options) { + final _ret = _lib._objc_msgSend_258( + _id, + _lib._sel_initWithBase64EncodedString_options_1, + base64String?._id ?? ffi.nullptr, + options); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableData initWithBase64EncodedData_options_( + NSData? base64Data, int options) { + final _ret = _lib._objc_msgSend_260( + _id, + _lib._sel_initWithBase64EncodedData_options_1, + base64Data?._id ?? ffi.nullptr, + options); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableData decompressedDataUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_262(_id, + _lib._sel_decompressedDataUsingAlgorithm_error_1, algorithm, error); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableData compressedDataUsingAlgorithm_error_( + int algorithm, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_262( + _id, _lib._sel_compressedDataUsingAlgorithm_error_1, algorithm, error); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + static NSObject dataWithContentsOfMappedFile_( + SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSMutableData1, + _lib._sel_dataWithContentsOfMappedFile_1, path?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableData init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMutableData._(_ret, _lib, retain: true, release: true); + } + + static NSMutableData new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableData1, _lib._sel_new1); + return NSMutableData._(_ret, _lib, retain: false, release: true); + } + + static NSMutableData allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSMutableData1, _lib._sel_allocWithZone_1, zone); + return NSMutableData._(_ret, _lib, retain: false, release: true); + } + + static NSMutableData alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableData1, _lib._sel_alloc1); + return NSMutableData._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSMutableData1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSMutableData1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableData1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableData1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSMutableData1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSMutableData1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSMutableData1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSMutableData1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableData1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSPropertyListFormat { + static const int NSPropertyListOpenStepFormat = 1; + static const int NSPropertyListXMLFormat_v1_0 = 100; + static const int NSPropertyListBinaryFormat_v1_0 = 200; +} + +class NSThread extends NSObject { + NSThread._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSThread] that points to the same underlying object as [other]. + static NSThread castFrom(T other) { + return NSThread._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSThread] that wraps the given raw object pointer. + static NSThread castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSThread._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSThread]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSThread1); + } + + static NSThread? getCurrentThread(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_496(_lib._class_NSThread1, _lib._sel_currentThread1); + return _ret.address == 0 + ? null + : NSThread._(_ret, _lib, retain: true, release: true); + } + + static void detachNewThreadWithBlock_( + SentryCocoa _lib, ObjCBlock_ffiVoid block) { + _lib._objc_msgSend_497( + _lib._class_NSThread1, _lib._sel_detachNewThreadWithBlock_1, block._id); + } + + static void detachNewThreadSelector_toTarget_withObject_(SentryCocoa _lib, + ffi.Pointer selector, NSObject target, NSObject argument) { + _lib._objc_msgSend_498( + _lib._class_NSThread1, + _lib._sel_detachNewThreadSelector_toTarget_withObject_1, + selector, + target._id, + argument._id); + } + + static bool isMultiThreaded(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSThread1, _lib._sel_isMultiThreaded1); + } + + NSMutableDictionary? get threadDictionary { + final _ret = _lib._objc_msgSend_503(_id, _lib._sel_threadDictionary1); + return _ret.address == 0 + ? null + : NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + static void sleepUntilDate_(SentryCocoa _lib, NSDate? date) { + _lib._objc_msgSend_504(_lib._class_NSThread1, _lib._sel_sleepUntilDate_1, + date?._id ?? ffi.nullptr); + } + + static void sleepForTimeInterval_(SentryCocoa _lib, double ti) { + _lib._objc_msgSend_505( + _lib._class_NSThread1, _lib._sel_sleepForTimeInterval_1, ti); + } + + static void exit(SentryCocoa _lib) { + _lib._objc_msgSend_1(_lib._class_NSThread1, _lib._sel_exit1); + } + + double get threadPriority { + return _lib._objc_msgSend_155(_id, _lib._sel_threadPriority1); + } + + set threadPriority(double value) { + return _lib._objc_msgSend_506(_id, _lib._sel_setThreadPriority_1, value); + } + + int get qualityOfService { + return _lib._objc_msgSend_507(_id, _lib._sel_qualityOfService1); + } + + set qualityOfService(int value) { + return _lib._objc_msgSend_508(_id, _lib._sel_setQualityOfService_1, value); + } + + static NSArray? getCallStackReturnAddresses(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSThread1, _lib._sel_callStackReturnAddresses1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray? getCallStackSymbols(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSThread1, _lib._sel_callStackSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set name(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + } + + int get stackSize { + return _lib._objc_msgSend_10(_id, _lib._sel_stackSize1); + } + + set stackSize(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setStackSize_1, value); + } + + bool get isMainThread { + return _lib._objc_msgSend_12(_id, _lib._sel_isMainThread1); + } + + static NSThread? getMainThread(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_496(_lib._class_NSThread1, _lib._sel_mainThread1); + return _ret.address == 0 + ? null + : NSThread._(_ret, _lib, retain: true, release: true); + } + + @override + NSThread init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSThread._(_ret, _lib, retain: true, release: true); + } + + NSThread initWithTarget_selector_object_( + NSObject target, ffi.Pointer selector, NSObject argument) { + final _ret = _lib._objc_msgSend_510( + _id, + _lib._sel_initWithTarget_selector_object_1, + target._id, + selector, + argument._id); + return NSThread._(_ret, _lib, retain: true, release: true); + } + + NSThread initWithBlock_(ObjCBlock_ffiVoid block) { + final _ret = + _lib._objc_msgSend_511(_id, _lib._sel_initWithBlock_1, block._id); + return NSThread._(_ret, _lib, retain: true, release: true); + } + + bool get executing { + return _lib._objc_msgSend_12(_id, _lib._sel_isExecuting1); + } + + bool get finished { + return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); + } + + bool get cancelled { + return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); + } + + void cancel() { + _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + } + + void start() { + _lib._objc_msgSend_1(_id, _lib._sel_start1); + } + + void main() { + _lib._objc_msgSend_1(_id, _lib._sel_main1); + } + + static NSThread new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSThread1, _lib._sel_new1); + return NSThread._(_ret, _lib, retain: false, release: true); + } + + static NSThread allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSThread1, _lib._sel_allocWithZone_1, zone); + return NSThread._(_ret, _lib, retain: false, release: true); + } + + static NSThread alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSThread1, _lib._sel_alloc1); + return NSThread._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSThread1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSThread1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSThread1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSThread1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSThread1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSThread1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSThread1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSThread1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSThread1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +void _ObjCBlock_ffiVoid_fnPtrTrampoline(ffi.Pointer<_ObjCBlock> block) { + return block.ref.target + .cast>() + .asFunction()(); +} + +final _ObjCBlock_ffiVoid_closureRegistry = {}; +int _ObjCBlock_ffiVoid_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_closureRegistryIndex; + _ObjCBlock_ffiVoid_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_closureTrampoline(ffi.Pointer<_ObjCBlock> block) { + return (_ObjCBlock_ffiVoid_closureRegistry[block.ref.target.address] as void + Function())(); +} + +class ObjCBlock_ffiVoid extends _ObjCBlockBase { + ObjCBlock_ffiVoid._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid.fromFunctionPointer( + SentryCocoa lib, ffi.Pointer> ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block)>( + _ObjCBlock_ffiVoid_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid.fromFunction(SentryCocoa lib, void Function() fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block)>( + _ObjCBlock_ffiVoid_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call() { + return _id.ref.invoke + .cast< + ffi + .NativeFunction block)>>() + .asFunction block)>()(_id); + } +} + +class NSMutableDictionary extends NSDictionary { + NSMutableDictionary._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMutableDictionary] that points to the same underlying object as [other]. + static NSMutableDictionary castFrom(T other) { + return NSMutableDictionary._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSMutableDictionary] that wraps the given raw object pointer. + static NSMutableDictionary castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMutableDictionary._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMutableDictionary]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMutableDictionary1); + } + + void removeObjectForKey_(NSObject aKey) { + _lib._objc_msgSend_15(_id, _lib._sel_removeObjectForKey_1, aKey._id); + } + + void setObject_forKey_(NSObject anObject, NSObject? aKey) { + _lib._objc_msgSend_499(_id, _lib._sel_setObject_forKey_1, anObject._id, + aKey?._id ?? ffi.nullptr); + } + + @override + NSMutableDictionary init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + NSMutableDictionary initWithCapacity_(int numItems) { + final _ret = + _lib._objc_msgSend_60(_id, _lib._sel_initWithCapacity_1, numItems); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableDictionary initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + void addEntriesFromDictionary_(NSDictionary? otherDictionary) { + _lib._objc_msgSend_476(_id, _lib._sel_addEntriesFromDictionary_1, + otherDictionary?._id ?? ffi.nullptr); + } + + void removeAllObjects() { + _lib._objc_msgSend_1(_id, _lib._sel_removeAllObjects1); + } + + void removeObjectsForKeys_(NSArray? keyArray) { + _lib._objc_msgSend_441( + _id, _lib._sel_removeObjectsForKeys_1, keyArray?._id ?? ffi.nullptr); + } + + void setDictionary_(NSDictionary? otherDictionary) { + _lib._objc_msgSend_476( + _id, _lib._sel_setDictionary_1, otherDictionary?._id ?? ffi.nullptr); + } + + void setObject_forKeyedSubscript_(NSObject obj, NSObject? key) { + _lib._objc_msgSend_499(_id, _lib._sel_setObject_forKeyedSubscript_1, + obj._id, key?._id ?? ffi.nullptr); + } + + static NSMutableDictionary dictionaryWithCapacity_( + SentryCocoa _lib, int numItems) { + final _ret = _lib._objc_msgSend_60(_lib._class_NSMutableDictionary1, + _lib._sel_dictionaryWithCapacity_1, numItems); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithContentsOfFile_( + SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_500(_lib._class_NSMutableDictionary1, + _lib._sel_dictionaryWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithContentsOfURL_( + SentryCocoa _lib, NSURL? url) { + final _ret = _lib._objc_msgSend_501(_lib._class_NSMutableDictionary1, + _lib._sel_dictionaryWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + NSMutableDictionary initWithContentsOfFile_(NSString? path) { + final _ret = _lib._objc_msgSend_500( + _id, _lib._sel_initWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + NSMutableDictionary initWithContentsOfURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_501( + _id, _lib._sel_initWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithSharedKeySet_( + SentryCocoa _lib, NSObject keyset) { + final _ret = _lib._objc_msgSend_502(_lib._class_NSMutableDictionary1, + _lib._sel_dictionaryWithSharedKeySet_1, keyset._id); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + void setValue_forKey_(NSObject value, NSString? key) { + _lib._objc_msgSend_126( + _id, _lib._sel_setValue_forKey_1, value._id, key?._id ?? ffi.nullptr); + } + + @override + NSMutableDictionary initWithObjects_forKeys_count_( + ffi.Pointer> objects, + ffi.Pointer> keys, + int cnt) { + final _ret = _lib._objc_msgSend_137( + _id, _lib._sel_initWithObjects_forKeys_count_1, objects, keys, cnt); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSMutableDictionary dictionary(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableDictionary1, _lib._sel_dictionary1); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithObject_forKey_( + SentryCocoa _lib, NSObject object, NSObject? key) { + final _ret = _lib._objc_msgSend_148( + _lib._class_NSMutableDictionary1, + _lib._sel_dictionaryWithObject_forKey_1, + object._id, + key?._id ?? ffi.nullptr); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithObjects_forKeys_count_( + SentryCocoa _lib, + ffi.Pointer> objects, + ffi.Pointer> keys, + int cnt) { + final _ret = _lib._objc_msgSend_137(_lib._class_NSMutableDictionary1, + _lib._sel_dictionaryWithObjects_forKeys_count_1, objects, keys, cnt); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithObjectsAndKeys_( + SentryCocoa _lib, NSObject firstObject) { + final _ret = _lib._objc_msgSend_16(_lib._class_NSMutableDictionary1, + _lib._sel_dictionaryWithObjectsAndKeys_1, firstObject._id); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithDictionary_( + SentryCocoa _lib, NSDictionary? dict) { + final _ret = _lib._objc_msgSend_149(_lib._class_NSMutableDictionary1, + _lib._sel_dictionaryWithDictionary_1, dict?._id ?? ffi.nullptr); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSMutableDictionary dictionaryWithObjects_forKeys_( + SentryCocoa _lib, NSArray? objects, NSArray? keys) { + final _ret = _lib._objc_msgSend_150( + _lib._class_NSMutableDictionary1, + _lib._sel_dictionaryWithObjects_forKeys_1, + objects?._id ?? ffi.nullptr, + keys?._id ?? ffi.nullptr); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableDictionary initWithObjectsAndKeys_(NSObject firstObject) { + final _ret = _lib._objc_msgSend_16( + _id, _lib._sel_initWithObjectsAndKeys_1, firstObject._id); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableDictionary initWithDictionary_(NSDictionary? otherDictionary) { + final _ret = _lib._objc_msgSend_149(_id, _lib._sel_initWithDictionary_1, + otherDictionary?._id ?? ffi.nullptr); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableDictionary initWithDictionary_copyItems_( + NSDictionary? otherDictionary, bool flag) { + final _ret = _lib._objc_msgSend_151( + _id, + _lib._sel_initWithDictionary_copyItems_1, + otherDictionary?._id ?? ffi.nullptr, + flag); + return NSMutableDictionary._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableDictionary initWithObjects_forKeys_( + NSArray? objects, NSArray? keys) { + final _ret = _lib._objc_msgSend_150( + _id, + _lib._sel_initWithObjects_forKeys_1, + objects?._id ?? ffi.nullptr, + keys?._id ?? ffi.nullptr); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary dictionaryWithContentsOfURL_error_(SentryCocoa _lib, + NSURL? url, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_152( + _lib._class_NSMutableDictionary1, + _lib._sel_dictionaryWithContentsOfURL_error_1, + url?._id ?? ffi.nullptr, + error); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSObject sharedKeySetForKeys_(SentryCocoa _lib, NSArray? keys) { + final _ret = _lib._objc_msgSend_67(_lib._class_NSMutableDictionary1, + _lib._sel_sharedKeySetForKeys_1, keys?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSMutableDictionary new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableDictionary1, _lib._sel_new1); + return NSMutableDictionary._(_ret, _lib, retain: false, release: true); + } + + static NSMutableDictionary allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSMutableDictionary1, _lib._sel_allocWithZone_1, zone); + return NSMutableDictionary._(_ret, _lib, retain: false, release: true); + } + + static NSMutableDictionary alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableDictionary1, _lib._sel_alloc1); + return NSMutableDictionary._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSMutableDictionary1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSMutableDictionary1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSMutableDictionary1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableDictionary1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSMutableDictionary1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSMutableDictionary1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSMutableDictionary1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSMutableDictionary1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableDictionary1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSQualityOfService { + static const int NSQualityOfServiceUserInteractive = 33; + static const int NSQualityOfServiceUserInitiated = 25; + static const int NSQualityOfServiceUtility = 17; + static const int NSQualityOfServiceBackground = 9; + static const int NSQualityOfServiceDefault = -1; +} + +class NSArchiver extends NSCoder { + NSArchiver._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSArchiver] that points to the same underlying object as [other]. + static NSArchiver castFrom(T other) { + return NSArchiver._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSArchiver] that wraps the given raw object pointer. + static NSArchiver castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSArchiver._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSArchiver]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSArchiver1); + } + + NSArchiver initForWritingWithMutableData_(NSMutableData? mdata) { + final _ret = _lib._objc_msgSend_487(_id, + _lib._sel_initForWritingWithMutableData_1, mdata?._id ?? ffi.nullptr); + return NSArchiver._(_ret, _lib, retain: true, release: true); + } + + NSMutableData? get archiverData { + final _ret = _lib._objc_msgSend_514(_id, _lib._sel_archiverData1); + return _ret.address == 0 + ? null + : NSMutableData._(_ret, _lib, retain: true, release: true); + } + + @override + void encodeRootObject_(NSObject rootObject) { + _lib._objc_msgSend_15(_id, _lib._sel_encodeRootObject_1, rootObject._id); + } + + @override + void encodeConditionalObject_(NSObject object) { + _lib._objc_msgSend_15(_id, _lib._sel_encodeConditionalObject_1, object._id); + } + + static NSData archivedDataWithRootObject_( + SentryCocoa _lib, NSObject rootObject) { + final _ret = _lib._objc_msgSend_488(_lib._class_NSArchiver1, + _lib._sel_archivedDataWithRootObject_1, rootObject._id); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static bool archiveRootObject_toFile_( + SentryCocoa _lib, NSObject rootObject, NSString? path) { + return _lib._objc_msgSend_240( + _lib._class_NSArchiver1, + _lib._sel_archiveRootObject_toFile_1, + rootObject._id, + path?._id ?? ffi.nullptr); + } + + void encodeClassName_intoClassName_( + NSString? trueName, NSString? inArchiveName) { + _lib._objc_msgSend_515(_id, _lib._sel_encodeClassName_intoClassName_1, + trueName?._id ?? ffi.nullptr, inArchiveName?._id ?? ffi.nullptr); + } + + NSString classNameEncodedForTrueClassName_(NSString? trueName) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_classNameEncodedForTrueClassName_1, + trueName?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + void replaceObject_withObject_(NSObject object, NSObject newObject) { + _lib._objc_msgSend_499( + _id, _lib._sel_replaceObject_withObject_1, object._id, newObject._id); + } + + @override + NSArchiver init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSArchiver._(_ret, _lib, retain: true, release: true); + } + + static NSArchiver new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSArchiver1, _lib._sel_new1); + return NSArchiver._(_ret, _lib, retain: false, release: true); + } + + static NSArchiver allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSArchiver1, _lib._sel_allocWithZone_1, zone); + return NSArchiver._(_ret, _lib, retain: false, release: true); + } + + static NSArchiver alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSArchiver1, _lib._sel_alloc1); + return NSArchiver._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSArchiver1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSArchiver1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSArchiver1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSArchiver1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSArchiver1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSArchiver1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSArchiver1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSArchiver1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSArchiver1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSPortCoder extends NSCoder { + NSPortCoder._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSPortCoder] that points to the same underlying object as [other]. + static NSPortCoder castFrom(T other) { + return NSPortCoder._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSPortCoder] that wraps the given raw object pointer. + static NSPortCoder castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSPortCoder._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSPortCoder]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSPortCoder1); + } + + bool isBycopy() { + return _lib._objc_msgSend_12(_id, _lib._sel_isBycopy1); + } + + bool isByref() { + return _lib._objc_msgSend_12(_id, _lib._sel_isByref1); + } + + void encodePortObject_(NSPort? aport) { + _lib._objc_msgSend_552( + _id, _lib._sel_encodePortObject_1, aport?._id ?? ffi.nullptr); + } + + NSPort decodePortObject() { + final _ret = _lib._objc_msgSend_517(_id, _lib._sel_decodePortObject1); + return NSPort._(_ret, _lib, retain: true, release: true); + } + + NSConnection connection() { + final _ret = _lib._objc_msgSend_536(_id, _lib._sel_connection1); + return NSConnection._(_ret, _lib, retain: true, release: true); + } + + static NSObject portCoderWithReceivePort_sendPort_components_( + SentryCocoa _lib, NSPort? rcvPort, NSPort? sndPort, NSArray? comps) { + final _ret = _lib._objc_msgSend_553( + _lib._class_NSPortCoder1, + _lib._sel_portCoderWithReceivePort_sendPort_components_1, + rcvPort?._id ?? ffi.nullptr, + sndPort?._id ?? ffi.nullptr, + comps?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithReceivePort_sendPort_components_( + NSPort? rcvPort, NSPort? sndPort, NSArray? comps) { + final _ret = _lib._objc_msgSend_553( + _id, + _lib._sel_initWithReceivePort_sendPort_components_1, + rcvPort?._id ?? ffi.nullptr, + sndPort?._id ?? ffi.nullptr, + comps?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void dispatch() { + _lib._objc_msgSend_1(_id, _lib._sel_dispatch1); + } + + @override + NSPortCoder init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSPortCoder._(_ret, _lib, retain: true, release: true); + } + + static NSPortCoder new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSPortCoder1, _lib._sel_new1); + return NSPortCoder._(_ret, _lib, retain: false, release: true); + } + + static NSPortCoder allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSPortCoder1, _lib._sel_allocWithZone_1, zone); + return NSPortCoder._(_ret, _lib, retain: false, release: true); + } + + static NSPortCoder alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSPortCoder1, _lib._sel_alloc1); + return NSPortCoder._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSPortCoder1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSPortCoder1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSPortCoder1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSPortCoder1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSPortCoder1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSPortCoder1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSPortCoder1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSPortCoder1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSPortCoder1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSPort extends NSObject { + NSPort._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSPort] that points to the same underlying object as [other]. + static NSPort castFrom(T other) { + return NSPort._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSPort] that wraps the given raw object pointer. + static NSPort castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSPort._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSPort]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSPort1); + } + + static NSPort port(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_517(_lib._class_NSPort1, _lib._sel_port1); + return NSPort._(_ret, _lib, retain: true, release: true); + } + + void invalidate() { + _lib._objc_msgSend_1(_id, _lib._sel_invalidate1); + } + + bool get valid { + return _lib._objc_msgSend_12(_id, _lib._sel_isValid1); + } + + void setDelegate_(NSObject? anObject) { + _lib._objc_msgSend_15( + _id, _lib._sel_setDelegate_1, anObject?._id ?? ffi.nullptr); + } + + NSObject delegate() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void scheduleInRunLoop_forMode_(NSRunLoop? runLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_scheduleInRunLoop_forMode_1, + runLoop?._id ?? ffi.nullptr, mode._id); + } + + void removeFromRunLoop_forMode_(NSRunLoop? runLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_removeFromRunLoop_forMode_1, + runLoop?._id ?? ffi.nullptr, mode._id); + } + + int get reservedSpaceLength { + return _lib._objc_msgSend_10(_id, _lib._sel_reservedSpaceLength1); + } + + bool sendBeforeDate_components_from_reserved_( + NSDate? limitDate, + NSMutableArray? components, + NSPort? receivePort, + int headerSpaceReserved) { + return _lib._objc_msgSend_534( + _id, + _lib._sel_sendBeforeDate_components_from_reserved_1, + limitDate?._id ?? ffi.nullptr, + components?._id ?? ffi.nullptr, + receivePort?._id ?? ffi.nullptr, + headerSpaceReserved); + } + + bool sendBeforeDate_msgid_components_from_reserved_( + NSDate? limitDate, + int msgID, + NSMutableArray? components, + NSPort? receivePort, + int headerSpaceReserved) { + return _lib._objc_msgSend_535( + _id, + _lib._sel_sendBeforeDate_msgid_components_from_reserved_1, + limitDate?._id ?? ffi.nullptr, + msgID, + components?._id ?? ffi.nullptr, + receivePort?._id ?? ffi.nullptr, + headerSpaceReserved); + } + + void addConnection_toRunLoop_forMode_( + NSConnection? conn, NSRunLoop? runLoop, NSString mode) { + _lib._objc_msgSend_551(_id, _lib._sel_addConnection_toRunLoop_forMode_1, + conn?._id ?? ffi.nullptr, runLoop?._id ?? ffi.nullptr, mode._id); + } + + void removeConnection_fromRunLoop_forMode_( + NSConnection? conn, NSRunLoop? runLoop, NSString mode) { + _lib._objc_msgSend_551( + _id, + _lib._sel_removeConnection_fromRunLoop_forMode_1, + conn?._id ?? ffi.nullptr, + runLoop?._id ?? ffi.nullptr, + mode._id); + } + + @override + NSPort init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSPort._(_ret, _lib, retain: true, release: true); + } + + static NSPort new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSPort1, _lib._sel_new1); + return NSPort._(_ret, _lib, retain: false, release: true); + } + + static NSPort allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSPort1, _lib._sel_allocWithZone_1, zone); + return NSPort._(_ret, _lib, retain: false, release: true); + } + + static NSPort alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSPort1, _lib._sel_alloc1); + return NSPort._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSPort1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSPort1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSPort1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSPort1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSPort1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSPort1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSPort1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSPort1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSPort1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSRunLoop extends NSObject { + NSRunLoop._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSRunLoop] that points to the same underlying object as [other]. + static NSRunLoop castFrom(T other) { + return NSRunLoop._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSRunLoop] that wraps the given raw object pointer. + static NSRunLoop castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSRunLoop._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSRunLoop]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSRunLoop1); + } + + static NSRunLoop? getCurrentRunLoop(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_518( + _lib._class_NSRunLoop1, _lib._sel_currentRunLoop1); + return _ret.address == 0 + ? null + : NSRunLoop._(_ret, _lib, retain: true, release: true); + } + + static NSRunLoop? getMainRunLoop(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_518(_lib._class_NSRunLoop1, _lib._sel_mainRunLoop1); + return _ret.address == 0 + ? null + : NSRunLoop._(_ret, _lib, retain: true, release: true); + } + + NSString get currentMode { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_currentMode1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + ffi.Pointer<__CFRunLoop> getCFRunLoop() { + return _lib._objc_msgSend_519(_id, _lib._sel_getCFRunLoop1); + } + + void addTimer_forMode_(NSTimer? timer, NSString mode) { + _lib._objc_msgSend_526( + _id, _lib._sel_addTimer_forMode_1, timer?._id ?? ffi.nullptr, mode._id); + } + + void addPort_forMode_(NSPort? aPort, NSString mode) { + _lib._objc_msgSend_527( + _id, _lib._sel_addPort_forMode_1, aPort?._id ?? ffi.nullptr, mode._id); + } + + void removePort_forMode_(NSPort? aPort, NSString mode) { + _lib._objc_msgSend_527(_id, _lib._sel_removePort_forMode_1, + aPort?._id ?? ffi.nullptr, mode._id); + } + + NSDate limitDateForMode_(NSString mode) { + final _ret = + _lib._objc_msgSend_528(_id, _lib._sel_limitDateForMode_1, mode._id); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + void acceptInputForMode_beforeDate_(NSString mode, NSDate? limitDate) { + _lib._objc_msgSend_529(_id, _lib._sel_acceptInputForMode_beforeDate_1, + mode._id, limitDate?._id ?? ffi.nullptr); + } + + void run() { + _lib._objc_msgSend_1(_id, _lib._sel_run1); + } + + void runUntilDate_(NSDate? limitDate) { + _lib._objc_msgSend_504( + _id, _lib._sel_runUntilDate_1, limitDate?._id ?? ffi.nullptr); + } + + bool runMode_beforeDate_(NSString mode, NSDate? limitDate) { + return _lib._objc_msgSend_530(_id, _lib._sel_runMode_beforeDate_1, mode._id, + limitDate?._id ?? ffi.nullptr); + } + + void configureAsServer() { + _lib._objc_msgSend_1(_id, _lib._sel_configureAsServer1); + } + + void performInModes_block_(NSArray? modes, ObjCBlock_ffiVoid block) { + _lib._objc_msgSend_531(_id, _lib._sel_performInModes_block_1, + modes?._id ?? ffi.nullptr, block._id); + } + + void performBlock_(ObjCBlock_ffiVoid block) { + _lib._objc_msgSend_497(_id, _lib._sel_performBlock_1, block._id); + } + + void performSelector_target_argument_order_modes_( + ffi.Pointer aSelector, + NSObject target, + NSObject arg, + int order, + NSArray? modes) { + _lib._objc_msgSend_532( + _id, + _lib._sel_performSelector_target_argument_order_modes_1, + aSelector, + target._id, + arg._id, + order, + modes?._id ?? ffi.nullptr); + } + + void cancelPerformSelector_target_argument_( + ffi.Pointer aSelector, NSObject target, NSObject arg) { + _lib._objc_msgSend_498( + _id, + _lib._sel_cancelPerformSelector_target_argument_1, + aSelector, + target._id, + arg._id); + } + + void cancelPerformSelectorsWithTarget_(NSObject target) { + _lib._objc_msgSend_15( + _id, _lib._sel_cancelPerformSelectorsWithTarget_1, target._id); + } + + @override + NSRunLoop init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSRunLoop._(_ret, _lib, retain: true, release: true); + } + + static NSRunLoop new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSRunLoop1, _lib._sel_new1); + return NSRunLoop._(_ret, _lib, retain: false, release: true); + } + + static NSRunLoop allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSRunLoop1, _lib._sel_allocWithZone_1, zone); + return NSRunLoop._(_ret, _lib, retain: false, release: true); + } + + static NSRunLoop alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSRunLoop1, _lib._sel_alloc1); + return NSRunLoop._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSRunLoop1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSRunLoop1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSRunLoop1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSRunLoop1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSRunLoop1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSRunLoop1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSRunLoop1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSRunLoop1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSRunLoop1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class __CFRunLoop extends ffi.Opaque {} + +class NSTimer extends NSObject { + NSTimer._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSTimer] that points to the same underlying object as [other]. + static NSTimer castFrom(T other) { + return NSTimer._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSTimer] that wraps the given raw object pointer. + static NSTimer castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSTimer._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSTimer]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSTimer1); + } + + static NSTimer timerWithTimeInterval_invocation_repeats_( + SentryCocoa _lib, double ti, NSInvocation? invocation, bool yesOrNo) { + final _ret = _lib._objc_msgSend_520( + _lib._class_NSTimer1, + _lib._sel_timerWithTimeInterval_invocation_repeats_1, + ti, + invocation?._id ?? ffi.nullptr, + yesOrNo); + return NSTimer._(_ret, _lib, retain: true, release: true); + } + + static NSTimer scheduledTimerWithTimeInterval_invocation_repeats_( + SentryCocoa _lib, double ti, NSInvocation? invocation, bool yesOrNo) { + final _ret = _lib._objc_msgSend_520( + _lib._class_NSTimer1, + _lib._sel_scheduledTimerWithTimeInterval_invocation_repeats_1, + ti, + invocation?._id ?? ffi.nullptr, + yesOrNo); + return NSTimer._(_ret, _lib, retain: true, release: true); + } + + static NSTimer timerWithTimeInterval_target_selector_userInfo_repeats_( + SentryCocoa _lib, + double ti, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject userInfo, + bool yesOrNo) { + final _ret = _lib._objc_msgSend_521( + _lib._class_NSTimer1, + _lib._sel_timerWithTimeInterval_target_selector_userInfo_repeats_1, + ti, + aTarget._id, + aSelector, + userInfo._id, + yesOrNo); + return NSTimer._(_ret, _lib, retain: true, release: true); + } + + static NSTimer + scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_( + SentryCocoa _lib, + double ti, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject userInfo, + bool yesOrNo) { + final _ret = _lib._objc_msgSend_521( + _lib._class_NSTimer1, + _lib._sel_scheduledTimerWithTimeInterval_target_selector_userInfo_repeats_1, + ti, + aTarget._id, + aSelector, + userInfo._id, + yesOrNo); + return NSTimer._(_ret, _lib, retain: true, release: true); + } + + static NSTimer timerWithTimeInterval_repeats_block_(SentryCocoa _lib, + double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { + final _ret = _lib._objc_msgSend_522( + _lib._class_NSTimer1, + _lib._sel_timerWithTimeInterval_repeats_block_1, + interval, + repeats, + block._id); + return NSTimer._(_ret, _lib, retain: true, release: true); + } + + static NSTimer scheduledTimerWithTimeInterval_repeats_block_(SentryCocoa _lib, + double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { + final _ret = _lib._objc_msgSend_522( + _lib._class_NSTimer1, + _lib._sel_scheduledTimerWithTimeInterval_repeats_block_1, + interval, + repeats, + block._id); + return NSTimer._(_ret, _lib, retain: true, release: true); + } + + NSTimer initWithFireDate_interval_repeats_block_(NSDate? date, + double interval, bool repeats, ObjCBlock_ffiVoid_NSTimer block) { + final _ret = _lib._objc_msgSend_523( + _id, + _lib._sel_initWithFireDate_interval_repeats_block_1, + date?._id ?? ffi.nullptr, + interval, + repeats, + block._id); + return NSTimer._(_ret, _lib, retain: true, release: true); + } + + NSTimer initWithFireDate_interval_target_selector_userInfo_repeats_( + NSDate? date, + double ti, + NSObject t, + ffi.Pointer s, + NSObject ui, + bool rep) { + final _ret = _lib._objc_msgSend_524( + _id, + _lib._sel_initWithFireDate_interval_target_selector_userInfo_repeats_1, + date?._id ?? ffi.nullptr, + ti, + t._id, + s, + ui._id, + rep); + return NSTimer._(_ret, _lib, retain: true, release: true); + } + + void fire() { + _lib._objc_msgSend_1(_id, _lib._sel_fire1); + } + + NSDate? get fireDate { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_fireDate1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + set fireDate(NSDate? value) { + return _lib._objc_msgSend_525( + _id, _lib._sel_setFireDate_1, value?._id ?? ffi.nullptr); + } + + double get timeInterval { + return _lib._objc_msgSend_155(_id, _lib._sel_timeInterval1); + } + + double get tolerance { + return _lib._objc_msgSend_155(_id, _lib._sel_tolerance1); + } + + set tolerance(double value) { + return _lib._objc_msgSend_506(_id, _lib._sel_setTolerance_1, value); + } + + void invalidate() { + _lib._objc_msgSend_1(_id, _lib._sel_invalidate1); + } + + bool get valid { + return _lib._objc_msgSend_12(_id, _lib._sel_isValid1); + } + + NSObject get userInfo { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_userInfo1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + @override + NSTimer init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSTimer._(_ret, _lib, retain: true, release: true); + } + + static NSTimer new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSTimer1, _lib._sel_new1); + return NSTimer._(_ret, _lib, retain: false, release: true); + } + + static NSTimer allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSTimer1, _lib._sel_allocWithZone_1, zone); + return NSTimer._(_ret, _lib, retain: false, release: true); + } + + static NSTimer alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSTimer1, _lib._sel_alloc1); + return NSTimer._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSTimer1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSTimer1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSTimer1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSTimer1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSTimer1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSTimer1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSTimer1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSTimer1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSTimer1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +void _ObjCBlock_ffiVoid_NSTimer_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSTimer_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSTimer_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSTimer_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSTimer_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSTimer_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSTimer_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSTimer_closureRegistry[block.ref.target.address] + as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSTimer extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSTimer._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSTimer.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSTimer_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSTimer.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSTimer_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSTimer_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +class NSConnection extends NSObject { + NSConnection._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSConnection] that points to the same underlying object as [other]. + static NSConnection castFrom(T other) { + return NSConnection._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSConnection] that wraps the given raw object pointer. + static NSConnection castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSConnection._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSConnection]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSConnection1); + } + + NSDictionary? get statistics { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_statistics1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSArray allConnections(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSConnection1, _lib._sel_allConnections1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSConnection defaultConnection(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_536( + _lib._class_NSConnection1, _lib._sel_defaultConnection1); + return NSConnection._(_ret, _lib, retain: true, release: true); + } + + static NSConnection connectionWithRegisteredName_host_( + SentryCocoa _lib, NSString? name, NSString? hostName) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSConnection1, + _lib._sel_connectionWithRegisteredName_host_1, + name?._id ?? ffi.nullptr, + hostName?._id ?? ffi.nullptr); + return NSConnection._(_ret, _lib, retain: true, release: true); + } + + static NSConnection connectionWithRegisteredName_host_usingNameServer_( + SentryCocoa _lib, + NSString? name, + NSString? hostName, + NSPortNameServer? server) { + final _ret = _lib._objc_msgSend_541( + _lib._class_NSConnection1, + _lib._sel_connectionWithRegisteredName_host_usingNameServer_1, + name?._id ?? ffi.nullptr, + hostName?._id ?? ffi.nullptr, + server?._id ?? ffi.nullptr); + return NSConnection._(_ret, _lib, retain: true, release: true); + } + + static NSDistantObject rootProxyForConnectionWithRegisteredName_host_( + SentryCocoa _lib, NSString? name, NSString? hostName) { + final _ret = _lib._objc_msgSend_544( + _lib._class_NSConnection1, + _lib._sel_rootProxyForConnectionWithRegisteredName_host_1, + name?._id ?? ffi.nullptr, + hostName?._id ?? ffi.nullptr); + return NSDistantObject._(_ret, _lib, retain: true, release: true); + } + + static NSDistantObject + rootProxyForConnectionWithRegisteredName_host_usingNameServer_( + SentryCocoa _lib, + NSString? name, + NSString? hostName, + NSPortNameServer? server) { + final _ret = _lib._objc_msgSend_545( + _lib._class_NSConnection1, + _lib._sel_rootProxyForConnectionWithRegisteredName_host_usingNameServer_1, + name?._id ?? ffi.nullptr, + hostName?._id ?? ffi.nullptr, + server?._id ?? ffi.nullptr); + return NSDistantObject._(_ret, _lib, retain: true, release: true); + } + + static NSConnection serviceConnectionWithName_rootObject_usingNameServer_( + SentryCocoa _lib, + NSString? name, + NSObject root, + NSPortNameServer? server) { + final _ret = _lib._objc_msgSend_546( + _lib._class_NSConnection1, + _lib._sel_serviceConnectionWithName_rootObject_usingNameServer_1, + name?._id ?? ffi.nullptr, + root._id, + server?._id ?? ffi.nullptr); + return NSConnection._(_ret, _lib, retain: true, release: true); + } + + static NSConnection serviceConnectionWithName_rootObject_( + SentryCocoa _lib, NSString? name, NSObject root) { + final _ret = _lib._objc_msgSend_163( + _lib._class_NSConnection1, + _lib._sel_serviceConnectionWithName_rootObject_1, + name?._id ?? ffi.nullptr, + root._id); + return NSConnection._(_ret, _lib, retain: true, release: true); + } + + double get requestTimeout { + return _lib._objc_msgSend_155(_id, _lib._sel_requestTimeout1); + } + + set requestTimeout(double value) { + return _lib._objc_msgSend_506(_id, _lib._sel_setRequestTimeout_1, value); + } + + double get replyTimeout { + return _lib._objc_msgSend_155(_id, _lib._sel_replyTimeout1); + } + + set replyTimeout(double value) { + return _lib._objc_msgSend_506(_id, _lib._sel_setReplyTimeout_1, value); + } + + NSObject get rootObject { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_rootObject1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set rootObject(NSObject value) { + return _lib._objc_msgSend_387(_id, _lib._sel_setRootObject_1, value._id); + } + + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + set delegate(NSObject? value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + } + + bool get independentConversationQueueing { + return _lib._objc_msgSend_12( + _id, _lib._sel_independentConversationQueueing1); + } + + set independentConversationQueueing(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setIndependentConversationQueueing_1, value); + } + + bool get valid { + return _lib._objc_msgSend_12(_id, _lib._sel_isValid1); + } + + NSDistantObject? get rootProxy { + final _ret = _lib._objc_msgSend_547(_id, _lib._sel_rootProxy1); + return _ret.address == 0 + ? null + : NSDistantObject._(_ret, _lib, retain: true, release: true); + } + + void invalidate() { + _lib._objc_msgSend_1(_id, _lib._sel_invalidate1); + } + + void addRequestMode_(NSString? rmode) { + _lib._objc_msgSend_192( + _id, _lib._sel_addRequestMode_1, rmode?._id ?? ffi.nullptr); + } + + void removeRequestMode_(NSString? rmode) { + _lib._objc_msgSend_192( + _id, _lib._sel_removeRequestMode_1, rmode?._id ?? ffi.nullptr); + } + + NSArray? get requestModes { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_requestModes1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + bool registerName_(NSString? name) { + return _lib._objc_msgSend_59( + _id, _lib._sel_registerName_1, name?._id ?? ffi.nullptr); + } + + bool registerName_withNameServer_(NSString? name, NSPortNameServer? server) { + return _lib._objc_msgSend_548(_id, _lib._sel_registerName_withNameServer_1, + name?._id ?? ffi.nullptr, server?._id ?? ffi.nullptr); + } + + static NSConnection connectionWithReceivePort_sendPort_( + SentryCocoa _lib, NSPort? receivePort, NSPort? sendPort) { + final _ret = _lib._objc_msgSend_549( + _lib._class_NSConnection1, + _lib._sel_connectionWithReceivePort_sendPort_1, + receivePort?._id ?? ffi.nullptr, + sendPort?._id ?? ffi.nullptr); + return NSConnection._(_ret, _lib, retain: true, release: true); + } + + static NSObject currentConversation(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSConnection1, _lib._sel_currentConversation1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSConnection initWithReceivePort_sendPort_( + NSPort? receivePort, NSPort? sendPort) { + final _ret = _lib._objc_msgSend_549( + _id, + _lib._sel_initWithReceivePort_sendPort_1, + receivePort?._id ?? ffi.nullptr, + sendPort?._id ?? ffi.nullptr); + return NSConnection._(_ret, _lib, retain: true, release: true); + } + + NSPort? get sendPort { + final _ret = _lib._objc_msgSend_517(_id, _lib._sel_sendPort1); + return _ret.address == 0 + ? null + : NSPort._(_ret, _lib, retain: true, release: true); + } + + NSPort? get receivePort { + final _ret = _lib._objc_msgSend_517(_id, _lib._sel_receivePort1); + return _ret.address == 0 + ? null + : NSPort._(_ret, _lib, retain: true, release: true); + } + + void enableMultipleThreads() { + _lib._objc_msgSend_1(_id, _lib._sel_enableMultipleThreads1); + } + + bool get multipleThreadsEnabled { + return _lib._objc_msgSend_12(_id, _lib._sel_multipleThreadsEnabled1); + } + + void addRunLoop_(NSRunLoop? runloop) { + _lib._objc_msgSend_550( + _id, _lib._sel_addRunLoop_1, runloop?._id ?? ffi.nullptr); + } + + void removeRunLoop_(NSRunLoop? runloop) { + _lib._objc_msgSend_550( + _id, _lib._sel_removeRunLoop_1, runloop?._id ?? ffi.nullptr); + } + + void runInNewThread() { + _lib._objc_msgSend_1(_id, _lib._sel_runInNewThread1); + } + + NSArray? get remoteObjects { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_remoteObjects1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get localObjects { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_localObjects1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + void dispatchWithComponents_(NSArray? components) { + _lib._objc_msgSend_441(_id, _lib._sel_dispatchWithComponents_1, + components?._id ?? ffi.nullptr); + } + + @override + NSConnection init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSConnection._(_ret, _lib, retain: true, release: true); + } + + static NSConnection new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSConnection1, _lib._sel_new1); + return NSConnection._(_ret, _lib, retain: false, release: true); + } + + static NSConnection allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSConnection1, _lib._sel_allocWithZone_1, zone); + return NSConnection._(_ret, _lib, retain: false, release: true); + } + + static NSConnection alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSConnection1, _lib._sel_alloc1); + return NSConnection._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSConnection1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSConnection1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSConnection1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSConnection1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSConnection1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSConnection1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSConnection1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSConnection1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSConnection1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSPortNameServer extends NSObject { + NSPortNameServer._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSPortNameServer] that points to the same underlying object as [other]. + static NSPortNameServer castFrom(T other) { + return NSPortNameServer._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSPortNameServer] that wraps the given raw object pointer. + static NSPortNameServer castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSPortNameServer._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSPortNameServer]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSPortNameServer1); + } + + static NSPortNameServer systemDefaultPortNameServer(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_537( + _lib._class_NSPortNameServer1, _lib._sel_systemDefaultPortNameServer1); + return NSPortNameServer._(_ret, _lib, retain: true, release: true); + } + + NSPort portForName_(NSString? name) { + final _ret = _lib._objc_msgSend_538( + _id, _lib._sel_portForName_1, name?._id ?? ffi.nullptr); + return NSPort._(_ret, _lib, retain: true, release: true); + } + + NSPort portForName_host_(NSString? name, NSString? host) { + final _ret = _lib._objc_msgSend_539(_id, _lib._sel_portForName_host_1, + name?._id ?? ffi.nullptr, host?._id ?? ffi.nullptr); + return NSPort._(_ret, _lib, retain: true, release: true); + } + + bool registerPort_name_(NSPort? port, NSString? name) { + return _lib._objc_msgSend_540(_id, _lib._sel_registerPort_name_1, + port?._id ?? ffi.nullptr, name?._id ?? ffi.nullptr); + } + + bool removePortForName_(NSString? name) { + return _lib._objc_msgSend_59( + _id, _lib._sel_removePortForName_1, name?._id ?? ffi.nullptr); + } + + @override + NSPortNameServer init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSPortNameServer._(_ret, _lib, retain: true, release: true); + } + + static NSPortNameServer new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSPortNameServer1, _lib._sel_new1); + return NSPortNameServer._(_ret, _lib, retain: false, release: true); + } + + static NSPortNameServer allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSPortNameServer1, _lib._sel_allocWithZone_1, zone); + return NSPortNameServer._(_ret, _lib, retain: false, release: true); + } + + static NSPortNameServer alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSPortNameServer1, _lib._sel_alloc1); + return NSPortNameServer._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSPortNameServer1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSPortNameServer1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSPortNameServer1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSPortNameServer1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSPortNameServer1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSPortNameServer1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSPortNameServer1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSPortNameServer1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSPortNameServer1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSDistantObject extends NSProxy { + NSDistantObject._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSDistantObject] that points to the same underlying object as [other]. + static NSDistantObject castFrom(T other) { + return NSDistantObject._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSDistantObject] that wraps the given raw object pointer. + static NSDistantObject castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSDistantObject._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSDistantObject]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSDistantObject1); + } + + static NSObject proxyWithTarget_connection_( + SentryCocoa _lib, NSObject target, NSConnection? connection) { + final _ret = _lib._objc_msgSend_542( + _lib._class_NSDistantObject1, + _lib._sel_proxyWithTarget_connection_1, + target._id, + connection?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSDistantObject initWithTarget_connection_( + NSObject target, NSConnection? connection) { + final _ret = _lib._objc_msgSend_542( + _id, + _lib._sel_initWithTarget_connection_1, + target._id, + connection?._id ?? ffi.nullptr); + return NSDistantObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject proxyWithLocal_connection_( + SentryCocoa _lib, NSObject target, NSConnection? connection) { + final _ret = _lib._objc_msgSend_542( + _lib._class_NSDistantObject1, + _lib._sel_proxyWithLocal_connection_1, + target._id, + connection?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSDistantObject initWithLocal_connection_( + NSObject target, NSConnection? connection) { + final _ret = _lib._objc_msgSend_542( + _id, + _lib._sel_initWithLocal_connection_1, + target._id, + connection?._id ?? ffi.nullptr); + return NSDistantObject._(_ret, _lib, retain: true, release: true); + } + + NSDistantObject initWithCoder_(NSCoder? inCoder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, inCoder?._id ?? ffi.nullptr); + return NSDistantObject._(_ret, _lib, retain: true, release: true); + } + + void setProtocolForProxy_(Protocol? proto) { + _lib._objc_msgSend_543( + _id, _lib._sel_setProtocolForProxy_1, proto?._id ?? ffi.nullptr); + } + + NSConnection? get connectionForProxy { + final _ret = _lib._objc_msgSend_536(_id, _lib._sel_connectionForProxy1); + return _ret.address == 0 + ? null + : NSConnection._(_ret, _lib, retain: true, release: true); + } + + static NSObject alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSDistantObject1, _lib._sel_alloc1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static bool respondsToSelector_( + SentryCocoa _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_4(_lib._class_NSDistantObject1, + _lib._sel_respondsToSelector_1, aSelector); + } +} + +class NSProxy extends _ObjCWrapper { + NSProxy._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSProxy] that points to the same underlying object as [other]. + static NSProxy castFrom(T other) { + return NSProxy._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSProxy] that wraps the given raw object pointer. + static NSProxy castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSProxy._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSProxy]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProxy1); + } + + static NSObject alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSProxy1, _lib._sel_alloc1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSProxy1, _lib._sel_allocWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static NSObject class1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSProxy1, _lib._sel_class1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void forwardInvocation_(NSInvocation? invocation) { + _lib._objc_msgSend_392( + _id, _lib._sel_forwardInvocation_1, invocation?._id ?? ffi.nullptr); + } + + NSMethodSignature methodSignatureForSelector_(ffi.Pointer sel) { + final _ret = _lib._objc_msgSend_393( + _id, _lib._sel_methodSignatureForSelector_1, sel); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); + } + + void dealloc() { + _lib._objc_msgSend_1(_id, _lib._sel_dealloc1); + } + + void finalize() { + _lib._objc_msgSend_1(_id, _lib._sel_finalize1); + } + + NSString? get description { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get debugDescription { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_debugDescription1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static bool respondsToSelector_( + SentryCocoa _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_4( + _lib._class_NSProxy1, _lib._sel_respondsToSelector_1, aSelector); + } + + bool allowsWeakReference() { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsWeakReference1); + } + + bool retainWeakReference() { + return _lib._objc_msgSend_12(_id, _lib._sel_retainWeakReference1); + } +} + +class NSClassDescription extends NSObject { + NSClassDescription._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSClassDescription] that points to the same underlying object as [other]. + static NSClassDescription castFrom(T other) { + return NSClassDescription._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSClassDescription] that wraps the given raw object pointer. + static NSClassDescription castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSClassDescription._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSClassDescription]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSClassDescription1); + } + + static void registerClassDescription_forClass_( + SentryCocoa _lib, NSClassDescription? description, NSObject aClass) { + _lib._objc_msgSend_555( + _lib._class_NSClassDescription1, + _lib._sel_registerClassDescription_forClass_1, + description?._id ?? ffi.nullptr, + aClass._id); + } + + static void invalidateClassDescriptionCache(SentryCocoa _lib) { + _lib._objc_msgSend_1(_lib._class_NSClassDescription1, + _lib._sel_invalidateClassDescriptionCache1); + } + + static NSClassDescription classDescriptionForClass_( + SentryCocoa _lib, NSObject aClass) { + final _ret = _lib._objc_msgSend_556(_lib._class_NSClassDescription1, + _lib._sel_classDescriptionForClass_1, aClass._id); + return NSClassDescription._(_ret, _lib, retain: true, release: true); + } + + @override + NSArray? get attributeKeys { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_attributeKeys1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + @override + NSArray? get toOneRelationshipKeys { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_toOneRelationshipKeys1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + @override + NSArray? get toManyRelationshipKeys { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_toManyRelationshipKeys1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + @override + NSString inverseForRelationshipKey_(NSString? relationshipKey) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_inverseForRelationshipKey_1, + relationshipKey?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + @override + NSClassDescription init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSClassDescription._(_ret, _lib, retain: true, release: true); + } + + static NSClassDescription new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSClassDescription1, _lib._sel_new1); + return NSClassDescription._(_ret, _lib, retain: false, release: true); + } + + static NSClassDescription allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSClassDescription1, _lib._sel_allocWithZone_1, zone); + return NSClassDescription._(_ret, _lib, retain: false, release: true); + } + + static NSClassDescription alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSClassDescription1, _lib._sel_alloc1); + return NSClassDescription._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSClassDescription1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSClassDescription1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSClassDescription1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSClassDescription1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSClassDescription1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSClassDescription1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSClassDescription1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSClassDescription1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSClassDescription1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSScriptObjectSpecifier extends NSObject { + NSScriptObjectSpecifier._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSScriptObjectSpecifier] that points to the same underlying object as [other]. + static NSScriptObjectSpecifier castFrom(T other) { + return NSScriptObjectSpecifier._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSScriptObjectSpecifier] that wraps the given raw object pointer. + static NSScriptObjectSpecifier castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSScriptObjectSpecifier._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSScriptObjectSpecifier]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSScriptObjectSpecifier1); + } + + static NSScriptObjectSpecifier objectSpecifierWithDescriptor_( + SentryCocoa _lib, NSAppleEventDescriptor? descriptor) { + final _ret = _lib._objc_msgSend_580( + _lib._class_NSScriptObjectSpecifier1, + _lib._sel_objectSpecifierWithDescriptor_1, + descriptor?._id ?? ffi.nullptr); + return NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + } + + NSScriptObjectSpecifier initWithContainerSpecifier_key_( + NSScriptObjectSpecifier? container, NSString? property) { + final _ret = _lib._objc_msgSend_581( + _id, + _lib._sel_initWithContainerSpecifier_key_1, + container?._id ?? ffi.nullptr, + property?._id ?? ffi.nullptr); + return NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + } + + NSScriptObjectSpecifier + initWithContainerClassDescription_containerSpecifier_key_( + NSScriptClassDescription? classDesc, + NSScriptObjectSpecifier? container, + NSString? property) { + final _ret = _lib._objc_msgSend_598( + _id, + _lib._sel_initWithContainerClassDescription_containerSpecifier_key_1, + classDesc?._id ?? ffi.nullptr, + container?._id ?? ffi.nullptr, + property?._id ?? ffi.nullptr); + return NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + } + + NSScriptObjectSpecifier initWithCoder_(NSCoder? inCoder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, inCoder?._id ?? ffi.nullptr); + return NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + } + + NSScriptObjectSpecifier? get childSpecifier { + final _ret = _lib._objc_msgSend_588(_id, _lib._sel_childSpecifier1); + return _ret.address == 0 + ? null + : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + } + + set childSpecifier(NSScriptObjectSpecifier? value) { + return _lib._objc_msgSend_589( + _id, _lib._sel_setChildSpecifier_1, value?._id ?? ffi.nullptr); + } + + NSScriptObjectSpecifier? get containerSpecifier { + final _ret = _lib._objc_msgSend_588(_id, _lib._sel_containerSpecifier1); + return _ret.address == 0 + ? null + : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + } + + set containerSpecifier(NSScriptObjectSpecifier? value) { + return _lib._objc_msgSend_589( + _id, _lib._sel_setContainerSpecifier_1, value?._id ?? ffi.nullptr); + } + + bool get containerIsObjectBeingTested { + return _lib._objc_msgSend_12(_id, _lib._sel_containerIsObjectBeingTested1); + } + + set containerIsObjectBeingTested(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setContainerIsObjectBeingTested_1, value); + } + + bool get containerIsRangeContainerObject { + return _lib._objc_msgSend_12( + _id, _lib._sel_containerIsRangeContainerObject1); + } + + set containerIsRangeContainerObject(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setContainerIsRangeContainerObject_1, value); + } + + NSString? get key { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_key1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set key(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setKey_1, value?._id ?? ffi.nullptr); + } + + NSScriptClassDescription? get containerClassDescription { + final _ret = + _lib._objc_msgSend_584(_id, _lib._sel_containerClassDescription1); + return _ret.address == 0 + ? null + : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + } + + set containerClassDescription(NSScriptClassDescription? value) { + return _lib._objc_msgSend_599(_id, _lib._sel_setContainerClassDescription_1, + value?._id ?? ffi.nullptr); + } + + NSScriptClassDescription? get keyClassDescription { + final _ret = _lib._objc_msgSend_584(_id, _lib._sel_keyClassDescription1); + return _ret.address == 0 + ? null + : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + } + + ffi.Pointer indicesOfObjectsByEvaluatingWithContainer_count_( + NSObject container, ffi.Pointer count) { + return _lib._objc_msgSend_600( + _id, + _lib._sel_indicesOfObjectsByEvaluatingWithContainer_count_1, + container._id, + count); + } + + NSObject objectsByEvaluatingWithContainers_(NSObject containers) { + final _ret = _lib._objc_msgSend_16( + _id, _lib._sel_objectsByEvaluatingWithContainers_1, containers._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject get objectsByEvaluatingSpecifier { + final _ret = + _lib._objc_msgSend_2(_id, _lib._sel_objectsByEvaluatingSpecifier1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + int get evaluationErrorNumber { + return _lib._objc_msgSend_78(_id, _lib._sel_evaluationErrorNumber1); + } + + set evaluationErrorNumber(int value) { + return _lib._objc_msgSend_590( + _id, _lib._sel_setEvaluationErrorNumber_1, value); + } + + NSScriptObjectSpecifier? get evaluationErrorSpecifier { + final _ret = + _lib._objc_msgSend_588(_id, _lib._sel_evaluationErrorSpecifier1); + return _ret.address == 0 + ? null + : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + } + + NSAppleEventDescriptor? get descriptor { + final _ret = _lib._objc_msgSend_558(_id, _lib._sel_descriptor1); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + @override + NSScriptObjectSpecifier init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + } + + static NSScriptObjectSpecifier new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSScriptObjectSpecifier1, _lib._sel_new1); + return NSScriptObjectSpecifier._(_ret, _lib, retain: false, release: true); + } + + static NSScriptObjectSpecifier allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSScriptObjectSpecifier1, _lib._sel_allocWithZone_1, zone); + return NSScriptObjectSpecifier._(_ret, _lib, retain: false, release: true); + } + + static NSScriptObjectSpecifier alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSScriptObjectSpecifier1, _lib._sel_alloc1); + return NSScriptObjectSpecifier._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSScriptObjectSpecifier1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSScriptObjectSpecifier1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSScriptObjectSpecifier1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSScriptObjectSpecifier1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSScriptObjectSpecifier1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSScriptObjectSpecifier1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSScriptObjectSpecifier1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSScriptObjectSpecifier1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSScriptObjectSpecifier1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSAppleEventDescriptor extends NSObject { + NSAppleEventDescriptor._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSAppleEventDescriptor] that points to the same underlying object as [other]. + static NSAppleEventDescriptor castFrom(T other) { + return NSAppleEventDescriptor._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSAppleEventDescriptor] that wraps the given raw object pointer. + static NSAppleEventDescriptor castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSAppleEventDescriptor._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSAppleEventDescriptor]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSAppleEventDescriptor1); + } + + static NSAppleEventDescriptor nullDescriptor(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_558( + _lib._class_NSAppleEventDescriptor1, _lib._sel_nullDescriptor1); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithDescriptorType_bytes_length_( + SentryCocoa _lib, + int descriptorType, + ffi.Pointer bytes, + int byteCount) { + final _ret = _lib._objc_msgSend_559( + _lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithDescriptorType_bytes_length_1, + descriptorType, + bytes, + byteCount); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithDescriptorType_data_( + SentryCocoa _lib, int descriptorType, NSData? data) { + final _ret = _lib._objc_msgSend_560( + _lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithDescriptorType_data_1, + descriptorType, + data?._id ?? ffi.nullptr); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithBoolean_( + SentryCocoa _lib, int boolean) { + final _ret = _lib._objc_msgSend_561(_lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithBoolean_1, boolean); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithEnumCode_( + SentryCocoa _lib, int enumerator) { + final _ret = _lib._objc_msgSend_562(_lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithEnumCode_1, enumerator); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithInt32_( + SentryCocoa _lib, int signedInt) { + final _ret = _lib._objc_msgSend_563(_lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithInt32_1, signedInt); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithDouble_( + SentryCocoa _lib, double doubleValue) { + final _ret = _lib._objc_msgSend_564(_lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithDouble_1, doubleValue); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithTypeCode_( + SentryCocoa _lib, int typeCode) { + final _ret = _lib._objc_msgSend_562(_lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithTypeCode_1, typeCode); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithString_( + SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_565(_lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithString_1, string?._id ?? ffi.nullptr); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithDate_( + SentryCocoa _lib, NSDate? date) { + final _ret = _lib._objc_msgSend_566(_lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithDate_1, date?._id ?? ffi.nullptr); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithFileURL_( + SentryCocoa _lib, NSURL? fileURL) { + final _ret = _lib._objc_msgSend_567(_lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithFileURL_1, fileURL?._id ?? ffi.nullptr); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor + appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_( + SentryCocoa _lib, + int eventClass, + int eventID, + NSAppleEventDescriptor? targetDescriptor, + int returnID, + int transactionID) { + final _ret = _lib._objc_msgSend_568( + _lib._class_NSAppleEventDescriptor1, + _lib._sel_appleEventWithEventClass_eventID_targetDescriptor_returnID_transactionID_1, + eventClass, + eventID, + targetDescriptor?._id ?? ffi.nullptr, + returnID, + transactionID); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor listDescriptor(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_558( + _lib._class_NSAppleEventDescriptor1, _lib._sel_listDescriptor1); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor recordDescriptor(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_558( + _lib._class_NSAppleEventDescriptor1, _lib._sel_recordDescriptor1); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor currentProcessDescriptor(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_558(_lib._class_NSAppleEventDescriptor1, + _lib._sel_currentProcessDescriptor1); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithProcessIdentifier_( + SentryCocoa _lib, int processIdentifier) { + final _ret = _lib._objc_msgSend_563(_lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithProcessIdentifier_1, processIdentifier); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithBundleIdentifier_( + SentryCocoa _lib, NSString? bundleIdentifier) { + final _ret = _lib._objc_msgSend_565( + _lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithBundleIdentifier_1, + bundleIdentifier?._id ?? ffi.nullptr); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor descriptorWithApplicationURL_( + SentryCocoa _lib, NSURL? applicationURL) { + final _ret = _lib._objc_msgSend_567( + _lib._class_NSAppleEventDescriptor1, + _lib._sel_descriptorWithApplicationURL_1, + applicationURL?._id ?? ffi.nullptr); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + NSAppleEventDescriptor initWithAEDescNoCopy_(ffi.Pointer aeDesc) { + final _ret = + _lib._objc_msgSend_569(_id, _lib._sel_initWithAEDescNoCopy_1, aeDesc); + return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + } + + NSAppleEventDescriptor initWithDescriptorType_bytes_length_( + int descriptorType, ffi.Pointer bytes, int byteCount) { + final _ret = _lib._objc_msgSend_570( + _id, + _lib._sel_initWithDescriptorType_bytes_length_1, + descriptorType, + bytes, + byteCount); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + NSAppleEventDescriptor initWithDescriptorType_data_( + int descriptorType, NSData? data) { + final _ret = _lib._objc_msgSend_571( + _id, + _lib._sel_initWithDescriptorType_data_1, + descriptorType, + data?._id ?? ffi.nullptr); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + NSAppleEventDescriptor + initWithEventClass_eventID_targetDescriptor_returnID_transactionID_( + int eventClass, + int eventID, + NSAppleEventDescriptor? targetDescriptor, + int returnID, + int transactionID) { + final _ret = _lib._objc_msgSend_572( + _id, + _lib._sel_initWithEventClass_eventID_targetDescriptor_returnID_transactionID_1, + eventClass, + eventID, + targetDescriptor?._id ?? ffi.nullptr, + returnID, + transactionID); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + NSAppleEventDescriptor initListDescriptor() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_initListDescriptor1); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + NSAppleEventDescriptor initRecordDescriptor() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_initRecordDescriptor1); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + ffi.Pointer get aeDesc { + return _lib._objc_msgSend_573(_id, _lib._sel_aeDesc1); + } + + int get descriptorType { + return _lib._objc_msgSend_197(_id, _lib._sel_descriptorType1); + } + + NSData? get data { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_data1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + int get booleanValue { + return _lib._objc_msgSend_216(_id, _lib._sel_booleanValue1); + } + + int get enumCodeValue { + return _lib._objc_msgSend_197(_id, _lib._sel_enumCodeValue1); + } + + int get int32Value { + return _lib._objc_msgSend_219(_id, _lib._sel_int32Value1); + } + + double get doubleValue { + return _lib._objc_msgSend_155(_id, _lib._sel_doubleValue1); + } + + int get typeCodeValue { + return _lib._objc_msgSend_197(_id, _lib._sel_typeCodeValue1); + } + + NSString? get stringValue { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_stringValue1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSDate? get dateValue { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_dateValue1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + NSURL? get fileURLValue { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_fileURLValue1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + int get eventClass { + return _lib._objc_msgSend_197(_id, _lib._sel_eventClass1); + } + + int get eventID { + return _lib._objc_msgSend_197(_id, _lib._sel_eventID1); + } + + int get returnID { + return _lib._objc_msgSend_217(_id, _lib._sel_returnID1); + } + + int get transactionID { + return _lib._objc_msgSend_219(_id, _lib._sel_transactionID1); + } + + void setParamDescriptor_forKeyword_( + NSAppleEventDescriptor? descriptor, int keyword) { + _lib._objc_msgSend_574(_id, _lib._sel_setParamDescriptor_forKeyword_1, + descriptor?._id ?? ffi.nullptr, keyword); + } + + NSAppleEventDescriptor paramDescriptorForKeyword_(int keyword) { + final _ret = _lib._objc_msgSend_562( + _id, _lib._sel_paramDescriptorForKeyword_1, keyword); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + void removeParamDescriptorWithKeyword_(int keyword) { + _lib._objc_msgSend_575( + _id, _lib._sel_removeParamDescriptorWithKeyword_1, keyword); + } + + void setAttributeDescriptor_forKeyword_( + NSAppleEventDescriptor? descriptor, int keyword) { + _lib._objc_msgSend_574(_id, _lib._sel_setAttributeDescriptor_forKeyword_1, + descriptor?._id ?? ffi.nullptr, keyword); + } + + NSAppleEventDescriptor attributeDescriptorForKeyword_(int keyword) { + final _ret = _lib._objc_msgSend_562( + _id, _lib._sel_attributeDescriptorForKeyword_1, keyword); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + NSAppleEventDescriptor sendEventWithOptions_timeout_error_(int sendOptions, + double timeoutInSeconds, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_576( + _id, + _lib._sel_sendEventWithOptions_timeout_error_1, + sendOptions, + timeoutInSeconds, + error); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + bool get isRecordDescriptor { + return _lib._objc_msgSend_12(_id, _lib._sel_isRecordDescriptor1); + } + + int get numberOfItems { + return _lib._objc_msgSend_78(_id, _lib._sel_numberOfItems1); + } + + void insertDescriptor_atIndex_( + NSAppleEventDescriptor? descriptor, int index) { + _lib._objc_msgSend_577(_id, _lib._sel_insertDescriptor_atIndex_1, + descriptor?._id ?? ffi.nullptr, index); + } + + NSAppleEventDescriptor descriptorAtIndex_(int index) { + final _ret = + _lib._objc_msgSend_578(_id, _lib._sel_descriptorAtIndex_1, index); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + void removeDescriptorAtIndex_(int index) { + _lib._objc_msgSend_394(_id, _lib._sel_removeDescriptorAtIndex_1, index); + } + + void setDescriptor_forKeyword_( + NSAppleEventDescriptor? descriptor, int keyword) { + _lib._objc_msgSend_574(_id, _lib._sel_setDescriptor_forKeyword_1, + descriptor?._id ?? ffi.nullptr, keyword); + } + + NSAppleEventDescriptor descriptorForKeyword_(int keyword) { + final _ret = + _lib._objc_msgSend_562(_id, _lib._sel_descriptorForKeyword_1, keyword); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + void removeDescriptorWithKeyword_(int keyword) { + _lib._objc_msgSend_575( + _id, _lib._sel_removeDescriptorWithKeyword_1, keyword); + } + + int keywordForDescriptorAtIndex_(int index) { + return _lib._objc_msgSend_579( + _id, _lib._sel_keywordForDescriptorAtIndex_1, index); + } + + NSAppleEventDescriptor coerceToDescriptorType_(int descriptorType) { + final _ret = _lib._objc_msgSend_562( + _id, _lib._sel_coerceToDescriptorType_1, descriptorType); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + @override + NSAppleEventDescriptor init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + static NSAppleEventDescriptor new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSAppleEventDescriptor1, _lib._sel_new1); + return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + } + + static NSAppleEventDescriptor allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSAppleEventDescriptor1, _lib._sel_allocWithZone_1, zone); + return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + } + + static NSAppleEventDescriptor alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSAppleEventDescriptor1, _lib._sel_alloc1); + return NSAppleEventDescriptor._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSAppleEventDescriptor1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSAppleEventDescriptor1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSAppleEventDescriptor1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSAppleEventDescriptor1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSAppleEventDescriptor1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSAppleEventDescriptor1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSAppleEventDescriptor1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSAppleEventDescriptor1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSAppleEventDescriptor1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +@ffi.Packed(2) +class AEDesc extends ffi.Struct { + @ffi.UnsignedInt() + external int descriptorType; + + external ffi.Pointer> dataHandle; +} + +class OpaqueAEDataStorageType extends ffi.Opaque {} + +abstract class NSAppleEventSendOptions { + static const int NSAppleEventSendNoReply = 1; + static const int NSAppleEventSendQueueReply = 2; + static const int NSAppleEventSendWaitForReply = 3; + static const int NSAppleEventSendNeverInteract = 16; + static const int NSAppleEventSendCanInteract = 32; + static const int NSAppleEventSendAlwaysInteract = 48; + static const int NSAppleEventSendCanSwitchLayer = 64; + static const int NSAppleEventSendDontRecord = 4096; + static const int NSAppleEventSendDontExecute = 8192; + static const int NSAppleEventSendDontAnnotate = 65536; + static const int NSAppleEventSendDefaultOptions = 35; +} + +class NSScriptClassDescription extends NSClassDescription { + NSScriptClassDescription._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSScriptClassDescription] that points to the same underlying object as [other]. + static NSScriptClassDescription castFrom(T other) { + return NSScriptClassDescription._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSScriptClassDescription] that wraps the given raw object pointer. + static NSScriptClassDescription castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSScriptClassDescription._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSScriptClassDescription]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSScriptClassDescription1); + } + + static NSScriptClassDescription classDescriptionForClass_( + SentryCocoa _lib, NSObject aClass) { + final _ret = _lib._objc_msgSend_582(_lib._class_NSScriptClassDescription1, + _lib._sel_classDescriptionForClass_1, aClass._id); + return NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + } + + NSScriptClassDescription initWithSuiteName_className_dictionary_( + NSString? suiteName, + NSString? className, + NSDictionary? classDeclaration) { + final _ret = _lib._objc_msgSend_583( + _id, + _lib._sel_initWithSuiteName_className_dictionary_1, + suiteName?._id ?? ffi.nullptr, + className?._id ?? ffi.nullptr, + classDeclaration?._id ?? ffi.nullptr); + return NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + } + + NSString? get suiteName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_suiteName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get className { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_className1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get implementationClassName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_implementationClassName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSScriptClassDescription? get superclassDescription { + final _ret = _lib._objc_msgSend_584(_id, _lib._sel_superclassDescription1); + return _ret.address == 0 + ? null + : NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + } + + int get appleEventCode { + return _lib._objc_msgSend_197(_id, _lib._sel_appleEventCode1); + } + + bool matchesAppleEventCode_(int appleEventCode) { + return _lib._objc_msgSend_179( + _id, _lib._sel_matchesAppleEventCode_1, appleEventCode); + } + + bool supportsCommand_(NSScriptCommandDescription? commandDescription) { + return _lib._objc_msgSend_594(_id, _lib._sel_supportsCommand_1, + commandDescription?._id ?? ffi.nullptr); + } + + ffi.Pointer selectorForCommand_( + NSScriptCommandDescription? commandDescription) { + return _lib._objc_msgSend_595(_id, _lib._sel_selectorForCommand_1, + commandDescription?._id ?? ffi.nullptr); + } + + NSString typeForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_64( + _id, _lib._sel_typeForKey_1, key?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSScriptClassDescription classDescriptionForKey_(NSString? key) { + final _ret = _lib._objc_msgSend_596( + _id, _lib._sel_classDescriptionForKey_1, key?._id ?? ffi.nullptr); + return NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + } + + int appleEventCodeForKey_(NSString? key) { + return _lib._objc_msgSend_585( + _id, _lib._sel_appleEventCodeForKey_1, key?._id ?? ffi.nullptr); + } + + NSString keyWithAppleEventCode_(int appleEventCode) { + final _ret = _lib._objc_msgSend_597( + _id, _lib._sel_keyWithAppleEventCode_1, appleEventCode); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get defaultSubcontainerAttributeKey { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_defaultSubcontainerAttributeKey1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + bool isLocationRequiredToCreateForKey_(NSString? toManyRelationshipKey) { + return _lib._objc_msgSend_59( + _id, + _lib._sel_isLocationRequiredToCreateForKey_1, + toManyRelationshipKey?._id ?? ffi.nullptr); + } + + bool hasPropertyForKey_(NSString? key) { + return _lib._objc_msgSend_59( + _id, _lib._sel_hasPropertyForKey_1, key?._id ?? ffi.nullptr); + } + + bool hasOrderedToManyRelationshipForKey_(NSString? key) { + return _lib._objc_msgSend_59( + _id, + _lib._sel_hasOrderedToManyRelationshipForKey_1, + key?._id ?? ffi.nullptr); + } + + bool hasReadablePropertyForKey_(NSString? key) { + return _lib._objc_msgSend_59( + _id, _lib._sel_hasReadablePropertyForKey_1, key?._id ?? ffi.nullptr); + } + + bool hasWritablePropertyForKey_(NSString? key) { + return _lib._objc_msgSend_59( + _id, _lib._sel_hasWritablePropertyForKey_1, key?._id ?? ffi.nullptr); + } + + bool isReadOnlyKey_(NSString? key) { + return _lib._objc_msgSend_59( + _id, _lib._sel_isReadOnlyKey_1, key?._id ?? ffi.nullptr); + } + + static void registerClassDescription_forClass_( + SentryCocoa _lib, NSClassDescription? description, NSObject aClass) { + _lib._objc_msgSend_555( + _lib._class_NSScriptClassDescription1, + _lib._sel_registerClassDescription_forClass_1, + description?._id ?? ffi.nullptr, + aClass._id); + } + + static void invalidateClassDescriptionCache(SentryCocoa _lib) { + _lib._objc_msgSend_1(_lib._class_NSScriptClassDescription1, + _lib._sel_invalidateClassDescriptionCache1); + } + + @override + NSScriptClassDescription init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSScriptClassDescription._(_ret, _lib, retain: true, release: true); + } + + static NSScriptClassDescription new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSScriptClassDescription1, _lib._sel_new1); + return NSScriptClassDescription._(_ret, _lib, retain: false, release: true); + } + + static NSScriptClassDescription allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSScriptClassDescription1, _lib._sel_allocWithZone_1, zone); + return NSScriptClassDescription._(_ret, _lib, retain: false, release: true); + } + + static NSScriptClassDescription alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSScriptClassDescription1, _lib._sel_alloc1); + return NSScriptClassDescription._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSScriptClassDescription1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSScriptClassDescription1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSScriptClassDescription1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSScriptClassDescription1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSScriptClassDescription1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSScriptClassDescription1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSScriptClassDescription1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSScriptClassDescription1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSScriptClassDescription1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSScriptCommandDescription extends NSObject { + NSScriptCommandDescription._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSScriptCommandDescription] that points to the same underlying object as [other]. + static NSScriptCommandDescription castFrom(T other) { + return NSScriptCommandDescription._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSScriptCommandDescription] that wraps the given raw object pointer. + static NSScriptCommandDescription castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSScriptCommandDescription._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSScriptCommandDescription]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSScriptCommandDescription1); + } + + @override + NSObject init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSScriptCommandDescription initWithSuiteName_commandName_dictionary_( + NSString? suiteName, + NSString? commandName, + NSDictionary? commandDeclaration) { + final _ret = _lib._objc_msgSend_583( + _id, + _lib._sel_initWithSuiteName_commandName_dictionary_1, + suiteName?._id ?? ffi.nullptr, + commandName?._id ?? ffi.nullptr, + commandDeclaration?._id ?? ffi.nullptr); + return NSScriptCommandDescription._(_ret, _lib, + retain: true, release: true); + } + + NSScriptCommandDescription initWithCoder_(NSCoder? inCoder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, inCoder?._id ?? ffi.nullptr); + return NSScriptCommandDescription._(_ret, _lib, + retain: true, release: true); + } + + NSString? get suiteName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_suiteName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get commandName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_commandName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get appleEventClassCode { + return _lib._objc_msgSend_197(_id, _lib._sel_appleEventClassCode1); + } + + int get appleEventCode { + return _lib._objc_msgSend_197(_id, _lib._sel_appleEventCode1); + } + + NSString? get commandClassName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_commandClassName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get returnType { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_returnType1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get appleEventCodeForReturnType { + return _lib._objc_msgSend_197(_id, _lib._sel_appleEventCodeForReturnType1); + } + + NSArray? get argumentNames { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_argumentNames1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString typeForArgumentWithName_(NSString? argumentName) { + final _ret = _lib._objc_msgSend_64(_id, _lib._sel_typeForArgumentWithName_1, + argumentName?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + int appleEventCodeForArgumentWithName_(NSString? argumentName) { + return _lib._objc_msgSend_585( + _id, + _lib._sel_appleEventCodeForArgumentWithName_1, + argumentName?._id ?? ffi.nullptr); + } + + bool isOptionalArgumentWithName_(NSString? argumentName) { + return _lib._objc_msgSend_59(_id, _lib._sel_isOptionalArgumentWithName_1, + argumentName?._id ?? ffi.nullptr); + } + + NSScriptCommand createCommandInstance() { + final _ret = _lib._objc_msgSend_592(_id, _lib._sel_createCommandInstance1); + return NSScriptCommand._(_ret, _lib, retain: true, release: true); + } + + NSScriptCommand createCommandInstanceWithZone_(ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_593( + _id, _lib._sel_createCommandInstanceWithZone_1, zone); + return NSScriptCommand._(_ret, _lib, retain: true, release: true); + } + + static NSScriptCommandDescription new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSScriptCommandDescription1, _lib._sel_new1); + return NSScriptCommandDescription._(_ret, _lib, + retain: false, release: true); + } + + static NSScriptCommandDescription allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3(_lib._class_NSScriptCommandDescription1, + _lib._sel_allocWithZone_1, zone); + return NSScriptCommandDescription._(_ret, _lib, + retain: false, release: true); + } + + static NSScriptCommandDescription alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSScriptCommandDescription1, _lib._sel_alloc1); + return NSScriptCommandDescription._(_ret, _lib, + retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSScriptCommandDescription1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSScriptCommandDescription1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSScriptCommandDescription1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSScriptCommandDescription1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSScriptCommandDescription1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSScriptCommandDescription1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSScriptCommandDescription1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSScriptCommandDescription1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSScriptCommandDescription1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSScriptCommand extends NSObject { + NSScriptCommand._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSScriptCommand] that points to the same underlying object as [other]. + static NSScriptCommand castFrom(T other) { + return NSScriptCommand._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSScriptCommand] that wraps the given raw object pointer. + static NSScriptCommand castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSScriptCommand._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSScriptCommand]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSScriptCommand1); + } + + NSScriptCommand initWithCommandDescription_( + NSScriptCommandDescription? commandDef) { + final _ret = _lib._objc_msgSend_586(_id, + _lib._sel_initWithCommandDescription_1, commandDef?._id ?? ffi.nullptr); + return NSScriptCommand._(_ret, _lib, retain: true, release: true); + } + + NSScriptCommand initWithCoder_(NSCoder? inCoder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, inCoder?._id ?? ffi.nullptr); + return NSScriptCommand._(_ret, _lib, retain: true, release: true); + } + + NSScriptCommandDescription? get commandDescription { + final _ret = _lib._objc_msgSend_587(_id, _lib._sel_commandDescription1); + return _ret.address == 0 + ? null + : NSScriptCommandDescription._(_ret, _lib, retain: true, release: true); + } + + NSObject get directParameter { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_directParameter1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set directParameter(NSObject value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDirectParameter_1, value._id); + } + + NSScriptObjectSpecifier? get receiversSpecifier { + final _ret = _lib._objc_msgSend_588(_id, _lib._sel_receiversSpecifier1); + return _ret.address == 0 + ? null + : NSScriptObjectSpecifier._(_ret, _lib, retain: true, release: true); + } + + set receiversSpecifier(NSScriptObjectSpecifier? value) { + return _lib._objc_msgSend_589( + _id, _lib._sel_setReceiversSpecifier_1, value?._id ?? ffi.nullptr); + } + + NSObject get evaluatedReceivers { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_evaluatedReceivers1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get arguments { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_arguments1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set arguments(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, _lib._sel_setArguments_1, value?._id ?? ffi.nullptr); + } + + NSDictionary? get evaluatedArguments { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_evaluatedArguments1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + bool get wellFormed { + return _lib._objc_msgSend_12(_id, _lib._sel_isWellFormed1); + } + + NSObject performDefaultImplementation() { + final _ret = + _lib._objc_msgSend_2(_id, _lib._sel_performDefaultImplementation1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject executeCommand() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_executeCommand1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + int get scriptErrorNumber { + return _lib._objc_msgSend_78(_id, _lib._sel_scriptErrorNumber1); + } + + set scriptErrorNumber(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setScriptErrorNumber_1, value); + } + + NSAppleEventDescriptor? get scriptErrorOffendingObjectDescriptor { + final _ret = _lib._objc_msgSend_558( + _id, _lib._sel_scriptErrorOffendingObjectDescriptor1); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + set scriptErrorOffendingObjectDescriptor(NSAppleEventDescriptor? value) { + return _lib._objc_msgSend_591( + _id, + _lib._sel_setScriptErrorOffendingObjectDescriptor_1, + value?._id ?? ffi.nullptr); + } + + NSAppleEventDescriptor? get scriptErrorExpectedTypeDescriptor { + final _ret = _lib._objc_msgSend_558( + _id, _lib._sel_scriptErrorExpectedTypeDescriptor1); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + set scriptErrorExpectedTypeDescriptor(NSAppleEventDescriptor? value) { + return _lib._objc_msgSend_591( + _id, + _lib._sel_setScriptErrorExpectedTypeDescriptor_1, + value?._id ?? ffi.nullptr); + } + + NSString? get scriptErrorString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_scriptErrorString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set scriptErrorString(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setScriptErrorString_1, value?._id ?? ffi.nullptr); + } + + static NSScriptCommand currentCommand(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_592( + _lib._class_NSScriptCommand1, _lib._sel_currentCommand1); + return NSScriptCommand._(_ret, _lib, retain: true, release: true); + } + + NSAppleEventDescriptor? get appleEvent { + final _ret = _lib._objc_msgSend_558(_id, _lib._sel_appleEvent1); + return _ret.address == 0 + ? null + : NSAppleEventDescriptor._(_ret, _lib, retain: true, release: true); + } + + void suspendExecution() { + _lib._objc_msgSend_1(_id, _lib._sel_suspendExecution1); + } + + void resumeExecutionWithResult_(NSObject result) { + _lib._objc_msgSend_15( + _id, _lib._sel_resumeExecutionWithResult_1, result._id); + } + + @override + NSScriptCommand init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSScriptCommand._(_ret, _lib, retain: true, release: true); + } + + static NSScriptCommand new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSScriptCommand1, _lib._sel_new1); + return NSScriptCommand._(_ret, _lib, retain: false, release: true); + } + + static NSScriptCommand allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSScriptCommand1, _lib._sel_allocWithZone_1, zone); + return NSScriptCommand._(_ret, _lib, retain: false, release: true); + } + + static NSScriptCommand alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSScriptCommand1, _lib._sel_alloc1); + return NSScriptCommand._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSScriptCommand1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSScriptCommand1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSScriptCommand1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSScriptCommand1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSScriptCommand1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSScriptCommand1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSScriptCommand1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSScriptCommand1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSScriptCommand1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSUUID extends NSObject { + NSUUID._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSUUID] that points to the same underlying object as [other]. + static NSUUID castFrom(T other) { + return NSUUID._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSUUID] that wraps the given raw object pointer. + static NSUUID castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSUUID._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSUUID]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSUUID1); + } + + static NSUUID UUID(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSUUID1, _lib._sel_UUID1); + return NSUUID._(_ret, _lib, retain: true, release: true); + } + + @override + NSUUID init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSUUID._(_ret, _lib, retain: true, release: true); + } + + NSUUID initWithUUIDString_(NSString? string) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithUUIDString_1, string?._id ?? ffi.nullptr); + return NSUUID._(_ret, _lib, retain: true, release: true); + } + + NSUUID initWithUUIDBytes_(ffi.Pointer bytes) { + final _ret = + _lib._objc_msgSend_609(_id, _lib._sel_initWithUUIDBytes_1, bytes); + return NSUUID._(_ret, _lib, retain: true, release: true); + } + + void getUUIDBytes_(ffi.Pointer uuid) { + _lib._objc_msgSend_610(_id, _lib._sel_getUUIDBytes_1, uuid); + } + + int compare_(NSUUID? otherUUID) { + return _lib._objc_msgSend_611( + _id, _lib._sel_compare_1, otherUUID?._id ?? ffi.nullptr); + } + + NSString? get UUIDString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_UUIDString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSUUID new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSUUID1, _lib._sel_new1); + return NSUUID._(_ret, _lib, retain: false, release: true); + } + + static NSUUID allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSUUID1, _lib._sel_allocWithZone_1, zone); + return NSUUID._(_ret, _lib, retain: false, release: true); + } + + static NSUUID alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSUUID1, _lib._sel_alloc1); + return NSUUID._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSUUID1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSUUID1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSUUID1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSUUID1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSUUID1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSUUID1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSUUID1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSUUID1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSUUID1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class SentryEnvelopeItem extends _ObjCWrapper { + SentryEnvelopeItem._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryEnvelopeItem] that points to the same underlying object as [other]. + static SentryEnvelopeItem castFrom(T other) { + return SentryEnvelopeItem._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [SentryEnvelopeItem] that wraps the given raw object pointer. + static SentryEnvelopeItem castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryEnvelopeItem._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryEnvelopeItem]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryEnvelopeItem1); + } + + SentryEnvelopeItem initWithEvent_(SentryEvent? event) { + final _ret = _lib._objc_msgSend_614( + _id, _lib._sel_initWithEvent_1, event?._id ?? ffi.nullptr); + return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); + } + + SentryEnvelopeItem initWithSession_(SentrySession? session) { + final _ret = _lib._objc_msgSend_615( + _id, _lib._sel_initWithSession_1, session?._id ?? ffi.nullptr); + return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); + } + + SentryEnvelopeItem initWithUserFeedback_(SentryUserFeedback? userFeedback) { + final _ret = _lib._objc_msgSend_616(_id, _lib._sel_initWithUserFeedback_1, + userFeedback?._id ?? ffi.nullptr); + return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); + } + + SentryEnvelopeItem initWithAttachment_maxAttachmentSize_( + SentryAttachment? attachment, NSObject maxAttachmentSize) { + final _ret = _lib._objc_msgSend_617( + _id, + _lib._sel_initWithAttachment_maxAttachmentSize_1, + attachment?._id ?? ffi.nullptr, + maxAttachmentSize._id); + return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); + } + + SentryEnvelopeItem initWithHeader_data_( + SentryEnvelopeItemHeader? header, NSObject data) { + final _ret = _lib._objc_msgSend_618(_id, _lib._sel_initWithHeader_data_1, + header?._id ?? ffi.nullptr, data._id); + return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); + } + + /// The envelope item header. + SentryEnvelopeItemHeader? get header { + final _ret = _lib._objc_msgSend_619(_id, _lib._sel_header1); + return _ret.address == 0 + ? null + : SentryEnvelopeItemHeader._(_ret, _lib, retain: true, release: true); + } + + /// The envelope payload. + ffi.Pointer get data { + return _lib._objc_msgSend_620(_id, _lib._sel_data1); + } +} + +class SentryEvent extends _ObjCWrapper { + SentryEvent._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryEvent] that points to the same underlying object as [other]. + static SentryEvent castFrom(T other) { + return SentryEvent._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [SentryEvent] that wraps the given raw object pointer. + static SentryEvent castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryEvent._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryEvent]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryEvent1); + } +} + +class SentrySession extends _ObjCWrapper { + SentrySession._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentrySession] that points to the same underlying object as [other]. + static SentrySession castFrom(T other) { + return SentrySession._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [SentrySession] that wraps the given raw object pointer. + static SentrySession castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentrySession._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentrySession]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentrySession1); + } +} + +class SentryUserFeedback extends _ObjCWrapper { + SentryUserFeedback._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryUserFeedback] that points to the same underlying object as [other]. + static SentryUserFeedback castFrom(T other) { + return SentryUserFeedback._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [SentryUserFeedback] that wraps the given raw object pointer. + static SentryUserFeedback castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryUserFeedback._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryUserFeedback]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryUserFeedback1); + } +} + +class SentryAttachment extends _ObjCWrapper { + SentryAttachment._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryAttachment] that points to the same underlying object as [other]. + static SentryAttachment castFrom(T other) { + return SentryAttachment._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [SentryAttachment] that wraps the given raw object pointer. + static SentryAttachment castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryAttachment._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryAttachment]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryAttachment1); + } +} + +class SentryEnvelopeItemHeader extends _ObjCWrapper { + SentryEnvelopeItemHeader._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryEnvelopeItemHeader] that points to the same underlying object as [other]. + static SentryEnvelopeItemHeader castFrom(T other) { + return SentryEnvelopeItemHeader._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [SentryEnvelopeItemHeader] that wraps the given raw object pointer. + static SentryEnvelopeItemHeader castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryEnvelopeItemHeader._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryEnvelopeItemHeader]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryEnvelopeItemHeader1); + } +} + +class SentryEnvelopeHeader extends _ObjCWrapper { + SentryEnvelopeHeader._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryEnvelopeHeader] that points to the same underlying object as [other]. + static SentryEnvelopeHeader castFrom(T other) { + return SentryEnvelopeHeader._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [SentryEnvelopeHeader] that wraps the given raw object pointer. + static SentryEnvelopeHeader castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryEnvelopeHeader._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryEnvelopeHeader]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryEnvelopeHeader1); + } + + /// Initializes an @c SentryEnvelopeHeader object with the specified eventId. + /// @note Sets the @c sdkInfo from @c SentryMeta. + /// @param eventId The identifier of the event. Can be nil if no event in the envelope or attachment + /// related to event. + SentryEnvelopeHeader initWithId_(SentryId? eventId) { + final _ret = _lib._objc_msgSend_622( + _id, _lib._sel_initWithId_1, eventId?._id ?? ffi.nullptr); + return SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); + } + + /// Initializes a @c SentryEnvelopeHeader object with the specified @c eventId and @c traceContext. + /// @param eventId The identifier of the event. Can be @c nil if no event in the envelope or + /// attachment related to event. + /// @param traceContext Current trace state. + SentryEnvelopeHeader initWithId_traceContext_( + SentryId? eventId, SentryTraceContext? traceContext) { + final _ret = _lib._objc_msgSend_623( + _id, + _lib._sel_initWithId_traceContext_1, + eventId?._id ?? ffi.nullptr, + traceContext?._id ?? ffi.nullptr); + return SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); + } + + /// Initializes a @c SentryEnvelopeHeader object with the specified @c eventId, @c skdInfo and + /// @c traceContext. It is recommended to use @c initWithId:traceContext: because it sets the + /// @c sdkInfo for you. + /// @param eventId The identifier of the event. Can be @c nil if no event in the envelope or + /// attachment related to event. + /// @param sdkInfo Describes the Sentry SDK. Can be @c nil for backwards compatibility. New + /// instances should always provide a version. + /// @param traceContext Current trace state. + SentryEnvelopeHeader initWithId_sdkInfo_traceContext_(SentryId? eventId, + SentrySdkInfo? sdkInfo, SentryTraceContext? traceContext) { + final _ret = _lib._objc_msgSend_624( + _id, + _lib._sel_initWithId_sdkInfo_traceContext_1, + eventId?._id ?? ffi.nullptr, + sdkInfo?._id ?? ffi.nullptr, + traceContext?._id ?? ffi.nullptr); + return SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); + } + + /// The event identifier, if available. + /// An event id exist if the envelope contains an event of items within it are related. i.e + /// Attachments + SentryId? get eventId { + final _ret = _lib._objc_msgSend_613(_id, _lib._sel_eventId1); + return _ret.address == 0 + ? null + : SentryId._(_ret, _lib, retain: true, release: true); + } + + SentrySdkInfo? get sdkInfo { + final _ret = _lib._objc_msgSend_625(_id, _lib._sel_sdkInfo1); + return _ret.address == 0 + ? null + : SentrySdkInfo._(_ret, _lib, retain: true, release: true); + } + + SentryTraceContext? get traceContext { + final _ret = _lib._objc_msgSend_626(_id, _lib._sel_traceContext1); + return _ret.address == 0 + ? null + : SentryTraceContext._(_ret, _lib, retain: true, release: true); + } + + /// The timestamp when the event was sent from the SDK as string in RFC 3339 format. Used + /// for clock drift correction of the event timestamp. The time zone must be UTC. + /// + /// The timestamp should be generated as close as possible to the transmision of the event, + /// so that the delay between sending the envelope and receiving it on the server-side is + /// minimized. + ffi.Pointer get sentAt { + return _lib._objc_msgSend_620(_id, _lib._sel_sentAt1); + } + + /// The timestamp when the event was sent from the SDK as string in RFC 3339 format. Used + /// for clock drift correction of the event timestamp. The time zone must be UTC. + /// + /// The timestamp should be generated as close as possible to the transmision of the event, + /// so that the delay between sending the envelope and receiving it on the server-side is + /// minimized. + set sentAt(ffi.Pointer value) { + return _lib._objc_msgSend_627(_id, _lib._sel_setSentAt_1, value); + } +} + +class SentryTraceContext extends _ObjCWrapper { + SentryTraceContext._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryTraceContext] that points to the same underlying object as [other]. + static SentryTraceContext castFrom(T other) { + return SentryTraceContext._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [SentryTraceContext] that wraps the given raw object pointer. + static SentryTraceContext castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryTraceContext._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryTraceContext]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryTraceContext1); + } +} + +class SentrySdkInfo extends _ObjCWrapper { + SentrySdkInfo._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentrySdkInfo] that points to the same underlying object as [other]. + static SentrySdkInfo castFrom(T other) { + return SentrySdkInfo._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [SentrySdkInfo] that wraps the given raw object pointer. + static SentrySdkInfo castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentrySdkInfo._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentrySdkInfo]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentrySdkInfo1); + } +} + +int _ObjCBlock_ffiInt_SentryAppStartMeasurement_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiInt_SentryAppStartMeasurement_closureRegistry = + {}; +int _ObjCBlock_ffiInt_SentryAppStartMeasurement_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiInt_SentryAppStartMeasurement_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiInt_SentryAppStartMeasurement_closureRegistryIndex; + _ObjCBlock_ffiInt_SentryAppStartMeasurement_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +int _ObjCBlock_ffiInt_SentryAppStartMeasurement_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiInt_SentryAppStartMeasurement_closureRegistry[ + block.ref.target.address] as int Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiInt_SentryAppStartMeasurement extends _ObjCBlockBase { + ObjCBlock_ffiInt_SentryAppStartMeasurement._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiInt_SentryAppStartMeasurement.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Int Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiInt_SentryAppStartMeasurement_fnPtrTrampoline, + 0) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiInt_SentryAppStartMeasurement.fromFunction( + SentryCocoa lib, int Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Int Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiInt_SentryAppStartMeasurement_closureTrampoline, + 0) + .cast(), + _ObjCBlock_ffiInt_SentryAppStartMeasurement_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + int call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Int Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + int Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +class SentryAppStartMeasurement extends _ObjCWrapper { + SentryAppStartMeasurement._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryAppStartMeasurement] that points to the same underlying object as [other]. + static SentryAppStartMeasurement castFrom(T other) { + return SentryAppStartMeasurement._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [SentryAppStartMeasurement] that wraps the given raw object pointer. + static SentryAppStartMeasurement castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryAppStartMeasurement._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryAppStartMeasurement]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryAppStartMeasurement1); + } +} + +class SentryOptions extends _ObjCWrapper { + SentryOptions._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryOptions] that points to the same underlying object as [other]. + static SentryOptions castFrom(T other) { + return SentryOptions._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [SentryOptions] that wraps the given raw object pointer. + static SentryOptions castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryOptions._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryOptions]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryOptions1); + } +} + +class SentryUser extends _ObjCWrapper { + SentryUser._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryUser] that points to the same underlying object as [other]. + static SentryUser castFrom(T other) { + return SentryUser._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [SentryUser] that wraps the given raw object pointer. + static SentryUser castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryUser._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryUser]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryUser1); + } +} + +class SentryBreadcrumb extends _ObjCWrapper { + SentryBreadcrumb._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryBreadcrumb] that points to the same underlying object as [other]. + static SentryBreadcrumb castFrom(T other) { + return SentryBreadcrumb._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [SentryBreadcrumb] that wraps the given raw object pointer. + static SentryBreadcrumb castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryBreadcrumb._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryBreadcrumb]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryBreadcrumb1); + } +} + +class NSItemProvider extends NSObject { + NSItemProvider._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSItemProvider] that points to the same underlying object as [other]. + static NSItemProvider castFrom(T other) { + return NSItemProvider._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSItemProvider] that wraps the given raw object pointer. + static NSItemProvider castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSItemProvider._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSItemProvider]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSItemProvider1); + } + + @override + NSItemProvider init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSItemProvider._(_ret, _lib, retain: true, release: true); + } + + void registerDataRepresentationForTypeIdentifier_visibility_loadHandler_( + NSString? typeIdentifier, + int visibility, + ObjCBlock_NSProgress_ffiVoidNSDataNSError loadHandler) { + _lib._objc_msgSend_657( + _id, + _lib._sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + visibility, + loadHandler._id); + } + + void + registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_( + NSString? typeIdentifier, + int fileOptions, + int visibility, + ObjCBlock_NSProgress_ffiVoidNSURLboolNSError loadHandler) { + _lib._objc_msgSend_658( + _id, + _lib._sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + fileOptions, + visibility, + loadHandler._id); + } + + NSArray? get registeredTypeIdentifiers { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_registeredTypeIdentifiers1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray registeredTypeIdentifiersWithFileOptions_(int fileOptions) { + final _ret = _lib._objc_msgSend_659( + _id, _lib._sel_registeredTypeIdentifiersWithFileOptions_1, fileOptions); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + bool hasItemConformingToTypeIdentifier_(NSString? typeIdentifier) { + return _lib._objc_msgSend_59( + _id, + _lib._sel_hasItemConformingToTypeIdentifier_1, + typeIdentifier?._id ?? ffi.nullptr); + } + + bool hasRepresentationConformingToTypeIdentifier_fileOptions_( + NSString? typeIdentifier, int fileOptions) { + return _lib._objc_msgSend_660( + _id, + _lib._sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1, + typeIdentifier?._id ?? ffi.nullptr, + fileOptions); + } + + NSProgress loadDataRepresentationForTypeIdentifier_completionHandler_( + NSString? typeIdentifier, + ObjCBlock_ffiVoid_NSData_NSError completionHandler) { + final _ret = _lib._objc_msgSend_661( + _id, + _lib._sel_loadDataRepresentationForTypeIdentifier_completionHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + completionHandler._id); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSProgress loadFileRepresentationForTypeIdentifier_completionHandler_( + NSString? typeIdentifier, + ObjCBlock_ffiVoid_NSURL_NSError completionHandler) { + final _ret = _lib._objc_msgSend_662( + _id, + _lib._sel_loadFileRepresentationForTypeIdentifier_completionHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + completionHandler._id); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSProgress loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_( + NSString? typeIdentifier, + ObjCBlock_ffiVoid_NSURL_bool_NSError completionHandler) { + final _ret = _lib._objc_msgSend_663( + _id, + _lib._sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + completionHandler._id); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSString? get suggestedName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_suggestedName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set suggestedName(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setSuggestedName_1, value?._id ?? ffi.nullptr); + } + + NSItemProvider initWithObject_(NSObject? object) { + final _ret = _lib._objc_msgSend_16( + _id, _lib._sel_initWithObject_1, object?._id ?? ffi.nullptr); + return NSItemProvider._(_ret, _lib, retain: true, release: true); + } + + void registerObject_visibility_(NSObject? object, int visibility) { + _lib._objc_msgSend_664(_id, _lib._sel_registerObject_visibility_1, + object?._id ?? ffi.nullptr, visibility); + } + + void registerObjectOfClass_visibility_loadHandler_( + NSObject? aClass, + int visibility, + ObjCBlock_NSProgress_ffiVoidObjCObjectNSError loadHandler) { + _lib._objc_msgSend_665( + _id, + _lib._sel_registerObjectOfClass_visibility_loadHandler_1, + aClass?._id ?? ffi.nullptr, + visibility, + loadHandler._id); + } + + bool canLoadObjectOfClass_(NSObject? aClass) { + return _lib._objc_msgSend_0( + _id, _lib._sel_canLoadObjectOfClass_1, aClass?._id ?? ffi.nullptr); + } + + NSProgress loadObjectOfClass_completionHandler_(NSObject? aClass, + ObjCBlock_ffiVoid_ObjCObject_NSError completionHandler) { + final _ret = _lib._objc_msgSend_666( + _id, + _lib._sel_loadObjectOfClass_completionHandler_1, + aClass?._id ?? ffi.nullptr, + completionHandler._id); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSItemProvider initWithItem_typeIdentifier_( + NSObject? item, NSString? typeIdentifier) { + final _ret = _lib._objc_msgSend_287( + _id, + _lib._sel_initWithItem_typeIdentifier_1, + item?._id ?? ffi.nullptr, + typeIdentifier?._id ?? ffi.nullptr); + return NSItemProvider._(_ret, _lib, retain: true, release: true); + } + + NSItemProvider initWithContentsOfURL_(NSURL? fileURL) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithContentsOfURL_1, fileURL?._id ?? ffi.nullptr); + return NSItemProvider._(_ret, _lib, retain: true, release: true); + } + + void registerItemForTypeIdentifier_loadHandler_( + NSString? typeIdentifier, + ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary + loadHandler) { + _lib._objc_msgSend_667( + _id, + _lib._sel_registerItemForTypeIdentifier_loadHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + loadHandler._id); + } + + void loadItemForTypeIdentifier_options_completionHandler_( + NSString? typeIdentifier, + NSDictionary? options, + ObjCBlock_ffiVoid_ObjCObject_NSError completionHandler) { + _lib._objc_msgSend_668( + _id, + _lib._sel_loadItemForTypeIdentifier_options_completionHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr, + completionHandler._id); + } + + ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary + get previewImageHandler { + final _ret = _lib._objc_msgSend_669(_id, _lib._sel_previewImageHandler1); + return ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary._( + _ret, _lib); + } + + set previewImageHandler( + ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary + value) { + return _lib._objc_msgSend_670( + _id, _lib._sel_setPreviewImageHandler_1, value._id); + } + + void loadPreviewImageWithOptions_completionHandler_(NSDictionary? options, + ObjCBlock_ffiVoid_ObjCObject_NSError completionHandler) { + _lib._objc_msgSend_671( + _id, + _lib._sel_loadPreviewImageWithOptions_completionHandler_1, + options?._id ?? ffi.nullptr, + completionHandler._id); + } + + static NSItemProvider new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSItemProvider1, _lib._sel_new1); + return NSItemProvider._(_ret, _lib, retain: false, release: true); + } + + static NSItemProvider allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSItemProvider1, _lib._sel_allocWithZone_1, zone); + return NSItemProvider._(_ret, _lib, retain: false, release: true); + } + + static NSItemProvider alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSItemProvider1, _lib._sel_alloc1); + return NSItemProvider._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSItemProvider1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSItemProvider1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSItemProvider1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSItemProvider1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSItemProvider1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSItemProvider1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSItemProvider1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSItemProvider1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSItemProvider1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSItemProviderRepresentationVisibility { + static const int NSItemProviderRepresentationVisibilityAll = 0; + static const int NSItemProviderRepresentationVisibilityTeam = 1; + static const int NSItemProviderRepresentationVisibilityGroup = 2; + static const int NSItemProviderRepresentationVisibilityOwnProcess = 3; +} + +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> arg0)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> arg0)>()(arg0); +} + +final _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry = + {}; +int _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_registerClosure(Function fn) { + final id = ++_ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistryIndex; + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) { + return (_ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry[ + block.ref.target.address] + as ffi.Pointer Function(ffi.Pointer<_ObjCBlock>))(arg0); +} + +class ObjCBlock_NSProgress_ffiVoidNSDataNSError extends _ObjCBlockBase { + ObjCBlock_NSProgress_ffiVoidNSDataNSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>( + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunction(SentryCocoa lib, + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>( + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline) + .cast(), + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + ffi.Pointer call(ffi.Pointer<_ObjCBlock> arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>()(_id, arg0); + } +} + +class NSProgress extends NSObject { + NSProgress._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSProgress] that points to the same underlying object as [other]. + static NSProgress castFrom(T other) { + return NSProgress._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSProgress] that wraps the given raw object pointer. + static NSProgress castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSProgress._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSProgress]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProgress1); + } + + static NSProgress currentProgress(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_643( + _lib._class_NSProgress1, _lib._sel_currentProgress1); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + static NSProgress progressWithTotalUnitCount_( + SentryCocoa _lib, int unitCount) { + final _ret = _lib._objc_msgSend_644(_lib._class_NSProgress1, + _lib._sel_progressWithTotalUnitCount_1, unitCount); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + static NSProgress discreteProgressWithTotalUnitCount_( + SentryCocoa _lib, int unitCount) { + final _ret = _lib._objc_msgSend_644(_lib._class_NSProgress1, + _lib._sel_discreteProgressWithTotalUnitCount_1, unitCount); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + static NSProgress progressWithTotalUnitCount_parent_pendingUnitCount_( + SentryCocoa _lib, + int unitCount, + NSProgress? parent, + int portionOfParentTotalUnitCount) { + final _ret = _lib._objc_msgSend_645( + _lib._class_NSProgress1, + _lib._sel_progressWithTotalUnitCount_parent_pendingUnitCount_1, + unitCount, + parent?._id ?? ffi.nullptr, + portionOfParentTotalUnitCount); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSProgress initWithParent_userInfo_( + NSProgress? parentProgressOrNil, NSObject? userInfoOrNil) { + final _ret = _lib._objc_msgSend_646( + _id, + _lib._sel_initWithParent_userInfo_1, + parentProgressOrNil?._id ?? ffi.nullptr, + userInfoOrNil?._id ?? ffi.nullptr); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + void becomeCurrentWithPendingUnitCount_(int unitCount) { + _lib._objc_msgSend_647( + _id, _lib._sel_becomeCurrentWithPendingUnitCount_1, unitCount); + } + + void performAsCurrentWithPendingUnitCount_usingBlock_( + int unitCount, ObjCBlock_ffiVoid work) { + _lib._objc_msgSend_648( + _id, + _lib._sel_performAsCurrentWithPendingUnitCount_usingBlock_1, + unitCount, + work._id); + } + + void resignCurrent() { + _lib._objc_msgSend_1(_id, _lib._sel_resignCurrent1); + } + + void addChild_withPendingUnitCount_(NSProgress? child, int inUnitCount) { + _lib._objc_msgSend_649(_id, _lib._sel_addChild_withPendingUnitCount_1, + child?._id ?? ffi.nullptr, inUnitCount); + } + + int get totalUnitCount { + return _lib._objc_msgSend_650(_id, _lib._sel_totalUnitCount1); + } + + set totalUnitCount(int value) { + return _lib._objc_msgSend_651(_id, _lib._sel_setTotalUnitCount_1, value); + } + + int get completedUnitCount { + return _lib._objc_msgSend_650(_id, _lib._sel_completedUnitCount1); + } + + set completedUnitCount(int value) { + return _lib._objc_msgSend_651( + _id, _lib._sel_setCompletedUnitCount_1, value); + } + + NSString? get localizedDescription { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localizedDescription1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set localizedDescription(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setLocalizedDescription_1, value?._id ?? ffi.nullptr); + } + + NSString? get localizedAdditionalDescription { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_localizedAdditionalDescription1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set localizedAdditionalDescription(NSString? value) { + return _lib._objc_msgSend_509( + _id, + _lib._sel_setLocalizedAdditionalDescription_1, + value?._id ?? ffi.nullptr); + } + + bool get cancellable { + return _lib._objc_msgSend_12(_id, _lib._sel_isCancellable1); + } + + set cancellable(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setCancellable_1, value); + } + + bool get pausable { + return _lib._objc_msgSend_12(_id, _lib._sel_isPausable1); + } + + set pausable(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setPausable_1, value); + } + + bool get cancelled { + return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); + } + + bool get paused { + return _lib._objc_msgSend_12(_id, _lib._sel_isPaused1); + } + + ObjCBlock_ffiVoid get cancellationHandler { + final _ret = _lib._objc_msgSend_652(_id, _lib._sel_cancellationHandler1); + return ObjCBlock_ffiVoid._(_ret, _lib); + } + + set cancellationHandler(ObjCBlock_ffiVoid value) { + return _lib._objc_msgSend_653( + _id, _lib._sel_setCancellationHandler_1, value._id); + } + + ObjCBlock_ffiVoid get pausingHandler { + final _ret = _lib._objc_msgSend_652(_id, _lib._sel_pausingHandler1); + return ObjCBlock_ffiVoid._(_ret, _lib); + } + + set pausingHandler(ObjCBlock_ffiVoid value) { + return _lib._objc_msgSend_653( + _id, _lib._sel_setPausingHandler_1, value._id); + } + + ObjCBlock_ffiVoid get resumingHandler { + final _ret = _lib._objc_msgSend_652(_id, _lib._sel_resumingHandler1); + return ObjCBlock_ffiVoid._(_ret, _lib); + } + + set resumingHandler(ObjCBlock_ffiVoid value) { + return _lib._objc_msgSend_653( + _id, _lib._sel_setResumingHandler_1, value._id); + } + + void setUserInfoObject_forKey_(NSObject objectOrNil, NSString key) { + _lib._objc_msgSend_126( + _id, _lib._sel_setUserInfoObject_forKey_1, objectOrNil._id, key._id); + } + + bool get indeterminate { + return _lib._objc_msgSend_12(_id, _lib._sel_isIndeterminate1); + } + + double get fractionCompleted { + return _lib._objc_msgSend_155(_id, _lib._sel_fractionCompleted1); + } + + bool get finished { + return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); + } + + void cancel() { + _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + } + + void pause() { + _lib._objc_msgSend_1(_id, _lib._sel_pause1); + } + + void resume() { + _lib._objc_msgSend_1(_id, _lib._sel_resume1); + } + + NSObject? get userInfo { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_userInfo1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + NSString get kind { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_kind1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + set kind(NSString value) { + return _lib._objc_msgSend_509(_id, _lib._sel_setKind_1, value._id); + } + + NSNumber? get estimatedTimeRemaining { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_estimatedTimeRemaining1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + set estimatedTimeRemaining(NSNumber? value) { + return _lib._objc_msgSend_654( + _id, _lib._sel_setEstimatedTimeRemaining_1, value?._id ?? ffi.nullptr); + } + + NSNumber? get throughput { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_throughput1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + set throughput(NSNumber? value) { + return _lib._objc_msgSend_654( + _id, _lib._sel_setThroughput_1, value?._id ?? ffi.nullptr); + } + + NSString get fileOperationKind { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_fileOperationKind1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + set fileOperationKind(NSString value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setFileOperationKind_1, value._id); + } + + NSURL? get fileURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_fileURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + set fileURL(NSURL? value) { + return _lib._objc_msgSend_655( + _id, _lib._sel_setFileURL_1, value?._id ?? ffi.nullptr); + } + + NSNumber? get fileTotalCount { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_fileTotalCount1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + set fileTotalCount(NSNumber? value) { + return _lib._objc_msgSend_654( + _id, _lib._sel_setFileTotalCount_1, value?._id ?? ffi.nullptr); + } + + NSNumber? get fileCompletedCount { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_fileCompletedCount1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + set fileCompletedCount(NSNumber? value) { + return _lib._objc_msgSend_654( + _id, _lib._sel_setFileCompletedCount_1, value?._id ?? ffi.nullptr); + } + + void publish() { + _lib._objc_msgSend_1(_id, _lib._sel_publish1); + } + + void unpublish() { + _lib._objc_msgSend_1(_id, _lib._sel_unpublish1); + } + + static NSObject addSubscriberForFileURL_withPublishingHandler_( + SentryCocoa _lib, + NSURL? url, + ObjCBlock_ffiVoid_NSProgress publishingHandler) { + final _ret = _lib._objc_msgSend_656( + _lib._class_NSProgress1, + _lib._sel_addSubscriberForFileURL_withPublishingHandler_1, + url?._id ?? ffi.nullptr, + publishingHandler._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static void removeSubscriber_(SentryCocoa _lib, NSObject subscriber) { + _lib._objc_msgSend_15( + _lib._class_NSProgress1, _lib._sel_removeSubscriber_1, subscriber._id); + } + + bool get old { + return _lib._objc_msgSend_12(_id, _lib._sel_isOld1); + } + + @override + NSProgress init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + static NSProgress new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSProgress1, _lib._sel_new1); + return NSProgress._(_ret, _lib, retain: false, release: true); + } + + static NSProgress allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSProgress1, _lib._sel_allocWithZone_1, zone); + return NSProgress._(_ret, _lib, retain: false, release: true); + } + + static NSProgress alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSProgress1, _lib._sel_alloc1); + return NSProgress._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSProgress1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSProgress1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSProgress1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSProgress1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSProgress1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSProgress1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSProgress1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSProgress1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSProgress1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +ffi.Pointer<_ObjCBlock> _ObjCBlock_ffiVoid_NSProgress_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function(ffi.Pointer arg0)>>() + .asFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSProgress_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSProgress_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSProgress_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSProgress_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSProgress_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +ffi.Pointer<_ObjCBlock> _ObjCBlock_ffiVoid_NSProgress_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSProgress_closureRegistry[ + block.ref.target.address] + as ffi.Pointer<_ObjCBlock> Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSProgress extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSProgress._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSProgress.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSProgress_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSProgress.fromFunction(SentryCocoa lib, + ffi.Pointer<_ObjCBlock> Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSProgress_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSProgress_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + ffi.Pointer<_ObjCBlock> call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + ffi.Pointer<_ObjCBlock> Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +void _ObjCBlock_ffiVoid_NSData_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSData_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSData_NSError_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSData_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_ffiVoid_NSData_NSError_closureRegistry[ + block.ref.target.address] + as void Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_ffiVoid_NSData_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSData_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSData_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSData_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSData_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSData_NSError_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +abstract class NSItemProviderFileOptions { + static const int NSItemProviderFileOptionOpenInPlace = 1; +} + +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> arg0)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> arg0)>()(arg0); +} + +final _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistry = + {}; +int _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_registerClosure(Function fn) { + final id = + ++_ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistryIndex; + _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) { + return (_ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureRegistry[ + block.ref.target.address] + as ffi.Pointer Function(ffi.Pointer<_ObjCBlock>))(arg0); +} + +class ObjCBlock_NSProgress_ffiVoidNSURLboolNSError extends _ObjCBlockBase { + ObjCBlock_NSProgress_ffiVoidNSURLboolNSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_NSProgress_ffiVoidNSURLboolNSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>( + _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_NSProgress_ffiVoidNSURLboolNSError.fromFunction(SentryCocoa lib, + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>( + _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_closureTrampoline) + .cast(), + _ObjCBlock_NSProgress_ffiVoidNSURLboolNSError_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + ffi.Pointer call(ffi.Pointer<_ObjCBlock> arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>()(_id, arg0); + } +} + +void _ObjCBlock_ffiVoid_NSURL_bool_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSURL_bool_NSError_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSURL_bool_NSError_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, bool, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_NSURL_bool_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSURL_bool_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSURL_bool_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSURL_bool_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSURL_bool_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSURL_bool_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSURL_bool_NSError_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call( + ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +void _ObjCBlock_ffiVoid_NSURL_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_ffiVoid_NSURL_NSError_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSURL_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSURL_NSError_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSURL_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURL_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSURL_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_ffiVoid_NSURL_NSError_closureRegistry[ + block.ref.target.address] + as void Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_ffiVoid_NSURL_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSURL_NSError._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSURL_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSURL_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSURL_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSURL_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSURL_NSError_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> arg0)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> arg0)>()(arg0); +} + +final _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistry = + {}; +int _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistryIndex; + _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) { + return (_ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureRegistry[ + block.ref.target.address] + as ffi.Pointer Function(ffi.Pointer<_ObjCBlock>))(arg0); +} + +class ObjCBlock_NSProgress_ffiVoidObjCObjectNSError extends _ObjCBlockBase { + ObjCBlock_NSProgress_ffiVoidObjCObjectNSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_NSProgress_ffiVoidObjCObjectNSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>( + _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_NSProgress_ffiVoidObjCObjectNSError.fromFunction(SentryCocoa lib, + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>( + _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_closureTrampoline) + .cast(), + _ObjCBlock_NSProgress_ffiVoidObjCObjectNSError_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + ffi.Pointer call(ffi.Pointer<_ObjCBlock> arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>()(_id, arg0); + } +} + +void _ObjCBlock_ffiVoid_ObjCObject_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistry = {}; +int _ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_ObjCObject_NSError_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_ObjCObject_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_ffiVoid_ObjCObject_NSError_closureRegistry[ + block.ref.target.address] + as void Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_ffiVoid_ObjCObject_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ObjCObject_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_ObjCObject_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_ObjCObject_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_ObjCObject_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_ObjCObject_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ObjCObject_NSError_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +void + _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistryIndex; + _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistry[ + id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void + _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer<_ObjCBlock>, ffi.Pointer, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary + extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer<_ObjCBlock> arg0, ffi.Pointer arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer<_ObjCBlock> arg0, ffi.Pointer arg1, + ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +class NSMutableString extends NSString { + NSMutableString._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMutableString] that points to the same underlying object as [other]. + static NSMutableString castFrom(T other) { + return NSMutableString._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSMutableString] that wraps the given raw object pointer. + static NSMutableString castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMutableString._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMutableString]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMutableString1); + } + + void replaceCharactersInRange_withString_(_NSRange range, NSString? aString) { + _lib._objc_msgSend_672(_id, _lib._sel_replaceCharactersInRange_withString_1, + range, aString?._id ?? ffi.nullptr); + } + + void insertString_atIndex_(NSString? aString, int loc) { + _lib._objc_msgSend_673(_id, _lib._sel_insertString_atIndex_1, + aString?._id ?? ffi.nullptr, loc); + } + + void deleteCharactersInRange_(_NSRange range) { + _lib._objc_msgSend_445(_id, _lib._sel_deleteCharactersInRange_1, range); + } + + void appendString_(NSString? aString) { + _lib._objc_msgSend_192( + _id, _lib._sel_appendString_1, aString?._id ?? ffi.nullptr); + } + + void appendFormat_(NSString? format) { + _lib._objc_msgSend_192( + _id, _lib._sel_appendFormat_1, format?._id ?? ffi.nullptr); + } + + void setString_(NSString? aString) { + _lib._objc_msgSend_192( + _id, _lib._sel_setString_1, aString?._id ?? ffi.nullptr); + } + + int replaceOccurrencesOfString_withString_options_range_(NSString? target, + NSString? replacement, int options, _NSRange searchRange) { + return _lib._objc_msgSend_674( + _id, + _lib._sel_replaceOccurrencesOfString_withString_options_range_1, + target?._id ?? ffi.nullptr, + replacement?._id ?? ffi.nullptr, + options, + searchRange); + } + + bool applyTransform_reverse_range_updatedRange_(NSString transform, + bool reverse, _NSRange range, ffi.Pointer<_NSRange> resultingRange) { + return _lib._objc_msgSend_675( + _id, + _lib._sel_applyTransform_reverse_range_updatedRange_1, + transform._id, + reverse, + range, + resultingRange); + } + + NSMutableString initWithCapacity_(int capacity) { + final _ret = + _lib._objc_msgSend_676(_id, _lib._sel_initWithCapacity_1, capacity); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithCapacity_(SentryCocoa _lib, int capacity) { + final _ret = _lib._objc_msgSend_676( + _lib._class_NSMutableString1, _lib._sel_stringWithCapacity_1, capacity); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static ffi.Pointer getAvailableStringEncodings( + SentryCocoa _lib) { + return _lib._objc_msgSend_333( + _lib._class_NSMutableString1, _lib._sel_availableStringEncodings1); + } + + static NSString localizedNameOfStringEncoding_( + SentryCocoa _lib, int encoding) { + final _ret = _lib._objc_msgSend_308(_lib._class_NSMutableString1, + _lib._sel_localizedNameOfStringEncoding_1, encoding); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static int getDefaultCStringEncoding(SentryCocoa _lib) { + return _lib._objc_msgSend_10( + _lib._class_NSMutableString1, _lib._sel_defaultCStringEncoding1); + } + + @override + NSMutableString initWithCharactersNoCopy_length_freeWhenDone_( + ffi.Pointer characters, int length, bool freeBuffer) { + final _ret = _lib._objc_msgSend_344( + _id, + _lib._sel_initWithCharactersNoCopy_length_freeWhenDone_1, + characters, + length, + freeBuffer); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableString initWithCharactersNoCopy_length_deallocator_( + ffi.Pointer chars, + int len, + ObjCBlock_ffiVoid_ffiUnsignedShort_ffiUnsignedLong deallocator) { + final _ret = _lib._objc_msgSend_345( + _id, + _lib._sel_initWithCharactersNoCopy_length_deallocator_1, + chars, + len, + deallocator._id); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableString initWithCharacters_length_( + ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_346( + _id, _lib._sel_initWithCharacters_length_1, characters, length); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithUTF8String_( + ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_347( + _id, _lib._sel_initWithUTF8String_1, nullTerminatedCString); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithString_(NSString? aString) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithString_1, aString?._id ?? ffi.nullptr); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_(NSString? format) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithFormat_1, format?._id ?? ffi.nullptr); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_arguments_( + NSString? format, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_348( + _id, + _lib._sel_initWithFormat_arguments_1, + format?._id ?? ffi.nullptr, + argList); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_locale_(NSString? format, NSObject locale) { + final _ret = _lib._objc_msgSend_163(_id, _lib._sel_initWithFormat_locale_1, + format?._id ?? ffi.nullptr, locale._id); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithFormat_locale_arguments_( + NSString? format, NSObject locale, ffi.Pointer argList) { + final _ret = _lib._objc_msgSend_349( + _id, + _lib._sel_initWithFormat_locale_arguments_1, + format?._id ?? ffi.nullptr, + locale._id, + argList); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithValidatedFormat_validFormatSpecifiers_error_( + NSString? format, + NSString? validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_350( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithValidatedFormat_validFormatSpecifiers_locale_error_( + NSString? format, + NSString? validFormatSpecifiers, + NSObject locale, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_351( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + locale._id, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString + initWithValidatedFormat_validFormatSpecifiers_arguments_error_( + NSString? format, + NSString? validFormatSpecifiers, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_352( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_arguments_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + argList, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString + initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_( + NSString? format, + NSString? validFormatSpecifiers, + NSObject locale, + ffi.Pointer argList, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_353( + _id, + _lib._sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + locale._id, + argList, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithData_encoding_(NSData? data, int encoding) { + final _ret = _lib._objc_msgSend_354(_id, _lib._sel_initWithData_encoding_1, + data?._id ?? ffi.nullptr, encoding); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithBytes_length_encoding_( + ffi.Pointer bytes, int len, int encoding) { + final _ret = _lib._objc_msgSend_355( + _id, _lib._sel_initWithBytes_length_encoding_1, bytes, len, encoding); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithBytesNoCopy_length_encoding_freeWhenDone_( + ffi.Pointer bytes, int len, int encoding, bool freeBuffer) { + final _ret = _lib._objc_msgSend_356( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_freeWhenDone_1, + bytes, + len, + encoding, + freeBuffer); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } + + @override + NSMutableString initWithBytesNoCopy_length_encoding_deallocator_( + ffi.Pointer bytes, + int len, + int encoding, + ObjCBlock_ffiVoid_ffiVoid_ffiUnsignedLong deallocator) { + final _ret = _lib._objc_msgSend_357( + _id, + _lib._sel_initWithBytesNoCopy_length_encoding_deallocator_1, + bytes, + len, + encoding, + deallocator._id); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } + + static NSMutableString string(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_string1); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSMutableString1, + _lib._sel_stringWithString_1, string?._id ?? ffi.nullptr); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithCharacters_length_( + SentryCocoa _lib, ffi.Pointer characters, int length) { + final _ret = _lib._objc_msgSend_346(_lib._class_NSMutableString1, + _lib._sel_stringWithCharacters_length_1, characters, length); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithUTF8String_( + SentryCocoa _lib, ffi.Pointer nullTerminatedCString) { + final _ret = _lib._objc_msgSend_347(_lib._class_NSMutableString1, + _lib._sel_stringWithUTF8String_1, nullTerminatedCString); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithFormat_(SentryCocoa _lib, NSString? format) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSMutableString1, + _lib._sel_stringWithFormat_1, format?._id ?? ffi.nullptr); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString localizedStringWithFormat_( + SentryCocoa _lib, NSString? format) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSMutableString1, + _lib._sel_localizedStringWithFormat_1, format?._id ?? ffi.nullptr); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithValidatedFormat_validFormatSpecifiers_error_( + SentryCocoa _lib, + NSString? format, + NSString? validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_350( + _lib._class_NSMutableString1, + _lib._sel_stringWithValidatedFormat_validFormatSpecifiers_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString + localizedStringWithValidatedFormat_validFormatSpecifiers_error_( + SentryCocoa _lib, + NSString? format, + NSString? validFormatSpecifiers, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_350( + _lib._class_NSMutableString1, + _lib._sel_localizedStringWithValidatedFormat_validFormatSpecifiers_error_1, + format?._id ?? ffi.nullptr, + validFormatSpecifiers?._id ?? ffi.nullptr, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithCString_encoding_( + ffi.Pointer nullTerminatedCString, int encoding) { + final _ret = _lib._objc_msgSend_358(_id, + _lib._sel_initWithCString_encoding_1, nullTerminatedCString, encoding); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithCString_encoding_( + SentryCocoa _lib, ffi.Pointer cString, int enc) { + final _ret = _lib._objc_msgSend_358(_lib._class_NSMutableString1, + _lib._sel_stringWithCString_encoding_1, cString, enc); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithContentsOfURL_encoding_error_( + NSURL? url, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_359( + _id, + _lib._sel_initWithContentsOfURL_encoding_error_1, + url?._id ?? ffi.nullptr, + enc, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithContentsOfFile_encoding_error_( + NSString? path, int enc, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_360( + _id, + _lib._sel_initWithContentsOfFile_encoding_error_1, + path?._id ?? ffi.nullptr, + enc, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithContentsOfURL_encoding_error_( + SentryCocoa _lib, + NSURL? url, + int enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_359( + _lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfURL_encoding_error_1, + url?._id ?? ffi.nullptr, + enc, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithContentsOfFile_encoding_error_( + SentryCocoa _lib, + NSString? path, + int enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_360( + _lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfFile_encoding_error_1, + path?._id ?? ffi.nullptr, + enc, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithContentsOfURL_usedEncoding_error_( + NSURL? url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_361( + _id, + _lib._sel_initWithContentsOfURL_usedEncoding_error_1, + url?._id ?? ffi.nullptr, + enc, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableString initWithContentsOfFile_usedEncoding_error_( + NSString? path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_362( + _id, + _lib._sel_initWithContentsOfFile_usedEncoding_error_1, + path?._id ?? ffi.nullptr, + enc, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithContentsOfURL_usedEncoding_error_( + SentryCocoa _lib, + NSURL? url, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_361( + _lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfURL_usedEncoding_error_1, + url?._id ?? ffi.nullptr, + enc, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString stringWithContentsOfFile_usedEncoding_error_( + SentryCocoa _lib, + NSString? path, + ffi.Pointer enc, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_362( + _lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfFile_usedEncoding_error_1, + path?._id ?? ffi.nullptr, + enc, + error); + return NSMutableString._(_ret, _lib, retain: true, release: true); + } + + static int + stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_( + SentryCocoa _lib, + NSData? data, + NSDictionary? opts, + ffi.Pointer> string, + ffi.Pointer usedLossyConversion) { + return _lib._objc_msgSend_363( + _lib._class_NSMutableString1, + _lib._sel_stringEncodingForData_encodingOptions_convertedString_usedLossyConversion_1, + data?._id ?? ffi.nullptr, + opts?._id ?? ffi.nullptr, + string, + usedLossyConversion); + } + + static NSObject stringWithContentsOfFile_(SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfFile_1, path?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject stringWithContentsOfURL_(SentryCocoa _lib, NSURL? url) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSMutableString1, + _lib._sel_stringWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject stringWithCString_length_( + SentryCocoa _lib, ffi.Pointer bytes, int length) { + final _ret = _lib._objc_msgSend_358(_lib._class_NSMutableString1, + _lib._sel_stringWithCString_length_1, bytes, length); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject stringWithCString_( + SentryCocoa _lib, ffi.Pointer bytes) { + final _ret = _lib._objc_msgSend_347( + _lib._class_NSMutableString1, _lib._sel_stringWithCString_1, bytes); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSString pathWithComponents_(SentryCocoa _lib, NSArray? components) { + final _ret = _lib._objc_msgSend_369(_lib._class_NSMutableString1, + _lib._sel_pathWithComponents_1, components?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableString new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_new1); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } + + static NSMutableString allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSMutableString1, _lib._sel_allocWithZone_1, zone); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } + + static NSMutableString alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableString1, _lib._sel_alloc1); + return NSMutableString._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSMutableString1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSMutableString1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSMutableString1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableString1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSMutableString1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSMutableString1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSMutableString1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSMutableString1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableString1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSNotification extends NSObject { + NSNotification._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSNotification] that points to the same underlying object as [other]. + static NSNotification castFrom(T other) { + return NSNotification._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSNotification] that wraps the given raw object pointer. + static NSNotification castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSNotification._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSNotification]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSNotification1); + } + + NSString get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSObject get object { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_object1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get userInfo { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_userInfo1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSNotification initWithName_object_userInfo_( + NSString name, NSObject object, NSDictionary? userInfo) { + final _ret = _lib._objc_msgSend_677( + _id, + _lib._sel_initWithName_object_userInfo_1, + name._id, + object._id, + userInfo?._id ?? ffi.nullptr); + return NSNotification._(_ret, _lib, retain: true, release: true); + } + + NSNotification initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSNotification._(_ret, _lib, retain: true, release: true); + } + + static NSNotification notificationWithName_object_( + SentryCocoa _lib, NSString aName, NSObject anObject) { + final _ret = _lib._objc_msgSend_163(_lib._class_NSNotification1, + _lib._sel_notificationWithName_object_1, aName._id, anObject._id); + return NSNotification._(_ret, _lib, retain: true, release: true); + } + + static NSNotification notificationWithName_object_userInfo_(SentryCocoa _lib, + NSString aName, NSObject anObject, NSDictionary? aUserInfo) { + final _ret = _lib._objc_msgSend_677( + _lib._class_NSNotification1, + _lib._sel_notificationWithName_object_userInfo_1, + aName._id, + anObject._id, + aUserInfo?._id ?? ffi.nullptr); + return NSNotification._(_ret, _lib, retain: true, release: true); + } + + @override + NSNotification init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSNotification._(_ret, _lib, retain: true, release: true); + } + + static NSNotification new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSNotification1, _lib._sel_new1); + return NSNotification._(_ret, _lib, retain: false, release: true); + } + + static NSNotification allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSNotification1, _lib._sel_allocWithZone_1, zone); + return NSNotification._(_ret, _lib, retain: false, release: true); + } + + static NSNotification alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSNotification1, _lib._sel_alloc1); + return NSNotification._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSNotification1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSNotification1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSNotification1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSNotification1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSNotification1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSNotification1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSNotification1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSNotification1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSNotification1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSBundle extends NSObject { + NSBundle._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSBundle] that points to the same underlying object as [other]. + static NSBundle castFrom(T other) { + return NSBundle._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSBundle] that wraps the given raw object pointer. + static NSBundle castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSBundle._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSBundle]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSBundle1); + } + + static NSBundle? getMainBundle(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_678(_lib._class_NSBundle1, _lib._sel_mainBundle1); + return _ret.address == 0 + ? null + : NSBundle._(_ret, _lib, retain: true, release: true); + } + + static NSBundle bundleWithPath_(SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSBundle1, + _lib._sel_bundleWithPath_1, path?._id ?? ffi.nullptr); + return NSBundle._(_ret, _lib, retain: true, release: true); + } + + NSBundle initWithPath_(NSString? path) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithPath_1, path?._id ?? ffi.nullptr); + return NSBundle._(_ret, _lib, retain: true, release: true); + } + + static NSBundle bundleWithURL_(SentryCocoa _lib, NSURL? url) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSBundle1, + _lib._sel_bundleWithURL_1, url?._id ?? ffi.nullptr); + return NSBundle._(_ret, _lib, retain: true, release: true); + } + + NSBundle initWithURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithURL_1, url?._id ?? ffi.nullptr); + return NSBundle._(_ret, _lib, retain: true, release: true); + } + + static NSBundle bundleForClass_(SentryCocoa _lib, NSObject aClass) { + final _ret = _lib._objc_msgSend_679( + _lib._class_NSBundle1, _lib._sel_bundleForClass_1, aClass._id); + return NSBundle._(_ret, _lib, retain: true, release: true); + } + + static NSBundle bundleWithIdentifier_( + SentryCocoa _lib, NSString? identifier) { + final _ret = _lib._objc_msgSend_680(_lib._class_NSBundle1, + _lib._sel_bundleWithIdentifier_1, identifier?._id ?? ffi.nullptr); + return NSBundle._(_ret, _lib, retain: true, release: true); + } + + static NSArray? getAllBundles(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_79(_lib._class_NSBundle1, _lib._sel_allBundles1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray? getAllFrameworks(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_79(_lib._class_NSBundle1, _lib._sel_allFrameworks1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + bool load() { + return _lib._objc_msgSend_12(_id, _lib._sel_load1); + } + + bool get loaded { + return _lib._objc_msgSend_12(_id, _lib._sel_isLoaded1); + } + + bool unload() { + return _lib._objc_msgSend_12(_id, _lib._sel_unload1); + } + + bool preflightAndReturnError_(ffi.Pointer> error) { + return _lib._objc_msgSend_225( + _id, _lib._sel_preflightAndReturnError_1, error); + } + + bool loadAndReturnError_(ffi.Pointer> error) { + return _lib._objc_msgSend_225(_id, _lib._sel_loadAndReturnError_1, error); + } + + NSURL? get bundleURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_bundleURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get resourceURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_resourceURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get executableURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_executableURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL URLForAuxiliaryExecutable_(NSString? executableName) { + final _ret = _lib._objc_msgSend_34( + _id, + _lib._sel_URLForAuxiliaryExecutable_1, + executableName?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get privateFrameworksURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_privateFrameworksURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get sharedFrameworksURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_sharedFrameworksURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get sharedSupportURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_sharedSupportURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get builtInPlugInsURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_builtInPlugInsURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL? get appStoreReceiptURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_appStoreReceiptURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSString? get bundlePath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_bundlePath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get resourcePath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_resourcePath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get executablePath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_executablePath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString pathForAuxiliaryExecutable_(NSString? executableName) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_pathForAuxiliaryExecutable_1, + executableName?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get privateFrameworksPath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_privateFrameworksPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get sharedFrameworksPath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_sharedFrameworksPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get sharedSupportPath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_sharedSupportPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get builtInPlugInsPath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_builtInPlugInsPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSURL URLForResource_withExtension_subdirectory_inBundleWithURL_( + SentryCocoa _lib, + NSString? name, + NSString? ext, + NSString? subpath, + NSURL? bundleURL) { + final _ret = _lib._objc_msgSend_681( + _lib._class_NSBundle1, + _lib._sel_URLForResource_withExtension_subdirectory_inBundleWithURL_1, + name?._id ?? ffi.nullptr, + ext?._id ?? ffi.nullptr, + subpath?._id ?? ffi.nullptr, + bundleURL?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + static NSArray URLsForResourcesWithExtension_subdirectory_inBundleWithURL_( + SentryCocoa _lib, NSString? ext, NSString? subpath, NSURL? bundleURL) { + final _ret = _lib._objc_msgSend_682( + _lib._class_NSBundle1, + _lib._sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_1, + ext?._id ?? ffi.nullptr, + subpath?._id ?? ffi.nullptr, + bundleURL?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSURL URLForResource_withExtension_(NSString? name, NSString? ext) { + final _ret = _lib._objc_msgSend_683( + _id, + _lib._sel_URLForResource_withExtension_1, + name?._id ?? ffi.nullptr, + ext?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL URLForResource_withExtension_subdirectory_( + NSString? name, NSString? ext, NSString? subpath) { + final _ret = _lib._objc_msgSend_684( + _id, + _lib._sel_URLForResource_withExtension_subdirectory_1, + name?._id ?? ffi.nullptr, + ext?._id ?? ffi.nullptr, + subpath?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSURL URLForResource_withExtension_subdirectory_localization_(NSString? name, + NSString? ext, NSString? subpath, NSString? localizationName) { + final _ret = _lib._objc_msgSend_685( + _id, + _lib._sel_URLForResource_withExtension_subdirectory_localization_1, + name?._id ?? ffi.nullptr, + ext?._id ?? ffi.nullptr, + subpath?._id ?? ffi.nullptr, + localizationName?._id ?? ffi.nullptr); + return NSURL._(_ret, _lib, retain: true, release: true); + } + + NSArray URLsForResourcesWithExtension_subdirectory_( + NSString? ext, NSString? subpath) { + final _ret = _lib._objc_msgSend_686( + _id, + _lib._sel_URLsForResourcesWithExtension_subdirectory_1, + ext?._id ?? ffi.nullptr, + subpath?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray URLsForResourcesWithExtension_subdirectory_localization_( + NSString? ext, NSString? subpath, NSString? localizationName) { + final _ret = _lib._objc_msgSend_687( + _id, + _lib._sel_URLsForResourcesWithExtension_subdirectory_localization_1, + ext?._id ?? ffi.nullptr, + subpath?._id ?? ffi.nullptr, + localizationName?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSString pathForResource_ofType_inDirectory_( + SentryCocoa _lib, NSString? name, NSString? ext, NSString? bundlePath) { + final _ret = _lib._objc_msgSend_688( + _lib._class_NSBundle1, + _lib._sel_pathForResource_ofType_inDirectory_1, + name?._id ?? ffi.nullptr, + ext?._id ?? ffi.nullptr, + bundlePath?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSArray pathsForResourcesOfType_inDirectory_( + SentryCocoa _lib, NSString? ext, NSString? bundlePath) { + final _ret = _lib._objc_msgSend_686( + _lib._class_NSBundle1, + _lib._sel_pathsForResourcesOfType_inDirectory_1, + ext?._id ?? ffi.nullptr, + bundlePath?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString pathForResource_ofType_(NSString? name, NSString? ext) { + final _ret = _lib._objc_msgSend_339(_id, _lib._sel_pathForResource_ofType_1, + name?._id ?? ffi.nullptr, ext?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString pathForResource_ofType_inDirectory_forLocalization_(NSString? name, + NSString? ext, NSString? subpath, NSString? localizationName) { + final _ret = _lib._objc_msgSend_689( + _id, + _lib._sel_pathForResource_ofType_inDirectory_forLocalization_1, + name?._id ?? ffi.nullptr, + ext?._id ?? ffi.nullptr, + subpath?._id ?? ffi.nullptr, + localizationName?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray pathsForResourcesOfType_inDirectory_forLocalization_( + NSString? ext, NSString? subpath, NSString? localizationName) { + final _ret = _lib._objc_msgSend_687( + _id, + _lib._sel_pathsForResourcesOfType_inDirectory_forLocalization_1, + ext?._id ?? ffi.nullptr, + subpath?._id ?? ffi.nullptr, + localizationName?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString localizedStringForKey_value_table_( + NSString? key, NSString? value, NSString? tableName) { + final _ret = _lib._objc_msgSend_688( + _id, + _lib._sel_localizedStringForKey_value_table_1, + key?._id ?? ffi.nullptr, + value?._id ?? ffi.nullptr, + tableName?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSAttributedString localizedAttributedStringForKey_value_table_( + NSString? key, NSString? value, NSString? tableName) { + final _ret = _lib._objc_msgSend_710( + _id, + _lib._sel_localizedAttributedStringForKey_value_table_1, + key?._id ?? ffi.nullptr, + value?._id ?? ffi.nullptr, + tableName?._id ?? ffi.nullptr); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + NSString? get bundleIdentifier { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_bundleIdentifier1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get infoDictionary { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_infoDictionary1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get localizedInfoDictionary { + final _ret = + _lib._objc_msgSend_170(_id, _lib._sel_localizedInfoDictionary1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSObject objectForInfoDictionaryKey_(NSString? key) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_objectForInfoDictionaryKey_1, key?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject classNamed_(NSString? className) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_classNamed_1, className?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject get principalClass { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_principalClass1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSArray? get preferredLocalizations { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_preferredLocalizations1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get localizations { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_localizations1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString? get developmentLocalization { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_developmentLocalization1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static NSArray preferredLocalizationsFromArray_( + SentryCocoa _lib, NSArray? localizationsArray) { + final _ret = _lib._objc_msgSend_63( + _lib._class_NSBundle1, + _lib._sel_preferredLocalizationsFromArray_1, + localizationsArray?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSArray preferredLocalizationsFromArray_forPreferences_( + SentryCocoa _lib, + NSArray? localizationsArray, + NSArray? preferencesArray) { + final _ret = _lib._objc_msgSend_711( + _lib._class_NSBundle1, + _lib._sel_preferredLocalizationsFromArray_forPreferences_1, + localizationsArray?._id ?? ffi.nullptr, + preferencesArray?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get executableArchitectures { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_executableArchitectures1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + void setPreservationPriority_forTags_(double priority, NSSet? tags) { + _lib._objc_msgSend_712(_id, _lib._sel_setPreservationPriority_forTags_1, + priority, tags?._id ?? ffi.nullptr); + } + + double preservationPriorityForTag_(NSString? tag) { + return _lib._objc_msgSend_284( + _id, _lib._sel_preservationPriorityForTag_1, tag?._id ?? ffi.nullptr); + } + + @override + NSBundle init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSBundle._(_ret, _lib, retain: true, release: true); + } + + static NSBundle new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSBundle1, _lib._sel_new1); + return NSBundle._(_ret, _lib, retain: false, release: true); + } + + static NSBundle allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSBundle1, _lib._sel_allocWithZone_1, zone); + return NSBundle._(_ret, _lib, retain: false, release: true); + } + + static NSBundle alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSBundle1, _lib._sel_alloc1); + return NSBundle._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSBundle1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSBundle1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSBundle1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSBundle1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSBundle1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSBundle1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSBundle1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSBundle1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSBundle1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSAttributedString extends NSObject { + NSAttributedString._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSAttributedString] that points to the same underlying object as [other]. + static NSAttributedString castFrom(T other) { + return NSAttributedString._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSAttributedString] that wraps the given raw object pointer. + static NSAttributedString castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSAttributedString._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSAttributedString]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSAttributedString1); + } + + NSString? get string { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_string1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSDictionary attributesAtIndex_effectiveRange_( + int location, ffi.Pointer<_NSRange> range) { + final _ret = _lib._objc_msgSend_690( + _id, _lib._sel_attributesAtIndex_effectiveRange_1, location, range); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + int get length { + return _lib._objc_msgSend_10(_id, _lib._sel_length1); + } + + NSObject attribute_atIndex_effectiveRange_( + NSString attrName, int location, ffi.Pointer<_NSRange> range) { + final _ret = _lib._objc_msgSend_691( + _id, + _lib._sel_attribute_atIndex_effectiveRange_1, + attrName._id, + location, + range); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSAttributedString attributedSubstringFromRange_(_NSRange range) { + final _ret = _lib._objc_msgSend_692( + _id, _lib._sel_attributedSubstringFromRange_1, range); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + NSDictionary attributesAtIndex_longestEffectiveRange_inRange_( + int location, ffi.Pointer<_NSRange> range, _NSRange rangeLimit) { + final _ret = _lib._objc_msgSend_693( + _id, + _lib._sel_attributesAtIndex_longestEffectiveRange_inRange_1, + location, + range, + rangeLimit); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSObject attribute_atIndex_longestEffectiveRange_inRange_(NSString attrName, + int location, ffi.Pointer<_NSRange> range, _NSRange rangeLimit) { + final _ret = _lib._objc_msgSend_694( + _id, + _lib._sel_attribute_atIndex_longestEffectiveRange_inRange_1, + attrName._id, + location, + range, + rangeLimit); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool isEqualToAttributedString_(NSAttributedString? other) { + return _lib._objc_msgSend_695( + _id, _lib._sel_isEqualToAttributedString_1, other?._id ?? ffi.nullptr); + } + + NSAttributedString initWithString_(NSString? str) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithString_1, str?._id ?? ffi.nullptr); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + NSAttributedString initWithString_attributes_( + NSString? str, NSDictionary? attrs) { + final _ret = _lib._objc_msgSend_371( + _id, + _lib._sel_initWithString_attributes_1, + str?._id ?? ffi.nullptr, + attrs?._id ?? ffi.nullptr); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + NSAttributedString initWithAttributedString_(NSAttributedString? attrStr) { + final _ret = _lib._objc_msgSend_696( + _id, _lib._sel_initWithAttributedString_1, attrStr?._id ?? ffi.nullptr); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + void enumerateAttributesInRange_options_usingBlock_(_NSRange enumerationRange, + int opts, ObjCBlock_ffiVoid_NSDictionary_NSRange_bool block) { + _lib._objc_msgSend_697( + _id, + _lib._sel_enumerateAttributesInRange_options_usingBlock_1, + enumerationRange, + opts, + block._id); + } + + void enumerateAttribute_inRange_options_usingBlock_( + NSString attrName, + _NSRange enumerationRange, + int opts, + ObjCBlock_ffiVoid_ObjCObject_NSRange_bool block) { + _lib._objc_msgSend_698( + _id, + _lib._sel_enumerateAttribute_inRange_options_usingBlock_1, + attrName._id, + enumerationRange, + opts, + block._id); + } + + NSAttributedString initWithContentsOfMarkdownFileAtURL_options_baseURL_error_( + NSURL? markdownFile, + NSAttributedStringMarkdownParsingOptions? options, + NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_703( + _id, + _lib._sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1, + markdownFile?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr, + error); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + NSAttributedString initWithMarkdown_options_baseURL_error_( + NSData? markdown, + NSAttributedStringMarkdownParsingOptions? options, + NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_704( + _id, + _lib._sel_initWithMarkdown_options_baseURL_error_1, + markdown?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr, + error); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + NSAttributedString initWithMarkdownString_options_baseURL_error_( + NSString? markdownString, + NSAttributedStringMarkdownParsingOptions? options, + NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_705( + _id, + _lib._sel_initWithMarkdownString_options_baseURL_error_1, + markdownString?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr, + error); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + NSAttributedString initWithFormat_options_locale_( + NSAttributedString? format, int options, NSLocale? locale) { + final _ret = _lib._objc_msgSend_706( + _id, + _lib._sel_initWithFormat_options_locale_1, + format?._id ?? ffi.nullptr, + options, + locale?._id ?? ffi.nullptr); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + NSAttributedString initWithFormat_options_locale_arguments_( + NSAttributedString? format, + int options, + NSLocale? locale, + ffi.Pointer arguments) { + final _ret = _lib._objc_msgSend_707( + _id, + _lib._sel_initWithFormat_options_locale_arguments_1, + format?._id ?? ffi.nullptr, + options, + locale?._id ?? ffi.nullptr, + arguments); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + static NSAttributedString localizedAttributedStringWithFormat_( + SentryCocoa _lib, NSAttributedString? format) { + final _ret = _lib._objc_msgSend_696( + _lib._class_NSAttributedString1, + _lib._sel_localizedAttributedStringWithFormat_1, + format?._id ?? ffi.nullptr); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + static NSAttributedString localizedAttributedStringWithFormat_options_( + SentryCocoa _lib, NSAttributedString? format, int options) { + final _ret = _lib._objc_msgSend_708( + _lib._class_NSAttributedString1, + _lib._sel_localizedAttributedStringWithFormat_options_1, + format?._id ?? ffi.nullptr, + options); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + NSAttributedString attributedStringByInflectingString() { + final _ret = _lib._objc_msgSend_709( + _id, _lib._sel_attributedStringByInflectingString1); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + @override + NSAttributedString init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + static NSAttributedString new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSAttributedString1, _lib._sel_new1); + return NSAttributedString._(_ret, _lib, retain: false, release: true); + } + + static NSAttributedString allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSAttributedString1, _lib._sel_allocWithZone_1, zone); + return NSAttributedString._(_ret, _lib, retain: false, release: true); + } + + static NSAttributedString alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSAttributedString1, _lib._sel_alloc1); + return NSAttributedString._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSAttributedString1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSAttributedString1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSAttributedString1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSAttributedString1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSAttributedString1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSAttributedString1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSAttributedString1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSAttributedString1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSAttributedString1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSAttributedStringEnumerationOptions { + static const int NSAttributedStringEnumerationReverse = 2; + static const int + NSAttributedStringEnumerationLongestEffectiveRangeNotRequired = 1048576; +} + +void _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure(Function fn) { + final id = + ++_ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, _NSRange, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_NSDictionary_NSRange_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSDictionary_NSRange_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSDictionary_NSRange_bool.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_NSRange_bool_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call( + ffi.Pointer arg0, _NSRange arg1, ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +void _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, _NSRange, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_ObjCObject_NSRange_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_ObjCObject_NSRange_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_ObjCObject_NSRange_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_ObjCObject_NSRange_bool.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, _NSRange arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_ObjCObject_NSRange_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call( + ffi.Pointer arg0, _NSRange arg1, ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + _NSRange arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +class NSAttributedStringMarkdownParsingOptions extends NSObject { + NSAttributedStringMarkdownParsingOptions._( + ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSAttributedStringMarkdownParsingOptions] that points to the same underlying object as [other]. + static NSAttributedStringMarkdownParsingOptions + castFrom(T other) { + return NSAttributedStringMarkdownParsingOptions._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSAttributedStringMarkdownParsingOptions] that wraps the given raw object pointer. + static NSAttributedStringMarkdownParsingOptions castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSAttributedStringMarkdownParsingOptions._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSAttributedStringMarkdownParsingOptions]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSAttributedStringMarkdownParsingOptions1); + } + + @override + NSAttributedStringMarkdownParsingOptions init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, + retain: true, release: true); + } + + bool get allowsExtendedAttributes { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsExtendedAttributes1); + } + + set allowsExtendedAttributes(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAllowsExtendedAttributes_1, value); + } + + int get interpretedSyntax { + return _lib._objc_msgSend_699(_id, _lib._sel_interpretedSyntax1); + } + + set interpretedSyntax(int value) { + return _lib._objc_msgSend_700(_id, _lib._sel_setInterpretedSyntax_1, value); + } + + int get failurePolicy { + return _lib._objc_msgSend_701(_id, _lib._sel_failurePolicy1); + } + + set failurePolicy(int value) { + return _lib._objc_msgSend_702(_id, _lib._sel_setFailurePolicy_1, value); + } + + NSString? get languageCode { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_languageCode1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set languageCode(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setLanguageCode_1, value?._id ?? ffi.nullptr); + } + + bool get appliesSourcePositionAttributes { + return _lib._objc_msgSend_12( + _id, _lib._sel_appliesSourcePositionAttributes1); + } + + set appliesSourcePositionAttributes(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAppliesSourcePositionAttributes_1, value); + } + + static NSAttributedStringMarkdownParsingOptions new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSAttributedStringMarkdownParsingOptions1, _lib._sel_new1); + return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, + retain: false, release: true); + } + + static NSAttributedStringMarkdownParsingOptions allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSAttributedStringMarkdownParsingOptions1, + _lib._sel_allocWithZone_1, + zone); + return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, + retain: false, release: true); + } + + static NSAttributedStringMarkdownParsingOptions alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSAttributedStringMarkdownParsingOptions1, + _lib._sel_alloc1); + return NSAttributedStringMarkdownParsingOptions._(_ret, _lib, + retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSAttributedStringMarkdownParsingOptions1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSAttributedStringMarkdownParsingOptions1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSAttributedStringMarkdownParsingOptions1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSAttributedStringMarkdownParsingOptions1, + _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSAttributedStringMarkdownParsingOptions1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSAttributedStringMarkdownParsingOptions1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSAttributedStringMarkdownParsingOptions1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSAttributedStringMarkdownParsingOptions1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSAttributedStringMarkdownParsingOptions1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSAttributedStringMarkdownInterpretedSyntax { + static const int NSAttributedStringMarkdownInterpretedSyntaxFull = 0; + static const int NSAttributedStringMarkdownInterpretedSyntaxInlineOnly = 1; + static const int + NSAttributedStringMarkdownInterpretedSyntaxInlineOnlyPreservingWhitespace = + 2; +} + +abstract class NSAttributedStringMarkdownParsingFailurePolicy { + static const int NSAttributedStringMarkdownParsingFailureReturnError = 0; + static const int + NSAttributedStringMarkdownParsingFailureReturnPartiallyParsedIfPossible = + 1; +} + +abstract class NSAttributedStringFormattingOptions { + static const int + NSAttributedStringFormattingInsertArgumentAttributesWithoutMerging = 1; + static const int NSAttributedStringFormattingApplyReplacementIndexAttribute = + 2; +} + +class NSMutableAttributedString extends NSAttributedString { + NSMutableAttributedString._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMutableAttributedString] that points to the same underlying object as [other]. + static NSMutableAttributedString castFrom(T other) { + return NSMutableAttributedString._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSMutableAttributedString] that wraps the given raw object pointer. + static NSMutableAttributedString castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMutableAttributedString._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMutableAttributedString]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMutableAttributedString1); + } + + void replaceCharactersInRange_withString_(_NSRange range, NSString? str) { + _lib._objc_msgSend_672(_id, _lib._sel_replaceCharactersInRange_withString_1, + range, str?._id ?? ffi.nullptr); + } + + void setAttributes_range_(NSDictionary? attrs, _NSRange range) { + _lib._objc_msgSend_713( + _id, _lib._sel_setAttributes_range_1, attrs?._id ?? ffi.nullptr, range); + } + + NSMutableString? get mutableString { + final _ret = _lib._objc_msgSend_714(_id, _lib._sel_mutableString1); + return _ret.address == 0 + ? null + : NSMutableString._(_ret, _lib, retain: true, release: true); + } + + void addAttribute_value_range_( + NSString name, NSObject value, _NSRange range) { + _lib._objc_msgSend_715( + _id, _lib._sel_addAttribute_value_range_1, name._id, value._id, range); + } + + void addAttributes_range_(NSDictionary? attrs, _NSRange range) { + _lib._objc_msgSend_713( + _id, _lib._sel_addAttributes_range_1, attrs?._id ?? ffi.nullptr, range); + } + + void removeAttribute_range_(NSString name, _NSRange range) { + _lib._objc_msgSend_716( + _id, _lib._sel_removeAttribute_range_1, name._id, range); + } + + void replaceCharactersInRange_withAttributedString_( + _NSRange range, NSAttributedString? attrString) { + _lib._objc_msgSend_717( + _id, + _lib._sel_replaceCharactersInRange_withAttributedString_1, + range, + attrString?._id ?? ffi.nullptr); + } + + void insertAttributedString_atIndex_( + NSAttributedString? attrString, int loc) { + _lib._objc_msgSend_718(_id, _lib._sel_insertAttributedString_atIndex_1, + attrString?._id ?? ffi.nullptr, loc); + } + + void appendAttributedString_(NSAttributedString? attrString) { + _lib._objc_msgSend_719(_id, _lib._sel_appendAttributedString_1, + attrString?._id ?? ffi.nullptr); + } + + void deleteCharactersInRange_(_NSRange range) { + _lib._objc_msgSend_445(_id, _lib._sel_deleteCharactersInRange_1, range); + } + + void setAttributedString_(NSAttributedString? attrString) { + _lib._objc_msgSend_719( + _id, _lib._sel_setAttributedString_1, attrString?._id ?? ffi.nullptr); + } + + void beginEditing() { + _lib._objc_msgSend_1(_id, _lib._sel_beginEditing1); + } + + void endEditing() { + _lib._objc_msgSend_1(_id, _lib._sel_endEditing1); + } + + void appendLocalizedFormat_(NSAttributedString? format) { + _lib._objc_msgSend_719( + _id, _lib._sel_appendLocalizedFormat_1, format?._id ?? ffi.nullptr); + } + + @override + NSMutableAttributedString initWithString_(NSString? str) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithString_1, str?._id ?? ffi.nullptr); + return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableAttributedString initWithString_attributes_( + NSString? str, NSDictionary? attrs) { + final _ret = _lib._objc_msgSend_371( + _id, + _lib._sel_initWithString_attributes_1, + str?._id ?? ffi.nullptr, + attrs?._id ?? ffi.nullptr); + return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableAttributedString initWithAttributedString_( + NSAttributedString? attrStr) { + final _ret = _lib._objc_msgSend_696( + _id, _lib._sel_initWithAttributedString_1, attrStr?._id ?? ffi.nullptr); + return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableAttributedString + initWithContentsOfMarkdownFileAtURL_options_baseURL_error_( + NSURL? markdownFile, + NSAttributedStringMarkdownParsingOptions? options, + NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_703( + _id, + _lib._sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1, + markdownFile?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr, + error); + return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableAttributedString initWithMarkdown_options_baseURL_error_( + NSData? markdown, + NSAttributedStringMarkdownParsingOptions? options, + NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_704( + _id, + _lib._sel_initWithMarkdown_options_baseURL_error_1, + markdown?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr, + error); + return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableAttributedString initWithMarkdownString_options_baseURL_error_( + NSString? markdownString, + NSAttributedStringMarkdownParsingOptions? options, + NSURL? baseURL, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_705( + _id, + _lib._sel_initWithMarkdownString_options_baseURL_error_1, + markdownString?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr, + baseURL?._id ?? ffi.nullptr, + error); + return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableAttributedString initWithFormat_options_locale_( + NSAttributedString? format, int options, NSLocale? locale) { + final _ret = _lib._objc_msgSend_706( + _id, + _lib._sel_initWithFormat_options_locale_1, + format?._id ?? ffi.nullptr, + options, + locale?._id ?? ffi.nullptr); + return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableAttributedString initWithFormat_options_locale_arguments_( + NSAttributedString? format, + int options, + NSLocale? locale, + ffi.Pointer arguments) { + final _ret = _lib._objc_msgSend_707( + _id, + _lib._sel_initWithFormat_options_locale_arguments_1, + format?._id ?? ffi.nullptr, + options, + locale?._id ?? ffi.nullptr, + arguments); + return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableAttributedString localizedAttributedStringWithFormat_( + SentryCocoa _lib, NSAttributedString? format) { + final _ret = _lib._objc_msgSend_696( + _lib._class_NSMutableAttributedString1, + _lib._sel_localizedAttributedStringWithFormat_1, + format?._id ?? ffi.nullptr); + return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableAttributedString localizedAttributedStringWithFormat_options_( + SentryCocoa _lib, NSAttributedString? format, int options) { + final _ret = _lib._objc_msgSend_708( + _lib._class_NSMutableAttributedString1, + _lib._sel_localizedAttributedStringWithFormat_options_1, + format?._id ?? ffi.nullptr, + options); + return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableAttributedString init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); + } + + static NSMutableAttributedString new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableAttributedString1, _lib._sel_new1); + return NSMutableAttributedString._(_ret, _lib, + retain: false, release: true); + } + + static NSMutableAttributedString allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3(_lib._class_NSMutableAttributedString1, + _lib._sel_allocWithZone_1, zone); + return NSMutableAttributedString._(_ret, _lib, + retain: false, release: true); + } + + static NSMutableAttributedString alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableAttributedString1, _lib._sel_alloc1); + return NSMutableAttributedString._(_ret, _lib, + retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSMutableAttributedString1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSMutableAttributedString1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSMutableAttributedString1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableAttributedString1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSMutableAttributedString1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSMutableAttributedString1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSMutableAttributedString1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSMutableAttributedString1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSMutableAttributedString1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSDateFormatter extends NSFormatter { + NSDateFormatter._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSDateFormatter] that points to the same underlying object as [other]. + static NSDateFormatter castFrom(T other) { + return NSDateFormatter._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSDateFormatter] that wraps the given raw object pointer. + static NSDateFormatter castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSDateFormatter._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSDateFormatter]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSDateFormatter1); + } + + int get formattingContext { + return _lib._objc_msgSend_724(_id, _lib._sel_formattingContext1); + } + + set formattingContext(int value) { + return _lib._objc_msgSend_725(_id, _lib._sel_setFormattingContext_1, value); + } + + bool getObjectValue_forString_range_error_( + ffi.Pointer> obj, + NSString? string, + ffi.Pointer<_NSRange> rangep, + ffi.Pointer> error) { + return _lib._objc_msgSend_726( + _id, + _lib._sel_getObjectValue_forString_range_error_1, + obj, + string?._id ?? ffi.nullptr, + rangep, + error); + } + + NSString stringFromDate_(NSDate? date) { + final _ret = _lib._objc_msgSend_167( + _id, _lib._sel_stringFromDate_1, date?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSDate dateFromString_(NSString? string) { + final _ret = _lib._objc_msgSend_528( + _id, _lib._sel_dateFromString_1, string?._id ?? ffi.nullptr); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + static NSString localizedStringFromDate_dateStyle_timeStyle_( + SentryCocoa _lib, NSDate? date, int dstyle, int tstyle) { + final _ret = _lib._objc_msgSend_727( + _lib._class_NSDateFormatter1, + _lib._sel_localizedStringFromDate_dateStyle_timeStyle_1, + date?._id ?? ffi.nullptr, + dstyle, + tstyle); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString dateFormatFromTemplate_options_locale_( + SentryCocoa _lib, NSString? tmplate, int opts, NSLocale? locale) { + final _ret = _lib._objc_msgSend_728( + _lib._class_NSDateFormatter1, + _lib._sel_dateFormatFromTemplate_options_locale_1, + tmplate?._id ?? ffi.nullptr, + opts, + locale?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static int getDefaultFormatterBehavior(SentryCocoa _lib) { + return _lib._objc_msgSend_729( + _lib._class_NSDateFormatter1, _lib._sel_defaultFormatterBehavior1); + } + + static void setDefaultFormatterBehavior(SentryCocoa _lib, int value) { + return _lib._objc_msgSend_730(_lib._class_NSDateFormatter1, + _lib._sel_setDefaultFormatterBehavior_1, value); + } + + void setLocalizedDateFormatFromTemplate_(NSString? dateFormatTemplate) { + _lib._objc_msgSend_192(_id, _lib._sel_setLocalizedDateFormatFromTemplate_1, + dateFormatTemplate?._id ?? ffi.nullptr); + } + + NSString? get dateFormat { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_dateFormat1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set dateFormat(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setDateFormat_1, value?._id ?? ffi.nullptr); + } + + int get dateStyle { + return _lib._objc_msgSend_731(_id, _lib._sel_dateStyle1); + } + + set dateStyle(int value) { + return _lib._objc_msgSend_732(_id, _lib._sel_setDateStyle_1, value); + } + + int get timeStyle { + return _lib._objc_msgSend_731(_id, _lib._sel_timeStyle1); + } + + set timeStyle(int value) { + return _lib._objc_msgSend_732(_id, _lib._sel_setTimeStyle_1, value); + } + + NSLocale? get locale { + final _ret = _lib._objc_msgSend_182(_id, _lib._sel_locale1); + return _ret.address == 0 + ? null + : NSLocale._(_ret, _lib, retain: true, release: true); + } + + set locale(NSLocale? value) { + return _lib._objc_msgSend_733( + _id, _lib._sel_setLocale_1, value?._id ?? ffi.nullptr); + } + + bool get generatesCalendarDates { + return _lib._objc_msgSend_12(_id, _lib._sel_generatesCalendarDates1); + } + + set generatesCalendarDates(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setGeneratesCalendarDates_1, value); + } + + int get formatterBehavior { + return _lib._objc_msgSend_729(_id, _lib._sel_formatterBehavior1); + } + + set formatterBehavior(int value) { + return _lib._objc_msgSend_730(_id, _lib._sel_setFormatterBehavior_1, value); + } + + NSTimeZone? get timeZone { + final _ret = _lib._objc_msgSend_168(_id, _lib._sel_timeZone1); + return _ret.address == 0 + ? null + : NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + set timeZone(NSTimeZone? value) { + return _lib._objc_msgSend_169( + _id, _lib._sel_setTimeZone_1, value?._id ?? ffi.nullptr); + } + + NSCalendar? get calendar { + final _ret = _lib._objc_msgSend_734(_id, _lib._sel_calendar1); + return _ret.address == 0 + ? null + : NSCalendar._(_ret, _lib, retain: true, release: true); + } + + set calendar(NSCalendar? value) { + return _lib._objc_msgSend_740( + _id, _lib._sel_setCalendar_1, value?._id ?? ffi.nullptr); + } + + bool get lenient { + return _lib._objc_msgSend_12(_id, _lib._sel_isLenient1); + } + + set lenient(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setLenient_1, value); + } + + NSDate? get twoDigitStartDate { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_twoDigitStartDate1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + set twoDigitStartDate(NSDate? value) { + return _lib._objc_msgSend_525( + _id, _lib._sel_setTwoDigitStartDate_1, value?._id ?? ffi.nullptr); + } + + NSDate? get defaultDate { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_defaultDate1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + set defaultDate(NSDate? value) { + return _lib._objc_msgSend_525( + _id, _lib._sel_setDefaultDate_1, value?._id ?? ffi.nullptr); + } + + NSArray? get eraSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_eraSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set eraSymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setEraSymbols_1, value?._id ?? ffi.nullptr); + } + + NSArray? get monthSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_monthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set monthSymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setMonthSymbols_1, value?._id ?? ffi.nullptr); + } + + NSArray? get shortMonthSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_shortMonthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set shortMonthSymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setShortMonthSymbols_1, value?._id ?? ffi.nullptr); + } + + NSArray? get weekdaySymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_weekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set weekdaySymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setWeekdaySymbols_1, value?._id ?? ffi.nullptr); + } + + NSArray? get shortWeekdaySymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_shortWeekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set shortWeekdaySymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setShortWeekdaySymbols_1, value?._id ?? ffi.nullptr); + } + + NSString? get AMSymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_AMSymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set AMSymbol(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setAMSymbol_1, value?._id ?? ffi.nullptr); + } + + NSString? get PMSymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_PMSymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set PMSymbol(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPMSymbol_1, value?._id ?? ffi.nullptr); + } + + NSArray? get longEraSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_longEraSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set longEraSymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setLongEraSymbols_1, value?._id ?? ffi.nullptr); + } + + NSArray? get veryShortMonthSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_veryShortMonthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set veryShortMonthSymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setVeryShortMonthSymbols_1, value?._id ?? ffi.nullptr); + } + + NSArray? get standaloneMonthSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_standaloneMonthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set standaloneMonthSymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setStandaloneMonthSymbols_1, value?._id ?? ffi.nullptr); + } + + NSArray? get shortStandaloneMonthSymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_shortStandaloneMonthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set shortStandaloneMonthSymbols(NSArray? value) { + return _lib._objc_msgSend_765(_id, + _lib._sel_setShortStandaloneMonthSymbols_1, value?._id ?? ffi.nullptr); + } + + NSArray? get veryShortStandaloneMonthSymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_veryShortStandaloneMonthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set veryShortStandaloneMonthSymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, + _lib._sel_setVeryShortStandaloneMonthSymbols_1, + value?._id ?? ffi.nullptr); + } + + NSArray? get veryShortWeekdaySymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_veryShortWeekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set veryShortWeekdaySymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setVeryShortWeekdaySymbols_1, value?._id ?? ffi.nullptr); + } + + NSArray? get standaloneWeekdaySymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_standaloneWeekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set standaloneWeekdaySymbols(NSArray? value) { + return _lib._objc_msgSend_765(_id, _lib._sel_setStandaloneWeekdaySymbols_1, + value?._id ?? ffi.nullptr); + } + + NSArray? get shortStandaloneWeekdaySymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_shortStandaloneWeekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set shortStandaloneWeekdaySymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, + _lib._sel_setShortStandaloneWeekdaySymbols_1, + value?._id ?? ffi.nullptr); + } + + NSArray? get veryShortStandaloneWeekdaySymbols { + final _ret = _lib._objc_msgSend_79( + _id, _lib._sel_veryShortStandaloneWeekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set veryShortStandaloneWeekdaySymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, + _lib._sel_setVeryShortStandaloneWeekdaySymbols_1, + value?._id ?? ffi.nullptr); + } + + NSArray? get quarterSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_quarterSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set quarterSymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setQuarterSymbols_1, value?._id ?? ffi.nullptr); + } + + NSArray? get shortQuarterSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_shortQuarterSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set shortQuarterSymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setShortQuarterSymbols_1, value?._id ?? ffi.nullptr); + } + + NSArray? get standaloneQuarterSymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_standaloneQuarterSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set standaloneQuarterSymbols(NSArray? value) { + return _lib._objc_msgSend_765(_id, _lib._sel_setStandaloneQuarterSymbols_1, + value?._id ?? ffi.nullptr); + } + + NSArray? get shortStandaloneQuarterSymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_shortStandaloneQuarterSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set shortStandaloneQuarterSymbols(NSArray? value) { + return _lib._objc_msgSend_765( + _id, + _lib._sel_setShortStandaloneQuarterSymbols_1, + value?._id ?? ffi.nullptr); + } + + NSDate? get gregorianStartDate { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_gregorianStartDate1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + set gregorianStartDate(NSDate? value) { + return _lib._objc_msgSend_525( + _id, _lib._sel_setGregorianStartDate_1, value?._id ?? ffi.nullptr); + } + + bool get doesRelativeDateFormatting { + return _lib._objc_msgSend_12(_id, _lib._sel_doesRelativeDateFormatting1); + } + + set doesRelativeDateFormatting(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setDoesRelativeDateFormatting_1, value); + } + + NSObject initWithDateFormat_allowNaturalLanguage_( + NSString? format, bool flag) { + final _ret = _lib._objc_msgSend_29( + _id, + _lib._sel_initWithDateFormat_allowNaturalLanguage_1, + format?._id ?? ffi.nullptr, + flag); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool allowsNaturalLanguage() { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsNaturalLanguage1); + } + + @override + NSDateFormatter init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSDateFormatter._(_ret, _lib, retain: true, release: true); + } + + static NSDateFormatter new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSDateFormatter1, _lib._sel_new1); + return NSDateFormatter._(_ret, _lib, retain: false, release: true); + } + + static NSDateFormatter allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSDateFormatter1, _lib._sel_allocWithZone_1, zone); + return NSDateFormatter._(_ret, _lib, retain: false, release: true); + } + + static NSDateFormatter alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSDateFormatter1, _lib._sel_alloc1); + return NSDateFormatter._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSDateFormatter1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSDateFormatter1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSDateFormatter1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSDateFormatter1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSDateFormatter1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSDateFormatter1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSDateFormatter1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSDateFormatter1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSDateFormatter1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSFormatter extends NSObject { + NSFormatter._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSFormatter] that points to the same underlying object as [other]. + static NSFormatter castFrom(T other) { + return NSFormatter._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSFormatter] that wraps the given raw object pointer. + static NSFormatter castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSFormatter._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSFormatter]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFormatter1); + } + + NSString stringForObjectValue_(NSObject obj) { + final _ret = + _lib._objc_msgSend_65(_id, _lib._sel_stringForObjectValue_1, obj._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSAttributedString attributedStringForObjectValue_withDefaultAttributes_( + NSObject obj, NSDictionary? attrs) { + final _ret = _lib._objc_msgSend_720( + _id, + _lib._sel_attributedStringForObjectValue_withDefaultAttributes_1, + obj._id, + attrs?._id ?? ffi.nullptr); + return NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + NSString editingStringForObjectValue_(NSObject obj) { + final _ret = _lib._objc_msgSend_65( + _id, _lib._sel_editingStringForObjectValue_1, obj._id); + return NSString._(_ret, _lib, retain: true, release: true); + } + + bool getObjectValue_forString_errorDescription_( + ffi.Pointer> obj, + NSString? string, + ffi.Pointer> error) { + return _lib._objc_msgSend_721( + _id, + _lib._sel_getObjectValue_forString_errorDescription_1, + obj, + string?._id ?? ffi.nullptr, + error); + } + + bool isPartialStringValid_newEditingString_errorDescription_( + NSString? partialString, + ffi.Pointer> newString, + ffi.Pointer> error) { + return _lib._objc_msgSend_722( + _id, + _lib._sel_isPartialStringValid_newEditingString_errorDescription_1, + partialString?._id ?? ffi.nullptr, + newString, + error); + } + + bool + isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_( + ffi.Pointer> partialStringPtr, + ffi.Pointer<_NSRange> proposedSelRangePtr, + NSString? origString, + _NSRange origSelRange, + ffi.Pointer> error) { + return _lib._objc_msgSend_723( + _id, + _lib._sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_1, + partialStringPtr, + proposedSelRangePtr, + origString?._id ?? ffi.nullptr, + origSelRange, + error); + } + + @override + NSFormatter init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSFormatter._(_ret, _lib, retain: true, release: true); + } + + static NSFormatter new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSFormatter1, _lib._sel_new1); + return NSFormatter._(_ret, _lib, retain: false, release: true); + } + + static NSFormatter allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSFormatter1, _lib._sel_allocWithZone_1, zone); + return NSFormatter._(_ret, _lib, retain: false, release: true); + } + + static NSFormatter alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSFormatter1, _lib._sel_alloc1); + return NSFormatter._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSFormatter1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSFormatter1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSFormatter1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSFormatter1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSFormatter1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSFormatter1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSFormatter1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSFormatter1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSFormatter1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSFormattingContext { + static const int NSFormattingContextUnknown = 0; + static const int NSFormattingContextDynamic = 1; + static const int NSFormattingContextStandalone = 2; + static const int NSFormattingContextListItem = 3; + static const int NSFormattingContextBeginningOfSentence = 4; + static const int NSFormattingContextMiddleOfSentence = 5; +} + +abstract class NSDateFormatterStyle { + static const int NSDateFormatterNoStyle = 0; + static const int NSDateFormatterShortStyle = 1; + static const int NSDateFormatterMediumStyle = 2; + static const int NSDateFormatterLongStyle = 3; + static const int NSDateFormatterFullStyle = 4; +} + +abstract class NSDateFormatterBehavior { + static const int NSDateFormatterBehaviorDefault = 0; + static const int NSDateFormatterBehavior10_0 = 1000; + static const int NSDateFormatterBehavior10_4 = 1040; +} + +class NSCalendar extends NSObject { + NSCalendar._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSCalendar] that points to the same underlying object as [other]. + static NSCalendar castFrom(T other) { + return NSCalendar._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSCalendar] that wraps the given raw object pointer. + static NSCalendar castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSCalendar._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSCalendar]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSCalendar1); + } + + static NSCalendar? getCurrentCalendar(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_734( + _lib._class_NSCalendar1, _lib._sel_currentCalendar1); + return _ret.address == 0 + ? null + : NSCalendar._(_ret, _lib, retain: true, release: true); + } + + static NSCalendar? getAutoupdatingCurrentCalendar(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_734( + _lib._class_NSCalendar1, _lib._sel_autoupdatingCurrentCalendar1); + return _ret.address == 0 + ? null + : NSCalendar._(_ret, _lib, retain: true, release: true); + } + + static NSCalendar calendarWithIdentifier_( + SentryCocoa _lib, NSString calendarIdentifierConstant) { + final _ret = _lib._objc_msgSend_735(_lib._class_NSCalendar1, + _lib._sel_calendarWithIdentifier_1, calendarIdentifierConstant._id); + return NSCalendar._(_ret, _lib, retain: true, release: true); + } + + @override + NSCalendar init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSCalendar._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithCalendarIdentifier_(NSString ident) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithCalendarIdentifier_1, ident._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSString get calendarIdentifier { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_calendarIdentifier1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSLocale? get locale { + final _ret = _lib._objc_msgSend_182(_id, _lib._sel_locale1); + return _ret.address == 0 + ? null + : NSLocale._(_ret, _lib, retain: true, release: true); + } + + set locale(NSLocale? value) { + return _lib._objc_msgSend_733( + _id, _lib._sel_setLocale_1, value?._id ?? ffi.nullptr); + } + + NSTimeZone? get timeZone { + final _ret = _lib._objc_msgSend_168(_id, _lib._sel_timeZone1); + return _ret.address == 0 + ? null + : NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + set timeZone(NSTimeZone? value) { + return _lib._objc_msgSend_169( + _id, _lib._sel_setTimeZone_1, value?._id ?? ffi.nullptr); + } + + int get firstWeekday { + return _lib._objc_msgSend_10(_id, _lib._sel_firstWeekday1); + } + + set firstWeekday(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setFirstWeekday_1, value); + } + + int get minimumDaysInFirstWeek { + return _lib._objc_msgSend_10(_id, _lib._sel_minimumDaysInFirstWeek1); + } + + set minimumDaysInFirstWeek(int value) { + return _lib._objc_msgSend_483( + _id, _lib._sel_setMinimumDaysInFirstWeek_1, value); + } + + NSArray? get eraSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_eraSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get longEraSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_longEraSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get monthSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_monthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get shortMonthSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_shortMonthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get veryShortMonthSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_veryShortMonthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get standaloneMonthSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_standaloneMonthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get shortStandaloneMonthSymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_shortStandaloneMonthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get veryShortStandaloneMonthSymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_veryShortStandaloneMonthSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get weekdaySymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_weekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get shortWeekdaySymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_shortWeekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get veryShortWeekdaySymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_veryShortWeekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get standaloneWeekdaySymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_standaloneWeekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get shortStandaloneWeekdaySymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_shortStandaloneWeekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get veryShortStandaloneWeekdaySymbols { + final _ret = _lib._objc_msgSend_79( + _id, _lib._sel_veryShortStandaloneWeekdaySymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get quarterSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_quarterSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get shortQuarterSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_shortQuarterSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get standaloneQuarterSymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_standaloneQuarterSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get shortStandaloneQuarterSymbols { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_shortStandaloneQuarterSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString? get AMSymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_AMSymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get PMSymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_PMSymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + void minimumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { + _lib._objc_msgSend_736(stret, _id, _lib._sel_minimumRangeOfUnit_1, unit); + } + + void maximumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { + _lib._objc_msgSend_736(stret, _id, _lib._sel_maximumRangeOfUnit_1, unit); + } + + void rangeOfUnit_inUnit_forDate_( + ffi.Pointer<_NSRange> stret, int smaller, int larger, NSDate? date) { + _lib._objc_msgSend_737(stret, _id, _lib._sel_rangeOfUnit_inUnit_forDate_1, + smaller, larger, date?._id ?? ffi.nullptr); + } + + int ordinalityOfUnit_inUnit_forDate_(int smaller, int larger, NSDate? date) { + return _lib._objc_msgSend_738( + _id, + _lib._sel_ordinalityOfUnit_inUnit_forDate_1, + smaller, + larger, + date?._id ?? ffi.nullptr); + } + + bool rangeOfUnit_startDate_interval_forDate_( + int unit, + ffi.Pointer> datep, + ffi.Pointer tip, + NSDate? date) { + return _lib._objc_msgSend_739( + _id, + _lib._sel_rangeOfUnit_startDate_interval_forDate_1, + unit, + datep, + tip, + date?._id ?? ffi.nullptr); + } + + NSDate dateFromComponents_(NSDateComponents? comps) { + final _ret = _lib._objc_msgSend_744( + _id, _lib._sel_dateFromComponents_1, comps?._id ?? ffi.nullptr); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDateComponents components_fromDate_(int unitFlags, NSDate? date) { + final _ret = _lib._objc_msgSend_745(_id, _lib._sel_components_fromDate_1, + unitFlags, date?._id ?? ffi.nullptr); + return NSDateComponents._(_ret, _lib, retain: true, release: true); + } + + NSDate dateByAddingComponents_toDate_options_( + NSDateComponents? comps, NSDate? date, int opts) { + final _ret = _lib._objc_msgSend_746( + _id, + _lib._sel_dateByAddingComponents_toDate_options_1, + comps?._id ?? ffi.nullptr, + date?._id ?? ffi.nullptr, + opts); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDateComponents components_fromDate_toDate_options_( + int unitFlags, NSDate? startingDate, NSDate? resultDate, int opts) { + final _ret = _lib._objc_msgSend_747( + _id, + _lib._sel_components_fromDate_toDate_options_1, + unitFlags, + startingDate?._id ?? ffi.nullptr, + resultDate?._id ?? ffi.nullptr, + opts); + return NSDateComponents._(_ret, _lib, retain: true, release: true); + } + + void getEra_year_month_day_fromDate_( + ffi.Pointer eraValuePointer, + ffi.Pointer yearValuePointer, + ffi.Pointer monthValuePointer, + ffi.Pointer dayValuePointer, + NSDate? date) { + _lib._objc_msgSend_748( + _id, + _lib._sel_getEra_year_month_day_fromDate_1, + eraValuePointer, + yearValuePointer, + monthValuePointer, + dayValuePointer, + date?._id ?? ffi.nullptr); + } + + void getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_( + ffi.Pointer eraValuePointer, + ffi.Pointer yearValuePointer, + ffi.Pointer weekValuePointer, + ffi.Pointer weekdayValuePointer, + NSDate? date) { + _lib._objc_msgSend_748( + _id, + _lib._sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_1, + eraValuePointer, + yearValuePointer, + weekValuePointer, + weekdayValuePointer, + date?._id ?? ffi.nullptr); + } + + void getHour_minute_second_nanosecond_fromDate_( + ffi.Pointer hourValuePointer, + ffi.Pointer minuteValuePointer, + ffi.Pointer secondValuePointer, + ffi.Pointer nanosecondValuePointer, + NSDate? date) { + _lib._objc_msgSend_748( + _id, + _lib._sel_getHour_minute_second_nanosecond_fromDate_1, + hourValuePointer, + minuteValuePointer, + secondValuePointer, + nanosecondValuePointer, + date?._id ?? ffi.nullptr); + } + + int component_fromDate_(int unit, NSDate? date) { + return _lib._objc_msgSend_749( + _id, _lib._sel_component_fromDate_1, unit, date?._id ?? ffi.nullptr); + } + + NSDate dateWithEra_year_month_day_hour_minute_second_nanosecond_( + int eraValue, + int yearValue, + int monthValue, + int dayValue, + int hourValue, + int minuteValue, + int secondValue, + int nanosecondValue) { + final _ret = _lib._objc_msgSend_750( + _id, + _lib._sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_1, + eraValue, + yearValue, + monthValue, + dayValue, + hourValue, + minuteValue, + secondValue, + nanosecondValue); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate + dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_( + int eraValue, + int yearValue, + int weekValue, + int weekdayValue, + int hourValue, + int minuteValue, + int secondValue, + int nanosecondValue) { + final _ret = _lib._objc_msgSend_750( + _id, + _lib._sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_1, + eraValue, + yearValue, + weekValue, + weekdayValue, + hourValue, + minuteValue, + secondValue, + nanosecondValue); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate startOfDayForDate_(NSDate? date) { + final _ret = _lib._objc_msgSend_158( + _id, _lib._sel_startOfDayForDate_1, date?._id ?? ffi.nullptr); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDateComponents componentsInTimeZone_fromDate_( + NSTimeZone? timezone, NSDate? date) { + final _ret = _lib._objc_msgSend_751( + _id, + _lib._sel_componentsInTimeZone_fromDate_1, + timezone?._id ?? ffi.nullptr, + date?._id ?? ffi.nullptr); + return NSDateComponents._(_ret, _lib, retain: true, release: true); + } + + int compareDate_toDate_toUnitGranularity_( + NSDate? date1, NSDate? date2, int unit) { + return _lib._objc_msgSend_752( + _id, + _lib._sel_compareDate_toDate_toUnitGranularity_1, + date1?._id ?? ffi.nullptr, + date2?._id ?? ffi.nullptr, + unit); + } + + bool isDate_equalToDate_toUnitGranularity_( + NSDate? date1, NSDate? date2, int unit) { + return _lib._objc_msgSend_753( + _id, + _lib._sel_isDate_equalToDate_toUnitGranularity_1, + date1?._id ?? ffi.nullptr, + date2?._id ?? ffi.nullptr, + unit); + } + + bool isDate_inSameDayAsDate_(NSDate? date1, NSDate? date2) { + return _lib._objc_msgSend_754(_id, _lib._sel_isDate_inSameDayAsDate_1, + date1?._id ?? ffi.nullptr, date2?._id ?? ffi.nullptr); + } + + bool isDateInToday_(NSDate? date) { + return _lib._objc_msgSend_160( + _id, _lib._sel_isDateInToday_1, date?._id ?? ffi.nullptr); + } + + bool isDateInYesterday_(NSDate? date) { + return _lib._objc_msgSend_160( + _id, _lib._sel_isDateInYesterday_1, date?._id ?? ffi.nullptr); + } + + bool isDateInTomorrow_(NSDate? date) { + return _lib._objc_msgSend_160( + _id, _lib._sel_isDateInTomorrow_1, date?._id ?? ffi.nullptr); + } + + bool isDateInWeekend_(NSDate? date) { + return _lib._objc_msgSend_160( + _id, _lib._sel_isDateInWeekend_1, date?._id ?? ffi.nullptr); + } + + bool rangeOfWeekendStartDate_interval_containingDate_( + ffi.Pointer> datep, + ffi.Pointer tip, + NSDate? date) { + return _lib._objc_msgSend_755( + _id, + _lib._sel_rangeOfWeekendStartDate_interval_containingDate_1, + datep, + tip, + date?._id ?? ffi.nullptr); + } + + bool nextWeekendStartDate_interval_options_afterDate_( + ffi.Pointer> datep, + ffi.Pointer tip, + int options, + NSDate? date) { + return _lib._objc_msgSend_756( + _id, + _lib._sel_nextWeekendStartDate_interval_options_afterDate_1, + datep, + tip, + options, + date?._id ?? ffi.nullptr); + } + + NSDateComponents components_fromDateComponents_toDateComponents_options_( + int unitFlags, + NSDateComponents? startingDateComp, + NSDateComponents? resultDateComp, + int options) { + final _ret = _lib._objc_msgSend_757( + _id, + _lib._sel_components_fromDateComponents_toDateComponents_options_1, + unitFlags, + startingDateComp?._id ?? ffi.nullptr, + resultDateComp?._id ?? ffi.nullptr, + options); + return NSDateComponents._(_ret, _lib, retain: true, release: true); + } + + NSDate dateByAddingUnit_value_toDate_options_( + int unit, int value, NSDate? date, int options) { + final _ret = _lib._objc_msgSend_758( + _id, + _lib._sel_dateByAddingUnit_value_toDate_options_1, + unit, + value, + date?._id ?? ffi.nullptr, + options); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + void enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_( + NSDate? start, + NSDateComponents? comps, + int opts, + ObjCBlock_ffiVoid_NSDate_bool_bool block) { + _lib._objc_msgSend_759( + _id, + _lib._sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_1, + start?._id ?? ffi.nullptr, + comps?._id ?? ffi.nullptr, + opts, + block._id); + } + + NSDate nextDateAfterDate_matchingComponents_options_( + NSDate? date, NSDateComponents? comps, int options) { + final _ret = _lib._objc_msgSend_760( + _id, + _lib._sel_nextDateAfterDate_matchingComponents_options_1, + date?._id ?? ffi.nullptr, + comps?._id ?? ffi.nullptr, + options); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate nextDateAfterDate_matchingUnit_value_options_( + NSDate? date, int unit, int value, int options) { + final _ret = _lib._objc_msgSend_761( + _id, + _lib._sel_nextDateAfterDate_matchingUnit_value_options_1, + date?._id ?? ffi.nullptr, + unit, + value, + options); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate nextDateAfterDate_matchingHour_minute_second_options_(NSDate? date, + int hourValue, int minuteValue, int secondValue, int options) { + final _ret = _lib._objc_msgSend_762( + _id, + _lib._sel_nextDateAfterDate_matchingHour_minute_second_options_1, + date?._id ?? ffi.nullptr, + hourValue, + minuteValue, + secondValue, + options); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate dateBySettingUnit_value_ofDate_options_( + int unit, int v, NSDate? date, int opts) { + final _ret = _lib._objc_msgSend_758( + _id, + _lib._sel_dateBySettingUnit_value_ofDate_options_1, + unit, + v, + date?._id ?? ffi.nullptr, + opts); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + NSDate dateBySettingHour_minute_second_ofDate_options_( + int h, int m, int s, NSDate? date, int opts) { + final _ret = _lib._objc_msgSend_763( + _id, + _lib._sel_dateBySettingHour_minute_second_ofDate_options_1, + h, + m, + s, + date?._id ?? ffi.nullptr, + opts); + return NSDate._(_ret, _lib, retain: true, release: true); + } + + bool date_matchesComponents_(NSDate? date, NSDateComponents? components) { + return _lib._objc_msgSend_764(_id, _lib._sel_date_matchesComponents_1, + date?._id ?? ffi.nullptr, components?._id ?? ffi.nullptr); + } + + static NSCalendar new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSCalendar1, _lib._sel_new1); + return NSCalendar._(_ret, _lib, retain: false, release: true); + } + + static NSCalendar allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSCalendar1, _lib._sel_allocWithZone_1, zone); + return NSCalendar._(_ret, _lib, retain: false, release: true); + } + + static NSCalendar alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSCalendar1, _lib._sel_alloc1); + return NSCalendar._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSCalendar1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSCalendar1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSCalendar1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSCalendar1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSCalendar1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSCalendar1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSCalendar1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSCalendar1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSCalendar1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSCalendarUnit { + static const int NSCalendarUnitEra = 2; + static const int NSCalendarUnitYear = 4; + static const int NSCalendarUnitMonth = 8; + static const int NSCalendarUnitDay = 16; + static const int NSCalendarUnitHour = 32; + static const int NSCalendarUnitMinute = 64; + static const int NSCalendarUnitSecond = 128; + static const int NSCalendarUnitWeekday = 512; + static const int NSCalendarUnitWeekdayOrdinal = 1024; + static const int NSCalendarUnitQuarter = 2048; + static const int NSCalendarUnitWeekOfMonth = 4096; + static const int NSCalendarUnitWeekOfYear = 8192; + static const int NSCalendarUnitYearForWeekOfYear = 16384; + static const int NSCalendarUnitNanosecond = 32768; + static const int NSCalendarUnitCalendar = 1048576; + static const int NSCalendarUnitTimeZone = 2097152; + static const int NSEraCalendarUnit = 2; + static const int NSYearCalendarUnit = 4; + static const int NSMonthCalendarUnit = 8; + static const int NSDayCalendarUnit = 16; + static const int NSHourCalendarUnit = 32; + static const int NSMinuteCalendarUnit = 64; + static const int NSSecondCalendarUnit = 128; + static const int NSWeekCalendarUnit = 256; + static const int NSWeekdayCalendarUnit = 512; + static const int NSWeekdayOrdinalCalendarUnit = 1024; + static const int NSQuarterCalendarUnit = 2048; + static const int NSWeekOfMonthCalendarUnit = 4096; + static const int NSWeekOfYearCalendarUnit = 8192; + static const int NSYearForWeekOfYearCalendarUnit = 16384; + static const int NSCalendarCalendarUnit = 1048576; + static const int NSTimeZoneCalendarUnit = 2097152; +} + +class NSDateComponents extends NSObject { + NSDateComponents._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSDateComponents] that points to the same underlying object as [other]. + static NSDateComponents castFrom(T other) { + return NSDateComponents._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSDateComponents] that wraps the given raw object pointer. + static NSDateComponents castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSDateComponents._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSDateComponents]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSDateComponents1); + } + + NSCalendar? get calendar { + final _ret = _lib._objc_msgSend_734(_id, _lib._sel_calendar1); + return _ret.address == 0 + ? null + : NSCalendar._(_ret, _lib, retain: true, release: true); + } + + set calendar(NSCalendar? value) { + return _lib._objc_msgSend_740( + _id, _lib._sel_setCalendar_1, value?._id ?? ffi.nullptr); + } + + NSTimeZone? get timeZone { + final _ret = _lib._objc_msgSend_168(_id, _lib._sel_timeZone1); + return _ret.address == 0 + ? null + : NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + set timeZone(NSTimeZone? value) { + return _lib._objc_msgSend_169( + _id, _lib._sel_setTimeZone_1, value?._id ?? ffi.nullptr); + } + + int get era { + return _lib._objc_msgSend_78(_id, _lib._sel_era1); + } + + set era(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setEra_1, value); + } + + int get year { + return _lib._objc_msgSend_78(_id, _lib._sel_year1); + } + + set year(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setYear_1, value); + } + + int get month { + return _lib._objc_msgSend_78(_id, _lib._sel_month1); + } + + set month(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setMonth_1, value); + } + + int get day { + return _lib._objc_msgSend_78(_id, _lib._sel_day1); + } + + set day(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setDay_1, value); + } + + int get hour { + return _lib._objc_msgSend_78(_id, _lib._sel_hour1); + } + + set hour(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setHour_1, value); + } + + int get minute { + return _lib._objc_msgSend_78(_id, _lib._sel_minute1); + } + + set minute(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setMinute_1, value); + } + + int get second { + return _lib._objc_msgSend_78(_id, _lib._sel_second1); + } + + set second(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setSecond_1, value); + } + + int get nanosecond { + return _lib._objc_msgSend_78(_id, _lib._sel_nanosecond1); + } + + set nanosecond(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setNanosecond_1, value); + } + + int get weekday { + return _lib._objc_msgSend_78(_id, _lib._sel_weekday1); + } + + set weekday(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setWeekday_1, value); + } + + int get weekdayOrdinal { + return _lib._objc_msgSend_78(_id, _lib._sel_weekdayOrdinal1); + } + + set weekdayOrdinal(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setWeekdayOrdinal_1, value); + } + + int get quarter { + return _lib._objc_msgSend_78(_id, _lib._sel_quarter1); + } + + set quarter(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setQuarter_1, value); + } + + int get weekOfMonth { + return _lib._objc_msgSend_78(_id, _lib._sel_weekOfMonth1); + } + + set weekOfMonth(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setWeekOfMonth_1, value); + } + + int get weekOfYear { + return _lib._objc_msgSend_78(_id, _lib._sel_weekOfYear1); + } + + set weekOfYear(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setWeekOfYear_1, value); + } + + int get yearForWeekOfYear { + return _lib._objc_msgSend_78(_id, _lib._sel_yearForWeekOfYear1); + } + + set yearForWeekOfYear(int value) { + return _lib._objc_msgSend_590(_id, _lib._sel_setYearForWeekOfYear_1, value); + } + + bool get leapMonth { + return _lib._objc_msgSend_12(_id, _lib._sel_isLeapMonth1); + } + + set leapMonth(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setLeapMonth_1, value); + } + + NSDate? get date { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_date1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + int week() { + return _lib._objc_msgSend_78(_id, _lib._sel_week1); + } + + void setWeek_(int v) { + _lib._objc_msgSend_394(_id, _lib._sel_setWeek_1, v); + } + + void setValue_forComponent_(int value, int unit) { + _lib._objc_msgSend_741(_id, _lib._sel_setValue_forComponent_1, value, unit); + } + + int valueForComponent_(int unit) { + return _lib._objc_msgSend_742(_id, _lib._sel_valueForComponent_1, unit); + } + + bool get validDate { + return _lib._objc_msgSend_12(_id, _lib._sel_isValidDate1); + } + + bool isValidDateInCalendar_(NSCalendar? calendar) { + return _lib._objc_msgSend_743( + _id, _lib._sel_isValidDateInCalendar_1, calendar?._id ?? ffi.nullptr); + } + + @override + NSDateComponents init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSDateComponents._(_ret, _lib, retain: true, release: true); + } + + static NSDateComponents new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSDateComponents1, _lib._sel_new1); + return NSDateComponents._(_ret, _lib, retain: false, release: true); + } + + static NSDateComponents allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSDateComponents1, _lib._sel_allocWithZone_1, zone); + return NSDateComponents._(_ret, _lib, retain: false, release: true); + } + + static NSDateComponents alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSDateComponents1, _lib._sel_alloc1); + return NSDateComponents._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSDateComponents1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSDateComponents1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSDateComponents1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSDateComponents1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSDateComponents1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSDateComponents1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSDateComponents1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSDateComponents1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSDateComponents1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSCalendarOptions { + static const int NSCalendarWrapComponents = 1; + static const int NSCalendarMatchStrictly = 2; + static const int NSCalendarSearchBackwards = 4; + static const int NSCalendarMatchPreviousTimePreservingSmallerUnits = 256; + static const int NSCalendarMatchNextTimePreservingSmallerUnits = 512; + static const int NSCalendarMatchNextTime = 1024; + static const int NSCalendarMatchFirst = 4096; + static const int NSCalendarMatchLast = 8192; +} + +void _ObjCBlock_ffiVoid_NSDate_bool_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSDate_bool_bool_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, bool, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_NSDate_bool_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSDate_bool_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSDate_bool_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSDate_bool_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSDate_bool_bool.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSDate_bool_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDate_bool_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call( + ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +class NSNumberFormatter extends NSFormatter { + NSNumberFormatter._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSNumberFormatter] that points to the same underlying object as [other]. + static NSNumberFormatter castFrom(T other) { + return NSNumberFormatter._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSNumberFormatter] that wraps the given raw object pointer. + static NSNumberFormatter castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSNumberFormatter._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSNumberFormatter]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSNumberFormatter1); + } + + int get formattingContext { + return _lib._objc_msgSend_724(_id, _lib._sel_formattingContext1); + } + + set formattingContext(int value) { + return _lib._objc_msgSend_725(_id, _lib._sel_setFormattingContext_1, value); + } + + bool getObjectValue_forString_range_error_( + ffi.Pointer> obj, + NSString? string, + ffi.Pointer<_NSRange> rangep, + ffi.Pointer> error) { + return _lib._objc_msgSend_726( + _id, + _lib._sel_getObjectValue_forString_range_error_1, + obj, + string?._id ?? ffi.nullptr, + rangep, + error); + } + + NSString stringFromNumber_(NSNumber? number) { + final _ret = _lib._objc_msgSend_766( + _id, _lib._sel_stringFromNumber_1, number?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSNumber numberFromString_(NSString? string) { + final _ret = _lib._objc_msgSend_767( + _id, _lib._sel_numberFromString_1, string?._id ?? ffi.nullptr); + return NSNumber._(_ret, _lib, retain: true, release: true); + } + + static NSString localizedStringFromNumber_numberStyle_( + SentryCocoa _lib, NSNumber? num, int nstyle) { + final _ret = _lib._objc_msgSend_768( + _lib._class_NSNumberFormatter1, + _lib._sel_localizedStringFromNumber_numberStyle_1, + num?._id ?? ffi.nullptr, + nstyle); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static int defaultFormatterBehavior(SentryCocoa _lib) { + return _lib._objc_msgSend_769( + _lib._class_NSNumberFormatter1, _lib._sel_defaultFormatterBehavior1); + } + + static void setDefaultFormatterBehavior_(SentryCocoa _lib, int behavior) { + _lib._objc_msgSend_770(_lib._class_NSNumberFormatter1, + _lib._sel_setDefaultFormatterBehavior_1, behavior); + } + + int get numberStyle { + return _lib._objc_msgSend_771(_id, _lib._sel_numberStyle1); + } + + set numberStyle(int value) { + return _lib._objc_msgSend_772(_id, _lib._sel_setNumberStyle_1, value); + } + + NSLocale? get locale { + final _ret = _lib._objc_msgSend_182(_id, _lib._sel_locale1); + return _ret.address == 0 + ? null + : NSLocale._(_ret, _lib, retain: true, release: true); + } + + set locale(NSLocale? value) { + return _lib._objc_msgSend_733( + _id, _lib._sel_setLocale_1, value?._id ?? ffi.nullptr); + } + + bool get generatesDecimalNumbers { + return _lib._objc_msgSend_12(_id, _lib._sel_generatesDecimalNumbers1); + } + + set generatesDecimalNumbers(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setGeneratesDecimalNumbers_1, value); + } + + int get formatterBehavior { + return _lib._objc_msgSend_769(_id, _lib._sel_formatterBehavior1); + } + + set formatterBehavior(int value) { + return _lib._objc_msgSend_773(_id, _lib._sel_setFormatterBehavior_1, value); + } + + NSString? get negativeFormat { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_negativeFormat1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set negativeFormat(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setNegativeFormat_1, value?._id ?? ffi.nullptr); + } + + NSDictionary? get textAttributesForNegativeValues { + final _ret = + _lib._objc_msgSend_170(_id, _lib._sel_textAttributesForNegativeValues1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set textAttributesForNegativeValues(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, + _lib._sel_setTextAttributesForNegativeValues_1, + value?._id ?? ffi.nullptr); + } + + NSString? get positiveFormat { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_positiveFormat1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set positiveFormat(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPositiveFormat_1, value?._id ?? ffi.nullptr); + } + + NSDictionary? get textAttributesForPositiveValues { + final _ret = + _lib._objc_msgSend_170(_id, _lib._sel_textAttributesForPositiveValues1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set textAttributesForPositiveValues(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, + _lib._sel_setTextAttributesForPositiveValues_1, + value?._id ?? ffi.nullptr); + } + + bool get allowsFloats { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsFloats1); + } + + set allowsFloats(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setAllowsFloats_1, value); + } + + NSString? get decimalSeparator { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_decimalSeparator1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set decimalSeparator(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setDecimalSeparator_1, value?._id ?? ffi.nullptr); + } + + bool get alwaysShowsDecimalSeparator { + return _lib._objc_msgSend_12(_id, _lib._sel_alwaysShowsDecimalSeparator1); + } + + set alwaysShowsDecimalSeparator(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAlwaysShowsDecimalSeparator_1, value); + } + + NSString? get currencyDecimalSeparator { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_currencyDecimalSeparator1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set currencyDecimalSeparator(NSString? value) { + return _lib._objc_msgSend_509(_id, _lib._sel_setCurrencyDecimalSeparator_1, + value?._id ?? ffi.nullptr); + } + + bool get usesGroupingSeparator { + return _lib._objc_msgSend_12(_id, _lib._sel_usesGroupingSeparator1); + } + + set usesGroupingSeparator(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setUsesGroupingSeparator_1, value); + } + + NSString? get groupingSeparator { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_groupingSeparator1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set groupingSeparator(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setGroupingSeparator_1, value?._id ?? ffi.nullptr); + } + + NSString? get zeroSymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_zeroSymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set zeroSymbol(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setZeroSymbol_1, value?._id ?? ffi.nullptr); + } + + NSDictionary? get textAttributesForZero { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_textAttributesForZero1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set textAttributesForZero(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, _lib._sel_setTextAttributesForZero_1, value?._id ?? ffi.nullptr); + } + + NSString? get nilSymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_nilSymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set nilSymbol(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setNilSymbol_1, value?._id ?? ffi.nullptr); + } + + NSDictionary? get textAttributesForNil { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_textAttributesForNil1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set textAttributesForNil(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, _lib._sel_setTextAttributesForNil_1, value?._id ?? ffi.nullptr); + } + + NSString? get notANumberSymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_notANumberSymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set notANumberSymbol(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setNotANumberSymbol_1, value?._id ?? ffi.nullptr); + } + + NSDictionary? get textAttributesForNotANumber { + final _ret = + _lib._objc_msgSend_170(_id, _lib._sel_textAttributesForNotANumber1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set textAttributesForNotANumber(NSDictionary? value) { + return _lib._objc_msgSend_171(_id, + _lib._sel_setTextAttributesForNotANumber_1, value?._id ?? ffi.nullptr); + } + + NSString? get positiveInfinitySymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_positiveInfinitySymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set positiveInfinitySymbol(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPositiveInfinitySymbol_1, value?._id ?? ffi.nullptr); + } + + NSDictionary? get textAttributesForPositiveInfinity { + final _ret = _lib._objc_msgSend_170( + _id, _lib._sel_textAttributesForPositiveInfinity1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set textAttributesForPositiveInfinity(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, + _lib._sel_setTextAttributesForPositiveInfinity_1, + value?._id ?? ffi.nullptr); + } + + NSString? get negativeInfinitySymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_negativeInfinitySymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set negativeInfinitySymbol(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setNegativeInfinitySymbol_1, value?._id ?? ffi.nullptr); + } + + NSDictionary? get textAttributesForNegativeInfinity { + final _ret = _lib._objc_msgSend_170( + _id, _lib._sel_textAttributesForNegativeInfinity1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set textAttributesForNegativeInfinity(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, + _lib._sel_setTextAttributesForNegativeInfinity_1, + value?._id ?? ffi.nullptr); + } + + NSString? get positivePrefix { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_positivePrefix1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set positivePrefix(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPositivePrefix_1, value?._id ?? ffi.nullptr); + } + + NSString? get positiveSuffix { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_positiveSuffix1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set positiveSuffix(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPositiveSuffix_1, value?._id ?? ffi.nullptr); + } + + NSString? get negativePrefix { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_negativePrefix1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set negativePrefix(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setNegativePrefix_1, value?._id ?? ffi.nullptr); + } + + NSString? get negativeSuffix { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_negativeSuffix1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set negativeSuffix(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setNegativeSuffix_1, value?._id ?? ffi.nullptr); + } + + NSString? get currencyCode { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_currencyCode1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set currencyCode(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setCurrencyCode_1, value?._id ?? ffi.nullptr); + } + + NSString? get currencySymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_currencySymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set currencySymbol(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setCurrencySymbol_1, value?._id ?? ffi.nullptr); + } + + NSString? get internationalCurrencySymbol { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_internationalCurrencySymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set internationalCurrencySymbol(NSString? value) { + return _lib._objc_msgSend_509(_id, + _lib._sel_setInternationalCurrencySymbol_1, value?._id ?? ffi.nullptr); + } + + NSString? get percentSymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_percentSymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set percentSymbol(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPercentSymbol_1, value?._id ?? ffi.nullptr); + } + + NSString? get perMillSymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_perMillSymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set perMillSymbol(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPerMillSymbol_1, value?._id ?? ffi.nullptr); + } + + NSString? get minusSign { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_minusSign1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set minusSign(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setMinusSign_1, value?._id ?? ffi.nullptr); + } + + NSString? get plusSign { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_plusSign1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set plusSign(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPlusSign_1, value?._id ?? ffi.nullptr); + } + + NSString? get exponentSymbol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_exponentSymbol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set exponentSymbol(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setExponentSymbol_1, value?._id ?? ffi.nullptr); + } + + int get groupingSize { + return _lib._objc_msgSend_10(_id, _lib._sel_groupingSize1); + } + + set groupingSize(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setGroupingSize_1, value); + } + + int get secondaryGroupingSize { + return _lib._objc_msgSend_10(_id, _lib._sel_secondaryGroupingSize1); + } + + set secondaryGroupingSize(int value) { + return _lib._objc_msgSend_483( + _id, _lib._sel_setSecondaryGroupingSize_1, value); + } + + NSNumber? get multiplier { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_multiplier1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + set multiplier(NSNumber? value) { + return _lib._objc_msgSend_654( + _id, _lib._sel_setMultiplier_1, value?._id ?? ffi.nullptr); + } + + int get formatWidth { + return _lib._objc_msgSend_10(_id, _lib._sel_formatWidth1); + } + + set formatWidth(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setFormatWidth_1, value); + } + + NSString? get paddingCharacter { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_paddingCharacter1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set paddingCharacter(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPaddingCharacter_1, value?._id ?? ffi.nullptr); + } + + int get paddingPosition { + return _lib._objc_msgSend_774(_id, _lib._sel_paddingPosition1); + } + + set paddingPosition(int value) { + return _lib._objc_msgSend_775(_id, _lib._sel_setPaddingPosition_1, value); + } + + int get roundingMode { + return _lib._objc_msgSend_776(_id, _lib._sel_roundingMode1); + } + + set roundingMode(int value) { + return _lib._objc_msgSend_777(_id, _lib._sel_setRoundingMode_1, value); + } + + NSNumber? get roundingIncrement { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_roundingIncrement1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + set roundingIncrement(NSNumber? value) { + return _lib._objc_msgSend_654( + _id, _lib._sel_setRoundingIncrement_1, value?._id ?? ffi.nullptr); + } + + int get minimumIntegerDigits { + return _lib._objc_msgSend_10(_id, _lib._sel_minimumIntegerDigits1); + } + + set minimumIntegerDigits(int value) { + return _lib._objc_msgSend_483( + _id, _lib._sel_setMinimumIntegerDigits_1, value); + } + + int get maximumIntegerDigits { + return _lib._objc_msgSend_10(_id, _lib._sel_maximumIntegerDigits1); + } + + set maximumIntegerDigits(int value) { + return _lib._objc_msgSend_483( + _id, _lib._sel_setMaximumIntegerDigits_1, value); + } + + int get minimumFractionDigits { + return _lib._objc_msgSend_10(_id, _lib._sel_minimumFractionDigits1); + } + + set minimumFractionDigits(int value) { + return _lib._objc_msgSend_483( + _id, _lib._sel_setMinimumFractionDigits_1, value); + } + + int get maximumFractionDigits { + return _lib._objc_msgSend_10(_id, _lib._sel_maximumFractionDigits1); + } + + set maximumFractionDigits(int value) { + return _lib._objc_msgSend_483( + _id, _lib._sel_setMaximumFractionDigits_1, value); + } + + NSNumber? get minimum { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_minimum1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + set minimum(NSNumber? value) { + return _lib._objc_msgSend_654( + _id, _lib._sel_setMinimum_1, value?._id ?? ffi.nullptr); + } + + NSNumber? get maximum { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_maximum1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); + } + + set maximum(NSNumber? value) { + return _lib._objc_msgSend_654( + _id, _lib._sel_setMaximum_1, value?._id ?? ffi.nullptr); + } + + NSString? get currencyGroupingSeparator { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_currencyGroupingSeparator1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set currencyGroupingSeparator(NSString? value) { + return _lib._objc_msgSend_509(_id, _lib._sel_setCurrencyGroupingSeparator_1, + value?._id ?? ffi.nullptr); + } + + bool get lenient { + return _lib._objc_msgSend_12(_id, _lib._sel_isLenient1); + } + + set lenient(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setLenient_1, value); + } + + bool get usesSignificantDigits { + return _lib._objc_msgSend_12(_id, _lib._sel_usesSignificantDigits1); + } + + set usesSignificantDigits(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setUsesSignificantDigits_1, value); + } + + int get minimumSignificantDigits { + return _lib._objc_msgSend_10(_id, _lib._sel_minimumSignificantDigits1); + } + + set minimumSignificantDigits(int value) { + return _lib._objc_msgSend_483( + _id, _lib._sel_setMinimumSignificantDigits_1, value); + } + + int get maximumSignificantDigits { + return _lib._objc_msgSend_10(_id, _lib._sel_maximumSignificantDigits1); + } + + set maximumSignificantDigits(int value) { + return _lib._objc_msgSend_483( + _id, _lib._sel_setMaximumSignificantDigits_1, value); + } + + bool get partialStringValidationEnabled { + return _lib._objc_msgSend_12( + _id, _lib._sel_isPartialStringValidationEnabled1); + } + + set partialStringValidationEnabled(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setPartialStringValidationEnabled_1, value); + } + + bool get hasThousandSeparators { + return _lib._objc_msgSend_12(_id, _lib._sel_hasThousandSeparators1); + } + + set hasThousandSeparators(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setHasThousandSeparators_1, value); + } + + NSString? get thousandSeparator { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_thousandSeparator1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set thousandSeparator(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setThousandSeparator_1, value?._id ?? ffi.nullptr); + } + + bool get localizesFormat { + return _lib._objc_msgSend_12(_id, _lib._sel_localizesFormat1); + } + + set localizesFormat(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setLocalizesFormat_1, value); + } + + NSString? get format { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_format1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set format(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setFormat_1, value?._id ?? ffi.nullptr); + } + + NSAttributedString? get attributedStringForZero { + final _ret = + _lib._objc_msgSend_709(_id, _lib._sel_attributedStringForZero1); + return _ret.address == 0 + ? null + : NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + set attributedStringForZero(NSAttributedString? value) { + return _lib._objc_msgSend_778( + _id, _lib._sel_setAttributedStringForZero_1, value?._id ?? ffi.nullptr); + } + + NSAttributedString? get attributedStringForNil { + final _ret = _lib._objc_msgSend_709(_id, _lib._sel_attributedStringForNil1); + return _ret.address == 0 + ? null + : NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + set attributedStringForNil(NSAttributedString? value) { + return _lib._objc_msgSend_778( + _id, _lib._sel_setAttributedStringForNil_1, value?._id ?? ffi.nullptr); + } + + NSAttributedString? get attributedStringForNotANumber { + final _ret = + _lib._objc_msgSend_709(_id, _lib._sel_attributedStringForNotANumber1); + return _ret.address == 0 + ? null + : NSAttributedString._(_ret, _lib, retain: true, release: true); + } + + set attributedStringForNotANumber(NSAttributedString? value) { + return _lib._objc_msgSend_778( + _id, + _lib._sel_setAttributedStringForNotANumber_1, + value?._id ?? ffi.nullptr); + } + + NSDecimalNumberHandler? get roundingBehavior { + final _ret = _lib._objc_msgSend_779(_id, _lib._sel_roundingBehavior1); + return _ret.address == 0 + ? null + : NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + } + + set roundingBehavior(NSDecimalNumberHandler? value) { + return _lib._objc_msgSend_781( + _id, _lib._sel_setRoundingBehavior_1, value?._id ?? ffi.nullptr); + } + + @override + NSNumberFormatter init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSNumberFormatter._(_ret, _lib, retain: true, release: true); + } + + static NSNumberFormatter new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSNumberFormatter1, _lib._sel_new1); + return NSNumberFormatter._(_ret, _lib, retain: false, release: true); + } + + static NSNumberFormatter allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSNumberFormatter1, _lib._sel_allocWithZone_1, zone); + return NSNumberFormatter._(_ret, _lib, retain: false, release: true); + } + + static NSNumberFormatter alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSNumberFormatter1, _lib._sel_alloc1); + return NSNumberFormatter._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSNumberFormatter1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSNumberFormatter1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSNumberFormatter1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSNumberFormatter1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSNumberFormatter1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSNumberFormatter1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSNumberFormatter1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSNumberFormatter1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSNumberFormatter1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSNumberFormatterStyle { + static const int NSNumberFormatterNoStyle = 0; + static const int NSNumberFormatterDecimalStyle = 1; + static const int NSNumberFormatterCurrencyStyle = 2; + static const int NSNumberFormatterPercentStyle = 3; + static const int NSNumberFormatterScientificStyle = 4; + static const int NSNumberFormatterSpellOutStyle = 5; + static const int NSNumberFormatterOrdinalStyle = 6; + static const int NSNumberFormatterCurrencyISOCodeStyle = 8; + static const int NSNumberFormatterCurrencyPluralStyle = 9; + static const int NSNumberFormatterCurrencyAccountingStyle = 10; +} + +abstract class NSNumberFormatterBehavior { + static const int NSNumberFormatterBehaviorDefault = 0; + static const int NSNumberFormatterBehavior10_0 = 1000; + static const int NSNumberFormatterBehavior10_4 = 1040; +} + +abstract class NSNumberFormatterPadPosition { + static const int NSNumberFormatterPadBeforePrefix = 0; + static const int NSNumberFormatterPadAfterPrefix = 1; + static const int NSNumberFormatterPadBeforeSuffix = 2; + static const int NSNumberFormatterPadAfterSuffix = 3; +} + +abstract class NSNumberFormatterRoundingMode { + static const int NSNumberFormatterRoundCeiling = 0; + static const int NSNumberFormatterRoundFloor = 1; + static const int NSNumberFormatterRoundDown = 2; + static const int NSNumberFormatterRoundUp = 3; + static const int NSNumberFormatterRoundHalfEven = 4; + static const int NSNumberFormatterRoundHalfDown = 5; + static const int NSNumberFormatterRoundHalfUp = 6; +} + +class NSDecimalNumberHandler extends NSObject { + NSDecimalNumberHandler._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSDecimalNumberHandler] that points to the same underlying object as [other]. + static NSDecimalNumberHandler castFrom(T other) { + return NSDecimalNumberHandler._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSDecimalNumberHandler] that wraps the given raw object pointer. + static NSDecimalNumberHandler castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSDecimalNumberHandler._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSDecimalNumberHandler]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSDecimalNumberHandler1); + } + + static NSDecimalNumberHandler? getDefaultDecimalNumberHandler( + SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_779(_lib._class_NSDecimalNumberHandler1, + _lib._sel_defaultDecimalNumberHandler1); + return _ret.address == 0 + ? null + : NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + } + + NSDecimalNumberHandler + initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_( + int roundingMode, + int scale, + bool exact, + bool overflow, + bool underflow, + bool divideByZero) { + final _ret = _lib._objc_msgSend_780( + _id, + _lib._sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1, + roundingMode, + scale, + exact, + overflow, + underflow, + divideByZero); + return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + } + + static NSDecimalNumberHandler + decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_( + SentryCocoa _lib, + int roundingMode, + int scale, + bool exact, + bool overflow, + bool underflow, + bool divideByZero) { + final _ret = _lib._objc_msgSend_780( + _lib._class_NSDecimalNumberHandler1, + _lib._sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1, + roundingMode, + scale, + exact, + overflow, + underflow, + divideByZero); + return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + } + + @override + NSDecimalNumberHandler init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); + } + + static NSDecimalNumberHandler new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSDecimalNumberHandler1, _lib._sel_new1); + return NSDecimalNumberHandler._(_ret, _lib, retain: false, release: true); + } + + static NSDecimalNumberHandler allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSDecimalNumberHandler1, _lib._sel_allocWithZone_1, zone); + return NSDecimalNumberHandler._(_ret, _lib, retain: false, release: true); + } + + static NSDecimalNumberHandler alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSDecimalNumberHandler1, _lib._sel_alloc1); + return NSDecimalNumberHandler._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSDecimalNumberHandler1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSDecimalNumberHandler1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSDecimalNumberHandler1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSDecimalNumberHandler1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSDecimalNumberHandler1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSDecimalNumberHandler1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSDecimalNumberHandler1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSDecimalNumberHandler1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSDecimalNumberHandler1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSRoundingMode { + static const int NSRoundPlain = 0; + static const int NSRoundDown = 1; + static const int NSRoundUp = 2; + static const int NSRoundBankers = 3; +} + +class NSScanner extends NSObject { + NSScanner._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSScanner] that points to the same underlying object as [other]. + static NSScanner castFrom(T other) { + return NSScanner._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSScanner] that wraps the given raw object pointer. + static NSScanner castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSScanner._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSScanner]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSScanner1); + } + + NSString? get string { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_string1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get scanLocation { + return _lib._objc_msgSend_10(_id, _lib._sel_scanLocation1); + } + + set scanLocation(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setScanLocation_1, value); + } + + NSCharacterSet? get charactersToBeSkipped { + final _ret = _lib._objc_msgSend_174(_id, _lib._sel_charactersToBeSkipped1); + return _ret.address == 0 + ? null + : NSCharacterSet._(_ret, _lib, retain: true, release: true); + } + + set charactersToBeSkipped(NSCharacterSet? value) { + return _lib._objc_msgSend_782( + _id, _lib._sel_setCharactersToBeSkipped_1, value?._id ?? ffi.nullptr); + } + + bool get caseSensitive { + return _lib._objc_msgSend_12(_id, _lib._sel_caseSensitive1); + } + + set caseSensitive(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setCaseSensitive_1, value); + } + + NSObject get locale { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_locale1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set locale(NSObject value) { + return _lib._objc_msgSend_387(_id, _lib._sel_setLocale_1, value._id); + } + + NSScanner initWithString_(NSString? string) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithString_1, string?._id ?? ffi.nullptr); + return NSScanner._(_ret, _lib, retain: true, release: true); + } + + bool scanInt_(ffi.Pointer result) { + return _lib._objc_msgSend_783(_id, _lib._sel_scanInt_1, result); + } + + bool scanInteger_(ffi.Pointer result) { + return _lib._objc_msgSend_784(_id, _lib._sel_scanInteger_1, result); + } + + bool scanLongLong_(ffi.Pointer result) { + return _lib._objc_msgSend_785(_id, _lib._sel_scanLongLong_1, result); + } + + bool scanUnsignedLongLong_(ffi.Pointer result) { + return _lib._objc_msgSend_786( + _id, _lib._sel_scanUnsignedLongLong_1, result); + } + + bool scanFloat_(ffi.Pointer result) { + return _lib._objc_msgSend_787(_id, _lib._sel_scanFloat_1, result); + } + + bool scanDouble_(ffi.Pointer result) { + return _lib._objc_msgSend_788(_id, _lib._sel_scanDouble_1, result); + } + + bool scanHexInt_(ffi.Pointer result) { + return _lib._objc_msgSend_789(_id, _lib._sel_scanHexInt_1, result); + } + + bool scanHexLongLong_(ffi.Pointer result) { + return _lib._objc_msgSend_786(_id, _lib._sel_scanHexLongLong_1, result); + } + + bool scanHexFloat_(ffi.Pointer result) { + return _lib._objc_msgSend_787(_id, _lib._sel_scanHexFloat_1, result); + } + + bool scanHexDouble_(ffi.Pointer result) { + return _lib._objc_msgSend_788(_id, _lib._sel_scanHexDouble_1, result); + } + + bool scanString_intoString_( + NSString? string, ffi.Pointer> result) { + return _lib._objc_msgSend_790(_id, _lib._sel_scanString_intoString_1, + string?._id ?? ffi.nullptr, result); + } + + bool scanCharactersFromSet_intoString_( + NSCharacterSet? set, ffi.Pointer> result) { + return _lib._objc_msgSend_791( + _id, + _lib._sel_scanCharactersFromSet_intoString_1, + set?._id ?? ffi.nullptr, + result); + } + + bool scanUpToString_intoString_( + NSString? string, ffi.Pointer> result) { + return _lib._objc_msgSend_790(_id, _lib._sel_scanUpToString_intoString_1, + string?._id ?? ffi.nullptr, result); + } + + bool scanUpToCharactersFromSet_intoString_( + NSCharacterSet? set, ffi.Pointer> result) { + return _lib._objc_msgSend_791( + _id, + _lib._sel_scanUpToCharactersFromSet_intoString_1, + set?._id ?? ffi.nullptr, + result); + } + + bool get atEnd { + return _lib._objc_msgSend_12(_id, _lib._sel_isAtEnd1); + } + + static NSScanner scannerWithString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSScanner1, + _lib._sel_scannerWithString_1, string?._id ?? ffi.nullptr); + return NSScanner._(_ret, _lib, retain: true, release: true); + } + + static NSObject localizedScannerWithString_( + SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSScanner1, + _lib._sel_localizedScannerWithString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool scanDecimal_(ffi.Pointer dcm) { + return _lib._objc_msgSend_792(_id, _lib._sel_scanDecimal_1, dcm); + } + + @override + NSScanner init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSScanner._(_ret, _lib, retain: true, release: true); + } + + static NSScanner new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSScanner1, _lib._sel_new1); + return NSScanner._(_ret, _lib, retain: false, release: true); + } + + static NSScanner allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSScanner1, _lib._sel_allocWithZone_1, zone); + return NSScanner._(_ret, _lib, retain: false, release: true); + } + + static NSScanner alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSScanner1, _lib._sel_alloc1); + return NSScanner._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSScanner1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSScanner1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSScanner1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSScanner1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSScanner1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSScanner1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSScanner1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSScanner1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSScanner1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSDecimal extends ffi.Opaque {} + +class NSException extends NSObject { + NSException._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSException] that points to the same underlying object as [other]. + static NSException castFrom(T other) { + return NSException._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSException] that wraps the given raw object pointer. + static NSException castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSException._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSException]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSException1); + } + + static NSException exceptionWithName_reason_userInfo_(SentryCocoa _lib, + NSString name, NSString? reason, NSDictionary? userInfo) { + final _ret = _lib._objc_msgSend_793( + _lib._class_NSException1, + _lib._sel_exceptionWithName_reason_userInfo_1, + name._id, + reason?._id ?? ffi.nullptr, + userInfo?._id ?? ffi.nullptr); + return NSException._(_ret, _lib, retain: true, release: true); + } + + NSException initWithName_reason_userInfo_( + NSString aName, NSString? aReason, NSDictionary? aUserInfo) { + final _ret = _lib._objc_msgSend_583( + _id, + _lib._sel_initWithName_reason_userInfo_1, + aName._id, + aReason?._id ?? ffi.nullptr, + aUserInfo?._id ?? ffi.nullptr); + return NSException._(_ret, _lib, retain: true, release: true); + } + + NSString get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get reason { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_reason1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get userInfo { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_userInfo1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSArray? get callStackReturnAddresses { + final _ret = + _lib._objc_msgSend_79(_id, _lib._sel_callStackReturnAddresses1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get callStackSymbols { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_callStackSymbols1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + void raise() { + _lib._objc_msgSend_1(_id, _lib._sel_raise1); + } + + static void raise_format_(SentryCocoa _lib, NSString name, NSString? format) { + _lib._objc_msgSend_515(_lib._class_NSException1, _lib._sel_raise_format_1, + name._id, format?._id ?? ffi.nullptr); + } + + static void raise_format_arguments_(SentryCocoa _lib, NSString name, + NSString? format, ffi.Pointer argList) { + _lib._objc_msgSend_794( + _lib._class_NSException1, + _lib._sel_raise_format_arguments_1, + name._id, + format?._id ?? ffi.nullptr, + argList); + } + + @override + NSException init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSException._(_ret, _lib, retain: true, release: true); + } + + static NSException new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSException1, _lib._sel_new1); + return NSException._(_ret, _lib, retain: false, release: true); + } + + static NSException allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSException1, _lib._sel_allocWithZone_1, zone); + return NSException._(_ret, _lib, retain: false, release: true); + } + + static NSException alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSException1, _lib._sel_alloc1); + return NSException._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSException1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSException1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSException1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSException1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSException1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSException1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSException1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSException1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSException1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSFileHandle extends NSObject { + NSFileHandle._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSFileHandle] that points to the same underlying object as [other]. + static NSFileHandle castFrom(T other) { + return NSFileHandle._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSFileHandle] that wraps the given raw object pointer. + static NSFileHandle castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSFileHandle._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSFileHandle]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFileHandle1); + } + + NSData? get availableData { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_availableData1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + NSFileHandle initWithFileDescriptor_closeOnDealloc_(int fd, bool closeopt) { + final _ret = _lib._objc_msgSend_795( + _id, _lib._sel_initWithFileDescriptor_closeOnDealloc_1, fd, closeopt); + return NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + NSFileHandle initWithCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, coder?._id ?? ffi.nullptr); + return NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + NSData readDataToEndOfFileAndReturnError_( + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_796( + _id, _lib._sel_readDataToEndOfFileAndReturnError_1, error); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData readDataUpToLength_error_( + int length, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_797( + _id, _lib._sel_readDataUpToLength_error_1, length, error); + return NSData._(_ret, _lib, retain: true, release: true); + } + + bool writeData_error_( + NSData? data, ffi.Pointer> error) { + return _lib._objc_msgSend_798( + _id, _lib._sel_writeData_error_1, data?._id ?? ffi.nullptr, error); + } + + bool getOffset_error_(ffi.Pointer offsetInFile, + ffi.Pointer> error) { + return _lib._objc_msgSend_799( + _id, _lib._sel_getOffset_error_1, offsetInFile, error); + } + + bool seekToEndReturningOffset_error_( + ffi.Pointer offsetInFile, + ffi.Pointer> error) { + return _lib._objc_msgSend_799( + _id, _lib._sel_seekToEndReturningOffset_error_1, offsetInFile, error); + } + + bool seekToOffset_error_( + int offset, ffi.Pointer> error) { + return _lib._objc_msgSend_800( + _id, _lib._sel_seekToOffset_error_1, offset, error); + } + + bool truncateAtOffset_error_( + int offset, ffi.Pointer> error) { + return _lib._objc_msgSend_800( + _id, _lib._sel_truncateAtOffset_error_1, offset, error); + } + + bool synchronizeAndReturnError_(ffi.Pointer> error) { + return _lib._objc_msgSend_225( + _id, _lib._sel_synchronizeAndReturnError_1, error); + } + + bool closeAndReturnError_(ffi.Pointer> error) { + return _lib._objc_msgSend_225(_id, _lib._sel_closeAndReturnError_1, error); + } + + static NSFileHandle? getFileHandleWithStandardInput(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_801( + _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardInput1); + return _ret.address == 0 + ? null + : NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + static NSFileHandle? getFileHandleWithStandardOutput(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_801( + _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardOutput1); + return _ret.address == 0 + ? null + : NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + static NSFileHandle? getFileHandleWithStandardError(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_801( + _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardError1); + return _ret.address == 0 + ? null + : NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + static NSFileHandle? getFileHandleWithNullDevice(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_801( + _lib._class_NSFileHandle1, _lib._sel_fileHandleWithNullDevice1); + return _ret.address == 0 + ? null + : NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + static NSFileHandle fileHandleForReadingAtPath_( + SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSFileHandle1, + _lib._sel_fileHandleForReadingAtPath_1, path?._id ?? ffi.nullptr); + return NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + static NSFileHandle fileHandleForWritingAtPath_( + SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSFileHandle1, + _lib._sel_fileHandleForWritingAtPath_1, path?._id ?? ffi.nullptr); + return NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + static NSFileHandle fileHandleForUpdatingAtPath_( + SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSFileHandle1, + _lib._sel_fileHandleForUpdatingAtPath_1, path?._id ?? ffi.nullptr); + return NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + static NSFileHandle fileHandleForReadingFromURL_error_(SentryCocoa _lib, + NSURL? url, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_802( + _lib._class_NSFileHandle1, + _lib._sel_fileHandleForReadingFromURL_error_1, + url?._id ?? ffi.nullptr, + error); + return NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + static NSFileHandle fileHandleForWritingToURL_error_(SentryCocoa _lib, + NSURL? url, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_802( + _lib._class_NSFileHandle1, + _lib._sel_fileHandleForWritingToURL_error_1, + url?._id ?? ffi.nullptr, + error); + return NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + static NSFileHandle fileHandleForUpdatingURL_error_(SentryCocoa _lib, + NSURL? url, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_802( + _lib._class_NSFileHandle1, + _lib._sel_fileHandleForUpdatingURL_error_1, + url?._id ?? ffi.nullptr, + error); + return NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + void readInBackgroundAndNotifyForModes_(NSArray? modes) { + _lib._objc_msgSend_441(_id, _lib._sel_readInBackgroundAndNotifyForModes_1, + modes?._id ?? ffi.nullptr); + } + + void readInBackgroundAndNotify() { + _lib._objc_msgSend_1(_id, _lib._sel_readInBackgroundAndNotify1); + } + + void readToEndOfFileInBackgroundAndNotifyForModes_(NSArray? modes) { + _lib._objc_msgSend_441( + _id, + _lib._sel_readToEndOfFileInBackgroundAndNotifyForModes_1, + modes?._id ?? ffi.nullptr); + } + + void readToEndOfFileInBackgroundAndNotify() { + _lib._objc_msgSend_1(_id, _lib._sel_readToEndOfFileInBackgroundAndNotify1); + } + + void acceptConnectionInBackgroundAndNotifyForModes_(NSArray? modes) { + _lib._objc_msgSend_441( + _id, + _lib._sel_acceptConnectionInBackgroundAndNotifyForModes_1, + modes?._id ?? ffi.nullptr); + } + + void acceptConnectionInBackgroundAndNotify() { + _lib._objc_msgSend_1(_id, _lib._sel_acceptConnectionInBackgroundAndNotify1); + } + + void waitForDataInBackgroundAndNotifyForModes_(NSArray? modes) { + _lib._objc_msgSend_441( + _id, + _lib._sel_waitForDataInBackgroundAndNotifyForModes_1, + modes?._id ?? ffi.nullptr); + } + + void waitForDataInBackgroundAndNotify() { + _lib._objc_msgSend_1(_id, _lib._sel_waitForDataInBackgroundAndNotify1); + } + + ObjCBlock_ffiVoid_NSFileHandle get readabilityHandler { + final _ret = _lib._objc_msgSend_803(_id, _lib._sel_readabilityHandler1); + return ObjCBlock_ffiVoid_NSFileHandle._(_ret, _lib); + } + + set readabilityHandler(ObjCBlock_ffiVoid_NSFileHandle value) { + return _lib._objc_msgSend_804( + _id, _lib._sel_setReadabilityHandler_1, value._id); + } + + ObjCBlock_ffiVoid_NSFileHandle get writeabilityHandler { + final _ret = _lib._objc_msgSend_803(_id, _lib._sel_writeabilityHandler1); + return ObjCBlock_ffiVoid_NSFileHandle._(_ret, _lib); + } + + set writeabilityHandler(ObjCBlock_ffiVoid_NSFileHandle value) { + return _lib._objc_msgSend_804( + _id, _lib._sel_setWriteabilityHandler_1, value._id); + } + + NSFileHandle initWithFileDescriptor_(int fd) { + final _ret = + _lib._objc_msgSend_805(_id, _lib._sel_initWithFileDescriptor_1, fd); + return NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + int get fileDescriptor { + return _lib._objc_msgSend_219(_id, _lib._sel_fileDescriptor1); + } + + NSData readDataToEndOfFile() { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_readDataToEndOfFile1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSData readDataOfLength_(int length) { + final _ret = + _lib._objc_msgSend_330(_id, _lib._sel_readDataOfLength_1, length); + return NSData._(_ret, _lib, retain: true, release: true); + } + + void writeData_(NSData? data) { + _lib._objc_msgSend_263( + _id, _lib._sel_writeData_1, data?._id ?? ffi.nullptr); + } + + int get offsetInFile { + return _lib._objc_msgSend_154(_id, _lib._sel_offsetInFile1); + } + + int seekToEndOfFile() { + return _lib._objc_msgSend_154(_id, _lib._sel_seekToEndOfFile1); + } + + void seekToFileOffset_(int offset) { + _lib._objc_msgSend_806(_id, _lib._sel_seekToFileOffset_1, offset); + } + + void truncateFileAtOffset_(int offset) { + _lib._objc_msgSend_806(_id, _lib._sel_truncateFileAtOffset_1, offset); + } + + void synchronizeFile() { + _lib._objc_msgSend_1(_id, _lib._sel_synchronizeFile1); + } + + void closeFile() { + _lib._objc_msgSend_1(_id, _lib._sel_closeFile1); + } + + @override + NSFileHandle init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSFileHandle._(_ret, _lib, retain: true, release: true); + } + + static NSFileHandle new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSFileHandle1, _lib._sel_new1); + return NSFileHandle._(_ret, _lib, retain: false, release: true); + } + + static NSFileHandle allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSFileHandle1, _lib._sel_allocWithZone_1, zone); + return NSFileHandle._(_ret, _lib, retain: false, release: true); + } + + static NSFileHandle alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSFileHandle1, _lib._sel_alloc1); + return NSFileHandle._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSFileHandle1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSFileHandle1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSFileHandle1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSFileHandle1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSFileHandle1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSFileHandle1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSFileHandle1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSFileHandle1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSFileHandle1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +void _ObjCBlock_ffiVoid_NSFileHandle_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSFileHandle_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSFileHandle_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSFileHandle_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSFileHandle_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSFileHandle_closureRegistry[block + .ref.target.address] as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSFileHandle extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSFileHandle._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSFileHandle.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSFileHandle_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSFileHandle.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSFileHandle_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSFileHandle_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +class NSHTTPCookieStorage extends NSObject { + NSHTTPCookieStorage._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSHTTPCookieStorage] that points to the same underlying object as [other]. + static NSHTTPCookieStorage castFrom(T other) { + return NSHTTPCookieStorage._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSHTTPCookieStorage] that wraps the given raw object pointer. + static NSHTTPCookieStorage castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSHTTPCookieStorage._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSHTTPCookieStorage]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSHTTPCookieStorage1); + } + + static NSHTTPCookieStorage? getSharedHTTPCookieStorage(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_807( + _lib._class_NSHTTPCookieStorage1, _lib._sel_sharedHTTPCookieStorage1); + return _ret.address == 0 + ? null + : NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + } + + static NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier_( + SentryCocoa _lib, NSString? identifier) { + final _ret = _lib._objc_msgSend_808( + _lib._class_NSHTTPCookieStorage1, + _lib._sel_sharedCookieStorageForGroupContainerIdentifier_1, + identifier?._id ?? ffi.nullptr); + return NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + } + + NSArray? get cookies { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_cookies1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + void setCookie_(NSHTTPCookie? cookie) { + _lib._objc_msgSend_811( + _id, _lib._sel_setCookie_1, cookie?._id ?? ffi.nullptr); + } + + void deleteCookie_(NSHTTPCookie? cookie) { + _lib._objc_msgSend_811( + _id, _lib._sel_deleteCookie_1, cookie?._id ?? ffi.nullptr); + } + + void removeCookiesSinceDate_(NSDate? date) { + _lib._objc_msgSend_504( + _id, _lib._sel_removeCookiesSinceDate_1, date?._id ?? ffi.nullptr); + } + + NSArray cookiesForURL_(NSURL? URL) { + final _ret = _lib._objc_msgSend_124( + _id, _lib._sel_cookiesForURL_1, URL?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + void setCookies_forURL_mainDocumentURL_( + NSArray? cookies, NSURL? URL, NSURL? mainDocumentURL) { + _lib._objc_msgSend_812( + _id, + _lib._sel_setCookies_forURL_mainDocumentURL_1, + cookies?._id ?? ffi.nullptr, + URL?._id ?? ffi.nullptr, + mainDocumentURL?._id ?? ffi.nullptr); + } + + int get cookieAcceptPolicy { + return _lib._objc_msgSend_813(_id, _lib._sel_cookieAcceptPolicy1); + } + + set cookieAcceptPolicy(int value) { + return _lib._objc_msgSend_814( + _id, _lib._sel_setCookieAcceptPolicy_1, value); + } + + NSArray sortedCookiesUsingDescriptors_(NSArray? sortOrder) { + final _ret = _lib._objc_msgSend_63( + _id, + _lib._sel_sortedCookiesUsingDescriptors_1, + sortOrder?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + void storeCookies_forTask_(NSArray? cookies, NSURLSessionTask? task) { + _lib._objc_msgSend_834(_id, _lib._sel_storeCookies_forTask_1, + cookies?._id ?? ffi.nullptr, task?._id ?? ffi.nullptr); + } + + void getCookiesForTask_completionHandler_( + NSURLSessionTask? task, ObjCBlock_ffiVoid_NSArray completionHandler) { + _lib._objc_msgSend_835(_id, _lib._sel_getCookiesForTask_completionHandler_1, + task?._id ?? ffi.nullptr, completionHandler._id); + } + + @override + NSHTTPCookieStorage init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + } + + static NSHTTPCookieStorage new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSHTTPCookieStorage1, _lib._sel_new1); + return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + } + + static NSHTTPCookieStorage allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSHTTPCookieStorage1, _lib._sel_allocWithZone_1, zone); + return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + } + + static NSHTTPCookieStorage alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSHTTPCookieStorage1, _lib._sel_alloc1); + return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSHTTPCookieStorage1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSHTTPCookieStorage1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSHTTPCookieStorage1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSHTTPCookieStorage1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSHTTPCookieStorage1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSHTTPCookieStorage1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSHTTPCookieStorage1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSHTTPCookieStorage1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSHTTPCookieStorage1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSHTTPCookie extends NSObject { + NSHTTPCookie._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSHTTPCookie] that points to the same underlying object as [other]. + static NSHTTPCookie castFrom(T other) { + return NSHTTPCookie._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSHTTPCookie] that wraps the given raw object pointer. + static NSHTTPCookie castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSHTTPCookie._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSHTTPCookie]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSHTTPCookie1); + } + + NSHTTPCookie initWithProperties_(NSDictionary? properties) { + final _ret = _lib._objc_msgSend_149( + _id, _lib._sel_initWithProperties_1, properties?._id ?? ffi.nullptr); + return NSHTTPCookie._(_ret, _lib, retain: true, release: true); + } + + static NSHTTPCookie cookieWithProperties_( + SentryCocoa _lib, NSDictionary? properties) { + final _ret = _lib._objc_msgSend_809(_lib._class_NSHTTPCookie1, + _lib._sel_cookieWithProperties_1, properties?._id ?? ffi.nullptr); + return NSHTTPCookie._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary requestHeaderFieldsWithCookies_( + SentryCocoa _lib, NSArray? cookies) { + final _ret = _lib._objc_msgSend_475( + _lib._class_NSHTTPCookie1, + _lib._sel_requestHeaderFieldsWithCookies_1, + cookies?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSArray cookiesWithResponseHeaderFields_forURL_( + SentryCocoa _lib, NSDictionary? headerFields, NSURL? URL) { + final _ret = _lib._objc_msgSend_810( + _lib._class_NSHTTPCookie1, + _lib._sel_cookiesWithResponseHeaderFields_forURL_1, + headerFields?._id ?? ffi.nullptr, + URL?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get properties { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_properties1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + int get version { + return _lib._objc_msgSend_10(_id, _lib._sel_version1); + } + + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get value { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_value1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSDate? get expiresDate { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_expiresDate1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + bool get sessionOnly { + return _lib._objc_msgSend_12(_id, _lib._sel_isSessionOnly1); + } + + NSString? get domain { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_domain1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get path { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_path1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + bool get secure { + return _lib._objc_msgSend_12(_id, _lib._sel_isSecure1); + } + + bool get HTTPOnly { + return _lib._objc_msgSend_12(_id, _lib._sel_isHTTPOnly1); + } + + NSString? get comment { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_comment1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSURL? get commentURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_commentURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSArray? get portList { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_portList1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString get sameSitePolicy { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_sameSitePolicy1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + @override + NSHTTPCookie init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSHTTPCookie._(_ret, _lib, retain: true, release: true); + } + + static NSHTTPCookie new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSHTTPCookie1, _lib._sel_new1); + return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + } + + static NSHTTPCookie allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSHTTPCookie1, _lib._sel_allocWithZone_1, zone); + return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + } + + static NSHTTPCookie alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSHTTPCookie1, _lib._sel_alloc1); + return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSHTTPCookie1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSHTTPCookie1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSHTTPCookie1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSHTTPCookie1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSHTTPCookie1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSHTTPCookie1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSHTTPCookie1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSHTTPCookie1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSHTTPCookie1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSHTTPCookieAcceptPolicy { + static const int NSHTTPCookieAcceptPolicyAlways = 0; + static const int NSHTTPCookieAcceptPolicyNever = 1; + static const int NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain = 2; +} + +class NSURLSessionTask extends NSObject { + NSURLSessionTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSessionTask] that points to the same underlying object as [other]. + static NSURLSessionTask castFrom(T other) { + return NSURLSessionTask._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLSessionTask] that wraps the given raw object pointer. + static NSURLSessionTask castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionTask._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLSessionTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionTask1); + } + + int get taskIdentifier { + return _lib._objc_msgSend_10(_id, _lib._sel_taskIdentifier1); + } + + NSURLRequest? get originalRequest { + final _ret = _lib._objc_msgSend_829(_id, _lib._sel_originalRequest1); + return _ret.address == 0 + ? null + : NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + NSURLRequest? get currentRequest { + final _ret = _lib._objc_msgSend_829(_id, _lib._sel_currentRequest1); + return _ret.address == 0 + ? null + : NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + NSURLResponse? get response { + final _ret = _lib._objc_msgSend_831(_id, _lib._sel_response1); + return _ret.address == 0 + ? null + : NSURLResponse._(_ret, _lib, retain: true, release: true); + } + + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + set delegate(NSObject? value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + } + + NSProgress? get progress { + final _ret = _lib._objc_msgSend_643(_id, _lib._sel_progress1); + return _ret.address == 0 + ? null + : NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSDate? get earliestBeginDate { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_earliestBeginDate1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + set earliestBeginDate(NSDate? value) { + return _lib._objc_msgSend_525( + _id, _lib._sel_setEarliestBeginDate_1, value?._id ?? ffi.nullptr); + } + + int get countOfBytesClientExpectsToSend { + return _lib._objc_msgSend_650( + _id, _lib._sel_countOfBytesClientExpectsToSend1); + } + + set countOfBytesClientExpectsToSend(int value) { + return _lib._objc_msgSend_651( + _id, _lib._sel_setCountOfBytesClientExpectsToSend_1, value); + } + + int get countOfBytesClientExpectsToReceive { + return _lib._objc_msgSend_650( + _id, _lib._sel_countOfBytesClientExpectsToReceive1); + } + + set countOfBytesClientExpectsToReceive(int value) { + return _lib._objc_msgSend_651( + _id, _lib._sel_setCountOfBytesClientExpectsToReceive_1, value); + } + + int get countOfBytesSent { + return _lib._objc_msgSend_650(_id, _lib._sel_countOfBytesSent1); + } + + int get countOfBytesReceived { + return _lib._objc_msgSend_650(_id, _lib._sel_countOfBytesReceived1); + } + + int get countOfBytesExpectedToSend { + return _lib._objc_msgSend_650(_id, _lib._sel_countOfBytesExpectedToSend1); + } + + int get countOfBytesExpectedToReceive { + return _lib._objc_msgSend_650( + _id, _lib._sel_countOfBytesExpectedToReceive1); + } + + NSString? get taskDescription { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_taskDescription1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set taskDescription(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setTaskDescription_1, value?._id ?? ffi.nullptr); + } + + void cancel() { + _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + } + + int get state { + return _lib._objc_msgSend_832(_id, _lib._sel_state1); + } + + NSError? get error { + final _ret = _lib._objc_msgSend_298(_id, _lib._sel_error1); + return _ret.address == 0 + ? null + : NSError._(_ret, _lib, retain: true, release: true); + } + + void suspend() { + _lib._objc_msgSend_1(_id, _lib._sel_suspend1); + } + + void resume() { + _lib._objc_msgSend_1(_id, _lib._sel_resume1); + } + + double get priority { + return _lib._objc_msgSend_221(_id, _lib._sel_priority1); + } + + set priority(double value) { + return _lib._objc_msgSend_833(_id, _lib._sel_setPriority_1, value); + } + + bool get prefersIncrementalDelivery { + return _lib._objc_msgSend_12(_id, _lib._sel_prefersIncrementalDelivery1); + } + + set prefersIncrementalDelivery(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setPrefersIncrementalDelivery_1, value); + } + + @override + NSURLSessionTask init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLSessionTask._(_ret, _lib, retain: true, release: true); + } + + static NSURLSessionTask new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLSessionTask1, _lib._sel_new1); + return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + } + + static NSURLSessionTask allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLSessionTask1, _lib._sel_allocWithZone_1, zone); + return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + } + + static NSURLSessionTask alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLSessionTask1, _lib._sel_alloc1); + return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLSessionTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLSessionTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionTask1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLSessionTask1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSessionTask1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSessionTask1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSessionTask1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionTask1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionTask1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSURLRequest extends NSObject { + NSURLRequest._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLRequest] that points to the same underlying object as [other]. + static NSURLRequest castFrom(T other) { + return NSURLRequest._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSURLRequest] that wraps the given raw object pointer. + static NSURLRequest castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLRequest._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLRequest]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLRequest1); + } + + static NSURLRequest requestWithURL_(SentryCocoa _lib, NSURL? URL) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSURLRequest1, + _lib._sel_requestWithURL_1, URL?._id ?? ffi.nullptr); + return NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + static bool getSupportsSecureCoding(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLRequest1, _lib._sel_supportsSecureCoding1); + } + + static NSURLRequest requestWithURL_cachePolicy_timeoutInterval_( + SentryCocoa _lib, NSURL? URL, int cachePolicy, double timeoutInterval) { + final _ret = _lib._objc_msgSend_815( + _lib._class_NSURLRequest1, + _lib._sel_requestWithURL_cachePolicy_timeoutInterval_1, + URL?._id ?? ffi.nullptr, + cachePolicy, + timeoutInterval); + return NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + NSURLRequest initWithURL_(NSURL? URL) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithURL_1, URL?._id ?? ffi.nullptr); + return NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + NSURLRequest initWithURL_cachePolicy_timeoutInterval_( + NSURL? URL, int cachePolicy, double timeoutInterval) { + final _ret = _lib._objc_msgSend_815( + _id, + _lib._sel_initWithURL_cachePolicy_timeoutInterval_1, + URL?._id ?? ffi.nullptr, + cachePolicy, + timeoutInterval); + return NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + NSURL? get URL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + int get cachePolicy { + return _lib._objc_msgSend_816(_id, _lib._sel_cachePolicy1); + } + + double get timeoutInterval { + return _lib._objc_msgSend_155(_id, _lib._sel_timeoutInterval1); + } + + NSURL? get mainDocumentURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_mainDocumentURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + int get networkServiceType { + return _lib._objc_msgSend_817(_id, _lib._sel_networkServiceType1); + } + + bool get allowsCellularAccess { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); + } + + bool get allowsExpensiveNetworkAccess { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); + } + + bool get allowsConstrainedNetworkAccess { + return _lib._objc_msgSend_12( + _id, _lib._sel_allowsConstrainedNetworkAccess1); + } + + bool get assumesHTTP3Capable { + return _lib._objc_msgSend_12(_id, _lib._sel_assumesHTTP3Capable1); + } + + int get attribution { + return _lib._objc_msgSend_818(_id, _lib._sel_attribution1); + } + + bool get requiresDNSSECValidation { + return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); + } + + NSString? get HTTPMethod { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_HTTPMethod1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get allHTTPHeaderFields { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_allHTTPHeaderFields1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSString valueForHTTPHeaderField_(NSString? field) { + final _ret = _lib._objc_msgSend_64( + _id, _lib._sel_valueForHTTPHeaderField_1, field?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSData? get HTTPBody { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_HTTPBody1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + NSInputStream? get HTTPBodyStream { + final _ret = _lib._objc_msgSend_828(_id, _lib._sel_HTTPBodyStream1); + return _ret.address == 0 + ? null + : NSInputStream._(_ret, _lib, retain: true, release: true); + } + + bool get HTTPShouldHandleCookies { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldHandleCookies1); + } + + bool get HTTPShouldUsePipelining { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); + } + + @override + NSURLRequest init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + static NSURLRequest new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLRequest1, _lib._sel_new1); + return NSURLRequest._(_ret, _lib, retain: false, release: true); + } + + static NSURLRequest allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLRequest1, _lib._sel_allocWithZone_1, zone); + return NSURLRequest._(_ret, _lib, retain: false, release: true); + } + + static NSURLRequest alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLRequest1, _lib._sel_alloc1); + return NSURLRequest._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLRequest1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLRequest1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLRequest1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLRequest1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLRequest1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLRequest1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLRequest1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSURLRequest1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLRequest1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSURLRequestCachePolicy { + static const int NSURLRequestUseProtocolCachePolicy = 0; + static const int NSURLRequestReloadIgnoringLocalCacheData = 1; + static const int NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4; + static const int NSURLRequestReloadIgnoringCacheData = 1; + static const int NSURLRequestReturnCacheDataElseLoad = 2; + static const int NSURLRequestReturnCacheDataDontLoad = 3; + static const int NSURLRequestReloadRevalidatingCacheData = 5; +} + +abstract class NSURLRequestNetworkServiceType { + static const int NSURLNetworkServiceTypeDefault = 0; + static const int NSURLNetworkServiceTypeVoIP = 1; + static const int NSURLNetworkServiceTypeVideo = 2; + static const int NSURLNetworkServiceTypeBackground = 3; + static const int NSURLNetworkServiceTypeVoice = 4; + static const int NSURLNetworkServiceTypeResponsiveData = 6; + static const int NSURLNetworkServiceTypeAVStreaming = 8; + static const int NSURLNetworkServiceTypeResponsiveAV = 9; + static const int NSURLNetworkServiceTypeCallSignaling = 11; +} + +abstract class NSURLRequestAttribution { + static const int NSURLRequestAttributionDeveloper = 0; + static const int NSURLRequestAttributionUser = 1; +} + +class NSInputStream extends NSStream { + NSInputStream._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSInputStream] that points to the same underlying object as [other]. + static NSInputStream castFrom(T other) { + return NSInputStream._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSInputStream] that wraps the given raw object pointer. + static NSInputStream castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSInputStream._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSInputStream]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSInputStream1); + } + + int read_maxLength_(ffi.Pointer buffer, int len) { + return _lib._objc_msgSend_820(_id, _lib._sel_read_maxLength_1, buffer, len); + } + + bool getBuffer_length_(ffi.Pointer> buffer, + ffi.Pointer len) { + return _lib._objc_msgSend_827( + _id, _lib._sel_getBuffer_length_1, buffer, len); + } + + bool get hasBytesAvailable { + return _lib._objc_msgSend_12(_id, _lib._sel_hasBytesAvailable1); + } + + NSInputStream initWithData_(NSData? data) { + final _ret = _lib._objc_msgSend_257( + _id, _lib._sel_initWithData_1, data?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); + } + + NSInputStream initWithURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithURL_1, url?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); + } + + NSInputStream initWithFileAtPath_(NSString? path) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithFileAtPath_1, path?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); + } + + static NSInputStream inputStreamWithData_(SentryCocoa _lib, NSData? data) { + final _ret = _lib._objc_msgSend_257(_lib._class_NSInputStream1, + _lib._sel_inputStreamWithData_1, data?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); + } + + static NSInputStream inputStreamWithFileAtPath_( + SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSInputStream1, + _lib._sel_inputStreamWithFileAtPath_1, path?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); + } + + static NSInputStream inputStreamWithURL_(SentryCocoa _lib, NSURL? url) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSInputStream1, + _lib._sel_inputStreamWithURL_1, url?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); + } + + static void getStreamsToHostWithName_port_inputStream_outputStream_( + SentryCocoa _lib, + NSString? hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_822( + _lib._class_NSInputStream1, + _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, + hostname?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); + } + + static void getStreamsToHost_port_inputStream_outputStream_( + SentryCocoa _lib, + NSHost? host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_825( + _lib._class_NSInputStream1, + _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, + host?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); + } + + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + SentryCocoa _lib, + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_826( + _lib._class_NSInputStream1, + _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, + bufferSize, + inputStream, + outputStream); + } + + @override + NSInputStream init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSInputStream._(_ret, _lib, retain: true, release: true); + } + + static NSInputStream new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInputStream1, _lib._sel_new1); + return NSInputStream._(_ret, _lib, retain: false, release: true); + } + + static NSInputStream allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSInputStream1, _lib._sel_allocWithZone_1, zone); + return NSInputStream._(_ret, _lib, retain: false, release: true); + } + + static NSInputStream alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInputStream1, _lib._sel_alloc1); + return NSInputStream._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSInputStream1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSInputStream1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSInputStream1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSInputStream1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSInputStream1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSInputStream1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSInputStream1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSInputStream1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSInputStream1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSStream extends NSObject { + NSStream._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSStream] that points to the same underlying object as [other]. + static NSStream castFrom(T other) { + return NSStream._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSStream] that wraps the given raw object pointer. + static NSStream castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSStream._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSStream]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSStream1); + } + + void open() { + _lib._objc_msgSend_1(_id, _lib._sel_open1); + } + + void close() { + _lib._objc_msgSend_1(_id, _lib._sel_close1); + } + + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + set delegate(NSObject? value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + } + + NSObject propertyForKey_(NSString key) { + final _ret = + _lib._objc_msgSend_30(_id, _lib._sel_propertyForKey_1, key._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool setProperty_forKey_(NSObject property, NSString key) { + return _lib._objc_msgSend_240( + _id, _lib._sel_setProperty_forKey_1, property._id, key._id); + } + + void scheduleInRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_scheduleInRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); + } + + void removeFromRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_removeFromRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); + } + + int get streamStatus { + return _lib._objc_msgSend_819(_id, _lib._sel_streamStatus1); + } + + NSError? get streamError { + final _ret = _lib._objc_msgSend_298(_id, _lib._sel_streamError1); + return _ret.address == 0 + ? null + : NSError._(_ret, _lib, retain: true, release: true); + } + + static void getStreamsToHostWithName_port_inputStream_outputStream_( + SentryCocoa _lib, + NSString? hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_822( + _lib._class_NSStream1, + _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, + hostname?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); + } + + static void getStreamsToHost_port_inputStream_outputStream_( + SentryCocoa _lib, + NSHost? host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_825( + _lib._class_NSStream1, + _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, + host?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); + } + + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + SentryCocoa _lib, + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_826( + _lib._class_NSStream1, + _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, + bufferSize, + inputStream, + outputStream); + } + + @override + NSStream init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSStream._(_ret, _lib, retain: true, release: true); + } + + static NSStream new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSStream1, _lib._sel_new1); + return NSStream._(_ret, _lib, retain: false, release: true); + } + + static NSStream allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSStream1, _lib._sel_allocWithZone_1, zone); + return NSStream._(_ret, _lib, retain: false, release: true); + } + + static NSStream alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSStream1, _lib._sel_alloc1); + return NSStream._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSStream1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSStream1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSStream1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSStream1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSStream1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSStream1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSStream1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSStream1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSStream1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSStreamStatus { + static const int NSStreamStatusNotOpen = 0; + static const int NSStreamStatusOpening = 1; + static const int NSStreamStatusOpen = 2; + static const int NSStreamStatusReading = 3; + static const int NSStreamStatusWriting = 4; + static const int NSStreamStatusAtEnd = 5; + static const int NSStreamStatusClosed = 6; + static const int NSStreamStatusError = 7; +} + +class NSOutputStream extends NSStream { + NSOutputStream._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSOutputStream] that points to the same underlying object as [other]. + static NSOutputStream castFrom(T other) { + return NSOutputStream._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSOutputStream] that wraps the given raw object pointer. + static NSOutputStream castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSOutputStream._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSOutputStream]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSOutputStream1); + } + + int write_maxLength_(ffi.Pointer buffer, int len) { + return _lib._objc_msgSend_820( + _id, _lib._sel_write_maxLength_1, buffer, len); + } + + bool get hasSpaceAvailable { + return _lib._objc_msgSend_12(_id, _lib._sel_hasSpaceAvailable1); + } + + NSOutputStream initToMemory() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_initToMemory1); + return NSOutputStream._(_ret, _lib, retain: true, release: true); + } + + NSOutputStream initToBuffer_capacity_( + ffi.Pointer buffer, int capacity) { + final _ret = _lib._objc_msgSend_821( + _id, _lib._sel_initToBuffer_capacity_1, buffer, capacity); + return NSOutputStream._(_ret, _lib, retain: true, release: true); + } + + NSOutputStream initWithURL_append_(NSURL? url, bool shouldAppend) { + final _ret = _lib._objc_msgSend_246(_id, _lib._sel_initWithURL_append_1, + url?._id ?? ffi.nullptr, shouldAppend); + return NSOutputStream._(_ret, _lib, retain: true, release: true); + } + + NSOutputStream initToFileAtPath_append_(NSString? path, bool shouldAppend) { + final _ret = _lib._objc_msgSend_29(_id, _lib._sel_initToFileAtPath_append_1, + path?._id ?? ffi.nullptr, shouldAppend); + return NSOutputStream._(_ret, _lib, retain: true, release: true); + } + + static NSOutputStream outputStreamToMemory(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSOutputStream1, _lib._sel_outputStreamToMemory1); + return NSOutputStream._(_ret, _lib, retain: true, release: true); + } + + static NSOutputStream outputStreamToBuffer_capacity_( + SentryCocoa _lib, ffi.Pointer buffer, int capacity) { + final _ret = _lib._objc_msgSend_821(_lib._class_NSOutputStream1, + _lib._sel_outputStreamToBuffer_capacity_1, buffer, capacity); + return NSOutputStream._(_ret, _lib, retain: true, release: true); + } + + static NSOutputStream outputStreamToFileAtPath_append_( + SentryCocoa _lib, NSString? path, bool shouldAppend) { + final _ret = _lib._objc_msgSend_29( + _lib._class_NSOutputStream1, + _lib._sel_outputStreamToFileAtPath_append_1, + path?._id ?? ffi.nullptr, + shouldAppend); + return NSOutputStream._(_ret, _lib, retain: true, release: true); + } + + static NSOutputStream outputStreamWithURL_append_( + SentryCocoa _lib, NSURL? url, bool shouldAppend) { + final _ret = _lib._objc_msgSend_246( + _lib._class_NSOutputStream1, + _lib._sel_outputStreamWithURL_append_1, + url?._id ?? ffi.nullptr, + shouldAppend); + return NSOutputStream._(_ret, _lib, retain: true, release: true); + } + + static void getStreamsToHostWithName_port_inputStream_outputStream_( + SentryCocoa _lib, + NSString? hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_822( + _lib._class_NSOutputStream1, + _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, + hostname?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); + } + + static void getStreamsToHost_port_inputStream_outputStream_( + SentryCocoa _lib, + NSHost? host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_825( + _lib._class_NSOutputStream1, + _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, + host?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); + } + + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + SentryCocoa _lib, + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_826( + _lib._class_NSOutputStream1, + _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, + bufferSize, + inputStream, + outputStream); + } + + @override + NSOutputStream init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSOutputStream._(_ret, _lib, retain: true, release: true); + } + + static NSOutputStream new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSOutputStream1, _lib._sel_new1); + return NSOutputStream._(_ret, _lib, retain: false, release: true); + } + + static NSOutputStream allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSOutputStream1, _lib._sel_allocWithZone_1, zone); + return NSOutputStream._(_ret, _lib, retain: false, release: true); + } + + static NSOutputStream alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSOutputStream1, _lib._sel_alloc1); + return NSOutputStream._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSOutputStream1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSOutputStream1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSOutputStream1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSOutputStream1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSOutputStream1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSOutputStream1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSOutputStream1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSOutputStream1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSOutputStream1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSHost extends NSObject { + NSHost._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSHost] that points to the same underlying object as [other]. + static NSHost castFrom(T other) { + return NSHost._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSHost] that wraps the given raw object pointer. + static NSHost castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSHost._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSHost]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSHost1); + } + + static NSHost currentHost(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_currentHost1); + return NSHost._(_ret, _lib, retain: true, release: true); + } + + static NSHost hostWithName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSHost1, + _lib._sel_hostWithName_1, name?._id ?? ffi.nullptr); + return NSHost._(_ret, _lib, retain: true, release: true); + } + + static NSHost hostWithAddress_(SentryCocoa _lib, NSString? address) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSHost1, + _lib._sel_hostWithAddress_1, address?._id ?? ffi.nullptr); + return NSHost._(_ret, _lib, retain: true, release: true); + } + + bool isEqualToHost_(NSHost? aHost) { + return _lib._objc_msgSend_823( + _id, _lib._sel_isEqualToHost_1, aHost?._id ?? ffi.nullptr); + } + + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray? get names { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_names1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString? get address { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_address1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray? get addresses { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_addresses1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString? get localizedName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localizedName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + static void setHostCacheEnabled_(SentryCocoa _lib, bool flag) { + _lib._objc_msgSend_824( + _lib._class_NSHost1, _lib._sel_setHostCacheEnabled_1, flag); + } + + static bool isHostCacheEnabled(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSHost1, _lib._sel_isHostCacheEnabled1); + } + + static void flushHostCache(SentryCocoa _lib) { + _lib._objc_msgSend_1(_lib._class_NSHost1, _lib._sel_flushHostCache1); + } + + @override + NSHost init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSHost._(_ret, _lib, retain: true, release: true); + } + + static NSHost new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_new1); + return NSHost._(_ret, _lib, retain: false, release: true); + } + + static NSHost allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSHost1, _lib._sel_allocWithZone_1, zone); + return NSHost._(_ret, _lib, retain: false, release: true); + } + + static NSHost alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_alloc1); + return NSHost._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSHost1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSHost1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSHost1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSHost1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSHost1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSHost1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSHost1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSHost1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSHost1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSURLResponse extends NSObject { + NSURLResponse._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLResponse] that points to the same underlying object as [other]. + static NSURLResponse castFrom(T other) { + return NSURLResponse._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSURLResponse] that wraps the given raw object pointer. + static NSURLResponse castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLResponse._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLResponse]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLResponse1); + } + + NSURLResponse initWithURL_MIMEType_expectedContentLength_textEncodingName_( + NSURL? URL, NSString? MIMEType, int length, NSString? name) { + final _ret = _lib._objc_msgSend_830( + _id, + _lib._sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_1, + URL?._id ?? ffi.nullptr, + MIMEType?._id ?? ffi.nullptr, + length, + name?._id ?? ffi.nullptr); + return NSURLResponse._(_ret, _lib, retain: true, release: true); + } + + NSURL? get URL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSString? get MIMEType { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_MIMEType1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get expectedContentLength { + return _lib._objc_msgSend_220(_id, _lib._sel_expectedContentLength1); + } + + NSString? get textEncodingName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_textEncodingName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get suggestedFilename { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_suggestedFilename1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + @override + NSURLResponse init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLResponse._(_ret, _lib, retain: true, release: true); + } + + static NSURLResponse new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLResponse1, _lib._sel_new1); + return NSURLResponse._(_ret, _lib, retain: false, release: true); + } + + static NSURLResponse allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLResponse1, _lib._sel_allocWithZone_1, zone); + return NSURLResponse._(_ret, _lib, retain: false, release: true); + } + + static NSURLResponse alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLResponse1, _lib._sel_alloc1); + return NSURLResponse._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLResponse1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLResponse1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLResponse1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLResponse1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLResponse1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLResponse1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLResponse1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSURLResponse1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLResponse1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSURLSessionTaskState { + static const int NSURLSessionTaskStateRunning = 0; + static const int NSURLSessionTaskStateSuspended = 1; + static const int NSURLSessionTaskStateCanceling = 2; + static const int NSURLSessionTaskStateCompleted = 3; +} + +void _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSArray_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSArray_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSArray_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSArray_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSArray_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSArray_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSArray_closureRegistry[block.ref.target.address] + as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSArray extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSArray._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSArray.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSArray.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSArray_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSArray_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +class NSIndexPath extends NSObject { + NSIndexPath._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSIndexPath] that points to the same underlying object as [other]. + static NSIndexPath castFrom(T other) { + return NSIndexPath._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSIndexPath] that wraps the given raw object pointer. + static NSIndexPath castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSIndexPath._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSIndexPath]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSIndexPath1); + } + + static NSIndexPath indexPathWithIndex_(SentryCocoa _lib, int index) { + final _ret = _lib._objc_msgSend_60( + _lib._class_NSIndexPath1, _lib._sel_indexPathWithIndex_1, index); + return NSIndexPath._(_ret, _lib, retain: true, release: true); + } + + static NSIndexPath indexPathWithIndexes_length_( + SentryCocoa _lib, ffi.Pointer indexes, int length) { + final _ret = _lib._objc_msgSend_836(_lib._class_NSIndexPath1, + _lib._sel_indexPathWithIndexes_length_1, indexes, length); + return NSIndexPath._(_ret, _lib, retain: true, release: true); + } + + NSIndexPath initWithIndexes_length_( + ffi.Pointer indexes, int length) { + final _ret = _lib._objc_msgSend_836( + _id, _lib._sel_initWithIndexes_length_1, indexes, length); + return NSIndexPath._(_ret, _lib, retain: true, release: true); + } + + NSIndexPath initWithIndex_(int index) { + final _ret = _lib._objc_msgSend_60(_id, _lib._sel_initWithIndex_1, index); + return NSIndexPath._(_ret, _lib, retain: true, release: true); + } + + NSIndexPath indexPathByAddingIndex_(int index) { + final _ret = + _lib._objc_msgSend_837(_id, _lib._sel_indexPathByAddingIndex_1, index); + return NSIndexPath._(_ret, _lib, retain: true, release: true); + } + + NSIndexPath indexPathByRemovingLastIndex() { + final _ret = + _lib._objc_msgSend_838(_id, _lib._sel_indexPathByRemovingLastIndex1); + return NSIndexPath._(_ret, _lib, retain: true, release: true); + } + + int indexAtPosition_(int position) { + return _lib._objc_msgSend_88(_id, _lib._sel_indexAtPosition_1, position); + } + + int get length { + return _lib._objc_msgSend_10(_id, _lib._sel_length1); + } + + void getIndexes_range_( + ffi.Pointer indexes, _NSRange positionRange) { + _lib._objc_msgSend_839( + _id, _lib._sel_getIndexes_range_1, indexes, positionRange); + } + + int compare_(NSIndexPath? otherObject) { + return _lib._objc_msgSend_840( + _id, _lib._sel_compare_1, otherObject?._id ?? ffi.nullptr); + } + + void getIndexes_(ffi.Pointer indexes) { + _lib._objc_msgSend_841(_id, _lib._sel_getIndexes_1, indexes); + } + + @override + NSIndexPath init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSIndexPath._(_ret, _lib, retain: true, release: true); + } + + static NSIndexPath new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSIndexPath1, _lib._sel_new1); + return NSIndexPath._(_ret, _lib, retain: false, release: true); + } + + static NSIndexPath allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSIndexPath1, _lib._sel_allocWithZone_1, zone); + return NSIndexPath._(_ret, _lib, retain: false, release: true); + } + + static NSIndexPath alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSIndexPath1, _lib._sel_alloc1); + return NSIndexPath._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSIndexPath1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSIndexPath1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSIndexPath1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSIndexPath1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSIndexPath1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSIndexPath1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSIndexPath1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSIndexPath1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSIndexPath1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSInflectionRule extends NSObject { + NSInflectionRule._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSInflectionRule] that points to the same underlying object as [other]. + static NSInflectionRule castFrom(T other) { + return NSInflectionRule._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSInflectionRule] that wraps the given raw object pointer. + static NSInflectionRule castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSInflectionRule._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSInflectionRule]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSInflectionRule1); + } + + @override + NSObject init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSInflectionRule? getAutomaticRule(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_842( + _lib._class_NSInflectionRule1, _lib._sel_automaticRule1); + return _ret.address == 0 + ? null + : NSInflectionRule._(_ret, _lib, retain: true, release: true); + } + + static bool canInflectLanguage_(SentryCocoa _lib, NSString? language) { + return _lib._objc_msgSend_59(_lib._class_NSInflectionRule1, + _lib._sel_canInflectLanguage_1, language?._id ?? ffi.nullptr); + } + + static bool getCanInflectPreferredLocalization(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSInflectionRule1, + _lib._sel_canInflectPreferredLocalization1); + } + + static NSInflectionRule new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInflectionRule1, _lib._sel_new1); + return NSInflectionRule._(_ret, _lib, retain: false, release: true); + } + + static NSInflectionRule allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSInflectionRule1, _lib._sel_allocWithZone_1, zone); + return NSInflectionRule._(_ret, _lib, retain: false, release: true); + } + + static NSInflectionRule alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInflectionRule1, _lib._sel_alloc1); + return NSInflectionRule._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSInflectionRule1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSInflectionRule1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSInflectionRule1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSInflectionRule1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSInflectionRule1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSInflectionRule1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSInflectionRule1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSInflectionRule1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSInflectionRule1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSMorphology extends NSObject { + NSMorphology._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMorphology] that points to the same underlying object as [other]. + static NSMorphology castFrom(T other) { + return NSMorphology._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSMorphology] that wraps the given raw object pointer. + static NSMorphology castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMorphology._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMorphology]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSMorphology1); + } + + int get grammaticalGender { + return _lib._objc_msgSend_843(_id, _lib._sel_grammaticalGender1); + } + + set grammaticalGender(int value) { + return _lib._objc_msgSend_844(_id, _lib._sel_setGrammaticalGender_1, value); + } + + int get partOfSpeech { + return _lib._objc_msgSend_845(_id, _lib._sel_partOfSpeech1); + } + + set partOfSpeech(int value) { + return _lib._objc_msgSend_846(_id, _lib._sel_setPartOfSpeech_1, value); + } + + int get number { + return _lib._objc_msgSend_847(_id, _lib._sel_number1); + } + + set number(int value) { + return _lib._objc_msgSend_848(_id, _lib._sel_setNumber_1, value); + } + + NSMorphologyCustomPronoun customPronounForLanguage_(NSString? language) { + final _ret = _lib._objc_msgSend_849(_id, + _lib._sel_customPronounForLanguage_1, language?._id ?? ffi.nullptr); + return NSMorphologyCustomPronoun._(_ret, _lib, retain: true, release: true); + } + + bool setCustomPronoun_forLanguage_error_(NSMorphologyCustomPronoun? features, + NSString? language, ffi.Pointer> error) { + return _lib._objc_msgSend_850( + _id, + _lib._sel_setCustomPronoun_forLanguage_error_1, + features?._id ?? ffi.nullptr, + language?._id ?? ffi.nullptr, + error); + } + + bool get unspecified { + return _lib._objc_msgSend_12(_id, _lib._sel_isUnspecified1); + } + + static NSMorphology? getUserMorphology(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_851( + _lib._class_NSMorphology1, _lib._sel_userMorphology1); + return _ret.address == 0 + ? null + : NSMorphology._(_ret, _lib, retain: true, release: true); + } + + @override + NSMorphology init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMorphology._(_ret, _lib, retain: true, release: true); + } + + static NSMorphology new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMorphology1, _lib._sel_new1); + return NSMorphology._(_ret, _lib, retain: false, release: true); + } + + static NSMorphology allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSMorphology1, _lib._sel_allocWithZone_1, zone); + return NSMorphology._(_ret, _lib, retain: false, release: true); + } + + static NSMorphology alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMorphology1, _lib._sel_alloc1); + return NSMorphology._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSMorphology1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSMorphology1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMorphology1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMorphology1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSMorphology1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSMorphology1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSMorphology1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSMorphology1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMorphology1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSGrammaticalGender { + static const int NSGrammaticalGenderNotSet = 0; + static const int NSGrammaticalGenderFeminine = 1; + static const int NSGrammaticalGenderMasculine = 2; + static const int NSGrammaticalGenderNeuter = 3; +} + +abstract class NSGrammaticalPartOfSpeech { + static const int NSGrammaticalPartOfSpeechNotSet = 0; + static const int NSGrammaticalPartOfSpeechDeterminer = 1; + static const int NSGrammaticalPartOfSpeechPronoun = 2; + static const int NSGrammaticalPartOfSpeechLetter = 3; + static const int NSGrammaticalPartOfSpeechAdverb = 4; + static const int NSGrammaticalPartOfSpeechParticle = 5; + static const int NSGrammaticalPartOfSpeechAdjective = 6; + static const int NSGrammaticalPartOfSpeechAdposition = 7; + static const int NSGrammaticalPartOfSpeechVerb = 8; + static const int NSGrammaticalPartOfSpeechNoun = 9; + static const int NSGrammaticalPartOfSpeechConjunction = 10; + static const int NSGrammaticalPartOfSpeechNumeral = 11; + static const int NSGrammaticalPartOfSpeechInterjection = 12; + static const int NSGrammaticalPartOfSpeechPreposition = 13; + static const int NSGrammaticalPartOfSpeechAbbreviation = 14; +} + +abstract class NSGrammaticalNumber { + static const int NSGrammaticalNumberNotSet = 0; + static const int NSGrammaticalNumberSingular = 1; + static const int NSGrammaticalNumberZero = 2; + static const int NSGrammaticalNumberPlural = 3; + static const int NSGrammaticalNumberPluralTwo = 4; + static const int NSGrammaticalNumberPluralFew = 5; + static const int NSGrammaticalNumberPluralMany = 6; +} + +class NSMorphologyCustomPronoun extends NSObject { + NSMorphologyCustomPronoun._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMorphologyCustomPronoun] that points to the same underlying object as [other]. + static NSMorphologyCustomPronoun castFrom(T other) { + return NSMorphologyCustomPronoun._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSMorphologyCustomPronoun] that wraps the given raw object pointer. + static NSMorphologyCustomPronoun castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMorphologyCustomPronoun._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMorphologyCustomPronoun]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMorphologyCustomPronoun1); + } + + static bool isSupportedForLanguage_(SentryCocoa _lib, NSString? language) { + return _lib._objc_msgSend_59(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_isSupportedForLanguage_1, language?._id ?? ffi.nullptr); + } + + static NSArray requiredKeysForLanguage_( + SentryCocoa _lib, NSString? language) { + final _ret = _lib._objc_msgSend_123(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_requiredKeysForLanguage_1, language?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString? get subjectForm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_subjectForm1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set subjectForm(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setSubjectForm_1, value?._id ?? ffi.nullptr); + } + + NSString? get objectForm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_objectForm1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set objectForm(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setObjectForm_1, value?._id ?? ffi.nullptr); + } + + NSString? get possessiveForm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_possessiveForm1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set possessiveForm(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPossessiveForm_1, value?._id ?? ffi.nullptr); + } + + NSString? get possessiveAdjectiveForm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_possessiveAdjectiveForm1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set possessiveAdjectiveForm(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPossessiveAdjectiveForm_1, value?._id ?? ffi.nullptr); + } + + NSString? get reflexiveForm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_reflexiveForm1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set reflexiveForm(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setReflexiveForm_1, value?._id ?? ffi.nullptr); + } + + @override + NSMorphologyCustomPronoun init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMorphologyCustomPronoun._(_ret, _lib, retain: true, release: true); + } + + static NSMorphologyCustomPronoun new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMorphologyCustomPronoun1, _lib._sel_new1); + return NSMorphologyCustomPronoun._(_ret, _lib, + retain: false, release: true); + } + + static NSMorphologyCustomPronoun allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_allocWithZone_1, zone); + return NSMorphologyCustomPronoun._(_ret, _lib, + retain: false, release: true); + } + + static NSMorphologyCustomPronoun alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMorphologyCustomPronoun1, _lib._sel_alloc1); + return NSMorphologyCustomPronoun._(_ret, _lib, + retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSMorphologyCustomPronoun1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMorphologyCustomPronoun1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSMorphologyCustomPronoun1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSMorphologyCustomPronoun1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSMorphologyCustomPronoun1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSOperationQueue extends NSObject { + NSOperationQueue._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSOperationQueue] that points to the same underlying object as [other]. + static NSOperationQueue castFrom(T other) { + return NSOperationQueue._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSOperationQueue] that wraps the given raw object pointer. + static NSOperationQueue castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSOperationQueue._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSOperationQueue]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSOperationQueue1); + } + + NSProgress? get progress { + final _ret = _lib._objc_msgSend_643(_id, _lib._sel_progress1); + return _ret.address == 0 + ? null + : NSProgress._(_ret, _lib, retain: true, release: true); + } + + void addOperation_(NSOperation? op) { + _lib._objc_msgSend_852( + _id, _lib._sel_addOperation_1, op?._id ?? ffi.nullptr); + } + + void addOperations_waitUntilFinished_(NSArray? ops, bool wait) { + _lib._objc_msgSend_855(_id, _lib._sel_addOperations_waitUntilFinished_1, + ops?._id ?? ffi.nullptr, wait); + } + + void addOperationWithBlock_(ObjCBlock_ffiVoid block) { + _lib._objc_msgSend_497(_id, _lib._sel_addOperationWithBlock_1, block._id); + } + + void addBarrierBlock_(ObjCBlock_ffiVoid barrier) { + _lib._objc_msgSend_497(_id, _lib._sel_addBarrierBlock_1, barrier._id); + } + + int get maxConcurrentOperationCount { + return _lib._objc_msgSend_78(_id, _lib._sel_maxConcurrentOperationCount1); + } + + set maxConcurrentOperationCount(int value) { + return _lib._objc_msgSend_590( + _id, _lib._sel_setMaxConcurrentOperationCount_1, value); + } + + bool get suspended { + return _lib._objc_msgSend_12(_id, _lib._sel_isSuspended1); + } + + set suspended(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setSuspended_1, value); + } + + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set name(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + } + + int get qualityOfService { + return _lib._objc_msgSend_507(_id, _lib._sel_qualityOfService1); + } + + set qualityOfService(int value) { + return _lib._objc_msgSend_508(_id, _lib._sel_setQualityOfService_1, value); + } + + NSObject get underlyingQueue { + final _ret = _lib._objc_msgSend_856(_id, _lib._sel_underlyingQueue1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set underlyingQueue(NSObject value) { + return _lib._objc_msgSend_857( + _id, _lib._sel_setUnderlyingQueue_1, value._id); + } + + void cancelAllOperations() { + _lib._objc_msgSend_1(_id, _lib._sel_cancelAllOperations1); + } + + void waitUntilAllOperationsAreFinished() { + _lib._objc_msgSend_1(_id, _lib._sel_waitUntilAllOperationsAreFinished1); + } + + static NSOperationQueue? getCurrentQueue(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_858( + _lib._class_NSOperationQueue1, _lib._sel_currentQueue1); + return _ret.address == 0 + ? null + : NSOperationQueue._(_ret, _lib, retain: true, release: true); + } + + static NSOperationQueue? getMainQueue(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_858( + _lib._class_NSOperationQueue1, _lib._sel_mainQueue1); + return _ret.address == 0 + ? null + : NSOperationQueue._(_ret, _lib, retain: true, release: true); + } + + NSArray? get operations { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_operations1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + int get operationCount { + return _lib._objc_msgSend_10(_id, _lib._sel_operationCount1); + } + + @override + NSOperationQueue init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSOperationQueue._(_ret, _lib, retain: true, release: true); + } + + static NSOperationQueue new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSOperationQueue1, _lib._sel_new1); + return NSOperationQueue._(_ret, _lib, retain: false, release: true); + } + + static NSOperationQueue allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSOperationQueue1, _lib._sel_allocWithZone_1, zone); + return NSOperationQueue._(_ret, _lib, retain: false, release: true); + } + + static NSOperationQueue alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSOperationQueue1, _lib._sel_alloc1); + return NSOperationQueue._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSOperationQueue1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSOperationQueue1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSOperationQueue1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSOperationQueue1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSOperationQueue1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSOperationQueue1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSOperationQueue1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSOperationQueue1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSOperationQueue1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSOperation extends NSObject { + NSOperation._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSOperation] that points to the same underlying object as [other]. + static NSOperation castFrom(T other) { + return NSOperation._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSOperation] that wraps the given raw object pointer. + static NSOperation castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSOperation._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSOperation]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSOperation1); + } + + void start() { + _lib._objc_msgSend_1(_id, _lib._sel_start1); + } + + void main() { + _lib._objc_msgSend_1(_id, _lib._sel_main1); + } + + bool get cancelled { + return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); + } + + void cancel() { + _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + } + + bool get executing { + return _lib._objc_msgSend_12(_id, _lib._sel_isExecuting1); + } + + bool get finished { + return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); + } + + bool get concurrent { + return _lib._objc_msgSend_12(_id, _lib._sel_isConcurrent1); + } + + bool get asynchronous { + return _lib._objc_msgSend_12(_id, _lib._sel_isAsynchronous1); + } + + bool get ready { + return _lib._objc_msgSend_12(_id, _lib._sel_isReady1); + } + + void addDependency_(NSOperation? op) { + _lib._objc_msgSend_852( + _id, _lib._sel_addDependency_1, op?._id ?? ffi.nullptr); + } + + void removeDependency_(NSOperation? op) { + _lib._objc_msgSend_852( + _id, _lib._sel_removeDependency_1, op?._id ?? ffi.nullptr); + } + + NSArray? get dependencies { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_dependencies1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + int get queuePriority { + return _lib._objc_msgSend_853(_id, _lib._sel_queuePriority1); + } + + set queuePriority(int value) { + return _lib._objc_msgSend_854(_id, _lib._sel_setQueuePriority_1, value); + } + + ObjCBlock_ffiVoid get completionBlock { + final _ret = _lib._objc_msgSend_652(_id, _lib._sel_completionBlock1); + return ObjCBlock_ffiVoid._(_ret, _lib); + } + + set completionBlock(ObjCBlock_ffiVoid value) { + return _lib._objc_msgSend_653( + _id, _lib._sel_setCompletionBlock_1, value._id); + } + + void waitUntilFinished() { + _lib._objc_msgSend_1(_id, _lib._sel_waitUntilFinished1); + } + + double get threadPriority { + return _lib._objc_msgSend_155(_id, _lib._sel_threadPriority1); + } + + set threadPriority(double value) { + return _lib._objc_msgSend_506(_id, _lib._sel_setThreadPriority_1, value); + } + + int get qualityOfService { + return _lib._objc_msgSend_507(_id, _lib._sel_qualityOfService1); + } + + set qualityOfService(int value) { + return _lib._objc_msgSend_508(_id, _lib._sel_setQualityOfService_1, value); + } + + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set name(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + } + + @override + NSOperation init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSOperation._(_ret, _lib, retain: true, release: true); + } + + static NSOperation new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSOperation1, _lib._sel_new1); + return NSOperation._(_ret, _lib, retain: false, release: true); + } + + static NSOperation allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSOperation1, _lib._sel_allocWithZone_1, zone); + return NSOperation._(_ret, _lib, retain: false, release: true); + } + + static NSOperation alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSOperation1, _lib._sel_alloc1); + return NSOperation._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSOperation1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSOperation1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSOperation1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSOperation1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSOperation1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSOperation1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSOperation1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSOperation1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSOperation1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSOperationQueuePriority { + static const int NSOperationQueuePriorityVeryLow = -8; + static const int NSOperationQueuePriorityLow = -4; + static const int NSOperationQueuePriorityNormal = 0; + static const int NSOperationQueuePriorityHigh = 4; + static const int NSOperationQueuePriorityVeryHigh = 8; +} + +class NSPointerArray extends NSObject { + NSPointerArray._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSPointerArray] that points to the same underlying object as [other]. + static NSPointerArray castFrom(T other) { + return NSPointerArray._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSPointerArray] that wraps the given raw object pointer. + static NSPointerArray castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSPointerArray._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSPointerArray]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSPointerArray1); + } + + NSPointerArray initWithOptions_(int options) { + final _ret = + _lib._objc_msgSend_859(_id, _lib._sel_initWithOptions_1, options); + return NSPointerArray._(_ret, _lib, retain: true, release: true); + } + + NSPointerArray initWithPointerFunctions_(NSPointerFunctions? functions) { + final _ret = _lib._objc_msgSend_873(_id, + _lib._sel_initWithPointerFunctions_1, functions?._id ?? ffi.nullptr); + return NSPointerArray._(_ret, _lib, retain: true, release: true); + } + + static NSPointerArray pointerArrayWithOptions_( + SentryCocoa _lib, int options) { + final _ret = _lib._objc_msgSend_874(_lib._class_NSPointerArray1, + _lib._sel_pointerArrayWithOptions_1, options); + return NSPointerArray._(_ret, _lib, retain: true, release: true); + } + + static NSPointerArray pointerArrayWithPointerFunctions_( + SentryCocoa _lib, NSPointerFunctions? functions) { + final _ret = _lib._objc_msgSend_875( + _lib._class_NSPointerArray1, + _lib._sel_pointerArrayWithPointerFunctions_1, + functions?._id ?? ffi.nullptr); + return NSPointerArray._(_ret, _lib, retain: true, release: true); + } + + NSPointerFunctions? get pointerFunctions { + final _ret = _lib._objc_msgSend_876(_id, _lib._sel_pointerFunctions1); + return _ret.address == 0 + ? null + : NSPointerFunctions._(_ret, _lib, retain: true, release: true); + } + + ffi.Pointer pointerAtIndex_(int index) { + return _lib._objc_msgSend_877(_id, _lib._sel_pointerAtIndex_1, index); + } + + void addPointer_(ffi.Pointer pointer) { + _lib._objc_msgSend_47(_id, _lib._sel_addPointer_1, pointer); + } + + void removePointerAtIndex_(int index) { + _lib._objc_msgSend_439(_id, _lib._sel_removePointerAtIndex_1, index); + } + + void insertPointer_atIndex_(ffi.Pointer item, int index) { + _lib._objc_msgSend_21(_id, _lib._sel_insertPointer_atIndex_1, item, index); + } + + void replacePointerAtIndex_withPointer_( + int index, ffi.Pointer item) { + _lib._objc_msgSend_878( + _id, _lib._sel_replacePointerAtIndex_withPointer_1, index, item); + } + + void compact() { + _lib._objc_msgSend_1(_id, _lib._sel_compact1); + } + + int get count { + return _lib._objc_msgSend_10(_id, _lib._sel_count1); + } + + set count(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setCount_1, value); + } + + static NSObject pointerArrayWithStrongObjects(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSPointerArray1, _lib._sel_pointerArrayWithStrongObjects1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject pointerArrayWithWeakObjects(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSPointerArray1, _lib._sel_pointerArrayWithWeakObjects1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSPointerArray strongObjectsPointerArray(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_879( + _lib._class_NSPointerArray1, _lib._sel_strongObjectsPointerArray1); + return NSPointerArray._(_ret, _lib, retain: true, release: true); + } + + static NSPointerArray weakObjectsPointerArray(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_879( + _lib._class_NSPointerArray1, _lib._sel_weakObjectsPointerArray1); + return NSPointerArray._(_ret, _lib, retain: true, release: true); + } + + NSArray? get allObjects { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_allObjects1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + @override + NSPointerArray init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSPointerArray._(_ret, _lib, retain: true, release: true); + } + + static NSPointerArray new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSPointerArray1, _lib._sel_new1); + return NSPointerArray._(_ret, _lib, retain: false, release: true); + } + + static NSPointerArray allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSPointerArray1, _lib._sel_allocWithZone_1, zone); + return NSPointerArray._(_ret, _lib, retain: false, release: true); + } + + static NSPointerArray alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSPointerArray1, _lib._sel_alloc1); + return NSPointerArray._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSPointerArray1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSPointerArray1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSPointerArray1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSPointerArray1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSPointerArray1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSPointerArray1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSPointerArray1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSPointerArray1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSPointerArray1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSPointerFunctionsOptions { + static const int NSPointerFunctionsStrongMemory = 0; + static const int NSPointerFunctionsZeroingWeakMemory = 1; + static const int NSPointerFunctionsOpaqueMemory = 2; + static const int NSPointerFunctionsMallocMemory = 3; + static const int NSPointerFunctionsMachVirtualMemory = 4; + static const int NSPointerFunctionsWeakMemory = 5; + static const int NSPointerFunctionsObjectPersonality = 0; + static const int NSPointerFunctionsOpaquePersonality = 256; + static const int NSPointerFunctionsObjectPointerPersonality = 512; + static const int NSPointerFunctionsCStringPersonality = 768; + static const int NSPointerFunctionsStructPersonality = 1024; + static const int NSPointerFunctionsIntegerPersonality = 1280; + static const int NSPointerFunctionsCopyIn = 65536; +} + +class NSPointerFunctions extends NSObject { + NSPointerFunctions._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSPointerFunctions] that points to the same underlying object as [other]. + static NSPointerFunctions castFrom(T other) { + return NSPointerFunctions._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSPointerFunctions] that wraps the given raw object pointer. + static NSPointerFunctions castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSPointerFunctions._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSPointerFunctions]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSPointerFunctions1); + } + + NSPointerFunctions initWithOptions_(int options) { + final _ret = + _lib._objc_msgSend_859(_id, _lib._sel_initWithOptions_1, options); + return NSPointerFunctions._(_ret, _lib, retain: true, release: true); + } + + static NSPointerFunctions pointerFunctionsWithOptions_( + SentryCocoa _lib, int options) { + final _ret = _lib._objc_msgSend_860(_lib._class_NSPointerFunctions1, + _lib._sel_pointerFunctionsWithOptions_1, options); + return NSPointerFunctions._(_ret, _lib, retain: true, release: true); + } + + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get hashFunction { + return _lib._objc_msgSend_861(_id, _lib._sel_hashFunction1); + } + + set hashFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _lib._objc_msgSend_862(_id, _lib._sel_setHashFunction_1, value); + } + + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get isEqualFunction { + return _lib._objc_msgSend_863(_id, _lib._sel_isEqualFunction1); + } + + set isEqualFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _lib._objc_msgSend_864(_id, _lib._sel_setIsEqualFunction_1, value); + } + + ffi.Pointer< + ffi.NativeFunction)>> + get sizeFunction { + return _lib._objc_msgSend_865(_id, _lib._sel_sizeFunction1); + } + + set sizeFunction( + ffi.Pointer< + ffi + .NativeFunction)>> + value) { + return _lib._objc_msgSend_866(_id, _lib._sel_setSizeFunction_1, value); + } + + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + get descriptionFunction { + return _lib._objc_msgSend_867(_id, _lib._sel_descriptionFunction1); + } + + set descriptionFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + value) { + return _lib._objc_msgSend_868( + _id, _lib._sel_setDescriptionFunction_1, value); + } + + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get relinquishFunction { + return _lib._objc_msgSend_869(_id, _lib._sel_relinquishFunction1); + } + + set relinquishFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _lib._objc_msgSend_870( + _id, _lib._sel_setRelinquishFunction_1, value); + } + + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>, + ffi.Bool)>> get acquireFunction { + return _lib._objc_msgSend_871(_id, _lib._sel_acquireFunction1); + } + + set acquireFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>> + value) { + return _lib._objc_msgSend_872(_id, _lib._sel_setAcquireFunction_1, value); + } + + bool get usesStrongWriteBarrier { + return _lib._objc_msgSend_12(_id, _lib._sel_usesStrongWriteBarrier1); + } + + set usesStrongWriteBarrier(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setUsesStrongWriteBarrier_1, value); + } + + bool get usesWeakReadAndWriteBarriers { + return _lib._objc_msgSend_12(_id, _lib._sel_usesWeakReadAndWriteBarriers1); + } + + set usesWeakReadAndWriteBarriers(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setUsesWeakReadAndWriteBarriers_1, value); + } + + @override + NSPointerFunctions init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSPointerFunctions._(_ret, _lib, retain: true, release: true); + } + + static NSPointerFunctions new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSPointerFunctions1, _lib._sel_new1); + return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + } + + static NSPointerFunctions allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSPointerFunctions1, _lib._sel_allocWithZone_1, zone); + return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + } + + static NSPointerFunctions alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSPointerFunctions1, _lib._sel_alloc1); + return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSPointerFunctions1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSPointerFunctions1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSPointerFunctions1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSPointerFunctions1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSPointerFunctions1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSPointerFunctions1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSPointerFunctions1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSPointerFunctions1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSPointerFunctions1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSProcessInfo extends NSObject { + NSProcessInfo._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSProcessInfo] that points to the same underlying object as [other]. + static NSProcessInfo castFrom(T other) { + return NSProcessInfo._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSProcessInfo] that wraps the given raw object pointer. + static NSProcessInfo castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSProcessInfo._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSProcessInfo]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProcessInfo1); + } + + static NSProcessInfo? getProcessInfo(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_880( + _lib._class_NSProcessInfo1, _lib._sel_processInfo1); + return _ret.address == 0 + ? null + : NSProcessInfo._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get environment { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_environment1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSArray? get arguments { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_arguments1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString? get hostName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_hostName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get processName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_processName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set processName(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setProcessName_1, value?._id ?? ffi.nullptr); + } + + int get processIdentifier { + return _lib._objc_msgSend_219(_id, _lib._sel_processIdentifier1); + } + + NSString? get globallyUniqueString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_globallyUniqueString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int operatingSystem() { + return _lib._objc_msgSend_10(_id, _lib._sel_operatingSystem1); + } + + NSString operatingSystemName() { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_operatingSystemName1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get operatingSystemVersionString { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_operatingSystemVersionString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + void getOperatingSystemVersion(ffi.Pointer stret) { + _lib._objc_msgSend_881(stret, _id, _lib._sel_operatingSystemVersion1); + } + + int get processorCount { + return _lib._objc_msgSend_10(_id, _lib._sel_processorCount1); + } + + int get activeProcessorCount { + return _lib._objc_msgSend_10(_id, _lib._sel_activeProcessorCount1); + } + + int get physicalMemory { + return _lib._objc_msgSend_154(_id, _lib._sel_physicalMemory1); + } + + bool isOperatingSystemAtLeastVersion_(NSOperatingSystemVersion version) { + return _lib._objc_msgSend_882( + _id, _lib._sel_isOperatingSystemAtLeastVersion_1, version); + } + + double get systemUptime { + return _lib._objc_msgSend_155(_id, _lib._sel_systemUptime1); + } + + void disableSuddenTermination() { + _lib._objc_msgSend_1(_id, _lib._sel_disableSuddenTermination1); + } + + void enableSuddenTermination() { + _lib._objc_msgSend_1(_id, _lib._sel_enableSuddenTermination1); + } + + void disableAutomaticTermination_(NSString? reason) { + _lib._objc_msgSend_192(_id, _lib._sel_disableAutomaticTermination_1, + reason?._id ?? ffi.nullptr); + } + + void enableAutomaticTermination_(NSString? reason) { + _lib._objc_msgSend_192(_id, _lib._sel_enableAutomaticTermination_1, + reason?._id ?? ffi.nullptr); + } + + bool get automaticTerminationSupportEnabled { + return _lib._objc_msgSend_12( + _id, _lib._sel_automaticTerminationSupportEnabled1); + } + + set automaticTerminationSupportEnabled(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAutomaticTerminationSupportEnabled_1, value); + } + + NSObject beginActivityWithOptions_reason_(int options, NSString? reason) { + final _ret = _lib._objc_msgSend_883( + _id, + _lib._sel_beginActivityWithOptions_reason_1, + options, + reason?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void endActivity_(NSObject? activity) { + _lib._objc_msgSend_15( + _id, _lib._sel_endActivity_1, activity?._id ?? ffi.nullptr); + } + + void performActivityWithOptions_reason_usingBlock_( + int options, NSString? reason, ObjCBlock_ffiVoid block) { + _lib._objc_msgSend_884( + _id, + _lib._sel_performActivityWithOptions_reason_usingBlock_1, + options, + reason?._id ?? ffi.nullptr, + block._id); + } + + void performExpiringActivityWithReason_usingBlock_( + NSString? reason, ObjCBlock_ffiVoid_bool block) { + _lib._objc_msgSend_885( + _id, + _lib._sel_performExpiringActivityWithReason_usingBlock_1, + reason?._id ?? ffi.nullptr, + block._id); + } + + NSString? get userName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_userName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get fullUserName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_fullUserName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get thermalState { + return _lib._objc_msgSend_886(_id, _lib._sel_thermalState1); + } + + bool get lowPowerModeEnabled { + return _lib._objc_msgSend_12(_id, _lib._sel_isLowPowerModeEnabled1); + } + + bool get macCatalystApp { + return _lib._objc_msgSend_12(_id, _lib._sel_isMacCatalystApp1); + } + + bool get iOSAppOnMac { + return _lib._objc_msgSend_12(_id, _lib._sel_isiOSAppOnMac1); + } + + @override + NSProcessInfo init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSProcessInfo._(_ret, _lib, retain: true, release: true); + } + + static NSProcessInfo new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSProcessInfo1, _lib._sel_new1); + return NSProcessInfo._(_ret, _lib, retain: false, release: true); + } + + static NSProcessInfo allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSProcessInfo1, _lib._sel_allocWithZone_1, zone); + return NSProcessInfo._(_ret, _lib, retain: false, release: true); + } + + static NSProcessInfo alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSProcessInfo1, _lib._sel_alloc1); + return NSProcessInfo._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSProcessInfo1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSProcessInfo1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSProcessInfo1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSProcessInfo1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSProcessInfo1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSProcessInfo1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSProcessInfo1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSProcessInfo1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSProcessInfo1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSOperatingSystemVersion extends ffi.Struct { + @ffi.Long() + external int majorVersion; + + @ffi.Long() + external int minorVersion; + + @ffi.Long() + external int patchVersion; +} + +abstract class NSActivityOptions { + static const int NSActivityIdleDisplaySleepDisabled = 1099511627776; + static const int NSActivityIdleSystemSleepDisabled = 1048576; + static const int NSActivitySuddenTerminationDisabled = 16384; + static const int NSActivityAutomaticTerminationDisabled = 32768; + static const int NSActivityAnimationTrackingEnabled = 35184372088832; + static const int NSActivityTrackingEnabled = 70368744177664; + static const int NSActivityUserInitiated = 16777215; + static const int NSActivityUserInitiatedAllowingIdleSystemSleep = 15728639; + static const int NSActivityBackground = 255; + static const int NSActivityLatencyCritical = 1095216660480; + static const int NSActivityUserInteractive = 1095233437695; +} + +void _ObjCBlock_ffiVoid_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, bool arg0) { + return block.ref.target + .cast>() + .asFunction()(arg0); +} + +final _ObjCBlock_ffiVoid_bool_closureRegistry = {}; +int _ObjCBlock_ffiVoid_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_bool_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, bool arg0) { + return (_ObjCBlock_ffiVoid_bool_closureRegistry[block.ref.target.address] + as void Function(bool))(arg0); +} + +class ObjCBlock_ffiVoid_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_bool._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_bool.fromFunctionPointer(SentryCocoa lib, + ffi.Pointer> ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0)>( + _ObjCBlock_ffiVoid_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_bool.fromFunction( + SentryCocoa lib, void Function(bool arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0)>( + _ObjCBlock_ffiVoid_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(bool arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, bool arg0)>()(_id, arg0); + } +} + +abstract class NSProcessInfoThermalState { + static const int NSProcessInfoThermalStateNominal = 0; + static const int NSProcessInfoThermalStateFair = 1; + static const int NSProcessInfoThermalStateSerious = 2; + static const int NSProcessInfoThermalStateCritical = 3; +} + +class NSTextCheckingResult extends NSObject { + NSTextCheckingResult._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSTextCheckingResult] that points to the same underlying object as [other]. + static NSTextCheckingResult castFrom(T other) { + return NSTextCheckingResult._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSTextCheckingResult] that wraps the given raw object pointer. + static NSTextCheckingResult castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSTextCheckingResult._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSTextCheckingResult]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSTextCheckingResult1); + } + + int get resultType { + return _lib._objc_msgSend_887(_id, _lib._sel_resultType1); + } + + void getRange(ffi.Pointer<_NSRange> stret) { + _lib._objc_msgSend_49(stret, _id, _lib._sel_range1); + } + + NSOrthography? get orthography { + final _ret = _lib._objc_msgSend_888(_id, _lib._sel_orthography1); + return _ret.address == 0 + ? null + : NSOrthography._(_ret, _lib, retain: true, release: true); + } + + NSArray? get grammarDetails { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_grammarDetails1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSDate? get date { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_date1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + NSTimeZone? get timeZone { + final _ret = _lib._objc_msgSend_168(_id, _lib._sel_timeZone1); + return _ret.address == 0 + ? null + : NSTimeZone._(_ret, _lib, retain: true, release: true); + } + + double get duration { + return _lib._objc_msgSend_155(_id, _lib._sel_duration1); + } + + NSDictionary? get components { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_components1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSURL? get URL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSString? get replacementString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_replacementString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray? get alternativeStrings { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_alternativeStrings1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSRegularExpression? get regularExpression { + final _ret = _lib._objc_msgSend_900(_id, _lib._sel_regularExpression1); + return _ret.address == 0 + ? null + : NSRegularExpression._(_ret, _lib, retain: true, release: true); + } + + NSString? get phoneNumber { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_phoneNumber1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get numberOfRanges { + return _lib._objc_msgSend_10(_id, _lib._sel_numberOfRanges1); + } + + void rangeAtIndex_(ffi.Pointer<_NSRange> stret, int idx) { + _lib._objc_msgSend_323(stret, _id, _lib._sel_rangeAtIndex_1, idx); + } + + void rangeWithName_(ffi.Pointer<_NSRange> stret, NSString? name) { + _lib._objc_msgSend_316( + stret, _id, _lib._sel_rangeWithName_1, name?._id ?? ffi.nullptr); + } + + NSTextCheckingResult resultByAdjustingRangesWithOffset_(int offset) { + final _ret = _lib._objc_msgSend_901( + _id, _lib._sel_resultByAdjustingRangesWithOffset_1, offset); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get addressComponents { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_addressComponents1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult orthographyCheckingResultWithRange_orthography_( + SentryCocoa _lib, _NSRange range, NSOrthography? orthography) { + final _ret = _lib._objc_msgSend_902( + _lib._class_NSTextCheckingResult1, + _lib._sel_orthographyCheckingResultWithRange_orthography_1, + range, + orthography?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult spellCheckingResultWithRange_( + SentryCocoa _lib, _NSRange range) { + final _ret = _lib._objc_msgSend_903(_lib._class_NSTextCheckingResult1, + _lib._sel_spellCheckingResultWithRange_1, range); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult grammarCheckingResultWithRange_details_( + SentryCocoa _lib, _NSRange range, NSArray? details) { + final _ret = _lib._objc_msgSend_904( + _lib._class_NSTextCheckingResult1, + _lib._sel_grammarCheckingResultWithRange_details_1, + range, + details?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult dateCheckingResultWithRange_date_( + SentryCocoa _lib, _NSRange range, NSDate? date) { + final _ret = _lib._objc_msgSend_905( + _lib._class_NSTextCheckingResult1, + _lib._sel_dateCheckingResultWithRange_date_1, + range, + date?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + dateCheckingResultWithRange_date_timeZone_duration_(SentryCocoa _lib, + _NSRange range, NSDate? date, NSTimeZone? timeZone, double duration) { + final _ret = _lib._objc_msgSend_906( + _lib._class_NSTextCheckingResult1, + _lib._sel_dateCheckingResultWithRange_date_timeZone_duration_1, + range, + date?._id ?? ffi.nullptr, + timeZone?._id ?? ffi.nullptr, + duration); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult addressCheckingResultWithRange_components_( + SentryCocoa _lib, _NSRange range, NSDictionary? components) { + final _ret = _lib._objc_msgSend_907( + _lib._class_NSTextCheckingResult1, + _lib._sel_addressCheckingResultWithRange_components_1, + range, + components?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult linkCheckingResultWithRange_URL_( + SentryCocoa _lib, _NSRange range, NSURL? url) { + final _ret = _lib._objc_msgSend_908( + _lib._class_NSTextCheckingResult1, + _lib._sel_linkCheckingResultWithRange_URL_1, + range, + url?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult quoteCheckingResultWithRange_replacementString_( + SentryCocoa _lib, _NSRange range, NSString? replacementString) { + final _ret = _lib._objc_msgSend_909( + _lib._class_NSTextCheckingResult1, + _lib._sel_quoteCheckingResultWithRange_replacementString_1, + range, + replacementString?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult dashCheckingResultWithRange_replacementString_( + SentryCocoa _lib, _NSRange range, NSString? replacementString) { + final _ret = _lib._objc_msgSend_909( + _lib._class_NSTextCheckingResult1, + _lib._sel_dashCheckingResultWithRange_replacementString_1, + range, + replacementString?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + replacementCheckingResultWithRange_replacementString_( + SentryCocoa _lib, _NSRange range, NSString? replacementString) { + final _ret = _lib._objc_msgSend_909( + _lib._class_NSTextCheckingResult1, + _lib._sel_replacementCheckingResultWithRange_replacementString_1, + range, + replacementString?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + correctionCheckingResultWithRange_replacementString_( + SentryCocoa _lib, _NSRange range, NSString? replacementString) { + final _ret = _lib._objc_msgSend_909( + _lib._class_NSTextCheckingResult1, + _lib._sel_correctionCheckingResultWithRange_replacementString_1, + range, + replacementString?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + correctionCheckingResultWithRange_replacementString_alternativeStrings_( + SentryCocoa _lib, + _NSRange range, + NSString? replacementString, + NSArray? alternativeStrings) { + final _ret = _lib._objc_msgSend_910( + _lib._class_NSTextCheckingResult1, + _lib._sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_1, + range, + replacementString?._id ?? ffi.nullptr, + alternativeStrings?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + regularExpressionCheckingResultWithRanges_count_regularExpression_( + SentryCocoa _lib, + ffi.Pointer<_NSRange> ranges, + int count, + NSRegularExpression? regularExpression) { + final _ret = _lib._objc_msgSend_911( + _lib._class_NSTextCheckingResult1, + _lib._sel_regularExpressionCheckingResultWithRanges_count_regularExpression_1, + ranges, + count, + regularExpression?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult phoneNumberCheckingResultWithRange_phoneNumber_( + SentryCocoa _lib, _NSRange range, NSString? phoneNumber) { + final _ret = _lib._objc_msgSend_909( + _lib._class_NSTextCheckingResult1, + _lib._sel_phoneNumberCheckingResultWithRange_phoneNumber_1, + range, + phoneNumber?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + transitInformationCheckingResultWithRange_components_( + SentryCocoa _lib, _NSRange range, NSDictionary? components) { + final _ret = _lib._objc_msgSend_907( + _lib._class_NSTextCheckingResult1, + _lib._sel_transitInformationCheckingResultWithRange_components_1, + range, + components?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + @override + NSTextCheckingResult init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSTextCheckingResult1, _lib._sel_new1); + return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + } + + static NSTextCheckingResult allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSTextCheckingResult1, _lib._sel_allocWithZone_1, zone); + return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + } + + static NSTextCheckingResult alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSTextCheckingResult1, _lib._sel_alloc1); + return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSTextCheckingResult1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSTextCheckingResult1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSTextCheckingResult1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSTextCheckingResult1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSTextCheckingResult1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSTextCheckingResult1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSTextCheckingResult1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSTextCheckingResult1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSTextCheckingResult1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSTextCheckingType { + static const int NSTextCheckingTypeOrthography = 1; + static const int NSTextCheckingTypeSpelling = 2; + static const int NSTextCheckingTypeGrammar = 4; + static const int NSTextCheckingTypeDate = 8; + static const int NSTextCheckingTypeAddress = 16; + static const int NSTextCheckingTypeLink = 32; + static const int NSTextCheckingTypeQuote = 64; + static const int NSTextCheckingTypeDash = 128; + static const int NSTextCheckingTypeReplacement = 256; + static const int NSTextCheckingTypeCorrection = 512; + static const int NSTextCheckingTypeRegularExpression = 1024; + static const int NSTextCheckingTypePhoneNumber = 2048; + static const int NSTextCheckingTypeTransitInformation = 4096; +} + +class NSRegularExpression extends NSObject { + NSRegularExpression._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSRegularExpression] that points to the same underlying object as [other]. + static NSRegularExpression castFrom(T other) { + return NSRegularExpression._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSRegularExpression] that wraps the given raw object pointer. + static NSRegularExpression castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSRegularExpression._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSRegularExpression]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSRegularExpression1); + } + + static NSRegularExpression regularExpressionWithPattern_options_error_( + SentryCocoa _lib, + NSString? pattern, + int options, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_889( + _lib._class_NSRegularExpression1, + _lib._sel_regularExpressionWithPattern_options_error_1, + pattern?._id ?? ffi.nullptr, + options, + error); + return NSRegularExpression._(_ret, _lib, retain: true, release: true); + } + + NSRegularExpression initWithPattern_options_error_(NSString? pattern, + int options, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_890( + _id, + _lib._sel_initWithPattern_options_error_1, + pattern?._id ?? ffi.nullptr, + options, + error); + return NSRegularExpression._(_ret, _lib, retain: true, release: true); + } + + NSString? get pattern { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_pattern1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get options { + return _lib._objc_msgSend_891(_id, _lib._sel_options1); + } + + int get numberOfCaptureGroups { + return _lib._objc_msgSend_10(_id, _lib._sel_numberOfCaptureGroups1); + } + + static NSString escapedPatternForString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSRegularExpression1, + _lib._sel_escapedPatternForString_1, string?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + void enumerateMatchesInString_options_range_usingBlock_( + NSString? string, + int options, + _NSRange range, + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool block) { + _lib._objc_msgSend_892( + _id, + _lib._sel_enumerateMatchesInString_options_range_usingBlock_1, + string?._id ?? ffi.nullptr, + options, + range, + block._id); + } + + NSArray matchesInString_options_range_( + NSString? string, int options, _NSRange range) { + final _ret = _lib._objc_msgSend_893( + _id, + _lib._sel_matchesInString_options_range_1, + string?._id ?? ffi.nullptr, + options, + range); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + int numberOfMatchesInString_options_range_( + NSString? string, int options, _NSRange range) { + return _lib._objc_msgSend_894( + _id, + _lib._sel_numberOfMatchesInString_options_range_1, + string?._id ?? ffi.nullptr, + options, + range); + } + + NSTextCheckingResult firstMatchInString_options_range_( + NSString? string, int options, _NSRange range) { + final _ret = _lib._objc_msgSend_895( + _id, + _lib._sel_firstMatchInString_options_range_1, + string?._id ?? ffi.nullptr, + options, + range); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + void rangeOfFirstMatchInString_options_range_(ffi.Pointer<_NSRange> stret, + NSString? string, int options, _NSRange range) { + _lib._objc_msgSend_896( + stret, + _id, + _lib._sel_rangeOfFirstMatchInString_options_range_1, + string?._id ?? ffi.nullptr, + options, + range); + } + + NSString stringByReplacingMatchesInString_options_range_withTemplate_( + NSString? string, int options, _NSRange range, NSString? templ) { + final _ret = _lib._objc_msgSend_897( + _id, + _lib._sel_stringByReplacingMatchesInString_options_range_withTemplate_1, + string?._id ?? ffi.nullptr, + options, + range, + templ?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + int replaceMatchesInString_options_range_withTemplate_( + NSMutableString? string, int options, _NSRange range, NSString? templ) { + return _lib._objc_msgSend_898( + _id, + _lib._sel_replaceMatchesInString_options_range_withTemplate_1, + string?._id ?? ffi.nullptr, + options, + range, + templ?._id ?? ffi.nullptr); + } + + NSString replacementStringForResult_inString_offset_template_( + NSTextCheckingResult? result, + NSString? string, + int offset, + NSString? templ) { + final _ret = _lib._objc_msgSend_899( + _id, + _lib._sel_replacementStringForResult_inString_offset_template_1, + result?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr, + offset, + templ?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString escapedTemplateForString_( + SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSRegularExpression1, + _lib._sel_escapedTemplateForString_1, string?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + @override + NSRegularExpression init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSRegularExpression._(_ret, _lib, retain: true, release: true); + } + + static NSRegularExpression new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSRegularExpression1, _lib._sel_new1); + return NSRegularExpression._(_ret, _lib, retain: false, release: true); + } + + static NSRegularExpression allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSRegularExpression1, _lib._sel_allocWithZone_1, zone); + return NSRegularExpression._(_ret, _lib, retain: false, release: true); + } + + static NSRegularExpression alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSRegularExpression1, _lib._sel_alloc1); + return NSRegularExpression._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSRegularExpression1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSRegularExpression1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSRegularExpression1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSRegularExpression1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSRegularExpression1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSRegularExpression1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSRegularExpression1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSRegularExpression1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSRegularExpression1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSRegularExpressionOptions { + static const int NSRegularExpressionCaseInsensitive = 1; + static const int NSRegularExpressionAllowCommentsAndWhitespace = 2; + static const int NSRegularExpressionIgnoreMetacharacters = 4; + static const int NSRegularExpressionDotMatchesLineSeparators = 8; + static const int NSRegularExpressionAnchorsMatchLines = 16; + static const int NSRegularExpressionUseUnixLineSeparators = 32; + static const int NSRegularExpressionUseUnicodeWordBoundaries = 64; +} + +abstract class NSMatchingOptions { + static const int NSMatchingReportProgress = 1; + static const int NSMatchingReportCompletion = 2; + static const int NSMatchingAnchored = 4; + static const int NSMatchingWithTransparentBounds = 8; + static const int NSMatchingWithoutAnchoringBounds = 16; +} + +void + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, ffi.Int32 arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer arg0, int arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ + id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, int, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool + extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Int32 arg1, ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Int32 arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Int32 arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call( + ffi.Pointer arg0, int arg1, ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Int32 arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +abstract class NSMatchingFlags { + static const int NSMatchingProgress = 1; + static const int NSMatchingCompleted = 2; + static const int NSMatchingHitEnd = 4; + static const int NSMatchingRequiredEnd = 8; + static const int NSMatchingInternalError = 16; +} + +class NSURLCache extends NSObject { + NSURLCache._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLCache] that points to the same underlying object as [other]. + static NSURLCache castFrom(T other) { + return NSURLCache._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSURLCache] that wraps the given raw object pointer. + static NSURLCache castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLCache._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLCache]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLCache1); + } + + static NSURLCache? getSharedURLCache(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_912( + _lib._class_NSURLCache1, _lib._sel_sharedURLCache1); + return _ret.address == 0 + ? null + : NSURLCache._(_ret, _lib, retain: true, release: true); + } + + static void setSharedURLCache(SentryCocoa _lib, NSURLCache? value) { + return _lib._objc_msgSend_913(_lib._class_NSURLCache1, + _lib._sel_setSharedURLCache_1, value?._id ?? ffi.nullptr); + } + + NSURLCache initWithMemoryCapacity_diskCapacity_diskPath_( + int memoryCapacity, int diskCapacity, NSString? path) { + final _ret = _lib._objc_msgSend_914( + _id, + _lib._sel_initWithMemoryCapacity_diskCapacity_diskPath_1, + memoryCapacity, + diskCapacity, + path?._id ?? ffi.nullptr); + return NSURLCache._(_ret, _lib, retain: true, release: true); + } + + NSURLCache initWithMemoryCapacity_diskCapacity_directoryURL_( + int memoryCapacity, int diskCapacity, NSURL? directoryURL) { + final _ret = _lib._objc_msgSend_915( + _id, + _lib._sel_initWithMemoryCapacity_diskCapacity_directoryURL_1, + memoryCapacity, + diskCapacity, + directoryURL?._id ?? ffi.nullptr); + return NSURLCache._(_ret, _lib, retain: true, release: true); + } + + NSCachedURLResponse cachedResponseForRequest_(NSURLRequest? request) { + final _ret = _lib._objc_msgSend_919( + _id, _lib._sel_cachedResponseForRequest_1, request?._id ?? ffi.nullptr); + return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + } + + void storeCachedResponse_forRequest_( + NSCachedURLResponse? cachedResponse, NSURLRequest? request) { + _lib._objc_msgSend_920(_id, _lib._sel_storeCachedResponse_forRequest_1, + cachedResponse?._id ?? ffi.nullptr, request?._id ?? ffi.nullptr); + } + + void removeCachedResponseForRequest_(NSURLRequest? request) { + _lib._objc_msgSend_921(_id, _lib._sel_removeCachedResponseForRequest_1, + request?._id ?? ffi.nullptr); + } + + void removeAllCachedResponses() { + _lib._objc_msgSend_1(_id, _lib._sel_removeAllCachedResponses1); + } + + void removeCachedResponsesSinceDate_(NSDate? date) { + _lib._objc_msgSend_504(_id, _lib._sel_removeCachedResponsesSinceDate_1, + date?._id ?? ffi.nullptr); + } + + int get memoryCapacity { + return _lib._objc_msgSend_10(_id, _lib._sel_memoryCapacity1); + } + + set memoryCapacity(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setMemoryCapacity_1, value); + } + + int get diskCapacity { + return _lib._objc_msgSend_10(_id, _lib._sel_diskCapacity1); + } + + set diskCapacity(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setDiskCapacity_1, value); + } + + int get currentMemoryUsage { + return _lib._objc_msgSend_10(_id, _lib._sel_currentMemoryUsage1); + } + + int get currentDiskUsage { + return _lib._objc_msgSend_10(_id, _lib._sel_currentDiskUsage1); + } + + void storeCachedResponse_forDataTask_( + NSCachedURLResponse? cachedResponse, NSURLSessionDataTask? dataTask) { + _lib._objc_msgSend_922(_id, _lib._sel_storeCachedResponse_forDataTask_1, + cachedResponse?._id ?? ffi.nullptr, dataTask?._id ?? ffi.nullptr); + } + + void getCachedResponseForDataTask_completionHandler_( + NSURLSessionDataTask? dataTask, + ObjCBlock_ffiVoid_NSCachedURLResponse completionHandler) { + _lib._objc_msgSend_923( + _id, + _lib._sel_getCachedResponseForDataTask_completionHandler_1, + dataTask?._id ?? ffi.nullptr, + completionHandler._id); + } + + void removeCachedResponseForDataTask_(NSURLSessionDataTask? dataTask) { + _lib._objc_msgSend_924(_id, _lib._sel_removeCachedResponseForDataTask_1, + dataTask?._id ?? ffi.nullptr); + } + + @override + NSURLCache init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLCache._(_ret, _lib, retain: true, release: true); + } + + static NSURLCache new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLCache1, _lib._sel_new1); + return NSURLCache._(_ret, _lib, retain: false, release: true); + } + + static NSURLCache allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLCache1, _lib._sel_allocWithZone_1, zone); + return NSURLCache._(_ret, _lib, retain: false, release: true); + } + + static NSURLCache alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLCache1, _lib._sel_alloc1); + return NSURLCache._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLCache1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLCache1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLCache1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLCache1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLCache1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLCache1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLCache1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSURLCache1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLCache1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSCachedURLResponse extends NSObject { + NSCachedURLResponse._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSCachedURLResponse] that points to the same underlying object as [other]. + static NSCachedURLResponse castFrom(T other) { + return NSCachedURLResponse._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSCachedURLResponse] that wraps the given raw object pointer. + static NSCachedURLResponse castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSCachedURLResponse._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSCachedURLResponse]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSCachedURLResponse1); + } + + NSCachedURLResponse initWithResponse_data_( + NSURLResponse? response, NSData? data) { + final _ret = _lib._objc_msgSend_916(_id, _lib._sel_initWithResponse_data_1, + response?._id ?? ffi.nullptr, data?._id ?? ffi.nullptr); + return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + } + + NSCachedURLResponse initWithResponse_data_userInfo_storagePolicy_( + NSURLResponse? response, + NSData? data, + NSDictionary? userInfo, + int storagePolicy) { + final _ret = _lib._objc_msgSend_917( + _id, + _lib._sel_initWithResponse_data_userInfo_storagePolicy_1, + response?._id ?? ffi.nullptr, + data?._id ?? ffi.nullptr, + userInfo?._id ?? ffi.nullptr, + storagePolicy); + return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + } + + NSURLResponse? get response { + final _ret = _lib._objc_msgSend_831(_id, _lib._sel_response1); + return _ret.address == 0 + ? null + : NSURLResponse._(_ret, _lib, retain: true, release: true); + } + + NSData? get data { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_data1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get userInfo { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_userInfo1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + int get storagePolicy { + return _lib._objc_msgSend_918(_id, _lib._sel_storagePolicy1); + } + + @override + NSCachedURLResponse init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + } + + static NSCachedURLResponse new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSCachedURLResponse1, _lib._sel_new1); + return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); + } + + static NSCachedURLResponse allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSCachedURLResponse1, _lib._sel_allocWithZone_1, zone); + return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); + } + + static NSCachedURLResponse alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSCachedURLResponse1, _lib._sel_alloc1); + return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSCachedURLResponse1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSCachedURLResponse1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSCachedURLResponse1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSCachedURLResponse1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSCachedURLResponse1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSCachedURLResponse1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSCachedURLResponse1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSCachedURLResponse1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSCachedURLResponse1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSURLCacheStoragePolicy { + static const int NSURLCacheStorageAllowed = 0; + static const int NSURLCacheStorageAllowedInMemoryOnly = 1; + static const int NSURLCacheStorageNotAllowed = 2; +} + +class NSURLSessionDataTask extends NSURLSessionTask { + NSURLSessionDataTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSessionDataTask] that points to the same underlying object as [other]. + static NSURLSessionDataTask castFrom(T other) { + return NSURLSessionDataTask._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLSessionDataTask] that wraps the given raw object pointer. + static NSURLSessionDataTask castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionDataTask._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLSessionDataTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionDataTask1); + } + + @override + NSURLSessionDataTask init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + } + + static NSURLSessionDataTask new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLSessionDataTask1, _lib._sel_new1); + return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + } + + static NSURLSessionDataTask allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLSessionDataTask1, _lib._sel_allocWithZone_1, zone); + return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + } + + static NSURLSessionDataTask alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionDataTask1, _lib._sel_alloc1); + return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLSessionDataTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLSessionDataTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionDataTask1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLSessionDataTask1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSessionDataTask1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSessionDataTask1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSessionDataTask1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionDataTask1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionDataTask1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +void _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[block + .ref.target.address] as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSCachedURLResponse extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSCachedURLResponse._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +class NSURLConnection extends NSObject { + NSURLConnection._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLConnection] that points to the same underlying object as [other]. + static NSURLConnection castFrom(T other) { + return NSURLConnection._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLConnection] that wraps the given raw object pointer. + static NSURLConnection castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLConnection._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLConnection]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLConnection1); + } + + NSURLConnection initWithRequest_delegate_startImmediately_( + NSURLRequest? request, NSObject delegate, bool startImmediately) { + final _ret = _lib._objc_msgSend_925( + _id, + _lib._sel_initWithRequest_delegate_startImmediately_1, + request?._id ?? ffi.nullptr, + delegate._id, + startImmediately); + return NSURLConnection._(_ret, _lib, retain: true, release: true); + } + + NSURLConnection initWithRequest_delegate_( + NSURLRequest? request, NSObject delegate) { + final _ret = _lib._objc_msgSend_926( + _id, + _lib._sel_initWithRequest_delegate_1, + request?._id ?? ffi.nullptr, + delegate._id); + return NSURLConnection._(_ret, _lib, retain: true, release: true); + } + + static NSURLConnection connectionWithRequest_delegate_( + SentryCocoa _lib, NSURLRequest? request, NSObject delegate) { + final _ret = _lib._objc_msgSend_927( + _lib._class_NSURLConnection1, + _lib._sel_connectionWithRequest_delegate_1, + request?._id ?? ffi.nullptr, + delegate._id); + return NSURLConnection._(_ret, _lib, retain: true, release: true); + } + + NSURLRequest? get originalRequest { + final _ret = _lib._objc_msgSend_829(_id, _lib._sel_originalRequest1); + return _ret.address == 0 + ? null + : NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + NSURLRequest? get currentRequest { + final _ret = _lib._objc_msgSend_829(_id, _lib._sel_currentRequest1); + return _ret.address == 0 + ? null + : NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + void start() { + _lib._objc_msgSend_1(_id, _lib._sel_start1); + } + + void cancel() { + _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + } + + void scheduleInRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_scheduleInRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); + } + + void unscheduleFromRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_unscheduleFromRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); + } + + void setDelegateQueue_(NSOperationQueue? queue) { + _lib._objc_msgSend_928( + _id, _lib._sel_setDelegateQueue_1, queue?._id ?? ffi.nullptr); + } + + static bool canHandleRequest_(SentryCocoa _lib, NSURLRequest? request) { + return _lib._objc_msgSend_929(_lib._class_NSURLConnection1, + _lib._sel_canHandleRequest_1, request?._id ?? ffi.nullptr); + } + + static NSData sendSynchronousRequest_returningResponse_error_( + SentryCocoa _lib, + NSURLRequest? request, + ffi.Pointer> response, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_930( + _lib._class_NSURLConnection1, + _lib._sel_sendSynchronousRequest_returningResponse_error_1, + request?._id ?? ffi.nullptr, + response, + error); + return NSData._(_ret, _lib, retain: true, release: true); + } + + static void sendAsynchronousRequest_queue_completionHandler_( + SentryCocoa _lib, + NSURLRequest? request, + NSOperationQueue? queue, + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError handler) { + _lib._objc_msgSend_931( + _lib._class_NSURLConnection1, + _lib._sel_sendAsynchronousRequest_queue_completionHandler_1, + request?._id ?? ffi.nullptr, + queue?._id ?? ffi.nullptr, + handler._id); + } + + @override + NSURLConnection init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLConnection._(_ret, _lib, retain: true, release: true); + } + + static NSURLConnection new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLConnection1, _lib._sel_new1); + return NSURLConnection._(_ret, _lib, retain: false, release: true); + } + + static NSURLConnection allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLConnection1, _lib._sel_allocWithZone_1, zone); + return NSURLConnection._(_ret, _lib, retain: false, release: true); + } + + static NSURLConnection alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLConnection1, _lib._sel_alloc1); + return NSURLConnection._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLConnection1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLConnection1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLConnection1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLConnection1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLConnection1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLConnection1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLConnection1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLConnection1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLConnection1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +class NSURLCredential extends NSObject { + NSURLCredential._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLCredential] that points to the same underlying object as [other]. + static NSURLCredential castFrom(T other) { + return NSURLCredential._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLCredential] that wraps the given raw object pointer. + static NSURLCredential castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLCredential._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLCredential]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLCredential1); + } + + int get persistence { + return _lib._objc_msgSend_932(_id, _lib._sel_persistence1); + } + + NSURLCredential initWithUser_password_persistence_( + NSString? user, NSString? password, int persistence) { + final _ret = _lib._objc_msgSend_933( + _id, + _lib._sel_initWithUser_password_persistence_1, + user?._id ?? ffi.nullptr, + password?._id ?? ffi.nullptr, + persistence); + return NSURLCredential._(_ret, _lib, retain: true, release: true); + } + + static NSURLCredential credentialWithUser_password_persistence_( + SentryCocoa _lib, NSString? user, NSString? password, int persistence) { + final _ret = _lib._objc_msgSend_934( + _lib._class_NSURLCredential1, + _lib._sel_credentialWithUser_password_persistence_1, + user?._id ?? ffi.nullptr, + password?._id ?? ffi.nullptr, + persistence); + return NSURLCredential._(_ret, _lib, retain: true, release: true); + } + + NSString? get user { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_user1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get password { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_password1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + bool get hasPassword { + return _lib._objc_msgSend_12(_id, _lib._sel_hasPassword1); + } + + NSURLCredential initWithIdentity_certificates_persistence_( + ffi.Pointer<__SecIdentity> identity, + NSArray? certArray, + int persistence) { + final _ret = _lib._objc_msgSend_935( + _id, + _lib._sel_initWithIdentity_certificates_persistence_1, + identity, + certArray?._id ?? ffi.nullptr, + persistence); + return NSURLCredential._(_ret, _lib, retain: true, release: true); + } + + static NSURLCredential credentialWithIdentity_certificates_persistence_( + SentryCocoa _lib, + ffi.Pointer<__SecIdentity> identity, + NSArray? certArray, + int persistence) { + final _ret = _lib._objc_msgSend_936( + _lib._class_NSURLCredential1, + _lib._sel_credentialWithIdentity_certificates_persistence_1, + identity, + certArray?._id ?? ffi.nullptr, + persistence); + return NSURLCredential._(_ret, _lib, retain: true, release: true); + } + + ffi.Pointer<__SecIdentity> get identity { + return _lib._objc_msgSend_937(_id, _lib._sel_identity1); + } + + NSArray? get certificates { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_certificates1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSURLCredential initWithTrust_(ffi.Pointer<__SecTrust> trust) { + final _ret = _lib._objc_msgSend_938(_id, _lib._sel_initWithTrust_1, trust); + return NSURLCredential._(_ret, _lib, retain: true, release: true); + } + + static NSURLCredential credentialForTrust_( + SentryCocoa _lib, ffi.Pointer<__SecTrust> trust) { + final _ret = _lib._objc_msgSend_939( + _lib._class_NSURLCredential1, _lib._sel_credentialForTrust_1, trust); + return NSURLCredential._(_ret, _lib, retain: true, release: true); + } + + @override + NSURLCredential init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLCredential._(_ret, _lib, retain: true, release: true); + } + + static NSURLCredential new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLCredential1, _lib._sel_new1); + return NSURLCredential._(_ret, _lib, retain: false, release: true); + } + + static NSURLCredential allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLCredential1, _lib._sel_allocWithZone_1, zone); + return NSURLCredential._(_ret, _lib, retain: false, release: true); + } + + static NSURLCredential alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLCredential1, _lib._sel_alloc1); + return NSURLCredential._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLCredential1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLCredential1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLCredential1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLCredential1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLCredential1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLCredential1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLCredential1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLCredential1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLCredential1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSURLCredentialPersistence { + static const int NSURLCredentialPersistenceNone = 0; + static const int NSURLCredentialPersistenceForSession = 1; + static const int NSURLCredentialPersistencePermanent = 2; + static const int NSURLCredentialPersistenceSynchronizable = 3; +} + +class __SecIdentity extends ffi.Opaque {} + +class __SecTrust extends ffi.Opaque {} + +class NSURLProtectionSpace extends NSObject { + NSURLProtectionSpace._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLProtectionSpace] that points to the same underlying object as [other]. + static NSURLProtectionSpace castFrom(T other) { + return NSURLProtectionSpace._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLProtectionSpace] that wraps the given raw object pointer. + static NSURLProtectionSpace castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLProtectionSpace._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLProtectionSpace]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLProtectionSpace1); + } + + NSURLProtectionSpace initWithHost_port_protocol_realm_authenticationMethod_( + NSString? host, + int port, + NSString? protocol, + NSString? realm, + NSString? authenticationMethod) { + final _ret = _lib._objc_msgSend_940( + _id, + _lib._sel_initWithHost_port_protocol_realm_authenticationMethod_1, + host?._id ?? ffi.nullptr, + port, + protocol?._id ?? ffi.nullptr, + realm?._id ?? ffi.nullptr, + authenticationMethod?._id ?? ffi.nullptr); + return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + } + + NSURLProtectionSpace initWithProxyHost_port_type_realm_authenticationMethod_( + NSString? host, + int port, + NSString? type, + NSString? realm, + NSString? authenticationMethod) { + final _ret = _lib._objc_msgSend_940( + _id, + _lib._sel_initWithProxyHost_port_type_realm_authenticationMethod_1, + host?._id ?? ffi.nullptr, + port, + type?._id ?? ffi.nullptr, + realm?._id ?? ffi.nullptr, + authenticationMethod?._id ?? ffi.nullptr); + return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + } + + NSString? get realm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_realm1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + bool get receivesCredentialSecurely { + return _lib._objc_msgSend_12(_id, _lib._sel_receivesCredentialSecurely1); + } + + bool get isProxy { + return _lib._objc_msgSend_12(_id, _lib._sel_isProxy1); + } + + NSString? get host { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_host1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get port { + return _lib._objc_msgSend_78(_id, _lib._sel_port1); + } + + NSString? get proxyType { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_proxyType1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get protocol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_protocol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get authenticationMethod { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_authenticationMethod1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray? get distinguishedNames { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_distinguishedNames1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + ffi.Pointer<__SecTrust> get serverTrust { + return _lib._objc_msgSend_941(_id, _lib._sel_serverTrust1); + } + + @override + NSURLProtectionSpace init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + } + + static NSURLProtectionSpace new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLProtectionSpace1, _lib._sel_new1); + return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + } + + static NSURLProtectionSpace allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLProtectionSpace1, _lib._sel_allocWithZone_1, zone); + return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + } + + static NSURLProtectionSpace alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLProtectionSpace1, _lib._sel_alloc1); + return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLProtectionSpace1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLProtectionSpace1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLProtectionSpace1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLProtectionSpace1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLProtectionSpace1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLProtectionSpace1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLProtectionSpace1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLProtectionSpace1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLProtectionSpace1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSURLCredentialStorage extends NSObject { + NSURLCredentialStorage._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLCredentialStorage] that points to the same underlying object as [other]. + static NSURLCredentialStorage castFrom(T other) { + return NSURLCredentialStorage._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLCredentialStorage] that wraps the given raw object pointer. + static NSURLCredentialStorage castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLCredentialStorage._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLCredentialStorage]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLCredentialStorage1); + } + + static NSURLCredentialStorage? getSharedCredentialStorage(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_942(_lib._class_NSURLCredentialStorage1, + _lib._sel_sharedCredentialStorage1); + return _ret.address == 0 + ? null + : NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + } + + NSDictionary credentialsForProtectionSpace_(NSURLProtectionSpace? space) { + final _ret = _lib._objc_msgSend_943(_id, + _lib._sel_credentialsForProtectionSpace_1, space?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get allCredentials { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_allCredentials1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + void setCredential_forProtectionSpace_( + NSURLCredential? credential, NSURLProtectionSpace? space) { + _lib._objc_msgSend_944(_id, _lib._sel_setCredential_forProtectionSpace_1, + credential?._id ?? ffi.nullptr, space?._id ?? ffi.nullptr); + } + + void removeCredential_forProtectionSpace_( + NSURLCredential? credential, NSURLProtectionSpace? space) { + _lib._objc_msgSend_944(_id, _lib._sel_removeCredential_forProtectionSpace_1, + credential?._id ?? ffi.nullptr, space?._id ?? ffi.nullptr); + } + + void removeCredential_forProtectionSpace_options_(NSURLCredential? credential, + NSURLProtectionSpace? space, NSDictionary? options) { + _lib._objc_msgSend_945( + _id, + _lib._sel_removeCredential_forProtectionSpace_options_1, + credential?._id ?? ffi.nullptr, + space?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr); + } + + NSURLCredential defaultCredentialForProtectionSpace_( + NSURLProtectionSpace? space) { + final _ret = _lib._objc_msgSend_946( + _id, + _lib._sel_defaultCredentialForProtectionSpace_1, + space?._id ?? ffi.nullptr); + return NSURLCredential._(_ret, _lib, retain: true, release: true); + } + + void setDefaultCredential_forProtectionSpace_( + NSURLCredential? credential, NSURLProtectionSpace? space) { + _lib._objc_msgSend_944( + _id, + _lib._sel_setDefaultCredential_forProtectionSpace_1, + credential?._id ?? ffi.nullptr, + space?._id ?? ffi.nullptr); + } + + void getCredentialsForProtectionSpace_task_completionHandler_( + NSURLProtectionSpace? protectionSpace, + NSURLSessionTask? task, + ObjCBlock_ffiVoid_NSDictionary completionHandler) { + _lib._objc_msgSend_947( + _id, + _lib._sel_getCredentialsForProtectionSpace_task_completionHandler_1, + protectionSpace?._id ?? ffi.nullptr, + task?._id ?? ffi.nullptr, + completionHandler._id); + } + + void setCredential_forProtectionSpace_task_(NSURLCredential? credential, + NSURLProtectionSpace? protectionSpace, NSURLSessionTask? task) { + _lib._objc_msgSend_948( + _id, + _lib._sel_setCredential_forProtectionSpace_task_1, + credential?._id ?? ffi.nullptr, + protectionSpace?._id ?? ffi.nullptr, + task?._id ?? ffi.nullptr); + } + + void removeCredential_forProtectionSpace_options_task_( + NSURLCredential? credential, + NSURLProtectionSpace? protectionSpace, + NSDictionary? options, + NSURLSessionTask? task) { + _lib._objc_msgSend_949( + _id, + _lib._sel_removeCredential_forProtectionSpace_options_task_1, + credential?._id ?? ffi.nullptr, + protectionSpace?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr, + task?._id ?? ffi.nullptr); + } + + void getDefaultCredentialForProtectionSpace_task_completionHandler_( + NSURLProtectionSpace? space, + NSURLSessionTask? task, + ObjCBlock_ffiVoid_NSURLCredential completionHandler) { + _lib._objc_msgSend_950( + _id, + _lib._sel_getDefaultCredentialForProtectionSpace_task_completionHandler_1, + space?._id ?? ffi.nullptr, + task?._id ?? ffi.nullptr, + completionHandler._id); + } + + void setDefaultCredential_forProtectionSpace_task_( + NSURLCredential? credential, + NSURLProtectionSpace? protectionSpace, + NSURLSessionTask? task) { + _lib._objc_msgSend_948( + _id, + _lib._sel_setDefaultCredential_forProtectionSpace_task_1, + credential?._id ?? ffi.nullptr, + protectionSpace?._id ?? ffi.nullptr, + task?._id ?? ffi.nullptr); + } + + @override + NSURLCredentialStorage init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + } + + static NSURLCredentialStorage new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLCredentialStorage1, _lib._sel_new1); + return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + } + + static NSURLCredentialStorage allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLCredentialStorage1, _lib._sel_allocWithZone_1, zone); + return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + } + + static NSURLCredentialStorage alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLCredentialStorage1, _lib._sel_alloc1); + return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLCredentialStorage1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLCredentialStorage1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLCredentialStorage1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLCredentialStorage1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLCredentialStorage1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLCredentialStorage1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLCredentialStorage1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLCredentialStorage1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLCredentialStorage1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +void _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSDictionary_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDictionary_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSDictionary_closureRegistry[block + .ref.target.address] as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSDictionary extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSDictionary._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSDictionary.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSDictionary.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +void _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[block + .ref.target.address] as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSURLCredential extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLCredential._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSURLCredential.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSURLCredential.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSURLCredential_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +class NSURLProtocol extends NSObject { + NSURLProtocol._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLProtocol] that points to the same underlying object as [other]. + static NSURLProtocol castFrom(T other) { + return NSURLProtocol._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSURLProtocol] that wraps the given raw object pointer. + static NSURLProtocol castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLProtocol._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLProtocol]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLProtocol1); + } + + NSURLProtocol initWithRequest_cachedResponse_client_(NSURLRequest? request, + NSCachedURLResponse? cachedResponse, NSObject? client) { + final _ret = _lib._objc_msgSend_951( + _id, + _lib._sel_initWithRequest_cachedResponse_client_1, + request?._id ?? ffi.nullptr, + cachedResponse?._id ?? ffi.nullptr, + client?._id ?? ffi.nullptr); + return NSURLProtocol._(_ret, _lib, retain: true, release: true); + } + + NSObject? get client { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_client1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + NSURLRequest? get request { + final _ret = _lib._objc_msgSend_829(_id, _lib._sel_request1); + return _ret.address == 0 + ? null + : NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + NSCachedURLResponse? get cachedResponse { + final _ret = _lib._objc_msgSend_952(_id, _lib._sel_cachedResponse1); + return _ret.address == 0 + ? null + : NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + } + + static bool canInitWithRequest_(SentryCocoa _lib, NSURLRequest? request) { + return _lib._objc_msgSend_929(_lib._class_NSURLProtocol1, + _lib._sel_canInitWithRequest_1, request?._id ?? ffi.nullptr); + } + + static NSURLRequest canonicalRequestForRequest_( + SentryCocoa _lib, NSURLRequest? request) { + final _ret = _lib._objc_msgSend_953(_lib._class_NSURLProtocol1, + _lib._sel_canonicalRequestForRequest_1, request?._id ?? ffi.nullptr); + return NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + static bool requestIsCacheEquivalent_toRequest_( + SentryCocoa _lib, NSURLRequest? a, NSURLRequest? b) { + return _lib._objc_msgSend_954( + _lib._class_NSURLProtocol1, + _lib._sel_requestIsCacheEquivalent_toRequest_1, + a?._id ?? ffi.nullptr, + b?._id ?? ffi.nullptr); + } + + void startLoading() { + _lib._objc_msgSend_1(_id, _lib._sel_startLoading1); + } + + void stopLoading() { + _lib._objc_msgSend_1(_id, _lib._sel_stopLoading1); + } + + static NSObject propertyForKey_inRequest_( + SentryCocoa _lib, NSString? key, NSURLRequest? request) { + final _ret = _lib._objc_msgSend_955( + _lib._class_NSURLProtocol1, + _lib._sel_propertyForKey_inRequest_1, + key?._id ?? ffi.nullptr, + request?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static void setProperty_forKey_inRequest_(SentryCocoa _lib, NSObject value, + NSString? key, NSMutableURLRequest? request) { + _lib._objc_msgSend_961( + _lib._class_NSURLProtocol1, + _lib._sel_setProperty_forKey_inRequest_1, + value._id, + key?._id ?? ffi.nullptr, + request?._id ?? ffi.nullptr); + } + + static void removePropertyForKey_inRequest_( + SentryCocoa _lib, NSString? key, NSMutableURLRequest? request) { + _lib._objc_msgSend_962( + _lib._class_NSURLProtocol1, + _lib._sel_removePropertyForKey_inRequest_1, + key?._id ?? ffi.nullptr, + request?._id ?? ffi.nullptr); + } + + static bool registerClass_(SentryCocoa _lib, NSObject protocolClass) { + return _lib._objc_msgSend_0(_lib._class_NSURLProtocol1, + _lib._sel_registerClass_1, protocolClass._id); + } + + static void unregisterClass_(SentryCocoa _lib, NSObject protocolClass) { + _lib._objc_msgSend_15(_lib._class_NSURLProtocol1, + _lib._sel_unregisterClass_1, protocolClass._id); + } + + static bool canInitWithTask_(SentryCocoa _lib, NSURLSessionTask? task) { + return _lib._objc_msgSend_963(_lib._class_NSURLProtocol1, + _lib._sel_canInitWithTask_1, task?._id ?? ffi.nullptr); + } + + NSURLProtocol initWithTask_cachedResponse_client_(NSURLSessionTask? task, + NSCachedURLResponse? cachedResponse, NSObject? client) { + final _ret = _lib._objc_msgSend_964( + _id, + _lib._sel_initWithTask_cachedResponse_client_1, + task?._id ?? ffi.nullptr, + cachedResponse?._id ?? ffi.nullptr, + client?._id ?? ffi.nullptr); + return NSURLProtocol._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionTask? get task { + final _ret = _lib._objc_msgSend_965(_id, _lib._sel_task1); + return _ret.address == 0 + ? null + : NSURLSessionTask._(_ret, _lib, retain: true, release: true); + } + + @override + NSURLProtocol init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLProtocol._(_ret, _lib, retain: true, release: true); + } + + static NSURLProtocol new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLProtocol1, _lib._sel_new1); + return NSURLProtocol._(_ret, _lib, retain: false, release: true); + } + + static NSURLProtocol allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLProtocol1, _lib._sel_allocWithZone_1, zone); + return NSURLProtocol._(_ret, _lib, retain: false, release: true); + } + + static NSURLProtocol alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLProtocol1, _lib._sel_alloc1); + return NSURLProtocol._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLProtocol1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLProtocol1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLProtocol1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLProtocol1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLProtocol1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLProtocol1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLProtocol1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSURLProtocol1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLProtocol1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSMutableURLRequest extends NSURLRequest { + NSMutableURLRequest._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMutableURLRequest] that points to the same underlying object as [other]. + static NSMutableURLRequest castFrom(T other) { + return NSMutableURLRequest._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSMutableURLRequest] that wraps the given raw object pointer. + static NSMutableURLRequest castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMutableURLRequest._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMutableURLRequest]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMutableURLRequest1); + } + + @override + NSURL? get URL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + set URL(NSURL? value) { + return _lib._objc_msgSend_655( + _id, _lib._sel_setURL_1, value?._id ?? ffi.nullptr); + } + + @override + int get cachePolicy { + return _lib._objc_msgSend_816(_id, _lib._sel_cachePolicy1); + } + + set cachePolicy(int value) { + return _lib._objc_msgSend_956(_id, _lib._sel_setCachePolicy_1, value); + } + + @override + double get timeoutInterval { + return _lib._objc_msgSend_155(_id, _lib._sel_timeoutInterval1); + } + + set timeoutInterval(double value) { + return _lib._objc_msgSend_506(_id, _lib._sel_setTimeoutInterval_1, value); + } + + @override + NSURL? get mainDocumentURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_mainDocumentURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + set mainDocumentURL(NSURL? value) { + return _lib._objc_msgSend_655( + _id, _lib._sel_setMainDocumentURL_1, value?._id ?? ffi.nullptr); + } + + @override + int get networkServiceType { + return _lib._objc_msgSend_817(_id, _lib._sel_networkServiceType1); + } + + set networkServiceType(int value) { + return _lib._objc_msgSend_957( + _id, _lib._sel_setNetworkServiceType_1, value); + } + + @override + bool get allowsCellularAccess { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); + } + + set allowsCellularAccess(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAllowsCellularAccess_1, value); + } + + @override + bool get allowsExpensiveNetworkAccess { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); + } + + set allowsExpensiveNetworkAccess(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAllowsExpensiveNetworkAccess_1, value); + } + + @override + bool get allowsConstrainedNetworkAccess { + return _lib._objc_msgSend_12( + _id, _lib._sel_allowsConstrainedNetworkAccess1); + } + + set allowsConstrainedNetworkAccess(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAllowsConstrainedNetworkAccess_1, value); + } + + @override + bool get assumesHTTP3Capable { + return _lib._objc_msgSend_12(_id, _lib._sel_assumesHTTP3Capable1); + } + + set assumesHTTP3Capable(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAssumesHTTP3Capable_1, value); + } + + @override + int get attribution { + return _lib._objc_msgSend_818(_id, _lib._sel_attribution1); + } + + set attribution(int value) { + return _lib._objc_msgSend_958(_id, _lib._sel_setAttribution_1, value); + } + + @override + bool get requiresDNSSECValidation { + return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); + } + + set requiresDNSSECValidation(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setRequiresDNSSECValidation_1, value); + } + + @override + NSString? get HTTPMethod { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_HTTPMethod1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set HTTPMethod(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setHTTPMethod_1, value?._id ?? ffi.nullptr); + } + + @override + NSDictionary? get allHTTPHeaderFields { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_allHTTPHeaderFields1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set allHTTPHeaderFields(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, _lib._sel_setAllHTTPHeaderFields_1, value?._id ?? ffi.nullptr); + } + + void setValue_forHTTPHeaderField_(NSString? value, NSString? field) { + _lib._objc_msgSend_515(_id, _lib._sel_setValue_forHTTPHeaderField_1, + value?._id ?? ffi.nullptr, field?._id ?? ffi.nullptr); + } + + void addValue_forHTTPHeaderField_(NSString? value, NSString? field) { + _lib._objc_msgSend_515(_id, _lib._sel_addValue_forHTTPHeaderField_1, + value?._id ?? ffi.nullptr, field?._id ?? ffi.nullptr); + } + + @override + NSData? get HTTPBody { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_HTTPBody1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + set HTTPBody(NSData? value) { + return _lib._objc_msgSend_959( + _id, _lib._sel_setHTTPBody_1, value?._id ?? ffi.nullptr); + } + + @override + NSInputStream? get HTTPBodyStream { + final _ret = _lib._objc_msgSend_828(_id, _lib._sel_HTTPBodyStream1); + return _ret.address == 0 + ? null + : NSInputStream._(_ret, _lib, retain: true, release: true); + } + + set HTTPBodyStream(NSInputStream? value) { + return _lib._objc_msgSend_960( + _id, _lib._sel_setHTTPBodyStream_1, value?._id ?? ffi.nullptr); + } + + @override + bool get HTTPShouldHandleCookies { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldHandleCookies1); + } + + set HTTPShouldHandleCookies(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setHTTPShouldHandleCookies_1, value); + } + + @override + bool get HTTPShouldUsePipelining { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); + } + + set HTTPShouldUsePipelining(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setHTTPShouldUsePipelining_1, value); + } + + static NSMutableURLRequest requestWithURL_(SentryCocoa _lib, NSURL? URL) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSMutableURLRequest1, + _lib._sel_requestWithURL_1, URL?._id ?? ffi.nullptr); + return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + } + + static bool getSupportsSecureCoding(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableURLRequest1, _lib._sel_supportsSecureCoding1); + } + + static NSMutableURLRequest requestWithURL_cachePolicy_timeoutInterval_( + SentryCocoa _lib, NSURL? URL, int cachePolicy, double timeoutInterval) { + final _ret = _lib._objc_msgSend_815( + _lib._class_NSMutableURLRequest1, + _lib._sel_requestWithURL_cachePolicy_timeoutInterval_1, + URL?._id ?? ffi.nullptr, + cachePolicy, + timeoutInterval); + return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableURLRequest initWithURL_(NSURL? URL) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithURL_1, URL?._id ?? ffi.nullptr); + return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableURLRequest initWithURL_cachePolicy_timeoutInterval_( + NSURL? URL, int cachePolicy, double timeoutInterval) { + final _ret = _lib._objc_msgSend_815( + _id, + _lib._sel_initWithURL_cachePolicy_timeoutInterval_1, + URL?._id ?? ffi.nullptr, + cachePolicy, + timeoutInterval); + return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableURLRequest init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + } + + static NSMutableURLRequest new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSMutableURLRequest1, _lib._sel_new1); + return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); + } + + static NSMutableURLRequest allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSMutableURLRequest1, _lib._sel_allocWithZone_1, zone); + return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); + } + + static NSMutableURLRequest alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableURLRequest1, _lib._sel_alloc1); + return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSMutableURLRequest1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSMutableURLRequest1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSMutableURLRequest1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableURLRequest1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSMutableURLRequest1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSMutableURLRequest1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSMutableURLRequest1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSMutableURLRequest1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableURLRequest1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSXMLParser extends NSObject { + NSXMLParser._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSXMLParser] that points to the same underlying object as [other]. + static NSXMLParser castFrom(T other) { + return NSXMLParser._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSXMLParser] that wraps the given raw object pointer. + static NSXMLParser castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSXMLParser._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSXMLParser]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLParser1); + } + + NSXMLParser initWithContentsOfURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSXMLParser._(_ret, _lib, retain: true, release: true); + } + + NSXMLParser initWithData_(NSData? data) { + final _ret = _lib._objc_msgSend_257( + _id, _lib._sel_initWithData_1, data?._id ?? ffi.nullptr); + return NSXMLParser._(_ret, _lib, retain: true, release: true); + } + + NSXMLParser initWithStream_(NSInputStream? stream) { + final _ret = _lib._objc_msgSend_966( + _id, _lib._sel_initWithStream_1, stream?._id ?? ffi.nullptr); + return NSXMLParser._(_ret, _lib, retain: true, release: true); + } + + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + set delegate(NSObject? value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + } + + bool get shouldProcessNamespaces { + return _lib._objc_msgSend_12(_id, _lib._sel_shouldProcessNamespaces1); + } + + set shouldProcessNamespaces(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setShouldProcessNamespaces_1, value); + } + + bool get shouldReportNamespacePrefixes { + return _lib._objc_msgSend_12(_id, _lib._sel_shouldReportNamespacePrefixes1); + } + + set shouldReportNamespacePrefixes(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setShouldReportNamespacePrefixes_1, value); + } + + int get externalEntityResolvingPolicy { + return _lib._objc_msgSend_967( + _id, _lib._sel_externalEntityResolvingPolicy1); + } + + set externalEntityResolvingPolicy(int value) { + return _lib._objc_msgSend_968( + _id, _lib._sel_setExternalEntityResolvingPolicy_1, value); + } + + NSSet? get allowedExternalEntityURLs { + final _ret = + _lib._objc_msgSend_295(_id, _lib._sel_allowedExternalEntityURLs1); + return _ret.address == 0 + ? null + : NSSet._(_ret, _lib, retain: true, release: true); + } + + set allowedExternalEntityURLs(NSSet? value) { + return _lib._objc_msgSend_969(_id, _lib._sel_setAllowedExternalEntityURLs_1, + value?._id ?? ffi.nullptr); + } + + bool parse() { + return _lib._objc_msgSend_12(_id, _lib._sel_parse1); + } + + void abortParsing() { + _lib._objc_msgSend_1(_id, _lib._sel_abortParsing1); + } + + NSError? get parserError { + final _ret = _lib._objc_msgSend_298(_id, _lib._sel_parserError1); + return _ret.address == 0 + ? null + : NSError._(_ret, _lib, retain: true, release: true); + } + + bool get shouldResolveExternalEntities { + return _lib._objc_msgSend_12(_id, _lib._sel_shouldResolveExternalEntities1); + } + + set shouldResolveExternalEntities(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setShouldResolveExternalEntities_1, value); + } + + NSString? get publicID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_publicID1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get systemID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_systemID1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get lineNumber { + return _lib._objc_msgSend_78(_id, _lib._sel_lineNumber1); + } + + int get columnNumber { + return _lib._objc_msgSend_78(_id, _lib._sel_columnNumber1); + } + + @override + NSXMLParser init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSXMLParser._(_ret, _lib, retain: true, release: true); + } + + static NSXMLParser new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLParser1, _lib._sel_new1); + return NSXMLParser._(_ret, _lib, retain: false, release: true); + } + + static NSXMLParser allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSXMLParser1, _lib._sel_allocWithZone_1, zone); + return NSXMLParser._(_ret, _lib, retain: false, release: true); + } + + static NSXMLParser alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLParser1, _lib._sel_alloc1); + return NSXMLParser._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSXMLParser1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSXMLParser1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLParser1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLParser1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSXMLParser1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSXMLParser1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSXMLParser1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSXMLParser1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSXMLParser1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSXMLParserExternalEntityResolvingPolicy { + static const int NSXMLParserResolveExternalEntitiesNever = 0; + static const int NSXMLParserResolveExternalEntitiesNoNetwork = 1; + static const int NSXMLParserResolveExternalEntitiesSameOriginOnly = 2; + static const int NSXMLParserResolveExternalEntitiesAlways = 3; +} + +class NSFileWrapper extends NSObject { + NSFileWrapper._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSFileWrapper] that points to the same underlying object as [other]. + static NSFileWrapper castFrom(T other) { + return NSFileWrapper._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSFileWrapper] that wraps the given raw object pointer. + static NSFileWrapper castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSFileWrapper._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSFileWrapper]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFileWrapper1); + } + + NSFileWrapper initWithURL_options_error_( + NSURL? url, int options, ffi.Pointer> outError) { + final _ret = _lib._objc_msgSend_970( + _id, + _lib._sel_initWithURL_options_error_1, + url?._id ?? ffi.nullptr, + options, + outError); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + NSFileWrapper initDirectoryWithFileWrappers_( + NSDictionary? childrenByPreferredName) { + final _ret = _lib._objc_msgSend_149( + _id, + _lib._sel_initDirectoryWithFileWrappers_1, + childrenByPreferredName?._id ?? ffi.nullptr); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + NSFileWrapper initRegularFileWithContents_(NSData? contents) { + final _ret = _lib._objc_msgSend_257(_id, + _lib._sel_initRegularFileWithContents_1, contents?._id ?? ffi.nullptr); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + NSFileWrapper initSymbolicLinkWithDestinationURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_241( + _id, + _lib._sel_initSymbolicLinkWithDestinationURL_1, + url?._id ?? ffi.nullptr); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + NSFileWrapper initWithSerializedRepresentation_( + NSData? serializeRepresentation) { + final _ret = _lib._objc_msgSend_257( + _id, + _lib._sel_initWithSerializedRepresentation_1, + serializeRepresentation?._id ?? ffi.nullptr); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + NSFileWrapper initWithCoder_(NSCoder? inCoder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, inCoder?._id ?? ffi.nullptr); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + bool get directory { + return _lib._objc_msgSend_12(_id, _lib._sel_isDirectory1); + } + + bool get regularFile { + return _lib._objc_msgSend_12(_id, _lib._sel_isRegularFile1); + } + + bool get symbolicLink { + return _lib._objc_msgSend_12(_id, _lib._sel_isSymbolicLink1); + } + + NSString? get preferredFilename { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_preferredFilename1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set preferredFilename(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPreferredFilename_1, value?._id ?? ffi.nullptr); + } + + NSString? get filename { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_filename1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set filename(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setFilename_1, value?._id ?? ffi.nullptr); + } + + NSDictionary? get fileAttributes { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_fileAttributes1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set fileAttributes(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, _lib._sel_setFileAttributes_1, value?._id ?? ffi.nullptr); + } + + bool matchesContentsOfURL_(NSURL? url) { + return _lib._objc_msgSend_244( + _id, _lib._sel_matchesContentsOfURL_1, url?._id ?? ffi.nullptr); + } + + bool readFromURL_options_error_( + NSURL? url, int options, ffi.Pointer> outError) { + return _lib._objc_msgSend_971(_id, _lib._sel_readFromURL_options_error_1, + url?._id ?? ffi.nullptr, options, outError); + } + + bool writeToURL_options_originalContentsURL_error_( + NSURL? url, + int options, + NSURL? originalContentsURL, + ffi.Pointer> outError) { + return _lib._objc_msgSend_972( + _id, + _lib._sel_writeToURL_options_originalContentsURL_error_1, + url?._id ?? ffi.nullptr, + options, + originalContentsURL?._id ?? ffi.nullptr, + outError); + } + + NSData? get serializedRepresentation { + final _ret = + _lib._objc_msgSend_39(_id, _lib._sel_serializedRepresentation1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + NSString addFileWrapper_(NSFileWrapper? child) { + final _ret = _lib._objc_msgSend_973( + _id, _lib._sel_addFileWrapper_1, child?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString addRegularFileWithContents_preferredFilename_( + NSData? data, NSString? fileName) { + final _ret = _lib._objc_msgSend_974( + _id, + _lib._sel_addRegularFileWithContents_preferredFilename_1, + data?._id ?? ffi.nullptr, + fileName?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + void removeFileWrapper_(NSFileWrapper? child) { + _lib._objc_msgSend_975( + _id, _lib._sel_removeFileWrapper_1, child?._id ?? ffi.nullptr); + } + + NSDictionary? get fileWrappers { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_fileWrappers1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSString keyForFileWrapper_(NSFileWrapper? child) { + final _ret = _lib._objc_msgSend_973( + _id, _lib._sel_keyForFileWrapper_1, child?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSData? get regularFileContents { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_regularFileContents1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + NSURL? get symbolicLinkDestinationURL { + final _ret = + _lib._objc_msgSend_40(_id, _lib._sel_symbolicLinkDestinationURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSObject initWithPath_(NSString? path) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithPath_1, path?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject initSymbolicLinkWithDestination_(NSString? path) { + final _ret = _lib._objc_msgSend_30(_id, + _lib._sel_initSymbolicLinkWithDestination_1, path?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool needsToBeUpdatedFromPath_(NSString? path) { + return _lib._objc_msgSend_59( + _id, _lib._sel_needsToBeUpdatedFromPath_1, path?._id ?? ffi.nullptr); + } + + bool updateFromPath_(NSString? path) { + return _lib._objc_msgSend_59( + _id, _lib._sel_updateFromPath_1, path?._id ?? ffi.nullptr); + } + + bool writeToFile_atomically_updateFilenames_( + NSString? path, bool atomicFlag, bool updateFilenamesFlag) { + return _lib._objc_msgSend_976( + _id, + _lib._sel_writeToFile_atomically_updateFilenames_1, + path?._id ?? ffi.nullptr, + atomicFlag, + updateFilenamesFlag); + } + + NSString addFileWithPath_(NSString? path) { + final _ret = _lib._objc_msgSend_64( + _id, _lib._sel_addFileWithPath_1, path?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString addSymbolicLinkWithDestination_preferredFilename_( + NSString? path, NSString? filename) { + final _ret = _lib._objc_msgSend_339( + _id, + _lib._sel_addSymbolicLinkWithDestination_preferredFilename_1, + path?._id ?? ffi.nullptr, + filename?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString symbolicLinkDestination() { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_symbolicLinkDestination1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + @override + NSFileWrapper init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + static NSFileWrapper new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSFileWrapper1, _lib._sel_new1); + return NSFileWrapper._(_ret, _lib, retain: false, release: true); + } + + static NSFileWrapper allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSFileWrapper1, _lib._sel_allocWithZone_1, zone); + return NSFileWrapper._(_ret, _lib, retain: false, release: true); + } + + static NSFileWrapper alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSFileWrapper1, _lib._sel_alloc1); + return NSFileWrapper._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSFileWrapper1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSFileWrapper1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSFileWrapper1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSFileWrapper1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSFileWrapper1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSFileWrapper1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSFileWrapper1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSFileWrapper1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSFileWrapper1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSFileWrapperReadingOptions { + static const int NSFileWrapperReadingImmediate = 1; + static const int NSFileWrapperReadingWithoutMapping = 2; +} + +abstract class NSFileWrapperWritingOptions { + static const int NSFileWrapperWritingAtomic = 1; + static const int NSFileWrapperWritingWithNameUpdating = 2; +} + +class NSURLSession extends NSObject { + NSURLSession._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSession] that points to the same underlying object as [other]. + static NSURLSession castFrom(T other) { + return NSURLSession._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSURLSession] that wraps the given raw object pointer. + static NSURLSession castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSession._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLSession]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLSession1); + } + + static NSURLSession? getSharedSession(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_977( + _lib._class_NSURLSession1, _lib._sel_sharedSession1); + return _ret.address == 0 + ? null + : NSURLSession._(_ret, _lib, retain: true, release: true); + } + + static NSURLSession sessionWithConfiguration_( + SentryCocoa _lib, NSURLSessionConfiguration? configuration) { + final _ret = _lib._objc_msgSend_988( + _lib._class_NSURLSession1, + _lib._sel_sessionWithConfiguration_1, + configuration?._id ?? ffi.nullptr); + return NSURLSession._(_ret, _lib, retain: true, release: true); + } + + static NSURLSession sessionWithConfiguration_delegate_delegateQueue_( + SentryCocoa _lib, + NSURLSessionConfiguration? configuration, + NSObject? delegate, + NSOperationQueue? queue) { + final _ret = _lib._objc_msgSend_989( + _lib._class_NSURLSession1, + _lib._sel_sessionWithConfiguration_delegate_delegateQueue_1, + configuration?._id ?? ffi.nullptr, + delegate?._id ?? ffi.nullptr, + queue?._id ?? ffi.nullptr); + return NSURLSession._(_ret, _lib, retain: true, release: true); + } + + NSOperationQueue? get delegateQueue { + final _ret = _lib._objc_msgSend_858(_id, _lib._sel_delegateQueue1); + return _ret.address == 0 + ? null + : NSOperationQueue._(_ret, _lib, retain: true, release: true); + } + + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionConfiguration? get configuration { + final _ret = _lib._objc_msgSend_978(_id, _lib._sel_configuration1); + return _ret.address == 0 + ? null + : NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + } + + NSString? get sessionDescription { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_sessionDescription1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set sessionDescription(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setSessionDescription_1, value?._id ?? ffi.nullptr); + } + + void finishTasksAndInvalidate() { + _lib._objc_msgSend_1(_id, _lib._sel_finishTasksAndInvalidate1); + } + + void invalidateAndCancel() { + _lib._objc_msgSend_1(_id, _lib._sel_invalidateAndCancel1); + } + + void resetWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { + _lib._objc_msgSend_497( + _id, _lib._sel_resetWithCompletionHandler_1, completionHandler._id); + } + + void flushWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { + _lib._objc_msgSend_497( + _id, _lib._sel_flushWithCompletionHandler_1, completionHandler._id); + } + + void getTasksWithCompletionHandler_( + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray completionHandler) { + _lib._objc_msgSend_990( + _id, _lib._sel_getTasksWithCompletionHandler_1, completionHandler._id); + } + + void getAllTasksWithCompletionHandler_( + ObjCBlock_ffiVoid_NSArray completionHandler) { + _lib._objc_msgSend_991(_id, _lib._sel_getAllTasksWithCompletionHandler_1, + completionHandler._id); + } + + NSURLSessionDataTask dataTaskWithRequest_(NSURLRequest? request) { + final _ret = _lib._objc_msgSend_992( + _id, _lib._sel_dataTaskWithRequest_1, request?._id ?? ffi.nullptr); + return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDataTask dataTaskWithURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_993( + _id, _lib._sel_dataTaskWithURL_1, url?._id ?? ffi.nullptr); + return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionUploadTask uploadTaskWithRequest_fromFile_( + NSURLRequest? request, NSURL? fileURL) { + final _ret = _lib._objc_msgSend_994( + _id, + _lib._sel_uploadTaskWithRequest_fromFile_1, + request?._id ?? ffi.nullptr, + fileURL?._id ?? ffi.nullptr); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionUploadTask uploadTaskWithRequest_fromData_( + NSURLRequest? request, NSData? bodyData) { + final _ret = _lib._objc_msgSend_995( + _id, + _lib._sel_uploadTaskWithRequest_fromData_1, + request?._id ?? ffi.nullptr, + bodyData?._id ?? ffi.nullptr); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionUploadTask uploadTaskWithStreamedRequest_(NSURLRequest? request) { + final _ret = _lib._objc_msgSend_996(_id, + _lib._sel_uploadTaskWithStreamedRequest_1, request?._id ?? ffi.nullptr); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithRequest_(NSURLRequest? request) { + final _ret = _lib._objc_msgSend_998( + _id, _lib._sel_downloadTaskWithRequest_1, request?._id ?? ffi.nullptr); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_999( + _id, _lib._sel_downloadTaskWithURL_1, url?._id ?? ffi.nullptr); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithResumeData_(NSData? resumeData) { + final _ret = _lib._objc_msgSend_1000(_id, + _lib._sel_downloadTaskWithResumeData_1, resumeData?._id ?? ffi.nullptr); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionStreamTask streamTaskWithHostName_port_( + NSString? hostname, int port) { + final _ret = _lib._objc_msgSend_1003( + _id, + _lib._sel_streamTaskWithHostName_port_1, + hostname?._id ?? ffi.nullptr, + port); + return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionStreamTask streamTaskWithNetService_(NSNetService? service) { + final _ret = _lib._objc_msgSend_1009( + _id, _lib._sel_streamTaskWithNetService_1, service?._id ?? ffi.nullptr); + return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionWebSocketTask webSocketTaskWithURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_1016( + _id, _lib._sel_webSocketTaskWithURL_1, url?._id ?? ffi.nullptr); + return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionWebSocketTask webSocketTaskWithURL_protocols_( + NSURL? url, NSArray? protocols) { + final _ret = _lib._objc_msgSend_1017( + _id, + _lib._sel_webSocketTaskWithURL_protocols_1, + url?._id ?? ffi.nullptr, + protocols?._id ?? ffi.nullptr); + return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionWebSocketTask webSocketTaskWithRequest_(NSURLRequest? request) { + final _ret = _lib._objc_msgSend_1018( + _id, _lib._sel_webSocketTaskWithRequest_1, request?._id ?? ffi.nullptr); + return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + } + + @override + NSURLSession init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLSession._(_ret, _lib, retain: true, release: true); + } + + static NSURLSession new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLSession1, _lib._sel_new1); + return NSURLSession._(_ret, _lib, retain: false, release: true); + } + + NSURLSessionDataTask dataTaskWithRequest_completionHandler_( + NSURLRequest? request, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_1019( + _id, + _lib._sel_dataTaskWithRequest_completionHandler_1, + request?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDataTask dataTaskWithURL_completionHandler_(NSURL? url, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_1020( + _id, + _lib._sel_dataTaskWithURL_completionHandler_1, + url?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionUploadTask uploadTaskWithRequest_fromFile_completionHandler_( + NSURLRequest? request, + NSURL? fileURL, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_1021( + _id, + _lib._sel_uploadTaskWithRequest_fromFile_completionHandler_1, + request?._id ?? ffi.nullptr, + fileURL?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionUploadTask uploadTaskWithRequest_fromData_completionHandler_( + NSURLRequest? request, + NSData? bodyData, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_1022( + _id, + _lib._sel_uploadTaskWithRequest_fromData_completionHandler_1, + request?._id ?? ffi.nullptr, + bodyData?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithRequest_completionHandler_( + NSURLRequest? request, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_1023( + _id, + _lib._sel_downloadTaskWithRequest_completionHandler_1, + request?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithURL_completionHandler_(NSURL? url, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_1024( + _id, + _lib._sel_downloadTaskWithURL_completionHandler_1, + url?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithResumeData_completionHandler_( + NSData? resumeData, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_1025( + _id, + _lib._sel_downloadTaskWithResumeData_completionHandler_1, + resumeData?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + static NSURLSession allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLSession1, _lib._sel_allocWithZone_1, zone); + return NSURLSession._(_ret, _lib, retain: false, release: true); + } + + static NSURLSession alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLSession1, _lib._sel_alloc1); + return NSURLSession._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLSession1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLSession1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLSession1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLSession1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSession1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSession1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSession1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSURLSession1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSession1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSURLSessionConfiguration extends NSObject { + NSURLSessionConfiguration._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSessionConfiguration] that points to the same underlying object as [other]. + static NSURLSessionConfiguration castFrom(T other) { + return NSURLSessionConfiguration._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLSessionConfiguration] that wraps the given raw object pointer. + static NSURLSessionConfiguration castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionConfiguration._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLSessionConfiguration]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionConfiguration1); + } + + static NSURLSessionConfiguration? getDefaultSessionConfiguration( + SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_978(_lib._class_NSURLSessionConfiguration1, + _lib._sel_defaultSessionConfiguration1); + return _ret.address == 0 + ? null + : NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + } + + static NSURLSessionConfiguration? getEphemeralSessionConfiguration( + SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_978(_lib._class_NSURLSessionConfiguration1, + _lib._sel_ephemeralSessionConfiguration1); + return _ret.address == 0 + ? null + : NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + } + + static NSURLSessionConfiguration + backgroundSessionConfigurationWithIdentifier_( + SentryCocoa _lib, NSString? identifier) { + final _ret = _lib._objc_msgSend_979( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_backgroundSessionConfigurationWithIdentifier_1, + identifier?._id ?? ffi.nullptr); + return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + } + + NSString? get identifier { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_identifier1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get requestCachePolicy { + return _lib._objc_msgSend_816(_id, _lib._sel_requestCachePolicy1); + } + + set requestCachePolicy(int value) { + return _lib._objc_msgSend_956( + _id, _lib._sel_setRequestCachePolicy_1, value); + } + + double get timeoutIntervalForRequest { + return _lib._objc_msgSend_155(_id, _lib._sel_timeoutIntervalForRequest1); + } + + set timeoutIntervalForRequest(double value) { + return _lib._objc_msgSend_506( + _id, _lib._sel_setTimeoutIntervalForRequest_1, value); + } + + double get timeoutIntervalForResource { + return _lib._objc_msgSend_155(_id, _lib._sel_timeoutIntervalForResource1); + } + + set timeoutIntervalForResource(double value) { + return _lib._objc_msgSend_506( + _id, _lib._sel_setTimeoutIntervalForResource_1, value); + } + + int get networkServiceType { + return _lib._objc_msgSend_817(_id, _lib._sel_networkServiceType1); + } + + set networkServiceType(int value) { + return _lib._objc_msgSend_957( + _id, _lib._sel_setNetworkServiceType_1, value); + } + + bool get allowsCellularAccess { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); + } + + set allowsCellularAccess(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAllowsCellularAccess_1, value); + } + + bool get allowsExpensiveNetworkAccess { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); + } + + set allowsExpensiveNetworkAccess(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAllowsExpensiveNetworkAccess_1, value); + } + + bool get allowsConstrainedNetworkAccess { + return _lib._objc_msgSend_12( + _id, _lib._sel_allowsConstrainedNetworkAccess1); + } + + set allowsConstrainedNetworkAccess(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAllowsConstrainedNetworkAccess_1, value); + } + + bool get requiresDNSSECValidation { + return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); + } + + set requiresDNSSECValidation(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setRequiresDNSSECValidation_1, value); + } + + bool get waitsForConnectivity { + return _lib._objc_msgSend_12(_id, _lib._sel_waitsForConnectivity1); + } + + set waitsForConnectivity(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setWaitsForConnectivity_1, value); + } + + bool get discretionary { + return _lib._objc_msgSend_12(_id, _lib._sel_isDiscretionary1); + } + + set discretionary(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setDiscretionary_1, value); + } + + NSString? get sharedContainerIdentifier { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_sharedContainerIdentifier1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set sharedContainerIdentifier(NSString? value) { + return _lib._objc_msgSend_509(_id, _lib._sel_setSharedContainerIdentifier_1, + value?._id ?? ffi.nullptr); + } + + bool get sessionSendsLaunchEvents { + return _lib._objc_msgSend_12(_id, _lib._sel_sessionSendsLaunchEvents1); + } + + set sessionSendsLaunchEvents(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setSessionSendsLaunchEvents_1, value); + } + + NSDictionary? get connectionProxyDictionary { + final _ret = + _lib._objc_msgSend_170(_id, _lib._sel_connectionProxyDictionary1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set connectionProxyDictionary(NSDictionary? value) { + return _lib._objc_msgSend_171(_id, _lib._sel_setConnectionProxyDictionary_1, + value?._id ?? ffi.nullptr); + } + + int get TLSMinimumSupportedProtocol { + return _lib._objc_msgSend_980(_id, _lib._sel_TLSMinimumSupportedProtocol1); + } + + set TLSMinimumSupportedProtocol(int value) { + return _lib._objc_msgSend_981( + _id, _lib._sel_setTLSMinimumSupportedProtocol_1, value); + } + + int get TLSMaximumSupportedProtocol { + return _lib._objc_msgSend_980(_id, _lib._sel_TLSMaximumSupportedProtocol1); + } + + set TLSMaximumSupportedProtocol(int value) { + return _lib._objc_msgSend_981( + _id, _lib._sel_setTLSMaximumSupportedProtocol_1, value); + } + + int get TLSMinimumSupportedProtocolVersion { + return _lib._objc_msgSend_982( + _id, _lib._sel_TLSMinimumSupportedProtocolVersion1); + } + + set TLSMinimumSupportedProtocolVersion(int value) { + return _lib._objc_msgSend_983( + _id, _lib._sel_setTLSMinimumSupportedProtocolVersion_1, value); + } + + int get TLSMaximumSupportedProtocolVersion { + return _lib._objc_msgSend_982( + _id, _lib._sel_TLSMaximumSupportedProtocolVersion1); + } + + set TLSMaximumSupportedProtocolVersion(int value) { + return _lib._objc_msgSend_983( + _id, _lib._sel_setTLSMaximumSupportedProtocolVersion_1, value); + } + + bool get HTTPShouldUsePipelining { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); + } + + set HTTPShouldUsePipelining(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setHTTPShouldUsePipelining_1, value); + } + + bool get HTTPShouldSetCookies { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldSetCookies1); + } + + set HTTPShouldSetCookies(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setHTTPShouldSetCookies_1, value); + } + + int get HTTPCookieAcceptPolicy { + return _lib._objc_msgSend_813(_id, _lib._sel_HTTPCookieAcceptPolicy1); + } + + set HTTPCookieAcceptPolicy(int value) { + return _lib._objc_msgSend_814( + _id, _lib._sel_setHTTPCookieAcceptPolicy_1, value); + } + + NSDictionary? get HTTPAdditionalHeaders { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_HTTPAdditionalHeaders1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set HTTPAdditionalHeaders(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, _lib._sel_setHTTPAdditionalHeaders_1, value?._id ?? ffi.nullptr); + } + + int get HTTPMaximumConnectionsPerHost { + return _lib._objc_msgSend_78(_id, _lib._sel_HTTPMaximumConnectionsPerHost1); + } + + set HTTPMaximumConnectionsPerHost(int value) { + return _lib._objc_msgSend_590( + _id, _lib._sel_setHTTPMaximumConnectionsPerHost_1, value); + } + + NSHTTPCookieStorage? get HTTPCookieStorage { + final _ret = _lib._objc_msgSend_807(_id, _lib._sel_HTTPCookieStorage1); + return _ret.address == 0 + ? null + : NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + } + + set HTTPCookieStorage(NSHTTPCookieStorage? value) { + return _lib._objc_msgSend_984( + _id, _lib._sel_setHTTPCookieStorage_1, value?._id ?? ffi.nullptr); + } + + NSURLCredentialStorage? get URLCredentialStorage { + final _ret = _lib._objc_msgSend_942(_id, _lib._sel_URLCredentialStorage1); + return _ret.address == 0 + ? null + : NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + } + + set URLCredentialStorage(NSURLCredentialStorage? value) { + return _lib._objc_msgSend_985( + _id, _lib._sel_setURLCredentialStorage_1, value?._id ?? ffi.nullptr); + } + + NSURLCache? get URLCache { + final _ret = _lib._objc_msgSend_912(_id, _lib._sel_URLCache1); + return _ret.address == 0 + ? null + : NSURLCache._(_ret, _lib, retain: true, release: true); + } + + set URLCache(NSURLCache? value) { + return _lib._objc_msgSend_913( + _id, _lib._sel_setURLCache_1, value?._id ?? ffi.nullptr); + } + + bool get shouldUseExtendedBackgroundIdleMode { + return _lib._objc_msgSend_12( + _id, _lib._sel_shouldUseExtendedBackgroundIdleMode1); + } + + set shouldUseExtendedBackgroundIdleMode(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setShouldUseExtendedBackgroundIdleMode_1, value); + } + + NSArray? get protocolClasses { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_protocolClasses1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set protocolClasses(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setProtocolClasses_1, value?._id ?? ffi.nullptr); + } + + int get multipathServiceType { + return _lib._objc_msgSend_986(_id, _lib._sel_multipathServiceType1); + } + + set multipathServiceType(int value) { + return _lib._objc_msgSend_987( + _id, _lib._sel_setMultipathServiceType_1, value); + } + + @override + NSURLSessionConfiguration init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + } + + static NSURLSessionConfiguration new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionConfiguration1, _lib._sel_new1); + return NSURLSessionConfiguration._(_ret, _lib, + retain: false, release: true); + } + + static NSURLSessionConfiguration backgroundSessionConfiguration_( + SentryCocoa _lib, NSString? identifier) { + final _ret = _lib._objc_msgSend_979( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_backgroundSessionConfiguration_1, + identifier?._id ?? ffi.nullptr); + return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + } + + static NSURLSessionConfiguration allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionConfiguration1, + _lib._sel_allocWithZone_1, zone); + return NSURLSessionConfiguration._(_ret, _lib, + retain: false, release: true); + } + + static NSURLSessionConfiguration alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionConfiguration1, _lib._sel_alloc1); + return NSURLSessionConfiguration._(_ret, _lib, + retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLSessionConfiguration1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionConfiguration1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLSessionConfiguration1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionConfiguration1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionConfiguration1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class SSLProtocol { + static const int kSSLProtocolUnknown = 0; + static const int kTLSProtocol1 = 4; + static const int kTLSProtocol11 = 7; + static const int kTLSProtocol12 = 8; + static const int kDTLSProtocol1 = 9; + static const int kTLSProtocol13 = 10; + static const int kDTLSProtocol12 = 11; + static const int kTLSProtocolMaxSupported = 999; + static const int kSSLProtocol2 = 1; + static const int kSSLProtocol3 = 2; + static const int kSSLProtocol3Only = 3; + static const int kTLSProtocol1Only = 5; + static const int kSSLProtocolAll = 6; +} + +abstract class tls_protocol_version_t { + static const int tls_protocol_version_TLSv10 = 769; + static const int tls_protocol_version_TLSv11 = 770; + static const int tls_protocol_version_TLSv12 = 771; + static const int tls_protocol_version_TLSv13 = 772; + static const int tls_protocol_version_DTLSv10 = -257; + static const int tls_protocol_version_DTLSv12 = -259; +} + +abstract class NSURLSessionMultipathServiceType { + static const int NSURLSessionMultipathServiceTypeNone = 0; + static const int NSURLSessionMultipathServiceTypeHandover = 1; + static const int NSURLSessionMultipathServiceTypeInteractive = 2; + static const int NSURLSessionMultipathServiceTypeAggregate = 3; +} + +void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +class NSURLSessionUploadTask extends NSURLSessionDataTask { + NSURLSessionUploadTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSessionUploadTask] that points to the same underlying object as [other]. + static NSURLSessionUploadTask castFrom(T other) { + return NSURLSessionUploadTask._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLSessionUploadTask] that wraps the given raw object pointer. + static NSURLSessionUploadTask castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionUploadTask._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLSessionUploadTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionUploadTask1); + } + + @override + NSURLSessionUploadTask init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + } + + static NSURLSessionUploadTask new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionUploadTask1, _lib._sel_new1); + return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); + } + + static NSURLSessionUploadTask allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLSessionUploadTask1, _lib._sel_allocWithZone_1, zone); + return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); + } + + static NSURLSessionUploadTask alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionUploadTask1, _lib._sel_alloc1); + return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLSessionUploadTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLSessionUploadTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionUploadTask1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLSessionUploadTask1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSessionUploadTask1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSessionUploadTask1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSessionUploadTask1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionUploadTask1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionUploadTask1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSURLSessionDownloadTask extends NSURLSessionTask { + NSURLSessionDownloadTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSessionDownloadTask] that points to the same underlying object as [other]. + static NSURLSessionDownloadTask castFrom(T other) { + return NSURLSessionDownloadTask._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLSessionDownloadTask] that wraps the given raw object pointer. + static NSURLSessionDownloadTask castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionDownloadTask._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLSessionDownloadTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionDownloadTask1); + } + + void cancelByProducingResumeData_( + ObjCBlock_ffiVoid_NSData completionHandler) { + _lib._objc_msgSend_997( + _id, _lib._sel_cancelByProducingResumeData_1, completionHandler._id); + } + + @override + NSURLSessionDownloadTask init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + static NSURLSessionDownloadTask new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionDownloadTask1, _lib._sel_new1); + return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + } + + static NSURLSessionDownloadTask allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLSessionDownloadTask1, _lib._sel_allocWithZone_1, zone); + return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + } + + static NSURLSessionDownloadTask alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionDownloadTask1, _lib._sel_alloc1); + return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLSessionDownloadTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLSessionDownloadTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionDownloadTask1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLSessionDownloadTask1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSessionDownloadTask1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSessionDownloadTask1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSessionDownloadTask1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionDownloadTask1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionDownloadTask1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +void _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSData_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSData_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSData_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSData_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSData_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSData_closureRegistry[block.ref.target.address] + as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSData extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSData._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSData.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSData.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSData_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSData_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +class NSURLSessionStreamTask extends NSURLSessionTask { + NSURLSessionStreamTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSessionStreamTask] that points to the same underlying object as [other]. + static NSURLSessionStreamTask castFrom(T other) { + return NSURLSessionStreamTask._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLSessionStreamTask] that wraps the given raw object pointer. + static NSURLSessionStreamTask castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionStreamTask._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLSessionStreamTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionStreamTask1); + } + + void readDataOfMinLength_maxLength_timeout_completionHandler_( + int minBytes, + int maxBytes, + double timeout, + ObjCBlock_ffiVoid_NSData_bool_NSError completionHandler) { + _lib._objc_msgSend_1001( + _id, + _lib._sel_readDataOfMinLength_maxLength_timeout_completionHandler_1, + minBytes, + maxBytes, + timeout, + completionHandler._id); + } + + void writeData_timeout_completionHandler_(NSData? data, double timeout, + ObjCBlock_ffiVoid_NSError completionHandler) { + _lib._objc_msgSend_1002( + _id, + _lib._sel_writeData_timeout_completionHandler_1, + data?._id ?? ffi.nullptr, + timeout, + completionHandler._id); + } + + void captureStreams() { + _lib._objc_msgSend_1(_id, _lib._sel_captureStreams1); + } + + void closeWrite() { + _lib._objc_msgSend_1(_id, _lib._sel_closeWrite1); + } + + void closeRead() { + _lib._objc_msgSend_1(_id, _lib._sel_closeRead1); + } + + void startSecureConnection() { + _lib._objc_msgSend_1(_id, _lib._sel_startSecureConnection1); + } + + void stopSecureConnection() { + _lib._objc_msgSend_1(_id, _lib._sel_stopSecureConnection1); + } + + @override + NSURLSessionStreamTask init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + } + + static NSURLSessionStreamTask new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionStreamTask1, _lib._sel_new1); + return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + } + + static NSURLSessionStreamTask allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSURLSessionStreamTask1, _lib._sel_allocWithZone_1, zone); + return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + } + + static NSURLSessionStreamTask alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionStreamTask1, _lib._sel_alloc1); + return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLSessionStreamTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLSessionStreamTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionStreamTask1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLSessionStreamTask1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSessionStreamTask1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSessionStreamTask1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSessionStreamTask1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionStreamTask1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionStreamTask1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +void _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, bool, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_NSData_bool_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSData_bool_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call( + ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +class NSNetService extends NSObject { + NSNetService._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSNetService] that points to the same underlying object as [other]. + static NSNetService castFrom(T other) { + return NSNetService._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSNetService] that wraps the given raw object pointer. + static NSNetService castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSNetService._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSNetService]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSNetService1); + } + + NSNetService initWithDomain_type_name_port_( + NSString? domain, NSString? type, NSString? name, int port) { + final _ret = _lib._objc_msgSend_1004( + _id, + _lib._sel_initWithDomain_type_name_port_1, + domain?._id ?? ffi.nullptr, + type?._id ?? ffi.nullptr, + name?._id ?? ffi.nullptr, + port); + return NSNetService._(_ret, _lib, retain: true, release: true); + } + + NSNetService initWithDomain_type_name_( + NSString? domain, NSString? type, NSString? name) { + final _ret = _lib._objc_msgSend_26( + _id, + _lib._sel_initWithDomain_type_name_1, + domain?._id ?? ffi.nullptr, + type?._id ?? ffi.nullptr, + name?._id ?? ffi.nullptr); + return NSNetService._(_ret, _lib, retain: true, release: true); + } + + void scheduleInRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_scheduleInRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); + } + + void removeFromRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_removeFromRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); + } + + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + set delegate(NSObject? value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + } + + bool get includesPeerToPeer { + return _lib._objc_msgSend_12(_id, _lib._sel_includesPeerToPeer1); + } + + set includesPeerToPeer(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setIncludesPeerToPeer_1, value); + } + + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get type { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_type1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get domain { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_domain1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get hostName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_hostName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray? get addresses { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_addresses1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + int get port { + return _lib._objc_msgSend_78(_id, _lib._sel_port1); + } + + void publish() { + _lib._objc_msgSend_1(_id, _lib._sel_publish1); + } + + void publishWithOptions_(int options) { + _lib._objc_msgSend_1005(_id, _lib._sel_publishWithOptions_1, options); + } + + void resolve() { + _lib._objc_msgSend_1(_id, _lib._sel_resolve1); + } + + void stop() { + _lib._objc_msgSend_1(_id, _lib._sel_stop1); + } + + static NSDictionary dictionaryFromTXTRecordData_( + SentryCocoa _lib, NSData? txtData) { + final _ret = _lib._objc_msgSend_1006(_lib._class_NSNetService1, + _lib._sel_dictionaryFromTXTRecordData_1, txtData?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSData dataFromTXTRecordDictionary_( + SentryCocoa _lib, NSDictionary? txtDictionary) { + final _ret = _lib._objc_msgSend_1007( + _lib._class_NSNetService1, + _lib._sel_dataFromTXTRecordDictionary_1, + txtDictionary?._id ?? ffi.nullptr); + return NSData._(_ret, _lib, retain: true, release: true); + } + + void resolveWithTimeout_(double timeout) { + _lib._objc_msgSend_505(_id, _lib._sel_resolveWithTimeout_1, timeout); + } + + bool getInputStream_outputStream_( + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + return _lib._objc_msgSend_1008(_id, _lib._sel_getInputStream_outputStream_1, + inputStream, outputStream); + } + + bool setTXTRecordData_(NSData? recordData) { + return _lib._objc_msgSend_23( + _id, _lib._sel_setTXTRecordData_1, recordData?._id ?? ffi.nullptr); + } + + NSData TXTRecordData() { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_TXTRecordData1); + return NSData._(_ret, _lib, retain: true, release: true); + } + + void startMonitoring() { + _lib._objc_msgSend_1(_id, _lib._sel_startMonitoring1); + } + + void stopMonitoring() { + _lib._objc_msgSend_1(_id, _lib._sel_stopMonitoring1); + } + + @override + NSNetService init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSNetService._(_ret, _lib, retain: true, release: true); + } + + static NSNetService new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSNetService1, _lib._sel_new1); + return NSNetService._(_ret, _lib, retain: false, release: true); + } + + static NSNetService allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSNetService1, _lib._sel_allocWithZone_1, zone); + return NSNetService._(_ret, _lib, retain: false, release: true); + } + + static NSNetService alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSNetService1, _lib._sel_alloc1); + return NSNetService._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSNetService1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSNetService1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSNetService1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSNetService1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSNetService1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSNetService1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSNetService1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSNetService1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSNetService1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSNetServiceOptions { + static const int NSNetServiceNoAutoRename = 1; + static const int NSNetServiceListenForConnections = 2; +} + +class NSURLSessionWebSocketTask extends NSURLSessionTask { + NSURLSessionWebSocketTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSessionWebSocketTask] that points to the same underlying object as [other]. + static NSURLSessionWebSocketTask castFrom(T other) { + return NSURLSessionWebSocketTask._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLSessionWebSocketTask] that wraps the given raw object pointer. + static NSURLSessionWebSocketTask castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionWebSocketTask._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLSessionWebSocketTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionWebSocketTask1); + } + + void sendMessage_completionHandler_(NSURLSessionWebSocketMessage? message, + ObjCBlock_ffiVoid_NSError completionHandler) { + _lib._objc_msgSend_1011(_id, _lib._sel_sendMessage_completionHandler_1, + message?._id ?? ffi.nullptr, completionHandler._id); + } + + void receiveMessageWithCompletionHandler_( + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError + completionHandler) { + _lib._objc_msgSend_1012(_id, + _lib._sel_receiveMessageWithCompletionHandler_1, completionHandler._id); + } + + void sendPingWithPongReceiveHandler_( + ObjCBlock_ffiVoid_NSError pongReceiveHandler) { + _lib._objc_msgSend_1013(_id, _lib._sel_sendPingWithPongReceiveHandler_1, + pongReceiveHandler._id); + } + + void cancelWithCloseCode_reason_(int closeCode, NSData? reason) { + _lib._objc_msgSend_1014(_id, _lib._sel_cancelWithCloseCode_reason_1, + closeCode, reason?._id ?? ffi.nullptr); + } + + int get maximumMessageSize { + return _lib._objc_msgSend_78(_id, _lib._sel_maximumMessageSize1); + } + + set maximumMessageSize(int value) { + return _lib._objc_msgSend_590( + _id, _lib._sel_setMaximumMessageSize_1, value); + } + + int get closeCode { + return _lib._objc_msgSend_1015(_id, _lib._sel_closeCode1); + } + + NSData? get closeReason { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_closeReason1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + @override + NSURLSessionWebSocketTask init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + } + + static NSURLSessionWebSocketTask new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionWebSocketTask1, _lib._sel_new1); + return NSURLSessionWebSocketTask._(_ret, _lib, + retain: false, release: true); + } + + static NSURLSessionWebSocketTask allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionWebSocketTask1, + _lib._sel_allocWithZone_1, zone); + return NSURLSessionWebSocketTask._(_ret, _lib, + retain: false, release: true); + } + + static NSURLSessionWebSocketTask alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionWebSocketTask1, _lib._sel_alloc1); + return NSURLSessionWebSocketTask._(_ret, _lib, + retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLSessionWebSocketTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLSessionWebSocketTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketTask1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLSessionWebSocketTask1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSessionWebSocketTask1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSessionWebSocketTask1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSessionWebSocketTask1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionWebSocketTask1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionWebSocketTask1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSURLSessionWebSocketMessage extends NSObject { + NSURLSessionWebSocketMessage._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSessionWebSocketMessage] that points to the same underlying object as [other]. + static NSURLSessionWebSocketMessage castFrom( + T other) { + return NSURLSessionWebSocketMessage._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLSessionWebSocketMessage] that wraps the given raw object pointer. + static NSURLSessionWebSocketMessage castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionWebSocketMessage._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLSessionWebSocketMessage]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionWebSocketMessage1); + } + + NSURLSessionWebSocketMessage initWithData_(NSData? data) { + final _ret = _lib._objc_msgSend_257( + _id, _lib._sel_initWithData_1, data?._id ?? ffi.nullptr); + return NSURLSessionWebSocketMessage._(_ret, _lib, + retain: true, release: true); + } + + NSURLSessionWebSocketMessage initWithString_(NSString? string) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithString_1, string?._id ?? ffi.nullptr); + return NSURLSessionWebSocketMessage._(_ret, _lib, + retain: true, release: true); + } + + int get type { + return _lib._objc_msgSend_1010(_id, _lib._sel_type1); + } + + NSData? get data { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_data1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + NSString? get string { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_string1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + @override + NSURLSessionWebSocketMessage init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLSessionWebSocketMessage._(_ret, _lib, + retain: true, release: true); + } + + static NSURLSessionWebSocketMessage new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionWebSocketMessage1, _lib._sel_new1); + return NSURLSessionWebSocketMessage._(_ret, _lib, + retain: false, release: true); + } + + static NSURLSessionWebSocketMessage allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_allocWithZone_1, zone); + return NSURLSessionWebSocketMessage._(_ret, _lib, + retain: false, release: true); + } + + static NSURLSessionWebSocketMessage alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionWebSocketMessage1, _lib._sel_alloc1); + return NSURLSessionWebSocketMessage._(_ret, _lib, + retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSURLSessionWebSocketMessageType { + static const int NSURLSessionWebSocketMessageTypeData = 0; + static const int NSURLSessionWebSocketMessageTypeString = 1; +} + +void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[id] = + fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[ + block.ref.target.address] + as void Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} + +class ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError + extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); + } +} + +abstract class NSURLSessionWebSocketCloseCode { + static const int NSURLSessionWebSocketCloseCodeInvalid = 0; + static const int NSURLSessionWebSocketCloseCodeNormalClosure = 1000; + static const int NSURLSessionWebSocketCloseCodeGoingAway = 1001; + static const int NSURLSessionWebSocketCloseCodeProtocolError = 1002; + static const int NSURLSessionWebSocketCloseCodeUnsupportedData = 1003; + static const int NSURLSessionWebSocketCloseCodeNoStatusReceived = 1005; + static const int NSURLSessionWebSocketCloseCodeAbnormalClosure = 1006; + static const int NSURLSessionWebSocketCloseCodeInvalidFramePayloadData = 1007; + static const int NSURLSessionWebSocketCloseCodePolicyViolation = 1008; + static const int NSURLSessionWebSocketCloseCodeMessageTooBig = 1009; + static const int NSURLSessionWebSocketCloseCodeMandatoryExtensionMissing = + 1010; + static const int NSURLSessionWebSocketCloseCodeInternalServerError = 1011; + static const int NSURLSessionWebSocketCloseCodeTLSHandshakeFailure = 1015; +} + +void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +class NSProtocolChecker extends NSProxy { + NSProtocolChecker._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSProtocolChecker] that points to the same underlying object as [other]. + static NSProtocolChecker castFrom(T other) { + return NSProtocolChecker._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSProtocolChecker] that wraps the given raw object pointer. + static NSProtocolChecker castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSProtocolChecker._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSProtocolChecker]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSProtocolChecker1); + } + + Protocol? get protocol { + final _ret = _lib._objc_msgSend_1026(_id, _lib._sel_protocol1); + return _ret.address == 0 + ? null + : Protocol._(_ret, _lib, retain: true, release: true); + } + + NSObject? get target { + final _ret = _lib._objc_msgSend_856(_id, _lib._sel_target1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSProtocolChecker protocolCheckerWithTarget_protocol_( + SentryCocoa _lib, NSObject? anObject, Protocol? aProtocol) { + final _ret = _lib._objc_msgSend_1027( + _lib._class_NSProtocolChecker1, + _lib._sel_protocolCheckerWithTarget_protocol_1, + anObject?._id ?? ffi.nullptr, + aProtocol?._id ?? ffi.nullptr); + return NSProtocolChecker._(_ret, _lib, retain: true, release: true); + } + + NSProtocolChecker initWithTarget_protocol_( + NSObject? anObject, Protocol? aProtocol) { + final _ret = _lib._objc_msgSend_1027( + _id, + _lib._sel_initWithTarget_protocol_1, + anObject?._id ?? ffi.nullptr, + aProtocol?._id ?? ffi.nullptr); + return NSProtocolChecker._(_ret, _lib, retain: true, release: true); + } + + static NSObject alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSProtocolChecker1, _lib._sel_alloc1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static bool respondsToSelector_( + SentryCocoa _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_4(_lib._class_NSProtocolChecker1, + _lib._sel_respondsToSelector_1, aSelector); + } +} + +class NSTask extends NSObject { + NSTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSTask] that points to the same underlying object as [other]. + static NSTask castFrom(T other) { + return NSTask._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSTask] that wraps the given raw object pointer. + static NSTask castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSTask._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSTask1); + } + + @override + NSTask init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSTask._(_ret, _lib, retain: true, release: true); + } + + NSURL? get executableURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_executableURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + set executableURL(NSURL? value) { + return _lib._objc_msgSend_655( + _id, _lib._sel_setExecutableURL_1, value?._id ?? ffi.nullptr); + } + + NSArray? get arguments { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_arguments1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set arguments(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setArguments_1, value?._id ?? ffi.nullptr); + } + + NSDictionary? get environment { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_environment1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set environment(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, _lib._sel_setEnvironment_1, value?._id ?? ffi.nullptr); + } + + NSURL? get currentDirectoryURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_currentDirectoryURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + set currentDirectoryURL(NSURL? value) { + return _lib._objc_msgSend_655( + _id, _lib._sel_setCurrentDirectoryURL_1, value?._id ?? ffi.nullptr); + } + + NSObject get standardInput { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_standardInput1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set standardInput(NSObject value) { + return _lib._objc_msgSend_387(_id, _lib._sel_setStandardInput_1, value._id); + } + + NSObject get standardOutput { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_standardOutput1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set standardOutput(NSObject value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setStandardOutput_1, value._id); + } + + NSObject get standardError { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_standardError1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set standardError(NSObject value) { + return _lib._objc_msgSend_387(_id, _lib._sel_setStandardError_1, value._id); + } + + bool launchAndReturnError_(ffi.Pointer> error) { + return _lib._objc_msgSend_225(_id, _lib._sel_launchAndReturnError_1, error); + } + + void interrupt() { + _lib._objc_msgSend_1(_id, _lib._sel_interrupt1); + } + + void terminate() { + _lib._objc_msgSend_1(_id, _lib._sel_terminate1); + } + + bool suspend() { + return _lib._objc_msgSend_12(_id, _lib._sel_suspend1); + } + + bool resume() { + return _lib._objc_msgSend_12(_id, _lib._sel_resume1); + } + + int get processIdentifier { + return _lib._objc_msgSend_219(_id, _lib._sel_processIdentifier1); + } + + bool get running { + return _lib._objc_msgSend_12(_id, _lib._sel_isRunning1); + } + + int get terminationStatus { + return _lib._objc_msgSend_219(_id, _lib._sel_terminationStatus1); + } + + int get terminationReason { + return _lib._objc_msgSend_1028(_id, _lib._sel_terminationReason1); + } + + ObjCBlock_ffiVoid_NSTask get terminationHandler { + final _ret = _lib._objc_msgSend_1029(_id, _lib._sel_terminationHandler1); + return ObjCBlock_ffiVoid_NSTask._(_ret, _lib); + } + + set terminationHandler(ObjCBlock_ffiVoid_NSTask value) { + return _lib._objc_msgSend_1030( + _id, _lib._sel_setTerminationHandler_1, value._id); + } + + int get qualityOfService { + return _lib._objc_msgSend_507(_id, _lib._sel_qualityOfService1); + } + + set qualityOfService(int value) { + return _lib._objc_msgSend_508(_id, _lib._sel_setQualityOfService_1, value); + } + + static NSTask + launchedTaskWithExecutableURL_arguments_error_terminationHandler_( + SentryCocoa _lib, + NSURL? url, + NSArray? arguments, + ffi.Pointer> error, + ObjCBlock_ffiVoid_NSTask terminationHandler) { + final _ret = _lib._objc_msgSend_1031( + _lib._class_NSTask1, + _lib._sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_1, + url?._id ?? ffi.nullptr, + arguments?._id ?? ffi.nullptr, + error, + terminationHandler._id); + return NSTask._(_ret, _lib, retain: true, release: true); + } + + void waitUntilExit() { + _lib._objc_msgSend_1(_id, _lib._sel_waitUntilExit1); + } + + NSString? get launchPath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_launchPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set launchPath(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setLaunchPath_1, value?._id ?? ffi.nullptr); + } + + NSString? get currentDirectoryPath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_currentDirectoryPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set currentDirectoryPath(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setCurrentDirectoryPath_1, value?._id ?? ffi.nullptr); + } + + void launch() { + _lib._objc_msgSend_1(_id, _lib._sel_launch1); + } + + static NSTask launchedTaskWithLaunchPath_arguments_( + SentryCocoa _lib, NSString? path, NSArray? arguments) { + final _ret = _lib._objc_msgSend_1032( + _lib._class_NSTask1, + _lib._sel_launchedTaskWithLaunchPath_arguments_1, + path?._id ?? ffi.nullptr, + arguments?._id ?? ffi.nullptr); + return NSTask._(_ret, _lib, retain: true, release: true); + } + + static NSTask new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSTask1, _lib._sel_new1); + return NSTask._(_ret, _lib, retain: false, release: true); + } + + static NSTask allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSTask1, _lib._sel_allocWithZone_1, zone); + return NSTask._(_ret, _lib, retain: false, release: true); + } + + static NSTask alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSTask1, _lib._sel_alloc1); + return NSTask._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSTask1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSTask1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSTask1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSTask1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSTask1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSTask1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSTask1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSTaskTerminationReason { + static const int NSTaskTerminationReasonExit = 1; + static const int NSTaskTerminationReasonUncaughtSignal = 2; +} + +void _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSTask_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSTask_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSTask_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSTask_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSTask_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSTask_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSTask_closureRegistry[block.ref.target.address] + as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSTask extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSTask._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSTask.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSTask.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSTask_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSTask_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +class NSXMLElement extends NSXMLNode { + NSXMLElement._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSXMLElement] that points to the same underlying object as [other]. + static NSXMLElement castFrom(T other) { + return NSXMLElement._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSXMLElement] that wraps the given raw object pointer. + static NSXMLElement castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSXMLElement._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSXMLElement]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLElement1); + } + + NSXMLElement initWithName_(NSString? name) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithName_1, name?._id ?? ffi.nullptr); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + NSXMLElement initWithName_URI_(NSString? name, NSString? URI) { + final _ret = _lib._objc_msgSend_165(_id, _lib._sel_initWithName_URI_1, + name?._id ?? ffi.nullptr, URI?._id ?? ffi.nullptr); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + NSXMLElement initWithName_stringValue_(NSString? name, NSString? string) { + final _ret = _lib._objc_msgSend_165( + _id, + _lib._sel_initWithName_stringValue_1, + name?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + NSXMLElement initWithXMLString_error_( + NSString? string, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_279(_id, + _lib._sel_initWithXMLString_error_1, string?._id ?? ffi.nullptr, error); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + @override + NSXMLElement initWithKind_options_(int kind, int options) { + final _ret = _lib._objc_msgSend_1034( + _id, _lib._sel_initWithKind_options_1, kind, options); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + NSArray elementsForName_(NSString? name) { + final _ret = _lib._objc_msgSend_123( + _id, _lib._sel_elementsForName_1, name?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray elementsForLocalName_URI_(NSString? localName, NSString? URI) { + final _ret = _lib._objc_msgSend_686( + _id, + _lib._sel_elementsForLocalName_URI_1, + localName?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + void addAttribute_(NSXMLNode? attribute) { + _lib._objc_msgSend_1046( + _id, _lib._sel_addAttribute_1, attribute?._id ?? ffi.nullptr); + } + + void removeAttributeForName_(NSString? name) { + _lib._objc_msgSend_192( + _id, _lib._sel_removeAttributeForName_1, name?._id ?? ffi.nullptr); + } + + NSArray? get attributes { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_attributes1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set attributes(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setAttributes_1, value?._id ?? ffi.nullptr); + } + + void setAttributesWithDictionary_(NSDictionary? attributes) { + _lib._objc_msgSend_476(_id, _lib._sel_setAttributesWithDictionary_1, + attributes?._id ?? ffi.nullptr); + } + + NSXMLNode attributeForName_(NSString? name) { + final _ret = _lib._objc_msgSend_1050( + _id, _lib._sel_attributeForName_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode attributeForLocalName_URI_(NSString? localName, NSString? URI) { + final _ret = _lib._objc_msgSend_1067( + _id, + _lib._sel_attributeForLocalName_URI_1, + localName?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + void addNamespace_(NSXMLNode? aNamespace) { + _lib._objc_msgSend_1046( + _id, _lib._sel_addNamespace_1, aNamespace?._id ?? ffi.nullptr); + } + + void removeNamespaceForPrefix_(NSString? name) { + _lib._objc_msgSend_192( + _id, _lib._sel_removeNamespaceForPrefix_1, name?._id ?? ffi.nullptr); + } + + NSArray? get namespaces { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_namespaces1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set namespaces(NSArray? value) { + return _lib._objc_msgSend_765( + _id, _lib._sel_setNamespaces_1, value?._id ?? ffi.nullptr); + } + + NSXMLNode namespaceForPrefix_(NSString? name) { + final _ret = _lib._objc_msgSend_1050( + _id, _lib._sel_namespaceForPrefix_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode resolveNamespaceForName_(NSString? name) { + final _ret = _lib._objc_msgSend_1050( + _id, _lib._sel_resolveNamespaceForName_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSString resolvePrefixForNamespaceURI_(NSString? namespaceURI) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_resolvePrefixForNamespaceURI_1, + namespaceURI?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + void insertChild_atIndex_(NSXMLNode? child, int index) { + _lib._objc_msgSend_1044( + _id, _lib._sel_insertChild_atIndex_1, child?._id ?? ffi.nullptr, index); + } + + void insertChildren_atIndex_(NSArray? children, int index) { + _lib._objc_msgSend_1045(_id, _lib._sel_insertChildren_atIndex_1, + children?._id ?? ffi.nullptr, index); + } + + void removeChildAtIndex_(int index) { + _lib._objc_msgSend_439(_id, _lib._sel_removeChildAtIndex_1, index); + } + + void setChildren_(NSArray? children) { + _lib._objc_msgSend_441( + _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + } + + void addChild_(NSXMLNode? child) { + _lib._objc_msgSend_1046( + _id, _lib._sel_addChild_1, child?._id ?? ffi.nullptr); + } + + void replaceChildAtIndex_withNode_(int index, NSXMLNode? node) { + _lib._objc_msgSend_1047(_id, _lib._sel_replaceChildAtIndex_withNode_1, + index, node?._id ?? ffi.nullptr); + } + + void normalizeAdjacentTextNodesPreservingCDATA_(bool preserve) { + _lib._objc_msgSend_824( + _id, _lib._sel_normalizeAdjacentTextNodesPreservingCDATA_1, preserve); + } + + void setAttributesAsDictionary_(NSDictionary? attributes) { + _lib._objc_msgSend_476(_id, _lib._sel_setAttributesAsDictionary_1, + attributes?._id ?? ffi.nullptr); + } + + @override + NSXMLElement init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + @override + NSXMLElement initWithKind_(int kind) { + final _ret = _lib._objc_msgSend_1033(_id, _lib._sel_initWithKind_1, kind); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + static NSObject document(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_document1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject documentWithRootElement_( + SentryCocoa _lib, NSXMLElement? element) { + final _ret = _lib._objc_msgSend_1035(_lib._class_NSXMLElement1, + _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_URI_( + SentryCocoa _lib, NSString? name, NSString? URI) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLElement1, + _lib._sel_elementWithName_URI_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? string) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLElement1, + _lib._sel_elementWithName_stringValue_1, + name?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_children_attributes_(SentryCocoa _lib, + NSString? name, NSArray? children, NSArray? attributes) { + final _ret = _lib._objc_msgSend_1036( + _lib._class_NSXMLElement1, + _lib._sel_elementWithName_children_attributes_1, + name?._id ?? ffi.nullptr, + children?._id ?? ffi.nullptr, + attributes?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLElement1, + _lib._sel_attributeWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_URI_stringValue_( + SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { + final _ret = _lib._objc_msgSend_26( + _lib._class_NSXMLElement1, + _lib._sel_attributeWithName_URI_stringValue_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject namespaceWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLElement1, + _lib._sel_namespaceWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject processingInstructionWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLElement1, + _lib._sel_processingInstructionWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject commentWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject textWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSString localNameForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLElement1, + _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString prefixForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLElement1, + _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSXMLNode predefinedNamespaceForPrefix_( + SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_1050(_lib._class_NSXMLElement1, + _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + static NSXMLElement new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_new1); + return NSXMLElement._(_ret, _lib, retain: false, release: true); + } + + static NSXMLElement allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSXMLElement1, _lib._sel_allocWithZone_1, zone); + return NSXMLElement._(_ret, _lib, retain: false, release: true); + } + + static NSXMLElement alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_alloc1); + return NSXMLElement._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSXMLElement1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSXMLElement1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLElement1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLElement1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSXMLElement1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSXMLElement1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSXMLElement1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSXMLElement1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSXMLElement1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSXMLNode extends NSObject { + NSXMLNode._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSXMLNode] that points to the same underlying object as [other]. + static NSXMLNode castFrom(T other) { + return NSXMLNode._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSXMLNode] that wraps the given raw object pointer. + static NSXMLNode castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSXMLNode._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSXMLNode]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLNode1); + } + + @override + NSXMLNode init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode initWithKind_(int kind) { + final _ret = _lib._objc_msgSend_1033(_id, _lib._sel_initWithKind_1, kind); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode initWithKind_options_(int kind, int options) { + final _ret = _lib._objc_msgSend_1034( + _id, _lib._sel_initWithKind_options_1, kind, options); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + static NSObject document(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_document1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject documentWithRootElement_( + SentryCocoa _lib, NSXMLElement? element) { + final _ret = _lib._objc_msgSend_1035(_lib._class_NSXMLNode1, + _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, + _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_URI_( + SentryCocoa _lib, NSString? name, NSString? URI) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLNode1, + _lib._sel_elementWithName_URI_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? string) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLNode1, + _lib._sel_elementWithName_stringValue_1, + name?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_children_attributes_(SentryCocoa _lib, + NSString? name, NSArray? children, NSArray? attributes) { + final _ret = _lib._objc_msgSend_1036( + _lib._class_NSXMLNode1, + _lib._sel_elementWithName_children_attributes_1, + name?._id ?? ffi.nullptr, + children?._id ?? ffi.nullptr, + attributes?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLNode1, + _lib._sel_attributeWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_URI_stringValue_( + SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { + final _ret = _lib._objc_msgSend_26( + _lib._class_NSXMLNode1, + _lib._sel_attributeWithName_URI_stringValue_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject namespaceWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLNode1, + _lib._sel_namespaceWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject processingInstructionWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLNode1, + _lib._sel_processingInstructionWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject commentWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, + _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject textWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, + _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, + _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + int get kind { + return _lib._objc_msgSend_1037(_id, _lib._sel_kind1); + } + + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set name(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + } + + NSObject get objectValue { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_objectValue1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set objectValue(NSObject value) { + return _lib._objc_msgSend_387(_id, _lib._sel_setObjectValue_1, value._id); + } + + NSString? get stringValue { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_stringValue1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set stringValue(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setStringValue_1, value?._id ?? ffi.nullptr); + } + + void setStringValue_resolvingEntities_(NSString? string, bool resolve) { + _lib._objc_msgSend_1038(_id, _lib._sel_setStringValue_resolvingEntities_1, + string?._id ?? ffi.nullptr, resolve); + } + + int get index { + return _lib._objc_msgSend_10(_id, _lib._sel_index1); + } + + int get level { + return _lib._objc_msgSend_10(_id, _lib._sel_level1); + } + + NSXMLDocument? get rootDocument { + final _ret = _lib._objc_msgSend_1061(_id, _lib._sel_rootDocument1); + return _ret.address == 0 + ? null + : NSXMLDocument._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode? get parent { + final _ret = _lib._objc_msgSend_1062(_id, _lib._sel_parent1); + return _ret.address == 0 + ? null + : NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + int get childCount { + return _lib._objc_msgSend_10(_id, _lib._sel_childCount1); + } + + NSArray? get children { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_children1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode childAtIndex_(int index) { + final _ret = _lib._objc_msgSend_1063(_id, _lib._sel_childAtIndex_1, index); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode? get previousSibling { + final _ret = _lib._objc_msgSend_1062(_id, _lib._sel_previousSibling1); + return _ret.address == 0 + ? null + : NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode? get nextSibling { + final _ret = _lib._objc_msgSend_1062(_id, _lib._sel_nextSibling1); + return _ret.address == 0 + ? null + : NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode? get previousNode { + final _ret = _lib._objc_msgSend_1062(_id, _lib._sel_previousNode1); + return _ret.address == 0 + ? null + : NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode? get nextNode { + final _ret = _lib._objc_msgSend_1062(_id, _lib._sel_nextNode1); + return _ret.address == 0 + ? null + : NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + void detach() { + _lib._objc_msgSend_1(_id, _lib._sel_detach1); + } + + NSString? get XPath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_XPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get localName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get prefix { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_prefix1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get URI { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_URI1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set URI(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setURI_1, value?._id ?? ffi.nullptr); + } + + static NSString localNameForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLNode1, + _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString prefixForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLNode1, + _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSXMLNode predefinedNamespaceForPrefix_( + SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_1050(_lib._class_NSXMLNode1, + _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSString? get description { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get XMLString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_XMLString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString XMLStringWithOptions_(int options) { + final _ret = + _lib._objc_msgSend_1064(_id, _lib._sel_XMLStringWithOptions_1, options); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSString canonicalXMLStringPreservingComments_(bool comments) { + final _ret = _lib._objc_msgSend_1065( + _id, _lib._sel_canonicalXMLStringPreservingComments_1, comments); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray nodesForXPath_error_( + NSString? xpath, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_414( + _id, _lib._sel_nodesForXPath_error_1, xpath?._id ?? ffi.nullptr, error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray objectsForXQuery_constants_error_(NSString? xquery, + NSDictionary? constants, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1066( + _id, + _lib._sel_objectsForXQuery_constants_error_1, + xquery?._id ?? ffi.nullptr, + constants?._id ?? ffi.nullptr, + error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray objectsForXQuery_error_( + NSString? xquery, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_414(_id, _lib._sel_objectsForXQuery_error_1, + xquery?._id ?? ffi.nullptr, error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSXMLNode new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_new1); + return NSXMLNode._(_ret, _lib, retain: false, release: true); + } + + static NSXMLNode allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSXMLNode1, _lib._sel_allocWithZone_1, zone); + return NSXMLNode._(_ret, _lib, retain: false, release: true); + } + + static NSXMLNode alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_alloc1); + return NSXMLNode._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSXMLNode1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSXMLNode1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLNode1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLNode1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSXMLNode1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSXMLNode1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSXMLNode1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSXMLNode1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSXMLNode1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSXMLNodeKind { + static const int NSXMLInvalidKind = 0; + static const int NSXMLDocumentKind = 1; + static const int NSXMLElementKind = 2; + static const int NSXMLAttributeKind = 3; + static const int NSXMLNamespaceKind = 4; + static const int NSXMLProcessingInstructionKind = 5; + static const int NSXMLCommentKind = 6; + static const int NSXMLTextKind = 7; + static const int NSXMLDTDKind = 8; + static const int NSXMLEntityDeclarationKind = 9; + static const int NSXMLAttributeDeclarationKind = 10; + static const int NSXMLElementDeclarationKind = 11; + static const int NSXMLNotationDeclarationKind = 12; +} + +abstract class NSXMLNodeOptions { + static const int NSXMLNodeOptionsNone = 0; + static const int NSXMLNodeIsCDATA = 1; + static const int NSXMLNodeExpandEmptyElement = 2; + static const int NSXMLNodeCompactEmptyElement = 4; + static const int NSXMLNodeUseSingleQuotes = 8; + static const int NSXMLNodeUseDoubleQuotes = 16; + static const int NSXMLNodeNeverEscapeContents = 32; + static const int NSXMLDocumentTidyHTML = 512; + static const int NSXMLDocumentTidyXML = 1024; + static const int NSXMLDocumentValidate = 8192; + static const int NSXMLNodeLoadExternalEntitiesAlways = 16384; + static const int NSXMLNodeLoadExternalEntitiesSameOriginOnly = 32768; + static const int NSXMLNodeLoadExternalEntitiesNever = 524288; + static const int NSXMLDocumentXInclude = 65536; + static const int NSXMLNodePrettyPrint = 131072; + static const int NSXMLDocumentIncludeContentTypeDeclaration = 262144; + static const int NSXMLNodePreserveNamespaceOrder = 1048576; + static const int NSXMLNodePreserveAttributeOrder = 2097152; + static const int NSXMLNodePreserveEntities = 4194304; + static const int NSXMLNodePreservePrefixes = 8388608; + static const int NSXMLNodePreserveCDATA = 16777216; + static const int NSXMLNodePreserveWhitespace = 33554432; + static const int NSXMLNodePreserveDTD = 67108864; + static const int NSXMLNodePreserveCharacterReferences = 134217728; + static const int NSXMLNodePromoteSignificantWhitespace = 268435456; + static const int NSXMLNodePreserveEmptyElements = 6; + static const int NSXMLNodePreserveQuotes = 24; + static const int NSXMLNodePreserveAll = 4293918750; +} + +class NSXMLDocument extends NSXMLNode { + NSXMLDocument._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSXMLDocument] that points to the same underlying object as [other]. + static NSXMLDocument castFrom(T other) { + return NSXMLDocument._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSXMLDocument] that wraps the given raw object pointer. + static NSXMLDocument castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSXMLDocument._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSXMLDocument]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDocument1); + } + + @override + NSXMLDocument init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); + } + + NSXMLDocument initWithXMLString_options_error_( + NSString? string, int mask, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1039( + _id, + _lib._sel_initWithXMLString_options_error_1, + string?._id ?? ffi.nullptr, + mask, + error); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); + } + + NSXMLDocument initWithContentsOfURL_options_error_( + NSURL? url, int mask, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1040( + _id, + _lib._sel_initWithContentsOfURL_options_error_1, + url?._id ?? ffi.nullptr, + mask, + error); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); + } + + NSXMLDocument initWithData_options_error_( + NSData? data, int mask, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1041( + _id, + _lib._sel_initWithData_options_error_1, + data?._id ?? ffi.nullptr, + mask, + error); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); + } + + NSXMLDocument initWithRootElement_(NSXMLElement? element) { + final _ret = _lib._objc_msgSend_1035( + _id, _lib._sel_initWithRootElement_1, element?._id ?? ffi.nullptr); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); + } + + static NSObject replacementClassForClass_(SentryCocoa _lib, NSObject cls) { + final _ret = _lib._objc_msgSend_16(_lib._class_NSXMLDocument1, + _lib._sel_replacementClassForClass_1, cls._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSString? get characterEncoding { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_characterEncoding1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set characterEncoding(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setCharacterEncoding_1, value?._id ?? ffi.nullptr); + } + + NSString? get version { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_version1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set version(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setVersion_1, value?._id ?? ffi.nullptr); + } + + bool get standalone { + return _lib._objc_msgSend_12(_id, _lib._sel_isStandalone1); + } + + set standalone(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setStandalone_1, value); + } + + int get documentContentKind { + return _lib._objc_msgSend_1042(_id, _lib._sel_documentContentKind1); + } + + set documentContentKind(int value) { + return _lib._objc_msgSend_1043( + _id, _lib._sel_setDocumentContentKind_1, value); + } + + NSString? get MIMEType { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_MIMEType1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set MIMEType(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setMIMEType_1, value?._id ?? ffi.nullptr); + } + + NSXMLDTD? get DTD { + final _ret = _lib._objc_msgSend_1053(_id, _lib._sel_DTD1); + return _ret.address == 0 + ? null + : NSXMLDTD._(_ret, _lib, retain: true, release: true); + } + + set DTD(NSXMLDTD? value) { + return _lib._objc_msgSend_1054( + _id, _lib._sel_setDTD_1, value?._id ?? ffi.nullptr); + } + + void setRootElement_(NSXMLElement? root) { + _lib._objc_msgSend_1055( + _id, _lib._sel_setRootElement_1, root?._id ?? ffi.nullptr); + } + + NSXMLElement rootElement() { + final _ret = _lib._objc_msgSend_1056(_id, _lib._sel_rootElement1); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + void insertChild_atIndex_(NSXMLNode? child, int index) { + _lib._objc_msgSend_1044( + _id, _lib._sel_insertChild_atIndex_1, child?._id ?? ffi.nullptr, index); + } + + void insertChildren_atIndex_(NSArray? children, int index) { + _lib._objc_msgSend_1045(_id, _lib._sel_insertChildren_atIndex_1, + children?._id ?? ffi.nullptr, index); + } + + void removeChildAtIndex_(int index) { + _lib._objc_msgSend_439(_id, _lib._sel_removeChildAtIndex_1, index); + } + + void setChildren_(NSArray? children) { + _lib._objc_msgSend_441( + _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + } + + void addChild_(NSXMLNode? child) { + _lib._objc_msgSend_1046( + _id, _lib._sel_addChild_1, child?._id ?? ffi.nullptr); + } + + void replaceChildAtIndex_withNode_(int index, NSXMLNode? node) { + _lib._objc_msgSend_1047(_id, _lib._sel_replaceChildAtIndex_withNode_1, + index, node?._id ?? ffi.nullptr); + } + + NSData? get XMLData { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_XMLData1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + NSData XMLDataWithOptions_(int options) { + final _ret = + _lib._objc_msgSend_1057(_id, _lib._sel_XMLDataWithOptions_1, options); + return NSData._(_ret, _lib, retain: true, release: true); + } + + NSObject objectByApplyingXSLT_arguments_error_(NSData? xslt, + NSDictionary? arguments, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1058( + _id, + _lib._sel_objectByApplyingXSLT_arguments_error_1, + xslt?._id ?? ffi.nullptr, + arguments?._id ?? ffi.nullptr, + error); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject objectByApplyingXSLTString_arguments_error_(NSString? xslt, + NSDictionary? arguments, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1059( + _id, + _lib._sel_objectByApplyingXSLTString_arguments_error_1, + xslt?._id ?? ffi.nullptr, + arguments?._id ?? ffi.nullptr, + error); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + NSObject objectByApplyingXSLTAtURL_arguments_error_(NSURL? xsltURL, + NSDictionary? argument, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1060( + _id, + _lib._sel_objectByApplyingXSLTAtURL_arguments_error_1, + xsltURL?._id ?? ffi.nullptr, + argument?._id ?? ffi.nullptr, + error); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + bool validateAndReturnError_(ffi.Pointer> error) { + return _lib._objc_msgSend_225( + _id, _lib._sel_validateAndReturnError_1, error); + } + + @override + NSXMLDocument initWithKind_(int kind) { + final _ret = _lib._objc_msgSend_1033(_id, _lib._sel_initWithKind_1, kind); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); + } + + @override + NSXMLDocument initWithKind_options_(int kind, int options) { + final _ret = _lib._objc_msgSend_1034( + _id, _lib._sel_initWithKind_options_1, kind, options); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); + } + + static NSObject document(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_document1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject documentWithRootElement_( + SentryCocoa _lib, NSXMLElement? element) { + final _ret = _lib._objc_msgSend_1035(_lib._class_NSXMLDocument1, + _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, + _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_URI_( + SentryCocoa _lib, NSString? name, NSString? URI) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDocument1, + _lib._sel_elementWithName_URI_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? string) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDocument1, + _lib._sel_elementWithName_stringValue_1, + name?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_children_attributes_(SentryCocoa _lib, + NSString? name, NSArray? children, NSArray? attributes) { + final _ret = _lib._objc_msgSend_1036( + _lib._class_NSXMLDocument1, + _lib._sel_elementWithName_children_attributes_1, + name?._id ?? ffi.nullptr, + children?._id ?? ffi.nullptr, + attributes?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDocument1, + _lib._sel_attributeWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_URI_stringValue_( + SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { + final _ret = _lib._objc_msgSend_26( + _lib._class_NSXMLDocument1, + _lib._sel_attributeWithName_URI_stringValue_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject namespaceWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDocument1, + _lib._sel_namespaceWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject processingInstructionWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDocument1, + _lib._sel_processingInstructionWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject commentWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, + _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject textWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, + _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, + _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSString localNameForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDocument1, + _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString prefixForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDocument1, + _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSXMLNode predefinedNamespaceForPrefix_( + SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_1050(_lib._class_NSXMLDocument1, + _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + static NSXMLDocument new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_new1); + return NSXMLDocument._(_ret, _lib, retain: false, release: true); + } + + static NSXMLDocument allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSXMLDocument1, _lib._sel_allocWithZone_1, zone); + return NSXMLDocument._(_ret, _lib, retain: false, release: true); + } + + static NSXMLDocument alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_alloc1); + return NSXMLDocument._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSXMLDocument1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSXMLDocument1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLDocument1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLDocument1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSXMLDocument1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSXMLDocument1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSXMLDocument1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSXMLDocument1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSXMLDocument1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSXMLDocumentContentKind { + static const int NSXMLDocumentXMLKind = 0; + static const int NSXMLDocumentXHTMLKind = 1; + static const int NSXMLDocumentHTMLKind = 2; + static const int NSXMLDocumentTextKind = 3; +} + +class NSXMLDTD extends NSXMLNode { + NSXMLDTD._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSXMLDTD] that points to the same underlying object as [other]. + static NSXMLDTD castFrom(T other) { + return NSXMLDTD._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSXMLDTD] that wraps the given raw object pointer. + static NSXMLDTD castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSXMLDTD._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSXMLDTD]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDTD1); + } + + @override + NSXMLDTD init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSXMLDTD._(_ret, _lib, retain: true, release: true); + } + + @override + NSXMLDTD initWithKind_options_(int kind, int options) { + final _ret = _lib._objc_msgSend_1034( + _id, _lib._sel_initWithKind_options_1, kind, options); + return NSXMLDTD._(_ret, _lib, retain: true, release: true); + } + + NSXMLDTD initWithContentsOfURL_options_error_( + NSURL? url, int mask, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1040( + _id, + _lib._sel_initWithContentsOfURL_options_error_1, + url?._id ?? ffi.nullptr, + mask, + error); + return NSXMLDTD._(_ret, _lib, retain: true, release: true); + } + + NSXMLDTD initWithData_options_error_( + NSData? data, int mask, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1041( + _id, + _lib._sel_initWithData_options_error_1, + data?._id ?? ffi.nullptr, + mask, + error); + return NSXMLDTD._(_ret, _lib, retain: true, release: true); + } + + NSString? get publicID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_publicID1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set publicID(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPublicID_1, value?._id ?? ffi.nullptr); + } + + NSString? get systemID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_systemID1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set systemID(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setSystemID_1, value?._id ?? ffi.nullptr); + } + + void insertChild_atIndex_(NSXMLNode? child, int index) { + _lib._objc_msgSend_1044( + _id, _lib._sel_insertChild_atIndex_1, child?._id ?? ffi.nullptr, index); + } + + void insertChildren_atIndex_(NSArray? children, int index) { + _lib._objc_msgSend_1045(_id, _lib._sel_insertChildren_atIndex_1, + children?._id ?? ffi.nullptr, index); + } + + void removeChildAtIndex_(int index) { + _lib._objc_msgSend_439(_id, _lib._sel_removeChildAtIndex_1, index); + } + + void setChildren_(NSArray? children) { + _lib._objc_msgSend_441( + _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + } + + void addChild_(NSXMLNode? child) { + _lib._objc_msgSend_1046( + _id, _lib._sel_addChild_1, child?._id ?? ffi.nullptr); + } + + void replaceChildAtIndex_withNode_(int index, NSXMLNode? node) { + _lib._objc_msgSend_1047(_id, _lib._sel_replaceChildAtIndex_withNode_1, + index, node?._id ?? ffi.nullptr); + } + + NSXMLDTDNode entityDeclarationForName_(NSString? name) { + final _ret = _lib._objc_msgSend_1051( + _id, _lib._sel_entityDeclarationForName_1, name?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLDTDNode notationDeclarationForName_(NSString? name) { + final _ret = _lib._objc_msgSend_1051( + _id, _lib._sel_notationDeclarationForName_1, name?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLDTDNode elementDeclarationForName_(NSString? name) { + final _ret = _lib._objc_msgSend_1051( + _id, _lib._sel_elementDeclarationForName_1, name?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLDTDNode attributeDeclarationForName_elementName_( + NSString? name, NSString? elementName) { + final _ret = _lib._objc_msgSend_1052( + _id, + _lib._sel_attributeDeclarationForName_elementName_1, + name?._id ?? ffi.nullptr, + elementName?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + } + + static NSXMLDTDNode predefinedEntityDeclarationForName_( + SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_1051( + _lib._class_NSXMLDTD1, + _lib._sel_predefinedEntityDeclarationForName_1, + name?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + } + + @override + NSXMLDTD initWithKind_(int kind) { + final _ret = _lib._objc_msgSend_1033(_id, _lib._sel_initWithKind_1, kind); + return NSXMLDTD._(_ret, _lib, retain: true, release: true); + } + + static NSObject document(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_document1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject documentWithRootElement_( + SentryCocoa _lib, NSXMLElement? element) { + final _ret = _lib._objc_msgSend_1035(_lib._class_NSXMLDTD1, + _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, + _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_URI_( + SentryCocoa _lib, NSString? name, NSString? URI) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTD1, + _lib._sel_elementWithName_URI_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? string) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTD1, + _lib._sel_elementWithName_stringValue_1, + name?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_children_attributes_(SentryCocoa _lib, + NSString? name, NSArray? children, NSArray? attributes) { + final _ret = _lib._objc_msgSend_1036( + _lib._class_NSXMLDTD1, + _lib._sel_elementWithName_children_attributes_1, + name?._id ?? ffi.nullptr, + children?._id ?? ffi.nullptr, + attributes?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTD1, + _lib._sel_attributeWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_URI_stringValue_( + SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { + final _ret = _lib._objc_msgSend_26( + _lib._class_NSXMLDTD1, + _lib._sel_attributeWithName_URI_stringValue_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject namespaceWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTD1, + _lib._sel_namespaceWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject processingInstructionWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTD1, + _lib._sel_processingInstructionWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject commentWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, + _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject textWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, + _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, + _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSString localNameForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTD1, + _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString prefixForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTD1, + _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSXMLNode predefinedNamespaceForPrefix_( + SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_1050(_lib._class_NSXMLDTD1, + _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + static NSXMLDTD new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_new1); + return NSXMLDTD._(_ret, _lib, retain: false, release: true); + } + + static NSXMLDTD allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSXMLDTD1, _lib._sel_allocWithZone_1, zone); + return NSXMLDTD._(_ret, _lib, retain: false, release: true); + } + + static NSXMLDTD alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_alloc1); + return NSXMLDTD._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSXMLDTD1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSXMLDTD1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLDTD1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLDTD1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSXMLDTD1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSXMLDTD1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSXMLDTD1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSXMLDTD1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSXMLDTD1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSXMLDTDNode extends NSXMLNode { + NSXMLDTDNode._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSXMLDTDNode] that points to the same underlying object as [other]. + static NSXMLDTDNode castFrom(T other) { + return NSXMLDTDNode._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSXMLDTDNode] that wraps the given raw object pointer. + static NSXMLDTDNode castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSXMLDTDNode._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSXMLDTDNode]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDTDNode1); + } + + NSXMLDTDNode initWithXMLString_(NSString? string) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithXMLString_1, string?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + } + + @override + NSXMLDTDNode initWithKind_options_(int kind, int options) { + final _ret = _lib._objc_msgSend_1034( + _id, _lib._sel_initWithKind_options_1, kind, options); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + } + + @override + NSXMLDTDNode init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + } + + int get DTDKind { + return _lib._objc_msgSend_1048(_id, _lib._sel_DTDKind1); + } + + set DTDKind(int value) { + return _lib._objc_msgSend_1049(_id, _lib._sel_setDTDKind_1, value); + } + + bool get external1 { + return _lib._objc_msgSend_12(_id, _lib._sel_isExternal1); + } + + NSString? get publicID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_publicID1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set publicID(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPublicID_1, value?._id ?? ffi.nullptr); + } + + NSString? get systemID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_systemID1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set systemID(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setSystemID_1, value?._id ?? ffi.nullptr); + } + + NSString? get notationName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_notationName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set notationName(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setNotationName_1, value?._id ?? ffi.nullptr); + } + + @override + NSXMLDTDNode initWithKind_(int kind) { + final _ret = _lib._objc_msgSend_1033(_id, _lib._sel_initWithKind_1, kind); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + } + + static NSObject document(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_document1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject documentWithRootElement_( + SentryCocoa _lib, NSXMLElement? element) { + final _ret = _lib._objc_msgSend_1035(_lib._class_NSXMLDTDNode1, + _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, + _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_URI_( + SentryCocoa _lib, NSString? name, NSString? URI) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTDNode1, + _lib._sel_elementWithName_URI_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? string) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTDNode1, + _lib._sel_elementWithName_stringValue_1, + name?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_children_attributes_(SentryCocoa _lib, + NSString? name, NSArray? children, NSArray? attributes) { + final _ret = _lib._objc_msgSend_1036( + _lib._class_NSXMLDTDNode1, + _lib._sel_elementWithName_children_attributes_1, + name?._id ?? ffi.nullptr, + children?._id ?? ffi.nullptr, + attributes?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTDNode1, + _lib._sel_attributeWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_URI_stringValue_( + SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { + final _ret = _lib._objc_msgSend_26( + _lib._class_NSXMLDTDNode1, + _lib._sel_attributeWithName_URI_stringValue_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject namespaceWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTDNode1, + _lib._sel_namespaceWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject processingInstructionWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTDNode1, + _lib._sel_processingInstructionWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject commentWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, + _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject textWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, + _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, + _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSString localNameForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTDNode1, + _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString prefixForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTDNode1, + _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSXMLNode predefinedNamespaceForPrefix_( + SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_1050(_lib._class_NSXMLDTDNode1, + _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + static NSXMLDTDNode new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_new1); + return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); + } + + static NSXMLDTDNode allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSXMLDTDNode1, _lib._sel_allocWithZone_1, zone); + return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); + } + + static NSXMLDTDNode alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_alloc1); + return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSXMLDTDNode1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSXMLDTDNode1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLDTDNode1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSXMLDTDNode1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSXMLDTDNode1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSXMLDTDNode1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSXMLDTDNode1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSXMLDTDNode1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSXMLDTDNode1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSXMLDTDNodeKind { + static const int NSXMLEntityGeneralKind = 1; + static const int NSXMLEntityParsedKind = 2; + static const int NSXMLEntityUnparsedKind = 3; + static const int NSXMLEntityParameterKind = 4; + static const int NSXMLEntityPredefined = 5; + static const int NSXMLAttributeCDATAKind = 6; + static const int NSXMLAttributeIDKind = 7; + static const int NSXMLAttributeIDRefKind = 8; + static const int NSXMLAttributeIDRefsKind = 9; + static const int NSXMLAttributeEntityKind = 10; + static const int NSXMLAttributeEntitiesKind = 11; + static const int NSXMLAttributeNMTokenKind = 12; + static const int NSXMLAttributeNMTokensKind = 13; + static const int NSXMLAttributeEnumerationKind = 14; + static const int NSXMLAttributeNotationKind = 15; + static const int NSXMLElementDeclarationUndefinedKind = 16; + static const int NSXMLElementDeclarationEmptyKind = 17; + static const int NSXMLElementDeclarationAnyKind = 18; + static const int NSXMLElementDeclarationMixedKind = 19; + static const int NSXMLElementDeclarationElementKind = 20; +} diff --git a/flutter/scripts/generate-cocoa-bindings.sh b/flutter/scripts/generate-cocoa-bindings.sh new file mode 100755 index 0000000000..d40dd41fd5 --- /dev/null +++ b/flutter/scripts/generate-cocoa-bindings.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ -n ${CI:+x} ]]; then + echo "Running in CI so we need to set up Flutter SDK first" + curl -Lv https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_3.13.3-stable.zip --output /tmp/flutter.zip + unzip -q /tmp/flutter.zip -d /tmp + export PATH=":/tmp/flutter/bin:$PATH" + which flutter + flutter --version +fi + +cocoa_version="${1:-$(./scripts/update-cocoa.sh get-version)}" + +cd "$(dirname "$0")/../" + +# Remove dependency on script exit (even in case of an error). +trap "dart pub remove ffigen" EXIT + +# Currently we add the dependency only when the code needs to be generated because it depends +# on Dart SDK 3.2.0 which isn't available on with Flutter stable yet. +# Leaving the dependency in pubspec would block all contributors. +# As for why this is coming from a fork - because we need a specific version of ffigen including PR 607 but not PR 601 +# which starts generating code not compatible with Dart SDK 2.17. The problem is they were merged in the wrong order... +dart pub add 'dev:ffigen:{"git":{"url":"https://github.com/getsentry/ffigen","ref":"6aa2c2642f507eab3df83373189170797a9fa5e7"}}' + +# Download Cocoa SDK (we need the headers) +temp="cocoa_bindings_temp" +rm -rf $temp +mkdir -p $temp +curl -Lv https://github.com/getsentry/sentry-cocoa/releases/download/$cocoa_version/Sentry.xcframework.zip -o $temp/Sentry.xcframework.zip +subdir="Carthage/Build/Sentry.xcframework/macos-arm64_x86_64/Sentry.framework" +unzip -q $temp/Sentry.xcframework.zip "$subdir/*" -d $temp +mv "$temp/$subdir" $temp/Sentry.framework + +dart run ffigen --config ffi-cocoa.yaml +sed -i.bak 's|final class|class|g' lib/src/sentry_cocoa.dart +rm lib/src/sentry_cocoa.dart.bak diff --git a/flutter/scripts/update-cocoa.sh b/flutter/scripts/update-cocoa.sh index ebe557c405..d54a754399 100755 --- a/flutter/scripts/update-cocoa.sh +++ b/flutter/scripts/update-cocoa.sh @@ -20,6 +20,7 @@ get-repo) set-version) newValue="${BASH_REMATCH[1]}'$2'" echo "${content/${BASH_REMATCH[0]}/$newValue}" >$file + ../scripts/generate-cocoa-bindings.sh "$2" ;; *) echo "Unknown argument $1" From 8fe0817a623681c10a24fc21eeaacffff49ebda0 Mon Sep 17 00:00:00 2001 From: Ivan Dlugos <6349682+vaind@users.noreply.github.com> Date: Tue, 12 Sep 2023 13:33:32 +0200 Subject: [PATCH 014/166] refactor: move native code to its own directory (#1638) --- flutter/analysis_options.yaml | 2 + flutter/ffi-cocoa.yaml | 2 +- .../native_app_start_event_processor.dart | 3 +- .../native_app_start_integration.dart | 2 +- .../cocoa/binding.dart} | 0 .../{ => native}/method_channel_helper.dart | 0 .../{ => native}/native_scope_observer.dart | 0 .../lib/src/{ => native}/sentry_native.dart | 32 ++++++++++++++- .../{ => native}/sentry_native_channel.dart | 35 ++-------------- .../navigation/sentry_navigator_observer.dart | 3 +- flutter/lib/src/sentry_flutter.dart | 12 +++--- .../native_app_start_integration_test.dart | 3 +- flutter/test/method_channel_helper_test.dart | 2 +- flutter/test/mocks.dart | 4 +- flutter/test/mocks.mocks.dart | 41 +++++++++++++------ flutter/test/native_scope_observer_test.dart | 2 +- flutter/test/sentry_flutter_test.dart | 2 +- flutter/test/sentry_flutter_util.dart | 2 +- flutter/test/sentry_native_channel_test.dart | 6 +-- flutter/test/sentry_native_test.dart | 3 +- .../test/sentry_navigator_observer_test.dart | 3 +- 21 files changed, 87 insertions(+), 72 deletions(-) rename flutter/lib/src/{sentry_cocoa.dart => native/cocoa/binding.dart} (100%) rename flutter/lib/src/{ => native}/method_channel_helper.dart (100%) rename flutter/lib/src/{ => native}/native_scope_observer.dart (100%) rename flutter/lib/src/{ => native}/sentry_native.dart (79%) rename flutter/lib/src/{ => native}/sentry_native_channel.dart (84%) diff --git a/flutter/analysis_options.yaml b/flutter/analysis_options.yaml index 47255eaaa4..d95702842f 100644 --- a/flutter/analysis_options.yaml +++ b/flutter/analysis_options.yaml @@ -1,6 +1,8 @@ include: package:flutter_lints/flutter.yaml analyzer: + exclude: + - test/*.mocks.dart language: strict-casts: true strict-inference: true diff --git a/flutter/ffi-cocoa.yaml b/flutter/ffi-cocoa.yaml index 5fdf4330c5..13e619fc8c 100644 --- a/flutter/ffi-cocoa.yaml +++ b/flutter/ffi-cocoa.yaml @@ -1,7 +1,7 @@ name: SentryCocoa description: Sentry Cocoa SDK FFI binding. language: objc -output: lib/src/sentry_cocoa.dart +output: lib/src/native/cocoa/binding.dart headers: entry-points: - ./cocoa_bindings_temp/Sentry.framework/Versions/A/PrivateHeaders/PrivateSentrySDKOnly.h diff --git a/flutter/lib/src/event_processor/native_app_start_event_processor.dart b/flutter/lib/src/event_processor/native_app_start_event_processor.dart index 2187204299..a7abe62e05 100644 --- a/flutter/lib/src/event_processor/native_app_start_event_processor.dart +++ b/flutter/lib/src/event_processor/native_app_start_event_processor.dart @@ -2,8 +2,7 @@ import 'dart:async'; import 'package:sentry/sentry.dart'; -import '../sentry_native.dart'; -import '../sentry_native_channel.dart'; +import '../native/sentry_native.dart'; /// EventProcessor that enriches [SentryTransaction] objects with app start /// measurement. diff --git a/flutter/lib/src/integrations/native_app_start_integration.dart b/flutter/lib/src/integrations/native_app_start_integration.dart index a47eb74717..47bf79dff4 100644 --- a/flutter/lib/src/integrations/native_app_start_integration.dart +++ b/flutter/lib/src/integrations/native_app_start_integration.dart @@ -2,7 +2,7 @@ import 'package:flutter/scheduler.dart'; import 'package:sentry/sentry.dart'; import '../sentry_flutter_options.dart'; -import '../sentry_native.dart'; +import '../native/sentry_native.dart'; import '../event_processor/native_app_start_event_processor.dart'; /// Integration which handles communication with native frameworks in order to diff --git a/flutter/lib/src/sentry_cocoa.dart b/flutter/lib/src/native/cocoa/binding.dart similarity index 100% rename from flutter/lib/src/sentry_cocoa.dart rename to flutter/lib/src/native/cocoa/binding.dart diff --git a/flutter/lib/src/method_channel_helper.dart b/flutter/lib/src/native/method_channel_helper.dart similarity index 100% rename from flutter/lib/src/method_channel_helper.dart rename to flutter/lib/src/native/method_channel_helper.dart diff --git a/flutter/lib/src/native_scope_observer.dart b/flutter/lib/src/native/native_scope_observer.dart similarity index 100% rename from flutter/lib/src/native_scope_observer.dart rename to flutter/lib/src/native/native_scope_observer.dart diff --git a/flutter/lib/src/sentry_native.dart b/flutter/lib/src/native/sentry_native.dart similarity index 79% rename from flutter/lib/src/sentry_native.dart rename to flutter/lib/src/native/sentry_native.dart index 3727294f74..6250831299 100644 --- a/flutter/lib/src/sentry_native.dart +++ b/flutter/lib/src/native/sentry_native.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:meta/meta.dart'; -import '../sentry_flutter.dart'; +import '../../sentry_flutter.dart'; import 'sentry_native_channel.dart'; /// [SentryNative] holds state that it fetches from to the native SDKs. Always @@ -98,3 +98,33 @@ class SentryNative { _didFetchAppStart = false; } } + +class NativeAppStart { + NativeAppStart(this.appStartTime, this.isColdStart); + + double appStartTime; + bool isColdStart; + + factory NativeAppStart.fromJson(Map json) { + return NativeAppStart( + json['appStartTime'] as double, + json['isColdStart'] as bool, + ); + } +} + +class NativeFrames { + NativeFrames(this.totalFrames, this.slowFrames, this.frozenFrames); + + int totalFrames; + int slowFrames; + int frozenFrames; + + factory NativeFrames.fromJson(Map json) { + return NativeFrames( + json['totalFrames'] as int, + json['slowFrames'] as int, + json['frozenFrames'] as int, + ); + } +} diff --git a/flutter/lib/src/sentry_native_channel.dart b/flutter/lib/src/native/sentry_native_channel.dart similarity index 84% rename from flutter/lib/src/sentry_native_channel.dart rename to flutter/lib/src/native/sentry_native_channel.dart index 44e4135b9f..63fd53bd06 100644 --- a/flutter/lib/src/sentry_native_channel.dart +++ b/flutter/lib/src/native/sentry_native_channel.dart @@ -3,10 +3,11 @@ import 'dart:async'; import 'package:flutter/services.dart'; import 'package:meta/meta.dart'; -import '../sentry_flutter.dart'; +import '../../sentry_flutter.dart'; +import 'sentry_native.dart'; import 'method_channel_helper.dart'; -/// Provide typed methods to access native layer. +/// Provide typed methods to access native layer via MethodChannel. @internal class SentryNativeChannel { SentryNativeChannel(this._channel, this._options); @@ -149,33 +150,3 @@ class SentryNativeChannel { ); } } - -class NativeAppStart { - NativeAppStart(this.appStartTime, this.isColdStart); - - double appStartTime; - bool isColdStart; - - factory NativeAppStart.fromJson(Map json) { - return NativeAppStart( - json['appStartTime'] as double, - json['isColdStart'] as bool, - ); - } -} - -class NativeFrames { - NativeFrames(this.totalFrames, this.slowFrames, this.frozenFrames); - - int totalFrames; - int slowFrames; - int frozenFrames; - - factory NativeFrames.fromJson(Map json) { - return NativeFrames( - json['totalFrames'] as int, - json['slowFrames'] as int, - json['frozenFrames'] as int, - ); - } -} diff --git a/flutter/lib/src/navigation/sentry_navigator_observer.dart b/flutter/lib/src/navigation/sentry_navigator_observer.dart index 135d131ec2..8b88b88088 100644 --- a/flutter/lib/src/navigation/sentry_navigator_observer.dart +++ b/flutter/lib/src/navigation/sentry_navigator_observer.dart @@ -1,8 +1,7 @@ import 'package:flutter/widgets.dart'; import '../../sentry_flutter.dart'; -import '../sentry_native.dart'; -import '../sentry_native_channel.dart'; +import '../native/sentry_native.dart'; /// This key must be used so that the web interface displays the events nicely /// See https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/ diff --git a/flutter/lib/src/sentry_flutter.dart b/flutter/lib/src/sentry_flutter.dart index 13aa7cc552..688f10aac0 100644 --- a/flutter/lib/src/sentry_flutter.dart +++ b/flutter/lib/src/sentry_flutter.dart @@ -10,10 +10,10 @@ import 'event_processor/android_platform_exception_event_processor.dart'; import 'event_processor/flutter_exception_event_processor.dart'; import 'event_processor/platform_exception_event_processor.dart'; import 'integrations/screenshot_integration.dart'; -import 'native_scope_observer.dart'; +import 'native/native_scope_observer.dart'; import 'renderer/renderer.dart'; -import 'sentry_native.dart'; -import 'sentry_native_channel.dart'; +import 'native/sentry_native.dart'; +import 'native/sentry_native_channel.dart'; import 'integrations/integrations.dart'; import 'event_processor/flutter_enricher_event_processor.dart'; @@ -47,10 +47,10 @@ mixin SentryFlutter { flutterOptions.rendererWrapper = rendererWrapper; } - final nativeChannel = SentryNativeChannel(channel, flutterOptions); if (flutterOptions.platformChecker.hasNativeIntegration) { - final native = SentryNative(); - native.nativeChannel = nativeChannel; + // Set a default native channel to the singleton SentryNative instance. + SentryNative().nativeChannel = + SentryNativeChannel(channel, flutterOptions); } final platformDispatcher = PlatformDispatcher.instance; diff --git a/flutter/test/integrations/native_app_start_integration_test.dart b/flutter/test/integrations/native_app_start_integration_test.dart index b2ef832705..b4e06183c1 100644 --- a/flutter/test/integrations/native_app_start_integration_test.dart +++ b/flutter/test/integrations/native_app_start_integration_test.dart @@ -4,8 +4,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sentry_flutter/src/integrations/native_app_start_integration.dart'; -import 'package:sentry_flutter/src/sentry_native.dart'; -import 'package:sentry_flutter/src/sentry_native_channel.dart'; +import 'package:sentry_flutter/src/native/sentry_native.dart'; import 'package:sentry/src/sentry_tracer.dart'; import '../mocks.dart'; diff --git a/flutter/test/method_channel_helper_test.dart b/flutter/test/method_channel_helper_test.dart index 018fc7ec67..12729e7313 100644 --- a/flutter/test/method_channel_helper_test.dart +++ b/flutter/test/method_channel_helper_test.dart @@ -1,5 +1,5 @@ import 'package:flutter_test/flutter_test.dart'; -import 'package:sentry_flutter/src/method_channel_helper.dart'; +import 'package:sentry_flutter/src/native/method_channel_helper.dart'; import 'package:collection/collection.dart'; void main() { diff --git a/flutter/test/mocks.dart b/flutter/test/mocks.dart index 28da5e6bff..39209f7015 100644 --- a/flutter/test/mocks.dart +++ b/flutter/test/mocks.dart @@ -11,8 +11,8 @@ import 'package:sentry/src/sentry_tracer.dart'; import 'package:meta/meta.dart'; import 'package:sentry_flutter/src/binding_wrapper.dart'; import 'package:sentry_flutter/src/renderer/renderer.dart'; -import 'package:sentry_flutter/src/sentry_native.dart'; -import 'package:sentry_flutter/src/sentry_native_channel.dart'; +import 'package:sentry_flutter/src/native/sentry_native.dart'; +import 'package:sentry_flutter/src/native/sentry_native_channel.dart'; import 'mocks.mocks.dart'; import 'no_such_method_provider.dart'; diff --git a/flutter/test/mocks.mocks.dart b/flutter/test/mocks.mocks.dart index 70a42aff77..b92e8cfba8 100644 --- a/flutter/test/mocks.mocks.dart +++ b/flutter/test/mocks.mocks.dart @@ -13,8 +13,8 @@ import 'package:sentry/sentry.dart' as _i2; import 'package:sentry/src/protocol.dart' as _i3; import 'package:sentry/src/sentry_envelope.dart' as _i7; import 'package:sentry/src/sentry_tracer.dart' as _i8; -import 'package:sentry_flutter/src/sentry_native.dart' as _i10; -import 'package:sentry_flutter/src/sentry_native_channel.dart' as _i11; +import 'package:sentry_flutter/src/native/sentry_native.dart' as _i10; +import 'package:sentry_flutter/src/native/sentry_native_channel.dart' as _i11; import 'mocks.dart' as _i12; @@ -112,8 +112,18 @@ class _FakeSentryId_7 extends _i1.SmartFake implements _i3.SentryId { ); } -class _FakeHub_8 extends _i1.SmartFake implements _i2.Hub { - _FakeHub_8( +class _FakeScope_8 extends _i1.SmartFake implements _i2.Scope { + _FakeScope_8( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeHub_9 extends _i1.SmartFake implements _i2.Hub { + _FakeHub_9( Object parent, Invocation parentInvocation, ) : super( @@ -144,7 +154,6 @@ class MockTransport extends _i1.Mock implements _i2.Transport { /// A class which mocks [SentryTracer]. /// /// See the documentation for Mockito's code generation for more information. -// ignore: invalid_use_of_internal_member class MockSentryTracer extends _i1.Mock implements _i8.SentryTracer { MockSentryTracer() { _i1.throwOnMissingStub(this); @@ -526,13 +535,13 @@ class MockSentryNative extends _i1.Mock implements _i10.SentryNative { returnValue: false, ) as bool); @override - _i6.Future<_i11.NativeAppStart?> fetchNativeAppStart() => (super.noSuchMethod( + _i6.Future<_i10.NativeAppStart?> fetchNativeAppStart() => (super.noSuchMethod( Invocation.method( #fetchNativeAppStart, [], ), - returnValue: _i6.Future<_i11.NativeAppStart?>.value(), - ) as _i6.Future<_i11.NativeAppStart?>); + returnValue: _i6.Future<_i10.NativeAppStart?>.value(), + ) as _i6.Future<_i10.NativeAppStart?>); @override _i6.Future beginNativeFramesCollection() => (super.noSuchMethod( Invocation.method( @@ -543,15 +552,15 @@ class MockSentryNative extends _i1.Mock implements _i10.SentryNative { returnValueForMissingStub: _i6.Future.value(), ) as _i6.Future); @override - _i6.Future<_i11.NativeFrames?> endNativeFramesCollection( + _i6.Future<_i10.NativeFrames?> endNativeFramesCollection( _i3.SentryId? traceId) => (super.noSuchMethod( Invocation.method( #endNativeFramesCollection, [traceId], ), - returnValue: _i6.Future<_i11.NativeFrames?>.value(), - ) as _i6.Future<_i11.NativeFrames?>); + returnValue: _i6.Future<_i10.NativeFrames?>.value(), + ) as _i6.Future<_i10.NativeFrames?>); @override _i6.Future setContexts( String? key, @@ -695,6 +704,14 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), ) as _i3.SentryId); @override + _i2.Scope get scope => (super.noSuchMethod( + Invocation.getter(#scope), + returnValue: _FakeScope_8( + this, + Invocation.getter(#scope), + ), + ) as _i2.Scope); + @override _i6.Future<_i3.SentryId> captureEvent( _i3.SentryEvent? event, { dynamic stackTrace, @@ -828,7 +845,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { #clone, [], ), - returnValue: _FakeHub_8( + returnValue: _FakeHub_9( this, Invocation.method( #clone, diff --git a/flutter/test/native_scope_observer_test.dart b/flutter/test/native_scope_observer_test.dart index 0efb22a2c1..916bd4b7be 100644 --- a/flutter/test/native_scope_observer_test.dart +++ b/flutter/test/native_scope_observer_test.dart @@ -2,7 +2,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:sentry/sentry.dart'; -import 'package:sentry_flutter/src/native_scope_observer.dart'; +import 'package:sentry_flutter/src/native/native_scope_observer.dart'; import 'mocks.dart'; diff --git a/flutter/test/sentry_flutter_test.dart b/flutter/test/sentry_flutter_test.dart index 56f6f250a6..4621ae3b7f 100644 --- a/flutter/test/sentry_flutter_test.dart +++ b/flutter/test/sentry_flutter_test.dart @@ -6,7 +6,7 @@ import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sentry_flutter/src/integrations/integrations.dart'; import 'package:sentry_flutter/src/integrations/screenshot_integration.dart'; import 'package:sentry_flutter/src/renderer/renderer.dart'; -import 'package:sentry_flutter/src/sentry_native.dart'; +import 'package:sentry_flutter/src/native/sentry_native.dart'; import 'package:sentry_flutter/src/version.dart'; import 'package:sentry_flutter/src/view_hierarchy/view_hierarchy_integration.dart'; import 'mocks.dart'; diff --git a/flutter/test/sentry_flutter_util.dart b/flutter/test/sentry_flutter_util.dart index dcff13c054..7397c4a6a5 100644 --- a/flutter/test/sentry_flutter_util.dart +++ b/flutter/test/sentry_flutter_util.dart @@ -1,7 +1,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sentry_flutter/src/file_system_transport.dart'; -import 'package:sentry_flutter/src/native_scope_observer.dart'; +import 'package:sentry_flutter/src/native/native_scope_observer.dart'; void testTransport({ required Transport transport, diff --git a/flutter/test/sentry_native_channel_test.dart b/flutter/test/sentry_native_channel_test.dart index 2264f2fad0..cd05bf71ea 100644 --- a/flutter/test/sentry_native_channel_test.dart +++ b/flutter/test/sentry_native_channel_test.dart @@ -5,9 +5,9 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; -import 'package:sentry_flutter/src/method_channel_helper.dart'; -import 'package:sentry_flutter/src/sentry_native.dart'; -import 'package:sentry_flutter/src/sentry_native_channel.dart'; +import 'package:sentry_flutter/src/native/method_channel_helper.dart'; +import 'package:sentry_flutter/src/native/sentry_native.dart'; +import 'package:sentry_flutter/src/native/sentry_native_channel.dart'; import 'mocks.mocks.dart'; void main() { diff --git a/flutter/test/sentry_native_test.dart b/flutter/test/sentry_native_test.dart index 4d38a45122..d6b5fab583 100644 --- a/flutter/test/sentry_native_test.dart +++ b/flutter/test/sentry_native_test.dart @@ -2,8 +2,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; -import 'package:sentry_flutter/src/sentry_native.dart'; -import 'package:sentry_flutter/src/sentry_native_channel.dart'; +import 'package:sentry_flutter/src/native/sentry_native.dart'; import 'mocks.dart'; void main() { diff --git a/flutter/test/sentry_navigator_observer_test.dart b/flutter/test/sentry_navigator_observer_test.dart index d4c2499efc..c9a1629362 100644 --- a/flutter/test/sentry_navigator_observer_test.dart +++ b/flutter/test/sentry_navigator_observer_test.dart @@ -5,8 +5,7 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; -import 'package:sentry_flutter/src/sentry_native.dart'; -import 'package:sentry_flutter/src/sentry_native_channel.dart'; +import 'package:sentry_flutter/src/native/sentry_native.dart'; import 'package:sentry/src/sentry_tracer.dart'; import 'mocks.dart'; From 5aa047a877938a94fb2be6b2fa165bc503e68f95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 12 Sep 2023 12:25:32 +0000 Subject: [PATCH 015/166] Log SDK errors to the console if the log level is `fatal` even if `debug` is disabled (#1635) --- CHANGELOG.md | 1 + dart/lib/src/diagnostic_logger.dart | 4 +- dart/test/diagnostic_logger_test.dart | 64 +++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 dart/test/diagnostic_logger_test.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index 23aef939fe..1abf8b80a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Add http.request.method attribute to http spans data ([#1633](https://github.com/getsentry/sentry-dart/pull/1633)) - Add db.system and db.name attributes to db spans data ([#1629](https://github.com/getsentry/sentry-dart/pull/1629)) +- Log SDK errors to the console if the log level is `fatal` even if `debug` is disabled ([#1635](https://github.com/getsentry/sentry-dart/pull/1635)) ### Features diff --git a/dart/lib/src/diagnostic_logger.dart b/dart/lib/src/diagnostic_logger.dart index 9a393f974f..ca523c12ae 100644 --- a/dart/lib/src/diagnostic_logger.dart +++ b/dart/lib/src/diagnostic_logger.dart @@ -26,6 +26,8 @@ class DiagnosticLogger { } bool _isEnabled(SentryLevel level) { - return _options.debug && level.ordinal >= _options.diagnosticLevel.ordinal; + return _options.debug && + level.ordinal >= _options.diagnosticLevel.ordinal || + level == SentryLevel.fatal; } } diff --git a/dart/test/diagnostic_logger_test.dart b/dart/test/diagnostic_logger_test.dart new file mode 100644 index 0000000000..ec53421e33 --- /dev/null +++ b/dart/test/diagnostic_logger_test.dart @@ -0,0 +1,64 @@ +import 'package:sentry/sentry.dart'; +import 'package:sentry/src/diagnostic_logger.dart'; +import 'package:test/test.dart'; + +void main() { + late Fixture fixture; + + setUp(() { + fixture = Fixture(); + }); + + test('$DiagnosticLogger do not log if debug is disabled', () { + fixture.options.debug = false; + + fixture.getSut().log(SentryLevel.error, 'foobar'); + + expect(fixture.loggedMessage, isNull); + }); + + test('$DiagnosticLogger log if debug is enabled', () { + fixture.options.debug = true; + + fixture.getSut().log(SentryLevel.error, 'foobar'); + + expect(fixture.loggedMessage, 'foobar'); + }); + + test('$DiagnosticLogger do not log if level is too low', () { + fixture.options.debug = true; + fixture.options.diagnosticLevel = SentryLevel.error; + + fixture.getSut().log(SentryLevel.warning, 'foobar'); + + expect(fixture.loggedMessage, isNull); + }); + + test('$DiagnosticLogger always log fatal', () { + fixture.options.debug = false; + + fixture.getSut().log(SentryLevel.fatal, 'foobar'); + + expect(fixture.loggedMessage, 'foobar'); + }); +} + +class Fixture { + var options = SentryOptions(); + + Object? loggedMessage; + + DiagnosticLogger getSut() { + return DiagnosticLogger(mockLogger, options); + } + + void mockLogger( + SentryLevel level, + String message, { + String? logger, + Object? exception, + StackTrace? stackTrace, + }) { + loggedMessage = message; + } +} From d53c6fa1b52ab8af533ed149f9b91e1fda4d810b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 12 Sep 2023 14:40:34 +0000 Subject: [PATCH 016/166] Fix autoPerformanceTracingEnabled flag in andorid plugin (#1640) --- .../main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt index 9468ed40ff..2ae6a673cb 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt @@ -40,7 +40,6 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { private var activity: WeakReference? = null private var framesTracker: ActivityFramesTracker? = null - private var autoPerformanceTracingEnabled = false override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { context = flutterPluginBinding.applicationContext @@ -137,7 +136,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { } private fun fetchNativeAppStart(result: Result) { - if (!autoPerformanceTracingEnabled) { + if (!sentryFlutter.autoPerformanceTracingEnabled) { result.success(null) return } @@ -161,7 +160,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { } private fun beginNativeFrames(result: Result) { - if (!autoPerformanceTracingEnabled) { + if (!sentryFlutter.autoPerformanceTracingEnabled) { result.success(null) return } @@ -174,7 +173,7 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { private fun endNativeFrames(id: String?, result: Result) { val activity = activity?.get() - if (!autoPerformanceTracingEnabled || activity == null || id == null) { + if (!sentryFlutter.autoPerformanceTracingEnabled || activity == null || id == null) { if (id == null) { Log.w("Sentry", "Parameter id cannot be null when calling endNativeFrames.") } From bdd1a2303576e0f279108ed79d9c48a1aed4ba08 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 13 Sep 2023 11:22:24 +0200 Subject: [PATCH 017/166] Add Sampling Decision to Trace Envelope Header (#1639) * add sampled flag * fmt * update changelog * redo fmt * fix tests --- CHANGELOG.md | 1 + dart/lib/src/sentry_baggage.dart | 4 ++++ dart/lib/src/sentry_trace_context_header.dart | 8 +++++++- dart/lib/src/sentry_tracer.dart | 1 + dart/test/protocol/sentry_baggage_header_test.dart | 3 ++- dart/test/sentry_trace_context_header_test.dart | 4 +++- dart/test/sentry_tracer_test.dart | 2 ++ dart/test/utils/tracing_utils_test.dart | 2 +- 8 files changed, 21 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1abf8b80a1..95bd346ce7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Enhancements +- Add Sampling Decision to Trace Envelope Header ([#1639](https://github.com/getsentry/sentry-dart/pull/1639)) - Add http.request.method attribute to http spans data ([#1633](https://github.com/getsentry/sentry-dart/pull/1633)) - Add db.system and db.name attributes to db spans data ([#1629](https://github.com/getsentry/sentry-dart/pull/1629)) - Log SDK errors to the console if the log level is `fatal` even if `debug` is disabled ([#1635](https://github.com/getsentry/sentry-dart/pull/1635)) diff --git a/dart/lib/src/sentry_baggage.dart b/dart/lib/src/sentry_baggage.dart index 60ac395648..25aab900f4 100644 --- a/dart/lib/src/sentry_baggage.dart +++ b/dart/lib/src/sentry_baggage.dart @@ -188,6 +188,10 @@ class SentryBaggage { set(_sampleRateKeyName, value); } + void setSampled(String value) { + set('sentry-sampled', value); + } + double? getSampleRate() { final sampleRate = get(_sampleRateKeyName); if (sampleRate == null) { diff --git a/dart/lib/src/sentry_trace_context_header.dart b/dart/lib/src/sentry_trace_context_header.dart index 68208a7096..bcb1d0b1bb 100644 --- a/dart/lib/src/sentry_trace_context_header.dart +++ b/dart/lib/src/sentry_trace_context_header.dart @@ -12,6 +12,7 @@ class SentryTraceContextHeader { this.userSegment, this.transaction, this.sampleRate, + this.sampled, }); final SentryId traceId; @@ -22,6 +23,7 @@ class SentryTraceContextHeader { final String? userSegment; final String? transaction; final String? sampleRate; + final String? sampled; /// Deserializes a [SentryTraceContextHeader] from JSON [Map]. factory SentryTraceContextHeader.fromJson(Map json) { @@ -34,6 +36,7 @@ class SentryTraceContextHeader { userSegment: json['user_segment'], transaction: json['transaction'], sampleRate: json['sample_rate'], + sampled: json['sampled'], ); } @@ -48,6 +51,7 @@ class SentryTraceContextHeader { if (userSegment != null) 'user_segment': userSegment, if (transaction != null) 'transaction': transaction, if (sampleRate != null) 'sample_rate': sampleRate, + if (sampled != null) 'sampled': sampled, }; } @@ -76,7 +80,9 @@ class SentryTraceContextHeader { if (sampleRate != null) { baggage.setSampleRate(sampleRate!); } - + if (sampled != null) { + baggage.setSampled(sampled!); + } return baggage; } diff --git a/dart/lib/src/sentry_tracer.dart b/dart/lib/src/sentry_tracer.dart index 2ca82a91ca..46edb2bccb 100644 --- a/dart/lib/src/sentry_tracer.dart +++ b/dart/lib/src/sentry_tracer.dart @@ -346,6 +346,7 @@ class SentryTracer extends ISentrySpan { transaction: _isHighQualityTransactionName(transactionNameSource) ? name : null, sampleRate: _sampleRateToString(_rootSpan.samplingDecision?.sampleRate), + sampled: _rootSpan.samplingDecision?.sampled.toString(), ); return _sentryTraceContextHeader; diff --git a/dart/test/protocol/sentry_baggage_header_test.dart b/dart/test/protocol/sentry_baggage_header_test.dart index 4fdb6a13d4..38428be41a 100644 --- a/dart/test/protocol/sentry_baggage_header_test.dart +++ b/dart/test/protocol/sentry_baggage_header_test.dart @@ -20,11 +20,12 @@ void main() { baggage.setUserSegment('userSegment'); baggage.setTransaction('transaction'); baggage.setSampleRate('1.0'); + baggage.setSampled('false'); final baggageHeader = SentryBaggageHeader.fromBaggage(baggage); expect(baggageHeader.value, - 'sentry-trace_id=$id,sentry-public_key=publicKey,sentry-release=release,sentry-environment=environment,sentry-user_id=userId,sentry-user_segment=userSegment,sentry-transaction=transaction,sentry-sample_rate=1.0'); + 'sentry-trace_id=$id,sentry-public_key=publicKey,sentry-release=release,sentry-environment=environment,sentry-user_id=userId,sentry-user_segment=userSegment,sentry-transaction=transaction,sentry-sample_rate=1.0,sentry-sampled=false'); }); }); } diff --git a/dart/test/sentry_trace_context_header_test.dart b/dart/test/sentry_trace_context_header_test.dart index 8de346c943..6ba6d93bc2 100644 --- a/dart/test/sentry_trace_context_header_test.dart +++ b/dart/test/sentry_trace_context_header_test.dart @@ -14,6 +14,7 @@ void main() { 'user_segment': 'user_segment', 'transaction': 'transaction', 'sample_rate': '1.0', + 'sampled': 'false' }; final context = SentryTraceContextHeader.fromJson(mapJson); @@ -26,6 +27,7 @@ void main() { expect(context.userSegment, 'user_segment'); expect(context.transaction, 'transaction'); expect(context.sampleRate, '1.0'); + expect(context.sampled, 'false'); }); test('toJson', () { @@ -38,7 +40,7 @@ void main() { final baggage = context.toBaggage(); expect(baggage.toHeaderString(), - 'sentry-trace_id=${id.toString()},sentry-public_key=123,sentry-release=release,sentry-environment=environment,sentry-user_id=user_id,sentry-user_segment=user_segment,sentry-transaction=transaction,sentry-sample_rate=1.0'); + 'sentry-trace_id=${id.toString()},sentry-public_key=123,sentry-release=release,sentry-environment=environment,sentry-user_id=user_id,sentry-user_segment=user_segment,sentry-transaction=transaction,sentry-sample_rate=1.0,sentry-sampled=false'); }); }); } diff --git a/dart/test/sentry_tracer_test.dart b/dart/test/sentry_tracer_test.dart index cb9f72fdfc..48ff011e82 100644 --- a/dart/test/sentry_tracer_test.dart +++ b/dart/test/sentry_tracer_test.dart @@ -489,6 +489,7 @@ void main() { expect(newBaggage.get('sentry-user_segment'), 'segment'); expect(newBaggage.get('sentry-transaction'), 'name'); expect(newBaggage.get('sentry-sample_rate'), '1'); + expect(newBaggage.get('sentry-sampled'), 'true'); }); test('skip transaction name if low cardinality', () { @@ -562,6 +563,7 @@ void main() { expect(context.userSegment, 'segment'); expect(context.transaction, 'name'); expect(context.sampleRate, '1'); + expect(context.sampled, 'true'); }); }); } diff --git a/dart/test/utils/tracing_utils_test.dart b/dart/test/utils/tracing_utils_test.dart index 3dd47c3186..96b26b55b1 100644 --- a/dart/test/utils/tracing_utils_test.dart +++ b/dart/test/utils/tracing_utils_test.dart @@ -125,7 +125,7 @@ void main() { addBaggageHeaderFromSpan(sut, headers); expect(headers[baggage!.name], - 'other-vendor-value=foo,sentry-trace_id=${sut.context.traceId},sentry-public_key=abc,sentry-release=release,sentry-environment=environment,sentry-user_segment=segment,sentry-transaction=name,sentry-sample_rate=1'); + 'other-vendor-value=foo,sentry-trace_id=${sut.context.traceId},sentry-public_key=abc,sentry-release=release,sentry-environment=environment,sentry-user_segment=segment,sentry-transaction=name,sentry-sample_rate=1,sentry-sampled=true'); }); }); From ffae3e37634fac9c17703fb67b274c6efec1934f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Sep 2023 13:34:27 +0200 Subject: [PATCH 018/166] chore: update metrics/flutter.properties to 3.13.3 (#1632) Co-authored-by: GitHub --- metrics/flutter.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/flutter.properties b/metrics/flutter.properties index 12a11ee1de..37ce1e3724 100644 --- a/metrics/flutter.properties +++ b/metrics/flutter.properties @@ -1,2 +1,2 @@ -version = 3.10.3 +version = 3.13.3 repo = https://github.com/flutter/flutter From c732386ce5f372225fe638c1ded8d02c6e04a8fd Mon Sep 17 00:00:00 2001 From: Ivan Dlugos <6349682+vaind@users.noreply.github.com> Date: Wed, 13 Sep 2023 14:46:19 +0200 Subject: [PATCH 019/166] fix: add missing FFI depdendency (#1642) --- flutter/pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 884e799074..3e515b8739 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -18,6 +18,7 @@ dependencies: sentry: 7.9.0 package_info_plus: '>=1.0.0 <5.0.0' meta: ^1.3.0 + ffi: ^2.0.0 dev_dependencies: build_runner: ^2.4.2 From 71291027db3b5c6abae4ccc8e567675e3b0ca10d Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 13 Sep 2023 14:09:47 +0000 Subject: [PATCH 020/166] release: 7.10.1 --- CHANGELOG.md | 2 +- dart/lib/src/version.dart | 2 +- dart/pubspec.yaml | 2 +- dio/lib/src/version.dart | 2 +- dio/pubspec.yaml | 4 ++-- file/lib/src/version.dart | 2 +- file/pubspec.yaml | 4 ++-- flutter/example/pubspec.yaml | 2 +- flutter/lib/src/version.dart | 2 +- flutter/pubspec.yaml | 4 ++-- logging/lib/src/version.dart | 2 +- logging/pubspec.yaml | 4 ++-- sqflite/lib/src/version.dart | 2 +- sqflite/pubspec.yaml | 4 ++-- 14 files changed, 19 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95bd346ce7..22a4a38e04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 7.10.1 ### Enhancements diff --git a/dart/lib/src/version.dart b/dart/lib/src/version.dart index 6e9ff2059d..800985f3d8 100644 --- a/dart/lib/src/version.dart +++ b/dart/lib/src/version.dart @@ -9,7 +9,7 @@ library version; /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.9.0'; +const String sdkVersion = '7.10.1'; String sdkName(bool isWeb) => isWeb ? _browserSdkName : _ioSdkName; diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index 330d6084e7..5487446118 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry -version: 7.9.0 +version: 7.10.1 description: > A crash reporting library for Dart that sends crash reports to Sentry.io. This library supports Dart VM and Web. For Flutter consider sentry_flutter instead. diff --git a/dio/lib/src/version.dart b/dio/lib/src/version.dart index 0efaa7daaa..d16c3cf6a8 100644 --- a/dio/lib/src/version.dart +++ b/dio/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.9.0'; +const String sdkVersion = '7.10.1'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_dio'; diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index 1343b6127b..56e5102e60 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_dio description: An integration which adds support for performance tracing for the Dio package. -version: 7.9.0 +version: 7.10.1 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: dio: ^5.0.0 - sentry: 7.9.0 + sentry: 7.10.1 dev_dependencies: meta: ^1.3.0 diff --git a/file/lib/src/version.dart b/file/lib/src/version.dart index 5b59773228..683b74ef18 100644 --- a/file/lib/src/version.dart +++ b/file/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.9.0'; +const String sdkVersion = '7.10.1'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_file'; diff --git a/file/pubspec.yaml b/file/pubspec.yaml index d6fcad6e27..1fd8ccf5d8 100644 --- a/file/pubspec.yaml +++ b/file/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_file description: An integration which adds support for performance tracing for dart.io.File. -version: 7.9.0 +version: 7.10.1 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: sdk: '>=2.19.0 <4.0.0' dependencies: - sentry: 7.9.0 + sentry: 7.10.1 meta: ^1.3.0 dev_dependencies: diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index 7b523385d8..c4596f70b8 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_flutter_example description: Demonstrates how to use the sentry_flutter plugin. -version: 7.9.0 +version: 7.10.1 publish_to: 'none' # Remove this line if you wish to publish to pub.dev diff --git a/flutter/lib/src/version.dart b/flutter/lib/src/version.dart index 0da840e5b1..1937f65d8e 100644 --- a/flutter/lib/src/version.dart +++ b/flutter/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.9.0'; +const String sdkVersion = '7.10.1'; /// The default SDK name reported to Sentry.io in the submitted events. const String sdkName = 'sentry.dart.flutter'; diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 3e515b8739..89e79196a2 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry_flutter -version: 7.9.0 +version: 7.10.1 description: Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supported by Sentry with native SDKs. homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart @@ -15,7 +15,7 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - sentry: 7.9.0 + sentry: 7.10.1 package_info_plus: '>=1.0.0 <5.0.0' meta: ^1.3.0 ffi: ^2.0.0 diff --git a/logging/lib/src/version.dart b/logging/lib/src/version.dart index 3905a5c4dc..f0f9621f37 100644 --- a/logging/lib/src/version.dart +++ b/logging/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.9.0'; +const String sdkVersion = '7.10.1'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_logging'; diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index b964b9d9fd..a9394bc92c 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_logging description: An integration which adds support for recording log from the logging package. -version: 7.9.0 +version: 7.10.1 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: logging: ^1.0.0 - sentry: 7.9.0 + sentry: 7.10.1 dev_dependencies: lints: ^2.0.0 diff --git a/sqflite/lib/src/version.dart b/sqflite/lib/src/version.dart index 67be6e3068..a32be0b273 100644 --- a/sqflite/lib/src/version.dart +++ b/sqflite/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.9.0'; +const String sdkVersion = '7.10.1'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_sqflite'; diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index 55fa554d05..8f1b5ba006 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_sqflite description: An integration which adds support for performance tracing for the sqflite package. -version: 7.9.0 +version: 7.10.1 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' # matching sqflite dependencies: - sentry: 7.9.0 + sentry: 7.10.1 sqflite: ^2.0.0 sqflite_common: ^2.0.0 meta: ^1.3.0 From 03fc2a65c5ae72a65897661826c7def5219b1a54 Mon Sep 17 00:00:00 2001 From: Ivan Dlugos <6349682+vaind@users.noreply.github.com> Date: Mon, 18 Sep 2023 15:13:44 +0200 Subject: [PATCH 021/166] ci: macos integration test (#1645) --- .github/workflows/flutter.yml | 2 +- .github/workflows/flutter_test.yml | 57 +++++++++++++++++------------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index c9aee61835..cb05fac65d 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -21,7 +21,7 @@ jobs: access_token: ${{ github.token }} build: - name: ${{ matrix.target }} | ${{ matrix.os }} | ${{ matrix.sdk }} + name: "${{ matrix.target }} | ${{ matrix.os }} | ${{ matrix.sdk }}" runs-on: ${{ matrix.os }} timeout-minutes: 30 defaults: diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 15305acb7d..3bfda0de36 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -6,7 +6,7 @@ on: - release/** pull_request: paths-ignore: - - 'file/**' + - "file/**" env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} @@ -103,9 +103,10 @@ jobs: avd-name: macOS-avd-x86_64-31 emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true - script: flutter test integration_test/integration_test.dart --verbose + script: flutter test integration_test --verbose - test-ios: + cocoa: + name: "${{ matrix.target }} | ${{ matrix.sdk }}" runs-on: macos-13 timeout-minutes: 30 defaults: @@ -114,8 +115,8 @@ jobs: strategy: fail-fast: false matrix: - # 'beta' is flaky because of https://github.com/flutter/flutter/issues/124340 - sdk: ["stable"] + sdk: ["stable", "beta"] + target: ["ios", "macos"] steps: - name: checkout uses: actions/checkout@v3 @@ -131,25 +132,33 @@ jobs: run: flutter pub get - name: pod install - working-directory: ./flutter/example/ios + working-directory: ./flutter/example/${{ matrix.target }} run: pod install - - name: launch ios simulator - id: sim + - name: prepare test device + id: device run: | - simulator_id=$(xcrun simctl create sentryPhone com.apple.CoreSimulator.SimDeviceType.iPhone-14 com.apple.CoreSimulator.SimRuntime.iOS-16-4) - echo "SIMULATOR_ID=${simulator_id}" >> "$GITHUB_OUTPUT" - xcrun simctl boot ${simulator_id} -# Disable flutter integration tests because of flaky execution -# - name: run ios integration test -# env: -# SIMULATOR_ID: ${{ steps.sim.outputs.SIMULATOR_ID }} -# run: flutter test -d "$SIMULATOR_ID" integration_test/integration_test.dart --verbose - - - name: run ios native test - working-directory: ./flutter/example/ios - env: - SIMULATOR_ID: ${{ steps.sim.outputs.SIMULATOR_ID }} - run: xcodebuild test -workspace Runner.xcworkspace -scheme Runner -configuration Debug -destination "platform=iOS Simulator,id=$SIMULATOR_ID" -allowProvisioningUpdates CODE_SIGNING_ALLOWED=NO - - + case "${{ matrix.target }}" in + ios) + device=$(xcrun simctl create sentryPhone com.apple.CoreSimulator.SimDeviceType.iPhone-14 com.apple.CoreSimulator.SimRuntime.iOS-16-4) + xcrun simctl boot ${device} + echo "platform=iOS Simulator,id=${device}" >> "$GITHUB_OUTPUT" + ;; + macos) + device="macos" + echo "platform=OS X" >> "$GITHUB_OUTPUT" + ;; + esac + echo "name=${device}" >> "$GITHUB_OUTPUT" + + - name: run integration test + # Disable flutter integration tests for iOS for now (https://github.com/getsentry/sentry-dart/issues/1605#issuecomment-1695809346) + if: ${{ matrix.target != 'ios' }} + run: flutter test -d "${{ steps.device.outputs.name }}" integration_test --verbose + + - name: run native test + # We only have the native unit test package in the iOS xcodeproj at the moment. + # Should be OK because it will likely be removed after switching to FFI (see https://github.com/getsentry/sentry-dart/issues/1444). + if: ${{ matrix.target != 'macos' }} + working-directory: ./flutter/example/${{ matrix.target }} + run: xcodebuild test -workspace Runner.xcworkspace -scheme Runner -configuration Debug -destination "platform=${{ steps.device.outputs.platform }}" -allowProvisioningUpdates CODE_SIGNING_ALLOWED=NO From 7f75f32d9707c5a5abdb869a9eb5de05dd91bed8 Mon Sep 17 00:00:00 2001 From: Ivan Dlugos <6349682+vaind@users.noreply.github.com> Date: Tue, 19 Sep 2023 14:18:33 +0200 Subject: [PATCH 022/166] fix: generated cocoa bindings (#1648) --- flutter/ffi-cocoa.yaml | 2 + flutter/lib/src/native/cocoa/binding.dart | 32643 ++++++++++--------- flutter/scripts/generate-cocoa-bindings.sh | 4 +- 3 files changed, 16604 insertions(+), 16045 deletions(-) diff --git a/flutter/ffi-cocoa.yaml b/flutter/ffi-cocoa.yaml index 13e619fc8c..d680be1189 100644 --- a/flutter/ffi-cocoa.yaml +++ b/flutter/ffi-cocoa.yaml @@ -9,6 +9,8 @@ headers: compiler-opts: - -DSENTRY_TARGET_PROFILING_SUPPORTED=1 - -DCOCOAPODS=1 + - '-I./cocoa_bindings_temp/Sentry.framework/Versions/A/Headers/' + - '-I./cocoa_bindings_temp/Sentry.framework/Versions/A/PrivateHeaders/' exclude-all-by-default: true objc-interfaces: include: diff --git a/flutter/lib/src/native/cocoa/binding.dart b/flutter/lib/src/native/cocoa/binding.dart index 8d5b378edc..3ca61810e9 100644 --- a/flutter/lib/src/native/cocoa/binding.dart +++ b/flutter/lib/src/native/cocoa/binding.dart @@ -99,30 +99,6 @@ class SentryCocoa { late final _objc_releaseFinalizer2 = ffi.NativeFinalizer(__objc_releasePtr.cast()); - late final _class_PrivateSentrySDKOnly1 = _getClass1("PrivateSentrySDKOnly"); - bool _objc_msgSend_0( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer clazz, - ) { - return __objc_msgSend_0( - obj, - sel, - clazz, - ); - } - - late final __objc_msgSend_0Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_0 = __objc_msgSend_0Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_isKindOfClass_1 = _registerName1("isKindOfClass:"); - late final _class_SentryEnvelope1 = _getClass1("SentryEnvelope"); - late final _class_SentryId1 = _getClass1("SentryId"); late final _class_NSObject1 = _getClass1("NSObject"); late final _sel_load1 = _registerName1("load"); void _objc_msgSend_1( @@ -213,6 +189,27 @@ class SentryCocoa { bool Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); + bool _objc_msgSend_0( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer clazz, + ) { + return __objc_msgSend_0( + obj, + sel, + clazz, + ); + } + + late final __objc_msgSend_0Ptr = _lookup< + ffi.NativeFunction< + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_0 = __objc_msgSend_0Ptr.asFunction< + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_isKindOfClass_1 = _registerName1("isKindOfClass:"); late final _class_Protocol1 = _getClass1("Protocol"); late final _sel_conformsToProtocol_1 = _registerName1("conformsToProtocol:"); bool _objc_msgSend_5( @@ -17123,1157 +17120,1413 @@ class SentryCocoa { _registerName1("scriptingBeginsWith:"); late final _sel_scriptingEndsWith_1 = _registerName1("scriptingEndsWith:"); late final _sel_scriptingContains_1 = _registerName1("scriptingContains:"); - late final _class_NSUUID1 = _getClass1("NSUUID"); - late final _sel_UUID1 = _registerName1("UUID"); - late final _sel_initWithUUIDString_1 = _registerName1("initWithUUIDString:"); - late final _sel_initWithUUIDBytes_1 = _registerName1("initWithUUIDBytes:"); - instancetype _objc_msgSend_609( + late final _class_NSItemProvider1 = _getClass1("NSItemProvider"); + late final _class_NSProgress1 = _getClass1("NSProgress"); + late final _sel_currentProgress1 = _registerName1("currentProgress"); + ffi.Pointer _objc_msgSend_609( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer bytes, ) { return __objc_msgSend_609( obj, sel, - bytes, ); } late final __objc_msgSend_609Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_609 = __objc_msgSend_609Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_getUUIDBytes_1 = _registerName1("getUUIDBytes:"); - void _objc_msgSend_610( + late final _sel_progressWithTotalUnitCount_1 = + _registerName1("progressWithTotalUnitCount:"); + ffi.Pointer _objc_msgSend_610( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer uuid, + int unitCount, ) { return __objc_msgSend_610( obj, sel, - uuid, + unitCount, ); } late final __objc_msgSend_610Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int64)>>('objc_msgSend'); late final __objc_msgSend_610 = __objc_msgSend_610Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); - int _objc_msgSend_611( + late final _sel_discreteProgressWithTotalUnitCount_1 = + _registerName1("discreteProgressWithTotalUnitCount:"); + late final _sel_progressWithTotalUnitCount_parent_pendingUnitCount_1 = + _registerName1("progressWithTotalUnitCount:parent:pendingUnitCount:"); + ffi.Pointer _objc_msgSend_611( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer otherUUID, + int unitCount, + ffi.Pointer parent, + int portionOfParentTotalUnitCount, ) { return __objc_msgSend_611( obj, sel, - otherUUID, + unitCount, + parent, + portionOfParentTotalUnitCount, ); } late final __objc_msgSend_611Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int64, + ffi.Pointer, + ffi.Int64)>>('objc_msgSend'); late final __objc_msgSend_611 = __objc_msgSend_611Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer, int)>(); - late final _sel_UUIDString1 = _registerName1("UUIDString"); - late final _sel_initWithUUID_1 = _registerName1("initWithUUID:"); + late final _sel_initWithParent_userInfo_1 = + _registerName1("initWithParent:userInfo:"); instancetype _objc_msgSend_612( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer uuid, + ffi.Pointer parentProgressOrNil, + ffi.Pointer userInfoOrNil, ) { return __objc_msgSend_612( obj, sel, - uuid, + parentProgressOrNil, + userInfoOrNil, ); } late final __objc_msgSend_612Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_612 = __objc_msgSend_612Ptr.asFunction< instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer, ffi.Pointer)>(); - late final _sel_sentryIdString1 = _registerName1("sentryIdString"); - late final _sel_empty1 = _registerName1("empty"); - ffi.Pointer _objc_msgSend_613( + late final _sel_becomeCurrentWithPendingUnitCount_1 = + _registerName1("becomeCurrentWithPendingUnitCount:"); + void _objc_msgSend_613( ffi.Pointer obj, ffi.Pointer sel, + int unitCount, ) { return __objc_msgSend_613( obj, sel, + unitCount, ); } late final __objc_msgSend_613Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int64)>>('objc_msgSend'); late final __objc_msgSend_613 = __objc_msgSend_613Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _class_SentryEnvelopeItem1 = _getClass1("SentryEnvelopeItem"); - late final _class_SentryEvent1 = _getClass1("SentryEvent"); - late final _sel_initWithEvent_1 = _registerName1("initWithEvent:"); - instancetype _objc_msgSend_614( + late final _sel_performAsCurrentWithPendingUnitCount_usingBlock_1 = + _registerName1("performAsCurrentWithPendingUnitCount:usingBlock:"); + void _objc_msgSend_614( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer event, + int unitCount, + ffi.Pointer<_ObjCBlock> work, ) { return __objc_msgSend_614( obj, sel, - event, + unitCount, + work, ); } late final __objc_msgSend_614Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int64, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_614 = __objc_msgSend_614Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer<_ObjCBlock>)>(); - late final _class_SentrySession1 = _getClass1("SentrySession"); - late final _sel_initWithSession_1 = _registerName1("initWithSession:"); - instancetype _objc_msgSend_615( + late final _sel_resignCurrent1 = _registerName1("resignCurrent"); + late final _sel_addChild_withPendingUnitCount_1 = + _registerName1("addChild:withPendingUnitCount:"); + void _objc_msgSend_615( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer session, + ffi.Pointer child, + int inUnitCount, ) { return __objc_msgSend_615( obj, sel, - session, + child, + inUnitCount, ); } late final __objc_msgSend_615Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int64)>>('objc_msgSend'); late final __objc_msgSend_615 = __objc_msgSend_615Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); - late final _class_SentryUserFeedback1 = _getClass1("SentryUserFeedback"); - late final _sel_initWithUserFeedback_1 = - _registerName1("initWithUserFeedback:"); - instancetype _objc_msgSend_616( + late final _sel_totalUnitCount1 = _registerName1("totalUnitCount"); + int _objc_msgSend_616( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer userFeedback, ) { return __objc_msgSend_616( obj, sel, - userFeedback, ); } late final __objc_msgSend_616Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int64 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_616 = __objc_msgSend_616Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _class_SentryAttachment1 = _getClass1("SentryAttachment"); - late final _sel_initWithAttachment_maxAttachmentSize_1 = - _registerName1("initWithAttachment:maxAttachmentSize:"); - instancetype _objc_msgSend_617( + late final _sel_setTotalUnitCount_1 = _registerName1("setTotalUnitCount:"); + void _objc_msgSend_617( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer attachment, - ffi.Pointer maxAttachmentSize, + int value, ) { return __objc_msgSend_617( obj, sel, - attachment, - maxAttachmentSize, + value, ); } late final __objc_msgSend_617Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int64)>>('objc_msgSend'); late final __objc_msgSend_617 = __objc_msgSend_617Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _class_SentryEnvelopeItemHeader1 = - _getClass1("SentryEnvelopeItemHeader"); - late final _sel_initWithHeader_data_1 = - _registerName1("initWithHeader:data:"); - instancetype _objc_msgSend_618( + late final _sel_completedUnitCount1 = _registerName1("completedUnitCount"); + late final _sel_setCompletedUnitCount_1 = + _registerName1("setCompletedUnitCount:"); + late final _sel_setLocalizedDescription_1 = + _registerName1("setLocalizedDescription:"); + late final _sel_localizedAdditionalDescription1 = + _registerName1("localizedAdditionalDescription"); + late final _sel_setLocalizedAdditionalDescription_1 = + _registerName1("setLocalizedAdditionalDescription:"); + late final _sel_isCancellable1 = _registerName1("isCancellable"); + late final _sel_setCancellable_1 = _registerName1("setCancellable:"); + late final _sel_isPausable1 = _registerName1("isPausable"); + late final _sel_setPausable_1 = _registerName1("setPausable:"); + late final _sel_isPaused1 = _registerName1("isPaused"); + late final _sel_cancellationHandler1 = _registerName1("cancellationHandler"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_618( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer header, - ffi.Pointer data, ) { return __objc_msgSend_618( obj, sel, - header, - data, ); } late final __objc_msgSend_618Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_618 = __objc_msgSend_618Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_header1 = _registerName1("header"); - ffi.Pointer _objc_msgSend_619( + late final _sel_setCancellationHandler_1 = + _registerName1("setCancellationHandler:"); + void _objc_msgSend_619( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> value, ) { return __objc_msgSend_619( obj, sel, + value, ); } late final __objc_msgSend_619Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_619 = __objc_msgSend_619Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - ffi.Pointer _objc_msgSend_620( + late final _sel_pausingHandler1 = _registerName1("pausingHandler"); + late final _sel_setPausingHandler_1 = _registerName1("setPausingHandler:"); + late final _sel_resumingHandler1 = _registerName1("resumingHandler"); + late final _sel_setResumingHandler_1 = _registerName1("setResumingHandler:"); + late final _sel_setUserInfoObject_forKey_1 = + _registerName1("setUserInfoObject:forKey:"); + late final _sel_isIndeterminate1 = _registerName1("isIndeterminate"); + late final _sel_fractionCompleted1 = _registerName1("fractionCompleted"); + late final _sel_pause1 = _registerName1("pause"); + late final _sel_resume1 = _registerName1("resume"); + late final _sel_kind1 = _registerName1("kind"); + late final _sel_setKind_1 = _registerName1("setKind:"); + late final _sel_estimatedTimeRemaining1 = + _registerName1("estimatedTimeRemaining"); + late final _sel_setEstimatedTimeRemaining_1 = + _registerName1("setEstimatedTimeRemaining:"); + void _objc_msgSend_620( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer value, ) { return __objc_msgSend_620( obj, sel, + value, ); } late final __objc_msgSend_620Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_620 = __objc_msgSend_620Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_initWithId_singleItem_1 = - _registerName1("initWithId:singleItem:"); - instancetype _objc_msgSend_621( + late final _sel_throughput1 = _registerName1("throughput"); + late final _sel_setThroughput_1 = _registerName1("setThroughput:"); + late final _sel_fileOperationKind1 = _registerName1("fileOperationKind"); + late final _sel_setFileOperationKind_1 = + _registerName1("setFileOperationKind:"); + late final _sel_fileURL1 = _registerName1("fileURL"); + late final _sel_setFileURL_1 = _registerName1("setFileURL:"); + void _objc_msgSend_621( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer id, - ffi.Pointer item, + ffi.Pointer value, ) { return __objc_msgSend_621( obj, sel, - id, - item, + value, ); } late final __objc_msgSend_621Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_621 = __objc_msgSend_621Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _class_SentryEnvelopeHeader1 = _getClass1("SentryEnvelopeHeader"); - late final _sel_initWithId_1 = _registerName1("initWithId:"); - instancetype _objc_msgSend_622( + late final _sel_fileTotalCount1 = _registerName1("fileTotalCount"); + late final _sel_setFileTotalCount_1 = _registerName1("setFileTotalCount:"); + late final _sel_fileCompletedCount1 = _registerName1("fileCompletedCount"); + late final _sel_setFileCompletedCount_1 = + _registerName1("setFileCompletedCount:"); + late final _sel_publish1 = _registerName1("publish"); + late final _sel_unpublish1 = _registerName1("unpublish"); + late final _sel_addSubscriberForFileURL_withPublishingHandler_1 = + _registerName1("addSubscriberForFileURL:withPublishingHandler:"); + ffi.Pointer _objc_msgSend_622( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer eventId, + ffi.Pointer url, + ffi.Pointer<_ObjCBlock> publishingHandler, ) { return __objc_msgSend_622( obj, sel, - eventId, + url, + publishingHandler, ); } late final __objc_msgSend_622Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_622 = __objc_msgSend_622Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _class_SentryTraceContext1 = _getClass1("SentryTraceContext"); - late final _sel_initWithId_traceContext_1 = - _registerName1("initWithId:traceContext:"); - instancetype _objc_msgSend_623( + late final _sel_removeSubscriber_1 = _registerName1("removeSubscriber:"); + late final _sel_isOld1 = _registerName1("isOld"); + late final _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1 = + _registerName1( + "registerDataRepresentationForTypeIdentifier:visibility:loadHandler:"); + void _objc_msgSend_623( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer eventId, - ffi.Pointer traceContext, + ffi.Pointer typeIdentifier, + int visibility, + ffi.Pointer<_ObjCBlock> loadHandler, ) { return __objc_msgSend_623( obj, sel, - eventId, - traceContext, + typeIdentifier, + visibility, + loadHandler, ); } late final __objc_msgSend_623Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_623 = __objc_msgSend_623Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - late final _class_SentrySdkInfo1 = _getClass1("SentrySdkInfo"); - late final _sel_initWithId_sdkInfo_traceContext_1 = - _registerName1("initWithId:sdkInfo:traceContext:"); - instancetype _objc_msgSend_624( + late final _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1 = + _registerName1( + "registerFileRepresentationForTypeIdentifier:fileOptions:visibility:loadHandler:"); + void _objc_msgSend_624( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer eventId, - ffi.Pointer sdkInfo, - ffi.Pointer traceContext, + ffi.Pointer typeIdentifier, + int fileOptions, + int visibility, + ffi.Pointer<_ObjCBlock> loadHandler, ) { return __objc_msgSend_624( obj, sel, - eventId, - sdkInfo, - traceContext, + typeIdentifier, + fileOptions, + visibility, + loadHandler, ); } late final __objc_msgSend_624Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_624 = __objc_msgSend_624Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, int, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_eventId1 = _registerName1("eventId"); - late final _sel_sdkInfo1 = _registerName1("sdkInfo"); + late final _sel_registeredTypeIdentifiers1 = + _registerName1("registeredTypeIdentifiers"); + late final _sel_registeredTypeIdentifiersWithFileOptions_1 = + _registerName1("registeredTypeIdentifiersWithFileOptions:"); ffi.Pointer _objc_msgSend_625( ffi.Pointer obj, ffi.Pointer sel, + int fileOptions, ) { return __objc_msgSend_625( obj, sel, + fileOptions, ); } late final __objc_msgSend_625Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_625 = __objc_msgSend_625Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_traceContext1 = _registerName1("traceContext"); - ffi.Pointer _objc_msgSend_626( + late final _sel_hasItemConformingToTypeIdentifier_1 = + _registerName1("hasItemConformingToTypeIdentifier:"); + late final _sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1 = + _registerName1( + "hasRepresentationConformingToTypeIdentifier:fileOptions:"); + bool _objc_msgSend_626( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer typeIdentifier, + int fileOptions, ) { return __objc_msgSend_626( obj, sel, + typeIdentifier, + fileOptions, ); } late final __objc_msgSend_626Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_626 = __objc_msgSend_626Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); - late final _sel_sentAt1 = _registerName1("sentAt"); - late final _sel_setSentAt_1 = _registerName1("setSentAt:"); - void _objc_msgSend_627( + late final _sel_loadDataRepresentationForTypeIdentifier_completionHandler_1 = + _registerName1( + "loadDataRepresentationForTypeIdentifier:completionHandler:"); + ffi.Pointer _objc_msgSend_627( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer typeIdentifier, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_627( obj, sel, - value, + typeIdentifier, + completionHandler, ); } late final __objc_msgSend_627Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_627 = __objc_msgSend_627Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_initWithHeader_singleItem_1 = - _registerName1("initWithHeader:singleItem:"); - instancetype _objc_msgSend_628( + late final _sel_loadFileRepresentationForTypeIdentifier_completionHandler_1 = + _registerName1( + "loadFileRepresentationForTypeIdentifier:completionHandler:"); + ffi.Pointer _objc_msgSend_628( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer header, - ffi.Pointer item, + ffi.Pointer typeIdentifier, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_628( obj, sel, - header, - item, + typeIdentifier, + completionHandler, ); } late final __objc_msgSend_628Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_628 = __objc_msgSend_628Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_initWithId_items_1 = _registerName1("initWithId:items:"); - instancetype _objc_msgSend_629( + late final _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1 = + _registerName1( + "loadInPlaceFileRepresentationForTypeIdentifier:completionHandler:"); + ffi.Pointer _objc_msgSend_629( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer id, - ffi.Pointer items, + ffi.Pointer typeIdentifier, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_629( obj, sel, - id, - items, + typeIdentifier, + completionHandler, ); } late final __objc_msgSend_629Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_629 = __objc_msgSend_629Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_initWithSessions_1 = _registerName1("initWithSessions:"); - late final _sel_initWithHeader_items_1 = - _registerName1("initWithHeader:items:"); - instancetype _objc_msgSend_630( + late final _sel_suggestedName1 = _registerName1("suggestedName"); + late final _sel_setSuggestedName_1 = _registerName1("setSuggestedName:"); + late final _sel_registerObject_visibility_1 = + _registerName1("registerObject:visibility:"); + void _objc_msgSend_630( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer header, - ffi.Pointer items, + ffi.Pointer object, + int visibility, ) { return __objc_msgSend_630( obj, sel, - header, - items, + object, + visibility, ); } late final __objc_msgSend_630Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_630 = __objc_msgSend_630Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); - ffi.Pointer _objc_msgSend_631( + late final _sel_registerObjectOfClass_visibility_loadHandler_1 = + _registerName1("registerObjectOfClass:visibility:loadHandler:"); + void _objc_msgSend_631( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer aClass, + int visibility, + ffi.Pointer<_ObjCBlock> loadHandler, ) { return __objc_msgSend_631( obj, sel, + aClass, + visibility, + loadHandler, ); } late final __objc_msgSend_631Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_631 = __objc_msgSend_631Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_storeEnvelope_1 = _registerName1("storeEnvelope:"); - void _objc_msgSend_632( + late final _sel_canLoadObjectOfClass_1 = + _registerName1("canLoadObjectOfClass:"); + late final _sel_loadObjectOfClass_completionHandler_1 = + _registerName1("loadObjectOfClass:completionHandler:"); + ffi.Pointer _objc_msgSend_632( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer envelope, + ffi.Pointer aClass, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_632( obj, sel, - envelope, + aClass, + completionHandler, ); } late final __objc_msgSend_632Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_632 = __objc_msgSend_632Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_captureEnvelope_1 = _registerName1("captureEnvelope:"); - late final _sel_envelopeWithData_1 = _registerName1("envelopeWithData:"); - ffi.Pointer _objc_msgSend_633( + late final _sel_initWithItem_typeIdentifier_1 = + _registerName1("initWithItem:typeIdentifier:"); + late final _sel_registerItemForTypeIdentifier_loadHandler_1 = + _registerName1("registerItemForTypeIdentifier:loadHandler:"); + void _objc_msgSend_633( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer data, + ffi.Pointer typeIdentifier, + ffi.Pointer<_ObjCBlock> loadHandler, ) { return __objc_msgSend_633( obj, sel, - data, + typeIdentifier, + loadHandler, ); } late final __objc_msgSend_633Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_633 = __objc_msgSend_633Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_getDebugImages1 = _registerName1("getDebugImages"); - late final _sel_getDebugImagesCrashed_1 = - _registerName1("getDebugImagesCrashed:"); - late final _sel_setSdkName_andVersionString_1 = - _registerName1("setSdkName:andVersionString:"); - late final _sel_setSdkName_1 = _registerName1("setSdkName:"); - late final _sel_getSdkName1 = _registerName1("getSdkName"); - late final _sel_getSdkVersionString1 = _registerName1("getSdkVersionString"); - late final _sel_getExtraContext1 = _registerName1("getExtraContext"); - late final _sel_startProfilerForTrace_1 = - _registerName1("startProfilerForTrace:"); - late final _sel_collectProfileBetween_and_forTrace_1 = - _registerName1("collectProfileBetween:and:forTrace:"); - ffi.Pointer _objc_msgSend_634( + late final _sel_loadItemForTypeIdentifier_options_completionHandler_1 = + _registerName1("loadItemForTypeIdentifier:options:completionHandler:"); + void _objc_msgSend_634( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer startSystemTime, - ffi.Pointer endSystemTime, - ffi.Pointer traceId, + ffi.Pointer typeIdentifier, + ffi.Pointer options, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_634( obj, sel, - startSystemTime, - endSystemTime, - traceId, + typeIdentifier, + options, + completionHandler, ); } late final __objc_msgSend_634Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_634 = __objc_msgSend_634Ptr.asFunction< - ffi.Pointer Function( + void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_discardProfilerForTrace_1 = - _registerName1("discardProfilerForTrace:"); - void _objc_msgSend_635( + late final _sel_previewImageHandler1 = _registerName1("previewImageHandler"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_635( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer traceId, ) { return __objc_msgSend_635( obj, sel, - traceId, ); } late final __objc_msgSend_635Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_635 = __objc_msgSend_635Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>(); - late final _class_SentryAppStartMeasurement1 = - _getClass1("SentryAppStartMeasurement"); - late final _sel_onAppStartMeasurementAvailable1 = - _registerName1("onAppStartMeasurementAvailable"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_636( + late final _sel_setPreviewImageHandler_1 = + _registerName1("setPreviewImageHandler:"); + void _objc_msgSend_636( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> value, ) { return __objc_msgSend_636( obj, sel, + value, ); } late final __objc_msgSend_636Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_636 = __objc_msgSend_636Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_setOnAppStartMeasurementAvailable_1 = - _registerName1("setOnAppStartMeasurementAvailable:"); + late final _sel_loadPreviewImageWithOptions_completionHandler_1 = + _registerName1("loadPreviewImageWithOptions:completionHandler:"); void _objc_msgSend_637( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, + ffi.Pointer options, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_637( obj, sel, - value, + options, + completionHandler, ); } late final __objc_msgSend_637Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_637 = __objc_msgSend_637Ptr.asFunction< void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_appStartMeasurement1 = _registerName1("appStartMeasurement"); - ffi.Pointer _objc_msgSend_638( + late final _class_NSMutableString1 = _getClass1("NSMutableString"); + late final _sel_replaceCharactersInRange_withString_1 = + _registerName1("replaceCharactersInRange:withString:"); + void _objc_msgSend_638( ffi.Pointer obj, ffi.Pointer sel, + _NSRange range, + ffi.Pointer aString, ) { return __objc_msgSend_638( obj, sel, + range, + aString, ); } late final __objc_msgSend_638Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_638 = __objc_msgSend_638Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + ffi.Pointer)>(); - late final _sel_installationID1 = _registerName1("installationID"); - late final _class_SentryOptions1 = _getClass1("SentryOptions"); - late final _sel_options1 = _registerName1("options"); - ffi.Pointer _objc_msgSend_639( + late final _sel_insertString_atIndex_1 = + _registerName1("insertString:atIndex:"); + void _objc_msgSend_639( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer aString, + int loc, ) { return __objc_msgSend_639( obj, sel, + aString, + loc, ); } late final __objc_msgSend_639Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_639 = __objc_msgSend_639Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); - late final _sel_appStartMeasurementHybridSDKMode1 = - _registerName1("appStartMeasurementHybridSDKMode"); - late final _sel_setAppStartMeasurementHybridSDKMode_1 = - _registerName1("setAppStartMeasurementHybridSDKMode:"); - void _objc_msgSend_640( + late final _sel_deleteCharactersInRange_1 = + _registerName1("deleteCharactersInRange:"); + late final _sel_appendString_1 = _registerName1("appendString:"); + late final _sel_appendFormat_1 = _registerName1("appendFormat:"); + late final _sel_setString_1 = _registerName1("setString:"); + late final _sel_replaceOccurrencesOfString_withString_options_range_1 = + _registerName1("replaceOccurrencesOfString:withString:options:range:"); + int _objc_msgSend_640( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer target, + ffi.Pointer replacement, + int options, + _NSRange searchRange, ) { return __objc_msgSend_640( obj, sel, - value, + target, + replacement, + options, + searchRange, ); } late final __objc_msgSend_640Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int)>>('objc_msgSend'); + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend'); late final __objc_msgSend_640 = __objc_msgSend_640Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - late final _class_SentryUser1 = _getClass1("SentryUser"); - late final _sel_userWithDictionary_1 = _registerName1("userWithDictionary:"); - ffi.Pointer _objc_msgSend_641( + late final _sel_applyTransform_reverse_range_updatedRange_1 = + _registerName1("applyTransform:reverse:range:updatedRange:"); + bool _objc_msgSend_641( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer dictionary, + ffi.Pointer transform, + bool reverse, + _NSRange range, + ffi.Pointer<_NSRange> resultingRange, ) { return __objc_msgSend_641( obj, sel, - dictionary, + transform, + reverse, + range, + resultingRange, ); } late final __objc_msgSend_641Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool, + _NSRange, + ffi.Pointer<_NSRange>)>>('objc_msgSend'); late final __objc_msgSend_641 = __objc_msgSend_641Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool, _NSRange, ffi.Pointer<_NSRange>)>(); - late final _class_SentryBreadcrumb1 = _getClass1("SentryBreadcrumb"); - late final _sel_breadcrumbWithDictionary_1 = - _registerName1("breadcrumbWithDictionary:"); ffi.Pointer _objc_msgSend_642( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer dictionary, + int capacity, ) { return __objc_msgSend_642( obj, sel, - dictionary, + capacity, ); } late final __objc_msgSend_642Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_642 = __objc_msgSend_642Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); - late final _class_NSItemProvider1 = _getClass1("NSItemProvider"); - late final _class_NSProgress1 = _getClass1("NSProgress"); - late final _sel_currentProgress1 = _registerName1("currentProgress"); - ffi.Pointer _objc_msgSend_643( + late final _sel_stringWithCapacity_1 = _registerName1("stringWithCapacity:"); + late final _class_NSNotification1 = _getClass1("NSNotification"); + late final _sel_object1 = _registerName1("object"); + late final _sel_initWithName_object_userInfo_1 = + _registerName1("initWithName:object:userInfo:"); + instancetype _objc_msgSend_643( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer object, + ffi.Pointer userInfo, ) { return __objc_msgSend_643( obj, sel, + name, + object, + userInfo, ); } late final __objc_msgSend_643Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_643 = __objc_msgSend_643Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_progressWithTotalUnitCount_1 = - _registerName1("progressWithTotalUnitCount:"); + late final _sel_notificationWithName_object_1 = + _registerName1("notificationWithName:object:"); + late final _sel_notificationWithName_object_userInfo_1 = + _registerName1("notificationWithName:object:userInfo:"); + late final _class_NSBundle1 = _getClass1("NSBundle"); + late final _sel_mainBundle1 = _registerName1("mainBundle"); ffi.Pointer _objc_msgSend_644( ffi.Pointer obj, ffi.Pointer sel, - int unitCount, ) { return __objc_msgSend_644( obj, sel, - unitCount, ); } late final __objc_msgSend_644Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int64)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_644 = __objc_msgSend_644Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer, ffi.Pointer)>(); - late final _sel_discreteProgressWithTotalUnitCount_1 = - _registerName1("discreteProgressWithTotalUnitCount:"); - late final _sel_progressWithTotalUnitCount_parent_pendingUnitCount_1 = - _registerName1("progressWithTotalUnitCount:parent:pendingUnitCount:"); + late final _sel_bundleWithPath_1 = _registerName1("bundleWithPath:"); + late final _sel_initWithPath_1 = _registerName1("initWithPath:"); + late final _sel_bundleWithURL_1 = _registerName1("bundleWithURL:"); + late final _sel_initWithURL_1 = _registerName1("initWithURL:"); + late final _sel_bundleForClass_1 = _registerName1("bundleForClass:"); ffi.Pointer _objc_msgSend_645( ffi.Pointer obj, ffi.Pointer sel, - int unitCount, - ffi.Pointer parent, - int portionOfParentTotalUnitCount, + ffi.Pointer aClass, ) { return __objc_msgSend_645( obj, sel, - unitCount, - parent, - portionOfParentTotalUnitCount, + aClass, ); } late final __objc_msgSend_645Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int64, - ffi.Pointer, - ffi.Int64)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_645 = __objc_msgSend_645Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer, int)>(); + ffi.Pointer, ffi.Pointer)>(); - late final _sel_initWithParent_userInfo_1 = - _registerName1("initWithParent:userInfo:"); - instancetype _objc_msgSend_646( + late final _sel_bundleWithIdentifier_1 = + _registerName1("bundleWithIdentifier:"); + ffi.Pointer _objc_msgSend_646( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer parentProgressOrNil, - ffi.Pointer userInfoOrNil, + ffi.Pointer identifier, ) { return __objc_msgSend_646( obj, sel, - parentProgressOrNil, - userInfoOrNil, + identifier, ); } late final __objc_msgSend_646Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_646 = __objc_msgSend_646Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_becomeCurrentWithPendingUnitCount_1 = - _registerName1("becomeCurrentWithPendingUnitCount:"); - void _objc_msgSend_647( + late final _sel_allBundles1 = _registerName1("allBundles"); + late final _sel_allFrameworks1 = _registerName1("allFrameworks"); + late final _sel_isLoaded1 = _registerName1("isLoaded"); + late final _sel_unload1 = _registerName1("unload"); + late final _sel_preflightAndReturnError_1 = + _registerName1("preflightAndReturnError:"); + late final _sel_loadAndReturnError_1 = _registerName1("loadAndReturnError:"); + late final _sel_bundleURL1 = _registerName1("bundleURL"); + late final _sel_resourceURL1 = _registerName1("resourceURL"); + late final _sel_executableURL1 = _registerName1("executableURL"); + late final _sel_URLForAuxiliaryExecutable_1 = + _registerName1("URLForAuxiliaryExecutable:"); + late final _sel_privateFrameworksURL1 = + _registerName1("privateFrameworksURL"); + late final _sel_sharedFrameworksURL1 = _registerName1("sharedFrameworksURL"); + late final _sel_sharedSupportURL1 = _registerName1("sharedSupportURL"); + late final _sel_builtInPlugInsURL1 = _registerName1("builtInPlugInsURL"); + late final _sel_appStoreReceiptURL1 = _registerName1("appStoreReceiptURL"); + late final _sel_bundlePath1 = _registerName1("bundlePath"); + late final _sel_resourcePath1 = _registerName1("resourcePath"); + late final _sel_executablePath1 = _registerName1("executablePath"); + late final _sel_pathForAuxiliaryExecutable_1 = + _registerName1("pathForAuxiliaryExecutable:"); + late final _sel_privateFrameworksPath1 = + _registerName1("privateFrameworksPath"); + late final _sel_sharedFrameworksPath1 = + _registerName1("sharedFrameworksPath"); + late final _sel_sharedSupportPath1 = _registerName1("sharedSupportPath"); + late final _sel_builtInPlugInsPath1 = _registerName1("builtInPlugInsPath"); + late final _sel_URLForResource_withExtension_subdirectory_inBundleWithURL_1 = + _registerName1( + "URLForResource:withExtension:subdirectory:inBundleWithURL:"); + ffi.Pointer _objc_msgSend_647( ffi.Pointer obj, ffi.Pointer sel, - int unitCount, + ffi.Pointer name, + ffi.Pointer ext, + ffi.Pointer subpath, + ffi.Pointer bundleURL, ) { return __objc_msgSend_647( obj, sel, - unitCount, + name, + ext, + subpath, + bundleURL, ); } late final __objc_msgSend_647Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int64)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_647 = __objc_msgSend_647Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_performAsCurrentWithPendingUnitCount_usingBlock_1 = - _registerName1("performAsCurrentWithPendingUnitCount:usingBlock:"); - void _objc_msgSend_648( + late final _sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_1 = + _registerName1( + "URLsForResourcesWithExtension:subdirectory:inBundleWithURL:"); + ffi.Pointer _objc_msgSend_648( ffi.Pointer obj, ffi.Pointer sel, - int unitCount, - ffi.Pointer<_ObjCBlock> work, + ffi.Pointer ext, + ffi.Pointer subpath, + ffi.Pointer bundleURL, ) { return __objc_msgSend_648( obj, sel, - unitCount, - work, + ext, + subpath, + bundleURL, ); } late final __objc_msgSend_648Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int64, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_648 = __objc_msgSend_648Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_resignCurrent1 = _registerName1("resignCurrent"); - late final _sel_addChild_withPendingUnitCount_1 = - _registerName1("addChild:withPendingUnitCount:"); - void _objc_msgSend_649( + late final _sel_URLForResource_withExtension_1 = + _registerName1("URLForResource:withExtension:"); + ffi.Pointer _objc_msgSend_649( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer child, - int inUnitCount, + ffi.Pointer name, + ffi.Pointer ext, ) { return __objc_msgSend_649( obj, sel, - child, - inUnitCount, + name, + ext, ); } late final __objc_msgSend_649Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int64)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_649 = __objc_msgSend_649Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_totalUnitCount1 = _registerName1("totalUnitCount"); - int _objc_msgSend_650( + late final _sel_URLForResource_withExtension_subdirectory_1 = + _registerName1("URLForResource:withExtension:subdirectory:"); + ffi.Pointer _objc_msgSend_650( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer name, + ffi.Pointer ext, + ffi.Pointer subpath, ) { return __objc_msgSend_650( obj, sel, + name, + ext, + subpath, ); } late final __objc_msgSend_650Ptr = _lookup< ffi.NativeFunction< - ffi.Int64 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_650 = __objc_msgSend_650Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_setTotalUnitCount_1 = _registerName1("setTotalUnitCount:"); - void _objc_msgSend_651( + late final _sel_URLForResource_withExtension_subdirectory_localization_1 = + _registerName1("URLForResource:withExtension:subdirectory:localization:"); + ffi.Pointer _objc_msgSend_651( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer name, + ffi.Pointer ext, + ffi.Pointer subpath, + ffi.Pointer localizationName, ) { return __objc_msgSend_651( obj, sel, - value, + name, + ext, + subpath, + localizationName, ); } late final __objc_msgSend_651Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int64)>>('objc_msgSend'); - late final __objc_msgSend_651 = __objc_msgSend_651Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_651 = __objc_msgSend_651Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_completedUnitCount1 = _registerName1("completedUnitCount"); - late final _sel_setCompletedUnitCount_1 = - _registerName1("setCompletedUnitCount:"); - late final _sel_setLocalizedDescription_1 = - _registerName1("setLocalizedDescription:"); - late final _sel_localizedAdditionalDescription1 = - _registerName1("localizedAdditionalDescription"); - late final _sel_setLocalizedAdditionalDescription_1 = - _registerName1("setLocalizedAdditionalDescription:"); - late final _sel_isCancellable1 = _registerName1("isCancellable"); - late final _sel_setCancellable_1 = _registerName1("setCancellable:"); - late final _sel_isPausable1 = _registerName1("isPausable"); - late final _sel_setPausable_1 = _registerName1("setPausable:"); - late final _sel_isPaused1 = _registerName1("isPaused"); - late final _sel_cancellationHandler1 = _registerName1("cancellationHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_652( + late final _sel_URLsForResourcesWithExtension_subdirectory_1 = + _registerName1("URLsForResourcesWithExtension:subdirectory:"); + ffi.Pointer _objc_msgSend_652( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer ext, + ffi.Pointer subpath, ) { return __objc_msgSend_652( obj, sel, + ext, + subpath, ); } late final __objc_msgSend_652Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_652 = __objc_msgSend_652Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_setCancellationHandler_1 = - _registerName1("setCancellationHandler:"); - void _objc_msgSend_653( + late final _sel_URLsForResourcesWithExtension_subdirectory_localization_1 = + _registerName1( + "URLsForResourcesWithExtension:subdirectory:localization:"); + ffi.Pointer _objc_msgSend_653( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, + ffi.Pointer ext, + ffi.Pointer subpath, + ffi.Pointer localizationName, ) { return __objc_msgSend_653( obj, sel, - value, + ext, + subpath, + localizationName, ); } late final __objc_msgSend_653Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_653 = __objc_msgSend_653Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_pausingHandler1 = _registerName1("pausingHandler"); - late final _sel_setPausingHandler_1 = _registerName1("setPausingHandler:"); - late final _sel_resumingHandler1 = _registerName1("resumingHandler"); - late final _sel_setResumingHandler_1 = _registerName1("setResumingHandler:"); - late final _sel_setUserInfoObject_forKey_1 = - _registerName1("setUserInfoObject:forKey:"); - late final _sel_isIndeterminate1 = _registerName1("isIndeterminate"); - late final _sel_fractionCompleted1 = _registerName1("fractionCompleted"); - late final _sel_pause1 = _registerName1("pause"); - late final _sel_resume1 = _registerName1("resume"); - late final _sel_kind1 = _registerName1("kind"); - late final _sel_setKind_1 = _registerName1("setKind:"); - late final _sel_estimatedTimeRemaining1 = - _registerName1("estimatedTimeRemaining"); - late final _sel_setEstimatedTimeRemaining_1 = - _registerName1("setEstimatedTimeRemaining:"); - void _objc_msgSend_654( + late final _sel_pathForResource_ofType_inDirectory_1 = + _registerName1("pathForResource:ofType:inDirectory:"); + ffi.Pointer _objc_msgSend_654( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer name, + ffi.Pointer ext, + ffi.Pointer bundlePath, ) { return __objc_msgSend_654( obj, sel, - value, + name, + ext, + bundlePath, ); } late final __objc_msgSend_654Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_654 = __objc_msgSend_654Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_throughput1 = _registerName1("throughput"); - late final _sel_setThroughput_1 = _registerName1("setThroughput:"); - late final _sel_fileOperationKind1 = _registerName1("fileOperationKind"); - late final _sel_setFileOperationKind_1 = - _registerName1("setFileOperationKind:"); - late final _sel_fileURL1 = _registerName1("fileURL"); - late final _sel_setFileURL_1 = _registerName1("setFileURL:"); - void _objc_msgSend_655( + late final _sel_pathsForResourcesOfType_inDirectory_1 = + _registerName1("pathsForResourcesOfType:inDirectory:"); + late final _sel_pathForResource_ofType_1 = + _registerName1("pathForResource:ofType:"); + late final _sel_pathForResource_ofType_inDirectory_forLocalization_1 = + _registerName1("pathForResource:ofType:inDirectory:forLocalization:"); + ffi.Pointer _objc_msgSend_655( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer name, + ffi.Pointer ext, + ffi.Pointer subpath, + ffi.Pointer localizationName, ) { return __objc_msgSend_655( obj, sel, - value, + name, + ext, + subpath, + localizationName, ); } late final __objc_msgSend_655Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_655 = __objc_msgSend_655Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_fileTotalCount1 = _registerName1("fileTotalCount"); - late final _sel_setFileTotalCount_1 = _registerName1("setFileTotalCount:"); - late final _sel_fileCompletedCount1 = _registerName1("fileCompletedCount"); - late final _sel_setFileCompletedCount_1 = - _registerName1("setFileCompletedCount:"); - late final _sel_publish1 = _registerName1("publish"); - late final _sel_unpublish1 = _registerName1("unpublish"); - late final _sel_addSubscriberForFileURL_withPublishingHandler_1 = - _registerName1("addSubscriberForFileURL:withPublishingHandler:"); + late final _sel_pathsForResourcesOfType_inDirectory_forLocalization_1 = + _registerName1("pathsForResourcesOfType:inDirectory:forLocalization:"); + late final _sel_localizedStringForKey_value_table_1 = + _registerName1("localizedStringForKey:value:table:"); + late final _class_NSAttributedString1 = _getClass1("NSAttributedString"); + late final _sel_attributesAtIndex_effectiveRange_1 = + _registerName1("attributesAtIndex:effectiveRange:"); ffi.Pointer _objc_msgSend_656( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer<_ObjCBlock> publishingHandler, + int location, + ffi.Pointer<_NSRange> range, ) { return __objc_msgSend_656( obj, sel, - url, - publishingHandler, + location, + range, ); } @@ -18282,911 +18535,859 @@ class SentryCocoa { ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.UnsignedLong, + ffi.Pointer<_NSRange>)>>('objc_msgSend'); late final __objc_msgSend_656 = __objc_msgSend_656Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_NSRange>)>(); - late final _sel_removeSubscriber_1 = _registerName1("removeSubscriber:"); - late final _sel_isOld1 = _registerName1("isOld"); - late final _sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1 = - _registerName1( - "registerDataRepresentationForTypeIdentifier:visibility:loadHandler:"); - void _objc_msgSend_657( + late final _sel_attribute_atIndex_effectiveRange_1 = + _registerName1("attribute:atIndex:effectiveRange:"); + ffi.Pointer _objc_msgSend_657( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer typeIdentifier, - int visibility, - ffi.Pointer<_ObjCBlock> loadHandler, + ffi.Pointer attrName, + int location, + ffi.Pointer<_NSRange> range, ) { return __objc_msgSend_657( obj, sel, - typeIdentifier, - visibility, - loadHandler, + attrName, + location, + range, ); } late final __objc_msgSend_657Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.UnsignedLong, + ffi.Pointer<_NSRange>)>>('objc_msgSend'); late final __objc_msgSend_657 = __objc_msgSend_657Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_NSRange>)>(); - late final _sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1 = - _registerName1( - "registerFileRepresentationForTypeIdentifier:fileOptions:visibility:loadHandler:"); - void _objc_msgSend_658( + late final _sel_attributedSubstringFromRange_1 = + _registerName1("attributedSubstringFromRange:"); + ffi.Pointer _objc_msgSend_658( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer typeIdentifier, - int fileOptions, - int visibility, - ffi.Pointer<_ObjCBlock> loadHandler, + _NSRange range, ) { return __objc_msgSend_658( obj, sel, - typeIdentifier, - fileOptions, - visibility, - loadHandler, + range, ); } late final __objc_msgSend_658Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); late final __objc_msgSend_658 = __objc_msgSend_658Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, _NSRange)>(); - late final _sel_registeredTypeIdentifiers1 = - _registerName1("registeredTypeIdentifiers"); - late final _sel_registeredTypeIdentifiersWithFileOptions_1 = - _registerName1("registeredTypeIdentifiersWithFileOptions:"); + late final _sel_attributesAtIndex_longestEffectiveRange_inRange_1 = + _registerName1("attributesAtIndex:longestEffectiveRange:inRange:"); ffi.Pointer _objc_msgSend_659( ffi.Pointer obj, ffi.Pointer sel, - int fileOptions, + int location, + ffi.Pointer<_NSRange> range, + _NSRange rangeLimit, ) { return __objc_msgSend_659( obj, sel, - fileOptions, + location, + range, + rangeLimit, ); } late final __objc_msgSend_659Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>, + _NSRange)>>('objc_msgSend'); late final __objc_msgSend_659 = __objc_msgSend_659Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer<_NSRange>, _NSRange)>(); - late final _sel_hasItemConformingToTypeIdentifier_1 = - _registerName1("hasItemConformingToTypeIdentifier:"); - late final _sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1 = - _registerName1( - "hasRepresentationConformingToTypeIdentifier:fileOptions:"); - bool _objc_msgSend_660( + late final _sel_attribute_atIndex_longestEffectiveRange_inRange_1 = + _registerName1("attribute:atIndex:longestEffectiveRange:inRange:"); + ffi.Pointer _objc_msgSend_660( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer typeIdentifier, - int fileOptions, + ffi.Pointer attrName, + int location, + ffi.Pointer<_NSRange> range, + _NSRange rangeLimit, ) { return __objc_msgSend_660( obj, sel, - typeIdentifier, - fileOptions, + attrName, + location, + range, + rangeLimit, ); } late final __objc_msgSend_660Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer<_NSRange>, + _NSRange)>>('objc_msgSend'); late final __objc_msgSend_660 = __objc_msgSend_660Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_NSRange>, + _NSRange)>(); - late final _sel_loadDataRepresentationForTypeIdentifier_completionHandler_1 = - _registerName1( - "loadDataRepresentationForTypeIdentifier:completionHandler:"); - ffi.Pointer _objc_msgSend_661( + late final _sel_isEqualToAttributedString_1 = + _registerName1("isEqualToAttributedString:"); + bool _objc_msgSend_661( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer other, ) { return __objc_msgSend_661( obj, sel, - typeIdentifier, - completionHandler, + other, ); } late final __objc_msgSend_661Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_661 = __objc_msgSend_661Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_loadFileRepresentationForTypeIdentifier_completionHandler_1 = - _registerName1( - "loadFileRepresentationForTypeIdentifier:completionHandler:"); - ffi.Pointer _objc_msgSend_662( + late final _sel_initWithString_attributes_1 = + _registerName1("initWithString:attributes:"); + late final _sel_initWithAttributedString_1 = + _registerName1("initWithAttributedString:"); + instancetype _objc_msgSend_662( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer attrStr, ) { return __objc_msgSend_662( obj, sel, - typeIdentifier, - completionHandler, + attrStr, ); } late final __objc_msgSend_662Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_662 = __objc_msgSend_662Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1 = - _registerName1( - "loadInPlaceFileRepresentationForTypeIdentifier:completionHandler:"); - ffi.Pointer _objc_msgSend_663( + late final _sel_enumerateAttributesInRange_options_usingBlock_1 = + _registerName1("enumerateAttributesInRange:options:usingBlock:"); + void _objc_msgSend_663( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> completionHandler, + _NSRange enumerationRange, + int opts, + ffi.Pointer<_ObjCBlock> block, ) { return __objc_msgSend_663( obj, sel, - typeIdentifier, - completionHandler, + enumerationRange, + opts, + block, ); } late final __objc_msgSend_663Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_663 = __objc_msgSend_663Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + void Function(ffi.Pointer, ffi.Pointer, _NSRange, + int, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_suggestedName1 = _registerName1("suggestedName"); - late final _sel_setSuggestedName_1 = _registerName1("setSuggestedName:"); - late final _sel_registerObject_visibility_1 = - _registerName1("registerObject:visibility:"); + late final _sel_enumerateAttribute_inRange_options_usingBlock_1 = + _registerName1("enumerateAttribute:inRange:options:usingBlock:"); void _objc_msgSend_664( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer object, - int visibility, + ffi.Pointer attrName, + _NSRange enumerationRange, + int opts, + ffi.Pointer<_ObjCBlock> block, ) { return __objc_msgSend_664( obj, sel, - object, - visibility, + attrName, + enumerationRange, + opts, + block, ); } late final __objc_msgSend_664Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_664 = __objc_msgSend_664Ptr.asFunction< void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + ffi.Pointer, _NSRange, int, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_registerObjectOfClass_visibility_loadHandler_1 = - _registerName1("registerObjectOfClass:visibility:loadHandler:"); - void _objc_msgSend_665( + late final _class_NSAttributedStringMarkdownParsingOptions1 = + _getClass1("NSAttributedStringMarkdownParsingOptions"); + late final _sel_allowsExtendedAttributes1 = + _registerName1("allowsExtendedAttributes"); + late final _sel_setAllowsExtendedAttributes_1 = + _registerName1("setAllowsExtendedAttributes:"); + late final _sel_interpretedSyntax1 = _registerName1("interpretedSyntax"); + int _objc_msgSend_665( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer aClass, - int visibility, - ffi.Pointer<_ObjCBlock> loadHandler, ) { return __objc_msgSend_665( obj, sel, - aClass, - visibility, - loadHandler, ); } late final __objc_msgSend_665Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_665 = __objc_msgSend_665Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_ObjCBlock>)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_canLoadObjectOfClass_1 = - _registerName1("canLoadObjectOfClass:"); - late final _sel_loadObjectOfClass_completionHandler_1 = - _registerName1("loadObjectOfClass:completionHandler:"); - ffi.Pointer _objc_msgSend_666( + late final _sel_setInterpretedSyntax_1 = + _registerName1("setInterpretedSyntax:"); + void _objc_msgSend_666( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer aClass, - ffi.Pointer<_ObjCBlock> completionHandler, + int value, ) { return __objc_msgSend_666( obj, sel, - aClass, - completionHandler, + value, ); } late final __objc_msgSend_666Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_666 = __objc_msgSend_666Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_initWithItem_typeIdentifier_1 = - _registerName1("initWithItem:typeIdentifier:"); - late final _sel_registerItemForTypeIdentifier_loadHandler_1 = - _registerName1("registerItemForTypeIdentifier:loadHandler:"); - void _objc_msgSend_667( + late final _sel_failurePolicy1 = _registerName1("failurePolicy"); + int _objc_msgSend_667( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer<_ObjCBlock> loadHandler, ) { return __objc_msgSend_667( obj, sel, - typeIdentifier, - loadHandler, ); } late final __objc_msgSend_667Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_667 = __objc_msgSend_667Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_loadItemForTypeIdentifier_options_completionHandler_1 = - _registerName1("loadItemForTypeIdentifier:options:completionHandler:"); + late final _sel_setFailurePolicy_1 = _registerName1("setFailurePolicy:"); void _objc_msgSend_668( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer typeIdentifier, - ffi.Pointer options, - ffi.Pointer<_ObjCBlock> completionHandler, + int value, ) { return __objc_msgSend_668( obj, sel, - typeIdentifier, - options, - completionHandler, + value, ); } late final __objc_msgSend_668Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_668 = __objc_msgSend_668Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_668 = __objc_msgSend_668Ptr.asFunction< + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_previewImageHandler1 = _registerName1("previewImageHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_669( + late final _sel_setLanguageCode_1 = _registerName1("setLanguageCode:"); + late final _sel_appliesSourcePositionAttributes1 = + _registerName1("appliesSourcePositionAttributes"); + late final _sel_setAppliesSourcePositionAttributes_1 = + _registerName1("setAppliesSourcePositionAttributes:"); + late final _sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1 = + _registerName1( + "initWithContentsOfMarkdownFileAtURL:options:baseURL:error:"); + instancetype _objc_msgSend_669( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer markdownFile, + ffi.Pointer options, + ffi.Pointer baseURL, + ffi.Pointer> error, ) { return __objc_msgSend_669( obj, sel, + markdownFile, + options, + baseURL, + error, ); } late final __objc_msgSend_669Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_669 = __objc_msgSend_669Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); - late final _sel_setPreviewImageHandler_1 = - _registerName1("setPreviewImageHandler:"); - void _objc_msgSend_670( + late final _sel_initWithMarkdown_options_baseURL_error_1 = + _registerName1("initWithMarkdown:options:baseURL:error:"); + instancetype _objc_msgSend_670( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, + ffi.Pointer markdown, + ffi.Pointer options, + ffi.Pointer baseURL, + ffi.Pointer> error, ) { return __objc_msgSend_670( obj, sel, - value, + markdown, + options, + baseURL, + error, ); } late final __objc_msgSend_670Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_670 = __objc_msgSend_670Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); - late final _sel_loadPreviewImageWithOptions_completionHandler_1 = - _registerName1("loadPreviewImageWithOptions:completionHandler:"); - void _objc_msgSend_671( + late final _sel_initWithMarkdownString_options_baseURL_error_1 = + _registerName1("initWithMarkdownString:options:baseURL:error:"); + instancetype _objc_msgSend_671( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer markdownString, ffi.Pointer options, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer baseURL, + ffi.Pointer> error, ) { return __objc_msgSend_671( obj, sel, + markdownString, options, - completionHandler, + baseURL, + error, ); } late final __objc_msgSend_671Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( + instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_671 = __objc_msgSend_671Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); - late final _class_NSMutableString1 = _getClass1("NSMutableString"); - late final _sel_replaceCharactersInRange_withString_1 = - _registerName1("replaceCharactersInRange:withString:"); - void _objc_msgSend_672( + late final _sel_initWithFormat_options_locale_1 = + _registerName1("initWithFormat:options:locale:"); + instancetype _objc_msgSend_672( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, - ffi.Pointer aString, + ffi.Pointer format, + int options, + ffi.Pointer locale, ) { return __objc_msgSend_672( obj, sel, - range, - aString, + format, + options, + locale, ); } late final __objc_msgSend_672Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_672 = __objc_msgSend_672Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); - late final _sel_insertString_atIndex_1 = - _registerName1("insertString:atIndex:"); - void _objc_msgSend_673( + late final _sel_initWithFormat_options_locale_arguments_1 = + _registerName1("initWithFormat:options:locale:arguments:"); + instancetype _objc_msgSend_673( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer aString, - int loc, + ffi.Pointer format, + int options, + ffi.Pointer locale, + ffi.Pointer arguments, ) { return __objc_msgSend_673( obj, sel, - aString, - loc, + format, + options, + locale, + arguments, ); } late final __objc_msgSend_673Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_673 = __objc_msgSend_673Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_deleteCharactersInRange_1 = - _registerName1("deleteCharactersInRange:"); - late final _sel_appendString_1 = _registerName1("appendString:"); - late final _sel_appendFormat_1 = _registerName1("appendFormat:"); - late final _sel_setString_1 = _registerName1("setString:"); - late final _sel_replaceOccurrencesOfString_withString_options_range_1 = - _registerName1("replaceOccurrencesOfString:withString:options:range:"); - int _objc_msgSend_674( + late final _sel_localizedAttributedStringWithFormat_1 = + _registerName1("localizedAttributedStringWithFormat:"); + late final _sel_localizedAttributedStringWithFormat_options_1 = + _registerName1("localizedAttributedStringWithFormat:options:"); + instancetype _objc_msgSend_674( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer target, - ffi.Pointer replacement, + ffi.Pointer format, int options, - _NSRange searchRange, ) { return __objc_msgSend_674( obj, sel, - target, - replacement, + format, options, - searchRange, ); } late final __objc_msgSend_674Ptr = _lookup< ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_674 = __objc_msgSend_674Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); - late final _sel_applyTransform_reverse_range_updatedRange_1 = - _registerName1("applyTransform:reverse:range:updatedRange:"); - bool _objc_msgSend_675( + late final _sel_attributedStringByInflectingString1 = + _registerName1("attributedStringByInflectingString"); + ffi.Pointer _objc_msgSend_675( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer transform, - bool reverse, - _NSRange range, - ffi.Pointer<_NSRange> resultingRange, ) { return __objc_msgSend_675( obj, sel, - transform, - reverse, - range, - resultingRange, ); } late final __objc_msgSend_675Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool, - _NSRange, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_675 = __objc_msgSend_675Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool, _NSRange, ffi.Pointer<_NSRange>)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); + late final _sel_localizedAttributedStringForKey_value_table_1 = + _registerName1("localizedAttributedStringForKey:value:table:"); ffi.Pointer _objc_msgSend_676( ffi.Pointer obj, ffi.Pointer sel, - int capacity, + ffi.Pointer key, + ffi.Pointer value, + ffi.Pointer tableName, ) { return __objc_msgSend_676( obj, sel, - capacity, + key, + value, + tableName, ); } late final __objc_msgSend_676Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_676 = __objc_msgSend_676Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_stringWithCapacity_1 = _registerName1("stringWithCapacity:"); - late final _class_NSNotification1 = _getClass1("NSNotification"); - late final _sel_object1 = _registerName1("object"); - late final _sel_initWithName_object_userInfo_1 = - _registerName1("initWithName:object:userInfo:"); - instancetype _objc_msgSend_677( + late final _sel_bundleIdentifier1 = _registerName1("bundleIdentifier"); + late final _sel_infoDictionary1 = _registerName1("infoDictionary"); + late final _sel_localizedInfoDictionary1 = + _registerName1("localizedInfoDictionary"); + late final _sel_objectForInfoDictionaryKey_1 = + _registerName1("objectForInfoDictionaryKey:"); + late final _sel_classNamed_1 = _registerName1("classNamed:"); + late final _sel_principalClass1 = _registerName1("principalClass"); + late final _sel_preferredLocalizations1 = + _registerName1("preferredLocalizations"); + late final _sel_localizations1 = _registerName1("localizations"); + late final _sel_developmentLocalization1 = + _registerName1("developmentLocalization"); + late final _sel_preferredLocalizationsFromArray_1 = + _registerName1("preferredLocalizationsFromArray:"); + late final _sel_preferredLocalizationsFromArray_forPreferences_1 = + _registerName1("preferredLocalizationsFromArray:forPreferences:"); + ffi.Pointer _objc_msgSend_677( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer object, - ffi.Pointer userInfo, + ffi.Pointer localizationsArray, + ffi.Pointer preferencesArray, ) { return __objc_msgSend_677( obj, sel, - name, - object, - userInfo, + localizationsArray, + preferencesArray, ); } late final __objc_msgSend_677Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_677 = __objc_msgSend_677Ptr.asFunction< - instancetype Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - late final _sel_notificationWithName_object_1 = - _registerName1("notificationWithName:object:"); - late final _sel_notificationWithName_object_userInfo_1 = - _registerName1("notificationWithName:object:userInfo:"); - late final _class_NSBundle1 = _getClass1("NSBundle"); - late final _sel_mainBundle1 = _registerName1("mainBundle"); - ffi.Pointer _objc_msgSend_678( + late final _sel_executableArchitectures1 = + _registerName1("executableArchitectures"); + late final _sel_setPreservationPriority_forTags_1 = + _registerName1("setPreservationPriority:forTags:"); + void _objc_msgSend_678( ffi.Pointer obj, ffi.Pointer sel, + double priority, + ffi.Pointer tags, ) { return __objc_msgSend_678( obj, sel, + priority, + tags, ); } late final __objc_msgSend_678Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Double, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_678 = __objc_msgSend_678Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, double, + ffi.Pointer)>(); - late final _sel_bundleWithPath_1 = _registerName1("bundleWithPath:"); - late final _sel_initWithPath_1 = _registerName1("initWithPath:"); - late final _sel_bundleWithURL_1 = _registerName1("bundleWithURL:"); - late final _sel_initWithURL_1 = _registerName1("initWithURL:"); - late final _sel_bundleForClass_1 = _registerName1("bundleForClass:"); - ffi.Pointer _objc_msgSend_679( + late final _sel_preservationPriorityForTag_1 = + _registerName1("preservationPriorityForTag:"); + late final _class_NSMutableAttributedString1 = + _getClass1("NSMutableAttributedString"); + late final _sel_setAttributes_range_1 = + _registerName1("setAttributes:range:"); + void _objc_msgSend_679( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer aClass, + ffi.Pointer attrs, + _NSRange range, ) { return __objc_msgSend_679( obj, sel, - aClass, + attrs, + range, ); } late final __objc_msgSend_679Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); late final __objc_msgSend_679 = __objc_msgSend_679Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>(); - late final _sel_bundleWithIdentifier_1 = - _registerName1("bundleWithIdentifier:"); + late final _sel_mutableString1 = _registerName1("mutableString"); ffi.Pointer _objc_msgSend_680( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer identifier, ) { return __objc_msgSend_680( obj, sel, - identifier, ); } late final __objc_msgSend_680Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_680 = __objc_msgSend_680Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_allBundles1 = _registerName1("allBundles"); - late final _sel_allFrameworks1 = _registerName1("allFrameworks"); - late final _sel_isLoaded1 = _registerName1("isLoaded"); - late final _sel_unload1 = _registerName1("unload"); - late final _sel_preflightAndReturnError_1 = - _registerName1("preflightAndReturnError:"); - late final _sel_loadAndReturnError_1 = _registerName1("loadAndReturnError:"); - late final _sel_bundleURL1 = _registerName1("bundleURL"); - late final _sel_resourceURL1 = _registerName1("resourceURL"); - late final _sel_executableURL1 = _registerName1("executableURL"); - late final _sel_URLForAuxiliaryExecutable_1 = - _registerName1("URLForAuxiliaryExecutable:"); - late final _sel_privateFrameworksURL1 = - _registerName1("privateFrameworksURL"); - late final _sel_sharedFrameworksURL1 = _registerName1("sharedFrameworksURL"); - late final _sel_sharedSupportURL1 = _registerName1("sharedSupportURL"); - late final _sel_builtInPlugInsURL1 = _registerName1("builtInPlugInsURL"); - late final _sel_appStoreReceiptURL1 = _registerName1("appStoreReceiptURL"); - late final _sel_bundlePath1 = _registerName1("bundlePath"); - late final _sel_resourcePath1 = _registerName1("resourcePath"); - late final _sel_executablePath1 = _registerName1("executablePath"); - late final _sel_pathForAuxiliaryExecutable_1 = - _registerName1("pathForAuxiliaryExecutable:"); - late final _sel_privateFrameworksPath1 = - _registerName1("privateFrameworksPath"); - late final _sel_sharedFrameworksPath1 = - _registerName1("sharedFrameworksPath"); - late final _sel_sharedSupportPath1 = _registerName1("sharedSupportPath"); - late final _sel_builtInPlugInsPath1 = _registerName1("builtInPlugInsPath"); - late final _sel_URLForResource_withExtension_subdirectory_inBundleWithURL_1 = - _registerName1( - "URLForResource:withExtension:subdirectory:inBundleWithURL:"); - ffi.Pointer _objc_msgSend_681( + late final _sel_addAttribute_value_range_1 = + _registerName1("addAttribute:value:range:"); + void _objc_msgSend_681( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer bundleURL, + ffi.Pointer value, + _NSRange range, ) { return __objc_msgSend_681( obj, sel, name, - ext, - subpath, - bundleURL, + value, + range, ); } late final __objc_msgSend_681Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + _NSRange)>>('objc_msgSend'); late final __objc_msgSend_681 = __objc_msgSend_681Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, _NSRange)>(); - late final _sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_1 = - _registerName1( - "URLsForResourcesWithExtension:subdirectory:inBundleWithURL:"); - ffi.Pointer _objc_msgSend_682( + late final _sel_addAttributes_range_1 = + _registerName1("addAttributes:range:"); + late final _sel_removeAttribute_range_1 = + _registerName1("removeAttribute:range:"); + void _objc_msgSend_682( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer bundleURL, + ffi.Pointer name, + _NSRange range, ) { return __objc_msgSend_682( obj, sel, - ext, - subpath, - bundleURL, + name, + range, ); } late final __objc_msgSend_682Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); late final __objc_msgSend_682 = __objc_msgSend_682Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>(); - late final _sel_URLForResource_withExtension_1 = - _registerName1("URLForResource:withExtension:"); - ffi.Pointer _objc_msgSend_683( + late final _sel_replaceCharactersInRange_withAttributedString_1 = + _registerName1("replaceCharactersInRange:withAttributedString:"); + void _objc_msgSend_683( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, + _NSRange range, + ffi.Pointer attrString, ) { return __objc_msgSend_683( obj, sel, - name, - ext, + range, + attrString, ); } late final __objc_msgSend_683Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + _NSRange, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_683 = __objc_msgSend_683Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + void Function(ffi.Pointer, ffi.Pointer, _NSRange, ffi.Pointer)>(); - late final _sel_URLForResource_withExtension_subdirectory_1 = - _registerName1("URLForResource:withExtension:subdirectory:"); - ffi.Pointer _objc_msgSend_684( + late final _sel_insertAttributedString_atIndex_1 = + _registerName1("insertAttributedString:atIndex:"); + void _objc_msgSend_684( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, + ffi.Pointer attrString, + int loc, ) { return __objc_msgSend_684( obj, sel, - name, - ext, - subpath, + attrString, + loc, ); } late final __objc_msgSend_684Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_684 = __objc_msgSend_684Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); - late final _sel_URLForResource_withExtension_subdirectory_localization_1 = - _registerName1("URLForResource:withExtension:subdirectory:localization:"); - ffi.Pointer _objc_msgSend_685( + late final _sel_appendAttributedString_1 = + _registerName1("appendAttributedString:"); + void _objc_msgSend_685( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer localizationName, + ffi.Pointer attrString, ) { return __objc_msgSend_685( obj, sel, - name, - ext, - subpath, - localizationName, + attrString, ); } late final __objc_msgSend_685Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_685 = __objc_msgSend_685Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); - late final _sel_URLsForResourcesWithExtension_subdirectory_1 = - _registerName1("URLsForResourcesWithExtension:subdirectory:"); + late final _sel_setAttributedString_1 = + _registerName1("setAttributedString:"); + late final _sel_beginEditing1 = _registerName1("beginEditing"); + late final _sel_endEditing1 = _registerName1("endEditing"); + late final _sel_appendLocalizedFormat_1 = + _registerName1("appendLocalizedFormat:"); + late final _class_NSDateFormatter1 = _getClass1("NSDateFormatter"); + late final _class_NSFormatter1 = _getClass1("NSFormatter"); + late final _sel_stringForObjectValue_1 = + _registerName1("stringForObjectValue:"); + late final _sel_attributedStringForObjectValue_withDefaultAttributes_1 = + _registerName1("attributedStringForObjectValue:withDefaultAttributes:"); ffi.Pointer _objc_msgSend_686( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer subpath, + ffi.Pointer obj1, + ffi.Pointer attrs, ) { return __objc_msgSend_686( obj, sel, - ext, - subpath, + obj1, + attrs, ); } @@ -19204,220 +19405,213 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer)>(); - late final _sel_URLsForResourcesWithExtension_subdirectory_localization_1 = - _registerName1( - "URLsForResourcesWithExtension:subdirectory:localization:"); - ffi.Pointer _objc_msgSend_687( + late final _sel_editingStringForObjectValue_1 = + _registerName1("editingStringForObjectValue:"); + late final _sel_getObjectValue_forString_errorDescription_1 = + _registerName1("getObjectValue:forString:errorDescription:"); + bool _objc_msgSend_687( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer localizationName, + ffi.Pointer> obj1, + ffi.Pointer string, + ffi.Pointer> error, ) { return __objc_msgSend_687( obj, sel, - ext, - subpath, - localizationName, + obj1, + string, + error, ); } late final __objc_msgSend_687Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Bool Function( ffi.Pointer, ffi.Pointer, + ffi.Pointer>, ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_687 = __objc_msgSend_687Ptr.asFunction< - ffi.Pointer Function( + bool Function( ffi.Pointer, ffi.Pointer, + ffi.Pointer>, ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer>)>(); - late final _sel_pathForResource_ofType_inDirectory_1 = - _registerName1("pathForResource:ofType:inDirectory:"); - ffi.Pointer _objc_msgSend_688( + late final _sel_isPartialStringValid_newEditingString_errorDescription_1 = + _registerName1("isPartialStringValid:newEditingString:errorDescription:"); + bool _objc_msgSend_688( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer bundlePath, + ffi.Pointer partialString, + ffi.Pointer> newString, + ffi.Pointer> error, ) { return __objc_msgSend_688( obj, sel, - name, - ext, - bundlePath, + partialString, + newString, + error, ); } late final __objc_msgSend_688Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Bool Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_688 = __objc_msgSend_688Ptr.asFunction< - ffi.Pointer Function( + bool Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer>, + ffi.Pointer>)>(); - late final _sel_pathsForResourcesOfType_inDirectory_1 = - _registerName1("pathsForResourcesOfType:inDirectory:"); - late final _sel_pathForResource_ofType_1 = - _registerName1("pathForResource:ofType:"); - late final _sel_pathForResource_ofType_inDirectory_forLocalization_1 = - _registerName1("pathForResource:ofType:inDirectory:forLocalization:"); - ffi.Pointer _objc_msgSend_689( + late final _sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_1 = + _registerName1( + "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:"); + bool _objc_msgSend_689( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer ext, - ffi.Pointer subpath, - ffi.Pointer localizationName, + ffi.Pointer> partialStringPtr, + ffi.Pointer<_NSRange> proposedSelRangePtr, + ffi.Pointer origString, + _NSRange origSelRange, + ffi.Pointer> error, ) { return __objc_msgSend_689( obj, sel, - name, - ext, - subpath, - localizationName, + partialStringPtr, + proposedSelRangePtr, + origString, + origSelRange, + error, ); } late final __objc_msgSend_689Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Bool Function( ffi.Pointer, ffi.Pointer, + ffi.Pointer>, + ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + _NSRange, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_689 = __objc_msgSend_689Ptr.asFunction< - ffi.Pointer Function( + bool Function( ffi.Pointer, ffi.Pointer, + ffi.Pointer>, + ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + _NSRange, + ffi.Pointer>)>(); - late final _sel_pathsForResourcesOfType_inDirectory_forLocalization_1 = - _registerName1("pathsForResourcesOfType:inDirectory:forLocalization:"); - late final _sel_localizedStringForKey_value_table_1 = - _registerName1("localizedStringForKey:value:table:"); - late final _class_NSAttributedString1 = _getClass1("NSAttributedString"); - late final _sel_attributesAtIndex_effectiveRange_1 = - _registerName1("attributesAtIndex:effectiveRange:"); - ffi.Pointer _objc_msgSend_690( + late final _sel_formattingContext1 = _registerName1("formattingContext"); + int _objc_msgSend_690( ffi.Pointer obj, ffi.Pointer sel, - int location, - ffi.Pointer<_NSRange> range, ) { return __objc_msgSend_690( obj, sel, - location, - range, ); } late final __objc_msgSend_690Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_690 = __objc_msgSend_690Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_NSRange>)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_attribute_atIndex_effectiveRange_1 = - _registerName1("attribute:atIndex:effectiveRange:"); - ffi.Pointer _objc_msgSend_691( + late final _sel_setFormattingContext_1 = + _registerName1("setFormattingContext:"); + void _objc_msgSend_691( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer attrName, - int location, - ffi.Pointer<_NSRange> range, + int value, ) { return __objc_msgSend_691( obj, sel, - attrName, - location, - range, + value, ); } late final __objc_msgSend_691Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_691 = __objc_msgSend_691Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer<_NSRange>)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_attributedSubstringFromRange_1 = - _registerName1("attributedSubstringFromRange:"); - ffi.Pointer _objc_msgSend_692( + late final _sel_getObjectValue_forString_range_error_1 = + _registerName1("getObjectValue:forString:range:error:"); + bool _objc_msgSend_692( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, + ffi.Pointer> obj1, + ffi.Pointer string, + ffi.Pointer<_NSRange> rangep, + ffi.Pointer> error, ) { return __objc_msgSend_692( obj, sel, - range, + obj1, + string, + rangep, + error, ); } late final __objc_msgSend_692Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_692 = __objc_msgSend_692Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.Pointer>)>(); - late final _sel_attributesAtIndex_longestEffectiveRange_inRange_1 = - _registerName1("attributesAtIndex:longestEffectiveRange:inRange:"); + late final _sel_stringFromDate_1 = _registerName1("stringFromDate:"); + late final _sel_dateFromString_1 = _registerName1("dateFromString:"); + late final _sel_localizedStringFromDate_dateStyle_timeStyle_1 = + _registerName1("localizedStringFromDate:dateStyle:timeStyle:"); ffi.Pointer _objc_msgSend_693( ffi.Pointer obj, ffi.Pointer sel, - int location, - ffi.Pointer<_NSRange> range, - _NSRange rangeLimit, + ffi.Pointer date, + int dstyle, + int tstyle, ) { return __objc_msgSend_693( obj, sel, - location, - range, - rangeLimit, + date, + dstyle, + tstyle, ); } @@ -19426,30 +19620,28 @@ class SentryCocoa { ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer<_NSRange>, - _NSRange)>>('objc_msgSend'); + ffi.Pointer, + ffi.Int32, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_693 = __objc_msgSend_693Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer<_NSRange>, _NSRange)>(); + ffi.Pointer, ffi.Pointer, int, int)>(); - late final _sel_attribute_atIndex_longestEffectiveRange_inRange_1 = - _registerName1("attribute:atIndex:longestEffectiveRange:inRange:"); + late final _sel_dateFormatFromTemplate_options_locale_1 = + _registerName1("dateFormatFromTemplate:options:locale:"); ffi.Pointer _objc_msgSend_694( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer attrName, - int location, - ffi.Pointer<_NSRange> range, - _NSRange rangeLimit, + ffi.Pointer tmplate, + int opts, + ffi.Pointer locale, ) { return __objc_msgSend_694( obj, sel, - attrName, - location, - range, - rangeLimit, + tmplate, + opts, + locale, ); } @@ -19460,501 +19652,491 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.UnsignedLong, - ffi.Pointer<_NSRange>, - _NSRange)>>('objc_msgSend'); + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_694 = __objc_msgSend_694Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, int, - ffi.Pointer<_NSRange>, - _NSRange)>(); + ffi.Pointer)>(); - late final _sel_isEqualToAttributedString_1 = - _registerName1("isEqualToAttributedString:"); - bool _objc_msgSend_695( + late final _sel_defaultFormatterBehavior1 = + _registerName1("defaultFormatterBehavior"); + int _objc_msgSend_695( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer other, ) { return __objc_msgSend_695( obj, sel, - other, ); } late final __objc_msgSend_695Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_695 = __objc_msgSend_695Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_initWithString_attributes_1 = - _registerName1("initWithString:attributes:"); - late final _sel_initWithAttributedString_1 = - _registerName1("initWithAttributedString:"); - instancetype _objc_msgSend_696( + late final _sel_setDefaultFormatterBehavior_1 = + _registerName1("setDefaultFormatterBehavior:"); + void _objc_msgSend_696( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer attrStr, + int value, ) { return __objc_msgSend_696( obj, sel, - attrStr, + value, ); } late final __objc_msgSend_696Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_696 = __objc_msgSend_696Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_enumerateAttributesInRange_options_usingBlock_1 = - _registerName1("enumerateAttributesInRange:options:usingBlock:"); - void _objc_msgSend_697( + late final _sel_setLocalizedDateFormatFromTemplate_1 = + _registerName1("setLocalizedDateFormatFromTemplate:"); + late final _sel_dateFormat1 = _registerName1("dateFormat"); + late final _sel_setDateFormat_1 = _registerName1("setDateFormat:"); + late final _sel_dateStyle1 = _registerName1("dateStyle"); + int _objc_msgSend_697( ffi.Pointer obj, ffi.Pointer sel, - _NSRange enumerationRange, - int opts, - ffi.Pointer<_ObjCBlock> block, ) { return __objc_msgSend_697( obj, sel, - enumerationRange, - opts, - block, ); } late final __objc_msgSend_697Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Int32, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_697 = __objc_msgSend_697Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, - int, ffi.Pointer<_ObjCBlock>)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_enumerateAttribute_inRange_options_usingBlock_1 = - _registerName1("enumerateAttribute:inRange:options:usingBlock:"); + late final _sel_setDateStyle_1 = _registerName1("setDateStyle:"); void _objc_msgSend_698( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer attrName, - _NSRange enumerationRange, - int opts, - ffi.Pointer<_ObjCBlock> block, + int value, ) { return __objc_msgSend_698( obj, sel, - attrName, - enumerationRange, - opts, - block, + value, ); } late final __objc_msgSend_698Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_698 = __objc_msgSend_698Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange, int, ffi.Pointer<_ObjCBlock>)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _class_NSAttributedStringMarkdownParsingOptions1 = - _getClass1("NSAttributedStringMarkdownParsingOptions"); - late final _sel_allowsExtendedAttributes1 = - _registerName1("allowsExtendedAttributes"); - late final _sel_setAllowsExtendedAttributes_1 = - _registerName1("setAllowsExtendedAttributes:"); - late final _sel_interpretedSyntax1 = _registerName1("interpretedSyntax"); - int _objc_msgSend_699( + late final _sel_timeStyle1 = _registerName1("timeStyle"); + late final _sel_setTimeStyle_1 = _registerName1("setTimeStyle:"); + late final _sel_locale1 = _registerName1("locale"); + late final _sel_setLocale_1 = _registerName1("setLocale:"); + void _objc_msgSend_699( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer value, ) { return __objc_msgSend_699( obj, sel, + value, ); } late final __objc_msgSend_699Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_699 = __objc_msgSend_699Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_setInterpretedSyntax_1 = - _registerName1("setInterpretedSyntax:"); - void _objc_msgSend_700( + late final _sel_generatesCalendarDates1 = + _registerName1("generatesCalendarDates"); + late final _sel_setGeneratesCalendarDates_1 = + _registerName1("setGeneratesCalendarDates:"); + late final _sel_formatterBehavior1 = _registerName1("formatterBehavior"); + late final _sel_setFormatterBehavior_1 = + _registerName1("setFormatterBehavior:"); + late final _class_NSCalendar1 = _getClass1("NSCalendar"); + late final _sel_currentCalendar1 = _registerName1("currentCalendar"); + ffi.Pointer _objc_msgSend_700( ffi.Pointer obj, ffi.Pointer sel, - int value, ) { return __objc_msgSend_700( obj, sel, - value, ); } late final __objc_msgSend_700Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_700 = __objc_msgSend_700Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_failurePolicy1 = _registerName1("failurePolicy"); - int _objc_msgSend_701( + late final _sel_autoupdatingCurrentCalendar1 = + _registerName1("autoupdatingCurrentCalendar"); + late final _sel_calendarWithIdentifier_1 = + _registerName1("calendarWithIdentifier:"); + ffi.Pointer _objc_msgSend_701( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer calendarIdentifierConstant, ) { return __objc_msgSend_701( obj, sel, + calendarIdentifierConstant, ); } late final __objc_msgSend_701Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_701 = __objc_msgSend_701Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setFailurePolicy_1 = _registerName1("setFailurePolicy:"); + late final _sel_initWithCalendarIdentifier_1 = + _registerName1("initWithCalendarIdentifier:"); + late final _sel_firstWeekday1 = _registerName1("firstWeekday"); + late final _sel_setFirstWeekday_1 = _registerName1("setFirstWeekday:"); + late final _sel_minimumDaysInFirstWeek1 = + _registerName1("minimumDaysInFirstWeek"); + late final _sel_setMinimumDaysInFirstWeek_1 = + _registerName1("setMinimumDaysInFirstWeek:"); + late final _sel_eraSymbols1 = _registerName1("eraSymbols"); + late final _sel_longEraSymbols1 = _registerName1("longEraSymbols"); + late final _sel_monthSymbols1 = _registerName1("monthSymbols"); + late final _sel_shortMonthSymbols1 = _registerName1("shortMonthSymbols"); + late final _sel_veryShortMonthSymbols1 = + _registerName1("veryShortMonthSymbols"); + late final _sel_standaloneMonthSymbols1 = + _registerName1("standaloneMonthSymbols"); + late final _sel_shortStandaloneMonthSymbols1 = + _registerName1("shortStandaloneMonthSymbols"); + late final _sel_veryShortStandaloneMonthSymbols1 = + _registerName1("veryShortStandaloneMonthSymbols"); + late final _sel_weekdaySymbols1 = _registerName1("weekdaySymbols"); + late final _sel_shortWeekdaySymbols1 = _registerName1("shortWeekdaySymbols"); + late final _sel_veryShortWeekdaySymbols1 = + _registerName1("veryShortWeekdaySymbols"); + late final _sel_standaloneWeekdaySymbols1 = + _registerName1("standaloneWeekdaySymbols"); + late final _sel_shortStandaloneWeekdaySymbols1 = + _registerName1("shortStandaloneWeekdaySymbols"); + late final _sel_veryShortStandaloneWeekdaySymbols1 = + _registerName1("veryShortStandaloneWeekdaySymbols"); + late final _sel_quarterSymbols1 = _registerName1("quarterSymbols"); + late final _sel_shortQuarterSymbols1 = _registerName1("shortQuarterSymbols"); + late final _sel_standaloneQuarterSymbols1 = + _registerName1("standaloneQuarterSymbols"); + late final _sel_shortStandaloneQuarterSymbols1 = + _registerName1("shortStandaloneQuarterSymbols"); + late final _sel_AMSymbol1 = _registerName1("AMSymbol"); + late final _sel_PMSymbol1 = _registerName1("PMSymbol"); + late final _sel_minimumRangeOfUnit_1 = _registerName1("minimumRangeOfUnit:"); void _objc_msgSend_702( + ffi.Pointer<_NSRange> stret, ffi.Pointer obj, ffi.Pointer sel, - int value, + int unit, ) { return __objc_msgSend_702( + stret, obj, sel, - value, + unit, ); } late final __objc_msgSend_702Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend_stret'); late final __objc_msgSend_702 = __objc_msgSend_702Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, int)>(); - late final _sel_setLanguageCode_1 = _registerName1("setLanguageCode:"); - late final _sel_appliesSourcePositionAttributes1 = - _registerName1("appliesSourcePositionAttributes"); - late final _sel_setAppliesSourcePositionAttributes_1 = - _registerName1("setAppliesSourcePositionAttributes:"); - late final _sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1 = - _registerName1( - "initWithContentsOfMarkdownFileAtURL:options:baseURL:error:"); - instancetype _objc_msgSend_703( + late final _sel_maximumRangeOfUnit_1 = _registerName1("maximumRangeOfUnit:"); + late final _sel_rangeOfUnit_inUnit_forDate_1 = + _registerName1("rangeOfUnit:inUnit:forDate:"); + void _objc_msgSend_703( + ffi.Pointer<_NSRange> stret, ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer markdownFile, - ffi.Pointer options, - ffi.Pointer baseURL, - ffi.Pointer> error, + int smaller, + int larger, + ffi.Pointer date, ) { return __objc_msgSend_703( + stret, obj, sel, - markdownFile, - options, - baseURL, - error, + smaller, + larger, + date, ); } late final __objc_msgSend_703Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.Void Function( + ffi.Pointer<_NSRange>, ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Int32, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend_stret'); late final __objc_msgSend_703 = __objc_msgSend_703Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, int, int, ffi.Pointer)>(); - late final _sel_initWithMarkdown_options_baseURL_error_1 = - _registerName1("initWithMarkdown:options:baseURL:error:"); - instancetype _objc_msgSend_704( + late final _sel_ordinalityOfUnit_inUnit_forDate_1 = + _registerName1("ordinalityOfUnit:inUnit:forDate:"); + int _objc_msgSend_704( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer markdown, - ffi.Pointer options, - ffi.Pointer baseURL, - ffi.Pointer> error, + int smaller, + int larger, + ffi.Pointer date, ) { return __objc_msgSend_704( obj, sel, - markdown, - options, - baseURL, - error, + smaller, + larger, + date, ); } late final __objc_msgSend_704Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.UnsignedLong Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Int32, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_704 = __objc_msgSend_704Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); + int Function(ffi.Pointer, ffi.Pointer, int, int, + ffi.Pointer)>(); - late final _sel_initWithMarkdownString_options_baseURL_error_1 = - _registerName1("initWithMarkdownString:options:baseURL:error:"); - instancetype _objc_msgSend_705( + late final _sel_rangeOfUnit_startDate_interval_forDate_1 = + _registerName1("rangeOfUnit:startDate:interval:forDate:"); + bool _objc_msgSend_705( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer markdownString, - ffi.Pointer options, - ffi.Pointer baseURL, - ffi.Pointer> error, + int unit, + ffi.Pointer> datep, + ffi.Pointer tip, + ffi.Pointer date, ) { return __objc_msgSend_705( obj, sel, - markdownString, - options, - baseURL, - error, + unit, + datep, + tip, + date, ); } late final __objc_msgSend_705Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.Bool Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Int32, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_705 = __objc_msgSend_705Ptr.asFunction< - instancetype Function( + bool Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); + int, + ffi.Pointer>, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_initWithFormat_options_locale_1 = - _registerName1("initWithFormat:options:locale:"); - instancetype _objc_msgSend_706( + late final _class_NSDateComponents1 = _getClass1("NSDateComponents"); + late final _sel_calendar1 = _registerName1("calendar"); + late final _sel_setCalendar_1 = _registerName1("setCalendar:"); + void _objc_msgSend_706( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer locale, + ffi.Pointer value, ) { return __objc_msgSend_706( obj, sel, - format, - options, - locale, + value, ); } late final __objc_msgSend_706Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, + ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_706 = __objc_msgSend_706Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_initWithFormat_options_locale_arguments_1 = - _registerName1("initWithFormat:options:locale:arguments:"); - instancetype _objc_msgSend_707( + late final _sel_era1 = _registerName1("era"); + late final _sel_setEra_1 = _registerName1("setEra:"); + late final _sel_year1 = _registerName1("year"); + late final _sel_setYear_1 = _registerName1("setYear:"); + late final _sel_month1 = _registerName1("month"); + late final _sel_setMonth_1 = _registerName1("setMonth:"); + late final _sel_day1 = _registerName1("day"); + late final _sel_setDay_1 = _registerName1("setDay:"); + late final _sel_hour1 = _registerName1("hour"); + late final _sel_setHour_1 = _registerName1("setHour:"); + late final _sel_minute1 = _registerName1("minute"); + late final _sel_setMinute_1 = _registerName1("setMinute:"); + late final _sel_second1 = _registerName1("second"); + late final _sel_setSecond_1 = _registerName1("setSecond:"); + late final _sel_nanosecond1 = _registerName1("nanosecond"); + late final _sel_setNanosecond_1 = _registerName1("setNanosecond:"); + late final _sel_weekday1 = _registerName1("weekday"); + late final _sel_setWeekday_1 = _registerName1("setWeekday:"); + late final _sel_weekdayOrdinal1 = _registerName1("weekdayOrdinal"); + late final _sel_setWeekdayOrdinal_1 = _registerName1("setWeekdayOrdinal:"); + late final _sel_quarter1 = _registerName1("quarter"); + late final _sel_setQuarter_1 = _registerName1("setQuarter:"); + late final _sel_weekOfMonth1 = _registerName1("weekOfMonth"); + late final _sel_setWeekOfMonth_1 = _registerName1("setWeekOfMonth:"); + late final _sel_weekOfYear1 = _registerName1("weekOfYear"); + late final _sel_setWeekOfYear_1 = _registerName1("setWeekOfYear:"); + late final _sel_yearForWeekOfYear1 = _registerName1("yearForWeekOfYear"); + late final _sel_setYearForWeekOfYear_1 = + _registerName1("setYearForWeekOfYear:"); + late final _sel_isLeapMonth1 = _registerName1("isLeapMonth"); + late final _sel_setLeapMonth_1 = _registerName1("setLeapMonth:"); + late final _sel_week1 = _registerName1("week"); + late final _sel_setWeek_1 = _registerName1("setWeek:"); + late final _sel_setValue_forComponent_1 = + _registerName1("setValue:forComponent:"); + void _objc_msgSend_707( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer format, - int options, - ffi.Pointer locale, - ffi.Pointer arguments, + int value, + int unit, ) { return __objc_msgSend_707( obj, sel, - format, - options, - locale, - arguments, + value, + unit, ); } late final __objc_msgSend_707Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Long, ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_707 = __objc_msgSend_707Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int, int)>(); - late final _sel_localizedAttributedStringWithFormat_1 = - _registerName1("localizedAttributedStringWithFormat:"); - late final _sel_localizedAttributedStringWithFormat_options_1 = - _registerName1("localizedAttributedStringWithFormat:options:"); - instancetype _objc_msgSend_708( + late final _sel_valueForComponent_1 = _registerName1("valueForComponent:"); + int _objc_msgSend_708( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer format, - int options, + int unit, ) { return __objc_msgSend_708( obj, sel, - format, - options, + unit, ); } late final __objc_msgSend_708Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + ffi.Long Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_708 = __objc_msgSend_708Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + int Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_attributedStringByInflectingString1 = - _registerName1("attributedStringByInflectingString"); - ffi.Pointer _objc_msgSend_709( + late final _sel_isValidDate1 = _registerName1("isValidDate"); + late final _sel_isValidDateInCalendar_1 = + _registerName1("isValidDateInCalendar:"); + bool _objc_msgSend_709( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer calendar, ) { return __objc_msgSend_709( obj, sel, + calendar, ); } late final __objc_msgSend_709Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_709 = __objc_msgSend_709Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_localizedAttributedStringForKey_value_table_1 = - _registerName1("localizedAttributedStringForKey:value:table:"); + late final _sel_dateFromComponents_1 = _registerName1("dateFromComponents:"); ffi.Pointer _objc_msgSend_710( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer value, - ffi.Pointer tableName, + ffi.Pointer comps, ) { return __objc_msgSend_710( obj, sel, - key, - value, - tableName, + comps, ); } late final __objc_msgSend_710Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_710 = __objc_msgSend_710Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_bundleIdentifier1 = _registerName1("bundleIdentifier"); - late final _sel_infoDictionary1 = _registerName1("infoDictionary"); - late final _sel_localizedInfoDictionary1 = - _registerName1("localizedInfoDictionary"); - late final _sel_objectForInfoDictionaryKey_1 = - _registerName1("objectForInfoDictionaryKey:"); - late final _sel_classNamed_1 = _registerName1("classNamed:"); - late final _sel_principalClass1 = _registerName1("principalClass"); - late final _sel_preferredLocalizations1 = - _registerName1("preferredLocalizations"); - late final _sel_localizations1 = _registerName1("localizations"); - late final _sel_developmentLocalization1 = - _registerName1("developmentLocalization"); - late final _sel_preferredLocalizationsFromArray_1 = - _registerName1("preferredLocalizationsFromArray:"); - late final _sel_preferredLocalizationsFromArray_forPreferences_1 = - _registerName1("preferredLocalizationsFromArray:forPreferences:"); + late final _sel_components_fromDate_1 = + _registerName1("components:fromDate:"); ffi.Pointer _objc_msgSend_711( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer localizationsArray, - ffi.Pointer preferencesArray, + int unitFlags, + ffi.Pointer date, ) { return __objc_msgSend_711( obj, sel, - localizationsArray, - preferencesArray, + unitFlags, + date, ); } @@ -19963,271 +20145,339 @@ class SentryCocoa { ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, + ffi.Int32, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_711 = __objc_msgSend_711Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, ffi.Pointer)>(); - late final _sel_executableArchitectures1 = - _registerName1("executableArchitectures"); - late final _sel_setPreservationPriority_forTags_1 = - _registerName1("setPreservationPriority:forTags:"); - void _objc_msgSend_712( + late final _sel_dateByAddingComponents_toDate_options_1 = + _registerName1("dateByAddingComponents:toDate:options:"); + ffi.Pointer _objc_msgSend_712( ffi.Pointer obj, ffi.Pointer sel, - double priority, - ffi.Pointer tags, + ffi.Pointer comps, + ffi.Pointer date, + int opts, ) { return __objc_msgSend_712( obj, sel, - priority, - tags, + comps, + date, + opts, ); } late final __objc_msgSend_712Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Double, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_712 = __objc_msgSend_712Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double, - ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); - late final _sel_preservationPriorityForTag_1 = - _registerName1("preservationPriorityForTag:"); - late final _class_NSMutableAttributedString1 = - _getClass1("NSMutableAttributedString"); - late final _sel_setAttributes_range_1 = - _registerName1("setAttributes:range:"); - void _objc_msgSend_713( + late final _sel_components_fromDate_toDate_options_1 = + _registerName1("components:fromDate:toDate:options:"); + ffi.Pointer _objc_msgSend_713( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer attrs, - _NSRange range, + int unitFlags, + ffi.Pointer startingDate, + ffi.Pointer resultDate, + int opts, ) { return __objc_msgSend_713( obj, sel, - attrs, - range, + unitFlags, + startingDate, + resultDate, + opts, ); } late final __objc_msgSend_713Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_713 = __objc_msgSend_713Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer, + int)>(); - late final _sel_mutableString1 = _registerName1("mutableString"); - ffi.Pointer _objc_msgSend_714( + late final _sel_getEra_year_month_day_fromDate_1 = + _registerName1("getEra:year:month:day:fromDate:"); + void _objc_msgSend_714( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer eraValuePointer, + ffi.Pointer yearValuePointer, + ffi.Pointer monthValuePointer, + ffi.Pointer dayValuePointer, + ffi.Pointer date, ) { return __objc_msgSend_714( obj, sel, + eraValuePointer, + yearValuePointer, + monthValuePointer, + dayValuePointer, + date, ); } late final __objc_msgSend_714Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_714 = __objc_msgSend_714Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_addAttribute_value_range_1 = - _registerName1("addAttribute:value:range:"); - void _objc_msgSend_715( + late final _sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_1 = + _registerName1("getEra:yearForWeekOfYear:weekOfYear:weekday:fromDate:"); + late final _sel_getHour_minute_second_nanosecond_fromDate_1 = + _registerName1("getHour:minute:second:nanosecond:fromDate:"); + late final _sel_component_fromDate_1 = _registerName1("component:fromDate:"); + int _objc_msgSend_715( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer value, - _NSRange range, + int unit, + ffi.Pointer date, ) { return __objc_msgSend_715( obj, sel, - name, - value, - range, + unit, + date, ); } late final __objc_msgSend_715Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - _NSRange)>>('objc_msgSend'); + ffi.Long Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_715 = __objc_msgSend_715Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, _NSRange)>(); + int Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); - late final _sel_addAttributes_range_1 = - _registerName1("addAttributes:range:"); - late final _sel_removeAttribute_range_1 = - _registerName1("removeAttribute:range:"); - void _objc_msgSend_716( + late final _sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_1 = + _registerName1( + "dateWithEra:year:month:day:hour:minute:second:nanosecond:"); + ffi.Pointer _objc_msgSend_716( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - _NSRange range, + int eraValue, + int yearValue, + int monthValue, + int dayValue, + int hourValue, + int minuteValue, + int secondValue, + int nanosecondValue, ) { return __objc_msgSend_716( obj, sel, - name, - range, + eraValue, + yearValue, + monthValue, + dayValue, + hourValue, + minuteValue, + secondValue, + nanosecondValue, ); } late final __objc_msgSend_716Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Long)>>('objc_msgSend'); late final __objc_msgSend_716 = __objc_msgSend_716Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, int, int, int, int, int, int, int)>(); - late final _sel_replaceCharactersInRange_withAttributedString_1 = - _registerName1("replaceCharactersInRange:withAttributedString:"); - void _objc_msgSend_717( + late final _sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_1 = + _registerName1( + "dateWithEra:yearForWeekOfYear:weekOfYear:weekday:hour:minute:second:nanosecond:"); + late final _sel_startOfDayForDate_1 = _registerName1("startOfDayForDate:"); + late final _sel_componentsInTimeZone_fromDate_1 = + _registerName1("componentsInTimeZone:fromDate:"); + ffi.Pointer _objc_msgSend_717( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, - ffi.Pointer attrString, + ffi.Pointer timezone, + ffi.Pointer date, ) { return __objc_msgSend_717( obj, sel, - range, - attrString, + timezone, + date, ); } late final __objc_msgSend_717Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_717 = __objc_msgSend_717Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, _NSRange, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_insertAttributedString_atIndex_1 = - _registerName1("insertAttributedString:atIndex:"); - void _objc_msgSend_718( + late final _sel_compareDate_toDate_toUnitGranularity_1 = + _registerName1("compareDate:toDate:toUnitGranularity:"); + int _objc_msgSend_718( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer attrString, - int loc, + ffi.Pointer date1, + ffi.Pointer date2, + int unit, ) { return __objc_msgSend_718( obj, sel, - attrString, - loc, + date1, + date2, + unit, ); } late final __objc_msgSend_718Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_718 = __objc_msgSend_718Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_appendAttributedString_1 = - _registerName1("appendAttributedString:"); - void _objc_msgSend_719( + late final _sel_isDate_equalToDate_toUnitGranularity_1 = + _registerName1("isDate:equalToDate:toUnitGranularity:"); + bool _objc_msgSend_719( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer attrString, + ffi.Pointer date1, + ffi.Pointer date2, + int unit, ) { return __objc_msgSend_719( obj, sel, - attrString, + date1, + date2, + unit, ); } late final __objc_msgSend_719Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_719 = __objc_msgSend_719Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_setAttributedString_1 = - _registerName1("setAttributedString:"); - late final _sel_beginEditing1 = _registerName1("beginEditing"); - late final _sel_endEditing1 = _registerName1("endEditing"); - late final _sel_appendLocalizedFormat_1 = - _registerName1("appendLocalizedFormat:"); - late final _class_NSDateFormatter1 = _getClass1("NSDateFormatter"); - late final _class_NSFormatter1 = _getClass1("NSFormatter"); - late final _sel_stringForObjectValue_1 = - _registerName1("stringForObjectValue:"); - late final _sel_attributedStringForObjectValue_withDefaultAttributes_1 = - _registerName1("attributedStringForObjectValue:withDefaultAttributes:"); - ffi.Pointer _objc_msgSend_720( + late final _sel_isDate_inSameDayAsDate_1 = + _registerName1("isDate:inSameDayAsDate:"); + bool _objc_msgSend_720( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer obj1, - ffi.Pointer attrs, + ffi.Pointer date1, + ffi.Pointer date2, ) { return __objc_msgSend_720( obj, sel, - obj1, - attrs, + date1, + date2, ); } late final __objc_msgSend_720Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Bool Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_720 = __objc_msgSend_720Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_editingStringForObjectValue_1 = - _registerName1("editingStringForObjectValue:"); - late final _sel_getObjectValue_forString_errorDescription_1 = - _registerName1("getObjectValue:forString:errorDescription:"); + late final _sel_isDateInToday_1 = _registerName1("isDateInToday:"); + late final _sel_isDateInYesterday_1 = _registerName1("isDateInYesterday:"); + late final _sel_isDateInTomorrow_1 = _registerName1("isDateInTomorrow:"); + late final _sel_isDateInWeekend_1 = _registerName1("isDateInWeekend:"); + late final _sel_rangeOfWeekendStartDate_interval_containingDate_1 = + _registerName1("rangeOfWeekendStartDate:interval:containingDate:"); bool _objc_msgSend_721( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer> obj1, - ffi.Pointer string, - ffi.Pointer> error, + ffi.Pointer> datep, + ffi.Pointer tip, + ffi.Pointer date, ) { return __objc_msgSend_721( obj, sel, - obj1, - string, - error, + datep, + tip, + date, ); } @@ -20237,31 +20487,33 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer>, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_721 = __objc_msgSend_721Ptr.asFunction< bool Function( ffi.Pointer, ffi.Pointer, ffi.Pointer>, - ffi.Pointer, - ffi.Pointer>)>(); + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_isPartialStringValid_newEditingString_errorDescription_1 = - _registerName1("isPartialStringValid:newEditingString:errorDescription:"); + late final _sel_nextWeekendStartDate_interval_options_afterDate_1 = + _registerName1("nextWeekendStartDate:interval:options:afterDate:"); bool _objc_msgSend_722( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer partialString, - ffi.Pointer> newString, - ffi.Pointer> error, + ffi.Pointer> datep, + ffi.Pointer tip, + int options, + ffi.Pointer date, ) { return __objc_msgSend_722( obj, sel, - partialString, - newString, - error, + datep, + tip, + options, + date, ); } @@ -20270,154 +20522,180 @@ class SentryCocoa { ffi.Bool Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_722 = __objc_msgSend_722Ptr.asFunction< bool Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>, - ffi.Pointer>)>(); + ffi.Pointer, + int, + ffi.Pointer)>(); - late final _sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_1 = - _registerName1( - "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:"); - bool _objc_msgSend_723( + late final _sel_components_fromDateComponents_toDateComponents_options_1 = + _registerName1("components:fromDateComponents:toDateComponents:options:"); + ffi.Pointer _objc_msgSend_723( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer> partialStringPtr, - ffi.Pointer<_NSRange> proposedSelRangePtr, - ffi.Pointer origString, - _NSRange origSelRange, - ffi.Pointer> error, + int unitFlags, + ffi.Pointer startingDateComp, + ffi.Pointer resultDateComp, + int options, ) { return __objc_msgSend_723( obj, sel, - partialStringPtr, - proposedSelRangePtr, - origString, - origSelRange, - error, + unitFlags, + startingDateComp, + resultDateComp, + options, ); } late final __objc_msgSend_723Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_NSRange>, + ffi.Int32, ffi.Pointer, - _NSRange, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_723 = __objc_msgSend_723Ptr.asFunction< - bool Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_NSRange>, + int, ffi.Pointer, - _NSRange, - ffi.Pointer>)>(); + ffi.Pointer, + int)>(); - late final _sel_formattingContext1 = _registerName1("formattingContext"); - int _objc_msgSend_724( + late final _sel_dateByAddingUnit_value_toDate_options_1 = + _registerName1("dateByAddingUnit:value:toDate:options:"); + ffi.Pointer _objc_msgSend_724( ffi.Pointer obj, ffi.Pointer sel, + int unit, + int value, + ffi.Pointer date, + int options, ) { return __objc_msgSend_724( obj, sel, + unit, + value, + date, + options, ); } late final __objc_msgSend_724Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Long, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_724 = __objc_msgSend_724Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, int, ffi.Pointer, int)>(); - late final _sel_setFormattingContext_1 = - _registerName1("setFormattingContext:"); + late final _sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_1 = + _registerName1( + "enumerateDatesStartingAfterDate:matchingComponents:options:usingBlock:"); void _objc_msgSend_725( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer start, + ffi.Pointer comps, + int opts, + ffi.Pointer<_ObjCBlock> block, ) { return __objc_msgSend_725( obj, sel, - value, + start, + comps, + opts, + block, ); } late final __objc_msgSend_725Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_725 = __objc_msgSend_725Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_getObjectValue_forString_range_error_1 = - _registerName1("getObjectValue:forString:range:error:"); - bool _objc_msgSend_726( + late final _sel_nextDateAfterDate_matchingComponents_options_1 = + _registerName1("nextDateAfterDate:matchingComponents:options:"); + ffi.Pointer _objc_msgSend_726( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer> obj1, - ffi.Pointer string, - ffi.Pointer<_NSRange> rangep, - ffi.Pointer> error, + ffi.Pointer date, + ffi.Pointer comps, + int options, ) { return __objc_msgSend_726( obj, sel, - obj1, - string, - rangep, - error, + date, + comps, + options, ); } late final __objc_msgSend_726Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer>, ffi.Pointer, - ffi.Pointer<_NSRange>, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_726 = __objc_msgSend_726Ptr.asFunction< - bool Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer>, ffi.Pointer, - ffi.Pointer<_NSRange>, - ffi.Pointer>)>(); + ffi.Pointer, + int)>(); - late final _sel_stringFromDate_1 = _registerName1("stringFromDate:"); - late final _sel_dateFromString_1 = _registerName1("dateFromString:"); - late final _sel_localizedStringFromDate_dateStyle_timeStyle_1 = - _registerName1("localizedStringFromDate:dateStyle:timeStyle:"); + late final _sel_nextDateAfterDate_matchingUnit_value_options_1 = + _registerName1("nextDateAfterDate:matchingUnit:value:options:"); ffi.Pointer _objc_msgSend_727( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer date, - int dstyle, - int tstyle, + int unit, + int value, + int options, ) { return __objc_msgSend_727( obj, sel, date, - dstyle, - tstyle, + unit, + value, + options, ); } @@ -20428,26 +20706,31 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Int32, + ffi.Long, ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_727 = __objc_msgSend_727Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, int)>(); + ffi.Pointer, ffi.Pointer, int, int, int)>(); - late final _sel_dateFormatFromTemplate_options_locale_1 = - _registerName1("dateFormatFromTemplate:options:locale:"); + late final _sel_nextDateAfterDate_matchingHour_minute_second_options_1 = + _registerName1("nextDateAfterDate:matchingHour:minute:second:options:"); ffi.Pointer _objc_msgSend_728( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer tmplate, - int opts, - ffi.Pointer locale, + ffi.Pointer date, + int hourValue, + int minuteValue, + int secondValue, + int options, ) { return __objc_msgSend_728( obj, sel, - tmplate, - opts, - locale, + date, + hourValue, + minuteValue, + secondValue, + options, ); } @@ -20457,869 +20740,862 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer)>>('objc_msgSend'); + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_728 = __objc_msgSend_728Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, int, int, int)>(); - late final _sel_defaultFormatterBehavior1 = - _registerName1("defaultFormatterBehavior"); - int _objc_msgSend_729( + late final _sel_dateBySettingUnit_value_ofDate_options_1 = + _registerName1("dateBySettingUnit:value:ofDate:options:"); + late final _sel_dateBySettingHour_minute_second_ofDate_options_1 = + _registerName1("dateBySettingHour:minute:second:ofDate:options:"); + ffi.Pointer _objc_msgSend_729( ffi.Pointer obj, ffi.Pointer sel, + int h, + int m, + int s, + ffi.Pointer date, + int opts, ) { return __objc_msgSend_729( obj, sel, + h, + m, + s, + date, + opts, ); } late final __objc_msgSend_729Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Long, + ffi.Long, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_729 = __objc_msgSend_729Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, int, int, ffi.Pointer, int)>(); - late final _sel_setDefaultFormatterBehavior_1 = - _registerName1("setDefaultFormatterBehavior:"); - void _objc_msgSend_730( + late final _sel_date_matchesComponents_1 = + _registerName1("date:matchesComponents:"); + bool _objc_msgSend_730( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer date, + ffi.Pointer components, ) { return __objc_msgSend_730( obj, sel, - value, + date, + components, ); } late final __objc_msgSend_730Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_730 = __objc_msgSend_730Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setLocalizedDateFormatFromTemplate_1 = - _registerName1("setLocalizedDateFormatFromTemplate:"); - late final _sel_dateFormat1 = _registerName1("dateFormat"); - late final _sel_setDateFormat_1 = _registerName1("setDateFormat:"); - late final _sel_dateStyle1 = _registerName1("dateStyle"); - int _objc_msgSend_731( + late final _sel_isLenient1 = _registerName1("isLenient"); + late final _sel_setLenient_1 = _registerName1("setLenient:"); + late final _sel_twoDigitStartDate1 = _registerName1("twoDigitStartDate"); + late final _sel_setTwoDigitStartDate_1 = + _registerName1("setTwoDigitStartDate:"); + late final _sel_defaultDate1 = _registerName1("defaultDate"); + late final _sel_setDefaultDate_1 = _registerName1("setDefaultDate:"); + late final _sel_setEraSymbols_1 = _registerName1("setEraSymbols:"); + void _objc_msgSend_731( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer value, ) { return __objc_msgSend_731( obj, sel, + value, ); } late final __objc_msgSend_731Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_731 = __objc_msgSend_731Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_setDateStyle_1 = _registerName1("setDateStyle:"); - void _objc_msgSend_732( + late final _sel_setMonthSymbols_1 = _registerName1("setMonthSymbols:"); + late final _sel_setShortMonthSymbols_1 = + _registerName1("setShortMonthSymbols:"); + late final _sel_setWeekdaySymbols_1 = _registerName1("setWeekdaySymbols:"); + late final _sel_setShortWeekdaySymbols_1 = + _registerName1("setShortWeekdaySymbols:"); + late final _sel_setAMSymbol_1 = _registerName1("setAMSymbol:"); + late final _sel_setPMSymbol_1 = _registerName1("setPMSymbol:"); + late final _sel_setLongEraSymbols_1 = _registerName1("setLongEraSymbols:"); + late final _sel_setVeryShortMonthSymbols_1 = + _registerName1("setVeryShortMonthSymbols:"); + late final _sel_setStandaloneMonthSymbols_1 = + _registerName1("setStandaloneMonthSymbols:"); + late final _sel_setShortStandaloneMonthSymbols_1 = + _registerName1("setShortStandaloneMonthSymbols:"); + late final _sel_setVeryShortStandaloneMonthSymbols_1 = + _registerName1("setVeryShortStandaloneMonthSymbols:"); + late final _sel_setVeryShortWeekdaySymbols_1 = + _registerName1("setVeryShortWeekdaySymbols:"); + late final _sel_setStandaloneWeekdaySymbols_1 = + _registerName1("setStandaloneWeekdaySymbols:"); + late final _sel_setShortStandaloneWeekdaySymbols_1 = + _registerName1("setShortStandaloneWeekdaySymbols:"); + late final _sel_setVeryShortStandaloneWeekdaySymbols_1 = + _registerName1("setVeryShortStandaloneWeekdaySymbols:"); + late final _sel_setQuarterSymbols_1 = _registerName1("setQuarterSymbols:"); + late final _sel_setShortQuarterSymbols_1 = + _registerName1("setShortQuarterSymbols:"); + late final _sel_setStandaloneQuarterSymbols_1 = + _registerName1("setStandaloneQuarterSymbols:"); + late final _sel_setShortStandaloneQuarterSymbols_1 = + _registerName1("setShortStandaloneQuarterSymbols:"); + late final _sel_gregorianStartDate1 = _registerName1("gregorianStartDate"); + late final _sel_setGregorianStartDate_1 = + _registerName1("setGregorianStartDate:"); + late final _sel_doesRelativeDateFormatting1 = + _registerName1("doesRelativeDateFormatting"); + late final _sel_setDoesRelativeDateFormatting_1 = + _registerName1("setDoesRelativeDateFormatting:"); + late final _sel_initWithDateFormat_allowNaturalLanguage_1 = + _registerName1("initWithDateFormat:allowNaturalLanguage:"); + late final _sel_allowsNaturalLanguage1 = + _registerName1("allowsNaturalLanguage"); + late final _class_NSNumberFormatter1 = _getClass1("NSNumberFormatter"); + late final _sel_stringFromNumber_1 = _registerName1("stringFromNumber:"); + ffi.Pointer _objc_msgSend_732( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer number, ) { return __objc_msgSend_732( obj, sel, - value, + number, ); } late final __objc_msgSend_732Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_732 = __objc_msgSend_732Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_timeStyle1 = _registerName1("timeStyle"); - late final _sel_setTimeStyle_1 = _registerName1("setTimeStyle:"); - late final _sel_locale1 = _registerName1("locale"); - late final _sel_setLocale_1 = _registerName1("setLocale:"); - void _objc_msgSend_733( + late final _sel_numberFromString_1 = _registerName1("numberFromString:"); + ffi.Pointer _objc_msgSend_733( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer string, ) { return __objc_msgSend_733( obj, sel, - value, + string, ); } late final __objc_msgSend_733Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_733 = __objc_msgSend_733Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_generatesCalendarDates1 = - _registerName1("generatesCalendarDates"); - late final _sel_setGeneratesCalendarDates_1 = - _registerName1("setGeneratesCalendarDates:"); - late final _sel_formatterBehavior1 = _registerName1("formatterBehavior"); - late final _sel_setFormatterBehavior_1 = - _registerName1("setFormatterBehavior:"); - late final _class_NSCalendar1 = _getClass1("NSCalendar"); - late final _sel_currentCalendar1 = _registerName1("currentCalendar"); + late final _sel_localizedStringFromNumber_numberStyle_1 = + _registerName1("localizedStringFromNumber:numberStyle:"); ffi.Pointer _objc_msgSend_734( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer num, + int nstyle, ) { return __objc_msgSend_734( obj, sel, + num, + nstyle, ); } late final __objc_msgSend_734Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_734 = __objc_msgSend_734Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_autoupdatingCurrentCalendar1 = - _registerName1("autoupdatingCurrentCalendar"); - late final _sel_calendarWithIdentifier_1 = - _registerName1("calendarWithIdentifier:"); - ffi.Pointer _objc_msgSend_735( + int _objc_msgSend_735( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer calendarIdentifierConstant, ) { return __objc_msgSend_735( obj, sel, - calendarIdentifierConstant, ); } late final __objc_msgSend_735Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_735 = __objc_msgSend_735Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_initWithCalendarIdentifier_1 = - _registerName1("initWithCalendarIdentifier:"); - late final _sel_firstWeekday1 = _registerName1("firstWeekday"); - late final _sel_setFirstWeekday_1 = _registerName1("setFirstWeekday:"); - late final _sel_minimumDaysInFirstWeek1 = - _registerName1("minimumDaysInFirstWeek"); - late final _sel_setMinimumDaysInFirstWeek_1 = - _registerName1("setMinimumDaysInFirstWeek:"); - late final _sel_eraSymbols1 = _registerName1("eraSymbols"); - late final _sel_longEraSymbols1 = _registerName1("longEraSymbols"); - late final _sel_monthSymbols1 = _registerName1("monthSymbols"); - late final _sel_shortMonthSymbols1 = _registerName1("shortMonthSymbols"); - late final _sel_veryShortMonthSymbols1 = - _registerName1("veryShortMonthSymbols"); - late final _sel_standaloneMonthSymbols1 = - _registerName1("standaloneMonthSymbols"); - late final _sel_shortStandaloneMonthSymbols1 = - _registerName1("shortStandaloneMonthSymbols"); - late final _sel_veryShortStandaloneMonthSymbols1 = - _registerName1("veryShortStandaloneMonthSymbols"); - late final _sel_weekdaySymbols1 = _registerName1("weekdaySymbols"); - late final _sel_shortWeekdaySymbols1 = _registerName1("shortWeekdaySymbols"); - late final _sel_veryShortWeekdaySymbols1 = - _registerName1("veryShortWeekdaySymbols"); - late final _sel_standaloneWeekdaySymbols1 = - _registerName1("standaloneWeekdaySymbols"); - late final _sel_shortStandaloneWeekdaySymbols1 = - _registerName1("shortStandaloneWeekdaySymbols"); - late final _sel_veryShortStandaloneWeekdaySymbols1 = - _registerName1("veryShortStandaloneWeekdaySymbols"); - late final _sel_quarterSymbols1 = _registerName1("quarterSymbols"); - late final _sel_shortQuarterSymbols1 = _registerName1("shortQuarterSymbols"); - late final _sel_standaloneQuarterSymbols1 = - _registerName1("standaloneQuarterSymbols"); - late final _sel_shortStandaloneQuarterSymbols1 = - _registerName1("shortStandaloneQuarterSymbols"); - late final _sel_AMSymbol1 = _registerName1("AMSymbol"); - late final _sel_PMSymbol1 = _registerName1("PMSymbol"); - late final _sel_minimumRangeOfUnit_1 = _registerName1("minimumRangeOfUnit:"); void _objc_msgSend_736( - ffi.Pointer<_NSRange> stret, ffi.Pointer obj, ffi.Pointer sel, - int unit, + int behavior, ) { return __objc_msgSend_736( - stret, obj, sel, - unit, + behavior, ); } late final __objc_msgSend_736Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend_stret'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_736 = __objc_msgSend_736Ptr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_maximumRangeOfUnit_1 = _registerName1("maximumRangeOfUnit:"); - late final _sel_rangeOfUnit_inUnit_forDate_1 = - _registerName1("rangeOfUnit:inUnit:forDate:"); - void _objc_msgSend_737( - ffi.Pointer<_NSRange> stret, + late final _sel_numberStyle1 = _registerName1("numberStyle"); + int _objc_msgSend_737( ffi.Pointer obj, ffi.Pointer sel, - int smaller, - int larger, - ffi.Pointer date, ) { return __objc_msgSend_737( - stret, obj, sel, - smaller, - larger, - date, ); } late final __objc_msgSend_737Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend_stret'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_737 = __objc_msgSend_737Ptr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_ordinalityOfUnit_inUnit_forDate_1 = - _registerName1("ordinalityOfUnit:inUnit:forDate:"); - int _objc_msgSend_738( + late final _sel_setNumberStyle_1 = _registerName1("setNumberStyle:"); + void _objc_msgSend_738( ffi.Pointer obj, ffi.Pointer sel, - int smaller, - int larger, - ffi.Pointer date, + int value, ) { return __objc_msgSend_738( obj, sel, - smaller, - larger, - date, + value, ); } late final __objc_msgSend_738Ptr = _lookup< ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_738 = __objc_msgSend_738Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int, int, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_rangeOfUnit_startDate_interval_forDate_1 = - _registerName1("rangeOfUnit:startDate:interval:forDate:"); - bool _objc_msgSend_739( + late final _sel_generatesDecimalNumbers1 = + _registerName1("generatesDecimalNumbers"); + late final _sel_setGeneratesDecimalNumbers_1 = + _registerName1("setGeneratesDecimalNumbers:"); + void _objc_msgSend_739( ffi.Pointer obj, ffi.Pointer sel, - int unit, - ffi.Pointer> datep, - ffi.Pointer tip, - ffi.Pointer date, + int value, ) { return __objc_msgSend_739( obj, sel, - unit, - datep, - tip, - date, + value, ); } late final __objc_msgSend_739Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_739 = __objc_msgSend_739Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _class_NSDateComponents1 = _getClass1("NSDateComponents"); - late final _sel_calendar1 = _registerName1("calendar"); - late final _sel_setCalendar_1 = _registerName1("setCalendar:"); - void _objc_msgSend_740( + late final _sel_negativeFormat1 = _registerName1("negativeFormat"); + late final _sel_setNegativeFormat_1 = _registerName1("setNegativeFormat:"); + late final _sel_textAttributesForNegativeValues1 = + _registerName1("textAttributesForNegativeValues"); + late final _sel_setTextAttributesForNegativeValues_1 = + _registerName1("setTextAttributesForNegativeValues:"); + late final _sel_positiveFormat1 = _registerName1("positiveFormat"); + late final _sel_setPositiveFormat_1 = _registerName1("setPositiveFormat:"); + late final _sel_textAttributesForPositiveValues1 = + _registerName1("textAttributesForPositiveValues"); + late final _sel_setTextAttributesForPositiveValues_1 = + _registerName1("setTextAttributesForPositiveValues:"); + late final _sel_allowsFloats1 = _registerName1("allowsFloats"); + late final _sel_setAllowsFloats_1 = _registerName1("setAllowsFloats:"); + late final _sel_setDecimalSeparator_1 = + _registerName1("setDecimalSeparator:"); + late final _sel_alwaysShowsDecimalSeparator1 = + _registerName1("alwaysShowsDecimalSeparator"); + late final _sel_setAlwaysShowsDecimalSeparator_1 = + _registerName1("setAlwaysShowsDecimalSeparator:"); + late final _sel_currencyDecimalSeparator1 = + _registerName1("currencyDecimalSeparator"); + late final _sel_setCurrencyDecimalSeparator_1 = + _registerName1("setCurrencyDecimalSeparator:"); + late final _sel_usesGroupingSeparator1 = + _registerName1("usesGroupingSeparator"); + late final _sel_setUsesGroupingSeparator_1 = + _registerName1("setUsesGroupingSeparator:"); + late final _sel_setGroupingSeparator_1 = + _registerName1("setGroupingSeparator:"); + late final _sel_zeroSymbol1 = _registerName1("zeroSymbol"); + late final _sel_setZeroSymbol_1 = _registerName1("setZeroSymbol:"); + late final _sel_textAttributesForZero1 = + _registerName1("textAttributesForZero"); + late final _sel_setTextAttributesForZero_1 = + _registerName1("setTextAttributesForZero:"); + late final _sel_nilSymbol1 = _registerName1("nilSymbol"); + late final _sel_setNilSymbol_1 = _registerName1("setNilSymbol:"); + late final _sel_textAttributesForNil1 = + _registerName1("textAttributesForNil"); + late final _sel_setTextAttributesForNil_1 = + _registerName1("setTextAttributesForNil:"); + late final _sel_notANumberSymbol1 = _registerName1("notANumberSymbol"); + late final _sel_setNotANumberSymbol_1 = + _registerName1("setNotANumberSymbol:"); + late final _sel_textAttributesForNotANumber1 = + _registerName1("textAttributesForNotANumber"); + late final _sel_setTextAttributesForNotANumber_1 = + _registerName1("setTextAttributesForNotANumber:"); + late final _sel_positiveInfinitySymbol1 = + _registerName1("positiveInfinitySymbol"); + late final _sel_setPositiveInfinitySymbol_1 = + _registerName1("setPositiveInfinitySymbol:"); + late final _sel_textAttributesForPositiveInfinity1 = + _registerName1("textAttributesForPositiveInfinity"); + late final _sel_setTextAttributesForPositiveInfinity_1 = + _registerName1("setTextAttributesForPositiveInfinity:"); + late final _sel_negativeInfinitySymbol1 = + _registerName1("negativeInfinitySymbol"); + late final _sel_setNegativeInfinitySymbol_1 = + _registerName1("setNegativeInfinitySymbol:"); + late final _sel_textAttributesForNegativeInfinity1 = + _registerName1("textAttributesForNegativeInfinity"); + late final _sel_setTextAttributesForNegativeInfinity_1 = + _registerName1("setTextAttributesForNegativeInfinity:"); + late final _sel_positivePrefix1 = _registerName1("positivePrefix"); + late final _sel_setPositivePrefix_1 = _registerName1("setPositivePrefix:"); + late final _sel_positiveSuffix1 = _registerName1("positiveSuffix"); + late final _sel_setPositiveSuffix_1 = _registerName1("setPositiveSuffix:"); + late final _sel_negativePrefix1 = _registerName1("negativePrefix"); + late final _sel_setNegativePrefix_1 = _registerName1("setNegativePrefix:"); + late final _sel_negativeSuffix1 = _registerName1("negativeSuffix"); + late final _sel_setNegativeSuffix_1 = _registerName1("setNegativeSuffix:"); + late final _sel_setCurrencyCode_1 = _registerName1("setCurrencyCode:"); + late final _sel_setCurrencySymbol_1 = _registerName1("setCurrencySymbol:"); + late final _sel_internationalCurrencySymbol1 = + _registerName1("internationalCurrencySymbol"); + late final _sel_setInternationalCurrencySymbol_1 = + _registerName1("setInternationalCurrencySymbol:"); + late final _sel_percentSymbol1 = _registerName1("percentSymbol"); + late final _sel_setPercentSymbol_1 = _registerName1("setPercentSymbol:"); + late final _sel_perMillSymbol1 = _registerName1("perMillSymbol"); + late final _sel_setPerMillSymbol_1 = _registerName1("setPerMillSymbol:"); + late final _sel_minusSign1 = _registerName1("minusSign"); + late final _sel_setMinusSign_1 = _registerName1("setMinusSign:"); + late final _sel_plusSign1 = _registerName1("plusSign"); + late final _sel_setPlusSign_1 = _registerName1("setPlusSign:"); + late final _sel_exponentSymbol1 = _registerName1("exponentSymbol"); + late final _sel_setExponentSymbol_1 = _registerName1("setExponentSymbol:"); + late final _sel_groupingSize1 = _registerName1("groupingSize"); + late final _sel_setGroupingSize_1 = _registerName1("setGroupingSize:"); + late final _sel_secondaryGroupingSize1 = + _registerName1("secondaryGroupingSize"); + late final _sel_setSecondaryGroupingSize_1 = + _registerName1("setSecondaryGroupingSize:"); + late final _sel_multiplier1 = _registerName1("multiplier"); + late final _sel_setMultiplier_1 = _registerName1("setMultiplier:"); + late final _sel_formatWidth1 = _registerName1("formatWidth"); + late final _sel_setFormatWidth_1 = _registerName1("setFormatWidth:"); + late final _sel_paddingCharacter1 = _registerName1("paddingCharacter"); + late final _sel_setPaddingCharacter_1 = + _registerName1("setPaddingCharacter:"); + late final _sel_paddingPosition1 = _registerName1("paddingPosition"); + int _objc_msgSend_740( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, ) { return __objc_msgSend_740( obj, sel, - value, ); } late final __objc_msgSend_740Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_740 = __objc_msgSend_740Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_era1 = _registerName1("era"); - late final _sel_setEra_1 = _registerName1("setEra:"); - late final _sel_year1 = _registerName1("year"); - late final _sel_setYear_1 = _registerName1("setYear:"); - late final _sel_month1 = _registerName1("month"); - late final _sel_setMonth_1 = _registerName1("setMonth:"); - late final _sel_day1 = _registerName1("day"); - late final _sel_setDay_1 = _registerName1("setDay:"); - late final _sel_hour1 = _registerName1("hour"); - late final _sel_setHour_1 = _registerName1("setHour:"); - late final _sel_minute1 = _registerName1("minute"); - late final _sel_setMinute_1 = _registerName1("setMinute:"); - late final _sel_second1 = _registerName1("second"); - late final _sel_setSecond_1 = _registerName1("setSecond:"); - late final _sel_nanosecond1 = _registerName1("nanosecond"); - late final _sel_setNanosecond_1 = _registerName1("setNanosecond:"); - late final _sel_weekday1 = _registerName1("weekday"); - late final _sel_setWeekday_1 = _registerName1("setWeekday:"); - late final _sel_weekdayOrdinal1 = _registerName1("weekdayOrdinal"); - late final _sel_setWeekdayOrdinal_1 = _registerName1("setWeekdayOrdinal:"); - late final _sel_quarter1 = _registerName1("quarter"); - late final _sel_setQuarter_1 = _registerName1("setQuarter:"); - late final _sel_weekOfMonth1 = _registerName1("weekOfMonth"); - late final _sel_setWeekOfMonth_1 = _registerName1("setWeekOfMonth:"); - late final _sel_weekOfYear1 = _registerName1("weekOfYear"); - late final _sel_setWeekOfYear_1 = _registerName1("setWeekOfYear:"); - late final _sel_yearForWeekOfYear1 = _registerName1("yearForWeekOfYear"); - late final _sel_setYearForWeekOfYear_1 = - _registerName1("setYearForWeekOfYear:"); - late final _sel_isLeapMonth1 = _registerName1("isLeapMonth"); - late final _sel_setLeapMonth_1 = _registerName1("setLeapMonth:"); - late final _sel_week1 = _registerName1("week"); - late final _sel_setWeek_1 = _registerName1("setWeek:"); - late final _sel_setValue_forComponent_1 = - _registerName1("setValue:forComponent:"); + late final _sel_setPaddingPosition_1 = _registerName1("setPaddingPosition:"); void _objc_msgSend_741( ffi.Pointer obj, ffi.Pointer sel, int value, - int unit, ) { return __objc_msgSend_741( obj, sel, value, - unit, ); } late final __objc_msgSend_741Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Long, ffi.Int32)>>('objc_msgSend'); + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_741 = __objc_msgSend_741Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, int)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_valueForComponent_1 = _registerName1("valueForComponent:"); + late final _sel_roundingMode1 = _registerName1("roundingMode"); int _objc_msgSend_742( ffi.Pointer obj, ffi.Pointer sel, - int unit, ) { return __objc_msgSend_742( obj, sel, - unit, ); } late final __objc_msgSend_742Ptr = _lookup< ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_742 = __objc_msgSend_742Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_isValidDate1 = _registerName1("isValidDate"); - late final _sel_isValidDateInCalendar_1 = - _registerName1("isValidDateInCalendar:"); - bool _objc_msgSend_743( + late final _sel_setRoundingMode_1 = _registerName1("setRoundingMode:"); + void _objc_msgSend_743( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer calendar, + int value, ) { return __objc_msgSend_743( obj, sel, - calendar, + value, ); } late final __objc_msgSend_743Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_743 = __objc_msgSend_743Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_dateFromComponents_1 = _registerName1("dateFromComponents:"); - ffi.Pointer _objc_msgSend_744( + late final _sel_roundingIncrement1 = _registerName1("roundingIncrement"); + late final _sel_setRoundingIncrement_1 = + _registerName1("setRoundingIncrement:"); + late final _sel_minimumIntegerDigits1 = + _registerName1("minimumIntegerDigits"); + late final _sel_setMinimumIntegerDigits_1 = + _registerName1("setMinimumIntegerDigits:"); + late final _sel_maximumIntegerDigits1 = + _registerName1("maximumIntegerDigits"); + late final _sel_setMaximumIntegerDigits_1 = + _registerName1("setMaximumIntegerDigits:"); + late final _sel_minimumFractionDigits1 = + _registerName1("minimumFractionDigits"); + late final _sel_setMinimumFractionDigits_1 = + _registerName1("setMinimumFractionDigits:"); + late final _sel_maximumFractionDigits1 = + _registerName1("maximumFractionDigits"); + late final _sel_setMaximumFractionDigits_1 = + _registerName1("setMaximumFractionDigits:"); + late final _sel_minimum1 = _registerName1("minimum"); + late final _sel_setMinimum_1 = _registerName1("setMinimum:"); + late final _sel_maximum1 = _registerName1("maximum"); + late final _sel_setMaximum_1 = _registerName1("setMaximum:"); + late final _sel_currencyGroupingSeparator1 = + _registerName1("currencyGroupingSeparator"); + late final _sel_setCurrencyGroupingSeparator_1 = + _registerName1("setCurrencyGroupingSeparator:"); + late final _sel_usesSignificantDigits1 = + _registerName1("usesSignificantDigits"); + late final _sel_setUsesSignificantDigits_1 = + _registerName1("setUsesSignificantDigits:"); + late final _sel_minimumSignificantDigits1 = + _registerName1("minimumSignificantDigits"); + late final _sel_setMinimumSignificantDigits_1 = + _registerName1("setMinimumSignificantDigits:"); + late final _sel_maximumSignificantDigits1 = + _registerName1("maximumSignificantDigits"); + late final _sel_setMaximumSignificantDigits_1 = + _registerName1("setMaximumSignificantDigits:"); + late final _sel_isPartialStringValidationEnabled1 = + _registerName1("isPartialStringValidationEnabled"); + late final _sel_setPartialStringValidationEnabled_1 = + _registerName1("setPartialStringValidationEnabled:"); + late final _sel_hasThousandSeparators1 = + _registerName1("hasThousandSeparators"); + late final _sel_setHasThousandSeparators_1 = + _registerName1("setHasThousandSeparators:"); + late final _sel_thousandSeparator1 = _registerName1("thousandSeparator"); + late final _sel_setThousandSeparator_1 = + _registerName1("setThousandSeparator:"); + late final _sel_localizesFormat1 = _registerName1("localizesFormat"); + late final _sel_setLocalizesFormat_1 = _registerName1("setLocalizesFormat:"); + late final _sel_format1 = _registerName1("format"); + late final _sel_setFormat_1 = _registerName1("setFormat:"); + late final _sel_attributedStringForZero1 = + _registerName1("attributedStringForZero"); + late final _sel_setAttributedStringForZero_1 = + _registerName1("setAttributedStringForZero:"); + void _objc_msgSend_744( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer comps, + ffi.Pointer value, ) { return __objc_msgSend_744( obj, sel, - comps, + value, ); } late final __objc_msgSend_744Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_744 = __objc_msgSend_744Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_components_fromDate_1 = - _registerName1("components:fromDate:"); + late final _sel_attributedStringForNil1 = + _registerName1("attributedStringForNil"); + late final _sel_setAttributedStringForNil_1 = + _registerName1("setAttributedStringForNil:"); + late final _sel_attributedStringForNotANumber1 = + _registerName1("attributedStringForNotANumber"); + late final _sel_setAttributedStringForNotANumber_1 = + _registerName1("setAttributedStringForNotANumber:"); + late final _class_NSDecimalNumberHandler1 = + _getClass1("NSDecimalNumberHandler"); + late final _sel_defaultDecimalNumberHandler1 = + _registerName1("defaultDecimalNumberHandler"); ffi.Pointer _objc_msgSend_745( ffi.Pointer obj, ffi.Pointer sel, - int unitFlags, - ffi.Pointer date, ) { return __objc_msgSend_745( obj, sel, - unitFlags, - date, ); } late final __objc_msgSend_745Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_745 = __objc_msgSend_745Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_dateByAddingComponents_toDate_options_1 = - _registerName1("dateByAddingComponents:toDate:options:"); - ffi.Pointer _objc_msgSend_746( + late final _sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1 = + _registerName1( + "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); + instancetype _objc_msgSend_746( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer comps, - ffi.Pointer date, - int opts, + int roundingMode, + int scale, + bool exact, + bool overflow, + bool underflow, + bool divideByZero, ) { return __objc_msgSend_746( obj, sel, - comps, - date, - opts, + roundingMode, + scale, + exact, + overflow, + underflow, + divideByZero, ); } late final __objc_msgSend_746Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + instancetype Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Int32, + ffi.Short, + ffi.Bool, + ffi.Bool, + ffi.Bool, + ffi.Bool)>>('objc_msgSend'); late final __objc_msgSend_746 = __objc_msgSend_746Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, int, + int, bool, bool, bool, bool)>(); - late final _sel_components_fromDate_toDate_options_1 = - _registerName1("components:fromDate:toDate:options:"); - ffi.Pointer _objc_msgSend_747( + late final _sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1 = + _registerName1( + "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); + late final _sel_roundingBehavior1 = _registerName1("roundingBehavior"); + late final _sel_setRoundingBehavior_1 = + _registerName1("setRoundingBehavior:"); + void _objc_msgSend_747( ffi.Pointer obj, ffi.Pointer sel, - int unitFlags, - ffi.Pointer startingDate, - ffi.Pointer resultDate, - int opts, + ffi.Pointer value, ) { return __objc_msgSend_747( obj, sel, - unitFlags, - startingDate, - resultDate, - opts, + value, ); } late final __objc_msgSend_747Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_747 = __objc_msgSend_747Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_getEra_year_month_day_fromDate_1 = - _registerName1("getEra:year:month:day:fromDate:"); + late final _class_NSScanner1 = _getClass1("NSScanner"); + late final _sel_scanLocation1 = _registerName1("scanLocation"); + late final _sel_setScanLocation_1 = _registerName1("setScanLocation:"); + late final _sel_charactersToBeSkipped1 = + _registerName1("charactersToBeSkipped"); + late final _sel_setCharactersToBeSkipped_1 = + _registerName1("setCharactersToBeSkipped:"); void _objc_msgSend_748( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer eraValuePointer, - ffi.Pointer yearValuePointer, - ffi.Pointer monthValuePointer, - ffi.Pointer dayValuePointer, - ffi.Pointer date, + ffi.Pointer value, ) { return __objc_msgSend_748( obj, sel, - eraValuePointer, - yearValuePointer, - monthValuePointer, - dayValuePointer, - date, + value, ); } late final __objc_msgSend_748Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_748 = __objc_msgSend_748Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); - late final _sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_1 = - _registerName1("getEra:yearForWeekOfYear:weekOfYear:weekday:fromDate:"); - late final _sel_getHour_minute_second_nanosecond_fromDate_1 = - _registerName1("getHour:minute:second:nanosecond:fromDate:"); - late final _sel_component_fromDate_1 = _registerName1("component:fromDate:"); - int _objc_msgSend_749( + late final _sel_caseSensitive1 = _registerName1("caseSensitive"); + late final _sel_setCaseSensitive_1 = _registerName1("setCaseSensitive:"); + late final _sel_scanInt_1 = _registerName1("scanInt:"); + bool _objc_msgSend_749( ffi.Pointer obj, ffi.Pointer sel, - int unit, - ffi.Pointer date, + ffi.Pointer result, ) { return __objc_msgSend_749( obj, sel, - unit, - date, + result, ); } late final __objc_msgSend_749Ptr = _lookup< ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_749 = __objc_msgSend_749Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_1 = - _registerName1( - "dateWithEra:year:month:day:hour:minute:second:nanosecond:"); - ffi.Pointer _objc_msgSend_750( + late final _sel_scanInteger_1 = _registerName1("scanInteger:"); + bool _objc_msgSend_750( ffi.Pointer obj, ffi.Pointer sel, - int eraValue, - int yearValue, - int monthValue, - int dayValue, - int hourValue, - int minuteValue, - int secondValue, - int nanosecondValue, + ffi.Pointer result, ) { return __objc_msgSend_750( obj, sel, - eraValue, - yearValue, - monthValue, - dayValue, - hourValue, - minuteValue, - secondValue, - nanosecondValue, + result, ); } late final __objc_msgSend_750Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Long)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_750 = __objc_msgSend_750Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, int, int, int, int, int, int)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_1 = - _registerName1( - "dateWithEra:yearForWeekOfYear:weekOfYear:weekday:hour:minute:second:nanosecond:"); - late final _sel_startOfDayForDate_1 = _registerName1("startOfDayForDate:"); - late final _sel_componentsInTimeZone_fromDate_1 = - _registerName1("componentsInTimeZone:fromDate:"); - ffi.Pointer _objc_msgSend_751( + late final _sel_scanLongLong_1 = _registerName1("scanLongLong:"); + bool _objc_msgSend_751( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer timezone, - ffi.Pointer date, + ffi.Pointer result, ) { return __objc_msgSend_751( obj, sel, - timezone, - date, + result, ); } late final __objc_msgSend_751Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_751 = __objc_msgSend_751Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_compareDate_toDate_toUnitGranularity_1 = - _registerName1("compareDate:toDate:toUnitGranularity:"); - int _objc_msgSend_752( + late final _sel_scanUnsignedLongLong_1 = + _registerName1("scanUnsignedLongLong:"); + bool _objc_msgSend_752( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer date1, - ffi.Pointer date2, - int unit, + ffi.Pointer result, ) { return __objc_msgSend_752( obj, sel, - date1, - date2, - unit, + result, ); } late final __objc_msgSend_752Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_752 = __objc_msgSend_752Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_isDate_equalToDate_toUnitGranularity_1 = - _registerName1("isDate:equalToDate:toUnitGranularity:"); + late final _sel_scanFloat_1 = _registerName1("scanFloat:"); bool _objc_msgSend_753( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer date1, - ffi.Pointer date2, - int unit, + ffi.Pointer result, ) { return __objc_msgSend_753( obj, sel, - date1, - date2, - unit, + result, ); } late final __objc_msgSend_753Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_753 = __objc_msgSend_753Ptr.asFunction< bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer)>(); - late final _sel_isDate_inSameDayAsDate_1 = - _registerName1("isDate:inSameDayAsDate:"); + late final _sel_scanDouble_1 = _registerName1("scanDouble:"); bool _objc_msgSend_754( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer date1, - ffi.Pointer date2, + ffi.Pointer result, ) { return __objc_msgSend_754( obj, sel, - date1, - date2, + result, ); } late final __objc_msgSend_754Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_754 = __objc_msgSend_754Ptr.asFunction< bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer)>(); - late final _sel_isDateInToday_1 = _registerName1("isDateInToday:"); - late final _sel_isDateInYesterday_1 = _registerName1("isDateInYesterday:"); - late final _sel_isDateInTomorrow_1 = _registerName1("isDateInTomorrow:"); - late final _sel_isDateInWeekend_1 = _registerName1("isDateInWeekend:"); - late final _sel_rangeOfWeekendStartDate_interval_containingDate_1 = - _registerName1("rangeOfWeekendStartDate:interval:containingDate:"); + late final _sel_scanHexInt_1 = _registerName1("scanHexInt:"); bool _objc_msgSend_755( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer> datep, - ffi.Pointer tip, - ffi.Pointer date, + ffi.Pointer result, ) { return __objc_msgSend_755( obj, sel, - datep, - tip, - date, + result, ); } late final __objc_msgSend_755Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_755 = __objc_msgSend_755Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Pointer)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_nextWeekendStartDate_interval_options_afterDate_1 = - _registerName1("nextWeekendStartDate:interval:options:afterDate:"); + late final _sel_scanHexLongLong_1 = _registerName1("scanHexLongLong:"); + late final _sel_scanHexFloat_1 = _registerName1("scanHexFloat:"); + late final _sel_scanHexDouble_1 = _registerName1("scanHexDouble:"); + late final _sel_scanString_intoString_1 = + _registerName1("scanString:intoString:"); bool _objc_msgSend_756( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer> datep, - ffi.Pointer tip, - int options, - ffi.Pointer date, + ffi.Pointer string, + ffi.Pointer> result, ) { return __objc_msgSend_756( obj, sel, - datep, - tip, - options, - date, + string, + result, ); } @@ -21328,215 +21604,179 @@ class SentryCocoa { ffi.Bool Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_756 = __objc_msgSend_756Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer, - int, - ffi.Pointer)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); - late final _sel_components_fromDateComponents_toDateComponents_options_1 = - _registerName1("components:fromDateComponents:toDateComponents:options:"); - ffi.Pointer _objc_msgSend_757( + late final _sel_scanCharactersFromSet_intoString_1 = + _registerName1("scanCharactersFromSet:intoString:"); + bool _objc_msgSend_757( ffi.Pointer obj, ffi.Pointer sel, - int unitFlags, - ffi.Pointer startingDateComp, - ffi.Pointer resultDateComp, - int options, + ffi.Pointer set1, + ffi.Pointer> result, ) { return __objc_msgSend_757( obj, sel, - unitFlags, - startingDateComp, - resultDateComp, - options, + set1, + result, ); } late final __objc_msgSend_757Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Bool Function( ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_757 = __objc_msgSend_757Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, - int)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); - late final _sel_dateByAddingUnit_value_toDate_options_1 = - _registerName1("dateByAddingUnit:value:toDate:options:"); - ffi.Pointer _objc_msgSend_758( + late final _sel_scanUpToString_intoString_1 = + _registerName1("scanUpToString:intoString:"); + late final _sel_scanUpToCharactersFromSet_intoString_1 = + _registerName1("scanUpToCharactersFromSet:intoString:"); + late final _sel_isAtEnd1 = _registerName1("isAtEnd"); + late final _sel_scannerWithString_1 = _registerName1("scannerWithString:"); + late final _sel_localizedScannerWithString_1 = + _registerName1("localizedScannerWithString:"); + late final _sel_scanDecimal_1 = _registerName1("scanDecimal:"); + bool _objc_msgSend_758( ffi.Pointer obj, ffi.Pointer sel, - int unit, - int value, - ffi.Pointer date, - int options, + ffi.Pointer dcm, ) { return __objc_msgSend_758( obj, sel, - unit, - value, - date, - options, + dcm, ); } late final __objc_msgSend_758Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Long, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_758 = __objc_msgSend_758Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, ffi.Pointer, int)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_1 = - _registerName1( - "enumerateDatesStartingAfterDate:matchingComponents:options:usingBlock:"); - void _objc_msgSend_759( + late final _class_NSException1 = _getClass1("NSException"); + late final _sel_exceptionWithName_reason_userInfo_1 = + _registerName1("exceptionWithName:reason:userInfo:"); + ffi.Pointer _objc_msgSend_759( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer start, - ffi.Pointer comps, - int opts, - ffi.Pointer<_ObjCBlock> block, + ffi.Pointer name, + ffi.Pointer reason, + ffi.Pointer userInfo, ) { return __objc_msgSend_759( obj, sel, - start, - comps, - opts, - block, + name, + reason, + userInfo, ); } late final __objc_msgSend_759Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Int32, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_759 = __objc_msgSend_759Ptr.asFunction< - void Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer, - int, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer)>(); - late final _sel_nextDateAfterDate_matchingComponents_options_1 = - _registerName1("nextDateAfterDate:matchingComponents:options:"); - ffi.Pointer _objc_msgSend_760( + late final _sel_initWithName_reason_userInfo_1 = + _registerName1("initWithName:reason:userInfo:"); + late final _sel_reason1 = _registerName1("reason"); + late final _sel_raise1 = _registerName1("raise"); + late final _sel_raise_format_1 = _registerName1("raise:format:"); + late final _sel_raise_format_arguments_1 = + _registerName1("raise:format:arguments:"); + void _objc_msgSend_760( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer date, - ffi.Pointer comps, - int options, + ffi.Pointer name, + ffi.Pointer format, + ffi.Pointer argList, ) { return __objc_msgSend_760( obj, sel, - date, - comps, - options, + name, + format, + argList, ); } late final __objc_msgSend_760Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_760 = __objc_msgSend_760Ptr.asFunction< - ffi.Pointer Function( + void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer, - int)>(); + ffi.Pointer)>(); - late final _sel_nextDateAfterDate_matchingUnit_value_options_1 = - _registerName1("nextDateAfterDate:matchingUnit:value:options:"); - ffi.Pointer _objc_msgSend_761( + late final _class_NSFileHandle1 = _getClass1("NSFileHandle"); + late final _sel_availableData1 = _registerName1("availableData"); + late final _sel_initWithFileDescriptor_closeOnDealloc_1 = + _registerName1("initWithFileDescriptor:closeOnDealloc:"); + instancetype _objc_msgSend_761( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer date, - int unit, - int value, - int options, + int fd, + bool closeopt, ) { return __objc_msgSend_761( obj, sel, - date, - unit, - value, - options, + fd, + closeopt, ); } late final __objc_msgSend_761Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Long, - ffi.Int32)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Int, ffi.Bool)>>('objc_msgSend'); late final __objc_msgSend_761 = __objc_msgSend_761Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, int, int)>(); + instancetype Function( + ffi.Pointer, ffi.Pointer, int, bool)>(); - late final _sel_nextDateAfterDate_matchingHour_minute_second_options_1 = - _registerName1("nextDateAfterDate:matchingHour:minute:second:options:"); + late final _sel_readDataToEndOfFileAndReturnError_1 = + _registerName1("readDataToEndOfFileAndReturnError:"); ffi.Pointer _objc_msgSend_762( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer date, - int hourValue, - int minuteValue, - int secondValue, - int options, + ffi.Pointer> error, ) { return __objc_msgSend_762( obj, sel, - date, - hourValue, - minuteValue, - secondValue, - options, + error, ); } @@ -21545,36 +21785,24 @@ class SentryCocoa { ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_762 = __objc_msgSend_762Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, int, int, int)>(); + ffi.Pointer, ffi.Pointer>)>(); - late final _sel_dateBySettingUnit_value_ofDate_options_1 = - _registerName1("dateBySettingUnit:value:ofDate:options:"); - late final _sel_dateBySettingHour_minute_second_ofDate_options_1 = - _registerName1("dateBySettingHour:minute:second:ofDate:options:"); + late final _sel_readDataUpToLength_error_1 = + _registerName1("readDataUpToLength:error:"); ffi.Pointer _objc_msgSend_763( ffi.Pointer obj, ffi.Pointer sel, - int h, - int m, - int s, - ffi.Pointer date, - int opts, + int length, + ffi.Pointer> error, ) { return __objc_msgSend_763( obj, sel, - h, - m, - s, - date, - opts, + length, + error, ); } @@ -21583,28 +21811,24 @@ class SentryCocoa { ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.Long, - ffi.Long, - ffi.Long, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.UnsignedLong, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_763 = __objc_msgSend_763Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, int, int, ffi.Pointer, int)>(); + ffi.Pointer, int, ffi.Pointer>)>(); - late final _sel_date_matchesComponents_1 = - _registerName1("date:matchesComponents:"); + late final _sel_writeData_error_1 = _registerName1("writeData:error:"); bool _objc_msgSend_764( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer date, - ffi.Pointer components, + ffi.Pointer data, + ffi.Pointer> error, ) { return __objc_msgSend_764( obj, sel, - date, - components, + data, + error, ); } @@ -21614,153 +21838,155 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_764 = __objc_msgSend_764Ptr.asFunction< bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer, ffi.Pointer>)>(); - late final _sel_isLenient1 = _registerName1("isLenient"); - late final _sel_setLenient_1 = _registerName1("setLenient:"); - late final _sel_twoDigitStartDate1 = _registerName1("twoDigitStartDate"); - late final _sel_setTwoDigitStartDate_1 = - _registerName1("setTwoDigitStartDate:"); - late final _sel_defaultDate1 = _registerName1("defaultDate"); - late final _sel_setDefaultDate_1 = _registerName1("setDefaultDate:"); - late final _sel_setEraSymbols_1 = _registerName1("setEraSymbols:"); - void _objc_msgSend_765( + late final _sel_getOffset_error_1 = _registerName1("getOffset:error:"); + bool _objc_msgSend_765( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer offsetInFile, + ffi.Pointer> error, ) { return __objc_msgSend_765( obj, sel, - value, + offsetInFile, + error, ); } late final __objc_msgSend_765Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_765 = __objc_msgSend_765Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); - late final _sel_setMonthSymbols_1 = _registerName1("setMonthSymbols:"); - late final _sel_setShortMonthSymbols_1 = - _registerName1("setShortMonthSymbols:"); - late final _sel_setWeekdaySymbols_1 = _registerName1("setWeekdaySymbols:"); - late final _sel_setShortWeekdaySymbols_1 = - _registerName1("setShortWeekdaySymbols:"); - late final _sel_setAMSymbol_1 = _registerName1("setAMSymbol:"); - late final _sel_setPMSymbol_1 = _registerName1("setPMSymbol:"); - late final _sel_setLongEraSymbols_1 = _registerName1("setLongEraSymbols:"); - late final _sel_setVeryShortMonthSymbols_1 = - _registerName1("setVeryShortMonthSymbols:"); - late final _sel_setStandaloneMonthSymbols_1 = - _registerName1("setStandaloneMonthSymbols:"); - late final _sel_setShortStandaloneMonthSymbols_1 = - _registerName1("setShortStandaloneMonthSymbols:"); - late final _sel_setVeryShortStandaloneMonthSymbols_1 = - _registerName1("setVeryShortStandaloneMonthSymbols:"); - late final _sel_setVeryShortWeekdaySymbols_1 = - _registerName1("setVeryShortWeekdaySymbols:"); - late final _sel_setStandaloneWeekdaySymbols_1 = - _registerName1("setStandaloneWeekdaySymbols:"); - late final _sel_setShortStandaloneWeekdaySymbols_1 = - _registerName1("setShortStandaloneWeekdaySymbols:"); - late final _sel_setVeryShortStandaloneWeekdaySymbols_1 = - _registerName1("setVeryShortStandaloneWeekdaySymbols:"); - late final _sel_setQuarterSymbols_1 = _registerName1("setQuarterSymbols:"); - late final _sel_setShortQuarterSymbols_1 = - _registerName1("setShortQuarterSymbols:"); - late final _sel_setStandaloneQuarterSymbols_1 = - _registerName1("setStandaloneQuarterSymbols:"); - late final _sel_setShortStandaloneQuarterSymbols_1 = - _registerName1("setShortStandaloneQuarterSymbols:"); - late final _sel_gregorianStartDate1 = _registerName1("gregorianStartDate"); - late final _sel_setGregorianStartDate_1 = - _registerName1("setGregorianStartDate:"); - late final _sel_doesRelativeDateFormatting1 = - _registerName1("doesRelativeDateFormatting"); - late final _sel_setDoesRelativeDateFormatting_1 = - _registerName1("setDoesRelativeDateFormatting:"); - late final _sel_initWithDateFormat_allowNaturalLanguage_1 = - _registerName1("initWithDateFormat:allowNaturalLanguage:"); - late final _sel_allowsNaturalLanguage1 = - _registerName1("allowsNaturalLanguage"); - late final _class_NSNumberFormatter1 = _getClass1("NSNumberFormatter"); - late final _sel_stringFromNumber_1 = _registerName1("stringFromNumber:"); - ffi.Pointer _objc_msgSend_766( + late final _sel_seekToEndReturningOffset_error_1 = + _registerName1("seekToEndReturningOffset:error:"); + late final _sel_seekToOffset_error_1 = _registerName1("seekToOffset:error:"); + bool _objc_msgSend_766( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer number, + int offset, + ffi.Pointer> error, ) { return __objc_msgSend_766( obj, sel, - number, + offset, + error, ); } late final __objc_msgSend_766Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLongLong, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_766 = __objc_msgSend_766Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + bool Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer>)>(); - late final _sel_numberFromString_1 = _registerName1("numberFromString:"); + late final _sel_truncateAtOffset_error_1 = + _registerName1("truncateAtOffset:error:"); + late final _sel_synchronizeAndReturnError_1 = + _registerName1("synchronizeAndReturnError:"); + late final _sel_closeAndReturnError_1 = + _registerName1("closeAndReturnError:"); + late final _sel_fileHandleWithStandardInput1 = + _registerName1("fileHandleWithStandardInput"); ffi.Pointer _objc_msgSend_767( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer string, ) { return __objc_msgSend_767( obj, sel, - string, ); } late final __objc_msgSend_767Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_767 = __objc_msgSend_767Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_localizedStringFromNumber_numberStyle_1 = - _registerName1("localizedStringFromNumber:numberStyle:"); - ffi.Pointer _objc_msgSend_768( + late final _sel_fileHandleWithStandardOutput1 = + _registerName1("fileHandleWithStandardOutput"); + late final _sel_fileHandleWithStandardError1 = + _registerName1("fileHandleWithStandardError"); + late final _sel_fileHandleWithNullDevice1 = + _registerName1("fileHandleWithNullDevice"); + late final _sel_fileHandleForReadingAtPath_1 = + _registerName1("fileHandleForReadingAtPath:"); + late final _sel_fileHandleForWritingAtPath_1 = + _registerName1("fileHandleForWritingAtPath:"); + late final _sel_fileHandleForUpdatingAtPath_1 = + _registerName1("fileHandleForUpdatingAtPath:"); + late final _sel_fileHandleForReadingFromURL_error_1 = + _registerName1("fileHandleForReadingFromURL:error:"); + instancetype _objc_msgSend_768( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer num, - int nstyle, + ffi.Pointer url, + ffi.Pointer> error, ) { return __objc_msgSend_768( obj, sel, - num, - nstyle, + url, + error, ); } late final __objc_msgSend_768Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_768 = __objc_msgSend_768Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer>)>(); - int _objc_msgSend_769( + late final _sel_fileHandleForWritingToURL_error_1 = + _registerName1("fileHandleForWritingToURL:error:"); + late final _sel_fileHandleForUpdatingURL_error_1 = + _registerName1("fileHandleForUpdatingURL:error:"); + late final _sel_readInBackgroundAndNotifyForModes_1 = + _registerName1("readInBackgroundAndNotifyForModes:"); + late final _sel_readInBackgroundAndNotify1 = + _registerName1("readInBackgroundAndNotify"); + late final _sel_readToEndOfFileInBackgroundAndNotifyForModes_1 = + _registerName1("readToEndOfFileInBackgroundAndNotifyForModes:"); + late final _sel_readToEndOfFileInBackgroundAndNotify1 = + _registerName1("readToEndOfFileInBackgroundAndNotify"); + late final _sel_acceptConnectionInBackgroundAndNotifyForModes_1 = + _registerName1("acceptConnectionInBackgroundAndNotifyForModes:"); + late final _sel_acceptConnectionInBackgroundAndNotify1 = + _registerName1("acceptConnectionInBackgroundAndNotify"); + late final _sel_waitForDataInBackgroundAndNotifyForModes_1 = + _registerName1("waitForDataInBackgroundAndNotifyForModes:"); + late final _sel_waitForDataInBackgroundAndNotify1 = + _registerName1("waitForDataInBackgroundAndNotify"); + late final _sel_readabilityHandler1 = _registerName1("readabilityHandler"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_769( ffi.Pointer obj, ffi.Pointer sel, ) { @@ -21772,360 +21998,259 @@ class SentryCocoa { late final __objc_msgSend_769Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( + ffi.Pointer<_ObjCBlock> Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_769 = __objc_msgSend_769Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>(); + late final _sel_setReadabilityHandler_1 = + _registerName1("setReadabilityHandler:"); void _objc_msgSend_770( ffi.Pointer obj, ffi.Pointer sel, - int behavior, + ffi.Pointer<_ObjCBlock> value, ) { return __objc_msgSend_770( obj, sel, - behavior, + value, ); } late final __objc_msgSend_770Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_770 = __objc_msgSend_770Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_numberStyle1 = _registerName1("numberStyle"); - int _objc_msgSend_771( + late final _sel_writeabilityHandler1 = _registerName1("writeabilityHandler"); + late final _sel_setWriteabilityHandler_1 = + _registerName1("setWriteabilityHandler:"); + late final _sel_initWithFileDescriptor_1 = + _registerName1("initWithFileDescriptor:"); + instancetype _objc_msgSend_771( ffi.Pointer obj, ffi.Pointer sel, + int fd, ) { return __objc_msgSend_771( obj, sel, + fd, ); } late final __objc_msgSend_771Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Int)>>('objc_msgSend'); late final __objc_msgSend_771 = __objc_msgSend_771Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + instancetype Function( + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_setNumberStyle_1 = _registerName1("setNumberStyle:"); + late final _sel_fileDescriptor1 = _registerName1("fileDescriptor"); + late final _sel_readDataToEndOfFile1 = _registerName1("readDataToEndOfFile"); + late final _sel_readDataOfLength_1 = _registerName1("readDataOfLength:"); + late final _sel_offsetInFile1 = _registerName1("offsetInFile"); + late final _sel_seekToEndOfFile1 = _registerName1("seekToEndOfFile"); + late final _sel_seekToFileOffset_1 = _registerName1("seekToFileOffset:"); void _objc_msgSend_772( ffi.Pointer obj, ffi.Pointer sel, - int value, + int offset, ) { return __objc_msgSend_772( obj, sel, - value, + offset, ); } late final __objc_msgSend_772Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.UnsignedLongLong)>>('objc_msgSend'); late final __objc_msgSend_772 = __objc_msgSend_772Ptr.asFunction< void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_generatesDecimalNumbers1 = - _registerName1("generatesDecimalNumbers"); - late final _sel_setGeneratesDecimalNumbers_1 = - _registerName1("setGeneratesDecimalNumbers:"); - void _objc_msgSend_773( + late final _sel_truncateFileAtOffset_1 = + _registerName1("truncateFileAtOffset:"); + late final _sel_synchronizeFile1 = _registerName1("synchronizeFile"); + late final _sel_closeFile1 = _registerName1("closeFile"); + late final _class_NSHTTPCookieStorage1 = _getClass1("NSHTTPCookieStorage"); + late final _sel_sharedHTTPCookieStorage1 = + _registerName1("sharedHTTPCookieStorage"); + ffi.Pointer _objc_msgSend_773( ffi.Pointer obj, ffi.Pointer sel, - int value, ) { return __objc_msgSend_773( obj, sel, - value, ); } late final __objc_msgSend_773Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_773 = __objc_msgSend_773Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_negativeFormat1 = _registerName1("negativeFormat"); - late final _sel_setNegativeFormat_1 = _registerName1("setNegativeFormat:"); - late final _sel_textAttributesForNegativeValues1 = - _registerName1("textAttributesForNegativeValues"); - late final _sel_setTextAttributesForNegativeValues_1 = - _registerName1("setTextAttributesForNegativeValues:"); - late final _sel_positiveFormat1 = _registerName1("positiveFormat"); - late final _sel_setPositiveFormat_1 = _registerName1("setPositiveFormat:"); - late final _sel_textAttributesForPositiveValues1 = - _registerName1("textAttributesForPositiveValues"); - late final _sel_setTextAttributesForPositiveValues_1 = - _registerName1("setTextAttributesForPositiveValues:"); - late final _sel_allowsFloats1 = _registerName1("allowsFloats"); - late final _sel_setAllowsFloats_1 = _registerName1("setAllowsFloats:"); - late final _sel_setDecimalSeparator_1 = - _registerName1("setDecimalSeparator:"); - late final _sel_alwaysShowsDecimalSeparator1 = - _registerName1("alwaysShowsDecimalSeparator"); - late final _sel_setAlwaysShowsDecimalSeparator_1 = - _registerName1("setAlwaysShowsDecimalSeparator:"); - late final _sel_currencyDecimalSeparator1 = - _registerName1("currencyDecimalSeparator"); - late final _sel_setCurrencyDecimalSeparator_1 = - _registerName1("setCurrencyDecimalSeparator:"); - late final _sel_usesGroupingSeparator1 = - _registerName1("usesGroupingSeparator"); - late final _sel_setUsesGroupingSeparator_1 = - _registerName1("setUsesGroupingSeparator:"); - late final _sel_setGroupingSeparator_1 = - _registerName1("setGroupingSeparator:"); - late final _sel_zeroSymbol1 = _registerName1("zeroSymbol"); - late final _sel_setZeroSymbol_1 = _registerName1("setZeroSymbol:"); - late final _sel_textAttributesForZero1 = - _registerName1("textAttributesForZero"); - late final _sel_setTextAttributesForZero_1 = - _registerName1("setTextAttributesForZero:"); - late final _sel_nilSymbol1 = _registerName1("nilSymbol"); - late final _sel_setNilSymbol_1 = _registerName1("setNilSymbol:"); - late final _sel_textAttributesForNil1 = - _registerName1("textAttributesForNil"); - late final _sel_setTextAttributesForNil_1 = - _registerName1("setTextAttributesForNil:"); - late final _sel_notANumberSymbol1 = _registerName1("notANumberSymbol"); - late final _sel_setNotANumberSymbol_1 = - _registerName1("setNotANumberSymbol:"); - late final _sel_textAttributesForNotANumber1 = - _registerName1("textAttributesForNotANumber"); - late final _sel_setTextAttributesForNotANumber_1 = - _registerName1("setTextAttributesForNotANumber:"); - late final _sel_positiveInfinitySymbol1 = - _registerName1("positiveInfinitySymbol"); - late final _sel_setPositiveInfinitySymbol_1 = - _registerName1("setPositiveInfinitySymbol:"); - late final _sel_textAttributesForPositiveInfinity1 = - _registerName1("textAttributesForPositiveInfinity"); - late final _sel_setTextAttributesForPositiveInfinity_1 = - _registerName1("setTextAttributesForPositiveInfinity:"); - late final _sel_negativeInfinitySymbol1 = - _registerName1("negativeInfinitySymbol"); - late final _sel_setNegativeInfinitySymbol_1 = - _registerName1("setNegativeInfinitySymbol:"); - late final _sel_textAttributesForNegativeInfinity1 = - _registerName1("textAttributesForNegativeInfinity"); - late final _sel_setTextAttributesForNegativeInfinity_1 = - _registerName1("setTextAttributesForNegativeInfinity:"); - late final _sel_positivePrefix1 = _registerName1("positivePrefix"); - late final _sel_setPositivePrefix_1 = _registerName1("setPositivePrefix:"); - late final _sel_positiveSuffix1 = _registerName1("positiveSuffix"); - late final _sel_setPositiveSuffix_1 = _registerName1("setPositiveSuffix:"); - late final _sel_negativePrefix1 = _registerName1("negativePrefix"); - late final _sel_setNegativePrefix_1 = _registerName1("setNegativePrefix:"); - late final _sel_negativeSuffix1 = _registerName1("negativeSuffix"); - late final _sel_setNegativeSuffix_1 = _registerName1("setNegativeSuffix:"); - late final _sel_setCurrencyCode_1 = _registerName1("setCurrencyCode:"); - late final _sel_setCurrencySymbol_1 = _registerName1("setCurrencySymbol:"); - late final _sel_internationalCurrencySymbol1 = - _registerName1("internationalCurrencySymbol"); - late final _sel_setInternationalCurrencySymbol_1 = - _registerName1("setInternationalCurrencySymbol:"); - late final _sel_percentSymbol1 = _registerName1("percentSymbol"); - late final _sel_setPercentSymbol_1 = _registerName1("setPercentSymbol:"); - late final _sel_perMillSymbol1 = _registerName1("perMillSymbol"); - late final _sel_setPerMillSymbol_1 = _registerName1("setPerMillSymbol:"); - late final _sel_minusSign1 = _registerName1("minusSign"); - late final _sel_setMinusSign_1 = _registerName1("setMinusSign:"); - late final _sel_plusSign1 = _registerName1("plusSign"); - late final _sel_setPlusSign_1 = _registerName1("setPlusSign:"); - late final _sel_exponentSymbol1 = _registerName1("exponentSymbol"); - late final _sel_setExponentSymbol_1 = _registerName1("setExponentSymbol:"); - late final _sel_groupingSize1 = _registerName1("groupingSize"); - late final _sel_setGroupingSize_1 = _registerName1("setGroupingSize:"); - late final _sel_secondaryGroupingSize1 = - _registerName1("secondaryGroupingSize"); - late final _sel_setSecondaryGroupingSize_1 = - _registerName1("setSecondaryGroupingSize:"); - late final _sel_multiplier1 = _registerName1("multiplier"); - late final _sel_setMultiplier_1 = _registerName1("setMultiplier:"); - late final _sel_formatWidth1 = _registerName1("formatWidth"); - late final _sel_setFormatWidth_1 = _registerName1("setFormatWidth:"); - late final _sel_paddingCharacter1 = _registerName1("paddingCharacter"); - late final _sel_setPaddingCharacter_1 = - _registerName1("setPaddingCharacter:"); - late final _sel_paddingPosition1 = _registerName1("paddingPosition"); - int _objc_msgSend_774( + late final _sel_sharedCookieStorageForGroupContainerIdentifier_1 = + _registerName1("sharedCookieStorageForGroupContainerIdentifier:"); + ffi.Pointer _objc_msgSend_774( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer identifier, ) { return __objc_msgSend_774( obj, sel, + identifier, ); } late final __objc_msgSend_774Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_774 = __objc_msgSend_774Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setPaddingPosition_1 = _registerName1("setPaddingPosition:"); - void _objc_msgSend_775( + late final _sel_cookies1 = _registerName1("cookies"); + late final _class_NSHTTPCookie1 = _getClass1("NSHTTPCookie"); + late final _sel_initWithProperties_1 = _registerName1("initWithProperties:"); + late final _sel_cookieWithProperties_1 = + _registerName1("cookieWithProperties:"); + ffi.Pointer _objc_msgSend_775( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer properties, ) { return __objc_msgSend_775( obj, sel, - value, + properties, ); } late final __objc_msgSend_775Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_775 = __objc_msgSend_775Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_roundingMode1 = _registerName1("roundingMode"); - int _objc_msgSend_776( + late final _sel_requestHeaderFieldsWithCookies_1 = + _registerName1("requestHeaderFieldsWithCookies:"); + late final _sel_cookiesWithResponseHeaderFields_forURL_1 = + _registerName1("cookiesWithResponseHeaderFields:forURL:"); + ffi.Pointer _objc_msgSend_776( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer headerFields, + ffi.Pointer URL, ) { return __objc_msgSend_776( obj, sel, + headerFields, + URL, ); } late final __objc_msgSend_776Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_776 = __objc_msgSend_776Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_setRoundingMode_1 = _registerName1("setRoundingMode:"); + late final _sel_properties1 = _registerName1("properties"); + late final _sel_value1 = _registerName1("value"); + late final _sel_expiresDate1 = _registerName1("expiresDate"); + late final _sel_isSessionOnly1 = _registerName1("isSessionOnly"); + late final _sel_isSecure1 = _registerName1("isSecure"); + late final _sel_isHTTPOnly1 = _registerName1("isHTTPOnly"); + late final _sel_comment1 = _registerName1("comment"); + late final _sel_commentURL1 = _registerName1("commentURL"); + late final _sel_portList1 = _registerName1("portList"); + late final _sel_sameSitePolicy1 = _registerName1("sameSitePolicy"); + late final _sel_setCookie_1 = _registerName1("setCookie:"); void _objc_msgSend_777( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer cookie, ) { return __objc_msgSend_777( obj, sel, - value, + cookie, ); } late final __objc_msgSend_777Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_777 = __objc_msgSend_777Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_roundingIncrement1 = _registerName1("roundingIncrement"); - late final _sel_setRoundingIncrement_1 = - _registerName1("setRoundingIncrement:"); - late final _sel_minimumIntegerDigits1 = - _registerName1("minimumIntegerDigits"); - late final _sel_setMinimumIntegerDigits_1 = - _registerName1("setMinimumIntegerDigits:"); - late final _sel_maximumIntegerDigits1 = - _registerName1("maximumIntegerDigits"); - late final _sel_setMaximumIntegerDigits_1 = - _registerName1("setMaximumIntegerDigits:"); - late final _sel_minimumFractionDigits1 = - _registerName1("minimumFractionDigits"); - late final _sel_setMinimumFractionDigits_1 = - _registerName1("setMinimumFractionDigits:"); - late final _sel_maximumFractionDigits1 = - _registerName1("maximumFractionDigits"); - late final _sel_setMaximumFractionDigits_1 = - _registerName1("setMaximumFractionDigits:"); - late final _sel_minimum1 = _registerName1("minimum"); - late final _sel_setMinimum_1 = _registerName1("setMinimum:"); - late final _sel_maximum1 = _registerName1("maximum"); - late final _sel_setMaximum_1 = _registerName1("setMaximum:"); - late final _sel_currencyGroupingSeparator1 = - _registerName1("currencyGroupingSeparator"); - late final _sel_setCurrencyGroupingSeparator_1 = - _registerName1("setCurrencyGroupingSeparator:"); - late final _sel_usesSignificantDigits1 = - _registerName1("usesSignificantDigits"); - late final _sel_setUsesSignificantDigits_1 = - _registerName1("setUsesSignificantDigits:"); - late final _sel_minimumSignificantDigits1 = - _registerName1("minimumSignificantDigits"); - late final _sel_setMinimumSignificantDigits_1 = - _registerName1("setMinimumSignificantDigits:"); - late final _sel_maximumSignificantDigits1 = - _registerName1("maximumSignificantDigits"); - late final _sel_setMaximumSignificantDigits_1 = - _registerName1("setMaximumSignificantDigits:"); - late final _sel_isPartialStringValidationEnabled1 = - _registerName1("isPartialStringValidationEnabled"); - late final _sel_setPartialStringValidationEnabled_1 = - _registerName1("setPartialStringValidationEnabled:"); - late final _sel_hasThousandSeparators1 = - _registerName1("hasThousandSeparators"); - late final _sel_setHasThousandSeparators_1 = - _registerName1("setHasThousandSeparators:"); - late final _sel_thousandSeparator1 = _registerName1("thousandSeparator"); - late final _sel_setThousandSeparator_1 = - _registerName1("setThousandSeparator:"); - late final _sel_localizesFormat1 = _registerName1("localizesFormat"); - late final _sel_setLocalizesFormat_1 = _registerName1("setLocalizesFormat:"); - late final _sel_format1 = _registerName1("format"); - late final _sel_setFormat_1 = _registerName1("setFormat:"); - late final _sel_attributedStringForZero1 = - _registerName1("attributedStringForZero"); - late final _sel_setAttributedStringForZero_1 = - _registerName1("setAttributedStringForZero:"); + late final _sel_deleteCookie_1 = _registerName1("deleteCookie:"); + late final _sel_removeCookiesSinceDate_1 = + _registerName1("removeCookiesSinceDate:"); + late final _sel_cookiesForURL_1 = _registerName1("cookiesForURL:"); + late final _sel_setCookies_forURL_mainDocumentURL_1 = + _registerName1("setCookies:forURL:mainDocumentURL:"); void _objc_msgSend_778( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer cookies, + ffi.Pointer URL, + ffi.Pointer mainDocumentURL, ) { return __objc_msgSend_778( obj, sel, - value, + cookies, + URL, + mainDocumentURL, ); } late final __objc_msgSend_778Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_778 = __objc_msgSend_778Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_attributedStringForNil1 = - _registerName1("attributedStringForNil"); - late final _sel_setAttributedStringForNil_1 = - _registerName1("setAttributedStringForNil:"); - late final _sel_attributedStringForNotANumber1 = - _registerName1("attributedStringForNotANumber"); - late final _sel_setAttributedStringForNotANumber_1 = - _registerName1("setAttributedStringForNotANumber:"); - late final _class_NSDecimalNumberHandler1 = - _getClass1("NSDecimalNumberHandler"); - late final _sel_defaultDecimalNumberHandler1 = - _registerName1("defaultDecimalNumberHandler"); - ffi.Pointer _objc_msgSend_779( + late final _sel_cookieAcceptPolicy1 = _registerName1("cookieAcceptPolicy"); + int _objc_msgSend_779( ffi.Pointer obj, ffi.Pointer sel, ) { @@ -22137,626 +22262,663 @@ class SentryCocoa { late final __objc_msgSend_779Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Int32 Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_779 = __objc_msgSend_779Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1 = - _registerName1( - "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); - instancetype _objc_msgSend_780( + late final _sel_setCookieAcceptPolicy_1 = + _registerName1("setCookieAcceptPolicy:"); + void _objc_msgSend_780( ffi.Pointer obj, ffi.Pointer sel, - int roundingMode, - int scale, - bool exact, - bool overflow, - bool underflow, - bool divideByZero, + int value, ) { return __objc_msgSend_780( obj, sel, - roundingMode, - scale, - exact, - overflow, - underflow, - divideByZero, + value, ); } late final __objc_msgSend_780Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Short, - ffi.Bool, - ffi.Bool, - ffi.Bool, - ffi.Bool)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_780 = __objc_msgSend_780Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - int, bool, bool, bool, bool)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1 = - _registerName1( - "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:"); - late final _sel_roundingBehavior1 = _registerName1("roundingBehavior"); - late final _sel_setRoundingBehavior_1 = - _registerName1("setRoundingBehavior:"); - void _objc_msgSend_781( + late final _sel_sortedCookiesUsingDescriptors_1 = + _registerName1("sortedCookiesUsingDescriptors:"); + late final _class_NSURLSessionTask1 = _getClass1("NSURLSessionTask"); + late final _sel_taskIdentifier1 = _registerName1("taskIdentifier"); + late final _class_NSURLRequest1 = _getClass1("NSURLRequest"); + late final _sel_requestWithURL_1 = _registerName1("requestWithURL:"); + late final _sel_supportsSecureCoding1 = + _registerName1("supportsSecureCoding"); + late final _sel_requestWithURL_cachePolicy_timeoutInterval_1 = + _registerName1("requestWithURL:cachePolicy:timeoutInterval:"); + instancetype _objc_msgSend_781( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer URL, + int cachePolicy, + double timeoutInterval, ) { return __objc_msgSend_781( obj, sel, - value, + URL, + cachePolicy, + timeoutInterval, ); } late final __objc_msgSend_781Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Int32, ffi.Double)>>('objc_msgSend'); late final __objc_msgSend_781 = __objc_msgSend_781Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, double)>(); - late final _class_NSScanner1 = _getClass1("NSScanner"); - late final _sel_scanLocation1 = _registerName1("scanLocation"); - late final _sel_setScanLocation_1 = _registerName1("setScanLocation:"); - late final _sel_charactersToBeSkipped1 = - _registerName1("charactersToBeSkipped"); - late final _sel_setCharactersToBeSkipped_1 = - _registerName1("setCharactersToBeSkipped:"); - void _objc_msgSend_782( + late final _sel_initWithURL_cachePolicy_timeoutInterval_1 = + _registerName1("initWithURL:cachePolicy:timeoutInterval:"); + late final _sel_URL1 = _registerName1("URL"); + late final _sel_cachePolicy1 = _registerName1("cachePolicy"); + int _objc_msgSend_782( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, ) { return __objc_msgSend_782( obj, sel, - value, ); } late final __objc_msgSend_782Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_782 = __objc_msgSend_782Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_caseSensitive1 = _registerName1("caseSensitive"); - late final _sel_setCaseSensitive_1 = _registerName1("setCaseSensitive:"); - late final _sel_scanInt_1 = _registerName1("scanInt:"); - bool _objc_msgSend_783( + late final _sel_timeoutInterval1 = _registerName1("timeoutInterval"); + late final _sel_mainDocumentURL1 = _registerName1("mainDocumentURL"); + late final _sel_networkServiceType1 = _registerName1("networkServiceType"); + int _objc_msgSend_783( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer result, ) { return __objc_msgSend_783( obj, sel, - result, ); } late final __objc_msgSend_783Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_783 = __objc_msgSend_783Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_scanInteger_1 = _registerName1("scanInteger:"); - bool _objc_msgSend_784( + late final _sel_allowsCellularAccess1 = + _registerName1("allowsCellularAccess"); + late final _sel_allowsExpensiveNetworkAccess1 = + _registerName1("allowsExpensiveNetworkAccess"); + late final _sel_allowsConstrainedNetworkAccess1 = + _registerName1("allowsConstrainedNetworkAccess"); + late final _sel_assumesHTTP3Capable1 = _registerName1("assumesHTTP3Capable"); + late final _sel_attribution1 = _registerName1("attribution"); + int _objc_msgSend_784( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer result, ) { return __objc_msgSend_784( obj, sel, - result, ); } late final __objc_msgSend_784Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_784 = __objc_msgSend_784Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_scanLongLong_1 = _registerName1("scanLongLong:"); - bool _objc_msgSend_785( + late final _sel_requiresDNSSECValidation1 = + _registerName1("requiresDNSSECValidation"); + late final _sel_HTTPMethod1 = _registerName1("HTTPMethod"); + late final _sel_allHTTPHeaderFields1 = _registerName1("allHTTPHeaderFields"); + late final _sel_valueForHTTPHeaderField_1 = + _registerName1("valueForHTTPHeaderField:"); + late final _sel_HTTPBody1 = _registerName1("HTTPBody"); + late final _class_NSInputStream1 = _getClass1("NSInputStream"); + late final _class_NSStream1 = _getClass1("NSStream"); + late final _sel_open1 = _registerName1("open"); + late final _sel_close1 = _registerName1("close"); + late final _sel_streamStatus1 = _registerName1("streamStatus"); + int _objc_msgSend_785( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer result, ) { return __objc_msgSend_785( obj, sel, - result, ); } late final __objc_msgSend_785Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_785 = __objc_msgSend_785Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_scanUnsignedLongLong_1 = - _registerName1("scanUnsignedLongLong:"); - bool _objc_msgSend_786( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer result, + late final _sel_streamError1 = _registerName1("streamError"); + late final _class_NSOutputStream1 = _getClass1("NSOutputStream"); + late final _sel_write_maxLength_1 = _registerName1("write:maxLength:"); + int _objc_msgSend_786( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer buffer, + int len, ) { return __objc_msgSend_786( obj, sel, - result, + buffer, + len, ); } late final __objc_msgSend_786Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Long Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_786 = __objc_msgSend_786Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); - late final _sel_scanFloat_1 = _registerName1("scanFloat:"); - bool _objc_msgSend_787( + late final _sel_hasSpaceAvailable1 = _registerName1("hasSpaceAvailable"); + late final _sel_initToMemory1 = _registerName1("initToMemory"); + late final _sel_initToBuffer_capacity_1 = + _registerName1("initToBuffer:capacity:"); + instancetype _objc_msgSend_787( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer result, + ffi.Pointer buffer, + int capacity, ) { return __objc_msgSend_787( obj, sel, - result, + buffer, + capacity, ); } late final __objc_msgSend_787Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_787 = __objc_msgSend_787Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); - late final _sel_scanDouble_1 = _registerName1("scanDouble:"); - bool _objc_msgSend_788( + late final _sel_initWithURL_append_1 = _registerName1("initWithURL:append:"); + late final _sel_initToFileAtPath_append_1 = + _registerName1("initToFileAtPath:append:"); + late final _sel_outputStreamToMemory1 = + _registerName1("outputStreamToMemory"); + late final _sel_outputStreamToBuffer_capacity_1 = + _registerName1("outputStreamToBuffer:capacity:"); + late final _sel_outputStreamToFileAtPath_append_1 = + _registerName1("outputStreamToFileAtPath:append:"); + late final _sel_outputStreamWithURL_append_1 = + _registerName1("outputStreamWithURL:append:"); + late final _sel_getStreamsToHostWithName_port_inputStream_outputStream_1 = + _registerName1("getStreamsToHostWithName:port:inputStream:outputStream:"); + void _objc_msgSend_788( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer result, + ffi.Pointer hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream, ) { return __objc_msgSend_788( obj, sel, - result, + hostname, + port, + inputStream, + outputStream, ); } late final __objc_msgSend_788Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_788 = __objc_msgSend_788Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); - late final _sel_scanHexInt_1 = _registerName1("scanHexInt:"); + late final _class_NSHost1 = _getClass1("NSHost"); + late final _sel_currentHost1 = _registerName1("currentHost"); + late final _sel_hostWithName_1 = _registerName1("hostWithName:"); + late final _sel_hostWithAddress_1 = _registerName1("hostWithAddress:"); + late final _sel_isEqualToHost_1 = _registerName1("isEqualToHost:"); bool _objc_msgSend_789( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer result, + ffi.Pointer aHost, ) { return __objc_msgSend_789( obj, sel, - result, + aHost, ); } late final __objc_msgSend_789Ptr = _lookup< ffi.NativeFunction< ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_789 = __objc_msgSend_789Ptr.asFunction< bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer)>(); - late final _sel_scanHexLongLong_1 = _registerName1("scanHexLongLong:"); - late final _sel_scanHexFloat_1 = _registerName1("scanHexFloat:"); - late final _sel_scanHexDouble_1 = _registerName1("scanHexDouble:"); - late final _sel_scanString_intoString_1 = - _registerName1("scanString:intoString:"); - bool _objc_msgSend_790( + late final _sel_names1 = _registerName1("names"); + late final _sel_address1 = _registerName1("address"); + late final _sel_addresses1 = _registerName1("addresses"); + late final _sel_localizedName1 = _registerName1("localizedName"); + late final _sel_setHostCacheEnabled_1 = + _registerName1("setHostCacheEnabled:"); + void _objc_msgSend_790( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer string, - ffi.Pointer> result, + bool flag, ) { return __objc_msgSend_790( obj, sel, - string, - result, + flag, ); } late final __objc_msgSend_790Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); late final __objc_msgSend_790 = __objc_msgSend_790Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); + void Function(ffi.Pointer, ffi.Pointer, bool)>(); - late final _sel_scanCharactersFromSet_intoString_1 = - _registerName1("scanCharactersFromSet:intoString:"); - bool _objc_msgSend_791( + late final _sel_isHostCacheEnabled1 = _registerName1("isHostCacheEnabled"); + late final _sel_flushHostCache1 = _registerName1("flushHostCache"); + late final _sel_getStreamsToHost_port_inputStream_outputStream_1 = + _registerName1("getStreamsToHost:port:inputStream:outputStream:"); + void _objc_msgSend_791( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer set1, - ffi.Pointer> result, + ffi.Pointer host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream, ) { return __objc_msgSend_791( obj, sel, - set1, - result, + host, + port, + inputStream, + outputStream, ); } late final __objc_msgSend_791Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, + ffi.Long, + ffi.Pointer>, ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_791 = __objc_msgSend_791Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); - late final _sel_scanUpToString_intoString_1 = - _registerName1("scanUpToString:intoString:"); - late final _sel_scanUpToCharactersFromSet_intoString_1 = - _registerName1("scanUpToCharactersFromSet:intoString:"); - late final _sel_isAtEnd1 = _registerName1("isAtEnd"); - late final _sel_scannerWithString_1 = _registerName1("scannerWithString:"); - late final _sel_localizedScannerWithString_1 = - _registerName1("localizedScannerWithString:"); - late final _sel_scanDecimal_1 = _registerName1("scanDecimal:"); - bool _objc_msgSend_792( + late final _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1 = + _registerName1("getBoundStreamsWithBufferSize:inputStream:outputStream:"); + void _objc_msgSend_792( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer dcm, + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream, ) { return __objc_msgSend_792( obj, sel, - dcm, + bufferSize, + inputStream, + outputStream, ); } late final __objc_msgSend_792Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_792 = __objc_msgSend_792Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>, + ffi.Pointer>)>(); - late final _class_NSException1 = _getClass1("NSException"); - late final _sel_exceptionWithName_reason_userInfo_1 = - _registerName1("exceptionWithName:reason:userInfo:"); - ffi.Pointer _objc_msgSend_793( + late final _sel_read_maxLength_1 = _registerName1("read:maxLength:"); + late final _sel_getBuffer_length_1 = _registerName1("getBuffer:length:"); + bool _objc_msgSend_793( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer reason, - ffi.Pointer userInfo, + ffi.Pointer> buffer, + ffi.Pointer len, ) { return __objc_msgSend_793( obj, sel, - name, - reason, - userInfo, + buffer, + len, ); } late final __objc_msgSend_793Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Bool Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer>, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_793 = __objc_msgSend_793Ptr.asFunction< - ffi.Pointer Function( + bool Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer>, + ffi.Pointer)>(); - late final _sel_initWithName_reason_userInfo_1 = - _registerName1("initWithName:reason:userInfo:"); - late final _sel_reason1 = _registerName1("reason"); - late final _sel_raise1 = _registerName1("raise"); - late final _sel_raise_format_1 = _registerName1("raise:format:"); - late final _sel_raise_format_arguments_1 = - _registerName1("raise:format:arguments:"); - void _objc_msgSend_794( + late final _sel_hasBytesAvailable1 = _registerName1("hasBytesAvailable"); + late final _sel_initWithFileAtPath_1 = _registerName1("initWithFileAtPath:"); + late final _sel_inputStreamWithData_1 = + _registerName1("inputStreamWithData:"); + late final _sel_inputStreamWithFileAtPath_1 = + _registerName1("inputStreamWithFileAtPath:"); + late final _sel_inputStreamWithURL_1 = _registerName1("inputStreamWithURL:"); + late final _sel_HTTPBodyStream1 = _registerName1("HTTPBodyStream"); + ffi.Pointer _objc_msgSend_794( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer format, - ffi.Pointer argList, ) { return __objc_msgSend_794( obj, sel, - name, - format, - argList, ); } late final __objc_msgSend_794Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_794 = __objc_msgSend_794Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _class_NSFileHandle1 = _getClass1("NSFileHandle"); - late final _sel_availableData1 = _registerName1("availableData"); - late final _sel_initWithFileDescriptor_closeOnDealloc_1 = - _registerName1("initWithFileDescriptor:closeOnDealloc:"); - instancetype _objc_msgSend_795( + late final _sel_HTTPShouldHandleCookies1 = + _registerName1("HTTPShouldHandleCookies"); + late final _sel_HTTPShouldUsePipelining1 = + _registerName1("HTTPShouldUsePipelining"); + late final _sel_originalRequest1 = _registerName1("originalRequest"); + ffi.Pointer _objc_msgSend_795( ffi.Pointer obj, ffi.Pointer sel, - int fd, - bool closeopt, ) { return __objc_msgSend_795( obj, sel, - fd, - closeopt, ); } late final __objc_msgSend_795Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int, ffi.Bool)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_795 = __objc_msgSend_795Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int, bool)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_readDataToEndOfFileAndReturnError_1 = - _registerName1("readDataToEndOfFileAndReturnError:"); - ffi.Pointer _objc_msgSend_796( + late final _sel_currentRequest1 = _registerName1("currentRequest"); + late final _class_NSURLResponse1 = _getClass1("NSURLResponse"); + late final _sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_1 = + _registerName1( + "initWithURL:MIMEType:expectedContentLength:textEncodingName:"); + instancetype _objc_msgSend_796( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer> error, + ffi.Pointer URL, + ffi.Pointer MIMEType, + int length, + ffi.Pointer name, ) { return __objc_msgSend_796( obj, sel, - error, + URL, + MIMEType, + length, + name, ); } late final __objc_msgSend_796Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + instancetype Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_796 = __objc_msgSend_796Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); - late final _sel_readDataUpToLength_error_1 = - _registerName1("readDataUpToLength:error:"); + late final _sel_MIMEType1 = _registerName1("MIMEType"); + late final _sel_expectedContentLength1 = + _registerName1("expectedContentLength"); + late final _sel_textEncodingName1 = _registerName1("textEncodingName"); + late final _sel_suggestedFilename1 = _registerName1("suggestedFilename"); + late final _sel_response1 = _registerName1("response"); ffi.Pointer _objc_msgSend_797( ffi.Pointer obj, ffi.Pointer sel, - int length, - ffi.Pointer> error, ) { return __objc_msgSend_797( obj, sel, - length, - error, ); } late final __objc_msgSend_797Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_797 = __objc_msgSend_797Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer>)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_writeData_error_1 = _registerName1("writeData:error:"); - bool _objc_msgSend_798( + late final _sel_progress1 = _registerName1("progress"); + late final _sel_earliestBeginDate1 = _registerName1("earliestBeginDate"); + late final _sel_setEarliestBeginDate_1 = + _registerName1("setEarliestBeginDate:"); + late final _sel_countOfBytesClientExpectsToSend1 = + _registerName1("countOfBytesClientExpectsToSend"); + late final _sel_setCountOfBytesClientExpectsToSend_1 = + _registerName1("setCountOfBytesClientExpectsToSend:"); + late final _sel_countOfBytesClientExpectsToReceive1 = + _registerName1("countOfBytesClientExpectsToReceive"); + late final _sel_setCountOfBytesClientExpectsToReceive_1 = + _registerName1("setCountOfBytesClientExpectsToReceive:"); + late final _sel_countOfBytesSent1 = _registerName1("countOfBytesSent"); + late final _sel_countOfBytesReceived1 = + _registerName1("countOfBytesReceived"); + late final _sel_countOfBytesExpectedToSend1 = + _registerName1("countOfBytesExpectedToSend"); + late final _sel_countOfBytesExpectedToReceive1 = + _registerName1("countOfBytesExpectedToReceive"); + late final _sel_taskDescription1 = _registerName1("taskDescription"); + late final _sel_setTaskDescription_1 = _registerName1("setTaskDescription:"); + late final _sel_state1 = _registerName1("state"); + int _objc_msgSend_798( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer> error, ) { return __objc_msgSend_798( obj, sel, - data, - error, ); } late final __objc_msgSend_798Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_798 = __objc_msgSend_798Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_getOffset_error_1 = _registerName1("getOffset:error:"); - bool _objc_msgSend_799( + late final _sel_suspend1 = _registerName1("suspend"); + late final _sel_priority1 = _registerName1("priority"); + late final _sel_setPriority_1 = _registerName1("setPriority:"); + void _objc_msgSend_799( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer offsetInFile, - ffi.Pointer> error, + double value, ) { return __objc_msgSend_799( obj, sel, - offsetInFile, - error, + value, ); } late final __objc_msgSend_799Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Float)>>('objc_msgSend'); late final __objc_msgSend_799 = __objc_msgSend_799Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); + void Function(ffi.Pointer, ffi.Pointer, double)>(); - late final _sel_seekToEndReturningOffset_error_1 = - _registerName1("seekToEndReturningOffset:error:"); - late final _sel_seekToOffset_error_1 = _registerName1("seekToOffset:error:"); - bool _objc_msgSend_800( + late final _sel_prefersIncrementalDelivery1 = + _registerName1("prefersIncrementalDelivery"); + late final _sel_setPrefersIncrementalDelivery_1 = + _registerName1("setPrefersIncrementalDelivery:"); + late final _sel_storeCookies_forTask_1 = + _registerName1("storeCookies:forTask:"); + void _objc_msgSend_800( ffi.Pointer obj, ffi.Pointer sel, - int offset, - ffi.Pointer> error, + ffi.Pointer cookies, + ffi.Pointer task, ) { return __objc_msgSend_800( obj, sel, - offset, - error, + cookies, + task, ); } late final __objc_msgSend_800Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, - ffi.UnsignedLongLong, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_800 = __objc_msgSend_800Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer>)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_truncateAtOffset_error_1 = - _registerName1("truncateAtOffset:error:"); - late final _sel_synchronizeAndReturnError_1 = - _registerName1("synchronizeAndReturnError:"); - late final _sel_closeAndReturnError_1 = - _registerName1("closeAndReturnError:"); - late final _sel_fileHandleWithStandardInput1 = - _registerName1("fileHandleWithStandardInput"); - ffi.Pointer _objc_msgSend_801( + late final _sel_getCookiesForTask_completionHandler_1 = + _registerName1("getCookiesForTask:completionHandler:"); + void _objc_msgSend_801( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer task, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_801( obj, sel, + task, + completionHandler, ); } late final __objc_msgSend_801Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_801 = __objc_msgSend_801Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_fileHandleWithStandardOutput1 = - _registerName1("fileHandleWithStandardOutput"); - late final _sel_fileHandleWithStandardError1 = - _registerName1("fileHandleWithStandardError"); - late final _sel_fileHandleWithNullDevice1 = - _registerName1("fileHandleWithNullDevice"); - late final _sel_fileHandleForReadingAtPath_1 = - _registerName1("fileHandleForReadingAtPath:"); - late final _sel_fileHandleForWritingAtPath_1 = - _registerName1("fileHandleForWritingAtPath:"); - late final _sel_fileHandleForUpdatingAtPath_1 = - _registerName1("fileHandleForUpdatingAtPath:"); - late final _sel_fileHandleForReadingFromURL_error_1 = - _registerName1("fileHandleForReadingFromURL:error:"); + late final _class_NSIndexPath1 = _getClass1("NSIndexPath"); + late final _sel_indexPathWithIndex_1 = _registerName1("indexPathWithIndex:"); + late final _sel_indexPathWithIndexes_length_1 = + _registerName1("indexPathWithIndexes:length:"); instancetype _objc_msgSend_802( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer> error, + ffi.Pointer indexes, + int length, ) { return __objc_msgSend_802( obj, sel, - url, - error, + indexes, + length, ); } @@ -22765,297 +22927,223 @@ class SentryCocoa { instancetype Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer, + ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_802 = __objc_msgSend_802Ptr.asFunction< instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer>)>(); + ffi.Pointer, int)>(); - late final _sel_fileHandleForWritingToURL_error_1 = - _registerName1("fileHandleForWritingToURL:error:"); - late final _sel_fileHandleForUpdatingURL_error_1 = - _registerName1("fileHandleForUpdatingURL:error:"); - late final _sel_readInBackgroundAndNotifyForModes_1 = - _registerName1("readInBackgroundAndNotifyForModes:"); - late final _sel_readInBackgroundAndNotify1 = - _registerName1("readInBackgroundAndNotify"); - late final _sel_readToEndOfFileInBackgroundAndNotifyForModes_1 = - _registerName1("readToEndOfFileInBackgroundAndNotifyForModes:"); - late final _sel_readToEndOfFileInBackgroundAndNotify1 = - _registerName1("readToEndOfFileInBackgroundAndNotify"); - late final _sel_acceptConnectionInBackgroundAndNotifyForModes_1 = - _registerName1("acceptConnectionInBackgroundAndNotifyForModes:"); - late final _sel_acceptConnectionInBackgroundAndNotify1 = - _registerName1("acceptConnectionInBackgroundAndNotify"); - late final _sel_waitForDataInBackgroundAndNotifyForModes_1 = - _registerName1("waitForDataInBackgroundAndNotifyForModes:"); - late final _sel_waitForDataInBackgroundAndNotify1 = - _registerName1("waitForDataInBackgroundAndNotify"); - late final _sel_readabilityHandler1 = _registerName1("readabilityHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_803( + late final _sel_initWithIndexes_length_1 = + _registerName1("initWithIndexes:length:"); + late final _sel_indexPathByAddingIndex_1 = + _registerName1("indexPathByAddingIndex:"); + ffi.Pointer _objc_msgSend_803( ffi.Pointer obj, ffi.Pointer sel, + int index, ) { return __objc_msgSend_803( obj, sel, + index, ); } late final __objc_msgSend_803Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_803 = __objc_msgSend_803Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_setReadabilityHandler_1 = - _registerName1("setReadabilityHandler:"); - void _objc_msgSend_804( + late final _sel_indexPathByRemovingLastIndex1 = + _registerName1("indexPathByRemovingLastIndex"); + ffi.Pointer _objc_msgSend_804( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, ) { return __objc_msgSend_804( obj, sel, - value, ); } late final __objc_msgSend_804Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_804 = __objc_msgSend_804Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_writeabilityHandler1 = _registerName1("writeabilityHandler"); - late final _sel_setWriteabilityHandler_1 = - _registerName1("setWriteabilityHandler:"); - late final _sel_initWithFileDescriptor_1 = - _registerName1("initWithFileDescriptor:"); - instancetype _objc_msgSend_805( + late final _sel_indexAtPosition_1 = _registerName1("indexAtPosition:"); + late final _sel_getIndexes_range_1 = _registerName1("getIndexes:range:"); + void _objc_msgSend_805( ffi.Pointer obj, ffi.Pointer sel, - int fd, + ffi.Pointer indexes, + _NSRange positionRange, ) { return __objc_msgSend_805( obj, sel, - fd, + indexes, + positionRange, ); } late final __objc_msgSend_805Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); late final __objc_msgSend_805 = __objc_msgSend_805Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, _NSRange)>(); - late final _sel_fileDescriptor1 = _registerName1("fileDescriptor"); - late final _sel_readDataToEndOfFile1 = _registerName1("readDataToEndOfFile"); - late final _sel_readDataOfLength_1 = _registerName1("readDataOfLength:"); - late final _sel_offsetInFile1 = _registerName1("offsetInFile"); - late final _sel_seekToEndOfFile1 = _registerName1("seekToEndOfFile"); - late final _sel_seekToFileOffset_1 = _registerName1("seekToFileOffset:"); - void _objc_msgSend_806( + int _objc_msgSend_806( ffi.Pointer obj, ffi.Pointer sel, - int offset, + ffi.Pointer otherObject, ) { return __objc_msgSend_806( obj, sel, - offset, + otherObject, ); } late final __objc_msgSend_806Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLongLong)>>('objc_msgSend'); + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_806 = __objc_msgSend_806Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_truncateFileAtOffset_1 = - _registerName1("truncateFileAtOffset:"); - late final _sel_synchronizeFile1 = _registerName1("synchronizeFile"); - late final _sel_closeFile1 = _registerName1("closeFile"); - late final _class_NSHTTPCookieStorage1 = _getClass1("NSHTTPCookieStorage"); - late final _sel_sharedHTTPCookieStorage1 = - _registerName1("sharedHTTPCookieStorage"); - ffi.Pointer _objc_msgSend_807( + late final _sel_getIndexes_1 = _registerName1("getIndexes:"); + void _objc_msgSend_807( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer indexes, ) { return __objc_msgSend_807( obj, sel, + indexes, ); } late final __objc_msgSend_807Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_807 = __objc_msgSend_807Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_sharedCookieStorageForGroupContainerIdentifier_1 = - _registerName1("sharedCookieStorageForGroupContainerIdentifier:"); + late final _class_NSInflectionRule1 = _getClass1("NSInflectionRule"); + late final _sel_automaticRule1 = _registerName1("automaticRule"); ffi.Pointer _objc_msgSend_808( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer identifier, ) { return __objc_msgSend_808( obj, sel, - identifier, ); } late final __objc_msgSend_808Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_808 = __objc_msgSend_808Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_cookies1 = _registerName1("cookies"); - late final _class_NSHTTPCookie1 = _getClass1("NSHTTPCookie"); - late final _sel_initWithProperties_1 = _registerName1("initWithProperties:"); - late final _sel_cookieWithProperties_1 = - _registerName1("cookieWithProperties:"); - ffi.Pointer _objc_msgSend_809( + late final _sel_canInflectLanguage_1 = _registerName1("canInflectLanguage:"); + late final _sel_canInflectPreferredLocalization1 = + _registerName1("canInflectPreferredLocalization"); + late final _class_NSMorphology1 = _getClass1("NSMorphology"); + late final _sel_grammaticalGender1 = _registerName1("grammaticalGender"); + int _objc_msgSend_809( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer properties, ) { return __objc_msgSend_809( obj, sel, - properties, ); } late final __objc_msgSend_809Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_809 = __objc_msgSend_809Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_requestHeaderFieldsWithCookies_1 = - _registerName1("requestHeaderFieldsWithCookies:"); - late final _sel_cookiesWithResponseHeaderFields_forURL_1 = - _registerName1("cookiesWithResponseHeaderFields:forURL:"); - ffi.Pointer _objc_msgSend_810( + late final _sel_setGrammaticalGender_1 = + _registerName1("setGrammaticalGender:"); + void _objc_msgSend_810( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer headerFields, - ffi.Pointer URL, + int value, ) { return __objc_msgSend_810( obj, sel, - headerFields, - URL, + value, ); } late final __objc_msgSend_810Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_810 = __objc_msgSend_810Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_properties1 = _registerName1("properties"); - late final _sel_value1 = _registerName1("value"); - late final _sel_expiresDate1 = _registerName1("expiresDate"); - late final _sel_isSessionOnly1 = _registerName1("isSessionOnly"); - late final _sel_isSecure1 = _registerName1("isSecure"); - late final _sel_isHTTPOnly1 = _registerName1("isHTTPOnly"); - late final _sel_comment1 = _registerName1("comment"); - late final _sel_commentURL1 = _registerName1("commentURL"); - late final _sel_portList1 = _registerName1("portList"); - late final _sel_sameSitePolicy1 = _registerName1("sameSitePolicy"); - late final _sel_setCookie_1 = _registerName1("setCookie:"); - void _objc_msgSend_811( + late final _sel_partOfSpeech1 = _registerName1("partOfSpeech"); + int _objc_msgSend_811( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer cookie, ) { return __objc_msgSend_811( obj, sel, - cookie, ); } late final __objc_msgSend_811Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_811 = __objc_msgSend_811Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_deleteCookie_1 = _registerName1("deleteCookie:"); - late final _sel_removeCookiesSinceDate_1 = - _registerName1("removeCookiesSinceDate:"); - late final _sel_cookiesForURL_1 = _registerName1("cookiesForURL:"); - late final _sel_setCookies_forURL_mainDocumentURL_1 = - _registerName1("setCookies:forURL:mainDocumentURL:"); + late final _sel_setPartOfSpeech_1 = _registerName1("setPartOfSpeech:"); void _objc_msgSend_812( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer cookies, - ffi.Pointer URL, - ffi.Pointer mainDocumentURL, + int value, ) { return __objc_msgSend_812( obj, sel, - cookies, - URL, - mainDocumentURL, + value, ); } late final __objc_msgSend_812Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_812 = __objc_msgSend_812Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_cookieAcceptPolicy1 = _registerName1("cookieAcceptPolicy"); + late final _sel_number1 = _registerName1("number"); int _objc_msgSend_813( ffi.Pointer obj, ffi.Pointer sel, @@ -23073,8 +23161,7 @@ class SentryCocoa { late final __objc_msgSend_813 = __objc_msgSend_813Ptr.asFunction< int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_setCookieAcceptPolicy_1 = - _registerName1("setCookieAcceptPolicy:"); + late final _sel_setNumber_1 = _registerName1("setNumber:"); void _objc_msgSend_814( ffi.Pointer obj, ffi.Pointer sel, @@ -23094,65 +23181,83 @@ class SentryCocoa { late final __objc_msgSend_814 = __objc_msgSend_814Ptr.asFunction< void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_sortedCookiesUsingDescriptors_1 = - _registerName1("sortedCookiesUsingDescriptors:"); - late final _class_NSURLSessionTask1 = _getClass1("NSURLSessionTask"); - late final _sel_taskIdentifier1 = _registerName1("taskIdentifier"); - late final _class_NSURLRequest1 = _getClass1("NSURLRequest"); - late final _sel_requestWithURL_1 = _registerName1("requestWithURL:"); - late final _sel_supportsSecureCoding1 = - _registerName1("supportsSecureCoding"); - late final _sel_requestWithURL_cachePolicy_timeoutInterval_1 = - _registerName1("requestWithURL:cachePolicy:timeoutInterval:"); - instancetype _objc_msgSend_815( + late final _class_NSMorphologyCustomPronoun1 = + _getClass1("NSMorphologyCustomPronoun"); + late final _sel_isSupportedForLanguage_1 = + _registerName1("isSupportedForLanguage:"); + late final _sel_requiredKeysForLanguage_1 = + _registerName1("requiredKeysForLanguage:"); + late final _sel_subjectForm1 = _registerName1("subjectForm"); + late final _sel_setSubjectForm_1 = _registerName1("setSubjectForm:"); + late final _sel_objectForm1 = _registerName1("objectForm"); + late final _sel_setObjectForm_1 = _registerName1("setObjectForm:"); + late final _sel_possessiveForm1 = _registerName1("possessiveForm"); + late final _sel_setPossessiveForm_1 = _registerName1("setPossessiveForm:"); + late final _sel_possessiveAdjectiveForm1 = + _registerName1("possessiveAdjectiveForm"); + late final _sel_setPossessiveAdjectiveForm_1 = + _registerName1("setPossessiveAdjectiveForm:"); + late final _sel_reflexiveForm1 = _registerName1("reflexiveForm"); + late final _sel_setReflexiveForm_1 = _registerName1("setReflexiveForm:"); + late final _sel_customPronounForLanguage_1 = + _registerName1("customPronounForLanguage:"); + ffi.Pointer _objc_msgSend_815( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer URL, - int cachePolicy, - double timeoutInterval, + ffi.Pointer language, ) { return __objc_msgSend_815( obj, sel, - URL, - cachePolicy, - timeoutInterval, + language, ); } late final __objc_msgSend_815Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Int32, ffi.Double)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_815 = __objc_msgSend_815Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, double)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_initWithURL_cachePolicy_timeoutInterval_1 = - _registerName1("initWithURL:cachePolicy:timeoutInterval:"); - late final _sel_URL1 = _registerName1("URL"); - late final _sel_cachePolicy1 = _registerName1("cachePolicy"); - int _objc_msgSend_816( + late final _sel_setCustomPronoun_forLanguage_error_1 = + _registerName1("setCustomPronoun:forLanguage:error:"); + bool _objc_msgSend_816( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer features, + ffi.Pointer language, + ffi.Pointer> error, ) { return __objc_msgSend_816( obj, sel, + features, + language, + error, ); } late final __objc_msgSend_816Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_816 = __objc_msgSend_816Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); - late final _sel_timeoutInterval1 = _registerName1("timeoutInterval"); - late final _sel_mainDocumentURL1 = _registerName1("mainDocumentURL"); - late final _sel_networkServiceType1 = _registerName1("networkServiceType"); - int _objc_msgSend_817( + late final _sel_isUnspecified1 = _registerName1("isUnspecified"); + late final _sel_userMorphology1 = _registerName1("userMorphology"); + ffi.Pointer _objc_msgSend_817( ffi.Pointer obj, ffi.Pointer sel, ) { @@ -23164,48 +23269,41 @@ class SentryCocoa { late final __objc_msgSend_817Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_817 = __objc_msgSend_817Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_allowsCellularAccess1 = - _registerName1("allowsCellularAccess"); - late final _sel_allowsExpensiveNetworkAccess1 = - _registerName1("allowsExpensiveNetworkAccess"); - late final _sel_allowsConstrainedNetworkAccess1 = - _registerName1("allowsConstrainedNetworkAccess"); - late final _sel_assumesHTTP3Capable1 = _registerName1("assumesHTTP3Capable"); - late final _sel_attribution1 = _registerName1("attribution"); - int _objc_msgSend_818( + late final _class_NSOperationQueue1 = _getClass1("NSOperationQueue"); + late final _class_NSOperation1 = _getClass1("NSOperation"); + late final _sel_isConcurrent1 = _registerName1("isConcurrent"); + late final _sel_isAsynchronous1 = _registerName1("isAsynchronous"); + late final _sel_isReady1 = _registerName1("isReady"); + late final _sel_addDependency_1 = _registerName1("addDependency:"); + void _objc_msgSend_818( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer op, ) { return __objc_msgSend_818( obj, sel, + op, ); } late final __objc_msgSend_818Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_818 = __objc_msgSend_818Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_requiresDNSSECValidation1 = - _registerName1("requiresDNSSECValidation"); - late final _sel_HTTPMethod1 = _registerName1("HTTPMethod"); - late final _sel_allHTTPHeaderFields1 = _registerName1("allHTTPHeaderFields"); - late final _sel_valueForHTTPHeaderField_1 = - _registerName1("valueForHTTPHeaderField:"); - late final _sel_HTTPBody1 = _registerName1("HTTPBody"); - late final _class_NSInputStream1 = _getClass1("NSInputStream"); - late final _class_NSStream1 = _getClass1("NSStream"); - late final _sel_open1 = _registerName1("open"); - late final _sel_close1 = _registerName1("close"); - late final _sel_streamStatus1 = _registerName1("streamStatus"); + late final _sel_removeDependency_1 = _registerName1("removeDependency:"); + late final _sel_dependencies1 = _registerName1("dependencies"); + late final _sel_queuePriority1 = _registerName1("queuePriority"); int _objc_msgSend_819( ffi.Pointer obj, ffi.Pointer sel, @@ -23223,292 +23321,272 @@ class SentryCocoa { late final __objc_msgSend_819 = __objc_msgSend_819Ptr.asFunction< int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_streamError1 = _registerName1("streamError"); - late final _class_NSOutputStream1 = _getClass1("NSOutputStream"); - late final _sel_write_maxLength_1 = _registerName1("write:maxLength:"); - int _objc_msgSend_820( + late final _sel_setQueuePriority_1 = _registerName1("setQueuePriority:"); + void _objc_msgSend_820( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer buffer, - int len, + int value, ) { return __objc_msgSend_820( obj, sel, - buffer, - len, + value, ); } late final __objc_msgSend_820Ptr = _lookup< ffi.NativeFunction< - ffi.Long Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_820 = __objc_msgSend_820Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_hasSpaceAvailable1 = _registerName1("hasSpaceAvailable"); - late final _sel_initToMemory1 = _registerName1("initToMemory"); - late final _sel_initToBuffer_capacity_1 = - _registerName1("initToBuffer:capacity:"); - instancetype _objc_msgSend_821( + late final _sel_completionBlock1 = _registerName1("completionBlock"); + late final _sel_setCompletionBlock_1 = _registerName1("setCompletionBlock:"); + late final _sel_waitUntilFinished1 = _registerName1("waitUntilFinished"); + late final _sel_addOperation_1 = _registerName1("addOperation:"); + late final _sel_addOperations_waitUntilFinished_1 = + _registerName1("addOperations:waitUntilFinished:"); + void _objc_msgSend_821( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer buffer, - int capacity, + ffi.Pointer ops, + bool wait, ) { return __objc_msgSend_821( obj, sel, - buffer, - capacity, + ops, + wait, ); } late final __objc_msgSend_821Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); late final __objc_msgSend_821 = __objc_msgSend_821Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); - late final _sel_initWithURL_append_1 = _registerName1("initWithURL:append:"); - late final _sel_initToFileAtPath_append_1 = - _registerName1("initToFileAtPath:append:"); - late final _sel_outputStreamToMemory1 = - _registerName1("outputStreamToMemory"); - late final _sel_outputStreamToBuffer_capacity_1 = - _registerName1("outputStreamToBuffer:capacity:"); - late final _sel_outputStreamToFileAtPath_append_1 = - _registerName1("outputStreamToFileAtPath:append:"); - late final _sel_outputStreamWithURL_append_1 = - _registerName1("outputStreamWithURL:append:"); - late final _sel_getStreamsToHostWithName_port_inputStream_outputStream_1 = - _registerName1("getStreamsToHostWithName:port:inputStream:outputStream:"); - void _objc_msgSend_822( + late final _sel_addOperationWithBlock_1 = + _registerName1("addOperationWithBlock:"); + late final _sel_addBarrierBlock_1 = _registerName1("addBarrierBlock:"); + late final _sel_maxConcurrentOperationCount1 = + _registerName1("maxConcurrentOperationCount"); + late final _sel_setMaxConcurrentOperationCount_1 = + _registerName1("setMaxConcurrentOperationCount:"); + late final _sel_isSuspended1 = _registerName1("isSuspended"); + late final _sel_setSuspended_1 = _registerName1("setSuspended:"); + late final _sel_underlyingQueue1 = _registerName1("underlyingQueue"); + ffi.Pointer _objc_msgSend_822( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, ) { return __objc_msgSend_822( obj, sel, - hostname, - port, - inputStream, - outputStream, ); } late final __objc_msgSend_822Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_822 = __objc_msgSend_822Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer>)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _class_NSHost1 = _getClass1("NSHost"); - late final _sel_currentHost1 = _registerName1("currentHost"); - late final _sel_hostWithName_1 = _registerName1("hostWithName:"); - late final _sel_hostWithAddress_1 = _registerName1("hostWithAddress:"); - late final _sel_isEqualToHost_1 = _registerName1("isEqualToHost:"); - bool _objc_msgSend_823( + late final _sel_setUnderlyingQueue_1 = _registerName1("setUnderlyingQueue:"); + void _objc_msgSend_823( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer aHost, + ffi.Pointer value, ) { return __objc_msgSend_823( obj, sel, - aHost, + value, ); } late final __objc_msgSend_823Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_823 = __objc_msgSend_823Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, + void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); - late final _sel_names1 = _registerName1("names"); - late final _sel_address1 = _registerName1("address"); - late final _sel_addresses1 = _registerName1("addresses"); - late final _sel_localizedName1 = _registerName1("localizedName"); - late final _sel_setHostCacheEnabled_1 = - _registerName1("setHostCacheEnabled:"); - void _objc_msgSend_824( + late final _sel_cancelAllOperations1 = _registerName1("cancelAllOperations"); + late final _sel_waitUntilAllOperationsAreFinished1 = + _registerName1("waitUntilAllOperationsAreFinished"); + late final _sel_currentQueue1 = _registerName1("currentQueue"); + ffi.Pointer _objc_msgSend_824( ffi.Pointer obj, ffi.Pointer sel, - bool flag, ) { return __objc_msgSend_824( obj, sel, - flag, ); } late final __objc_msgSend_824Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_824 = __objc_msgSend_824Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, bool)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_isHostCacheEnabled1 = _registerName1("isHostCacheEnabled"); - late final _sel_flushHostCache1 = _registerName1("flushHostCache"); - late final _sel_getStreamsToHost_port_inputStream_outputStream_1 = - _registerName1("getStreamsToHost:port:inputStream:outputStream:"); - void _objc_msgSend_825( + late final _sel_mainQueue1 = _registerName1("mainQueue"); + late final _sel_operations1 = _registerName1("operations"); + late final _sel_operationCount1 = _registerName1("operationCount"); + late final _class_NSPointerArray1 = _getClass1("NSPointerArray"); + late final _sel_initWithOptions_1 = _registerName1("initWithOptions:"); + instancetype _objc_msgSend_825( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, + int options, ) { return __objc_msgSend_825( obj, sel, - host, - port, - inputStream, - outputStream, + options, ); } late final __objc_msgSend_825Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_825 = __objc_msgSend_825Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer>)>(); + instancetype Function( + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1 = - _registerName1("getBoundStreamsWithBufferSize:inputStream:outputStream:"); - void _objc_msgSend_826( + late final _class_NSPointerFunctions1 = _getClass1("NSPointerFunctions"); + late final _sel_pointerFunctionsWithOptions_1 = + _registerName1("pointerFunctionsWithOptions:"); + ffi.Pointer _objc_msgSend_826( ffi.Pointer obj, ffi.Pointer sel, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, + int options, ) { return __objc_msgSend_826( obj, sel, - bufferSize, - inputStream, - outputStream, + options, ); } late final __objc_msgSend_826Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_826 = __objc_msgSend_826Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>, - ffi.Pointer>)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_read_maxLength_1 = _registerName1("read:maxLength:"); - late final _sel_getBuffer_length_1 = _registerName1("getBuffer:length:"); - bool _objc_msgSend_827( + late final _sel_hashFunction1 = _registerName1("hashFunction"); + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + _objc_msgSend_827( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer> buffer, - ffi.Pointer len, ) { return __objc_msgSend_827( obj, sel, - buffer, - len, ); } late final __objc_msgSend_827Ptr = _lookup< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_827 = __objc_msgSend_827Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer)>(); + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); + late final __objc_msgSend_827 = __objc_msgSend_827Ptr.asFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_hasBytesAvailable1 = _registerName1("hasBytesAvailable"); - late final _sel_initWithFileAtPath_1 = _registerName1("initWithFileAtPath:"); - late final _sel_inputStreamWithData_1 = - _registerName1("inputStreamWithData:"); - late final _sel_inputStreamWithFileAtPath_1 = - _registerName1("inputStreamWithFileAtPath:"); - late final _sel_inputStreamWithURL_1 = _registerName1("inputStreamWithURL:"); - late final _sel_HTTPBodyStream1 = _registerName1("HTTPBodyStream"); - ffi.Pointer _objc_msgSend_828( + late final _sel_setHashFunction_1 = _registerName1("setHashFunction:"); + void _objc_msgSend_828( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value, ) { return __objc_msgSend_828( obj, sel, + value, ); } late final __objc_msgSend_828Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>( + 'objc_msgSend'); late final __objc_msgSend_828 = __objc_msgSend_828Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>(); - late final _sel_HTTPShouldHandleCookies1 = - _registerName1("HTTPShouldHandleCookies"); - late final _sel_HTTPShouldUsePipelining1 = - _registerName1("HTTPShouldUsePipelining"); - late final _sel_originalRequest1 = _registerName1("originalRequest"); - ffi.Pointer _objc_msgSend_829( + late final _sel_isEqualFunction1 = _registerName1("isEqualFunction"); + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + _objc_msgSend_829( ffi.Pointer obj, ffi.Pointer sel, ) { @@ -23519,61 +23597,85 @@ class SentryCocoa { } late final __objc_msgSend_829Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); late final __objc_msgSend_829 = __objc_msgSend_829Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_currentRequest1 = _registerName1("currentRequest"); - late final _class_NSURLResponse1 = _getClass1("NSURLResponse"); - late final _sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_1 = - _registerName1( - "initWithURL:MIMEType:expectedContentLength:textEncodingName:"); - instancetype _objc_msgSend_830( + late final _sel_setIsEqualFunction_1 = _registerName1("setIsEqualFunction:"); + void _objc_msgSend_830( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer URL, - ffi.Pointer MIMEType, - int length, - ffi.Pointer name, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value, ) { return __objc_msgSend_830( obj, sel, - URL, - MIMEType, - length, - name, + value, ); } late final __objc_msgSend_830Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long, - ffi.Pointer)>>('objc_msgSend'); + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>( + 'objc_msgSend'); late final __objc_msgSend_830 = __objc_msgSend_830Ptr.asFunction< - instancetype Function( + void Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>(); - late final _sel_MIMEType1 = _registerName1("MIMEType"); - late final _sel_expectedContentLength1 = - _registerName1("expectedContentLength"); - late final _sel_textEncodingName1 = _registerName1("textEncodingName"); - late final _sel_suggestedFilename1 = _registerName1("suggestedFilename"); - late final _sel_response1 = _registerName1("response"); - ffi.Pointer _objc_msgSend_831( + late final _sel_sizeFunction1 = _registerName1("sizeFunction"); + ffi.Pointer< + ffi.NativeFunction)>> + _objc_msgSend_831( ffi.Pointer obj, ffi.Pointer sel, ) { @@ -23584,91 +23686,94 @@ class SentryCocoa { } late final __objc_msgSend_831Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); late final __objc_msgSend_831 = __objc_msgSend_831Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer< + ffi + .NativeFunction)>> + Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_progress1 = _registerName1("progress"); - late final _sel_earliestBeginDate1 = _registerName1("earliestBeginDate"); - late final _sel_setEarliestBeginDate_1 = - _registerName1("setEarliestBeginDate:"); - late final _sel_countOfBytesClientExpectsToSend1 = - _registerName1("countOfBytesClientExpectsToSend"); - late final _sel_setCountOfBytesClientExpectsToSend_1 = - _registerName1("setCountOfBytesClientExpectsToSend:"); - late final _sel_countOfBytesClientExpectsToReceive1 = - _registerName1("countOfBytesClientExpectsToReceive"); - late final _sel_setCountOfBytesClientExpectsToReceive_1 = - _registerName1("setCountOfBytesClientExpectsToReceive:"); - late final _sel_countOfBytesSent1 = _registerName1("countOfBytesSent"); - late final _sel_countOfBytesReceived1 = - _registerName1("countOfBytesReceived"); - late final _sel_countOfBytesExpectedToSend1 = - _registerName1("countOfBytesExpectedToSend"); - late final _sel_countOfBytesExpectedToReceive1 = - _registerName1("countOfBytesExpectedToReceive"); - late final _sel_taskDescription1 = _registerName1("taskDescription"); - late final _sel_setTaskDescription_1 = _registerName1("setTaskDescription:"); - late final _sel_state1 = _registerName1("state"); - int _objc_msgSend_832( + late final _sel_setSizeFunction_1 = _registerName1("setSizeFunction:"); + void _objc_msgSend_832( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer< + ffi + .NativeFunction)>> + value, ) { return __objc_msgSend_832( obj, sel, + value, ); } late final __objc_msgSend_832Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>('objc_msgSend'); late final __objc_msgSend_832 = __objc_msgSend_832Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>(); - late final _sel_suspend1 = _registerName1("suspend"); - late final _sel_priority1 = _registerName1("priority"); - late final _sel_setPriority_1 = _registerName1("setPriority:"); - void _objc_msgSend_833( + late final _sel_descriptionFunction1 = _registerName1("descriptionFunction"); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + _objc_msgSend_833( ffi.Pointer obj, ffi.Pointer sel, - double value, ) { return __objc_msgSend_833( obj, sel, - value, ); } - late final __objc_msgSend_833Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Float)>>('objc_msgSend'); + late final __objc_msgSend_833Ptr = + _lookup< + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); late final __objc_msgSend_833 = __objc_msgSend_833Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, double)>(); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_prefersIncrementalDelivery1 = - _registerName1("prefersIncrementalDelivery"); - late final _sel_setPrefersIncrementalDelivery_1 = - _registerName1("setPrefersIncrementalDelivery:"); - late final _sel_storeCookies_forTask_1 = - _registerName1("storeCookies:forTask:"); + late final _sel_setDescriptionFunction_1 = + _registerName1("setDescriptionFunction:"); void _objc_msgSend_834( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer cookies, - ffi.Pointer task, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + value, ) { return __objc_msgSend_834( obj, sel, - cookies, - task, + value, ); } @@ -23677,179 +23782,275 @@ class SentryCocoa { ffi.Void Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer)>>)>>('objc_msgSend'); late final __objc_msgSend_834 = __objc_msgSend_834Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>>)>(); - late final _sel_getCookiesForTask_completionHandler_1 = - _registerName1("getCookiesForTask:completionHandler:"); - void _objc_msgSend_835( + late final _sel_relinquishFunction1 = _registerName1("relinquishFunction"); + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + _objc_msgSend_835( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer task, - ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_835( obj, sel, - task, - completionHandler, ); } late final __objc_msgSend_835Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); late final __objc_msgSend_835 = __objc_msgSend_835Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + Function(ffi.Pointer, ffi.Pointer)>(); - late final _class_NSIndexPath1 = _getClass1("NSIndexPath"); - late final _sel_indexPathWithIndex_1 = _registerName1("indexPathWithIndex:"); - late final _sel_indexPathWithIndexes_length_1 = - _registerName1("indexPathWithIndexes:length:"); - instancetype _objc_msgSend_836( + late final _sel_setRelinquishFunction_1 = + _registerName1("setRelinquishFunction:"); + void _objc_msgSend_836( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer indexes, - int length, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value, ) { return __objc_msgSend_836( obj, sel, - indexes, - length, + value, ); } late final __objc_msgSend_836Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong)>>('objc_msgSend'); + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>>( + 'objc_msgSend'); late final __objc_msgSend_836 = __objc_msgSend_836Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>>)>(); - late final _sel_initWithIndexes_length_1 = - _registerName1("initWithIndexes:length:"); - late final _sel_indexPathByAddingIndex_1 = - _registerName1("indexPathByAddingIndex:"); - ffi.Pointer _objc_msgSend_837( + late final _sel_acquireFunction1 = _registerName1("acquireFunction"); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>, + ffi.Bool)>> _objc_msgSend_837( ffi.Pointer obj, ffi.Pointer sel, - int index, ) { return __objc_msgSend_837( obj, sel, - index, ); } late final __objc_msgSend_837Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + ffi.NativeFunction< + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>> + Function(ffi.Pointer, ffi.Pointer)>>( + 'objc_msgSend'); late final __objc_msgSend_837 = __objc_msgSend_837Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>> + Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_indexPathByRemovingLastIndex1 = - _registerName1("indexPathByRemovingLastIndex"); - ffi.Pointer _objc_msgSend_838( + late final _sel_setAcquireFunction_1 = _registerName1("setAcquireFunction:"); + void _objc_msgSend_838( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>, + ffi.Bool)>> + value, ) { return __objc_msgSend_838( obj, sel, + value, ); } late final __objc_msgSend_838Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>>)>>('objc_msgSend'); late final __objc_msgSend_838 = __objc_msgSend_838Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>>)>(); - late final _sel_indexAtPosition_1 = _registerName1("indexAtPosition:"); - late final _sel_getIndexes_range_1 = _registerName1("getIndexes:range:"); - void _objc_msgSend_839( + late final _sel_usesStrongWriteBarrier1 = + _registerName1("usesStrongWriteBarrier"); + late final _sel_setUsesStrongWriteBarrier_1 = + _registerName1("setUsesStrongWriteBarrier:"); + late final _sel_usesWeakReadAndWriteBarriers1 = + _registerName1("usesWeakReadAndWriteBarriers"); + late final _sel_setUsesWeakReadAndWriteBarriers_1 = + _registerName1("setUsesWeakReadAndWriteBarriers:"); + late final _sel_initWithPointerFunctions_1 = + _registerName1("initWithPointerFunctions:"); + instancetype _objc_msgSend_839( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer indexes, - _NSRange positionRange, + ffi.Pointer functions, ) { return __objc_msgSend_839( obj, sel, - indexes, - positionRange, + functions, ); } late final __objc_msgSend_839Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_839 = __objc_msgSend_839Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, _NSRange)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - int _objc_msgSend_840( + late final _sel_pointerArrayWithOptions_1 = + _registerName1("pointerArrayWithOptions:"); + ffi.Pointer _objc_msgSend_840( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer otherObject, + int options, ) { return __objc_msgSend_840( obj, sel, - otherObject, + options, ); } late final __objc_msgSend_840Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_840 = __objc_msgSend_840Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + late final __objc_msgSend_840 = __objc_msgSend_840Ptr.asFunction< + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_getIndexes_1 = _registerName1("getIndexes:"); - void _objc_msgSend_841( + late final _sel_pointerArrayWithPointerFunctions_1 = + _registerName1("pointerArrayWithPointerFunctions:"); + ffi.Pointer _objc_msgSend_841( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer indexes, + ffi.Pointer functions, ) { return __objc_msgSend_841( obj, sel, - indexes, + functions, ); } late final __objc_msgSend_841Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_841 = __objc_msgSend_841Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _class_NSInflectionRule1 = _getClass1("NSInflectionRule"); - late final _sel_automaticRule1 = _registerName1("automaticRule"); + late final _sel_pointerFunctions1 = _registerName1("pointerFunctions"); ffi.Pointer _objc_msgSend_842( ffi.Pointer obj, ffi.Pointer sel, @@ -23868,51 +24069,65 @@ class SentryCocoa { ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>(); - late final _sel_canInflectLanguage_1 = _registerName1("canInflectLanguage:"); - late final _sel_canInflectPreferredLocalization1 = - _registerName1("canInflectPreferredLocalization"); - late final _class_NSMorphology1 = _getClass1("NSMorphology"); - late final _sel_grammaticalGender1 = _registerName1("grammaticalGender"); - int _objc_msgSend_843( + late final _sel_pointerAtIndex_1 = _registerName1("pointerAtIndex:"); + ffi.Pointer _objc_msgSend_843( ffi.Pointer obj, ffi.Pointer sel, + int index, ) { return __objc_msgSend_843( obj, sel, + index, ); } late final __objc_msgSend_843Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_843 = __objc_msgSend_843Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_setGrammaticalGender_1 = - _registerName1("setGrammaticalGender:"); + late final _sel_addPointer_1 = _registerName1("addPointer:"); + late final _sel_removePointerAtIndex_1 = + _registerName1("removePointerAtIndex:"); + late final _sel_insertPointer_atIndex_1 = + _registerName1("insertPointer:atIndex:"); + late final _sel_replacePointerAtIndex_withPointer_1 = + _registerName1("replacePointerAtIndex:withPointer:"); void _objc_msgSend_844( ffi.Pointer obj, ffi.Pointer sel, - int value, + int index, + ffi.Pointer item, ) { return __objc_msgSend_844( obj, sel, - value, + index, + item, ); } late final __objc_msgSend_844Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_844 = __objc_msgSend_844Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); - late final _sel_partOfSpeech1 = _registerName1("partOfSpeech"); - int _objc_msgSend_845( + late final _sel_compact1 = _registerName1("compact"); + late final _sel_setCount_1 = _registerName1("setCount:"); + late final _sel_pointerArrayWithStrongObjects1 = + _registerName1("pointerArrayWithStrongObjects"); + late final _sel_pointerArrayWithWeakObjects1 = + _registerName1("pointerArrayWithWeakObjects"); + late final _sel_strongObjectsPointerArray1 = + _registerName1("strongObjectsPointerArray"); + ffi.Pointer _objc_msgSend_845( ffi.Pointer obj, ffi.Pointer sel, ) { @@ -23924,37 +24139,54 @@ class SentryCocoa { late final __objc_msgSend_845Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_845 = __objc_msgSend_845Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setPartOfSpeech_1 = _registerName1("setPartOfSpeech:"); - void _objc_msgSend_846( + late final _sel_weakObjectsPointerArray1 = + _registerName1("weakObjectsPointerArray"); + late final _class_NSProcessInfo1 = _getClass1("NSProcessInfo"); + late final _sel_processInfo1 = _registerName1("processInfo"); + ffi.Pointer _objc_msgSend_846( ffi.Pointer obj, ffi.Pointer sel, - int value, ) { return __objc_msgSend_846( obj, sel, - value, ); } late final __objc_msgSend_846Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_846 = __objc_msgSend_846Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_number1 = _registerName1("number"); - int _objc_msgSend_847( + late final _sel_environment1 = _registerName1("environment"); + late final _sel_hostName1 = _registerName1("hostName"); + late final _sel_processName1 = _registerName1("processName"); + late final _sel_setProcessName_1 = _registerName1("setProcessName:"); + late final _sel_processIdentifier1 = _registerName1("processIdentifier"); + late final _sel_globallyUniqueString1 = + _registerName1("globallyUniqueString"); + late final _sel_operatingSystem1 = _registerName1("operatingSystem"); + late final _sel_operatingSystemName1 = _registerName1("operatingSystemName"); + late final _sel_operatingSystemVersionString1 = + _registerName1("operatingSystemVersionString"); + late final _sel_operatingSystemVersion1 = + _registerName1("operatingSystemVersion"); + void _objc_msgSend_847( + ffi.Pointer stret, ffi.Pointer obj, ffi.Pointer sel, ) { return __objc_msgSend_847( + stret, obj, sel, ); @@ -23962,154 +24194,164 @@ class SentryCocoa { late final __objc_msgSend_847Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend_stret'); late final __objc_msgSend_847 = __objc_msgSend_847Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setNumber_1 = _registerName1("setNumber:"); - void _objc_msgSend_848( + late final _sel_processorCount1 = _registerName1("processorCount"); + late final _sel_activeProcessorCount1 = + _registerName1("activeProcessorCount"); + late final _sel_physicalMemory1 = _registerName1("physicalMemory"); + late final _sel_isOperatingSystemAtLeastVersion_1 = + _registerName1("isOperatingSystemAtLeastVersion:"); + bool _objc_msgSend_848( ffi.Pointer obj, ffi.Pointer sel, - int value, + NSOperatingSystemVersion version, ) { return __objc_msgSend_848( obj, sel, - value, + version, ); } late final __objc_msgSend_848Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + NSOperatingSystemVersion)>>('objc_msgSend'); late final __objc_msgSend_848 = __objc_msgSend_848Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + bool Function(ffi.Pointer, ffi.Pointer, + NSOperatingSystemVersion)>(); - late final _class_NSMorphologyCustomPronoun1 = - _getClass1("NSMorphologyCustomPronoun"); - late final _sel_isSupportedForLanguage_1 = - _registerName1("isSupportedForLanguage:"); - late final _sel_requiredKeysForLanguage_1 = - _registerName1("requiredKeysForLanguage:"); - late final _sel_subjectForm1 = _registerName1("subjectForm"); - late final _sel_setSubjectForm_1 = _registerName1("setSubjectForm:"); - late final _sel_objectForm1 = _registerName1("objectForm"); - late final _sel_setObjectForm_1 = _registerName1("setObjectForm:"); - late final _sel_possessiveForm1 = _registerName1("possessiveForm"); - late final _sel_setPossessiveForm_1 = _registerName1("setPossessiveForm:"); - late final _sel_possessiveAdjectiveForm1 = - _registerName1("possessiveAdjectiveForm"); - late final _sel_setPossessiveAdjectiveForm_1 = - _registerName1("setPossessiveAdjectiveForm:"); - late final _sel_reflexiveForm1 = _registerName1("reflexiveForm"); - late final _sel_setReflexiveForm_1 = _registerName1("setReflexiveForm:"); - late final _sel_customPronounForLanguage_1 = - _registerName1("customPronounForLanguage:"); + late final _sel_systemUptime1 = _registerName1("systemUptime"); + late final _sel_disableSuddenTermination1 = + _registerName1("disableSuddenTermination"); + late final _sel_enableSuddenTermination1 = + _registerName1("enableSuddenTermination"); + late final _sel_disableAutomaticTermination_1 = + _registerName1("disableAutomaticTermination:"); + late final _sel_enableAutomaticTermination_1 = + _registerName1("enableAutomaticTermination:"); + late final _sel_automaticTerminationSupportEnabled1 = + _registerName1("automaticTerminationSupportEnabled"); + late final _sel_setAutomaticTerminationSupportEnabled_1 = + _registerName1("setAutomaticTerminationSupportEnabled:"); + late final _sel_beginActivityWithOptions_reason_1 = + _registerName1("beginActivityWithOptions:reason:"); ffi.Pointer _objc_msgSend_849( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer language, + int options, + ffi.Pointer reason, ) { return __objc_msgSend_849( obj, sel, - language, + options, + reason, ); } late final __objc_msgSend_849Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_849 = __objc_msgSend_849Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer, int, ffi.Pointer)>(); - late final _sel_setCustomPronoun_forLanguage_error_1 = - _registerName1("setCustomPronoun:forLanguage:error:"); - bool _objc_msgSend_850( + late final _sel_endActivity_1 = _registerName1("endActivity:"); + late final _sel_performActivityWithOptions_reason_usingBlock_1 = + _registerName1("performActivityWithOptions:reason:usingBlock:"); + void _objc_msgSend_850( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer features, - ffi.Pointer language, - ffi.Pointer> error, + int options, + ffi.Pointer reason, + ffi.Pointer<_ObjCBlock> block, ) { return __objc_msgSend_850( obj, sel, - features, - language, - error, + options, + reason, + block, ); } late final __objc_msgSend_850Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_850 = __objc_msgSend_850Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_isUnspecified1 = _registerName1("isUnspecified"); - late final _sel_userMorphology1 = _registerName1("userMorphology"); - ffi.Pointer _objc_msgSend_851( + late final _sel_performExpiringActivityWithReason_usingBlock_1 = + _registerName1("performExpiringActivityWithReason:usingBlock:"); + void _objc_msgSend_851( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer reason, + ffi.Pointer<_ObjCBlock> block, ) { return __objc_msgSend_851( obj, sel, + reason, + block, ); } late final __objc_msgSend_851Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_851 = __objc_msgSend_851Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - late final _class_NSOperationQueue1 = _getClass1("NSOperationQueue"); - late final _class_NSOperation1 = _getClass1("NSOperation"); - late final _sel_isConcurrent1 = _registerName1("isConcurrent"); - late final _sel_isAsynchronous1 = _registerName1("isAsynchronous"); - late final _sel_isReady1 = _registerName1("isReady"); - late final _sel_addDependency_1 = _registerName1("addDependency:"); - void _objc_msgSend_852( + late final _sel_userName1 = _registerName1("userName"); + late final _sel_fullUserName1 = _registerName1("fullUserName"); + late final _sel_thermalState1 = _registerName1("thermalState"); + int _objc_msgSend_852( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer op, ) { return __objc_msgSend_852( obj, sel, - op, ); } late final __objc_msgSend_852Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_852 = __objc_msgSend_852Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_removeDependency_1 = _registerName1("removeDependency:"); - late final _sel_dependencies1 = _registerName1("dependencies"); - late final _sel_queuePriority1 = _registerName1("queuePriority"); + late final _sel_isLowPowerModeEnabled1 = + _registerName1("isLowPowerModeEnabled"); + late final _sel_isMacCatalystApp1 = _registerName1("isMacCatalystApp"); + late final _sel_isiOSAppOnMac1 = _registerName1("isiOSAppOnMac"); + late final _class_NSTextCheckingResult1 = _getClass1("NSTextCheckingResult"); + late final _sel_resultType1 = _registerName1("resultType"); int _objc_msgSend_853( ffi.Pointer obj, ffi.Pointer sel, @@ -24127,1218 +24369,1153 @@ class SentryCocoa { late final __objc_msgSend_853 = __objc_msgSend_853Ptr.asFunction< int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_setQueuePriority_1 = _registerName1("setQueuePriority:"); - void _objc_msgSend_854( + late final _sel_range1 = _registerName1("range"); + late final _sel_orthography1 = _registerName1("orthography"); + ffi.Pointer _objc_msgSend_854( ffi.Pointer obj, ffi.Pointer sel, - int value, ) { return __objc_msgSend_854( obj, sel, - value, ); } late final __objc_msgSend_854Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_854 = __objc_msgSend_854Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_completionBlock1 = _registerName1("completionBlock"); - late final _sel_setCompletionBlock_1 = _registerName1("setCompletionBlock:"); - late final _sel_waitUntilFinished1 = _registerName1("waitUntilFinished"); - late final _sel_addOperation_1 = _registerName1("addOperation:"); - late final _sel_addOperations_waitUntilFinished_1 = - _registerName1("addOperations:waitUntilFinished:"); - void _objc_msgSend_855( + late final _sel_grammarDetails1 = _registerName1("grammarDetails"); + late final _sel_duration1 = _registerName1("duration"); + late final _sel_components1 = _registerName1("components"); + late final _sel_replacementString1 = _registerName1("replacementString"); + late final _sel_alternativeStrings1 = _registerName1("alternativeStrings"); + late final _class_NSRegularExpression1 = _getClass1("NSRegularExpression"); + late final _sel_regularExpressionWithPattern_options_error_1 = + _registerName1("regularExpressionWithPattern:options:error:"); + ffi.Pointer _objc_msgSend_855( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer ops, - bool wait, + ffi.Pointer pattern, + int options, + ffi.Pointer> error, ) { return __objc_msgSend_855( obj, sel, - ops, - wait, + pattern, + options, + error, ); } late final __objc_msgSend_855Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_855 = __objc_msgSend_855Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); - late final _sel_addOperationWithBlock_1 = - _registerName1("addOperationWithBlock:"); - late final _sel_addBarrierBlock_1 = _registerName1("addBarrierBlock:"); - late final _sel_maxConcurrentOperationCount1 = - _registerName1("maxConcurrentOperationCount"); - late final _sel_setMaxConcurrentOperationCount_1 = - _registerName1("setMaxConcurrentOperationCount:"); - late final _sel_isSuspended1 = _registerName1("isSuspended"); - late final _sel_setSuspended_1 = _registerName1("setSuspended:"); - late final _sel_underlyingQueue1 = _registerName1("underlyingQueue"); - ffi.Pointer _objc_msgSend_856( + late final _sel_initWithPattern_options_error_1 = + _registerName1("initWithPattern:options:error:"); + instancetype _objc_msgSend_856( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer pattern, + int options, + ffi.Pointer> error, ) { return __objc_msgSend_856( obj, sel, + pattern, + options, + error, ); } late final __objc_msgSend_856Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_856 = __objc_msgSend_856Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); - late final _sel_setUnderlyingQueue_1 = _registerName1("setUnderlyingQueue:"); - void _objc_msgSend_857( + late final _sel_pattern1 = _registerName1("pattern"); + late final _sel_options1 = _registerName1("options"); + int _objc_msgSend_857( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, ) { return __objc_msgSend_857( obj, sel, - value, ); } late final __objc_msgSend_857Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_857 = __objc_msgSend_857Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_cancelAllOperations1 = _registerName1("cancelAllOperations"); - late final _sel_waitUntilAllOperationsAreFinished1 = - _registerName1("waitUntilAllOperationsAreFinished"); - late final _sel_currentQueue1 = _registerName1("currentQueue"); - ffi.Pointer _objc_msgSend_858( + late final _sel_numberOfCaptureGroups1 = + _registerName1("numberOfCaptureGroups"); + late final _sel_escapedPatternForString_1 = + _registerName1("escapedPatternForString:"); + late final _sel_enumerateMatchesInString_options_range_usingBlock_1 = + _registerName1("enumerateMatchesInString:options:range:usingBlock:"); + void _objc_msgSend_858( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer string, + int options, + _NSRange range, + ffi.Pointer<_ObjCBlock> block, ) { return __objc_msgSend_858( obj, sel, + string, + options, + range, + block, ); } late final __objc_msgSend_858Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_858 = __objc_msgSend_858Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, _NSRange, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_mainQueue1 = _registerName1("mainQueue"); - late final _sel_operations1 = _registerName1("operations"); - late final _sel_operationCount1 = _registerName1("operationCount"); - late final _class_NSPointerArray1 = _getClass1("NSPointerArray"); - late final _sel_initWithOptions_1 = _registerName1("initWithOptions:"); - instancetype _objc_msgSend_859( + late final _sel_matchesInString_options_range_1 = + _registerName1("matchesInString:options:range:"); + ffi.Pointer _objc_msgSend_859( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer string, int options, + _NSRange range, ) { return __objc_msgSend_859( obj, sel, + string, options, + range, ); } late final __objc_msgSend_859Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend'); late final __objc_msgSend_859 = __objc_msgSend_859Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - late final _class_NSPointerFunctions1 = _getClass1("NSPointerFunctions"); - late final _sel_pointerFunctionsWithOptions_1 = - _registerName1("pointerFunctionsWithOptions:"); - ffi.Pointer _objc_msgSend_860( + late final _sel_numberOfMatchesInString_options_range_1 = + _registerName1("numberOfMatchesInString:options:range:"); + int _objc_msgSend_860( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer string, int options, + _NSRange range, ) { return __objc_msgSend_860( obj, sel, + string, options, + range, ); } late final __objc_msgSend_860Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend'); late final __objc_msgSend_860 = __objc_msgSend_860Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, _NSRange)>(); - late final _sel_hashFunction1 = _registerName1("hashFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - _objc_msgSend_861( + late final _sel_firstMatchInString_options_range_1 = + _registerName1("firstMatchInString:options:range:"); + ffi.Pointer _objc_msgSend_861( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer string, + int options, + _NSRange range, ) { return __objc_msgSend_861( obj, sel, + string, + options, + range, ); } late final __objc_msgSend_861Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend'); late final __objc_msgSend_861 = __objc_msgSend_861Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - late final _sel_setHashFunction_1 = _registerName1("setHashFunction:"); + late final _sel_rangeOfFirstMatchInString_options_range_1 = + _registerName1("rangeOfFirstMatchInString:options:range:"); void _objc_msgSend_862( + ffi.Pointer<_NSRange> stret, ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value, + ffi.Pointer string, + int options, + _NSRange range, ) { return __objc_msgSend_862( + stret, obj, sel, - value, + string, + options, + range, ); } late final __objc_msgSend_862Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>>( - 'objc_msgSend'); - late final __objc_msgSend_862 = __objc_msgSend_862Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>(); + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_NSRange>, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange)>>('objc_msgSend_stret'); + late final __objc_msgSend_862 = __objc_msgSend_862Ptr.asFunction< + void Function(ffi.Pointer<_NSRange>, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int, _NSRange)>(); - late final _sel_isEqualFunction1 = _registerName1("isEqualFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - _objc_msgSend_863( + late final _sel_stringByReplacingMatchesInString_options_range_withTemplate_1 = + _registerName1( + "stringByReplacingMatchesInString:options:range:withTemplate:"); + ffi.Pointer _objc_msgSend_863( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer string, + int options, + _NSRange range, + ffi.Pointer templ, ) { return __objc_msgSend_863( obj, sel, + string, + options, + range, + templ, ); } late final __objc_msgSend_863Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_863 = __objc_msgSend_863Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + _NSRange, + ffi.Pointer)>(); - late final _sel_setIsEqualFunction_1 = _registerName1("setIsEqualFunction:"); - void _objc_msgSend_864( + late final _sel_replaceMatchesInString_options_range_withTemplate_1 = + _registerName1("replaceMatchesInString:options:range:withTemplate:"); + int _objc_msgSend_864( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value, + ffi.Pointer string, + int options, + _NSRange range, + ffi.Pointer templ, ) { return __objc_msgSend_864( obj, sel, - value, + string, + options, + range, + templ, ); } late final __objc_msgSend_864Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>>( - 'objc_msgSend'); + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_864 = __objc_msgSend_864Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>(); + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int, _NSRange, ffi.Pointer)>(); - late final _sel_sizeFunction1 = _registerName1("sizeFunction"); - ffi.Pointer< - ffi.NativeFunction)>> - _objc_msgSend_865( + late final _sel_replacementStringForResult_inString_offset_template_1 = + _registerName1("replacementStringForResult:inString:offset:template:"); + ffi.Pointer _objc_msgSend_865( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer result, + ffi.Pointer string, + int offset, + ffi.Pointer templ, ) { return __objc_msgSend_865( obj, sel, + result, + string, + offset, + templ, ); } late final __objc_msgSend_865Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_865 = __objc_msgSend_865Ptr.asFunction< - ffi.Pointer< - ffi - .NativeFunction)>> - Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer)>(); - late final _sel_setSizeFunction_1 = _registerName1("setSizeFunction:"); - void _objc_msgSend_866( + late final _sel_escapedTemplateForString_1 = + _registerName1("escapedTemplateForString:"); + late final _sel_regularExpression1 = _registerName1("regularExpression"); + ffi.Pointer _objc_msgSend_866( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer< - ffi - .NativeFunction)>> - value, ) { return __objc_msgSend_866( obj, sel, - value, ); } late final __objc_msgSend_866Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_866 = __objc_msgSend_866Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_descriptionFunction1 = _registerName1("descriptionFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - _objc_msgSend_867( + late final _sel_phoneNumber1 = _registerName1("phoneNumber"); + late final _sel_numberOfRanges1 = _registerName1("numberOfRanges"); + late final _sel_rangeAtIndex_1 = _registerName1("rangeAtIndex:"); + late final _sel_rangeWithName_1 = _registerName1("rangeWithName:"); + late final _sel_resultByAdjustingRangesWithOffset_1 = + _registerName1("resultByAdjustingRangesWithOffset:"); + ffi.Pointer _objc_msgSend_867( ffi.Pointer obj, ffi.Pointer sel, + int offset, ) { return __objc_msgSend_867( obj, sel, + offset, ); } - late final __objc_msgSend_867Ptr = - _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); + late final __objc_msgSend_867Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Long)>>('objc_msgSend'); late final __objc_msgSend_867 = __objc_msgSend_867Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_setDescriptionFunction_1 = - _registerName1("setDescriptionFunction:"); - void _objc_msgSend_868( + late final _sel_addressComponents1 = _registerName1("addressComponents"); + late final _sel_orthographyCheckingResultWithRange_orthography_1 = + _registerName1("orthographyCheckingResultWithRange:orthography:"); + ffi.Pointer _objc_msgSend_868( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - value, + _NSRange range, + ffi.Pointer orthography, ) { return __objc_msgSend_868( obj, sel, - value, + range, + orthography, ); } late final __objc_msgSend_868Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer)>>)>>('objc_msgSend'); + _NSRange, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_868 = __objc_msgSend_868Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>>)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); - late final _sel_relinquishFunction1 = _registerName1("relinquishFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - _objc_msgSend_869( + late final _sel_spellCheckingResultWithRange_1 = + _registerName1("spellCheckingResultWithRange:"); + ffi.Pointer _objc_msgSend_869( ffi.Pointer obj, ffi.Pointer sel, + _NSRange range, ) { return __objc_msgSend_869( obj, sel, + range, ); } late final __objc_msgSend_869Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange)>>('objc_msgSend'); late final __objc_msgSend_869 = __objc_msgSend_869Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, _NSRange)>(); - late final _sel_setRelinquishFunction_1 = - _registerName1("setRelinquishFunction:"); - void _objc_msgSend_870( + late final _sel_grammarCheckingResultWithRange_details_1 = + _registerName1("grammarCheckingResultWithRange:details:"); + ffi.Pointer _objc_msgSend_870( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value, + _NSRange range, + ffi.Pointer details, ) { return __objc_msgSend_870( obj, sel, - value, + range, + details, ); } late final __objc_msgSend_870Ptr = _lookup< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>>( - 'objc_msgSend'); + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_870 = __objc_msgSend_870Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>>)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); - late final _sel_acquireFunction1 = _registerName1("acquireFunction"); - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>, - ffi.Bool)>> _objc_msgSend_871( + late final _sel_dateCheckingResultWithRange_date_1 = + _registerName1("dateCheckingResultWithRange:date:"); + ffi.Pointer _objc_msgSend_871( ffi.Pointer obj, ffi.Pointer sel, + _NSRange range, + ffi.Pointer date, ) { return __objc_msgSend_871( obj, sel, + range, + date, ); } late final __objc_msgSend_871Ptr = _lookup< - ffi.NativeFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>> - Function(ffi.Pointer, ffi.Pointer)>>( - 'objc_msgSend'); + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_871 = __objc_msgSend_871Ptr.asFunction< - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>> - Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); - late final _sel_setAcquireFunction_1 = _registerName1("setAcquireFunction:"); - void _objc_msgSend_872( + late final _sel_dateCheckingResultWithRange_date_timeZone_duration_1 = + _registerName1("dateCheckingResultWithRange:date:timeZone:duration:"); + ffi.Pointer _objc_msgSend_872( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>, - ffi.Bool)>> - value, + _NSRange range, + ffi.Pointer date, + ffi.Pointer timeZone, + double duration, ) { return __objc_msgSend_872( obj, sel, - value, + range, + date, + timeZone, + duration, ); } late final __objc_msgSend_872Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>>)>>('objc_msgSend'); + _NSRange, + ffi.Pointer, + ffi.Pointer, + ffi.Double)>>('objc_msgSend'); late final __objc_msgSend_872 = __objc_msgSend_872Ptr.asFunction< - void Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>>)>(); + _NSRange, + ffi.Pointer, + ffi.Pointer, + double)>(); - late final _sel_usesStrongWriteBarrier1 = - _registerName1("usesStrongWriteBarrier"); - late final _sel_setUsesStrongWriteBarrier_1 = - _registerName1("setUsesStrongWriteBarrier:"); - late final _sel_usesWeakReadAndWriteBarriers1 = - _registerName1("usesWeakReadAndWriteBarriers"); - late final _sel_setUsesWeakReadAndWriteBarriers_1 = - _registerName1("setUsesWeakReadAndWriteBarriers:"); - late final _sel_initWithPointerFunctions_1 = - _registerName1("initWithPointerFunctions:"); - instancetype _objc_msgSend_873( + late final _sel_addressCheckingResultWithRange_components_1 = + _registerName1("addressCheckingResultWithRange:components:"); + ffi.Pointer _objc_msgSend_873( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer functions, + _NSRange range, + ffi.Pointer components, ) { return __objc_msgSend_873( obj, sel, - functions, + range, + components, ); } late final __objc_msgSend_873Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_873 = __objc_msgSend_873Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); - late final _sel_pointerArrayWithOptions_1 = - _registerName1("pointerArrayWithOptions:"); + late final _sel_linkCheckingResultWithRange_URL_1 = + _registerName1("linkCheckingResultWithRange:URL:"); ffi.Pointer _objc_msgSend_874( ffi.Pointer obj, ffi.Pointer sel, - int options, + _NSRange range, + ffi.Pointer url, ) { return __objc_msgSend_874( obj, sel, - options, + range, + url, ); } late final __objc_msgSend_874Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_874 = __objc_msgSend_874Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, _NSRange, ffi.Pointer)>(); - late final _sel_pointerArrayWithPointerFunctions_1 = - _registerName1("pointerArrayWithPointerFunctions:"); + late final _sel_quoteCheckingResultWithRange_replacementString_1 = + _registerName1("quoteCheckingResultWithRange:replacementString:"); ffi.Pointer _objc_msgSend_875( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer functions, + _NSRange range, + ffi.Pointer replacementString, ) { return __objc_msgSend_875( obj, sel, - functions, + range, + replacementString, ); } late final __objc_msgSend_875Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_875 = __objc_msgSend_875Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer, _NSRange, ffi.Pointer)>(); - late final _sel_pointerFunctions1 = _registerName1("pointerFunctions"); - ffi.Pointer _objc_msgSend_876( - ffi.Pointer obj, - ffi.Pointer sel, + late final _sel_dashCheckingResultWithRange_replacementString_1 = + _registerName1("dashCheckingResultWithRange:replacementString:"); + late final _sel_replacementCheckingResultWithRange_replacementString_1 = + _registerName1("replacementCheckingResultWithRange:replacementString:"); + late final _sel_correctionCheckingResultWithRange_replacementString_1 = + _registerName1("correctionCheckingResultWithRange:replacementString:"); + late final _sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_1 = + _registerName1( + "correctionCheckingResultWithRange:replacementString:alternativeStrings:"); + ffi.Pointer _objc_msgSend_876( + ffi.Pointer obj, + ffi.Pointer sel, + _NSRange range, + ffi.Pointer replacementString, + ffi.Pointer alternativeStrings, ) { return __objc_msgSend_876( obj, sel, + range, + replacementString, + alternativeStrings, ); } late final __objc_msgSend_876Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_876 = __objc_msgSend_876Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer, + ffi.Pointer, + _NSRange, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_pointerAtIndex_1 = _registerName1("pointerAtIndex:"); - ffi.Pointer _objc_msgSend_877( + late final _sel_regularExpressionCheckingResultWithRanges_count_regularExpression_1 = + _registerName1( + "regularExpressionCheckingResultWithRanges:count:regularExpression:"); + ffi.Pointer _objc_msgSend_877( ffi.Pointer obj, ffi.Pointer sel, - int index, + ffi.Pointer<_NSRange> ranges, + int count, + ffi.Pointer regularExpression, ) { return __objc_msgSend_877( obj, sel, - index, + ranges, + count, + regularExpression, ); } late final __objc_msgSend_877Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_NSRange>, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_877 = __objc_msgSend_877Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_NSRange>, + int, + ffi.Pointer)>(); - late final _sel_addPointer_1 = _registerName1("addPointer:"); - late final _sel_removePointerAtIndex_1 = - _registerName1("removePointerAtIndex:"); - late final _sel_insertPointer_atIndex_1 = - _registerName1("insertPointer:atIndex:"); - late final _sel_replacePointerAtIndex_withPointer_1 = - _registerName1("replacePointerAtIndex:withPointer:"); - void _objc_msgSend_878( + late final _sel_phoneNumberCheckingResultWithRange_phoneNumber_1 = + _registerName1("phoneNumberCheckingResultWithRange:phoneNumber:"); + late final _sel_transitInformationCheckingResultWithRange_components_1 = + _registerName1("transitInformationCheckingResultWithRange:components:"); + late final _class_NSURLCache1 = _getClass1("NSURLCache"); + late final _sel_sharedURLCache1 = _registerName1("sharedURLCache"); + ffi.Pointer _objc_msgSend_878( ffi.Pointer obj, ffi.Pointer sel, - int index, - ffi.Pointer item, ) { return __objc_msgSend_878( obj, sel, - index, - item, ); } late final __objc_msgSend_878Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_878 = __objc_msgSend_878Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_compact1 = _registerName1("compact"); - late final _sel_setCount_1 = _registerName1("setCount:"); - late final _sel_pointerArrayWithStrongObjects1 = - _registerName1("pointerArrayWithStrongObjects"); - late final _sel_pointerArrayWithWeakObjects1 = - _registerName1("pointerArrayWithWeakObjects"); - late final _sel_strongObjectsPointerArray1 = - _registerName1("strongObjectsPointerArray"); - ffi.Pointer _objc_msgSend_879( + late final _sel_setSharedURLCache_1 = _registerName1("setSharedURLCache:"); + void _objc_msgSend_879( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer value, ) { return __objc_msgSend_879( obj, sel, + value, ); } late final __objc_msgSend_879Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_879 = __objc_msgSend_879Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_weakObjectsPointerArray1 = - _registerName1("weakObjectsPointerArray"); - late final _class_NSProcessInfo1 = _getClass1("NSProcessInfo"); - late final _sel_processInfo1 = _registerName1("processInfo"); - ffi.Pointer _objc_msgSend_880( + late final _sel_initWithMemoryCapacity_diskCapacity_diskPath_1 = + _registerName1("initWithMemoryCapacity:diskCapacity:diskPath:"); + instancetype _objc_msgSend_880( ffi.Pointer obj, ffi.Pointer sel, + int memoryCapacity, + int diskCapacity, + ffi.Pointer path, ) { return __objc_msgSend_880( obj, sel, + memoryCapacity, + diskCapacity, + path, ); } late final __objc_msgSend_880Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_880 = __objc_msgSend_880Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, int, + int, ffi.Pointer)>(); - late final _sel_environment1 = _registerName1("environment"); - late final _sel_hostName1 = _registerName1("hostName"); - late final _sel_processName1 = _registerName1("processName"); - late final _sel_setProcessName_1 = _registerName1("setProcessName:"); - late final _sel_processIdentifier1 = _registerName1("processIdentifier"); - late final _sel_globallyUniqueString1 = - _registerName1("globallyUniqueString"); - late final _sel_operatingSystem1 = _registerName1("operatingSystem"); - late final _sel_operatingSystemName1 = _registerName1("operatingSystemName"); - late final _sel_operatingSystemVersionString1 = - _registerName1("operatingSystemVersionString"); - late final _sel_operatingSystemVersion1 = - _registerName1("operatingSystemVersion"); - void _objc_msgSend_881( - ffi.Pointer stret, + late final _sel_initWithMemoryCapacity_diskCapacity_directoryURL_1 = + _registerName1("initWithMemoryCapacity:diskCapacity:directoryURL:"); + instancetype _objc_msgSend_881( ffi.Pointer obj, ffi.Pointer sel, + int memoryCapacity, + int diskCapacity, + ffi.Pointer directoryURL, ) { return __objc_msgSend_881( - stret, obj, sel, + memoryCapacity, + diskCapacity, + directoryURL, ); } late final __objc_msgSend_881Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, + instancetype Function( ffi.Pointer, - ffi.Pointer)>>('objc_msgSend_stret'); + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_881 = __objc_msgSend_881Ptr.asFunction< - void Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, int, + int, ffi.Pointer)>(); - late final _sel_processorCount1 = _registerName1("processorCount"); - late final _sel_activeProcessorCount1 = - _registerName1("activeProcessorCount"); - late final _sel_physicalMemory1 = _registerName1("physicalMemory"); - late final _sel_isOperatingSystemAtLeastVersion_1 = - _registerName1("isOperatingSystemAtLeastVersion:"); - bool _objc_msgSend_882( + late final _class_NSCachedURLResponse1 = _getClass1("NSCachedURLResponse"); + late final _sel_initWithResponse_data_1 = + _registerName1("initWithResponse:data:"); + instancetype _objc_msgSend_882( ffi.Pointer obj, ffi.Pointer sel, - NSOperatingSystemVersion version, + ffi.Pointer response, + ffi.Pointer data, ) { return __objc_msgSend_882( obj, sel, - version, + response, + data, ); } late final __objc_msgSend_882Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - NSOperatingSystemVersion)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_882 = __objc_msgSend_882Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - NSOperatingSystemVersion)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_systemUptime1 = _registerName1("systemUptime"); - late final _sel_disableSuddenTermination1 = - _registerName1("disableSuddenTermination"); - late final _sel_enableSuddenTermination1 = - _registerName1("enableSuddenTermination"); - late final _sel_disableAutomaticTermination_1 = - _registerName1("disableAutomaticTermination:"); - late final _sel_enableAutomaticTermination_1 = - _registerName1("enableAutomaticTermination:"); - late final _sel_automaticTerminationSupportEnabled1 = - _registerName1("automaticTerminationSupportEnabled"); - late final _sel_setAutomaticTerminationSupportEnabled_1 = - _registerName1("setAutomaticTerminationSupportEnabled:"); - late final _sel_beginActivityWithOptions_reason_1 = - _registerName1("beginActivityWithOptions:reason:"); - ffi.Pointer _objc_msgSend_883( + late final _sel_initWithResponse_data_userInfo_storagePolicy_1 = + _registerName1("initWithResponse:data:userInfo:storagePolicy:"); + instancetype _objc_msgSend_883( ffi.Pointer obj, ffi.Pointer sel, - int options, - ffi.Pointer reason, + ffi.Pointer response, + ffi.Pointer data, + ffi.Pointer userInfo, + int storagePolicy, ) { return __objc_msgSend_883( obj, sel, - options, - reason, + response, + data, + userInfo, + storagePolicy, ); } late final __objc_msgSend_883Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + instancetype Function( ffi.Pointer, ffi.Pointer, - ffi.Int32, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_883 = __objc_msgSend_883Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, int, ffi.Pointer)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); - late final _sel_endActivity_1 = _registerName1("endActivity:"); - late final _sel_performActivityWithOptions_reason_usingBlock_1 = - _registerName1("performActivityWithOptions:reason:usingBlock:"); - void _objc_msgSend_884( + late final _sel_storagePolicy1 = _registerName1("storagePolicy"); + int _objc_msgSend_884( ffi.Pointer obj, ffi.Pointer sel, - int options, - ffi.Pointer reason, - ffi.Pointer<_ObjCBlock> block, ) { return __objc_msgSend_884( obj, sel, - options, - reason, - block, ); } late final __objc_msgSend_884Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_884 = __objc_msgSend_884Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_performExpiringActivityWithReason_usingBlock_1 = - _registerName1("performExpiringActivityWithReason:usingBlock:"); - void _objc_msgSend_885( + late final _sel_cachedResponseForRequest_1 = + _registerName1("cachedResponseForRequest:"); + ffi.Pointer _objc_msgSend_885( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer reason, - ffi.Pointer<_ObjCBlock> block, + ffi.Pointer request, ) { return __objc_msgSend_885( obj, sel, - reason, - block, + request, ); } late final __objc_msgSend_885Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_885 = __objc_msgSend_885Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_userName1 = _registerName1("userName"); - late final _sel_fullUserName1 = _registerName1("fullUserName"); - late final _sel_thermalState1 = _registerName1("thermalState"); - int _objc_msgSend_886( + late final _sel_storeCachedResponse_forRequest_1 = + _registerName1("storeCachedResponse:forRequest:"); + void _objc_msgSend_886( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer cachedResponse, + ffi.Pointer request, ) { return __objc_msgSend_886( obj, sel, + cachedResponse, + request, ); } late final __objc_msgSend_886Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_886 = __objc_msgSend_886Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_isLowPowerModeEnabled1 = - _registerName1("isLowPowerModeEnabled"); - late final _sel_isMacCatalystApp1 = _registerName1("isMacCatalystApp"); - late final _sel_isiOSAppOnMac1 = _registerName1("isiOSAppOnMac"); - late final _class_NSTextCheckingResult1 = _getClass1("NSTextCheckingResult"); - late final _sel_resultType1 = _registerName1("resultType"); - int _objc_msgSend_887( + late final _sel_removeCachedResponseForRequest_1 = + _registerName1("removeCachedResponseForRequest:"); + void _objc_msgSend_887( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer request, ) { return __objc_msgSend_887( obj, sel, + request, ); } late final __objc_msgSend_887Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_887 = __objc_msgSend_887Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_range1 = _registerName1("range"); - late final _sel_orthography1 = _registerName1("orthography"); - ffi.Pointer _objc_msgSend_888( + late final _sel_removeAllCachedResponses1 = + _registerName1("removeAllCachedResponses"); + late final _sel_removeCachedResponsesSinceDate_1 = + _registerName1("removeCachedResponsesSinceDate:"); + late final _sel_memoryCapacity1 = _registerName1("memoryCapacity"); + late final _sel_setMemoryCapacity_1 = _registerName1("setMemoryCapacity:"); + late final _sel_diskCapacity1 = _registerName1("diskCapacity"); + late final _sel_setDiskCapacity_1 = _registerName1("setDiskCapacity:"); + late final _sel_currentMemoryUsage1 = _registerName1("currentMemoryUsage"); + late final _sel_currentDiskUsage1 = _registerName1("currentDiskUsage"); + late final _class_NSURLSessionDataTask1 = _getClass1("NSURLSessionDataTask"); + late final _sel_storeCachedResponse_forDataTask_1 = + _registerName1("storeCachedResponse:forDataTask:"); + void _objc_msgSend_888( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer cachedResponse, + ffi.Pointer dataTask, ) { return __objc_msgSend_888( obj, sel, + cachedResponse, + dataTask, ); } late final __objc_msgSend_888Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_888 = __objc_msgSend_888Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_grammarDetails1 = _registerName1("grammarDetails"); - late final _sel_duration1 = _registerName1("duration"); - late final _sel_components1 = _registerName1("components"); - late final _sel_replacementString1 = _registerName1("replacementString"); - late final _sel_alternativeStrings1 = _registerName1("alternativeStrings"); - late final _class_NSRegularExpression1 = _getClass1("NSRegularExpression"); - late final _sel_regularExpressionWithPattern_options_error_1 = - _registerName1("regularExpressionWithPattern:options:error:"); - ffi.Pointer _objc_msgSend_889( + late final _sel_getCachedResponseForDataTask_completionHandler_1 = + _registerName1("getCachedResponseForDataTask:completionHandler:"); + void _objc_msgSend_889( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer pattern, - int options, - ffi.Pointer> error, + ffi.Pointer dataTask, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_889( obj, sel, - pattern, - options, - error, + dataTask, + completionHandler, ); } late final __objc_msgSend_889Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_889 = __objc_msgSend_889Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_initWithPattern_options_error_1 = - _registerName1("initWithPattern:options:error:"); - instancetype _objc_msgSend_890( + late final _sel_removeCachedResponseForDataTask_1 = + _registerName1("removeCachedResponseForDataTask:"); + void _objc_msgSend_890( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer pattern, - int options, - ffi.Pointer> error, + ffi.Pointer dataTask, ) { return __objc_msgSend_890( obj, sel, - pattern, - options, - error, + dataTask, ); } late final __objc_msgSend_890Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_890 = __objc_msgSend_890Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_pattern1 = _registerName1("pattern"); - int _objc_msgSend_891( + late final _class_NSURLConnection1 = _getClass1("NSURLConnection"); + late final _sel_initWithRequest_delegate_startImmediately_1 = + _registerName1("initWithRequest:delegate:startImmediately:"); + instancetype _objc_msgSend_891( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer request, + ffi.Pointer delegate, + bool startImmediately, ) { return __objc_msgSend_891( obj, sel, + request, + delegate, + startImmediately, ); } late final __objc_msgSend_891Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Bool)>>('objc_msgSend'); late final __objc_msgSend_891 = __objc_msgSend_891Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, bool)>(); - late final _sel_numberOfCaptureGroups1 = - _registerName1("numberOfCaptureGroups"); - late final _sel_escapedPatternForString_1 = - _registerName1("escapedPatternForString:"); - late final _sel_enumerateMatchesInString_options_range_usingBlock_1 = - _registerName1("enumerateMatchesInString:options:range:usingBlock:"); - void _objc_msgSend_892( + late final _sel_initWithRequest_delegate_1 = + _registerName1("initWithRequest:delegate:"); + instancetype _objc_msgSend_892( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ffi.Pointer<_ObjCBlock> block, + ffi.Pointer request, + ffi.Pointer delegate, ) { return __objc_msgSend_892( obj, sel, - string, - options, - range, - block, + request, + delegate, ); } late final __objc_msgSend_892Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( + instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_892 = __objc_msgSend_892Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer<_ObjCBlock>)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_matchesInString_options_range_1 = - _registerName1("matchesInString:options:range:"); + late final _sel_connectionWithRequest_delegate_1 = + _registerName1("connectionWithRequest:delegate:"); ffi.Pointer _objc_msgSend_893( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, + ffi.Pointer request, + ffi.Pointer delegate, ) { return __objc_msgSend_893( obj, sel, - string, - options, - range, + request, + delegate, ); } @@ -25348,276 +25525,255 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_893 = __objc_msgSend_893Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_numberOfMatchesInString_options_range_1 = - _registerName1("numberOfMatchesInString:options:range:"); - int _objc_msgSend_894( + late final _sel_unscheduleFromRunLoop_forMode_1 = + _registerName1("unscheduleFromRunLoop:forMode:"); + late final _sel_setDelegateQueue_1 = _registerName1("setDelegateQueue:"); + void _objc_msgSend_894( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, + ffi.Pointer queue, ) { return __objc_msgSend_894( obj, sel, - string, - options, - range, + queue, ); } late final __objc_msgSend_894Ptr = _lookup< ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_894 = __objc_msgSend_894Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_firstMatchInString_options_range_1 = - _registerName1("firstMatchInString:options:range:"); - ffi.Pointer _objc_msgSend_895( + late final _sel_canHandleRequest_1 = _registerName1("canHandleRequest:"); + bool _objc_msgSend_895( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, + ffi.Pointer request, ) { return __objc_msgSend_895( obj, sel, - string, - options, - range, + request, ); } late final __objc_msgSend_895Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_895 = __objc_msgSend_895Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_rangeOfFirstMatchInString_options_range_1 = - _registerName1("rangeOfFirstMatchInString:options:range:"); - void _objc_msgSend_896( - ffi.Pointer<_NSRange> stret, + late final _sel_sendSynchronousRequest_returningResponse_error_1 = + _registerName1("sendSynchronousRequest:returningResponse:error:"); + ffi.Pointer _objc_msgSend_896( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, + ffi.Pointer request, + ffi.Pointer> response, + ffi.Pointer> error, ) { return __objc_msgSend_896( - stret, obj, sel, - string, - options, - range, + request, + response, + error, ); } late final __objc_msgSend_896Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_NSRange>, + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Int32, - _NSRange)>>('objc_msgSend_stret'); + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_896 = __objc_msgSend_896Ptr.asFunction< - void Function(ffi.Pointer<_NSRange>, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int, _NSRange)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, + ffi.Pointer>)>(); - late final _sel_stringByReplacingMatchesInString_options_range_withTemplate_1 = - _registerName1( - "stringByReplacingMatchesInString:options:range:withTemplate:"); - ffi.Pointer _objc_msgSend_897( + late final _sel_sendAsynchronousRequest_queue_completionHandler_1 = + _registerName1("sendAsynchronousRequest:queue:completionHandler:"); + void _objc_msgSend_897( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ffi.Pointer templ, + ffi.Pointer request, + ffi.Pointer queue, + ffi.Pointer<_ObjCBlock> handler, ) { return __objc_msgSend_897( obj, sel, - string, - options, - range, - templ, + request, + queue, + handler, ); } late final __objc_msgSend_897Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_897 = __objc_msgSend_897Ptr.asFunction< - ffi.Pointer Function( + void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - int, - _NSRange, - ffi.Pointer)>(); + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_replaceMatchesInString_options_range_withTemplate_1 = - _registerName1("replaceMatchesInString:options:range:withTemplate:"); + late final _class_NSURLCredential1 = _getClass1("NSURLCredential"); + late final _sel_persistence1 = _registerName1("persistence"); int _objc_msgSend_898( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer string, - int options, - _NSRange range, - ffi.Pointer templ, ) { return __objc_msgSend_898( obj, sel, - string, - options, - range, - templ, ); } late final __objc_msgSend_898Ptr = _lookup< ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_898 = __objc_msgSend_898Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int, _NSRange, ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_replacementStringForResult_inString_offset_template_1 = - _registerName1("replacementStringForResult:inString:offset:template:"); - ffi.Pointer _objc_msgSend_899( + late final _sel_initWithUser_password_persistence_1 = + _registerName1("initWithUser:password:persistence:"); + instancetype _objc_msgSend_899( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer result, - ffi.Pointer string, - int offset, - ffi.Pointer templ, + ffi.Pointer user, + ffi.Pointer password, + int persistence, ) { return __objc_msgSend_899( obj, sel, - result, - string, - offset, - templ, + user, + password, + persistence, ); } late final __objc_msgSend_899Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Long, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_899 = __objc_msgSend_899Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_escapedTemplateForString_1 = - _registerName1("escapedTemplateForString:"); - late final _sel_regularExpression1 = _registerName1("regularExpression"); + late final _sel_credentialWithUser_password_persistence_1 = + _registerName1("credentialWithUser:password:persistence:"); ffi.Pointer _objc_msgSend_900( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer user, + ffi.Pointer password, + int persistence, ) { return __objc_msgSend_900( obj, sel, + user, + password, + persistence, ); } late final __objc_msgSend_900Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_900 = __objc_msgSend_900Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int)>(); - late final _sel_phoneNumber1 = _registerName1("phoneNumber"); - late final _sel_numberOfRanges1 = _registerName1("numberOfRanges"); - late final _sel_rangeAtIndex_1 = _registerName1("rangeAtIndex:"); - late final _sel_rangeWithName_1 = _registerName1("rangeWithName:"); - late final _sel_resultByAdjustingRangesWithOffset_1 = - _registerName1("resultByAdjustingRangesWithOffset:"); - ffi.Pointer _objc_msgSend_901( + late final _sel_hasPassword1 = _registerName1("hasPassword"); + late final _sel_initWithIdentity_certificates_persistence_1 = + _registerName1("initWithIdentity:certificates:persistence:"); + instancetype _objc_msgSend_901( ffi.Pointer obj, ffi.Pointer sel, - int offset, + ffi.Pointer<__SecIdentity> identity, + ffi.Pointer certArray, + int persistence, ) { return __objc_msgSend_901( obj, sel, - offset, + identity, + certArray, + persistence, ); } late final __objc_msgSend_901Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Long)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_901 = __objc_msgSend_901Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<__SecIdentity>, ffi.Pointer, int)>(); - late final _sel_addressComponents1 = _registerName1("addressComponents"); - late final _sel_orthographyCheckingResultWithRange_orthography_1 = - _registerName1("orthographyCheckingResultWithRange:orthography:"); + late final _sel_credentialWithIdentity_certificates_persistence_1 = + _registerName1("credentialWithIdentity:certificates:persistence:"); ffi.Pointer _objc_msgSend_902( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, - ffi.Pointer orthography, + ffi.Pointer<__SecIdentity> identity, + ffi.Pointer certArray, + int persistence, ) { return __objc_msgSend_902( obj, sel, - range, - orthography, + identity, + certArray, + persistence, ); } @@ -25626,433 +25782,444 @@ class SentryCocoa { ffi.Pointer Function( ffi.Pointer, ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_902 = __objc_msgSend_902Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__SecIdentity>, + ffi.Pointer, + int)>(); - late final _sel_spellCheckingResultWithRange_1 = - _registerName1("spellCheckingResultWithRange:"); - ffi.Pointer _objc_msgSend_903( + late final _sel_identity1 = _registerName1("identity"); + ffi.Pointer<__SecIdentity> _objc_msgSend_903( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, ) { return __objc_msgSend_903( obj, sel, - range, ); } late final __objc_msgSend_903Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange)>>('objc_msgSend'); + ffi.Pointer<__SecIdentity> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_903 = __objc_msgSend_903Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, _NSRange)>(); + ffi.Pointer<__SecIdentity> Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_grammarCheckingResultWithRange_details_1 = - _registerName1("grammarCheckingResultWithRange:details:"); - ffi.Pointer _objc_msgSend_904( + late final _sel_certificates1 = _registerName1("certificates"); + late final _sel_initWithTrust_1 = _registerName1("initWithTrust:"); + instancetype _objc_msgSend_904( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, - ffi.Pointer details, + ffi.Pointer<__SecTrust> trust, ) { return __objc_msgSend_904( obj, sel, - range, - details, + trust, ); } late final __objc_msgSend_904Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<__SecTrust>)>>('objc_msgSend'); late final __objc_msgSend_904 = __objc_msgSend_904Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<__SecTrust>)>(); - late final _sel_dateCheckingResultWithRange_date_1 = - _registerName1("dateCheckingResultWithRange:date:"); + late final _sel_credentialForTrust_1 = _registerName1("credentialForTrust:"); ffi.Pointer _objc_msgSend_905( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, - ffi.Pointer date, + ffi.Pointer<__SecTrust> trust, ) { return __objc_msgSend_905( obj, sel, - range, - date, + trust, ); } late final __objc_msgSend_905Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer<__SecTrust>)>>('objc_msgSend'); late final __objc_msgSend_905 = __objc_msgSend_905Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); + ffi.Pointer, ffi.Pointer<__SecTrust>)>(); - late final _sel_dateCheckingResultWithRange_date_timeZone_duration_1 = - _registerName1("dateCheckingResultWithRange:date:timeZone:duration:"); - ffi.Pointer _objc_msgSend_906( + late final _class_NSURLProtectionSpace1 = _getClass1("NSURLProtectionSpace"); + late final _sel_initWithHost_port_protocol_realm_authenticationMethod_1 = + _registerName1("initWithHost:port:protocol:realm:authenticationMethod:"); + instancetype _objc_msgSend_906( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, - ffi.Pointer date, - ffi.Pointer timeZone, - double duration, + ffi.Pointer host, + int port, + ffi.Pointer protocol, + ffi.Pointer realm, + ffi.Pointer authenticationMethod, ) { return __objc_msgSend_906( obj, sel, - range, - date, - timeZone, - duration, + host, + port, + protocol, + realm, + authenticationMethod, ); } late final __objc_msgSend_906Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + instancetype Function( ffi.Pointer, ffi.Pointer, - _NSRange, + ffi.Pointer, + ffi.Long, ffi.Pointer, ffi.Pointer, - ffi.Double)>>('objc_msgSend'); + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_906 = __objc_msgSend_906Ptr.asFunction< - ffi.Pointer Function( + instancetype Function( ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer, + int, ffi.Pointer, - double)>(); + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_addressCheckingResultWithRange_components_1 = - _registerName1("addressCheckingResultWithRange:components:"); - ffi.Pointer _objc_msgSend_907( + late final _sel_initWithProxyHost_port_type_realm_authenticationMethod_1 = + _registerName1("initWithProxyHost:port:type:realm:authenticationMethod:"); + late final _sel_realm1 = _registerName1("realm"); + late final _sel_receivesCredentialSecurely1 = + _registerName1("receivesCredentialSecurely"); + late final _sel_isProxy1 = _registerName1("isProxy"); + late final _sel_proxyType1 = _registerName1("proxyType"); + late final _sel_protocol1 = _registerName1("protocol"); + late final _sel_authenticationMethod1 = + _registerName1("authenticationMethod"); + late final _sel_distinguishedNames1 = _registerName1("distinguishedNames"); + late final _sel_serverTrust1 = _registerName1("serverTrust"); + ffi.Pointer<__SecTrust> _objc_msgSend_907( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, - ffi.Pointer components, ) { return __objc_msgSend_907( obj, sel, - range, - components, ); } late final __objc_msgSend_907Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<__SecTrust> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_907 = __objc_msgSend_907Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); + ffi.Pointer<__SecTrust> Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_linkCheckingResultWithRange_URL_1 = - _registerName1("linkCheckingResultWithRange:URL:"); + late final _class_NSURLCredentialStorage1 = + _getClass1("NSURLCredentialStorage"); + late final _sel_sharedCredentialStorage1 = + _registerName1("sharedCredentialStorage"); ffi.Pointer _objc_msgSend_908( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, - ffi.Pointer url, ) { return __objc_msgSend_908( obj, sel, - range, - url, ); } late final __objc_msgSend_908Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_908 = __objc_msgSend_908Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_quoteCheckingResultWithRange_replacementString_1 = - _registerName1("quoteCheckingResultWithRange:replacementString:"); + late final _sel_credentialsForProtectionSpace_1 = + _registerName1("credentialsForProtectionSpace:"); ffi.Pointer _objc_msgSend_909( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, - ffi.Pointer replacementString, + ffi.Pointer space, ) { return __objc_msgSend_909( obj, sel, - range, - replacementString, + space, ); } late final __objc_msgSend_909Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_909 = __objc_msgSend_909Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, _NSRange, ffi.Pointer)>(); + ffi.Pointer, ffi.Pointer)>(); - late final _sel_dashCheckingResultWithRange_replacementString_1 = - _registerName1("dashCheckingResultWithRange:replacementString:"); - late final _sel_replacementCheckingResultWithRange_replacementString_1 = - _registerName1("replacementCheckingResultWithRange:replacementString:"); - late final _sel_correctionCheckingResultWithRange_replacementString_1 = - _registerName1("correctionCheckingResultWithRange:replacementString:"); - late final _sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_1 = - _registerName1( - "correctionCheckingResultWithRange:replacementString:alternativeStrings:"); - ffi.Pointer _objc_msgSend_910( + late final _sel_allCredentials1 = _registerName1("allCredentials"); + late final _sel_setCredential_forProtectionSpace_1 = + _registerName1("setCredential:forProtectionSpace:"); + void _objc_msgSend_910( ffi.Pointer obj, ffi.Pointer sel, - _NSRange range, - ffi.Pointer replacementString, - ffi.Pointer alternativeStrings, + ffi.Pointer credential, + ffi.Pointer space, ) { return __objc_msgSend_910( obj, sel, - range, - replacementString, - alternativeStrings, + credential, + space, ); } late final __objc_msgSend_910Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, - _NSRange, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_910 = __objc_msgSend_910Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - _NSRange, - ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_regularExpressionCheckingResultWithRanges_count_regularExpression_1 = - _registerName1( - "regularExpressionCheckingResultWithRanges:count:regularExpression:"); - ffi.Pointer _objc_msgSend_911( + late final _sel_removeCredential_forProtectionSpace_1 = + _registerName1("removeCredential:forProtectionSpace:"); + late final _sel_removeCredential_forProtectionSpace_options_1 = + _registerName1("removeCredential:forProtectionSpace:options:"); + void _objc_msgSend_911( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<_NSRange> ranges, - int count, - ffi.Pointer regularExpression, + ffi.Pointer credential, + ffi.Pointer space, + ffi.Pointer options, ) { return __objc_msgSend_911( obj, sel, - ranges, - count, - regularExpression, + credential, + space, + options, ); } late final __objc_msgSend_911Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer<_NSRange>, - ffi.UnsignedLong, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_911 = __objc_msgSend_911Ptr.asFunction< - ffi.Pointer Function( + void Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer<_NSRange>, - int, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_phoneNumberCheckingResultWithRange_phoneNumber_1 = - _registerName1("phoneNumberCheckingResultWithRange:phoneNumber:"); - late final _sel_transitInformationCheckingResultWithRange_components_1 = - _registerName1("transitInformationCheckingResultWithRange:components:"); - late final _class_NSURLCache1 = _getClass1("NSURLCache"); - late final _sel_sharedURLCache1 = _registerName1("sharedURLCache"); + late final _sel_defaultCredentialForProtectionSpace_1 = + _registerName1("defaultCredentialForProtectionSpace:"); ffi.Pointer _objc_msgSend_912( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer space, ) { return __objc_msgSend_912( obj, sel, + space, ); } late final __objc_msgSend_912Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_912 = __objc_msgSend_912Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setSharedURLCache_1 = _registerName1("setSharedURLCache:"); + late final _sel_setDefaultCredential_forProtectionSpace_1 = + _registerName1("setDefaultCredential:forProtectionSpace:"); + late final _sel_getCredentialsForProtectionSpace_task_completionHandler_1 = + _registerName1( + "getCredentialsForProtectionSpace:task:completionHandler:"); void _objc_msgSend_913( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer protectionSpace, + ffi.Pointer task, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_913( obj, sel, - value, + protectionSpace, + task, + completionHandler, ); } late final __objc_msgSend_913Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_913 = __objc_msgSend_913Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_initWithMemoryCapacity_diskCapacity_diskPath_1 = - _registerName1("initWithMemoryCapacity:diskCapacity:diskPath:"); - instancetype _objc_msgSend_914( + late final _sel_setCredential_forProtectionSpace_task_1 = + _registerName1("setCredential:forProtectionSpace:task:"); + void _objc_msgSend_914( ffi.Pointer obj, ffi.Pointer sel, - int memoryCapacity, - int diskCapacity, - ffi.Pointer path, + ffi.Pointer credential, + ffi.Pointer protectionSpace, + ffi.Pointer task, ) { return __objc_msgSend_914( obj, sel, - memoryCapacity, - diskCapacity, - path, + credential, + protectionSpace, + task, ); } late final __objc_msgSend_914Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_914 = __objc_msgSend_914Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - int, ffi.Pointer)>(); - - late final _sel_initWithMemoryCapacity_diskCapacity_directoryURL_1 = - _registerName1("initWithMemoryCapacity:diskCapacity:directoryURL:"); - instancetype _objc_msgSend_915( - ffi.Pointer obj, - ffi.Pointer sel, - int memoryCapacity, - int diskCapacity, - ffi.Pointer directoryURL, + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); + + late final _sel_removeCredential_forProtectionSpace_options_task_1 = + _registerName1("removeCredential:forProtectionSpace:options:task:"); + void _objc_msgSend_915( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer credential, + ffi.Pointer protectionSpace, + ffi.Pointer options, + ffi.Pointer task, ) { return __objc_msgSend_915( obj, sel, - memoryCapacity, - diskCapacity, - directoryURL, + credential, + protectionSpace, + options, + task, ); } late final __objc_msgSend_915Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_915 = __objc_msgSend_915Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, int, - int, ffi.Pointer)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _class_NSCachedURLResponse1 = _getClass1("NSCachedURLResponse"); - late final _sel_initWithResponse_data_1 = - _registerName1("initWithResponse:data:"); - instancetype _objc_msgSend_916( + late final _sel_getDefaultCredentialForProtectionSpace_task_completionHandler_1 = + _registerName1( + "getDefaultCredentialForProtectionSpace:task:completionHandler:"); + void _objc_msgSend_916( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer response, - ffi.Pointer data, + ffi.Pointer space, + ffi.Pointer task, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_916( obj, sel, - response, - data, + space, + task, + completionHandler, ); } late final __objc_msgSend_916Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_916 = __objc_msgSend_916Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_initWithResponse_data_userInfo_storagePolicy_1 = - _registerName1("initWithResponse:data:userInfo:storagePolicy:"); + late final _sel_setDefaultCredential_forProtectionSpace_task_1 = + _registerName1("setDefaultCredential:forProtectionSpace:task:"); + late final _class_NSURLProtocol1 = _getClass1("NSURLProtocol"); + late final _sel_initWithRequest_cachedResponse_client_1 = + _registerName1("initWithRequest:cachedResponse:client:"); instancetype _objc_msgSend_917( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer response, - ffi.Pointer data, - ffi.Pointer userInfo, - int storagePolicy, + ffi.Pointer request, + ffi.Pointer cachedResponse, + ffi.Pointer client, ) { return __objc_msgSend_917( obj, sel, - response, - data, - userInfo, - storagePolicy, + request, + cachedResponse, + client, ); } @@ -26063,19 +26230,19 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_917 = __objc_msgSend_917Ptr.asFunction< instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, - int)>(); + ffi.Pointer)>(); - late final _sel_storagePolicy1 = _registerName1("storagePolicy"); - int _objc_msgSend_918( + late final _sel_client1 = _registerName1("client"); + late final _sel_request1 = _registerName1("request"); + late final _sel_cachedResponse1 = _registerName1("cachedResponse"); + ffi.Pointer _objc_msgSend_918( ffi.Pointer obj, ffi.Pointer sel, ) { @@ -26087,13 +26254,15 @@ class SentryCocoa { late final __objc_msgSend_918Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_918 = __objc_msgSend_918Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_cachedResponseForRequest_1 = - _registerName1("cachedResponseForRequest:"); + late final _sel_canInitWithRequest_1 = _registerName1("canInitWithRequest:"); + late final _sel_canonicalRequestForRequest_1 = + _registerName1("canonicalRequestForRequest:"); ffi.Pointer _objc_msgSend_919( ffi.Pointer obj, ffi.Pointer sel, @@ -26114,263 +26283,266 @@ class SentryCocoa { ffi.Pointer Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); - late final _sel_storeCachedResponse_forRequest_1 = - _registerName1("storeCachedResponse:forRequest:"); - void _objc_msgSend_920( + late final _sel_requestIsCacheEquivalent_toRequest_1 = + _registerName1("requestIsCacheEquivalent:toRequest:"); + bool _objc_msgSend_920( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer cachedResponse, - ffi.Pointer request, + ffi.Pointer a, + ffi.Pointer b, ) { return __objc_msgSend_920( obj, sel, - cachedResponse, - request, + a, + b, ); } late final __objc_msgSend_920Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( + ffi.Bool Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_920 = __objc_msgSend_920Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, + bool Function(ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); - late final _sel_removeCachedResponseForRequest_1 = - _registerName1("removeCachedResponseForRequest:"); - void _objc_msgSend_921( + late final _sel_startLoading1 = _registerName1("startLoading"); + late final _sel_stopLoading1 = _registerName1("stopLoading"); + late final _sel_propertyForKey_inRequest_1 = + _registerName1("propertyForKey:inRequest:"); + ffi.Pointer _objc_msgSend_921( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer key, ffi.Pointer request, ) { return __objc_msgSend_921( obj, sel, + key, request, ); } late final __objc_msgSend_921Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_921 = __objc_msgSend_921Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_removeAllCachedResponses1 = - _registerName1("removeAllCachedResponses"); - late final _sel_removeCachedResponsesSinceDate_1 = - _registerName1("removeCachedResponsesSinceDate:"); - late final _sel_memoryCapacity1 = _registerName1("memoryCapacity"); - late final _sel_setMemoryCapacity_1 = _registerName1("setMemoryCapacity:"); - late final _sel_diskCapacity1 = _registerName1("diskCapacity"); - late final _sel_setDiskCapacity_1 = _registerName1("setDiskCapacity:"); - late final _sel_currentMemoryUsage1 = _registerName1("currentMemoryUsage"); - late final _sel_currentDiskUsage1 = _registerName1("currentDiskUsage"); - late final _class_NSURLSessionDataTask1 = _getClass1("NSURLSessionDataTask"); - late final _sel_storeCachedResponse_forDataTask_1 = - _registerName1("storeCachedResponse:forDataTask:"); + late final _class_NSMutableURLRequest1 = _getClass1("NSMutableURLRequest"); + late final _sel_setURL_1 = _registerName1("setURL:"); + late final _sel_setCachePolicy_1 = _registerName1("setCachePolicy:"); void _objc_msgSend_922( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer cachedResponse, - ffi.Pointer dataTask, + int value, ) { return __objc_msgSend_922( obj, sel, - cachedResponse, - dataTask, + value, ); } late final __objc_msgSend_922Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_922 = __objc_msgSend_922Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_getCachedResponseForDataTask_completionHandler_1 = - _registerName1("getCachedResponseForDataTask:completionHandler:"); + late final _sel_setTimeoutInterval_1 = _registerName1("setTimeoutInterval:"); + late final _sel_setMainDocumentURL_1 = _registerName1("setMainDocumentURL:"); + late final _sel_setNetworkServiceType_1 = + _registerName1("setNetworkServiceType:"); void _objc_msgSend_923( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer dataTask, - ffi.Pointer<_ObjCBlock> completionHandler, + int value, ) { return __objc_msgSend_923( obj, sel, - dataTask, - completionHandler, + value, ); } late final __objc_msgSend_923Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_923 = __objc_msgSend_923Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_removeCachedResponseForDataTask_1 = - _registerName1("removeCachedResponseForDataTask:"); + late final _sel_setAllowsCellularAccess_1 = + _registerName1("setAllowsCellularAccess:"); + late final _sel_setAllowsExpensiveNetworkAccess_1 = + _registerName1("setAllowsExpensiveNetworkAccess:"); + late final _sel_setAllowsConstrainedNetworkAccess_1 = + _registerName1("setAllowsConstrainedNetworkAccess:"); + late final _sel_setAssumesHTTP3Capable_1 = + _registerName1("setAssumesHTTP3Capable:"); + late final _sel_setAttribution_1 = _registerName1("setAttribution:"); void _objc_msgSend_924( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer dataTask, + int value, ) { return __objc_msgSend_924( obj, sel, - dataTask, + value, ); } late final __objc_msgSend_924Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_924 = __objc_msgSend_924Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _class_NSURLConnection1 = _getClass1("NSURLConnection"); - late final _sel_initWithRequest_delegate_startImmediately_1 = - _registerName1("initWithRequest:delegate:startImmediately:"); - instancetype _objc_msgSend_925( + late final _sel_setRequiresDNSSECValidation_1 = + _registerName1("setRequiresDNSSECValidation:"); + late final _sel_setHTTPMethod_1 = _registerName1("setHTTPMethod:"); + late final _sel_setAllHTTPHeaderFields_1 = + _registerName1("setAllHTTPHeaderFields:"); + late final _sel_setValue_forHTTPHeaderField_1 = + _registerName1("setValue:forHTTPHeaderField:"); + late final _sel_addValue_forHTTPHeaderField_1 = + _registerName1("addValue:forHTTPHeaderField:"); + late final _sel_setHTTPBody_1 = _registerName1("setHTTPBody:"); + void _objc_msgSend_925( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer delegate, - bool startImmediately, + ffi.Pointer value, ) { return __objc_msgSend_925( obj, sel, - request, - delegate, - startImmediately, + value, ); } late final __objc_msgSend_925Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Bool)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_925 = __objc_msgSend_925Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, bool)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_initWithRequest_delegate_1 = - _registerName1("initWithRequest:delegate:"); - instancetype _objc_msgSend_926( + late final _sel_setHTTPBodyStream_1 = _registerName1("setHTTPBodyStream:"); + void _objc_msgSend_926( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer delegate, + ffi.Pointer value, ) { return __objc_msgSend_926( obj, sel, - request, - delegate, + value, ); } late final __objc_msgSend_926Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_926 = __objc_msgSend_926Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_connectionWithRequest_delegate_1 = - _registerName1("connectionWithRequest:delegate:"); - ffi.Pointer _objc_msgSend_927( + late final _sel_setHTTPShouldHandleCookies_1 = + _registerName1("setHTTPShouldHandleCookies:"); + late final _sel_setHTTPShouldUsePipelining_1 = + _registerName1("setHTTPShouldUsePipelining:"); + late final _sel_setProperty_forKey_inRequest_1 = + _registerName1("setProperty:forKey:inRequest:"); + void _objc_msgSend_927( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer value, + ffi.Pointer key, ffi.Pointer request, - ffi.Pointer delegate, ) { return __objc_msgSend_927( obj, sel, + value, + key, request, - delegate, ); } late final __objc_msgSend_927Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_927 = __objc_msgSend_927Ptr.asFunction< - ffi.Pointer Function( + void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_unscheduleFromRunLoop_forMode_1 = - _registerName1("unscheduleFromRunLoop:forMode:"); - late final _sel_setDelegateQueue_1 = _registerName1("setDelegateQueue:"); + late final _sel_removePropertyForKey_inRequest_1 = + _registerName1("removePropertyForKey:inRequest:"); void _objc_msgSend_928( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer queue, + ffi.Pointer key, + ffi.Pointer request, ) { return __objc_msgSend_928( obj, sel, - queue, + key, + request, ); } late final __objc_msgSend_928Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_928 = __objc_msgSend_928Ptr.asFunction< void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer, ffi.Pointer)>(); - late final _sel_canHandleRequest_1 = _registerName1("canHandleRequest:"); + late final _sel_registerClass_1 = _registerName1("registerClass:"); + late final _sel_unregisterClass_1 = _registerName1("unregisterClass:"); + late final _sel_canInitWithTask_1 = _registerName1("canInitWithTask:"); bool _objc_msgSend_929( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, + ffi.Pointer task, ) { return __objc_msgSend_929( obj, sel, - request, + task, ); } @@ -26382,672 +26554,664 @@ class SentryCocoa { bool Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); - late final _sel_sendSynchronousRequest_returningResponse_error_1 = - _registerName1("sendSynchronousRequest:returningResponse:error:"); - ffi.Pointer _objc_msgSend_930( + late final _sel_initWithTask_cachedResponse_client_1 = + _registerName1("initWithTask:cachedResponse:client:"); + instancetype _objc_msgSend_930( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer> response, - ffi.Pointer> error, + ffi.Pointer task, + ffi.Pointer cachedResponse, + ffi.Pointer client, ) { return __objc_msgSend_930( obj, sel, - request, - response, - error, + task, + cachedResponse, + client, ); } late final __objc_msgSend_930Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_930 = __objc_msgSend_930Ptr.asFunction< - ffi.Pointer Function( + instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_sendAsynchronousRequest_queue_completionHandler_1 = - _registerName1("sendAsynchronousRequest:queue:completionHandler:"); - void _objc_msgSend_931( + late final _sel_task1 = _registerName1("task"); + ffi.Pointer _objc_msgSend_931( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer queue, - ffi.Pointer<_ObjCBlock> handler, ) { return __objc_msgSend_931( obj, sel, - request, - queue, - handler, ); } late final __objc_msgSend_931Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_931 = __objc_msgSend_931Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _class_NSURLCredential1 = _getClass1("NSURLCredential"); - late final _sel_persistence1 = _registerName1("persistence"); - int _objc_msgSend_932( + late final _class_NSXMLParser1 = _getClass1("NSXMLParser"); + late final _sel_initWithStream_1 = _registerName1("initWithStream:"); + instancetype _objc_msgSend_932( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer stream, ) { return __objc_msgSend_932( obj, sel, + stream, ); } late final __objc_msgSend_932Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_932 = __objc_msgSend_932Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_initWithUser_password_persistence_1 = - _registerName1("initWithUser:password:persistence:"); - instancetype _objc_msgSend_933( + late final _sel_shouldProcessNamespaces1 = + _registerName1("shouldProcessNamespaces"); + late final _sel_setShouldProcessNamespaces_1 = + _registerName1("setShouldProcessNamespaces:"); + late final _sel_shouldReportNamespacePrefixes1 = + _registerName1("shouldReportNamespacePrefixes"); + late final _sel_setShouldReportNamespacePrefixes_1 = + _registerName1("setShouldReportNamespacePrefixes:"); + late final _sel_externalEntityResolvingPolicy1 = + _registerName1("externalEntityResolvingPolicy"); + int _objc_msgSend_933( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer user, - ffi.Pointer password, - int persistence, ) { return __objc_msgSend_933( obj, sel, - user, - password, - persistence, ); } late final __objc_msgSend_933Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_933 = __objc_msgSend_933Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_credentialWithUser_password_persistence_1 = - _registerName1("credentialWithUser:password:persistence:"); - ffi.Pointer _objc_msgSend_934( + late final _sel_setExternalEntityResolvingPolicy_1 = + _registerName1("setExternalEntityResolvingPolicy:"); + void _objc_msgSend_934( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer user, - ffi.Pointer password, - int persistence, + int value, ) { return __objc_msgSend_934( obj, sel, - user, - password, - persistence, + value, ); } late final __objc_msgSend_934Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_934 = __objc_msgSend_934Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_hasPassword1 = _registerName1("hasPassword"); - late final _sel_initWithIdentity_certificates_persistence_1 = - _registerName1("initWithIdentity:certificates:persistence:"); - instancetype _objc_msgSend_935( + late final _sel_allowedExternalEntityURLs1 = + _registerName1("allowedExternalEntityURLs"); + late final _sel_setAllowedExternalEntityURLs_1 = + _registerName1("setAllowedExternalEntityURLs:"); + void _objc_msgSend_935( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<__SecIdentity> identity, - ffi.Pointer certArray, - int persistence, + ffi.Pointer value, ) { return __objc_msgSend_935( obj, sel, - identity, - certArray, - persistence, + value, ); } late final __objc_msgSend_935Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<__SecIdentity>, - ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_935 = __objc_msgSend_935Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<__SecIdentity>, ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_credentialWithIdentity_certificates_persistence_1 = - _registerName1("credentialWithIdentity:certificates:persistence:"); - ffi.Pointer _objc_msgSend_936( + late final _sel_parse1 = _registerName1("parse"); + late final _sel_abortParsing1 = _registerName1("abortParsing"); + late final _sel_parserError1 = _registerName1("parserError"); + late final _sel_shouldResolveExternalEntities1 = + _registerName1("shouldResolveExternalEntities"); + late final _sel_setShouldResolveExternalEntities_1 = + _registerName1("setShouldResolveExternalEntities:"); + late final _sel_publicID1 = _registerName1("publicID"); + late final _sel_systemID1 = _registerName1("systemID"); + late final _sel_lineNumber1 = _registerName1("lineNumber"); + late final _sel_columnNumber1 = _registerName1("columnNumber"); + late final _class_NSFileWrapper1 = _getClass1("NSFileWrapper"); + late final _sel_initWithURL_options_error_1 = + _registerName1("initWithURL:options:error:"); + instancetype _objc_msgSend_936( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<__SecIdentity> identity, - ffi.Pointer certArray, - int persistence, + ffi.Pointer url, + int options, + ffi.Pointer> outError, ) { return __objc_msgSend_936( obj, sel, - identity, - certArray, - persistence, + url, + options, + outError, ); } late final __objc_msgSend_936Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + instancetype Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer<__SecIdentity>, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_936 = __objc_msgSend_936Ptr.asFunction< - ffi.Pointer Function( + instancetype Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer<__SecIdentity>, ffi.Pointer, - int)>(); + int, + ffi.Pointer>)>(); - late final _sel_identity1 = _registerName1("identity"); - ffi.Pointer<__SecIdentity> _objc_msgSend_937( - ffi.Pointer obj, - ffi.Pointer sel, - ) { - return __objc_msgSend_937( - obj, - sel, - ); - } + late final _sel_initDirectoryWithFileWrappers_1 = + _registerName1("initDirectoryWithFileWrappers:"); + late final _sel_initRegularFileWithContents_1 = + _registerName1("initRegularFileWithContents:"); + late final _sel_initSymbolicLinkWithDestinationURL_1 = + _registerName1("initSymbolicLinkWithDestinationURL:"); + late final _sel_initWithSerializedRepresentation_1 = + _registerName1("initWithSerializedRepresentation:"); + late final _sel_isDirectory1 = _registerName1("isDirectory"); + late final _sel_isRegularFile1 = _registerName1("isRegularFile"); + late final _sel_isSymbolicLink1 = _registerName1("isSymbolicLink"); + late final _sel_preferredFilename1 = _registerName1("preferredFilename"); + late final _sel_setPreferredFilename_1 = + _registerName1("setPreferredFilename:"); + late final _sel_filename1 = _registerName1("filename"); + late final _sel_setFilename_1 = _registerName1("setFilename:"); + late final _sel_fileAttributes1 = _registerName1("fileAttributes"); + late final _sel_setFileAttributes_1 = _registerName1("setFileAttributes:"); + late final _sel_matchesContentsOfURL_1 = + _registerName1("matchesContentsOfURL:"); + late final _sel_readFromURL_options_error_1 = + _registerName1("readFromURL:options:error:"); + bool _objc_msgSend_937( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer url, + int options, + ffi.Pointer> outError, + ) { + return __objc_msgSend_937( + obj, + sel, + url, + options, + outError, + ); + } late final __objc_msgSend_937Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer<__SecIdentity> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_937 = __objc_msgSend_937Ptr.asFunction< - ffi.Pointer<__SecIdentity> Function( - ffi.Pointer, ffi.Pointer)>(); + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); - late final _sel_certificates1 = _registerName1("certificates"); - late final _sel_initWithTrust_1 = _registerName1("initWithTrust:"); - instancetype _objc_msgSend_938( + late final _sel_writeToURL_options_originalContentsURL_error_1 = + _registerName1("writeToURL:options:originalContentsURL:error:"); + bool _objc_msgSend_938( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<__SecTrust> trust, + ffi.Pointer url, + int options, + ffi.Pointer originalContentsURL, + ffi.Pointer> outError, ) { return __objc_msgSend_938( obj, sel, - trust, + url, + options, + originalContentsURL, + outError, ); } late final __objc_msgSend_938Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<__SecTrust>)>>('objc_msgSend'); + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_938 = __objc_msgSend_938Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<__SecTrust>)>(); + bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer>)>(); - late final _sel_credentialForTrust_1 = _registerName1("credentialForTrust:"); + late final _sel_serializedRepresentation1 = + _registerName1("serializedRepresentation"); + late final _sel_addFileWrapper_1 = _registerName1("addFileWrapper:"); ffi.Pointer _objc_msgSend_939( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<__SecTrust> trust, + ffi.Pointer child, ) { return __objc_msgSend_939( obj, sel, - trust, + child, ); } late final __objc_msgSend_939Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<__SecTrust>)>>('objc_msgSend'); + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_939 = __objc_msgSend_939Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer<__SecTrust>)>(); + ffi.Pointer, ffi.Pointer)>(); - late final _class_NSURLProtectionSpace1 = _getClass1("NSURLProtectionSpace"); - late final _sel_initWithHost_port_protocol_realm_authenticationMethod_1 = - _registerName1("initWithHost:port:protocol:realm:authenticationMethod:"); - instancetype _objc_msgSend_940( + late final _sel_addRegularFileWithContents_preferredFilename_1 = + _registerName1("addRegularFileWithContents:preferredFilename:"); + ffi.Pointer _objc_msgSend_940( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer host, - int port, - ffi.Pointer protocol, - ffi.Pointer realm, - ffi.Pointer authenticationMethod, + ffi.Pointer data, + ffi.Pointer fileName, ) { return __objc_msgSend_940( obj, sel, - host, - port, - protocol, - realm, - authenticationMethod, + data, + fileName, ); } late final __objc_msgSend_940Ptr = _lookup< ffi.NativeFunction< - instancetype Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Long, - ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_940 = __objc_msgSend_940Ptr.asFunction< - instancetype Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - late final _sel_initWithProxyHost_port_type_realm_authenticationMethod_1 = - _registerName1("initWithProxyHost:port:type:realm:authenticationMethod:"); - late final _sel_realm1 = _registerName1("realm"); - late final _sel_receivesCredentialSecurely1 = - _registerName1("receivesCredentialSecurely"); - late final _sel_isProxy1 = _registerName1("isProxy"); - late final _sel_proxyType1 = _registerName1("proxyType"); - late final _sel_protocol1 = _registerName1("protocol"); - late final _sel_authenticationMethod1 = - _registerName1("authenticationMethod"); - late final _sel_distinguishedNames1 = _registerName1("distinguishedNames"); - late final _sel_serverTrust1 = _registerName1("serverTrust"); - ffi.Pointer<__SecTrust> _objc_msgSend_941( + late final _sel_removeFileWrapper_1 = _registerName1("removeFileWrapper:"); + void _objc_msgSend_941( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer child, ) { return __objc_msgSend_941( obj, sel, + child, ); } late final __objc_msgSend_941Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer<__SecTrust> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_941 = __objc_msgSend_941Ptr.asFunction< - ffi.Pointer<__SecTrust> Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _class_NSURLCredentialStorage1 = - _getClass1("NSURLCredentialStorage"); - late final _sel_sharedCredentialStorage1 = - _registerName1("sharedCredentialStorage"); - ffi.Pointer _objc_msgSend_942( + late final _sel_fileWrappers1 = _registerName1("fileWrappers"); + late final _sel_keyForFileWrapper_1 = _registerName1("keyForFileWrapper:"); + late final _sel_regularFileContents1 = _registerName1("regularFileContents"); + late final _sel_symbolicLinkDestinationURL1 = + _registerName1("symbolicLinkDestinationURL"); + late final _sel_initSymbolicLinkWithDestination_1 = + _registerName1("initSymbolicLinkWithDestination:"); + late final _sel_needsToBeUpdatedFromPath_1 = + _registerName1("needsToBeUpdatedFromPath:"); + late final _sel_updateFromPath_1 = _registerName1("updateFromPath:"); + late final _sel_writeToFile_atomically_updateFilenames_1 = + _registerName1("writeToFile:atomically:updateFilenames:"); + bool _objc_msgSend_942( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer path, + bool atomicFlag, + bool updateFilenamesFlag, ) { return __objc_msgSend_942( obj, sel, + path, + atomicFlag, + updateFilenamesFlag, ); } late final __objc_msgSend_942Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool, ffi.Bool)>>('objc_msgSend'); late final __objc_msgSend_942 = __objc_msgSend_942Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + bool Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool, bool)>(); - late final _sel_credentialsForProtectionSpace_1 = - _registerName1("credentialsForProtectionSpace:"); + late final _sel_addFileWithPath_1 = _registerName1("addFileWithPath:"); + late final _sel_addSymbolicLinkWithDestination_preferredFilename_1 = + _registerName1("addSymbolicLinkWithDestination:preferredFilename:"); + late final _sel_symbolicLinkDestination1 = + _registerName1("symbolicLinkDestination"); + late final _class_NSURLSession1 = _getClass1("NSURLSession"); + late final _sel_sharedSession1 = _registerName1("sharedSession"); ffi.Pointer _objc_msgSend_943( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer space, ) { return __objc_msgSend_943( obj, sel, - space, ); } late final __objc_msgSend_943Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_943 = __objc_msgSend_943Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_allCredentials1 = _registerName1("allCredentials"); - late final _sel_setCredential_forProtectionSpace_1 = - _registerName1("setCredential:forProtectionSpace:"); - void _objc_msgSend_944( + late final _class_NSURLSessionConfiguration1 = + _getClass1("NSURLSessionConfiguration"); + late final _sel_defaultSessionConfiguration1 = + _registerName1("defaultSessionConfiguration"); + ffi.Pointer _objc_msgSend_944( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer space, ) { return __objc_msgSend_944( obj, sel, - credential, - space, ); } late final __objc_msgSend_944Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_944 = __objc_msgSend_944Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_removeCredential_forProtectionSpace_1 = - _registerName1("removeCredential:forProtectionSpace:"); - late final _sel_removeCredential_forProtectionSpace_options_1 = - _registerName1("removeCredential:forProtectionSpace:options:"); - void _objc_msgSend_945( + late final _sel_ephemeralSessionConfiguration1 = + _registerName1("ephemeralSessionConfiguration"); + late final _sel_backgroundSessionConfigurationWithIdentifier_1 = + _registerName1("backgroundSessionConfigurationWithIdentifier:"); + ffi.Pointer _objc_msgSend_945( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer space, - ffi.Pointer options, + ffi.Pointer identifier, ) { return __objc_msgSend_945( obj, sel, - credential, - space, - options, + identifier, ); } late final __objc_msgSend_945Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_945 = __objc_msgSend_945Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_defaultCredentialForProtectionSpace_1 = - _registerName1("defaultCredentialForProtectionSpace:"); - ffi.Pointer _objc_msgSend_946( + late final _sel_identifier1 = _registerName1("identifier"); + late final _sel_requestCachePolicy1 = _registerName1("requestCachePolicy"); + late final _sel_setRequestCachePolicy_1 = + _registerName1("setRequestCachePolicy:"); + late final _sel_timeoutIntervalForRequest1 = + _registerName1("timeoutIntervalForRequest"); + late final _sel_setTimeoutIntervalForRequest_1 = + _registerName1("setTimeoutIntervalForRequest:"); + late final _sel_timeoutIntervalForResource1 = + _registerName1("timeoutIntervalForResource"); + late final _sel_setTimeoutIntervalForResource_1 = + _registerName1("setTimeoutIntervalForResource:"); + late final _sel_waitsForConnectivity1 = + _registerName1("waitsForConnectivity"); + late final _sel_setWaitsForConnectivity_1 = + _registerName1("setWaitsForConnectivity:"); + late final _sel_isDiscretionary1 = _registerName1("isDiscretionary"); + late final _sel_setDiscretionary_1 = _registerName1("setDiscretionary:"); + late final _sel_sharedContainerIdentifier1 = + _registerName1("sharedContainerIdentifier"); + late final _sel_setSharedContainerIdentifier_1 = + _registerName1("setSharedContainerIdentifier:"); + late final _sel_sessionSendsLaunchEvents1 = + _registerName1("sessionSendsLaunchEvents"); + late final _sel_setSessionSendsLaunchEvents_1 = + _registerName1("setSessionSendsLaunchEvents:"); + late final _sel_connectionProxyDictionary1 = + _registerName1("connectionProxyDictionary"); + late final _sel_setConnectionProxyDictionary_1 = + _registerName1("setConnectionProxyDictionary:"); + late final _sel_TLSMinimumSupportedProtocol1 = + _registerName1("TLSMinimumSupportedProtocol"); + int _objc_msgSend_946( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer space, ) { return __objc_msgSend_946( obj, sel, - space, ); } late final __objc_msgSend_946Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_946 = __objc_msgSend_946Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_setDefaultCredential_forProtectionSpace_1 = - _registerName1("setDefaultCredential:forProtectionSpace:"); - late final _sel_getCredentialsForProtectionSpace_task_completionHandler_1 = - _registerName1( - "getCredentialsForProtectionSpace:task:completionHandler:"); + late final _sel_setTLSMinimumSupportedProtocol_1 = + _registerName1("setTLSMinimumSupportedProtocol:"); void _objc_msgSend_947( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer protectionSpace, - ffi.Pointer task, - ffi.Pointer<_ObjCBlock> completionHandler, + int value, ) { return __objc_msgSend_947( obj, sel, - protectionSpace, - task, - completionHandler, + value, ); } late final __objc_msgSend_947Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_947 = __objc_msgSend_947Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_setCredential_forProtectionSpace_task_1 = - _registerName1("setCredential:forProtectionSpace:task:"); - void _objc_msgSend_948( + late final _sel_TLSMaximumSupportedProtocol1 = + _registerName1("TLSMaximumSupportedProtocol"); + late final _sel_setTLSMaximumSupportedProtocol_1 = + _registerName1("setTLSMaximumSupportedProtocol:"); + late final _sel_TLSMinimumSupportedProtocolVersion1 = + _registerName1("TLSMinimumSupportedProtocolVersion"); + int _objc_msgSend_948( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer protectionSpace, - ffi.Pointer task, ) { return __objc_msgSend_948( obj, sel, - credential, - protectionSpace, - task, ); } late final __objc_msgSend_948Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_948 = __objc_msgSend_948Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_removeCredential_forProtectionSpace_options_task_1 = - _registerName1("removeCredential:forProtectionSpace:options:task:"); + late final _sel_setTLSMinimumSupportedProtocolVersion_1 = + _registerName1("setTLSMinimumSupportedProtocolVersion:"); void _objc_msgSend_949( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer credential, - ffi.Pointer protectionSpace, - ffi.Pointer options, - ffi.Pointer task, + int value, ) { return __objc_msgSend_949( obj, sel, - credential, - protectionSpace, - options, - task, + value, ); } late final __objc_msgSend_949Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_949 = __objc_msgSend_949Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_getDefaultCredentialForProtectionSpace_task_completionHandler_1 = - _registerName1( - "getDefaultCredentialForProtectionSpace:task:completionHandler:"); + late final _sel_TLSMaximumSupportedProtocolVersion1 = + _registerName1("TLSMaximumSupportedProtocolVersion"); + late final _sel_setTLSMaximumSupportedProtocolVersion_1 = + _registerName1("setTLSMaximumSupportedProtocolVersion:"); + late final _sel_HTTPShouldSetCookies1 = + _registerName1("HTTPShouldSetCookies"); + late final _sel_setHTTPShouldSetCookies_1 = + _registerName1("setHTTPShouldSetCookies:"); + late final _sel_HTTPCookieAcceptPolicy1 = + _registerName1("HTTPCookieAcceptPolicy"); + late final _sel_setHTTPCookieAcceptPolicy_1 = + _registerName1("setHTTPCookieAcceptPolicy:"); + late final _sel_HTTPAdditionalHeaders1 = + _registerName1("HTTPAdditionalHeaders"); + late final _sel_setHTTPAdditionalHeaders_1 = + _registerName1("setHTTPAdditionalHeaders:"); + late final _sel_HTTPMaximumConnectionsPerHost1 = + _registerName1("HTTPMaximumConnectionsPerHost"); + late final _sel_setHTTPMaximumConnectionsPerHost_1 = + _registerName1("setHTTPMaximumConnectionsPerHost:"); + late final _sel_HTTPCookieStorage1 = _registerName1("HTTPCookieStorage"); + late final _sel_setHTTPCookieStorage_1 = + _registerName1("setHTTPCookieStorage:"); void _objc_msgSend_950( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer space, - ffi.Pointer task, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer value, ) { return __objc_msgSend_950( obj, sel, - space, - task, - completionHandler, + value, ); } late final __objc_msgSend_950Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_950 = __objc_msgSend_950Ptr.asFunction< - void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_setDefaultCredential_forProtectionSpace_task_1 = - _registerName1("setDefaultCredential:forProtectionSpace:task:"); - late final _class_NSURLProtocol1 = _getClass1("NSURLProtocol"); - late final _sel_initWithRequest_cachedResponse_client_1 = - _registerName1("initWithRequest:cachedResponse:client:"); - instancetype _objc_msgSend_951( + late final _sel_URLCredentialStorage1 = + _registerName1("URLCredentialStorage"); + late final _sel_setURLCredentialStorage_1 = + _registerName1("setURLCredentialStorage:"); + void _objc_msgSend_951( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer cachedResponse, - ffi.Pointer client, + ffi.Pointer value, ) { return __objc_msgSend_951( obj, sel, - request, - cachedResponse, - client, + value, ); } late final __objc_msgSend_951Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_951 = __objc_msgSend_951Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); - late final _sel_client1 = _registerName1("client"); - late final _sel_request1 = _registerName1("request"); - late final _sel_cachedResponse1 = _registerName1("cachedResponse"); - ffi.Pointer _objc_msgSend_952( + late final _sel_URLCache1 = _registerName1("URLCache"); + late final _sel_setURLCache_1 = _registerName1("setURLCache:"); + late final _sel_shouldUseExtendedBackgroundIdleMode1 = + _registerName1("shouldUseExtendedBackgroundIdleMode"); + late final _sel_setShouldUseExtendedBackgroundIdleMode_1 = + _registerName1("setShouldUseExtendedBackgroundIdleMode:"); + late final _sel_protocolClasses1 = _registerName1("protocolClasses"); + late final _sel_setProtocolClasses_1 = _registerName1("setProtocolClasses:"); + late final _sel_multipathServiceType1 = + _registerName1("multipathServiceType"); + int _objc_msgSend_952( ffi.Pointer obj, ffi.Pointer sel, ) { @@ -27059,77 +27223,71 @@ class SentryCocoa { late final __objc_msgSend_952Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Int32 Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_952 = __objc_msgSend_952Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_canInitWithRequest_1 = _registerName1("canInitWithRequest:"); - late final _sel_canonicalRequestForRequest_1 = - _registerName1("canonicalRequestForRequest:"); - ffi.Pointer _objc_msgSend_953( + late final _sel_setMultipathServiceType_1 = + _registerName1("setMultipathServiceType:"); + void _objc_msgSend_953( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, + int value, ) { return __objc_msgSend_953( obj, sel, - request, + value, ); } late final __objc_msgSend_953Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_953 = __objc_msgSend_953Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_requestIsCacheEquivalent_toRequest_1 = - _registerName1("requestIsCacheEquivalent:toRequest:"); - bool _objc_msgSend_954( + late final _sel_backgroundSessionConfiguration_1 = + _registerName1("backgroundSessionConfiguration:"); + late final _sel_sessionWithConfiguration_1 = + _registerName1("sessionWithConfiguration:"); + ffi.Pointer _objc_msgSend_954( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer a, - ffi.Pointer b, + ffi.Pointer configuration, ) { return __objc_msgSend_954( obj, sel, - a, - b, + configuration, ); } late final __objc_msgSend_954Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_954 = __objc_msgSend_954Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_startLoading1 = _registerName1("startLoading"); - late final _sel_stopLoading1 = _registerName1("stopLoading"); - late final _sel_propertyForKey_inRequest_1 = - _registerName1("propertyForKey:inRequest:"); + late final _sel_sessionWithConfiguration_delegate_delegateQueue_1 = + _registerName1("sessionWithConfiguration:delegate:delegateQueue:"); ffi.Pointer _objc_msgSend_955( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer key, - ffi.Pointer request, + ffi.Pointer configuration, + ffi.Pointer delegate, + ffi.Pointer queue, ) { return __objc_msgSend_955( obj, sel, - key, - request, + configuration, + delegate, + queue, ); } @@ -27139,400 +27297,407 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_955 = __objc_msgSend_955Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _class_NSMutableURLRequest1 = _getClass1("NSMutableURLRequest"); - late final _sel_setURL_1 = _registerName1("setURL:"); - late final _sel_setCachePolicy_1 = _registerName1("setCachePolicy:"); + late final _sel_delegateQueue1 = _registerName1("delegateQueue"); + late final _sel_configuration1 = _registerName1("configuration"); + late final _sel_sessionDescription1 = _registerName1("sessionDescription"); + late final _sel_setSessionDescription_1 = + _registerName1("setSessionDescription:"); + late final _sel_finishTasksAndInvalidate1 = + _registerName1("finishTasksAndInvalidate"); + late final _sel_invalidateAndCancel1 = _registerName1("invalidateAndCancel"); + late final _sel_resetWithCompletionHandler_1 = + _registerName1("resetWithCompletionHandler:"); + late final _sel_flushWithCompletionHandler_1 = + _registerName1("flushWithCompletionHandler:"); + late final _sel_getTasksWithCompletionHandler_1 = + _registerName1("getTasksWithCompletionHandler:"); void _objc_msgSend_956( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_956( obj, sel, - value, + completionHandler, ); } late final __objc_msgSend_956Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_956 = __objc_msgSend_956Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_setTimeoutInterval_1 = _registerName1("setTimeoutInterval:"); - late final _sel_setMainDocumentURL_1 = _registerName1("setMainDocumentURL:"); - late final _sel_setNetworkServiceType_1 = - _registerName1("setNetworkServiceType:"); + late final _sel_getAllTasksWithCompletionHandler_1 = + _registerName1("getAllTasksWithCompletionHandler:"); void _objc_msgSend_957( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_957( obj, sel, - value, + completionHandler, ); } late final __objc_msgSend_957Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_957 = __objc_msgSend_957Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_setAllowsCellularAccess_1 = - _registerName1("setAllowsCellularAccess:"); - late final _sel_setAllowsExpensiveNetworkAccess_1 = - _registerName1("setAllowsExpensiveNetworkAccess:"); - late final _sel_setAllowsConstrainedNetworkAccess_1 = - _registerName1("setAllowsConstrainedNetworkAccess:"); - late final _sel_setAssumesHTTP3Capable_1 = - _registerName1("setAssumesHTTP3Capable:"); - late final _sel_setAttribution_1 = _registerName1("setAttribution:"); - void _objc_msgSend_958( + late final _sel_dataTaskWithRequest_1 = + _registerName1("dataTaskWithRequest:"); + ffi.Pointer _objc_msgSend_958( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer request, ) { return __objc_msgSend_958( obj, sel, - value, + request, ); } late final __objc_msgSend_958Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_958 = __objc_msgSend_958Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setRequiresDNSSECValidation_1 = - _registerName1("setRequiresDNSSECValidation:"); - late final _sel_setHTTPMethod_1 = _registerName1("setHTTPMethod:"); - late final _sel_setAllHTTPHeaderFields_1 = - _registerName1("setAllHTTPHeaderFields:"); - late final _sel_setValue_forHTTPHeaderField_1 = - _registerName1("setValue:forHTTPHeaderField:"); - late final _sel_addValue_forHTTPHeaderField_1 = - _registerName1("addValue:forHTTPHeaderField:"); - late final _sel_setHTTPBody_1 = _registerName1("setHTTPBody:"); - void _objc_msgSend_959( + late final _sel_dataTaskWithURL_1 = _registerName1("dataTaskWithURL:"); + ffi.Pointer _objc_msgSend_959( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer url, ) { return __objc_msgSend_959( obj, sel, - value, + url, ); } late final __objc_msgSend_959Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_959 = __objc_msgSend_959Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setHTTPBodyStream_1 = _registerName1("setHTTPBodyStream:"); - void _objc_msgSend_960( + late final _class_NSURLSessionUploadTask1 = + _getClass1("NSURLSessionUploadTask"); + late final _sel_uploadTaskWithRequest_fromFile_1 = + _registerName1("uploadTaskWithRequest:fromFile:"); + ffi.Pointer _objc_msgSend_960( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer request, + ffi.Pointer fileURL, ) { return __objc_msgSend_960( obj, sel, - value, + request, + fileURL, ); } late final __objc_msgSend_960Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_960 = __objc_msgSend_960Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setHTTPShouldHandleCookies_1 = - _registerName1("setHTTPShouldHandleCookies:"); - late final _sel_setHTTPShouldUsePipelining_1 = - _registerName1("setHTTPShouldUsePipelining:"); - late final _sel_setProperty_forKey_inRequest_1 = - _registerName1("setProperty:forKey:inRequest:"); - void _objc_msgSend_961( + late final _sel_uploadTaskWithRequest_fromData_1 = + _registerName1("uploadTaskWithRequest:fromData:"); + ffi.Pointer _objc_msgSend_961( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, - ffi.Pointer key, ffi.Pointer request, + ffi.Pointer bodyData, ) { return __objc_msgSend_961( obj, sel, - value, - key, request, + bodyData, ); } late final __objc_msgSend_961Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_961 = __objc_msgSend_961Ptr.asFunction< - void Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); - late final _sel_removePropertyForKey_inRequest_1 = - _registerName1("removePropertyForKey:inRequest:"); - void _objc_msgSend_962( + late final _sel_uploadTaskWithStreamedRequest_1 = + _registerName1("uploadTaskWithStreamedRequest:"); + ffi.Pointer _objc_msgSend_962( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer key, ffi.Pointer request, ) { return __objc_msgSend_962( obj, sel, - key, request, ); } late final __objc_msgSend_962Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_962 = __objc_msgSend_962Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_registerClass_1 = _registerName1("registerClass:"); - late final _sel_unregisterClass_1 = _registerName1("unregisterClass:"); - late final _sel_canInitWithTask_1 = _registerName1("canInitWithTask:"); - bool _objc_msgSend_963( + late final _class_NSURLSessionDownloadTask1 = + _getClass1("NSURLSessionDownloadTask"); + late final _sel_cancelByProducingResumeData_1 = + _registerName1("cancelByProducingResumeData:"); + void _objc_msgSend_963( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer task, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_963( obj, sel, - task, + completionHandler, ); } late final __objc_msgSend_963Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_963 = __objc_msgSend_963Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_initWithTask_cachedResponse_client_1 = - _registerName1("initWithTask:cachedResponse:client:"); - instancetype _objc_msgSend_964( + late final _sel_downloadTaskWithRequest_1 = + _registerName1("downloadTaskWithRequest:"); + ffi.Pointer _objc_msgSend_964( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer task, - ffi.Pointer cachedResponse, - ffi.Pointer client, + ffi.Pointer request, ) { return __objc_msgSend_964( obj, sel, - task, - cachedResponse, - client, + request, ); } late final __objc_msgSend_964Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_964 = __objc_msgSend_964Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_task1 = _registerName1("task"); + late final _sel_downloadTaskWithURL_1 = + _registerName1("downloadTaskWithURL:"); ffi.Pointer _objc_msgSend_965( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer url, ) { return __objc_msgSend_965( obj, sel, + url, ); } late final __objc_msgSend_965Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_965 = __objc_msgSend_965Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _class_NSXMLParser1 = _getClass1("NSXMLParser"); - late final _sel_initWithStream_1 = _registerName1("initWithStream:"); - instancetype _objc_msgSend_966( + late final _sel_downloadTaskWithResumeData_1 = + _registerName1("downloadTaskWithResumeData:"); + ffi.Pointer _objc_msgSend_966( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer stream, + ffi.Pointer resumeData, ) { return __objc_msgSend_966( obj, sel, - stream, + resumeData, ); } late final __objc_msgSend_966Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_966 = __objc_msgSend_966Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_shouldProcessNamespaces1 = - _registerName1("shouldProcessNamespaces"); - late final _sel_setShouldProcessNamespaces_1 = - _registerName1("setShouldProcessNamespaces:"); - late final _sel_shouldReportNamespacePrefixes1 = - _registerName1("shouldReportNamespacePrefixes"); - late final _sel_setShouldReportNamespacePrefixes_1 = - _registerName1("setShouldReportNamespacePrefixes:"); - late final _sel_externalEntityResolvingPolicy1 = - _registerName1("externalEntityResolvingPolicy"); - int _objc_msgSend_967( + late final _class_NSURLSessionStreamTask1 = + _getClass1("NSURLSessionStreamTask"); + late final _sel_readDataOfMinLength_maxLength_timeout_completionHandler_1 = + _registerName1( + "readDataOfMinLength:maxLength:timeout:completionHandler:"); + void _objc_msgSend_967( ffi.Pointer obj, ffi.Pointer sel, + int minBytes, + int maxBytes, + double timeout, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_967( obj, sel, + minBytes, + maxBytes, + timeout, + completionHandler, ); } late final __objc_msgSend_967Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.UnsignedLong, + ffi.Double, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_967 = __objc_msgSend_967Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int, int, + double, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_setExternalEntityResolvingPolicy_1 = - _registerName1("setExternalEntityResolvingPolicy:"); + late final _sel_writeData_timeout_completionHandler_1 = + _registerName1("writeData:timeout:completionHandler:"); void _objc_msgSend_968( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer data, + double timeout, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_968( obj, sel, - value, + data, + timeout, + completionHandler, ); } late final __objc_msgSend_968Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Double, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_968 = __objc_msgSend_968Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, double, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_allowedExternalEntityURLs1 = - _registerName1("allowedExternalEntityURLs"); - late final _sel_setAllowedExternalEntityURLs_1 = - _registerName1("setAllowedExternalEntityURLs:"); - void _objc_msgSend_969( + late final _sel_captureStreams1 = _registerName1("captureStreams"); + late final _sel_closeWrite1 = _registerName1("closeWrite"); + late final _sel_closeRead1 = _registerName1("closeRead"); + late final _sel_startSecureConnection1 = + _registerName1("startSecureConnection"); + late final _sel_stopSecureConnection1 = + _registerName1("stopSecureConnection"); + late final _sel_streamTaskWithHostName_port_1 = + _registerName1("streamTaskWithHostName:port:"); + ffi.Pointer _objc_msgSend_969( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer hostname, + int port, ) { return __objc_msgSend_969( obj, sel, - value, + hostname, + port, ); } late final __objc_msgSend_969Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Long)>>('objc_msgSend'); late final __objc_msgSend_969 = __objc_msgSend_969Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_parse1 = _registerName1("parse"); - late final _sel_abortParsing1 = _registerName1("abortParsing"); - late final _sel_parserError1 = _registerName1("parserError"); - late final _sel_shouldResolveExternalEntities1 = - _registerName1("shouldResolveExternalEntities"); - late final _sel_setShouldResolveExternalEntities_1 = - _registerName1("setShouldResolveExternalEntities:"); - late final _sel_publicID1 = _registerName1("publicID"); - late final _sel_systemID1 = _registerName1("systemID"); - late final _sel_lineNumber1 = _registerName1("lineNumber"); - late final _sel_columnNumber1 = _registerName1("columnNumber"); - late final _class_NSFileWrapper1 = _getClass1("NSFileWrapper"); - late final _sel_initWithURL_options_error_1 = - _registerName1("initWithURL:options:error:"); + late final _class_NSNetService1 = _getClass1("NSNetService"); + late final _sel_initWithDomain_type_name_port_1 = + _registerName1("initWithDomain:type:name:port:"); instancetype _objc_msgSend_970( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, - int options, - ffi.Pointer> outError, + ffi.Pointer domain, + ffi.Pointer type, + ffi.Pointer name, + int port, ) { return __objc_msgSend_970( obj, sel, - url, - options, - outError, + domain, + type, + name, + port, ); } @@ -27542,120 +27707,79 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer, + ffi.Int)>>('objc_msgSend'); late final __objc_msgSend_970 = __objc_msgSend_970Ptr.asFunction< instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - int, - ffi.Pointer>)>(); + ffi.Pointer, + ffi.Pointer, + int)>(); - late final _sel_initDirectoryWithFileWrappers_1 = - _registerName1("initDirectoryWithFileWrappers:"); - late final _sel_initRegularFileWithContents_1 = - _registerName1("initRegularFileWithContents:"); - late final _sel_initSymbolicLinkWithDestinationURL_1 = - _registerName1("initSymbolicLinkWithDestinationURL:"); - late final _sel_initWithSerializedRepresentation_1 = - _registerName1("initWithSerializedRepresentation:"); - late final _sel_isDirectory1 = _registerName1("isDirectory"); - late final _sel_isRegularFile1 = _registerName1("isRegularFile"); - late final _sel_isSymbolicLink1 = _registerName1("isSymbolicLink"); - late final _sel_preferredFilename1 = _registerName1("preferredFilename"); - late final _sel_setPreferredFilename_1 = - _registerName1("setPreferredFilename:"); - late final _sel_filename1 = _registerName1("filename"); - late final _sel_setFilename_1 = _registerName1("setFilename:"); - late final _sel_fileAttributes1 = _registerName1("fileAttributes"); - late final _sel_setFileAttributes_1 = _registerName1("setFileAttributes:"); - late final _sel_matchesContentsOfURL_1 = - _registerName1("matchesContentsOfURL:"); - late final _sel_readFromURL_options_error_1 = - _registerName1("readFromURL:options:error:"); - bool _objc_msgSend_971( + late final _sel_initWithDomain_type_name_1 = + _registerName1("initWithDomain:type:name:"); + late final _sel_includesPeerToPeer1 = _registerName1("includesPeerToPeer"); + late final _sel_setIncludesPeerToPeer_1 = + _registerName1("setIncludesPeerToPeer:"); + late final _sel_type1 = _registerName1("type"); + late final _sel_publishWithOptions_1 = _registerName1("publishWithOptions:"); + void _objc_msgSend_971( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, int options, - ffi.Pointer> outError, ) { return __objc_msgSend_971( obj, sel, - url, options, - outError, ); } late final __objc_msgSend_971Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_971 = __objc_msgSend_971Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_writeToURL_options_originalContentsURL_error_1 = - _registerName1("writeToURL:options:originalContentsURL:error:"); - bool _objc_msgSend_972( + late final _sel_resolve1 = _registerName1("resolve"); + late final _sel_stop1 = _registerName1("stop"); + late final _sel_dictionaryFromTXTRecordData_1 = + _registerName1("dictionaryFromTXTRecordData:"); + ffi.Pointer _objc_msgSend_972( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, - int options, - ffi.Pointer originalContentsURL, - ffi.Pointer> outError, + ffi.Pointer txtData, ) { return __objc_msgSend_972( obj, sel, - url, - options, - originalContentsURL, - outError, + txtData, ); } late final __objc_msgSend_972Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_972 = __objc_msgSend_972Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer>)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_serializedRepresentation1 = - _registerName1("serializedRepresentation"); - late final _sel_addFileWrapper_1 = _registerName1("addFileWrapper:"); + late final _sel_dataFromTXTRecordDictionary_1 = + _registerName1("dataFromTXTRecordDictionary:"); ffi.Pointer _objc_msgSend_973( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer child, + ffi.Pointer txtDictionary, ) { return __objc_msgSend_973( obj, sel, - child, + txtDictionary, ); } @@ -27667,432 +27791,416 @@ class SentryCocoa { ffi.Pointer Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); - late final _sel_addRegularFileWithContents_preferredFilename_1 = - _registerName1("addRegularFileWithContents:preferredFilename:"); - ffi.Pointer _objc_msgSend_974( + late final _sel_resolveWithTimeout_1 = _registerName1("resolveWithTimeout:"); + late final _sel_getInputStream_outputStream_1 = + _registerName1("getInputStream:outputStream:"); + bool _objc_msgSend_974( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer data, - ffi.Pointer fileName, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream, ) { return __objc_msgSend_974( obj, sel, - data, - fileName, + inputStream, + outputStream, ); } late final __objc_msgSend_974Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( + ffi.Bool Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer>, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_974 = __objc_msgSend_974Ptr.asFunction< - ffi.Pointer Function( + bool Function( ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer>, + ffi.Pointer>)>(); - late final _sel_removeFileWrapper_1 = _registerName1("removeFileWrapper:"); - void _objc_msgSend_975( + late final _sel_setTXTRecordData_1 = _registerName1("setTXTRecordData:"); + late final _sel_TXTRecordData1 = _registerName1("TXTRecordData"); + late final _sel_startMonitoring1 = _registerName1("startMonitoring"); + late final _sel_stopMonitoring1 = _registerName1("stopMonitoring"); + late final _sel_streamTaskWithNetService_1 = + _registerName1("streamTaskWithNetService:"); + ffi.Pointer _objc_msgSend_975( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer child, + ffi.Pointer service, ) { return __objc_msgSend_975( obj, sel, - child, + service, ); } late final __objc_msgSend_975Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_975 = __objc_msgSend_975Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_fileWrappers1 = _registerName1("fileWrappers"); - late final _sel_keyForFileWrapper_1 = _registerName1("keyForFileWrapper:"); - late final _sel_regularFileContents1 = _registerName1("regularFileContents"); - late final _sel_symbolicLinkDestinationURL1 = - _registerName1("symbolicLinkDestinationURL"); - late final _sel_initSymbolicLinkWithDestination_1 = - _registerName1("initSymbolicLinkWithDestination:"); - late final _sel_needsToBeUpdatedFromPath_1 = - _registerName1("needsToBeUpdatedFromPath:"); - late final _sel_updateFromPath_1 = _registerName1("updateFromPath:"); - late final _sel_writeToFile_atomically_updateFilenames_1 = - _registerName1("writeToFile:atomically:updateFilenames:"); - bool _objc_msgSend_976( + late final _class_NSURLSessionWebSocketTask1 = + _getClass1("NSURLSessionWebSocketTask"); + late final _class_NSURLSessionWebSocketMessage1 = + _getClass1("NSURLSessionWebSocketMessage"); + int _objc_msgSend_976( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer path, - bool atomicFlag, - bool updateFilenamesFlag, ) { return __objc_msgSend_976( obj, sel, - path, - atomicFlag, - updateFilenamesFlag, ); } late final __objc_msgSend_976Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool, ffi.Bool)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_976 = __objc_msgSend_976Ptr.asFunction< - bool Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool, bool)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_addFileWithPath_1 = _registerName1("addFileWithPath:"); - late final _sel_addSymbolicLinkWithDestination_preferredFilename_1 = - _registerName1("addSymbolicLinkWithDestination:preferredFilename:"); - late final _sel_symbolicLinkDestination1 = - _registerName1("symbolicLinkDestination"); - late final _class_NSURLSession1 = _getClass1("NSURLSession"); - late final _sel_sharedSession1 = _registerName1("sharedSession"); - ffi.Pointer _objc_msgSend_977( + late final _sel_sendMessage_completionHandler_1 = + _registerName1("sendMessage:completionHandler:"); + void _objc_msgSend_977( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer message, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_977( obj, sel, + message, + completionHandler, ); } late final __objc_msgSend_977Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_977 = __objc_msgSend_977Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - late final _class_NSURLSessionConfiguration1 = - _getClass1("NSURLSessionConfiguration"); - late final _sel_defaultSessionConfiguration1 = - _registerName1("defaultSessionConfiguration"); - ffi.Pointer _objc_msgSend_978( + late final _sel_receiveMessageWithCompletionHandler_1 = + _registerName1("receiveMessageWithCompletionHandler:"); + void _objc_msgSend_978( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_978( obj, sel, + completionHandler, ); } late final __objc_msgSend_978Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_978 = __objc_msgSend_978Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_ephemeralSessionConfiguration1 = - _registerName1("ephemeralSessionConfiguration"); - late final _sel_backgroundSessionConfigurationWithIdentifier_1 = - _registerName1("backgroundSessionConfigurationWithIdentifier:"); - ffi.Pointer _objc_msgSend_979( + late final _sel_sendPingWithPongReceiveHandler_1 = + _registerName1("sendPingWithPongReceiveHandler:"); + void _objc_msgSend_979( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer identifier, + ffi.Pointer<_ObjCBlock> pongReceiveHandler, ) { return __objc_msgSend_979( obj, sel, - identifier, + pongReceiveHandler, ); } late final __objc_msgSend_979Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_979 = __objc_msgSend_979Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_identifier1 = _registerName1("identifier"); - late final _sel_requestCachePolicy1 = _registerName1("requestCachePolicy"); - late final _sel_setRequestCachePolicy_1 = - _registerName1("setRequestCachePolicy:"); - late final _sel_timeoutIntervalForRequest1 = - _registerName1("timeoutIntervalForRequest"); - late final _sel_setTimeoutIntervalForRequest_1 = - _registerName1("setTimeoutIntervalForRequest:"); - late final _sel_timeoutIntervalForResource1 = - _registerName1("timeoutIntervalForResource"); - late final _sel_setTimeoutIntervalForResource_1 = - _registerName1("setTimeoutIntervalForResource:"); - late final _sel_waitsForConnectivity1 = - _registerName1("waitsForConnectivity"); - late final _sel_setWaitsForConnectivity_1 = - _registerName1("setWaitsForConnectivity:"); - late final _sel_isDiscretionary1 = _registerName1("isDiscretionary"); - late final _sel_setDiscretionary_1 = _registerName1("setDiscretionary:"); - late final _sel_sharedContainerIdentifier1 = - _registerName1("sharedContainerIdentifier"); - late final _sel_setSharedContainerIdentifier_1 = - _registerName1("setSharedContainerIdentifier:"); - late final _sel_sessionSendsLaunchEvents1 = - _registerName1("sessionSendsLaunchEvents"); - late final _sel_setSessionSendsLaunchEvents_1 = - _registerName1("setSessionSendsLaunchEvents:"); - late final _sel_connectionProxyDictionary1 = - _registerName1("connectionProxyDictionary"); - late final _sel_setConnectionProxyDictionary_1 = - _registerName1("setConnectionProxyDictionary:"); - late final _sel_TLSMinimumSupportedProtocol1 = - _registerName1("TLSMinimumSupportedProtocol"); - int _objc_msgSend_980( + late final _sel_cancelWithCloseCode_reason_1 = + _registerName1("cancelWithCloseCode:reason:"); + void _objc_msgSend_980( ffi.Pointer obj, ffi.Pointer sel, + int closeCode, + ffi.Pointer reason, ) { return __objc_msgSend_980( obj, sel, + closeCode, + reason, ); } late final __objc_msgSend_980Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_980 = __objc_msgSend_980Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); - late final _sel_setTLSMinimumSupportedProtocol_1 = - _registerName1("setTLSMinimumSupportedProtocol:"); - void _objc_msgSend_981( + late final _sel_maximumMessageSize1 = _registerName1("maximumMessageSize"); + late final _sel_setMaximumMessageSize_1 = + _registerName1("setMaximumMessageSize:"); + late final _sel_closeCode1 = _registerName1("closeCode"); + int _objc_msgSend_981( ffi.Pointer obj, ffi.Pointer sel, - int value, ) { return __objc_msgSend_981( obj, sel, - value, ); } late final __objc_msgSend_981Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_981 = __objc_msgSend_981Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_TLSMaximumSupportedProtocol1 = - _registerName1("TLSMaximumSupportedProtocol"); - late final _sel_setTLSMaximumSupportedProtocol_1 = - _registerName1("setTLSMaximumSupportedProtocol:"); - late final _sel_TLSMinimumSupportedProtocolVersion1 = - _registerName1("TLSMinimumSupportedProtocolVersion"); - int _objc_msgSend_982( + late final _sel_closeReason1 = _registerName1("closeReason"); + late final _sel_webSocketTaskWithURL_1 = + _registerName1("webSocketTaskWithURL:"); + ffi.Pointer _objc_msgSend_982( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer url, ) { return __objc_msgSend_982( obj, sel, + url, ); } late final __objc_msgSend_982Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_982 = __objc_msgSend_982Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setTLSMinimumSupportedProtocolVersion_1 = - _registerName1("setTLSMinimumSupportedProtocolVersion:"); - void _objc_msgSend_983( + late final _sel_webSocketTaskWithURL_protocols_1 = + _registerName1("webSocketTaskWithURL:protocols:"); + ffi.Pointer _objc_msgSend_983( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer url, + ffi.Pointer protocols, ) { return __objc_msgSend_983( obj, sel, - value, + url, + protocols, ); } late final __objc_msgSend_983Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_983 = __objc_msgSend_983Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_TLSMaximumSupportedProtocolVersion1 = - _registerName1("TLSMaximumSupportedProtocolVersion"); - late final _sel_setTLSMaximumSupportedProtocolVersion_1 = - _registerName1("setTLSMaximumSupportedProtocolVersion:"); - late final _sel_HTTPShouldSetCookies1 = - _registerName1("HTTPShouldSetCookies"); - late final _sel_setHTTPShouldSetCookies_1 = - _registerName1("setHTTPShouldSetCookies:"); - late final _sel_HTTPCookieAcceptPolicy1 = - _registerName1("HTTPCookieAcceptPolicy"); - late final _sel_setHTTPCookieAcceptPolicy_1 = - _registerName1("setHTTPCookieAcceptPolicy:"); - late final _sel_HTTPAdditionalHeaders1 = - _registerName1("HTTPAdditionalHeaders"); - late final _sel_setHTTPAdditionalHeaders_1 = - _registerName1("setHTTPAdditionalHeaders:"); - late final _sel_HTTPMaximumConnectionsPerHost1 = - _registerName1("HTTPMaximumConnectionsPerHost"); - late final _sel_setHTTPMaximumConnectionsPerHost_1 = - _registerName1("setHTTPMaximumConnectionsPerHost:"); - late final _sel_HTTPCookieStorage1 = _registerName1("HTTPCookieStorage"); - late final _sel_setHTTPCookieStorage_1 = - _registerName1("setHTTPCookieStorage:"); - void _objc_msgSend_984( + late final _sel_webSocketTaskWithRequest_1 = + _registerName1("webSocketTaskWithRequest:"); + ffi.Pointer _objc_msgSend_984( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer request, ) { return __objc_msgSend_984( obj, sel, - value, + request, ); } late final __objc_msgSend_984Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_984 = __objc_msgSend_984Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_URLCredentialStorage1 = - _registerName1("URLCredentialStorage"); - late final _sel_setURLCredentialStorage_1 = - _registerName1("setURLCredentialStorage:"); - void _objc_msgSend_985( + late final _sel_dataTaskWithRequest_completionHandler_1 = + _registerName1("dataTaskWithRequest:completionHandler:"); + ffi.Pointer _objc_msgSend_985( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer request, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_985( obj, sel, - value, + request, + completionHandler, ); } late final __objc_msgSend_985Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_985 = __objc_msgSend_985Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_URLCache1 = _registerName1("URLCache"); - late final _sel_setURLCache_1 = _registerName1("setURLCache:"); - late final _sel_shouldUseExtendedBackgroundIdleMode1 = - _registerName1("shouldUseExtendedBackgroundIdleMode"); - late final _sel_setShouldUseExtendedBackgroundIdleMode_1 = - _registerName1("setShouldUseExtendedBackgroundIdleMode:"); - late final _sel_protocolClasses1 = _registerName1("protocolClasses"); - late final _sel_setProtocolClasses_1 = _registerName1("setProtocolClasses:"); - late final _sel_multipathServiceType1 = - _registerName1("multipathServiceType"); - int _objc_msgSend_986( + late final _sel_dataTaskWithURL_completionHandler_1 = + _registerName1("dataTaskWithURL:completionHandler:"); + ffi.Pointer _objc_msgSend_986( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer url, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_986( obj, sel, + url, + completionHandler, ); } late final __objc_msgSend_986Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_986 = __objc_msgSend_986Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_setMultipathServiceType_1 = - _registerName1("setMultipathServiceType:"); - void _objc_msgSend_987( + late final _sel_uploadTaskWithRequest_fromFile_completionHandler_1 = + _registerName1("uploadTaskWithRequest:fromFile:completionHandler:"); + ffi.Pointer _objc_msgSend_987( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer request, + ffi.Pointer fileURL, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_987( obj, sel, - value, + request, + fileURL, + completionHandler, ); } late final __objc_msgSend_987Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_987 = __objc_msgSend_987Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_backgroundSessionConfiguration_1 = - _registerName1("backgroundSessionConfiguration:"); - late final _sel_sessionWithConfiguration_1 = - _registerName1("sessionWithConfiguration:"); + late final _sel_uploadTaskWithRequest_fromData_completionHandler_1 = + _registerName1("uploadTaskWithRequest:fromData:completionHandler:"); ffi.Pointer _objc_msgSend_988( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer configuration, + ffi.Pointer request, + ffi.Pointer bodyData, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_988( obj, sel, - configuration, + request, + bodyData, + completionHandler, ); } late final __objc_msgSend_988Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_988 = __objc_msgSend_988Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_sessionWithConfiguration_delegate_delegateQueue_1 = - _registerName1("sessionWithConfiguration:delegate:delegateQueue:"); + late final _sel_downloadTaskWithRequest_completionHandler_1 = + _registerName1("downloadTaskWithRequest:completionHandler:"); ffi.Pointer _objc_msgSend_989( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer configuration, - ffi.Pointer delegate, - ffi.Pointer queue, + ffi.Pointer request, + ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_989( obj, sel, - configuration, - delegate, - queue, + request, + completionHandler, ); } @@ -28102,706 +28210,747 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_989 = __objc_msgSend_989Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_delegateQueue1 = _registerName1("delegateQueue"); - late final _sel_configuration1 = _registerName1("configuration"); - late final _sel_sessionDescription1 = _registerName1("sessionDescription"); - late final _sel_setSessionDescription_1 = - _registerName1("setSessionDescription:"); - late final _sel_finishTasksAndInvalidate1 = - _registerName1("finishTasksAndInvalidate"); - late final _sel_invalidateAndCancel1 = _registerName1("invalidateAndCancel"); - late final _sel_resetWithCompletionHandler_1 = - _registerName1("resetWithCompletionHandler:"); - late final _sel_flushWithCompletionHandler_1 = - _registerName1("flushWithCompletionHandler:"); - late final _sel_getTasksWithCompletionHandler_1 = - _registerName1("getTasksWithCompletionHandler:"); - void _objc_msgSend_990( + late final _sel_downloadTaskWithURL_completionHandler_1 = + _registerName1("downloadTaskWithURL:completionHandler:"); + ffi.Pointer _objc_msgSend_990( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer url, ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_990( obj, sel, + url, completionHandler, ); } late final __objc_msgSend_990Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_990 = __objc_msgSend_990Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_getAllTasksWithCompletionHandler_1 = - _registerName1("getAllTasksWithCompletionHandler:"); - void _objc_msgSend_991( + late final _sel_downloadTaskWithResumeData_completionHandler_1 = + _registerName1("downloadTaskWithResumeData:completionHandler:"); + ffi.Pointer _objc_msgSend_991( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer resumeData, ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_991( obj, sel, + resumeData, completionHandler, ); } late final __objc_msgSend_991Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_991 = __objc_msgSend_991Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_dataTaskWithRequest_1 = - _registerName1("dataTaskWithRequest:"); + late final _class_NSProtocolChecker1 = _getClass1("NSProtocolChecker"); ffi.Pointer _objc_msgSend_992( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, ) { return __objc_msgSend_992( obj, sel, - request, ); } late final __objc_msgSend_992Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_992 = __objc_msgSend_992Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_dataTaskWithURL_1 = _registerName1("dataTaskWithURL:"); - ffi.Pointer _objc_msgSend_993( + late final _sel_protocolCheckerWithTarget_protocol_1 = + _registerName1("protocolCheckerWithTarget:protocol:"); + instancetype _objc_msgSend_993( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, + ffi.Pointer anObject, + ffi.Pointer aProtocol, ) { return __objc_msgSend_993( obj, sel, - url, + anObject, + aProtocol, ); } late final __objc_msgSend_993Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_993 = __objc_msgSend_993Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _class_NSURLSessionUploadTask1 = - _getClass1("NSURLSessionUploadTask"); - late final _sel_uploadTaskWithRequest_fromFile_1 = - _registerName1("uploadTaskWithRequest:fromFile:"); - ffi.Pointer _objc_msgSend_994( + late final _sel_initWithTarget_protocol_1 = + _registerName1("initWithTarget:protocol:"); + late final _class_NSTask1 = _getClass1("NSTask"); + late final _sel_setExecutableURL_1 = _registerName1("setExecutableURL:"); + late final _sel_setEnvironment_1 = _registerName1("setEnvironment:"); + late final _sel_currentDirectoryURL1 = _registerName1("currentDirectoryURL"); + late final _sel_setCurrentDirectoryURL_1 = + _registerName1("setCurrentDirectoryURL:"); + late final _sel_standardInput1 = _registerName1("standardInput"); + late final _sel_setStandardInput_1 = _registerName1("setStandardInput:"); + late final _sel_standardOutput1 = _registerName1("standardOutput"); + late final _sel_setStandardOutput_1 = _registerName1("setStandardOutput:"); + late final _sel_standardError1 = _registerName1("standardError"); + late final _sel_setStandardError_1 = _registerName1("setStandardError:"); + late final _sel_launchAndReturnError_1 = + _registerName1("launchAndReturnError:"); + late final _sel_interrupt1 = _registerName1("interrupt"); + late final _sel_terminate1 = _registerName1("terminate"); + late final _sel_isRunning1 = _registerName1("isRunning"); + late final _sel_terminationStatus1 = _registerName1("terminationStatus"); + late final _sel_terminationReason1 = _registerName1("terminationReason"); + int _objc_msgSend_994( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer fileURL, ) { return __objc_msgSend_994( obj, sel, - request, - fileURL, ); } late final __objc_msgSend_994Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_994 = __objc_msgSend_994Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_uploadTaskWithRequest_fromData_1 = - _registerName1("uploadTaskWithRequest:fromData:"); - ffi.Pointer _objc_msgSend_995( + late final _sel_terminationHandler1 = _registerName1("terminationHandler"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_995( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer bodyData, ) { return __objc_msgSend_995( obj, sel, - request, - bodyData, ); } late final __objc_msgSend_995Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_995 = __objc_msgSend_995Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_uploadTaskWithStreamedRequest_1 = - _registerName1("uploadTaskWithStreamedRequest:"); - ffi.Pointer _objc_msgSend_996( + late final _sel_setTerminationHandler_1 = + _registerName1("setTerminationHandler:"); + void _objc_msgSend_996( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, + ffi.Pointer<_ObjCBlock> value, ) { return __objc_msgSend_996( obj, sel, - request, + value, ); } late final __objc_msgSend_996Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_996 = __objc_msgSend_996Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _class_NSURLSessionDownloadTask1 = - _getClass1("NSURLSessionDownloadTask"); - late final _sel_cancelByProducingResumeData_1 = - _registerName1("cancelByProducingResumeData:"); - void _objc_msgSend_997( + late final _sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_1 = + _registerName1( + "launchedTaskWithExecutableURL:arguments:error:terminationHandler:"); + ffi.Pointer _objc_msgSend_997( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer url, + ffi.Pointer arguments, + ffi.Pointer> error, + ffi.Pointer<_ObjCBlock> terminationHandler, ) { return __objc_msgSend_997( obj, sel, - completionHandler, + url, + arguments, + error, + terminationHandler, ); } late final __objc_msgSend_997Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_997 = __objc_msgSend_997Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>, ffi.Pointer<_ObjCBlock>)>(); - late final _sel_downloadTaskWithRequest_1 = - _registerName1("downloadTaskWithRequest:"); + late final _sel_waitUntilExit1 = _registerName1("waitUntilExit"); + late final _sel_launchPath1 = _registerName1("launchPath"); + late final _sel_setLaunchPath_1 = _registerName1("setLaunchPath:"); + late final _sel_setCurrentDirectoryPath_1 = + _registerName1("setCurrentDirectoryPath:"); + late final _sel_launch1 = _registerName1("launch"); + late final _sel_launchedTaskWithLaunchPath_arguments_1 = + _registerName1("launchedTaskWithLaunchPath:arguments:"); ffi.Pointer _objc_msgSend_998( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, + ffi.Pointer path, + ffi.Pointer arguments, ) { return __objc_msgSend_998( obj, sel, - request, + path, + arguments, ); } late final __objc_msgSend_998Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_998 = __objc_msgSend_998Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_downloadTaskWithURL_1 = - _registerName1("downloadTaskWithURL:"); - ffi.Pointer _objc_msgSend_999( + late final _class_NSXMLElement1 = _getClass1("NSXMLElement"); + late final _class_NSXMLNode1 = _getClass1("NSXMLNode"); + late final _sel_initWithKind_1 = _registerName1("initWithKind:"); + instancetype _objc_msgSend_999( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, + int kind, ) { return __objc_msgSend_999( obj, sel, - url, + kind, ); } late final __objc_msgSend_999Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_999 = __objc_msgSend_999Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + instancetype Function( + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_downloadTaskWithResumeData_1 = - _registerName1("downloadTaskWithResumeData:"); - ffi.Pointer _objc_msgSend_1000( + late final _sel_initWithKind_options_1 = + _registerName1("initWithKind:options:"); + instancetype _objc_msgSend_1000( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer resumeData, + int kind, + int options, ) { return __objc_msgSend_1000( obj, sel, - resumeData, + kind, + options, ); } late final __objc_msgSend_1000Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Int32, ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_1000 = __objc_msgSend_1000Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + instancetype Function( + ffi.Pointer, ffi.Pointer, int, int)>(); - late final _class_NSURLSessionStreamTask1 = - _getClass1("NSURLSessionStreamTask"); - late final _sel_readDataOfMinLength_maxLength_timeout_completionHandler_1 = - _registerName1( - "readDataOfMinLength:maxLength:timeout:completionHandler:"); - void _objc_msgSend_1001( + late final _sel_document1 = _registerName1("document"); + late final _sel_documentWithRootElement_1 = + _registerName1("documentWithRootElement:"); + ffi.Pointer _objc_msgSend_1001( ffi.Pointer obj, ffi.Pointer sel, - int minBytes, - int maxBytes, - double timeout, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer element, ) { return __objc_msgSend_1001( obj, sel, - minBytes, - maxBytes, - timeout, - completionHandler, + element, ); } late final __objc_msgSend_1001Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.UnsignedLong, - ffi.Double, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1001 = __objc_msgSend_1001Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, int, - double, ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_writeData_timeout_completionHandler_1 = - _registerName1("writeData:timeout:completionHandler:"); - void _objc_msgSend_1002( + late final _sel_elementWithName_1 = _registerName1("elementWithName:"); + late final _sel_elementWithName_URI_1 = + _registerName1("elementWithName:URI:"); + late final _sel_elementWithName_stringValue_1 = + _registerName1("elementWithName:stringValue:"); + late final _sel_elementWithName_children_attributes_1 = + _registerName1("elementWithName:children:attributes:"); + ffi.Pointer _objc_msgSend_1002( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer data, - double timeout, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer name, + ffi.Pointer children, + ffi.Pointer attributes, ) { return __objc_msgSend_1002( obj, sel, - data, - timeout, - completionHandler, + name, + children, + attributes, ); } late final __objc_msgSend_1002Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Double, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1002 = __objc_msgSend_1002Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, double, ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_captureStreams1 = _registerName1("captureStreams"); - late final _sel_closeWrite1 = _registerName1("closeWrite"); - late final _sel_closeRead1 = _registerName1("closeRead"); - late final _sel_startSecureConnection1 = - _registerName1("startSecureConnection"); - late final _sel_stopSecureConnection1 = - _registerName1("stopSecureConnection"); - late final _sel_streamTaskWithHostName_port_1 = - _registerName1("streamTaskWithHostName:port:"); - ffi.Pointer _objc_msgSend_1003( + late final _sel_attributeWithName_stringValue_1 = + _registerName1("attributeWithName:stringValue:"); + late final _sel_attributeWithName_URI_stringValue_1 = + _registerName1("attributeWithName:URI:stringValue:"); + late final _sel_namespaceWithName_stringValue_1 = + _registerName1("namespaceWithName:stringValue:"); + late final _sel_processingInstructionWithName_stringValue_1 = + _registerName1("processingInstructionWithName:stringValue:"); + late final _sel_commentWithStringValue_1 = + _registerName1("commentWithStringValue:"); + late final _sel_textWithStringValue_1 = + _registerName1("textWithStringValue:"); + late final _sel_DTDNodeWithXMLString_1 = + _registerName1("DTDNodeWithXMLString:"); + int _objc_msgSend_1003( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer hostname, - int port, ) { return __objc_msgSend_1003( obj, sel, - hostname, - port, ); } late final __objc_msgSend_1003Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Long)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1003 = __objc_msgSend_1003Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer, int)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _class_NSNetService1 = _getClass1("NSNetService"); - late final _sel_initWithDomain_type_name_port_1 = - _registerName1("initWithDomain:type:name:port:"); - instancetype _objc_msgSend_1004( + late final _sel_objectValue1 = _registerName1("objectValue"); + late final _sel_setObjectValue_1 = _registerName1("setObjectValue:"); + late final _sel_setStringValue_1 = _registerName1("setStringValue:"); + late final _sel_setStringValue_resolvingEntities_1 = + _registerName1("setStringValue:resolvingEntities:"); + void _objc_msgSend_1004( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer domain, - ffi.Pointer type, - ffi.Pointer name, - int port, + ffi.Pointer string, + bool resolve, ) { return __objc_msgSend_1004( obj, sel, - domain, - type, - name, - port, + string, + resolve, ); } late final __objc_msgSend_1004Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); late final __objc_msgSend_1004 = __objc_msgSend_1004Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, bool)>(); - late final _sel_initWithDomain_type_name_1 = - _registerName1("initWithDomain:type:name:"); - late final _sel_includesPeerToPeer1 = _registerName1("includesPeerToPeer"); - late final _sel_setIncludesPeerToPeer_1 = - _registerName1("setIncludesPeerToPeer:"); - late final _sel_type1 = _registerName1("type"); - late final _sel_publishWithOptions_1 = _registerName1("publishWithOptions:"); - void _objc_msgSend_1005( + late final _sel_index1 = _registerName1("index"); + late final _sel_level1 = _registerName1("level"); + late final _class_NSXMLDocument1 = _getClass1("NSXMLDocument"); + late final _sel_initWithXMLString_options_error_1 = + _registerName1("initWithXMLString:options:error:"); + instancetype _objc_msgSend_1005( ffi.Pointer obj, ffi.Pointer sel, - int options, + ffi.Pointer string, + int mask, + ffi.Pointer> error, ) { return __objc_msgSend_1005( obj, sel, - options, + string, + mask, + error, ); } late final __objc_msgSend_1005Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_1005 = __objc_msgSend_1005Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); - late final _sel_resolve1 = _registerName1("resolve"); - late final _sel_stop1 = _registerName1("stop"); - late final _sel_dictionaryFromTXTRecordData_1 = - _registerName1("dictionaryFromTXTRecordData:"); - ffi.Pointer _objc_msgSend_1006( + instancetype _objc_msgSend_1006( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer txtData, + ffi.Pointer url, + int mask, + ffi.Pointer> error, ) { return __objc_msgSend_1006( obj, sel, - txtData, + url, + mask, + error, ); } late final __objc_msgSend_1006Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_1006 = __objc_msgSend_1006Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); - late final _sel_dataFromTXTRecordDictionary_1 = - _registerName1("dataFromTXTRecordDictionary:"); - ffi.Pointer _objc_msgSend_1007( + late final _sel_initWithData_options_error_1 = + _registerName1("initWithData:options:error:"); + instancetype _objc_msgSend_1007( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer txtDictionary, + ffi.Pointer data, + int mask, + ffi.Pointer> error, ) { return __objc_msgSend_1007( obj, sel, - txtDictionary, + data, + mask, + error, ); } late final __objc_msgSend_1007Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Int32, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_1007 = __objc_msgSend_1007Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer>)>(); - late final _sel_resolveWithTimeout_1 = _registerName1("resolveWithTimeout:"); - late final _sel_getInputStream_outputStream_1 = - _registerName1("getInputStream:outputStream:"); - bool _objc_msgSend_1008( + late final _sel_initWithRootElement_1 = + _registerName1("initWithRootElement:"); + late final _sel_replacementClassForClass_1 = + _registerName1("replacementClassForClass:"); + late final _sel_characterEncoding1 = _registerName1("characterEncoding"); + late final _sel_setCharacterEncoding_1 = + _registerName1("setCharacterEncoding:"); + late final _sel_isStandalone1 = _registerName1("isStandalone"); + late final _sel_setStandalone_1 = _registerName1("setStandalone:"); + late final _sel_documentContentKind1 = _registerName1("documentContentKind"); + int _objc_msgSend_1008( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream, ) { return __objc_msgSend_1008( obj, sel, - inputStream, - outputStream, ); } late final __objc_msgSend_1008Ptr = _lookup< ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1008 = __objc_msgSend_1008Ptr.asFunction< - bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer>)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_setTXTRecordData_1 = _registerName1("setTXTRecordData:"); - late final _sel_TXTRecordData1 = _registerName1("TXTRecordData"); - late final _sel_startMonitoring1 = _registerName1("startMonitoring"); - late final _sel_stopMonitoring1 = _registerName1("stopMonitoring"); - late final _sel_streamTaskWithNetService_1 = - _registerName1("streamTaskWithNetService:"); - ffi.Pointer _objc_msgSend_1009( + late final _sel_setDocumentContentKind_1 = + _registerName1("setDocumentContentKind:"); + void _objc_msgSend_1009( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer service, + int value, ) { return __objc_msgSend_1009( obj, sel, - service, + value, ); } late final __objc_msgSend_1009Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_1009 = __objc_msgSend_1009Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _class_NSURLSessionWebSocketTask1 = - _getClass1("NSURLSessionWebSocketTask"); - late final _class_NSURLSessionWebSocketMessage1 = - _getClass1("NSURLSessionWebSocketMessage"); - int _objc_msgSend_1010( + late final _sel_setMIMEType_1 = _registerName1("setMIMEType:"); + late final _class_NSXMLDTD1 = _getClass1("NSXMLDTD"); + late final _sel_setPublicID_1 = _registerName1("setPublicID:"); + late final _sel_setSystemID_1 = _registerName1("setSystemID:"); + late final _sel_insertChild_atIndex_1 = + _registerName1("insertChild:atIndex:"); + void _objc_msgSend_1010( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer child, + int index, ) { return __objc_msgSend_1010( obj, sel, + child, + index, ); } late final __objc_msgSend_1010Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_1010 = __objc_msgSend_1010Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); - late final _sel_sendMessage_completionHandler_1 = - _registerName1("sendMessage:completionHandler:"); + late final _sel_insertChildren_atIndex_1 = + _registerName1("insertChildren:atIndex:"); void _objc_msgSend_1011( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer message, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer children, + int index, ) { return __objc_msgSend_1011( obj, sel, - message, - completionHandler, + children, + index, ); } late final __objc_msgSend_1011Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_1011 = __objc_msgSend_1011Ptr.asFunction< void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer, int)>(); - late final _sel_receiveMessageWithCompletionHandler_1 = - _registerName1("receiveMessageWithCompletionHandler:"); + late final _sel_removeChildAtIndex_1 = _registerName1("removeChildAtIndex:"); + late final _sel_setChildren_1 = _registerName1("setChildren:"); + late final _sel_addChild_1 = _registerName1("addChild:"); void _objc_msgSend_1012( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer child, ) { return __objc_msgSend_1012( obj, sel, - completionHandler, + child, ); } late final __objc_msgSend_1012Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1012 = __objc_msgSend_1012Ptr.asFunction< void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer)>(); - late final _sel_sendPingWithPongReceiveHandler_1 = - _registerName1("sendPingWithPongReceiveHandler:"); + late final _sel_replaceChildAtIndex_withNode_1 = + _registerName1("replaceChildAtIndex:withNode:"); void _objc_msgSend_1013( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> pongReceiveHandler, + int index, + ffi.Pointer node, ) { return __objc_msgSend_1013( obj, sel, - pongReceiveHandler, + index, + node, ); } late final __objc_msgSend_1013Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1013 = __objc_msgSend_1013Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + void Function(ffi.Pointer, ffi.Pointer, int, + ffi.Pointer)>(); - late final _sel_cancelWithCloseCode_reason_1 = - _registerName1("cancelWithCloseCode:reason:"); - void _objc_msgSend_1014( + late final _class_NSXMLDTDNode1 = _getClass1("NSXMLDTDNode"); + late final _sel_initWithXMLString_1 = _registerName1("initWithXMLString:"); + late final _sel_DTDKind1 = _registerName1("DTDKind"); + int _objc_msgSend_1014( ffi.Pointer obj, ffi.Pointer sel, - int closeCode, - ffi.Pointer reason, ) { return __objc_msgSend_1014( obj, sel, - closeCode, - reason, ); } late final __objc_msgSend_1014Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Pointer)>>('objc_msgSend'); + ffi.Int32 Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1014 = __objc_msgSend_1014Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); + int Function(ffi.Pointer, ffi.Pointer)>(); - late final _sel_maximumMessageSize1 = _registerName1("maximumMessageSize"); - late final _sel_setMaximumMessageSize_1 = - _registerName1("setMaximumMessageSize:"); - late final _sel_closeCode1 = _registerName1("closeCode"); - int _objc_msgSend_1015( + late final _sel_setDTDKind_1 = _registerName1("setDTDKind:"); + void _objc_msgSend_1015( ffi.Pointer obj, ffi.Pointer sel, + int value, ) { return __objc_msgSend_1015( obj, sel, + value, ); } late final __objc_msgSend_1015Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_1015 = __objc_msgSend_1015Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_closeReason1 = _registerName1("closeReason"); - late final _sel_webSocketTaskWithURL_1 = - _registerName1("webSocketTaskWithURL:"); + late final _sel_isExternal1 = _registerName1("isExternal"); + late final _sel_notationName1 = _registerName1("notationName"); + late final _sel_setNotationName_1 = _registerName1("setNotationName:"); + late final _sel_localNameForName_1 = _registerName1("localNameForName:"); + late final _sel_prefixForName_1 = _registerName1("prefixForName:"); + late final _sel_predefinedNamespaceForPrefix_1 = + _registerName1("predefinedNamespaceForPrefix:"); ffi.Pointer _objc_msgSend_1016( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, + ffi.Pointer name, ) { return __objc_msgSend_1016( obj, sel, - url, + name, ); } @@ -28813,229 +28962,181 @@ class SentryCocoa { ffi.Pointer Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); - late final _sel_webSocketTaskWithURL_protocols_1 = - _registerName1("webSocketTaskWithURL:protocols:"); + late final _sel_entityDeclarationForName_1 = + _registerName1("entityDeclarationForName:"); ffi.Pointer _objc_msgSend_1017( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer protocols, + ffi.Pointer name, ) { return __objc_msgSend_1017( obj, sel, - url, - protocols, + name, ); } late final __objc_msgSend_1017Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1017 = __objc_msgSend_1017Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_webSocketTaskWithRequest_1 = - _registerName1("webSocketTaskWithRequest:"); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); + + late final _sel_notationDeclarationForName_1 = + _registerName1("notationDeclarationForName:"); + late final _sel_elementDeclarationForName_1 = + _registerName1("elementDeclarationForName:"); + late final _sel_attributeDeclarationForName_elementName_1 = + _registerName1("attributeDeclarationForName:elementName:"); ffi.Pointer _objc_msgSend_1018( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, + ffi.Pointer name, + ffi.Pointer elementName, ) { return __objc_msgSend_1018( obj, sel, - request, + name, + elementName, ); } late final __objc_msgSend_1018Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1018 = __objc_msgSend_1018Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_dataTaskWithRequest_completionHandler_1 = - _registerName1("dataTaskWithRequest:completionHandler:"); + late final _sel_predefinedEntityDeclarationForName_1 = + _registerName1("predefinedEntityDeclarationForName:"); + late final _sel_DTD1 = _registerName1("DTD"); ffi.Pointer _objc_msgSend_1019( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_1019( obj, sel, - request, - completionHandler, ); } late final __objc_msgSend_1019Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1019 = __objc_msgSend_1019Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer, ffi.Pointer)>(); - late final _sel_dataTaskWithURL_completionHandler_1 = - _registerName1("dataTaskWithURL:completionHandler:"); - ffi.Pointer _objc_msgSend_1020( + late final _sel_setDTD_1 = _registerName1("setDTD:"); + void _objc_msgSend_1020( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer value, ) { return __objc_msgSend_1020( obj, sel, - url, - completionHandler, + value, ); } late final __objc_msgSend_1020Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1020 = __objc_msgSend_1020Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_uploadTaskWithRequest_fromFile_completionHandler_1 = - _registerName1("uploadTaskWithRequest:fromFile:completionHandler:"); - ffi.Pointer _objc_msgSend_1021( + late final _sel_setRootElement_1 = _registerName1("setRootElement:"); + void _objc_msgSend_1021( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer fileURL, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer root, ) { return __objc_msgSend_1021( obj, sel, - request, - fileURL, - completionHandler, + root, ); } late final __objc_msgSend_1021Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1021 = __objc_msgSend_1021Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_uploadTaskWithRequest_fromData_completionHandler_1 = - _registerName1("uploadTaskWithRequest:fromData:completionHandler:"); + late final _sel_rootElement1 = _registerName1("rootElement"); ffi.Pointer _objc_msgSend_1022( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer bodyData, - ffi.Pointer<_ObjCBlock> completionHandler, ) { return __objc_msgSend_1022( obj, sel, - request, - bodyData, - completionHandler, ); } late final __objc_msgSend_1022Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1022 = __objc_msgSend_1022Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer, ffi.Pointer)>(); - late final _sel_downloadTaskWithRequest_completionHandler_1 = - _registerName1("downloadTaskWithRequest:completionHandler:"); + late final _sel_XMLData1 = _registerName1("XMLData"); + late final _sel_XMLDataWithOptions_1 = _registerName1("XMLDataWithOptions:"); ffi.Pointer _objc_msgSend_1023( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer request, - ffi.Pointer<_ObjCBlock> completionHandler, + int options, ) { return __objc_msgSend_1023( obj, sel, - request, - completionHandler, + options, ); } late final __objc_msgSend_1023Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_1023 = __objc_msgSend_1023Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_downloadTaskWithURL_completionHandler_1 = - _registerName1("downloadTaskWithURL:completionHandler:"); + late final _sel_objectByApplyingXSLT_arguments_error_1 = + _registerName1("objectByApplyingXSLT:arguments:error:"); ffi.Pointer _objc_msgSend_1024( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer xslt, + ffi.Pointer arguments, + ffi.Pointer> error, ) { return __objc_msgSend_1024( obj, sel, - url, - completionHandler, + xslt, + arguments, + error, ); } @@ -29045,27 +29146,31 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_1024 = __objc_msgSend_1024Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer, + ffi.Pointer>)>(); - late final _sel_downloadTaskWithResumeData_completionHandler_1 = - _registerName1("downloadTaskWithResumeData:completionHandler:"); + late final _sel_objectByApplyingXSLTString_arguments_error_1 = + _registerName1("objectByApplyingXSLTString:arguments:error:"); ffi.Pointer _objc_msgSend_1025( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer resumeData, - ffi.Pointer<_ObjCBlock> completionHandler, + ffi.Pointer xslt, + ffi.Pointer arguments, + ffi.Pointer> error, ) { return __objc_msgSend_1025( obj, sel, - resumeData, - completionHandler, + xslt, + arguments, + error, ); } @@ -29075,82 +29180,73 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_1025 = __objc_msgSend_1025Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer, + ffi.Pointer>)>(); - late final _class_NSProtocolChecker1 = _getClass1("NSProtocolChecker"); + late final _sel_objectByApplyingXSLTAtURL_arguments_error_1 = + _registerName1("objectByApplyingXSLTAtURL:arguments:error:"); ffi.Pointer _objc_msgSend_1026( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer xsltURL, + ffi.Pointer argument, + ffi.Pointer> error, ) { return __objc_msgSend_1026( obj, sel, + xsltURL, + argument, + error, ); } late final __objc_msgSend_1026Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_1026 = __objc_msgSend_1026Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer>)>(); - late final _sel_protocolCheckerWithTarget_protocol_1 = - _registerName1("protocolCheckerWithTarget:protocol:"); - instancetype _objc_msgSend_1027( + late final _sel_validateAndReturnError_1 = + _registerName1("validateAndReturnError:"); + late final _sel_rootDocument1 = _registerName1("rootDocument"); + ffi.Pointer _objc_msgSend_1027( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer anObject, - ffi.Pointer aProtocol, ) { return __objc_msgSend_1027( obj, sel, - anObject, - aProtocol, ); } late final __objc_msgSend_1027Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1027 = __objc_msgSend_1027Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_initWithTarget_protocol_1 = - _registerName1("initWithTarget:protocol:"); - late final _class_NSTask1 = _getClass1("NSTask"); - late final _sel_setExecutableURL_1 = _registerName1("setExecutableURL:"); - late final _sel_setEnvironment_1 = _registerName1("setEnvironment:"); - late final _sel_currentDirectoryURL1 = _registerName1("currentDirectoryURL"); - late final _sel_setCurrentDirectoryURL_1 = - _registerName1("setCurrentDirectoryURL:"); - late final _sel_standardInput1 = _registerName1("standardInput"); - late final _sel_setStandardInput_1 = _registerName1("setStandardInput:"); - late final _sel_standardOutput1 = _registerName1("standardOutput"); - late final _sel_setStandardOutput_1 = _registerName1("setStandardOutput:"); - late final _sel_standardError1 = _registerName1("standardError"); - late final _sel_setStandardError_1 = _registerName1("setStandardError:"); - late final _sel_launchAndReturnError_1 = - _registerName1("launchAndReturnError:"); - late final _sel_interrupt1 = _registerName1("interrupt"); - late final _sel_terminate1 = _registerName1("terminate"); - late final _sel_isRunning1 = _registerName1("isRunning"); - late final _sel_terminationStatus1 = _registerName1("terminationStatus"); - late final _sel_terminationReason1 = _registerName1("terminationReason"); - int _objc_msgSend_1028( + late final _sel_parent1 = _registerName1("parent"); + ffi.Pointer _objc_msgSend_1028( ffi.Pointer obj, ffi.Pointer sel, ) { @@ -29162,110 +29258,107 @@ class SentryCocoa { late final __objc_msgSend_1028Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( + ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1028 = __objc_msgSend_1028Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_terminationHandler1 = _registerName1("terminationHandler"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_1029( + late final _sel_childCount1 = _registerName1("childCount"); + late final _sel_children1 = _registerName1("children"); + late final _sel_childAtIndex_1 = _registerName1("childAtIndex:"); + ffi.Pointer _objc_msgSend_1029( ffi.Pointer obj, ffi.Pointer sel, + int index, ) { return __objc_msgSend_1029( obj, sel, + index, ); } late final __objc_msgSend_1029Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_1029 = __objc_msgSend_1029Ptr.asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_setTerminationHandler_1 = - _registerName1("setTerminationHandler:"); - void _objc_msgSend_1030( + late final _sel_previousSibling1 = _registerName1("previousSibling"); + late final _sel_nextSibling1 = _registerName1("nextSibling"); + late final _sel_previousNode1 = _registerName1("previousNode"); + late final _sel_nextNode1 = _registerName1("nextNode"); + late final _sel_detach1 = _registerName1("detach"); + late final _sel_XPath1 = _registerName1("XPath"); + late final _sel_localName1 = _registerName1("localName"); + late final _sel_prefix1 = _registerName1("prefix"); + late final _sel_URI1 = _registerName1("URI"); + late final _sel_setURI_1 = _registerName1("setURI:"); + late final _sel_XMLString1 = _registerName1("XMLString"); + late final _sel_XMLStringWithOptions_1 = + _registerName1("XMLStringWithOptions:"); + ffi.Pointer _objc_msgSend_1030( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer<_ObjCBlock> value, + int options, ) { return __objc_msgSend_1030( obj, sel, - value, + options, ); } late final __objc_msgSend_1030Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Int32)>>('objc_msgSend'); late final __objc_msgSend_1030 = __objc_msgSend_1030Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer, int)>(); - late final _sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_1 = - _registerName1( - "launchedTaskWithExecutableURL:arguments:error:terminationHandler:"); + late final _sel_canonicalXMLStringPreservingComments_1 = + _registerName1("canonicalXMLStringPreservingComments:"); ffi.Pointer _objc_msgSend_1031( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, - ffi.Pointer arguments, - ffi.Pointer> error, - ffi.Pointer<_ObjCBlock> terminationHandler, + bool comments, ) { return __objc_msgSend_1031( obj, sel, - url, - arguments, - error, - terminationHandler, + comments, ); } late final __objc_msgSend_1031Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); late final __objc_msgSend_1031 = __objc_msgSend_1031Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>, - ffi.Pointer<_ObjCBlock>)>(); + ffi.Pointer, ffi.Pointer, bool)>(); - late final _sel_waitUntilExit1 = _registerName1("waitUntilExit"); - late final _sel_launchPath1 = _registerName1("launchPath"); - late final _sel_setLaunchPath_1 = _registerName1("setLaunchPath:"); - late final _sel_setCurrentDirectoryPath_1 = - _registerName1("setCurrentDirectoryPath:"); - late final _sel_launch1 = _registerName1("launch"); - late final _sel_launchedTaskWithLaunchPath_arguments_1 = - _registerName1("launchedTaskWithLaunchPath:arguments:"); + late final _sel_nodesForXPath_error_1 = + _registerName1("nodesForXPath:error:"); + late final _sel_objectsForXQuery_constants_error_1 = + _registerName1("objectsForXQuery:constants:error:"); ffi.Pointer _objc_msgSend_1032( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer path, - ffi.Pointer arguments, + ffi.Pointer xquery, + ffi.Pointer constants, + ffi.Pointer> error, ) { return __objc_msgSend_1032( obj, sel, - path, - arguments, + xquery, + constants, + error, ); } @@ -29275,618 +29368,626 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_1032 = __objc_msgSend_1032Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer, + ffi.Pointer>)>(); - late final _class_NSXMLElement1 = _getClass1("NSXMLElement"); - late final _class_NSXMLNode1 = _getClass1("NSXMLNode"); - late final _sel_initWithKind_1 = _registerName1("initWithKind:"); - instancetype _objc_msgSend_1033( + late final _sel_objectsForXQuery_error_1 = + _registerName1("objectsForXQuery:error:"); + late final _sel_initWithName_URI_1 = _registerName1("initWithName:URI:"); + late final _sel_initWithName_stringValue_1 = + _registerName1("initWithName:stringValue:"); + late final _sel_initWithXMLString_error_1 = + _registerName1("initWithXMLString:error:"); + late final _sel_elementsForName_1 = _registerName1("elementsForName:"); + late final _sel_elementsForLocalName_URI_1 = + _registerName1("elementsForLocalName:URI:"); + late final _sel_addAttribute_1 = _registerName1("addAttribute:"); + late final _sel_removeAttributeForName_1 = + _registerName1("removeAttributeForName:"); + late final _sel_attributes1 = _registerName1("attributes"); + late final _sel_setAttributes_1 = _registerName1("setAttributes:"); + late final _sel_setAttributesWithDictionary_1 = + _registerName1("setAttributesWithDictionary:"); + late final _sel_attributeForName_1 = _registerName1("attributeForName:"); + late final _sel_attributeForLocalName_URI_1 = + _registerName1("attributeForLocalName:URI:"); + ffi.Pointer _objc_msgSend_1033( ffi.Pointer obj, ffi.Pointer sel, - int kind, + ffi.Pointer localName, + ffi.Pointer URI, ) { return __objc_msgSend_1033( obj, sel, - kind, + localName, + URI, ); } late final __objc_msgSend_1033Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1033 = __objc_msgSend_1033Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_initWithKind_options_1 = - _registerName1("initWithKind:options:"); + late final _sel_addNamespace_1 = _registerName1("addNamespace:"); + late final _sel_removeNamespaceForPrefix_1 = + _registerName1("removeNamespaceForPrefix:"); + late final _sel_namespaces1 = _registerName1("namespaces"); + late final _sel_setNamespaces_1 = _registerName1("setNamespaces:"); + late final _sel_namespaceForPrefix_1 = _registerName1("namespaceForPrefix:"); + late final _sel_resolveNamespaceForName_1 = + _registerName1("resolveNamespaceForName:"); + late final _sel_resolvePrefixForNamespaceURI_1 = + _registerName1("resolvePrefixForNamespaceURI:"); + late final _sel_normalizeAdjacentTextNodesPreservingCDATA_1 = + _registerName1("normalizeAdjacentTextNodesPreservingCDATA:"); + late final _sel_setAttributesAsDictionary_1 = + _registerName1("setAttributesAsDictionary:"); + late final _class_PrivateSentrySDKOnly1 = _getClass1("PrivateSentrySDKOnly"); + late final _class_SentryEnvelope1 = _getClass1("SentryEnvelope"); + late final _class_SentryId1 = _getClass1("SentryId"); + late final _class_NSUUID1 = _getClass1("NSUUID"); + late final _sel_UUID1 = _registerName1("UUID"); + late final _sel_initWithUUIDString_1 = _registerName1("initWithUUIDString:"); + late final _sel_initWithUUIDBytes_1 = _registerName1("initWithUUIDBytes:"); instancetype _objc_msgSend_1034( ffi.Pointer obj, ffi.Pointer sel, - int kind, - int options, + ffi.Pointer bytes, ) { return __objc_msgSend_1034( obj, sel, - kind, - options, + bytes, ); } late final __objc_msgSend_1034Ptr = _lookup< ffi.NativeFunction< instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Int32, ffi.Int32)>>('objc_msgSend'); + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1034 = __objc_msgSend_1034Ptr.asFunction< - instancetype Function( - ffi.Pointer, ffi.Pointer, int, int)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_document1 = _registerName1("document"); - late final _sel_documentWithRootElement_1 = - _registerName1("documentWithRootElement:"); - ffi.Pointer _objc_msgSend_1035( + late final _sel_getUUIDBytes_1 = _registerName1("getUUIDBytes:"); + void _objc_msgSend_1035( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer element, + ffi.Pointer uuid, ) { return __objc_msgSend_1035( obj, sel, - element, + uuid, ); } late final __objc_msgSend_1035Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1035 = __objc_msgSend_1035Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_elementWithName_1 = _registerName1("elementWithName:"); - late final _sel_elementWithName_URI_1 = - _registerName1("elementWithName:URI:"); - late final _sel_elementWithName_stringValue_1 = - _registerName1("elementWithName:stringValue:"); - late final _sel_elementWithName_children_attributes_1 = - _registerName1("elementWithName:children:attributes:"); - ffi.Pointer _objc_msgSend_1036( + int _objc_msgSend_1036( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer children, - ffi.Pointer attributes, + ffi.Pointer otherUUID, ) { return __objc_msgSend_1036( obj, sel, - name, - children, - attributes, + otherUUID, ); } late final __objc_msgSend_1036Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + ffi.Int32 Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1036 = __objc_msgSend_1036Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, + int Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); - late final _sel_attributeWithName_stringValue_1 = - _registerName1("attributeWithName:stringValue:"); - late final _sel_attributeWithName_URI_stringValue_1 = - _registerName1("attributeWithName:URI:stringValue:"); - late final _sel_namespaceWithName_stringValue_1 = - _registerName1("namespaceWithName:stringValue:"); - late final _sel_processingInstructionWithName_stringValue_1 = - _registerName1("processingInstructionWithName:stringValue:"); - late final _sel_commentWithStringValue_1 = - _registerName1("commentWithStringValue:"); - late final _sel_textWithStringValue_1 = - _registerName1("textWithStringValue:"); - late final _sel_DTDNodeWithXMLString_1 = - _registerName1("DTDNodeWithXMLString:"); - int _objc_msgSend_1037( + late final _sel_UUIDString1 = _registerName1("UUIDString"); + late final _sel_initWithUUID_1 = _registerName1("initWithUUID:"); + instancetype _objc_msgSend_1037( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer uuid, ) { return __objc_msgSend_1037( obj, sel, + uuid, ); } late final __objc_msgSend_1037Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1037 = __objc_msgSend_1037Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_objectValue1 = _registerName1("objectValue"); - late final _sel_setObjectValue_1 = _registerName1("setObjectValue:"); - late final _sel_setStringValue_1 = _registerName1("setStringValue:"); - late final _sel_setStringValue_resolvingEntities_1 = - _registerName1("setStringValue:resolvingEntities:"); - void _objc_msgSend_1038( + late final _sel_sentryIdString1 = _registerName1("sentryIdString"); + late final _sel_empty1 = _registerName1("empty"); + ffi.Pointer _objc_msgSend_1038( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer string, - bool resolve, ) { return __objc_msgSend_1038( obj, sel, - string, - resolve, ); } late final __objc_msgSend_1038Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1038 = __objc_msgSend_1038Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, bool)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_index1 = _registerName1("index"); - late final _sel_level1 = _registerName1("level"); - late final _class_NSXMLDocument1 = _getClass1("NSXMLDocument"); - late final _sel_initWithXMLString_options_error_1 = - _registerName1("initWithXMLString:options:error:"); + late final _class_SentryEnvelopeItem1 = _getClass1("SentryEnvelopeItem"); + late final _class_SentryEvent1 = _getClass1("SentryEvent"); + late final _sel_initWithEvent_1 = _registerName1("initWithEvent:"); instancetype _objc_msgSend_1039( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer string, - int mask, - ffi.Pointer> error, + ffi.Pointer event, ) { return __objc_msgSend_1039( obj, sel, - string, - mask, - error, + event, ); } late final __objc_msgSend_1039Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1039 = __objc_msgSend_1039Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); + late final _class_SentrySession1 = _getClass1("SentrySession"); + late final _sel_initWithSession_1 = _registerName1("initWithSession:"); instancetype _objc_msgSend_1040( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer url, - int mask, - ffi.Pointer> error, + ffi.Pointer session, ) { return __objc_msgSend_1040( obj, sel, - url, - mask, - error, + session, ); } late final __objc_msgSend_1040Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1040 = __objc_msgSend_1040Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_initWithData_options_error_1 = - _registerName1("initWithData:options:error:"); + late final _class_SentryUserFeedback1 = _getClass1("SentryUserFeedback"); + late final _sel_initWithUserFeedback_1 = + _registerName1("initWithUserFeedback:"); instancetype _objc_msgSend_1041( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer data, - int mask, - ffi.Pointer> error, + ffi.Pointer userFeedback, ) { return __objc_msgSend_1041( obj, sel, - data, - mask, - error, + userFeedback, ); } late final __objc_msgSend_1041Ptr = _lookup< ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Int32, - ffi.Pointer>)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1041 = __objc_msgSend_1041Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer>)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_initWithRootElement_1 = - _registerName1("initWithRootElement:"); - late final _sel_replacementClassForClass_1 = - _registerName1("replacementClassForClass:"); - late final _sel_characterEncoding1 = _registerName1("characterEncoding"); - late final _sel_setCharacterEncoding_1 = - _registerName1("setCharacterEncoding:"); - late final _sel_isStandalone1 = _registerName1("isStandalone"); - late final _sel_setStandalone_1 = _registerName1("setStandalone:"); - late final _sel_documentContentKind1 = _registerName1("documentContentKind"); - int _objc_msgSend_1042( + late final _class_SentryAttachment1 = _getClass1("SentryAttachment"); + late final _sel_initWithAttachment_maxAttachmentSize_1 = + _registerName1("initWithAttachment:maxAttachmentSize:"); + instancetype _objc_msgSend_1042( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer attachment, + int maxAttachmentSize, ) { return __objc_msgSend_1042( obj, sel, + attachment, + maxAttachmentSize, ); } late final __objc_msgSend_1042Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_1042 = __objc_msgSend_1042Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); - late final _sel_setDocumentContentKind_1 = - _registerName1("setDocumentContentKind:"); - void _objc_msgSend_1043( + late final _class_SentryEnvelopeItemHeader1 = + _getClass1("SentryEnvelopeItemHeader"); + late final _sel_initWithType_length_1 = + _registerName1("initWithType:length:"); + instancetype _objc_msgSend_1043( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer type, + int length, ) { return __objc_msgSend_1043( obj, sel, - value, + type, + length, ); } late final __objc_msgSend_1043Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); late final __objc_msgSend_1043 = __objc_msgSend_1043Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, int)>(); - late final _sel_setMIMEType_1 = _registerName1("setMIMEType:"); - late final _class_NSXMLDTD1 = _getClass1("NSXMLDTD"); - late final _sel_setPublicID_1 = _registerName1("setPublicID:"); - late final _sel_setSystemID_1 = _registerName1("setSystemID:"); - late final _sel_insertChild_atIndex_1 = - _registerName1("insertChild:atIndex:"); - void _objc_msgSend_1044( + late final _sel_initWithType_length_filenname_contentType_1 = + _registerName1("initWithType:length:filenname:contentType:"); + instancetype _objc_msgSend_1044( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer child, - int index, + ffi.Pointer type, + int length, + ffi.Pointer filename, + ffi.Pointer contentType, ) { return __objc_msgSend_1044( obj, sel, - child, - index, + type, + length, + filename, + contentType, ); } late final __objc_msgSend_1044Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.UnsignedLong, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1044 = __objc_msgSend_1044Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + int, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_insertChildren_atIndex_1 = - _registerName1("insertChildren:atIndex:"); - void _objc_msgSend_1045( + late final _sel_contentType1 = _registerName1("contentType"); + late final _sel_initWithHeader_data_1 = + _registerName1("initWithHeader:data:"); + instancetype _objc_msgSend_1045( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer children, - int index, + ffi.Pointer header, + ffi.Pointer data, ) { return __objc_msgSend_1045( obj, sel, - children, - index, + header, + data, ); } late final __objc_msgSend_1045Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1045 = __objc_msgSend_1045Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_removeChildAtIndex_1 = _registerName1("removeChildAtIndex:"); - late final _sel_setChildren_1 = _registerName1("setChildren:"); - late final _sel_addChild_1 = _registerName1("addChild:"); - void _objc_msgSend_1046( + late final _sel_header1 = _registerName1("header"); + ffi.Pointer _objc_msgSend_1046( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer child, ) { return __objc_msgSend_1046( obj, sel, - child, ); } late final __objc_msgSend_1046Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1046 = __objc_msgSend_1046Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_replaceChildAtIndex_withNode_1 = - _registerName1("replaceChildAtIndex:withNode:"); - void _objc_msgSend_1047( + late final _sel_initWithId_singleItem_1 = + _registerName1("initWithId:singleItem:"); + instancetype _objc_msgSend_1047( ffi.Pointer obj, ffi.Pointer sel, - int index, - ffi.Pointer node, + ffi.Pointer id, + ffi.Pointer item, ) { return __objc_msgSend_1047( obj, sel, - index, - node, + id, + item, ); } late final __objc_msgSend_1047Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.UnsignedLong, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1047 = __objc_msgSend_1047Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int, - ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _class_NSXMLDTDNode1 = _getClass1("NSXMLDTDNode"); - late final _sel_initWithXMLString_1 = _registerName1("initWithXMLString:"); - late final _sel_DTDKind1 = _registerName1("DTDKind"); - int _objc_msgSend_1048( + late final _class_SentryEnvelopeHeader1 = _getClass1("SentryEnvelopeHeader"); + late final _sel_initWithId_1 = _registerName1("initWithId:"); + instancetype _objc_msgSend_1048( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer eventId, ) { return __objc_msgSend_1048( obj, sel, + eventId, ); } late final __objc_msgSend_1048Ptr = _lookup< ffi.NativeFunction< - ffi.Int32 Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1048 = __objc_msgSend_1048Ptr.asFunction< - int Function(ffi.Pointer, ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_setDTDKind_1 = _registerName1("setDTDKind:"); - void _objc_msgSend_1049( + late final _class_SentryTraceContext1 = _getClass1("SentryTraceContext"); + late final _sel_initWithId_traceContext_1 = + _registerName1("initWithId:traceContext:"); + instancetype _objc_msgSend_1049( ffi.Pointer obj, ffi.Pointer sel, - int value, + ffi.Pointer eventId, + ffi.Pointer traceContext, ) { return __objc_msgSend_1049( obj, sel, - value, + eventId, + traceContext, ); } late final __objc_msgSend_1049Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Int32)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1049 = __objc_msgSend_1049Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, int)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_isExternal1 = _registerName1("isExternal"); - late final _sel_notationName1 = _registerName1("notationName"); - late final _sel_setNotationName_1 = _registerName1("setNotationName:"); - late final _sel_localNameForName_1 = _registerName1("localNameForName:"); - late final _sel_prefixForName_1 = _registerName1("prefixForName:"); - late final _sel_predefinedNamespaceForPrefix_1 = - _registerName1("predefinedNamespaceForPrefix:"); - ffi.Pointer _objc_msgSend_1050( + late final _class_SentrySdkInfo1 = _getClass1("SentrySdkInfo"); + late final _sel_initWithId_sdkInfo_traceContext_1 = + _registerName1("initWithId:sdkInfo:traceContext:"); + instancetype _objc_msgSend_1050( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, + ffi.Pointer eventId, + ffi.Pointer sdkInfo, + ffi.Pointer traceContext, ) { return __objc_msgSend_1050( obj, sel, - name, + eventId, + sdkInfo, + traceContext, ); } late final __objc_msgSend_1050Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1050 = __objc_msgSend_1050Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>(); - late final _sel_entityDeclarationForName_1 = - _registerName1("entityDeclarationForName:"); + late final _sel_eventId1 = _registerName1("eventId"); + late final _sel_sdkInfo1 = _registerName1("sdkInfo"); ffi.Pointer _objc_msgSend_1051( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, ) { return __objc_msgSend_1051( obj, sel, - name, ); } late final __objc_msgSend_1051Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1051 = __objc_msgSend_1051Ptr.asFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_notationDeclarationForName_1 = - _registerName1("notationDeclarationForName:"); - late final _sel_elementDeclarationForName_1 = - _registerName1("elementDeclarationForName:"); - late final _sel_attributeDeclarationForName_elementName_1 = - _registerName1("attributeDeclarationForName:elementName:"); + late final _sel_traceContext1 = _registerName1("traceContext"); ffi.Pointer _objc_msgSend_1052( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer name, - ffi.Pointer elementName, ) { return __objc_msgSend_1052( obj, sel, - name, - elementName, ); } late final __objc_msgSend_1052Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1052 = __objc_msgSend_1052Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer, ffi.Pointer)>(); - late final _sel_predefinedEntityDeclarationForName_1 = - _registerName1("predefinedEntityDeclarationForName:"); - late final _sel_DTD1 = _registerName1("DTD"); - ffi.Pointer _objc_msgSend_1053( + late final _sel_sentAt1 = _registerName1("sentAt"); + late final _sel_setSentAt_1 = _registerName1("setSentAt:"); + late final _sel_initWithHeader_singleItem_1 = + _registerName1("initWithHeader:singleItem:"); + instancetype _objc_msgSend_1053( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer header, + ffi.Pointer item, ) { return __objc_msgSend_1053( obj, sel, + header, + item, ); } late final __objc_msgSend_1053Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1053 = __objc_msgSend_1053Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setDTD_1 = _registerName1("setDTD:"); - void _objc_msgSend_1054( + late final _sel_initWithId_items_1 = _registerName1("initWithId:items:"); + instancetype _objc_msgSend_1054( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer value, + ffi.Pointer id, + ffi.Pointer items, ) { return __objc_msgSend_1054( obj, sel, - value, + id, + items, ); } late final __objc_msgSend_1054Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1054 = __objc_msgSend_1054Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_setRootElement_1 = _registerName1("setRootElement:"); - void _objc_msgSend_1055( + late final _sel_initWithSessions_1 = _registerName1("initWithSessions:"); + late final _sel_initWithHeader_items_1 = + _registerName1("initWithHeader:items:"); + instancetype _objc_msgSend_1055( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer root, + ffi.Pointer header, + ffi.Pointer items, ) { return __objc_msgSend_1055( obj, sel, - root, + header, + items, ); } late final __objc_msgSend_1055Ptr = _lookup< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer, ffi.Pointer, + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1055 = __objc_msgSend_1055Ptr.asFunction< - void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + instancetype Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_rootElement1 = _registerName1("rootElement"); ffi.Pointer _objc_msgSend_1056( ffi.Pointer obj, ffi.Pointer sel, @@ -29905,354 +30006,286 @@ class SentryCocoa { ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>(); - late final _sel_XMLData1 = _registerName1("XMLData"); - late final _sel_XMLDataWithOptions_1 = _registerName1("XMLDataWithOptions:"); - ffi.Pointer _objc_msgSend_1057( + late final _sel_items1 = _registerName1("items"); + late final _sel_storeEnvelope_1 = _registerName1("storeEnvelope:"); + void _objc_msgSend_1057( ffi.Pointer obj, ffi.Pointer sel, - int options, + ffi.Pointer envelope, ) { return __objc_msgSend_1057( obj, sel, - options, + envelope, ); } late final __objc_msgSend_1057Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1057 = __objc_msgSend_1057Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_objectByApplyingXSLT_arguments_error_1 = - _registerName1("objectByApplyingXSLT:arguments:error:"); + late final _sel_captureEnvelope_1 = _registerName1("captureEnvelope:"); + late final _sel_envelopeWithData_1 = _registerName1("envelopeWithData:"); ffi.Pointer _objc_msgSend_1058( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer xslt, - ffi.Pointer arguments, - ffi.Pointer> error, + ffi.Pointer data, ) { return __objc_msgSend_1058( obj, sel, - xslt, - arguments, - error, + data, ); } late final __objc_msgSend_1058Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1058 = __objc_msgSend_1058Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_objectByApplyingXSLTString_arguments_error_1 = - _registerName1("objectByApplyingXSLTString:arguments:error:"); + late final _sel_getDebugImages1 = _registerName1("getDebugImages"); + late final _sel_getDebugImagesCrashed_1 = + _registerName1("getDebugImagesCrashed:"); ffi.Pointer _objc_msgSend_1059( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer xslt, - ffi.Pointer arguments, - ffi.Pointer> error, + bool isCrash, ) { return __objc_msgSend_1059( obj, sel, - xslt, - arguments, - error, + isCrash, ); } late final __objc_msgSend_1059Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Bool)>>('objc_msgSend'); late final __objc_msgSend_1059 = __objc_msgSend_1059Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); + ffi.Pointer, ffi.Pointer, bool)>(); - late final _sel_objectByApplyingXSLTAtURL_arguments_error_1 = - _registerName1("objectByApplyingXSLTAtURL:arguments:error:"); - ffi.Pointer _objc_msgSend_1060( + late final _sel_setSdkName_andVersionString_1 = + _registerName1("setSdkName:andVersionString:"); + late final _sel_setSdkName_1 = _registerName1("setSdkName:"); + late final _sel_getSdkName1 = _registerName1("getSdkName"); + late final _sel_getSdkVersionString1 = _registerName1("getSdkVersionString"); + late final _sel_getExtraContext1 = _registerName1("getExtraContext"); + late final _sel_startProfilerForTrace_1 = + _registerName1("startProfilerForTrace:"); + int _objc_msgSend_1060( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer xsltURL, - ffi.Pointer argument, - ffi.Pointer> error, + ffi.Pointer traceId, ) { return __objc_msgSend_1060( obj, sel, - xsltURL, - argument, - error, + traceId, ); } late final __objc_msgSend_1060Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Uint64 Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1060 = __objc_msgSend_1060Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); + int Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_validateAndReturnError_1 = - _registerName1("validateAndReturnError:"); - late final _sel_rootDocument1 = _registerName1("rootDocument"); + late final _sel_collectProfileBetween_and_forTrace_1 = + _registerName1("collectProfileBetween:and:forTrace:"); ffi.Pointer _objc_msgSend_1061( ffi.Pointer obj, ffi.Pointer sel, + int startSystemTime, + int endSystemTime, + ffi.Pointer traceId, ) { return __objc_msgSend_1061( obj, sel, + startSystemTime, + endSystemTime, + traceId, ); } late final __objc_msgSend_1061Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer, + ffi.Pointer, + ffi.Uint64, + ffi.Uint64, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1061 = __objc_msgSend_1061Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, int, int, ffi.Pointer)>(); - late final _sel_parent1 = _registerName1("parent"); - ffi.Pointer _objc_msgSend_1062( + late final _sel_discardProfilerForTrace_1 = + _registerName1("discardProfilerForTrace:"); + void _objc_msgSend_1062( ffi.Pointer obj, ffi.Pointer sel, + ffi.Pointer traceId, ) { return __objc_msgSend_1062( obj, sel, + traceId, ); } late final __objc_msgSend_1062Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1062 = __objc_msgSend_1062Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(); - late final _sel_childCount1 = _registerName1("childCount"); - late final _sel_children1 = _registerName1("children"); - late final _sel_childAtIndex_1 = _registerName1("childAtIndex:"); - ffi.Pointer _objc_msgSend_1063( + late final _class_SentryAppStartMeasurement1 = + _getClass1("SentryAppStartMeasurement"); + late final _sel_onAppStartMeasurementAvailable1 = + _registerName1("onAppStartMeasurementAvailable"); + ffi.Pointer<_ObjCBlock> _objc_msgSend_1063( ffi.Pointer obj, ffi.Pointer sel, - int index, ) { return __objc_msgSend_1063( obj, sel, - index, ); } late final __objc_msgSend_1063Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1063 = __objc_msgSend_1063Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer, ffi.Pointer)>(); - late final _sel_previousSibling1 = _registerName1("previousSibling"); - late final _sel_nextSibling1 = _registerName1("nextSibling"); - late final _sel_previousNode1 = _registerName1("previousNode"); - late final _sel_nextNode1 = _registerName1("nextNode"); - late final _sel_detach1 = _registerName1("detach"); - late final _sel_XPath1 = _registerName1("XPath"); - late final _sel_localName1 = _registerName1("localName"); - late final _sel_prefix1 = _registerName1("prefix"); - late final _sel_URI1 = _registerName1("URI"); - late final _sel_setURI_1 = _registerName1("setURI:"); - late final _sel_XMLString1 = _registerName1("XMLString"); - late final _sel_XMLStringWithOptions_1 = - _registerName1("XMLStringWithOptions:"); - ffi.Pointer _objc_msgSend_1064( + late final _sel_setOnAppStartMeasurementAvailable_1 = + _registerName1("setOnAppStartMeasurementAvailable:"); + void _objc_msgSend_1064( ffi.Pointer obj, ffi.Pointer sel, - int options, + ffi.Pointer<_ObjCBlock> value, ) { return __objc_msgSend_1064( obj, sel, - options, + value, ); } late final __objc_msgSend_1064Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Int32)>>('objc_msgSend'); + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); late final __objc_msgSend_1064 = __objc_msgSend_1064Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, int)>(); + void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer<_ObjCBlock>)>(); - late final _sel_canonicalXMLStringPreservingComments_1 = - _registerName1("canonicalXMLStringPreservingComments:"); + late final _sel_appStartMeasurement1 = _registerName1("appStartMeasurement"); ffi.Pointer _objc_msgSend_1065( ffi.Pointer obj, ffi.Pointer sel, - bool comments, ) { return __objc_msgSend_1065( obj, sel, - comments, ); } late final __objc_msgSend_1065Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer, - ffi.Pointer, ffi.Bool)>>('objc_msgSend'); + ffi.Pointer Function( + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1065 = __objc_msgSend_1065Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, ffi.Pointer, bool)>(); + ffi.Pointer, ffi.Pointer)>(); - late final _sel_nodesForXPath_error_1 = - _registerName1("nodesForXPath:error:"); - late final _sel_objectsForXQuery_constants_error_1 = - _registerName1("objectsForXQuery:constants:error:"); + late final _sel_installationID1 = _registerName1("installationID"); + late final _class_SentryOptions1 = _getClass1("SentryOptions"); ffi.Pointer _objc_msgSend_1066( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer xquery, - ffi.Pointer constants, - ffi.Pointer> error, ) { return __objc_msgSend_1066( obj, sel, - xquery, - constants, - error, ); } late final __objc_msgSend_1066Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>>('objc_msgSend'); + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1066 = __objc_msgSend_1066Ptr.asFunction< ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer>)>(); + ffi.Pointer, ffi.Pointer)>(); - late final _sel_objectsForXQuery_error_1 = - _registerName1("objectsForXQuery:error:"); - late final _sel_initWithName_URI_1 = _registerName1("initWithName:URI:"); - late final _sel_initWithName_stringValue_1 = - _registerName1("initWithName:stringValue:"); - late final _sel_initWithXMLString_error_1 = - _registerName1("initWithXMLString:error:"); - late final _sel_elementsForName_1 = _registerName1("elementsForName:"); - late final _sel_elementsForLocalName_URI_1 = - _registerName1("elementsForLocalName:URI:"); - late final _sel_addAttribute_1 = _registerName1("addAttribute:"); - late final _sel_removeAttributeForName_1 = - _registerName1("removeAttributeForName:"); - late final _sel_attributes1 = _registerName1("attributes"); - late final _sel_setAttributes_1 = _registerName1("setAttributes:"); - late final _sel_setAttributesWithDictionary_1 = - _registerName1("setAttributesWithDictionary:"); - late final _sel_attributeForName_1 = _registerName1("attributeForName:"); - late final _sel_attributeForLocalName_URI_1 = - _registerName1("attributeForLocalName:URI:"); + late final _sel_appStartMeasurementHybridSDKMode1 = + _registerName1("appStartMeasurementHybridSDKMode"); + late final _sel_setAppStartMeasurementHybridSDKMode_1 = + _registerName1("setAppStartMeasurementHybridSDKMode:"); + late final _class_SentryUser1 = _getClass1("SentryUser"); + late final _sel_userWithDictionary_1 = _registerName1("userWithDictionary:"); ffi.Pointer _objc_msgSend_1067( ffi.Pointer obj, ffi.Pointer sel, - ffi.Pointer localName, - ffi.Pointer URI, + ffi.Pointer dictionary, ) { return __objc_msgSend_1067( obj, sel, - localName, - URI, + dictionary, ); } late final __objc_msgSend_1067Ptr = _lookup< ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); late final __objc_msgSend_1067 = __objc_msgSend_1067Ptr.asFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); - late final _sel_addNamespace_1 = _registerName1("addNamespace:"); - late final _sel_removeNamespaceForPrefix_1 = - _registerName1("removeNamespaceForPrefix:"); - late final _sel_namespaces1 = _registerName1("namespaces"); - late final _sel_setNamespaces_1 = _registerName1("setNamespaces:"); - late final _sel_namespaceForPrefix_1 = _registerName1("namespaceForPrefix:"); - late final _sel_resolveNamespaceForName_1 = - _registerName1("resolveNamespaceForName:"); - late final _sel_resolvePrefixForNamespaceURI_1 = - _registerName1("resolvePrefixForNamespaceURI:"); - late final _sel_normalizeAdjacentTextNodesPreservingCDATA_1 = - _registerName1("normalizeAdjacentTextNodesPreservingCDATA:"); - late final _sel_setAttributesAsDictionary_1 = - _registerName1("setAttributesAsDictionary:"); + late final _class_SentryBreadcrumb1 = _getClass1("SentryBreadcrumb"); + late final _sel_breadcrumbWithDictionary_1 = + _registerName1("breadcrumbWithDictionary:"); + ffi.Pointer _objc_msgSend_1068( + ffi.Pointer obj, + ffi.Pointer sel, + ffi.Pointer dictionary, + ) { + return __objc_msgSend_1068( + obj, + sel, + dictionary, + ); + } + + late final __objc_msgSend_1068Ptr = _lookup< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + late final __objc_msgSend_1068 = __objc_msgSend_1068Ptr.asFunction< + ffi.Pointer Function(ffi.Pointer, + ffi.Pointer, ffi.Pointer)>(); } -/// @warning This class is reserved for hybrid SDKs. Methods may be changed, renamed or removed -/// without notice. If you want to use one of these methods here please open up an issue and let us -/// know. -/// @note The name of this class is supposed to be a bit weird and ugly. The name starts with private -/// on purpose so users don't see it in code completion when typing Sentry. We also add only at the -/// end to make it more obvious you shouldn't use it. class _ObjCWrapper implements ffi.Finalizable { final ffi.Pointer _id; final SentryCocoa _lib; @@ -30294,701 +30327,253 @@ class _ObjCWrapper implements ffi.Finalizable { ffi.Pointer get pointer => _id; } -class PrivateSentrySDKOnly extends _ObjCWrapper { - PrivateSentrySDKOnly._(ffi.Pointer id, SentryCocoa lib, +class NSObject extends _ObjCWrapper { + NSObject._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [PrivateSentrySDKOnly] that points to the same underlying object as [other]. - static PrivateSentrySDKOnly castFrom(T other) { - return PrivateSentrySDKOnly._(other._id, other._lib, - retain: true, release: true); + /// Returns a [NSObject] that points to the same underlying object as [other]. + static NSObject castFrom(T other) { + return NSObject._(other._id, other._lib, retain: true, release: true); } - /// Returns a [PrivateSentrySDKOnly] that wraps the given raw object pointer. - static PrivateSentrySDKOnly castFromPointer( + /// Returns a [NSObject] that wraps the given raw object pointer. + static NSObject castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return PrivateSentrySDKOnly._(other, lib, retain: retain, release: release); + return NSObject._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [PrivateSentrySDKOnly]. + /// Returns whether [obj] is an instance of [NSObject]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_PrivateSentrySDKOnly1); - } - - /// For storing an envelope synchronously to disk. - static void storeEnvelope_(SentryCocoa _lib, SentryEnvelope? envelope) { - _lib._objc_msgSend_632(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_storeEnvelope_1, envelope?._id ?? ffi.nullptr); + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSObject1); } - static void captureEnvelope_(SentryCocoa _lib, SentryEnvelope? envelope) { - _lib._objc_msgSend_632(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_captureEnvelope_1, envelope?._id ?? ffi.nullptr); + static void load(SentryCocoa _lib) { + _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_load1); } - /// Create an envelope from @c NSData. Needed for example by Flutter. - static SentryEnvelope envelopeWithData_(SentryCocoa _lib, NSObject data) { - final _ret = _lib._objc_msgSend_633(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_envelopeWithData_1, data._id); - return SentryEnvelope._(_ret, _lib, retain: true, release: true); + static void initialize(SentryCocoa _lib) { + _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_initialize1); } - /// Returns the current list of debug images. Be aware that the @c SentryDebugMeta is actually - /// describing a debug image. - /// @warning This assumes a crash has occurred and attempts to read the crash information from each - /// image's data segment, which may not be present or be invalid if a crash has not actually - /// occurred. To avoid this, use the new @c +[getDebugImagesCrashed:] instead. - static NSObject getDebugImages(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_PrivateSentrySDKOnly1, _lib._sel_getDebugImages1); + NSObject init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); return NSObject._(_ret, _lib, retain: true, release: true); } - /// Returns the current list of debug images. Be aware that the @c SentryDebugMeta is actually - /// describing a debug image. - /// @param isCrash @c YES if we're collecting binary images for a crash report, @c NO if we're - /// gathering them for other backtrace information, like a performance transaction. If this is for a - /// crash, each image's data section crash info is also included. - static NSObject getDebugImagesCrashed_(SentryCocoa _lib, NSObject isCrash) { - final _ret = _lib._objc_msgSend_16(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_getDebugImagesCrashed_1, isCrash._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSObject new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_new1); + return NSObject._(_ret, _lib, retain: false, release: true); } - /// Override SDK information. - static void setSdkName_andVersionString_( - SentryCocoa _lib, NSObject sdkName, NSObject versionString) { - _lib._objc_msgSend_499( - _lib._class_PrivateSentrySDKOnly1, - _lib._sel_setSdkName_andVersionString_1, - sdkName._id, - versionString._id); + static NSObject allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_allocWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); } - /// Override SDK information. - static void setSdkName_(SentryCocoa _lib, NSObject sdkName) { - _lib._objc_msgSend_15( - _lib._class_PrivateSentrySDKOnly1, _lib._sel_setSdkName_1, sdkName._id); + static NSObject alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_alloc1); + return NSObject._(_ret, _lib, retain: false, release: true); } - /// Retrieves the SDK name - static NSObject getSdkName(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_PrivateSentrySDKOnly1, _lib._sel_getSdkName1); - return NSObject._(_ret, _lib, retain: true, release: true); + void dealloc() { + _lib._objc_msgSend_1(_id, _lib._sel_dealloc1); } - /// Retrieves the SDK version string - static NSObject getSdkVersionString(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_PrivateSentrySDKOnly1, _lib._sel_getSdkVersionString1); - return NSObject._(_ret, _lib, retain: true, release: true); + void finalize() { + _lib._objc_msgSend_1(_id, _lib._sel_finalize1); } - /// Retrieves extra context - static NSObject getExtraContext(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_PrivateSentrySDKOnly1, _lib._sel_getExtraContext1); - return NSObject._(_ret, _lib, retain: true, release: true); + NSObject copy() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_copy1); + return NSObject._(_ret, _lib, retain: false, release: true); } - /// Start a profiler session associated with the given @c SentryId. - /// @return The system time when the profiler session started. - static NSObject startProfilerForTrace_(SentryCocoa _lib, SentryId? traceId) { - final _ret = _lib._objc_msgSend_622(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_startProfilerForTrace_1, traceId?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + NSObject mutableCopy() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_mutableCopy1); + return NSObject._(_ret, _lib, retain: false, release: true); } - /// Collect a profiler session data associated with the given @c SentryId. - /// This also discards the profiler. - static NSObject collectProfileBetween_and_forTrace_(SentryCocoa _lib, - NSObject startSystemTime, NSObject endSystemTime, SentryId? traceId) { - final _ret = _lib._objc_msgSend_634( - _lib._class_PrivateSentrySDKOnly1, - _lib._sel_collectProfileBetween_and_forTrace_1, - startSystemTime._id, - endSystemTime._id, - traceId?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSObject copyWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_copyWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); } - /// Discard profiler session data associated with the given @c SentryId. - /// This only needs to be called in case you haven't collected the profile (and don't intend to). - static void discardProfilerForTrace_(SentryCocoa _lib, SentryId? traceId) { - _lib._objc_msgSend_635(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_discardProfilerForTrace_1, traceId?._id ?? ffi.nullptr); + static NSObject mutableCopyWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSObject1, _lib._sel_mutableCopyWithZone_1, zone); + return NSObject._(_ret, _lib, retain: false, release: true); } - static ObjCBlock_ffiInt_SentryAppStartMeasurement - getOnAppStartMeasurementAvailable(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_636(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_onAppStartMeasurementAvailable1); - return ObjCBlock_ffiInt_SentryAppStartMeasurement._(_ret, _lib); + static bool instancesRespondToSelector_( + SentryCocoa _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_4(_lib._class_NSObject1, + _lib._sel_instancesRespondToSelector_1, aSelector); } - static void setOnAppStartMeasurementAvailable( - SentryCocoa _lib, ObjCBlock_ffiInt_SentryAppStartMeasurement value) { - return _lib._objc_msgSend_637(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_setOnAppStartMeasurementAvailable_1, value._id); + static bool conformsToProtocol_(SentryCocoa _lib, Protocol? protocol) { + return _lib._objc_msgSend_5(_lib._class_NSObject1, + _lib._sel_conformsToProtocol_1, protocol?._id ?? ffi.nullptr); } - static SentryAppStartMeasurement? getAppStartMeasurement(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_638( - _lib._class_PrivateSentrySDKOnly1, _lib._sel_appStartMeasurement1); - return _ret.address == 0 - ? null - : SentryAppStartMeasurement._(_ret, _lib, retain: true, release: true); + ffi.Pointer> methodForSelector_( + ffi.Pointer aSelector) { + return _lib._objc_msgSend_6(_id, _lib._sel_methodForSelector_1, aSelector); } - static ffi.Pointer getInstallationID(SentryCocoa _lib) { - return _lib._objc_msgSend_620( - _lib._class_PrivateSentrySDKOnly1, _lib._sel_installationID1); + static ffi.Pointer> + instanceMethodForSelector_( + SentryCocoa _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_6(_lib._class_NSObject1, + _lib._sel_instanceMethodForSelector_1, aSelector); } - static SentryOptions? getOptions(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_639( - _lib._class_PrivateSentrySDKOnly1, _lib._sel_options1); - return _ret.address == 0 - ? null - : SentryOptions._(_ret, _lib, retain: true, release: true); + void doesNotRecognizeSelector_(ffi.Pointer aSelector) { + _lib._objc_msgSend_7(_id, _lib._sel_doesNotRecognizeSelector_1, aSelector); } - /// If enabled, the SDK won't send the app start measurement with the first transaction. Instead, if - /// @c enableAutoPerformanceTracing is enabled, the SDK measures the app start and then calls - /// @c onAppStartMeasurementAvailable. Furthermore, the SDK doesn't set all values for the app start - /// measurement because the HybridSDKs initialize the Cocoa SDK too late to receive all - /// notifications. Instead, the SDK sets the @c appStartDuration to @c 0 and the - /// @c didFinishLaunchingTimestamp to @c timeIntervalSinceReferenceDate. - /// @note Default is @c NO. - static int getAppStartMeasurementHybridSDKMode(SentryCocoa _lib) { - return _lib._objc_msgSend_219(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_appStartMeasurementHybridSDKMode1); + NSObject forwardingTargetForSelector_(ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_8( + _id, _lib._sel_forwardingTargetForSelector_1, aSelector); + return NSObject._(_ret, _lib, retain: true, release: true); } - /// If enabled, the SDK won't send the app start measurement with the first transaction. Instead, if - /// @c enableAutoPerformanceTracing is enabled, the SDK measures the app start and then calls - /// @c onAppStartMeasurementAvailable. Furthermore, the SDK doesn't set all values for the app start - /// measurement because the HybridSDKs initialize the Cocoa SDK too late to receive all - /// notifications. Instead, the SDK sets the @c appStartDuration to @c 0 and the - /// @c didFinishLaunchingTimestamp to @c timeIntervalSinceReferenceDate. - /// @note Default is @c NO. - static void setAppStartMeasurementHybridSDKMode(SentryCocoa _lib, int value) { - return _lib._objc_msgSend_640(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_setAppStartMeasurementHybridSDKMode_1, value); + void forwardInvocation_(NSInvocation? anInvocation) { + _lib._objc_msgSend_392( + _id, _lib._sel_forwardInvocation_1, anInvocation?._id ?? ffi.nullptr); } - static SentryUser userWithDictionary_(SentryCocoa _lib, NSObject dictionary) { - final _ret = _lib._objc_msgSend_641(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_userWithDictionary_1, dictionary._id); - return SentryUser._(_ret, _lib, retain: true, release: true); + NSMethodSignature methodSignatureForSelector_( + ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_393( + _id, _lib._sel_methodSignatureForSelector_1, aSelector); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); } - static SentryBreadcrumb breadcrumbWithDictionary_( - SentryCocoa _lib, NSObject dictionary) { - final _ret = _lib._objc_msgSend_642(_lib._class_PrivateSentrySDKOnly1, - _lib._sel_breadcrumbWithDictionary_1, dictionary._id); - return SentryBreadcrumb._(_ret, _lib, retain: true, release: true); + static NSMethodSignature instanceMethodSignatureForSelector_( + SentryCocoa _lib, ffi.Pointer aSelector) { + final _ret = _lib._objc_msgSend_393(_lib._class_NSObject1, + _lib._sel_instanceMethodSignatureForSelector_1, aSelector); + return NSMethodSignature._(_ret, _lib, retain: true, release: true); } -} - -class ObjCSel extends ffi.Opaque {} - -class ObjCObject extends ffi.Opaque {} -class SentryEnvelope extends _ObjCWrapper { - SentryEnvelope._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + bool allowsWeakReference() { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsWeakReference1); + } - /// Returns a [SentryEnvelope] that points to the same underlying object as [other]. - static SentryEnvelope castFrom(T other) { - return SentryEnvelope._(other._id, other._lib, retain: true, release: true); + bool retainWeakReference() { + return _lib._objc_msgSend_12(_id, _lib._sel_retainWeakReference1); } - /// Returns a [SentryEnvelope] that wraps the given raw object pointer. - static SentryEnvelope castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryEnvelope._(other, lib, retain: retain, release: release); + static bool isSubclassOfClass_(SentryCocoa _lib, NSObject aClass) { + return _lib._objc_msgSend_0( + _lib._class_NSObject1, _lib._sel_isSubclassOfClass_1, aClass._id); } - /// Returns whether [obj] is an instance of [SentryEnvelope]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_SentryEnvelope1); + static bool resolveClassMethod_(SentryCocoa _lib, ffi.Pointer sel) { + return _lib._objc_msgSend_4( + _lib._class_NSObject1, _lib._sel_resolveClassMethod_1, sel); } - SentryEnvelope initWithId_singleItem_( - SentryId? id, SentryEnvelopeItem? item) { - final _ret = _lib._objc_msgSend_621(_id, _lib._sel_initWithId_singleItem_1, - id?._id ?? ffi.nullptr, item?._id ?? ffi.nullptr); - return SentryEnvelope._(_ret, _lib, retain: true, release: true); + static bool resolveInstanceMethod_( + SentryCocoa _lib, ffi.Pointer sel) { + return _lib._objc_msgSend_4( + _lib._class_NSObject1, _lib._sel_resolveInstanceMethod_1, sel); } - SentryEnvelope initWithHeader_singleItem_( - SentryEnvelopeHeader? header, SentryEnvelopeItem? item) { - final _ret = _lib._objc_msgSend_628( - _id, - _lib._sel_initWithHeader_singleItem_1, - header?._id ?? ffi.nullptr, - item?._id ?? ffi.nullptr); - return SentryEnvelope._(_ret, _lib, retain: true, release: true); + static int hash(SentryCocoa _lib) { + return _lib._objc_msgSend_10(_lib._class_NSObject1, _lib._sel_hash1); } - SentryEnvelope initWithId_items_(SentryId? id, NSObject items) { - final _ret = _lib._objc_msgSend_629( - _id, _lib._sel_initWithId_items_1, id?._id ?? ffi.nullptr, items._id); - return SentryEnvelope._(_ret, _lib, retain: true, release: true); + static NSObject superclass(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_superclass1); + return NSObject._(_ret, _lib, retain: true, release: true); } - /// Initializes a @c SentryEnvelope with a single session. - /// @param session to init the envelope with. - SentryEnvelope initWithSession_(SentrySession? session) { - final _ret = _lib._objc_msgSend_615( - _id, _lib._sel_initWithSession_1, session?._id ?? ffi.nullptr); - return SentryEnvelope._(_ret, _lib, retain: true, release: true); + static NSObject class1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_class1); + return NSObject._(_ret, _lib, retain: true, release: true); } - /// Initializes a @c SentryEnvelope with a list of sessions. - /// Can be used when an operation that starts a session closes an ongoing session. - /// @param sessions to init the envelope with. - SentryEnvelope initWithSessions_(NSObject sessions) { + static NSString description(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_16(_id, _lib._sel_initWithSessions_1, sessions._id); - return SentryEnvelope._(_ret, _lib, retain: true, release: true); + _lib._objc_msgSend_20(_lib._class_NSObject1, _lib._sel_description1); + return NSString._(_ret, _lib, retain: true, release: true); } - SentryEnvelope initWithHeader_items_( - SentryEnvelopeHeader? header, NSObject items) { - final _ret = _lib._objc_msgSend_630(_id, _lib._sel_initWithHeader_items_1, - header?._id ?? ffi.nullptr, items._id); - return SentryEnvelope._(_ret, _lib, retain: true, release: true); + static NSString debugDescription(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_20( + _lib._class_NSObject1, _lib._sel_debugDescription1); + return NSString._(_ret, _lib, retain: true, release: true); } - /// Convenience init for a single event. - SentryEnvelope initWithEvent_(SentryEvent? event) { - final _ret = _lib._objc_msgSend_614( - _id, _lib._sel_initWithEvent_1, event?._id ?? ffi.nullptr); - return SentryEnvelope._(_ret, _lib, retain: true, release: true); + static int version(SentryCocoa _lib) { + return _lib._objc_msgSend_78(_lib._class_NSObject1, _lib._sel_version1); } - SentryEnvelope initWithUserFeedback_(SentryUserFeedback? userFeedback) { - final _ret = _lib._objc_msgSend_616(_id, _lib._sel_initWithUserFeedback_1, - userFeedback?._id ?? ffi.nullptr); - return SentryEnvelope._(_ret, _lib, retain: true, release: true); + static void setVersion_(SentryCocoa _lib, int aVersion) { + _lib._objc_msgSend_394( + _lib._class_NSObject1, _lib._sel_setVersion_1, aVersion); } - /// The envelope header. - SentryEnvelopeHeader? get header { - final _ret = _lib._objc_msgSend_631(_id, _lib._sel_header1); - return _ret.address == 0 - ? null - : SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); + NSObject get classForCoder { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_classForCoder1); + return NSObject._(_ret, _lib, retain: true, release: true); } -} - -typedef instancetype = ffi.Pointer; -class SentryId extends NSObject { - SentryId._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + NSObject replacementObjectForCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_replacementObjectForCoder_1, coder?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } - /// Returns a [SentryId] that points to the same underlying object as [other]. - static SentryId castFrom(T other) { - return SentryId._(other._id, other._lib, retain: true, release: true); + NSObject awakeAfterUsingCoder_(NSCoder? coder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_awakeAfterUsingCoder_1, coder?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: false, release: true); } - /// Returns a [SentryId] that wraps the given raw object pointer. - static SentryId castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryId._(other, lib, retain: retain, release: release); + static void poseAsClass_(SentryCocoa _lib, NSObject aClass) { + _lib._objc_msgSend_15( + _lib._class_NSObject1, _lib._sel_poseAsClass_1, aClass._id); } - /// Returns whether [obj] is an instance of [SentryId]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryId1); + NSObject get autoContentAccessingProxy { + final _ret = + _lib._objc_msgSend_2(_id, _lib._sel_autoContentAccessingProxy1); + return NSObject._(_ret, _lib, retain: true, release: true); } - /// Creates a @c SentryId with a random UUID. - @override - SentryId init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return SentryId._(_ret, _lib, retain: true, release: true); + void + attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_( + NSError? error, + int recoveryOptionIndex, + NSObject delegate, + ffi.Pointer didRecoverSelector, + ffi.Pointer contextInfo) { + _lib._objc_msgSend_395( + _id, + _lib._sel_attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_1, + error?._id ?? ffi.nullptr, + recoveryOptionIndex, + delegate._id, + didRecoverSelector, + contextInfo); } - /// Creates a SentryId with the given UUID. - SentryId initWithUUID_(NSUUID? uuid) { - final _ret = _lib._objc_msgSend_612( - _id, _lib._sel_initWithUUID_1, uuid?._id ?? ffi.nullptr); - return SentryId._(_ret, _lib, retain: true, release: true); - } - - /// Creates a @c SentryId from a 32 character hexadecimal string without dashes such as - /// "12c2d058d58442709aa2eca08bf20986" or a 36 character hexadecimal string such as such as - /// "12c2d058-d584-4270-9aa2-eca08bf20986". - /// @return SentryId.empty for invalid strings. - SentryId initWithUUIDString_(NSString? string) { - final _ret = _lib._objc_msgSend_30( - _id, _lib._sel_initWithUUIDString_1, string?._id ?? ffi.nullptr); - return SentryId._(_ret, _lib, retain: true, release: true); - } - - /// Returns a 32 lowercase character hexadecimal string description of the @c SentryId, such as - /// "12c2d058d58442709aa2eca08bf20986". - NSString? get sentryIdString { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_sentryIdString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - /// A @c SentryId with an empty UUID "00000000000000000000000000000000". - static SentryId? getEmpty(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_613(_lib._class_SentryId1, _lib._sel_empty1); - return _ret.address == 0 - ? null - : SentryId._(_ret, _lib, retain: true, release: true); - } - - static SentryId new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_SentryId1, _lib._sel_new1); - return SentryId._(_ret, _lib, retain: false, release: true); - } - - static SentryId allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_SentryId1, _lib._sel_allocWithZone_1, zone); - return SentryId._(_ret, _lib, retain: false, release: true); - } - - static SentryId alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_SentryId1, _lib._sel_alloc1); - return SentryId._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SentryCocoa _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject anArgument) { - _lib._objc_msgSend_14( - _lib._class_SentryId1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument._id); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_SentryId1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_SentryId1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_SentryId1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SentryCocoa _lib, NSString? key) { - final _ret = _lib._objc_msgSend_58( - _lib._class_SentryId1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key?._id ?? ffi.nullptr); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SentryCocoa _lib, NSString? key) { - return _lib._objc_msgSend_59( - _lib._class_SentryId1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key?._id ?? ffi.nullptr); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { - _lib._objc_msgSend_82( - _lib._class_SentryId1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys?._id ?? ffi.nullptr, - dependentKey?._id ?? ffi.nullptr); - } - - static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_SentryId1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_SentryId1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -class NSObject extends _ObjCWrapper { - NSObject._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSObject] that points to the same underlying object as [other]. - static NSObject castFrom(T other) { - return NSObject._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSObject] that wraps the given raw object pointer. - static NSObject castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSObject._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSObject]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSObject1); - } - - static void load(SentryCocoa _lib) { - _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_load1); - } - - static void initialize(SentryCocoa _lib) { - _lib._objc_msgSend_1(_lib._class_NSObject1, _lib._sel_initialize1); - } - - NSObject init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_new1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSObject1, _lib._sel_allocWithZone_1, zone); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_alloc1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - void dealloc() { - _lib._objc_msgSend_1(_id, _lib._sel_dealloc1); - } - - void finalize() { - _lib._objc_msgSend_1(_id, _lib._sel_finalize1); - } - - NSObject copy() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_copy1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - NSObject mutableCopy() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_mutableCopy1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject copyWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSObject1, _lib._sel_copyWithZone_1, zone); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static NSObject mutableCopyWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSObject1, _lib._sel_mutableCopyWithZone_1, zone); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static bool instancesRespondToSelector_( - SentryCocoa _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_4(_lib._class_NSObject1, - _lib._sel_instancesRespondToSelector_1, aSelector); - } - - static bool conformsToProtocol_(SentryCocoa _lib, Protocol? protocol) { - return _lib._objc_msgSend_5(_lib._class_NSObject1, - _lib._sel_conformsToProtocol_1, protocol?._id ?? ffi.nullptr); - } - - ffi.Pointer> methodForSelector_( - ffi.Pointer aSelector) { - return _lib._objc_msgSend_6(_id, _lib._sel_methodForSelector_1, aSelector); - } - - static ffi.Pointer> - instanceMethodForSelector_( - SentryCocoa _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_6(_lib._class_NSObject1, - _lib._sel_instanceMethodForSelector_1, aSelector); - } - - void doesNotRecognizeSelector_(ffi.Pointer aSelector) { - _lib._objc_msgSend_7(_id, _lib._sel_doesNotRecognizeSelector_1, aSelector); - } - - NSObject forwardingTargetForSelector_(ffi.Pointer aSelector) { - final _ret = _lib._objc_msgSend_8( - _id, _lib._sel_forwardingTargetForSelector_1, aSelector); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void forwardInvocation_(NSInvocation? anInvocation) { - _lib._objc_msgSend_392( - _id, _lib._sel_forwardInvocation_1, anInvocation?._id ?? ffi.nullptr); - } - - NSMethodSignature methodSignatureForSelector_( - ffi.Pointer aSelector) { - final _ret = _lib._objc_msgSend_393( - _id, _lib._sel_methodSignatureForSelector_1, aSelector); - return NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - static NSMethodSignature instanceMethodSignatureForSelector_( - SentryCocoa _lib, ffi.Pointer aSelector) { - final _ret = _lib._objc_msgSend_393(_lib._class_NSObject1, - _lib._sel_instanceMethodSignatureForSelector_1, aSelector); - return NSMethodSignature._(_ret, _lib, retain: true, release: true); - } - - bool allowsWeakReference() { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsWeakReference1); - } - - bool retainWeakReference() { - return _lib._objc_msgSend_12(_id, _lib._sel_retainWeakReference1); - } - - static bool isSubclassOfClass_(SentryCocoa _lib, NSObject aClass) { - return _lib._objc_msgSend_0( - _lib._class_NSObject1, _lib._sel_isSubclassOfClass_1, aClass._id); - } - - static bool resolveClassMethod_(SentryCocoa _lib, ffi.Pointer sel) { - return _lib._objc_msgSend_4( - _lib._class_NSObject1, _lib._sel_resolveClassMethod_1, sel); - } - - static bool resolveInstanceMethod_( - SentryCocoa _lib, ffi.Pointer sel) { - return _lib._objc_msgSend_4( - _lib._class_NSObject1, _lib._sel_resolveInstanceMethod_1, sel); - } - - static int hash(SentryCocoa _lib) { - return _lib._objc_msgSend_10(_lib._class_NSObject1, _lib._sel_hash1); - } - - static NSObject superclass(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_superclass1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject class1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSObject1, _lib._sel_class1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSString description(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_20(_lib._class_NSObject1, _lib._sel_description1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static NSString debugDescription(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_20( - _lib._class_NSObject1, _lib._sel_debugDescription1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - static int version(SentryCocoa _lib) { - return _lib._objc_msgSend_78(_lib._class_NSObject1, _lib._sel_version1); - } - - static void setVersion_(SentryCocoa _lib, int aVersion) { - _lib._objc_msgSend_394( - _lib._class_NSObject1, _lib._sel_setVersion_1, aVersion); - } - - NSObject get classForCoder { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_classForCoder1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject replacementObjectForCoder_(NSCoder? coder) { - final _ret = _lib._objc_msgSend_42( - _id, _lib._sel_replacementObjectForCoder_1, coder?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject awakeAfterUsingCoder_(NSCoder? coder) { - final _ret = _lib._objc_msgSend_42( - _id, _lib._sel_awakeAfterUsingCoder_1, coder?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static void poseAsClass_(SentryCocoa _lib, NSObject aClass) { - _lib._objc_msgSend_15( - _lib._class_NSObject1, _lib._sel_poseAsClass_1, aClass._id); - } - - NSObject get autoContentAccessingProxy { - final _ret = - _lib._objc_msgSend_2(_id, _lib._sel_autoContentAccessingProxy1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - void - attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_( - NSError? error, - int recoveryOptionIndex, - NSObject delegate, - ffi.Pointer didRecoverSelector, - ffi.Pointer contextInfo) { - _lib._objc_msgSend_395( - _id, - _lib._sel_attemptRecoveryFromError_optionIndex_delegate_didRecoverSelector_contextInfo_1, - error?._id ?? ffi.nullptr, - recoveryOptionIndex, - delegate._id, - didRecoverSelector, - contextInfo); - } - - bool attemptRecoveryFromError_optionIndex_( - NSError? error, int recoveryOptionIndex) { - return _lib._objc_msgSend_396( - _id, - _lib._sel_attemptRecoveryFromError_optionIndex_1, - error?._id ?? ffi.nullptr, - recoveryOptionIndex); + bool attemptRecoveryFromError_optionIndex_( + NSError? error, int recoveryOptionIndex) { + return _lib._objc_msgSend_396( + _id, + _lib._sel_attemptRecoveryFromError_optionIndex_1, + error?._id ?? ffi.nullptr, + recoveryOptionIndex); } void performSelector_withObject_afterDelay_inModes_( @@ -31701,6 +31286,12 @@ class NSObject extends _ObjCWrapper { } } +class ObjCSel extends ffi.Opaque {} + +class ObjCObject extends ffi.Opaque {} + +typedef instancetype = ffi.Pointer; + class _NSZone extends ffi.Opaque {} class Protocol extends _ObjCWrapper { @@ -50082,81 +49673,254 @@ class NSScriptCommand extends NSObject { } } -class NSUUID extends NSObject { - NSUUID._(ffi.Pointer id, SentryCocoa lib, +class NSItemProvider extends NSObject { + NSItemProvider._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSUUID] that points to the same underlying object as [other]. - static NSUUID castFrom(T other) { - return NSUUID._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSItemProvider] that points to the same underlying object as [other]. + static NSItemProvider castFrom(T other) { + return NSItemProvider._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSUUID] that wraps the given raw object pointer. - static NSUUID castFromPointer(SentryCocoa lib, ffi.Pointer other, + /// Returns a [NSItemProvider] that wraps the given raw object pointer. + static NSItemProvider castFromPointer( + SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSUUID._(other, lib, retain: retain, release: release); + return NSItemProvider._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSUUID]. + /// Returns whether [obj] is an instance of [NSItemProvider]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSUUID1); - } - - static NSUUID UUID(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSUUID1, _lib._sel_UUID1); - return NSUUID._(_ret, _lib, retain: true, release: true); + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSItemProvider1); } @override - NSUUID init() { + NSItemProvider init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSUUID._(_ret, _lib, retain: true, release: true); + return NSItemProvider._(_ret, _lib, retain: true, release: true); } - NSUUID initWithUUIDString_(NSString? string) { - final _ret = _lib._objc_msgSend_30( - _id, _lib._sel_initWithUUIDString_1, string?._id ?? ffi.nullptr); - return NSUUID._(_ret, _lib, retain: true, release: true); + void registerDataRepresentationForTypeIdentifier_visibility_loadHandler_( + NSString? typeIdentifier, + int visibility, + ObjCBlock_NSProgress_ffiVoidNSDataNSError loadHandler) { + _lib._objc_msgSend_623( + _id, + _lib._sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + visibility, + loadHandler._id); } - NSUUID initWithUUIDBytes_(ffi.Pointer bytes) { + void + registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_( + NSString? typeIdentifier, + int fileOptions, + int visibility, + ObjCBlock_NSProgress_ffiVoidNSURLboolNSError loadHandler) { + _lib._objc_msgSend_624( + _id, + _lib._sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + fileOptions, + visibility, + loadHandler._id); + } + + NSArray? get registeredTypeIdentifiers { final _ret = - _lib._objc_msgSend_609(_id, _lib._sel_initWithUUIDBytes_1, bytes); - return NSUUID._(_ret, _lib, retain: true, release: true); + _lib._objc_msgSend_79(_id, _lib._sel_registeredTypeIdentifiers1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - void getUUIDBytes_(ffi.Pointer uuid) { - _lib._objc_msgSend_610(_id, _lib._sel_getUUIDBytes_1, uuid); + NSArray registeredTypeIdentifiersWithFileOptions_(int fileOptions) { + final _ret = _lib._objc_msgSend_625( + _id, _lib._sel_registeredTypeIdentifiersWithFileOptions_1, fileOptions); + return NSArray._(_ret, _lib, retain: true, release: true); } - int compare_(NSUUID? otherUUID) { - return _lib._objc_msgSend_611( - _id, _lib._sel_compare_1, otherUUID?._id ?? ffi.nullptr); + bool hasItemConformingToTypeIdentifier_(NSString? typeIdentifier) { + return _lib._objc_msgSend_59( + _id, + _lib._sel_hasItemConformingToTypeIdentifier_1, + typeIdentifier?._id ?? ffi.nullptr); } - NSString? get UUIDString { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_UUIDString1); + bool hasRepresentationConformingToTypeIdentifier_fileOptions_( + NSString? typeIdentifier, int fileOptions) { + return _lib._objc_msgSend_626( + _id, + _lib._sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1, + typeIdentifier?._id ?? ffi.nullptr, + fileOptions); + } + + NSProgress loadDataRepresentationForTypeIdentifier_completionHandler_( + NSString? typeIdentifier, + ObjCBlock_ffiVoid_NSData_NSError completionHandler) { + final _ret = _lib._objc_msgSend_627( + _id, + _lib._sel_loadDataRepresentationForTypeIdentifier_completionHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + completionHandler._id); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSProgress loadFileRepresentationForTypeIdentifier_completionHandler_( + NSString? typeIdentifier, + ObjCBlock_ffiVoid_NSURL_NSError completionHandler) { + final _ret = _lib._objc_msgSend_628( + _id, + _lib._sel_loadFileRepresentationForTypeIdentifier_completionHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + completionHandler._id); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSProgress loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_( + NSString? typeIdentifier, + ObjCBlock_ffiVoid_NSURL_bool_NSError completionHandler) { + final _ret = _lib._objc_msgSend_629( + _id, + _lib._sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + completionHandler._id); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSString? get suggestedName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_suggestedName1); return _ret.address == 0 ? null : NSString._(_ret, _lib, retain: true, release: true); } - static NSUUID new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSUUID1, _lib._sel_new1); - return NSUUID._(_ret, _lib, retain: false, release: true); + set suggestedName(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setSuggestedName_1, value?._id ?? ffi.nullptr); } - static NSUUID allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + NSItemProvider initWithObject_(NSObject? object) { + final _ret = _lib._objc_msgSend_16( + _id, _lib._sel_initWithObject_1, object?._id ?? ffi.nullptr); + return NSItemProvider._(_ret, _lib, retain: true, release: true); + } + + void registerObject_visibility_(NSObject? object, int visibility) { + _lib._objc_msgSend_630(_id, _lib._sel_registerObject_visibility_1, + object?._id ?? ffi.nullptr, visibility); + } + + void registerObjectOfClass_visibility_loadHandler_( + NSObject? aClass, + int visibility, + ObjCBlock_NSProgress_ffiVoidObjCObjectNSError loadHandler) { + _lib._objc_msgSend_631( + _id, + _lib._sel_registerObjectOfClass_visibility_loadHandler_1, + aClass?._id ?? ffi.nullptr, + visibility, + loadHandler._id); + } + + bool canLoadObjectOfClass_(NSObject? aClass) { + return _lib._objc_msgSend_0( + _id, _lib._sel_canLoadObjectOfClass_1, aClass?._id ?? ffi.nullptr); + } + + NSProgress loadObjectOfClass_completionHandler_(NSObject? aClass, + ObjCBlock_ffiVoid_ObjCObject_NSError completionHandler) { + final _ret = _lib._objc_msgSend_632( + _id, + _lib._sel_loadObjectOfClass_completionHandler_1, + aClass?._id ?? ffi.nullptr, + completionHandler._id); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSItemProvider initWithItem_typeIdentifier_( + NSObject? item, NSString? typeIdentifier) { + final _ret = _lib._objc_msgSend_287( + _id, + _lib._sel_initWithItem_typeIdentifier_1, + item?._id ?? ffi.nullptr, + typeIdentifier?._id ?? ffi.nullptr); + return NSItemProvider._(_ret, _lib, retain: true, release: true); + } + + NSItemProvider initWithContentsOfURL_(NSURL? fileURL) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithContentsOfURL_1, fileURL?._id ?? ffi.nullptr); + return NSItemProvider._(_ret, _lib, retain: true, release: true); + } + + void registerItemForTypeIdentifier_loadHandler_( + NSString? typeIdentifier, + ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary + loadHandler) { + _lib._objc_msgSend_633( + _id, + _lib._sel_registerItemForTypeIdentifier_loadHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + loadHandler._id); + } + + void loadItemForTypeIdentifier_options_completionHandler_( + NSString? typeIdentifier, + NSDictionary? options, + ObjCBlock_ffiVoid_ObjCObject_NSError completionHandler) { + _lib._objc_msgSend_634( + _id, + _lib._sel_loadItemForTypeIdentifier_options_completionHandler_1, + typeIdentifier?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr, + completionHandler._id); + } + + ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary + get previewImageHandler { + final _ret = _lib._objc_msgSend_635(_id, _lib._sel_previewImageHandler1); + return ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary._( + _ret, _lib); + } + + set previewImageHandler( + ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary + value) { + return _lib._objc_msgSend_636( + _id, _lib._sel_setPreviewImageHandler_1, value._id); + } + + void loadPreviewImageWithOptions_completionHandler_(NSDictionary? options, + ObjCBlock_ffiVoid_ObjCObject_NSError completionHandler) { + _lib._objc_msgSend_637( + _id, + _lib._sel_loadPreviewImageWithOptions_completionHandler_1, + options?._id ?? ffi.nullptr, + completionHandler._id); + } + + static NSItemProvider new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSItemProvider1, _lib._sel_new1); + return NSItemProvider._(_ret, _lib, retain: false, release: true); + } + + static NSItemProvider allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSUUID1, _lib._sel_allocWithZone_1, zone); - return NSUUID._(_ret, _lib, retain: false, release: true); + _lib._class_NSItemProvider1, _lib._sel_allocWithZone_1, zone); + return NSItemProvider._(_ret, _lib, retain: false, release: true); } - static NSUUID alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSUUID1, _lib._sel_alloc1); - return NSUUID._(_ret, _lib, retain: false, release: true); + static NSItemProvider alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSItemProvider1, _lib._sel_alloc1); + return NSItemProvider._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -50165,7 +49929,7 @@ class NSUUID extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSUUID1, + _lib._class_NSItemProvider1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -50174,24 +49938,24 @@ class NSUUID extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSUUID1, + _lib._objc_msgSend_15(_lib._class_NSItemProvider1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSUUID1, _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12(_lib._class_NSItemProvider1, + _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSUUID1, _lib._sel_useStoredAccessor1); + _lib._class_NSItemProvider1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSUUID1, + _lib._class_NSItemProvider1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -50200,7 +49964,7 @@ class NSUUID extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSUUID1, + _lib._class_NSItemProvider1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -50208,7 +49972,7 @@ class NSUUID extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSUUID1, + _lib._class_NSItemProvider1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -50216,1493 +49980,643 @@ class NSUUID extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSUUID1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSItemProvider1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSUUID1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSItemProvider1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class SentryEnvelopeItem extends _ObjCWrapper { - SentryEnvelopeItem._(ffi.Pointer id, SentryCocoa lib, +abstract class NSItemProviderRepresentationVisibility { + static const int NSItemProviderRepresentationVisibilityAll = 0; + static const int NSItemProviderRepresentationVisibilityTeam = 1; + static const int NSItemProviderRepresentationVisibilityGroup = 2; + static const int NSItemProviderRepresentationVisibilityOwnProcess = 3; +} + +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> arg0)>>() + .asFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> arg0)>()(arg0); +} + +final _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry = + {}; +int _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_registerClosure(Function fn) { + final id = ++_ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistryIndex; + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +ffi.Pointer + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) { + return (_ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry[ + block.ref.target.address] + as ffi.Pointer Function(ffi.Pointer<_ObjCBlock>))(arg0); +} + +class ObjCBlock_NSProgress_ffiVoidNSDataNSError extends _ObjCBlockBase { + ObjCBlock_NSProgress_ffiVoidNSDataNSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>( + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunction(SentryCocoa lib, + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Pointer Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>( + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline) + .cast(), + _ObjCBlock_NSProgress_ffiVoidNSDataNSError_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + ffi.Pointer call(ffi.Pointer<_ObjCBlock> arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>>() + .asFunction< + ffi.Pointer Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> arg0)>()(_id, arg0); + } +} + +class NSProgress extends NSObject { + NSProgress._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [SentryEnvelopeItem] that points to the same underlying object as [other]. - static SentryEnvelopeItem castFrom(T other) { - return SentryEnvelopeItem._(other._id, other._lib, - retain: true, release: true); + /// Returns a [NSProgress] that points to the same underlying object as [other]. + static NSProgress castFrom(T other) { + return NSProgress._(other._id, other._lib, retain: true, release: true); } - /// Returns a [SentryEnvelopeItem] that wraps the given raw object pointer. - static SentryEnvelopeItem castFromPointer( + /// Returns a [NSProgress] that wraps the given raw object pointer. + static NSProgress castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return SentryEnvelopeItem._(other, lib, retain: retain, release: release); + return NSProgress._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [SentryEnvelopeItem]. + /// Returns whether [obj] is an instance of [NSProgress]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_SentryEnvelopeItem1); + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProgress1); } - SentryEnvelopeItem initWithEvent_(SentryEvent? event) { - final _ret = _lib._objc_msgSend_614( - _id, _lib._sel_initWithEvent_1, event?._id ?? ffi.nullptr); - return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); + static NSProgress currentProgress(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_609( + _lib._class_NSProgress1, _lib._sel_currentProgress1); + return NSProgress._(_ret, _lib, retain: true, release: true); } - SentryEnvelopeItem initWithSession_(SentrySession? session) { - final _ret = _lib._objc_msgSend_615( - _id, _lib._sel_initWithSession_1, session?._id ?? ffi.nullptr); - return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); + static NSProgress progressWithTotalUnitCount_( + SentryCocoa _lib, int unitCount) { + final _ret = _lib._objc_msgSend_610(_lib._class_NSProgress1, + _lib._sel_progressWithTotalUnitCount_1, unitCount); + return NSProgress._(_ret, _lib, retain: true, release: true); } - SentryEnvelopeItem initWithUserFeedback_(SentryUserFeedback? userFeedback) { - final _ret = _lib._objc_msgSend_616(_id, _lib._sel_initWithUserFeedback_1, - userFeedback?._id ?? ffi.nullptr); - return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); + static NSProgress discreteProgressWithTotalUnitCount_( + SentryCocoa _lib, int unitCount) { + final _ret = _lib._objc_msgSend_610(_lib._class_NSProgress1, + _lib._sel_discreteProgressWithTotalUnitCount_1, unitCount); + return NSProgress._(_ret, _lib, retain: true, release: true); } - SentryEnvelopeItem initWithAttachment_maxAttachmentSize_( - SentryAttachment? attachment, NSObject maxAttachmentSize) { - final _ret = _lib._objc_msgSend_617( + static NSProgress progressWithTotalUnitCount_parent_pendingUnitCount_( + SentryCocoa _lib, + int unitCount, + NSProgress? parent, + int portionOfParentTotalUnitCount) { + final _ret = _lib._objc_msgSend_611( + _lib._class_NSProgress1, + _lib._sel_progressWithTotalUnitCount_parent_pendingUnitCount_1, + unitCount, + parent?._id ?? ffi.nullptr, + portionOfParentTotalUnitCount); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSProgress initWithParent_userInfo_( + NSProgress? parentProgressOrNil, NSObject? userInfoOrNil) { + final _ret = _lib._objc_msgSend_612( _id, - _lib._sel_initWithAttachment_maxAttachmentSize_1, - attachment?._id ?? ffi.nullptr, - maxAttachmentSize._id); - return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); + _lib._sel_initWithParent_userInfo_1, + parentProgressOrNil?._id ?? ffi.nullptr, + userInfoOrNil?._id ?? ffi.nullptr); + return NSProgress._(_ret, _lib, retain: true, release: true); } - SentryEnvelopeItem initWithHeader_data_( - SentryEnvelopeItemHeader? header, NSObject data) { - final _ret = _lib._objc_msgSend_618(_id, _lib._sel_initWithHeader_data_1, - header?._id ?? ffi.nullptr, data._id); - return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); + void becomeCurrentWithPendingUnitCount_(int unitCount) { + _lib._objc_msgSend_613( + _id, _lib._sel_becomeCurrentWithPendingUnitCount_1, unitCount); } - /// The envelope item header. - SentryEnvelopeItemHeader? get header { - final _ret = _lib._objc_msgSend_619(_id, _lib._sel_header1); - return _ret.address == 0 - ? null - : SentryEnvelopeItemHeader._(_ret, _lib, retain: true, release: true); + void performAsCurrentWithPendingUnitCount_usingBlock_( + int unitCount, ObjCBlock_ffiVoid work) { + _lib._objc_msgSend_614( + _id, + _lib._sel_performAsCurrentWithPendingUnitCount_usingBlock_1, + unitCount, + work._id); } - /// The envelope payload. - ffi.Pointer get data { - return _lib._objc_msgSend_620(_id, _lib._sel_data1); + void resignCurrent() { + _lib._objc_msgSend_1(_id, _lib._sel_resignCurrent1); } -} -class SentryEvent extends _ObjCWrapper { - SentryEvent._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + void addChild_withPendingUnitCount_(NSProgress? child, int inUnitCount) { + _lib._objc_msgSend_615(_id, _lib._sel_addChild_withPendingUnitCount_1, + child?._id ?? ffi.nullptr, inUnitCount); + } - /// Returns a [SentryEvent] that points to the same underlying object as [other]. - static SentryEvent castFrom(T other) { - return SentryEvent._(other._id, other._lib, retain: true, release: true); + int get totalUnitCount { + return _lib._objc_msgSend_616(_id, _lib._sel_totalUnitCount1); } - /// Returns a [SentryEvent] that wraps the given raw object pointer. - static SentryEvent castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryEvent._(other, lib, retain: retain, release: release); + set totalUnitCount(int value) { + return _lib._objc_msgSend_617(_id, _lib._sel_setTotalUnitCount_1, value); } - /// Returns whether [obj] is an instance of [SentryEvent]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryEvent1); + int get completedUnitCount { + return _lib._objc_msgSend_616(_id, _lib._sel_completedUnitCount1); } -} -class SentrySession extends _ObjCWrapper { - SentrySession._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set completedUnitCount(int value) { + return _lib._objc_msgSend_617( + _id, _lib._sel_setCompletedUnitCount_1, value); + } - /// Returns a [SentrySession] that points to the same underlying object as [other]. - static SentrySession castFrom(T other) { - return SentrySession._(other._id, other._lib, retain: true, release: true); + NSString? get localizedDescription { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localizedDescription1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - /// Returns a [SentrySession] that wraps the given raw object pointer. - static SentrySession castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentrySession._(other, lib, retain: retain, release: release); + set localizedDescription(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setLocalizedDescription_1, value?._id ?? ffi.nullptr); } - /// Returns whether [obj] is an instance of [SentrySession]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentrySession1); + NSString? get localizedAdditionalDescription { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_localizedAdditionalDescription1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } -} -class SentryUserFeedback extends _ObjCWrapper { - SentryUserFeedback._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set localizedAdditionalDescription(NSString? value) { + return _lib._objc_msgSend_509( + _id, + _lib._sel_setLocalizedAdditionalDescription_1, + value?._id ?? ffi.nullptr); + } - /// Returns a [SentryUserFeedback] that points to the same underlying object as [other]. - static SentryUserFeedback castFrom(T other) { - return SentryUserFeedback._(other._id, other._lib, - retain: true, release: true); + bool get cancellable { + return _lib._objc_msgSend_12(_id, _lib._sel_isCancellable1); } - /// Returns a [SentryUserFeedback] that wraps the given raw object pointer. - static SentryUserFeedback castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryUserFeedback._(other, lib, retain: retain, release: release); + set cancellable(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setCancellable_1, value); } - /// Returns whether [obj] is an instance of [SentryUserFeedback]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_SentryUserFeedback1); + bool get pausable { + return _lib._objc_msgSend_12(_id, _lib._sel_isPausable1); } -} -class SentryAttachment extends _ObjCWrapper { - SentryAttachment._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set pausable(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setPausable_1, value); + } - /// Returns a [SentryAttachment] that points to the same underlying object as [other]. - static SentryAttachment castFrom(T other) { - return SentryAttachment._(other._id, other._lib, - retain: true, release: true); + bool get cancelled { + return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); } - /// Returns a [SentryAttachment] that wraps the given raw object pointer. - static SentryAttachment castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryAttachment._(other, lib, retain: retain, release: release); + bool get paused { + return _lib._objc_msgSend_12(_id, _lib._sel_isPaused1); } - /// Returns whether [obj] is an instance of [SentryAttachment]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_SentryAttachment1); + ObjCBlock_ffiVoid get cancellationHandler { + final _ret = _lib._objc_msgSend_618(_id, _lib._sel_cancellationHandler1); + return ObjCBlock_ffiVoid._(_ret, _lib); } -} -class SentryEnvelopeItemHeader extends _ObjCWrapper { - SentryEnvelopeItemHeader._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set cancellationHandler(ObjCBlock_ffiVoid value) { + return _lib._objc_msgSend_619( + _id, _lib._sel_setCancellationHandler_1, value._id); + } - /// Returns a [SentryEnvelopeItemHeader] that points to the same underlying object as [other]. - static SentryEnvelopeItemHeader castFrom(T other) { - return SentryEnvelopeItemHeader._(other._id, other._lib, - retain: true, release: true); + ObjCBlock_ffiVoid get pausingHandler { + final _ret = _lib._objc_msgSend_618(_id, _lib._sel_pausingHandler1); + return ObjCBlock_ffiVoid._(_ret, _lib); } - /// Returns a [SentryEnvelopeItemHeader] that wraps the given raw object pointer. - static SentryEnvelopeItemHeader castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryEnvelopeItemHeader._(other, lib, - retain: retain, release: release); + set pausingHandler(ObjCBlock_ffiVoid value) { + return _lib._objc_msgSend_619( + _id, _lib._sel_setPausingHandler_1, value._id); } - /// Returns whether [obj] is an instance of [SentryEnvelopeItemHeader]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_SentryEnvelopeItemHeader1); + ObjCBlock_ffiVoid get resumingHandler { + final _ret = _lib._objc_msgSend_618(_id, _lib._sel_resumingHandler1); + return ObjCBlock_ffiVoid._(_ret, _lib); } -} -class SentryEnvelopeHeader extends _ObjCWrapper { - SentryEnvelopeHeader._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set resumingHandler(ObjCBlock_ffiVoid value) { + return _lib._objc_msgSend_619( + _id, _lib._sel_setResumingHandler_1, value._id); + } - /// Returns a [SentryEnvelopeHeader] that points to the same underlying object as [other]. - static SentryEnvelopeHeader castFrom(T other) { - return SentryEnvelopeHeader._(other._id, other._lib, - retain: true, release: true); + void setUserInfoObject_forKey_(NSObject objectOrNil, NSString key) { + _lib._objc_msgSend_126( + _id, _lib._sel_setUserInfoObject_forKey_1, objectOrNil._id, key._id); } - /// Returns a [SentryEnvelopeHeader] that wraps the given raw object pointer. - static SentryEnvelopeHeader castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryEnvelopeHeader._(other, lib, retain: retain, release: release); + bool get indeterminate { + return _lib._objc_msgSend_12(_id, _lib._sel_isIndeterminate1); } - /// Returns whether [obj] is an instance of [SentryEnvelopeHeader]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_SentryEnvelopeHeader1); + double get fractionCompleted { + return _lib._objc_msgSend_155(_id, _lib._sel_fractionCompleted1); } - /// Initializes an @c SentryEnvelopeHeader object with the specified eventId. - /// @note Sets the @c sdkInfo from @c SentryMeta. - /// @param eventId The identifier of the event. Can be nil if no event in the envelope or attachment - /// related to event. - SentryEnvelopeHeader initWithId_(SentryId? eventId) { - final _ret = _lib._objc_msgSend_622( - _id, _lib._sel_initWithId_1, eventId?._id ?? ffi.nullptr); - return SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); + bool get finished { + return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); } - /// Initializes a @c SentryEnvelopeHeader object with the specified @c eventId and @c traceContext. - /// @param eventId The identifier of the event. Can be @c nil if no event in the envelope or - /// attachment related to event. - /// @param traceContext Current trace state. - SentryEnvelopeHeader initWithId_traceContext_( - SentryId? eventId, SentryTraceContext? traceContext) { - final _ret = _lib._objc_msgSend_623( - _id, - _lib._sel_initWithId_traceContext_1, - eventId?._id ?? ffi.nullptr, - traceContext?._id ?? ffi.nullptr); - return SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); + void cancel() { + _lib._objc_msgSend_1(_id, _lib._sel_cancel1); } - /// Initializes a @c SentryEnvelopeHeader object with the specified @c eventId, @c skdInfo and - /// @c traceContext. It is recommended to use @c initWithId:traceContext: because it sets the - /// @c sdkInfo for you. - /// @param eventId The identifier of the event. Can be @c nil if no event in the envelope or - /// attachment related to event. - /// @param sdkInfo Describes the Sentry SDK. Can be @c nil for backwards compatibility. New - /// instances should always provide a version. - /// @param traceContext Current trace state. - SentryEnvelopeHeader initWithId_sdkInfo_traceContext_(SentryId? eventId, - SentrySdkInfo? sdkInfo, SentryTraceContext? traceContext) { - final _ret = _lib._objc_msgSend_624( - _id, - _lib._sel_initWithId_sdkInfo_traceContext_1, - eventId?._id ?? ffi.nullptr, - sdkInfo?._id ?? ffi.nullptr, - traceContext?._id ?? ffi.nullptr); - return SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); + void pause() { + _lib._objc_msgSend_1(_id, _lib._sel_pause1); } - /// The event identifier, if available. - /// An event id exist if the envelope contains an event of items within it are related. i.e - /// Attachments - SentryId? get eventId { - final _ret = _lib._objc_msgSend_613(_id, _lib._sel_eventId1); + void resume() { + _lib._objc_msgSend_1(_id, _lib._sel_resume1); + } + + NSObject? get userInfo { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_userInfo1); return _ret.address == 0 ? null - : SentryId._(_ret, _lib, retain: true, release: true); + : NSObject._(_ret, _lib, retain: true, release: true); } - SentrySdkInfo? get sdkInfo { - final _ret = _lib._objc_msgSend_625(_id, _lib._sel_sdkInfo1); + NSString get kind { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_kind1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + set kind(NSString value) { + return _lib._objc_msgSend_509(_id, _lib._sel_setKind_1, value._id); + } + + NSNumber? get estimatedTimeRemaining { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_estimatedTimeRemaining1); return _ret.address == 0 ? null - : SentrySdkInfo._(_ret, _lib, retain: true, release: true); + : NSNumber._(_ret, _lib, retain: true, release: true); } - SentryTraceContext? get traceContext { - final _ret = _lib._objc_msgSend_626(_id, _lib._sel_traceContext1); + set estimatedTimeRemaining(NSNumber? value) { + return _lib._objc_msgSend_620( + _id, _lib._sel_setEstimatedTimeRemaining_1, value?._id ?? ffi.nullptr); + } + + NSNumber? get throughput { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_throughput1); return _ret.address == 0 ? null - : SentryTraceContext._(_ret, _lib, retain: true, release: true); + : NSNumber._(_ret, _lib, retain: true, release: true); } - /// The timestamp when the event was sent from the SDK as string in RFC 3339 format. Used - /// for clock drift correction of the event timestamp. The time zone must be UTC. - /// - /// The timestamp should be generated as close as possible to the transmision of the event, - /// so that the delay between sending the envelope and receiving it on the server-side is - /// minimized. - ffi.Pointer get sentAt { - return _lib._objc_msgSend_620(_id, _lib._sel_sentAt1); + set throughput(NSNumber? value) { + return _lib._objc_msgSend_620( + _id, _lib._sel_setThroughput_1, value?._id ?? ffi.nullptr); } - /// The timestamp when the event was sent from the SDK as string in RFC 3339 format. Used - /// for clock drift correction of the event timestamp. The time zone must be UTC. - /// - /// The timestamp should be generated as close as possible to the transmision of the event, - /// so that the delay between sending the envelope and receiving it on the server-side is - /// minimized. - set sentAt(ffi.Pointer value) { - return _lib._objc_msgSend_627(_id, _lib._sel_setSentAt_1, value); + NSString get fileOperationKind { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_fileOperationKind1); + return NSString._(_ret, _lib, retain: true, release: true); } -} -class SentryTraceContext extends _ObjCWrapper { - SentryTraceContext._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set fileOperationKind(NSString value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setFileOperationKind_1, value._id); + } - /// Returns a [SentryTraceContext] that points to the same underlying object as [other]. - static SentryTraceContext castFrom(T other) { - return SentryTraceContext._(other._id, other._lib, - retain: true, release: true); + NSURL? get fileURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_fileURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); } - /// Returns a [SentryTraceContext] that wraps the given raw object pointer. - static SentryTraceContext castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryTraceContext._(other, lib, retain: retain, release: release); + set fileURL(NSURL? value) { + return _lib._objc_msgSend_621( + _id, _lib._sel_setFileURL_1, value?._id ?? ffi.nullptr); } - /// Returns whether [obj] is an instance of [SentryTraceContext]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_SentryTraceContext1); + NSNumber? get fileTotalCount { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_fileTotalCount1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); } -} -class SentrySdkInfo extends _ObjCWrapper { - SentrySdkInfo._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set fileTotalCount(NSNumber? value) { + return _lib._objc_msgSend_620( + _id, _lib._sel_setFileTotalCount_1, value?._id ?? ffi.nullptr); + } - /// Returns a [SentrySdkInfo] that points to the same underlying object as [other]. - static SentrySdkInfo castFrom(T other) { - return SentrySdkInfo._(other._id, other._lib, retain: true, release: true); + NSNumber? get fileCompletedCount { + final _ret = _lib._objc_msgSend_198(_id, _lib._sel_fileCompletedCount1); + return _ret.address == 0 + ? null + : NSNumber._(_ret, _lib, retain: true, release: true); } - /// Returns a [SentrySdkInfo] that wraps the given raw object pointer. - static SentrySdkInfo castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentrySdkInfo._(other, lib, retain: retain, release: release); + set fileCompletedCount(NSNumber? value) { + return _lib._objc_msgSend_620( + _id, _lib._sel_setFileCompletedCount_1, value?._id ?? ffi.nullptr); } - /// Returns whether [obj] is an instance of [SentrySdkInfo]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentrySdkInfo1); + void publish() { + _lib._objc_msgSend_1(_id, _lib._sel_publish1); + } + + void unpublish() { + _lib._objc_msgSend_1(_id, _lib._sel_unpublish1); + } + + static NSObject addSubscriberForFileURL_withPublishingHandler_( + SentryCocoa _lib, + NSURL? url, + ObjCBlock_ffiVoid_NSProgress publishingHandler) { + final _ret = _lib._objc_msgSend_622( + _lib._class_NSProgress1, + _lib._sel_addSubscriberForFileURL_withPublishingHandler_1, + url?._id ?? ffi.nullptr, + publishingHandler._id); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static void removeSubscriber_(SentryCocoa _lib, NSObject subscriber) { + _lib._objc_msgSend_15( + _lib._class_NSProgress1, _lib._sel_removeSubscriber_1, subscriber._id); + } + + bool get old { + return _lib._objc_msgSend_12(_id, _lib._sel_isOld1); + } + + @override + NSProgress init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSProgress._(_ret, _lib, retain: true, release: true); + } + + static NSProgress new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSProgress1, _lib._sel_new1); + return NSProgress._(_ret, _lib, retain: false, release: true); + } + + static NSProgress allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSProgress1, _lib._sel_allocWithZone_1, zone); + return NSProgress._(_ret, _lib, retain: false, release: true); + } + + static NSProgress alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSProgress1, _lib._sel_alloc1); + return NSProgress._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSProgress1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSProgress1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSProgress1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSProgress1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSProgress1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSProgress1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSProgress1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSProgress1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSProgress1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); } } -int _ObjCBlock_ffiInt_SentryAppStartMeasurement_fnPtrTrampoline( +ffi.Pointer<_ObjCBlock> _ObjCBlock_ffiVoid_NSProgress_fnPtrTrampoline( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { return block.ref.target .cast< - ffi.NativeFunction arg0)>>() - .asFunction arg0)>()(arg0); + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function(ffi.Pointer arg0)>>() + .asFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer arg0)>()(arg0); } -final _ObjCBlock_ffiInt_SentryAppStartMeasurement_closureRegistry = - {}; -int _ObjCBlock_ffiInt_SentryAppStartMeasurement_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiInt_SentryAppStartMeasurement_registerClosure(Function fn) { - final id = ++_ObjCBlock_ffiInt_SentryAppStartMeasurement_closureRegistryIndex; - _ObjCBlock_ffiInt_SentryAppStartMeasurement_closureRegistry[id] = fn; +final _ObjCBlock_ffiVoid_NSProgress_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSProgress_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSProgress_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSProgress_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSProgress_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -int _ObjCBlock_ffiInt_SentryAppStartMeasurement_closureTrampoline( +ffi.Pointer<_ObjCBlock> _ObjCBlock_ffiVoid_NSProgress_closureTrampoline( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return (_ObjCBlock_ffiInt_SentryAppStartMeasurement_closureRegistry[ - block.ref.target.address] as int Function(ffi.Pointer))(arg0); + return (_ObjCBlock_ffiVoid_NSProgress_closureRegistry[ + block.ref.target.address] + as ffi.Pointer<_ObjCBlock> Function(ffi.Pointer))(arg0); } -class ObjCBlock_ffiInt_SentryAppStartMeasurement extends _ObjCBlockBase { - ObjCBlock_ffiInt_SentryAppStartMeasurement._( - ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) +class ObjCBlock_ffiVoid_NSProgress extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSProgress._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) : super._(id, lib, retain: false, release: true); /// Creates a block from a C function pointer. - ObjCBlock_ffiInt_SentryAppStartMeasurement.fromFunctionPointer( + ObjCBlock_ffiVoid_NSProgress.fromFunctionPointer( SentryCocoa lib, ffi.Pointer< - ffi - .NativeFunction arg0)>> + ffi.NativeFunction< + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer arg0)>> ptr) : this._( lib._newBlock1( _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Int Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0)>( - _ObjCBlock_ffiInt_SentryAppStartMeasurement_fnPtrTrampoline, - 0) + _ObjCBlock_ffiVoid_NSProgress_fnPtrTrampoline) .cast(), ptr.cast()), lib); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. - ObjCBlock_ffiInt_SentryAppStartMeasurement.fromFunction( - SentryCocoa lib, int Function(ffi.Pointer arg0) fn) + ObjCBlock_ffiVoid_NSProgress.fromFunction(SentryCocoa lib, + ffi.Pointer<_ObjCBlock> Function(ffi.Pointer arg0) fn) : this._( lib._newBlock1( _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Int Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> Function( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0)>( - _ObjCBlock_ffiInt_SentryAppStartMeasurement_closureTrampoline, - 0) + _ObjCBlock_ffiVoid_NSProgress_closureTrampoline) .cast(), - _ObjCBlock_ffiInt_SentryAppStartMeasurement_registerClosure( - fn)), + _ObjCBlock_ffiVoid_NSProgress_registerClosure(fn)), lib); static ffi.Pointer? _dartFuncTrampoline; - int call(ffi.Pointer arg0) { + ffi.Pointer<_ObjCBlock> call(ffi.Pointer arg0) { return _id.ref.invoke .cast< ffi.NativeFunction< - ffi.Int Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0)>>() .asFunction< - int Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer<_ObjCBlock> Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0)>()(_id, arg0); } } -class SentryAppStartMeasurement extends _ObjCWrapper { - SentryAppStartMeasurement._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [SentryAppStartMeasurement] that points to the same underlying object as [other]. - static SentryAppStartMeasurement castFrom(T other) { - return SentryAppStartMeasurement._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [SentryAppStartMeasurement] that wraps the given raw object pointer. - static SentryAppStartMeasurement castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryAppStartMeasurement._(other, lib, - retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [SentryAppStartMeasurement]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_SentryAppStartMeasurement1); - } +void _ObjCBlock_ffiVoid_NSData_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); } -class SentryOptions extends _ObjCWrapper { - SentryOptions._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [SentryOptions] that points to the same underlying object as [other]. - static SentryOptions castFrom(T other) { - return SentryOptions._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [SentryOptions] that wraps the given raw object pointer. - static SentryOptions castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryOptions._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [SentryOptions]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryOptions1); - } +final _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSData_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSData_NSError_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSData_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); } -class SentryUser extends _ObjCWrapper { - SentryUser._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [SentryUser] that points to the same underlying object as [other]. - static SentryUser castFrom(T other) { - return SentryUser._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [SentryUser] that wraps the given raw object pointer. - static SentryUser castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryUser._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [SentryUser]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryUser1); - } +void _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_ffiVoid_NSData_NSError_closureRegistry[ + block.ref.target.address] + as void Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); } -class SentryBreadcrumb extends _ObjCWrapper { - SentryBreadcrumb._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [SentryBreadcrumb] that points to the same underlying object as [other]. - static SentryBreadcrumb castFrom(T other) { - return SentryBreadcrumb._(other._id, other._lib, - retain: true, release: true); - } - - /// Returns a [SentryBreadcrumb] that wraps the given raw object pointer. - static SentryBreadcrumb castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return SentryBreadcrumb._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [SentryBreadcrumb]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_SentryBreadcrumb1); - } -} - -class NSItemProvider extends NSObject { - NSItemProvider._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSItemProvider] that points to the same underlying object as [other]. - static NSItemProvider castFrom(T other) { - return NSItemProvider._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSItemProvider] that wraps the given raw object pointer. - static NSItemProvider castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSItemProvider._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSItemProvider]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSItemProvider1); - } - - @override - NSItemProvider init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSItemProvider._(_ret, _lib, retain: true, release: true); - } - - void registerDataRepresentationForTypeIdentifier_visibility_loadHandler_( - NSString? typeIdentifier, - int visibility, - ObjCBlock_NSProgress_ffiVoidNSDataNSError loadHandler) { - _lib._objc_msgSend_657( - _id, - _lib._sel_registerDataRepresentationForTypeIdentifier_visibility_loadHandler_1, - typeIdentifier?._id ?? ffi.nullptr, - visibility, - loadHandler._id); - } - - void - registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_( - NSString? typeIdentifier, - int fileOptions, - int visibility, - ObjCBlock_NSProgress_ffiVoidNSURLboolNSError loadHandler) { - _lib._objc_msgSend_658( - _id, - _lib._sel_registerFileRepresentationForTypeIdentifier_fileOptions_visibility_loadHandler_1, - typeIdentifier?._id ?? ffi.nullptr, - fileOptions, - visibility, - loadHandler._id); - } - - NSArray? get registeredTypeIdentifiers { - final _ret = - _lib._objc_msgSend_79(_id, _lib._sel_registeredTypeIdentifiers1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray registeredTypeIdentifiersWithFileOptions_(int fileOptions) { - final _ret = _lib._objc_msgSend_659( - _id, _lib._sel_registeredTypeIdentifiersWithFileOptions_1, fileOptions); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - bool hasItemConformingToTypeIdentifier_(NSString? typeIdentifier) { - return _lib._objc_msgSend_59( - _id, - _lib._sel_hasItemConformingToTypeIdentifier_1, - typeIdentifier?._id ?? ffi.nullptr); - } - - bool hasRepresentationConformingToTypeIdentifier_fileOptions_( - NSString? typeIdentifier, int fileOptions) { - return _lib._objc_msgSend_660( - _id, - _lib._sel_hasRepresentationConformingToTypeIdentifier_fileOptions_1, - typeIdentifier?._id ?? ffi.nullptr, - fileOptions); - } - - NSProgress loadDataRepresentationForTypeIdentifier_completionHandler_( - NSString? typeIdentifier, - ObjCBlock_ffiVoid_NSData_NSError completionHandler) { - final _ret = _lib._objc_msgSend_661( - _id, - _lib._sel_loadDataRepresentationForTypeIdentifier_completionHandler_1, - typeIdentifier?._id ?? ffi.nullptr, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); - } - - NSProgress loadFileRepresentationForTypeIdentifier_completionHandler_( - NSString? typeIdentifier, - ObjCBlock_ffiVoid_NSURL_NSError completionHandler) { - final _ret = _lib._objc_msgSend_662( - _id, - _lib._sel_loadFileRepresentationForTypeIdentifier_completionHandler_1, - typeIdentifier?._id ?? ffi.nullptr, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); - } - - NSProgress loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_( - NSString? typeIdentifier, - ObjCBlock_ffiVoid_NSURL_bool_NSError completionHandler) { - final _ret = _lib._objc_msgSend_663( - _id, - _lib._sel_loadInPlaceFileRepresentationForTypeIdentifier_completionHandler_1, - typeIdentifier?._id ?? ffi.nullptr, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); - } - - NSString? get suggestedName { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_suggestedName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set suggestedName(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setSuggestedName_1, value?._id ?? ffi.nullptr); - } - - NSItemProvider initWithObject_(NSObject? object) { - final _ret = _lib._objc_msgSend_16( - _id, _lib._sel_initWithObject_1, object?._id ?? ffi.nullptr); - return NSItemProvider._(_ret, _lib, retain: true, release: true); - } - - void registerObject_visibility_(NSObject? object, int visibility) { - _lib._objc_msgSend_664(_id, _lib._sel_registerObject_visibility_1, - object?._id ?? ffi.nullptr, visibility); - } - - void registerObjectOfClass_visibility_loadHandler_( - NSObject? aClass, - int visibility, - ObjCBlock_NSProgress_ffiVoidObjCObjectNSError loadHandler) { - _lib._objc_msgSend_665( - _id, - _lib._sel_registerObjectOfClass_visibility_loadHandler_1, - aClass?._id ?? ffi.nullptr, - visibility, - loadHandler._id); - } - - bool canLoadObjectOfClass_(NSObject? aClass) { - return _lib._objc_msgSend_0( - _id, _lib._sel_canLoadObjectOfClass_1, aClass?._id ?? ffi.nullptr); - } - - NSProgress loadObjectOfClass_completionHandler_(NSObject? aClass, - ObjCBlock_ffiVoid_ObjCObject_NSError completionHandler) { - final _ret = _lib._objc_msgSend_666( - _id, - _lib._sel_loadObjectOfClass_completionHandler_1, - aClass?._id ?? ffi.nullptr, - completionHandler._id); - return NSProgress._(_ret, _lib, retain: true, release: true); - } - - NSItemProvider initWithItem_typeIdentifier_( - NSObject? item, NSString? typeIdentifier) { - final _ret = _lib._objc_msgSend_287( - _id, - _lib._sel_initWithItem_typeIdentifier_1, - item?._id ?? ffi.nullptr, - typeIdentifier?._id ?? ffi.nullptr); - return NSItemProvider._(_ret, _lib, retain: true, release: true); - } - - NSItemProvider initWithContentsOfURL_(NSURL? fileURL) { - final _ret = _lib._objc_msgSend_241( - _id, _lib._sel_initWithContentsOfURL_1, fileURL?._id ?? ffi.nullptr); - return NSItemProvider._(_ret, _lib, retain: true, release: true); - } - - void registerItemForTypeIdentifier_loadHandler_( - NSString? typeIdentifier, - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary - loadHandler) { - _lib._objc_msgSend_667( - _id, - _lib._sel_registerItemForTypeIdentifier_loadHandler_1, - typeIdentifier?._id ?? ffi.nullptr, - loadHandler._id); - } - - void loadItemForTypeIdentifier_options_completionHandler_( - NSString? typeIdentifier, - NSDictionary? options, - ObjCBlock_ffiVoid_ObjCObject_NSError completionHandler) { - _lib._objc_msgSend_668( - _id, - _lib._sel_loadItemForTypeIdentifier_options_completionHandler_1, - typeIdentifier?._id ?? ffi.nullptr, - options?._id ?? ffi.nullptr, - completionHandler._id); - } - - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary - get previewImageHandler { - final _ret = _lib._objc_msgSend_669(_id, _lib._sel_previewImageHandler1); - return ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary._( - _ret, _lib); - } - - set previewImageHandler( - ObjCBlock_ffiVoid_ffiVoidObjCObjectNSError_ObjCObject_NSDictionary - value) { - return _lib._objc_msgSend_670( - _id, _lib._sel_setPreviewImageHandler_1, value._id); - } - - void loadPreviewImageWithOptions_completionHandler_(NSDictionary? options, - ObjCBlock_ffiVoid_ObjCObject_NSError completionHandler) { - _lib._objc_msgSend_671( - _id, - _lib._sel_loadPreviewImageWithOptions_completionHandler_1, - options?._id ?? ffi.nullptr, - completionHandler._id); - } - - static NSItemProvider new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSItemProvider1, _lib._sel_new1); - return NSItemProvider._(_ret, _lib, retain: false, release: true); - } - - static NSItemProvider allocWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSItemProvider1, _lib._sel_allocWithZone_1, zone); - return NSItemProvider._(_ret, _lib, retain: false, release: true); - } - - static NSItemProvider alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSItemProvider1, _lib._sel_alloc1); - return NSItemProvider._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SentryCocoa _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSItemProvider1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument._id); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSItemProvider1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSItemProvider1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSItemProvider1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SentryCocoa _lib, NSString? key) { - final _ret = _lib._objc_msgSend_58( - _lib._class_NSItemProvider1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key?._id ?? ffi.nullptr); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SentryCocoa _lib, NSString? key) { - return _lib._objc_msgSend_59( - _lib._class_NSItemProvider1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key?._id ?? ffi.nullptr); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { - _lib._objc_msgSend_82( - _lib._class_NSItemProvider1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys?._id ?? ffi.nullptr, - dependentKey?._id ?? ffi.nullptr); - } - - static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_NSItemProvider1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSItemProvider1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -abstract class NSItemProviderRepresentationVisibility { - static const int NSItemProviderRepresentationVisibilityAll = 0; - static const int NSItemProviderRepresentationVisibilityTeam = 1; - static const int NSItemProviderRepresentationVisibilityGroup = 2; - static const int NSItemProviderRepresentationVisibilityOwnProcess = 3; -} - -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) { - return block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>()(arg0); -} - -final _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry = - {}; -int _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_registerClosure(Function fn) { - final id = ++_ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistryIndex; - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -ffi.Pointer - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer<_ObjCBlock> arg0) { - return (_ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureRegistry[ - block.ref.target.address] - as ffi.Pointer Function(ffi.Pointer<_ObjCBlock>))(arg0); -} - -class ObjCBlock_NSProgress_ffiVoidNSDataNSError extends _ObjCBlockBase { - ObjCBlock_NSProgress_ffiVoidNSDataNSError._( - ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); - - /// Creates a block from a C function pointer. - ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunctionPointer( - SentryCocoa lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0)>( - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - ObjCBlock_NSProgress_ffiVoidNSDataNSError.fromFunction(SentryCocoa lib, - ffi.Pointer Function(ffi.Pointer<_ObjCBlock> arg0) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0)>( - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_closureTrampoline) - .cast(), - _ObjCBlock_NSProgress_ffiVoidNSDataNSError_registerClosure(fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - ffi.Pointer call(ffi.Pointer<_ObjCBlock> arg0) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0)>>() - .asFunction< - ffi.Pointer Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer<_ObjCBlock> arg0)>()(_id, arg0); - } -} - -class NSProgress extends NSObject { - NSProgress._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSProgress] that points to the same underlying object as [other]. - static NSProgress castFrom(T other) { - return NSProgress._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSProgress] that wraps the given raw object pointer. - static NSProgress castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSProgress._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSProgress]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProgress1); - } - - static NSProgress currentProgress(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_643( - _lib._class_NSProgress1, _lib._sel_currentProgress1); - return NSProgress._(_ret, _lib, retain: true, release: true); - } - - static NSProgress progressWithTotalUnitCount_( - SentryCocoa _lib, int unitCount) { - final _ret = _lib._objc_msgSend_644(_lib._class_NSProgress1, - _lib._sel_progressWithTotalUnitCount_1, unitCount); - return NSProgress._(_ret, _lib, retain: true, release: true); - } - - static NSProgress discreteProgressWithTotalUnitCount_( - SentryCocoa _lib, int unitCount) { - final _ret = _lib._objc_msgSend_644(_lib._class_NSProgress1, - _lib._sel_discreteProgressWithTotalUnitCount_1, unitCount); - return NSProgress._(_ret, _lib, retain: true, release: true); - } - - static NSProgress progressWithTotalUnitCount_parent_pendingUnitCount_( - SentryCocoa _lib, - int unitCount, - NSProgress? parent, - int portionOfParentTotalUnitCount) { - final _ret = _lib._objc_msgSend_645( - _lib._class_NSProgress1, - _lib._sel_progressWithTotalUnitCount_parent_pendingUnitCount_1, - unitCount, - parent?._id ?? ffi.nullptr, - portionOfParentTotalUnitCount); - return NSProgress._(_ret, _lib, retain: true, release: true); - } - - NSProgress initWithParent_userInfo_( - NSProgress? parentProgressOrNil, NSObject? userInfoOrNil) { - final _ret = _lib._objc_msgSend_646( - _id, - _lib._sel_initWithParent_userInfo_1, - parentProgressOrNil?._id ?? ffi.nullptr, - userInfoOrNil?._id ?? ffi.nullptr); - return NSProgress._(_ret, _lib, retain: true, release: true); - } - - void becomeCurrentWithPendingUnitCount_(int unitCount) { - _lib._objc_msgSend_647( - _id, _lib._sel_becomeCurrentWithPendingUnitCount_1, unitCount); - } - - void performAsCurrentWithPendingUnitCount_usingBlock_( - int unitCount, ObjCBlock_ffiVoid work) { - _lib._objc_msgSend_648( - _id, - _lib._sel_performAsCurrentWithPendingUnitCount_usingBlock_1, - unitCount, - work._id); - } - - void resignCurrent() { - _lib._objc_msgSend_1(_id, _lib._sel_resignCurrent1); - } - - void addChild_withPendingUnitCount_(NSProgress? child, int inUnitCount) { - _lib._objc_msgSend_649(_id, _lib._sel_addChild_withPendingUnitCount_1, - child?._id ?? ffi.nullptr, inUnitCount); - } - - int get totalUnitCount { - return _lib._objc_msgSend_650(_id, _lib._sel_totalUnitCount1); - } - - set totalUnitCount(int value) { - return _lib._objc_msgSend_651(_id, _lib._sel_setTotalUnitCount_1, value); - } - - int get completedUnitCount { - return _lib._objc_msgSend_650(_id, _lib._sel_completedUnitCount1); - } - - set completedUnitCount(int value) { - return _lib._objc_msgSend_651( - _id, _lib._sel_setCompletedUnitCount_1, value); - } - - NSString? get localizedDescription { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localizedDescription1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set localizedDescription(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setLocalizedDescription_1, value?._id ?? ffi.nullptr); - } - - NSString? get localizedAdditionalDescription { - final _ret = - _lib._objc_msgSend_20(_id, _lib._sel_localizedAdditionalDescription1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set localizedAdditionalDescription(NSString? value) { - return _lib._objc_msgSend_509( - _id, - _lib._sel_setLocalizedAdditionalDescription_1, - value?._id ?? ffi.nullptr); - } - - bool get cancellable { - return _lib._objc_msgSend_12(_id, _lib._sel_isCancellable1); - } - - set cancellable(bool value) { - return _lib._objc_msgSend_492(_id, _lib._sel_setCancellable_1, value); - } - - bool get pausable { - return _lib._objc_msgSend_12(_id, _lib._sel_isPausable1); - } - - set pausable(bool value) { - return _lib._objc_msgSend_492(_id, _lib._sel_setPausable_1, value); - } - - bool get cancelled { - return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); - } - - bool get paused { - return _lib._objc_msgSend_12(_id, _lib._sel_isPaused1); - } - - ObjCBlock_ffiVoid get cancellationHandler { - final _ret = _lib._objc_msgSend_652(_id, _lib._sel_cancellationHandler1); - return ObjCBlock_ffiVoid._(_ret, _lib); - } - - set cancellationHandler(ObjCBlock_ffiVoid value) { - return _lib._objc_msgSend_653( - _id, _lib._sel_setCancellationHandler_1, value._id); - } - - ObjCBlock_ffiVoid get pausingHandler { - final _ret = _lib._objc_msgSend_652(_id, _lib._sel_pausingHandler1); - return ObjCBlock_ffiVoid._(_ret, _lib); - } - - set pausingHandler(ObjCBlock_ffiVoid value) { - return _lib._objc_msgSend_653( - _id, _lib._sel_setPausingHandler_1, value._id); - } - - ObjCBlock_ffiVoid get resumingHandler { - final _ret = _lib._objc_msgSend_652(_id, _lib._sel_resumingHandler1); - return ObjCBlock_ffiVoid._(_ret, _lib); - } - - set resumingHandler(ObjCBlock_ffiVoid value) { - return _lib._objc_msgSend_653( - _id, _lib._sel_setResumingHandler_1, value._id); - } - - void setUserInfoObject_forKey_(NSObject objectOrNil, NSString key) { - _lib._objc_msgSend_126( - _id, _lib._sel_setUserInfoObject_forKey_1, objectOrNil._id, key._id); - } - - bool get indeterminate { - return _lib._objc_msgSend_12(_id, _lib._sel_isIndeterminate1); - } - - double get fractionCompleted { - return _lib._objc_msgSend_155(_id, _lib._sel_fractionCompleted1); - } - - bool get finished { - return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); - } - - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); - } - - void pause() { - _lib._objc_msgSend_1(_id, _lib._sel_pause1); - } - - void resume() { - _lib._objc_msgSend_1(_id, _lib._sel_resume1); - } - - NSObject? get userInfo { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_userInfo1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - NSString get kind { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_kind1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - set kind(NSString value) { - return _lib._objc_msgSend_509(_id, _lib._sel_setKind_1, value._id); - } - - NSNumber? get estimatedTimeRemaining { - final _ret = _lib._objc_msgSend_198(_id, _lib._sel_estimatedTimeRemaining1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - set estimatedTimeRemaining(NSNumber? value) { - return _lib._objc_msgSend_654( - _id, _lib._sel_setEstimatedTimeRemaining_1, value?._id ?? ffi.nullptr); - } - - NSNumber? get throughput { - final _ret = _lib._objc_msgSend_198(_id, _lib._sel_throughput1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - set throughput(NSNumber? value) { - return _lib._objc_msgSend_654( - _id, _lib._sel_setThroughput_1, value?._id ?? ffi.nullptr); - } - - NSString get fileOperationKind { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_fileOperationKind1); - return NSString._(_ret, _lib, retain: true, release: true); - } - - set fileOperationKind(NSString value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setFileOperationKind_1, value._id); - } - - NSURL? get fileURL { - final _ret = _lib._objc_msgSend_40(_id, _lib._sel_fileURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - set fileURL(NSURL? value) { - return _lib._objc_msgSend_655( - _id, _lib._sel_setFileURL_1, value?._id ?? ffi.nullptr); - } - - NSNumber? get fileTotalCount { - final _ret = _lib._objc_msgSend_198(_id, _lib._sel_fileTotalCount1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - set fileTotalCount(NSNumber? value) { - return _lib._objc_msgSend_654( - _id, _lib._sel_setFileTotalCount_1, value?._id ?? ffi.nullptr); - } - - NSNumber? get fileCompletedCount { - final _ret = _lib._objc_msgSend_198(_id, _lib._sel_fileCompletedCount1); - return _ret.address == 0 - ? null - : NSNumber._(_ret, _lib, retain: true, release: true); - } - - set fileCompletedCount(NSNumber? value) { - return _lib._objc_msgSend_654( - _id, _lib._sel_setFileCompletedCount_1, value?._id ?? ffi.nullptr); - } - - void publish() { - _lib._objc_msgSend_1(_id, _lib._sel_publish1); - } - - void unpublish() { - _lib._objc_msgSend_1(_id, _lib._sel_unpublish1); - } - - static NSObject addSubscriberForFileURL_withPublishingHandler_( - SentryCocoa _lib, - NSURL? url, - ObjCBlock_ffiVoid_NSProgress publishingHandler) { - final _ret = _lib._objc_msgSend_656( - _lib._class_NSProgress1, - _lib._sel_addSubscriberForFileURL_withPublishingHandler_1, - url?._id ?? ffi.nullptr, - publishingHandler._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static void removeSubscriber_(SentryCocoa _lib, NSObject subscriber) { - _lib._objc_msgSend_15( - _lib._class_NSProgress1, _lib._sel_removeSubscriber_1, subscriber._id); - } - - bool get old { - return _lib._objc_msgSend_12(_id, _lib._sel_isOld1); - } - - @override - NSProgress init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSProgress._(_ret, _lib, retain: true, release: true); - } - - static NSProgress new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSProgress1, _lib._sel_new1); - return NSProgress._(_ret, _lib, retain: false, release: true); - } - - static NSProgress allocWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSProgress1, _lib._sel_allocWithZone_1, zone); - return NSProgress._(_ret, _lib, retain: false, release: true); - } - - static NSProgress alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSProgress1, _lib._sel_alloc1); - return NSProgress._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SentryCocoa _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSProgress1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument._id); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSProgress1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSProgress1, _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSProgress1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SentryCocoa _lib, NSString? key) { - final _ret = _lib._objc_msgSend_58( - _lib._class_NSProgress1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key?._id ?? ffi.nullptr); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SentryCocoa _lib, NSString? key) { - return _lib._objc_msgSend_59( - _lib._class_NSProgress1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key?._id ?? ffi.nullptr); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { - _lib._objc_msgSend_82( - _lib._class_NSProgress1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys?._id ?? ffi.nullptr, - dependentKey?._id ?? ffi.nullptr); - } - - static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_NSProgress1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSProgress1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } -} - -ffi.Pointer<_ObjCBlock> _ObjCBlock_ffiVoid_NSProgress_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return block.ref.target - .cast< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function(ffi.Pointer arg0)>>() - .asFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer arg0)>()(arg0); -} - -final _ObjCBlock_ffiVoid_NSProgress_closureRegistry = {}; -int _ObjCBlock_ffiVoid_NSProgress_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSProgress_registerClosure( - Function fn) { - final id = ++_ObjCBlock_ffiVoid_NSProgress_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSProgress_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -ffi.Pointer<_ObjCBlock> _ObjCBlock_ffiVoid_NSProgress_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return (_ObjCBlock_ffiVoid_NSProgress_closureRegistry[ - block.ref.target.address] - as ffi.Pointer<_ObjCBlock> Function(ffi.Pointer))(arg0); -} - -class ObjCBlock_ffiVoid_NSProgress extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSProgress._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); - - /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSProgress.fromFunctionPointer( - SentryCocoa lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSProgress_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSProgress.fromFunction(SentryCocoa lib, - ffi.Pointer<_ObjCBlock> Function(ffi.Pointer arg0) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Pointer<_ObjCBlock> Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSProgress_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSProgress_registerClosure(fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - ffi.Pointer<_ObjCBlock> call(ffi.Pointer arg0) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Pointer<_ObjCBlock> Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - ffi.Pointer<_ObjCBlock> Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>()(_id, arg0); - } -} - -void _ObjCBlock_ffiVoid_NSData_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) { - return block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>()(arg0, arg1); -} - -final _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry = {}; -int _ObjCBlock_ffiVoid_NSData_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSData_NSError_registerClosure( - Function fn) { - final id = ++_ObjCBlock_ffiVoid_NSData_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSData_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) { - return (_ObjCBlock_ffiVoid_NSData_NSError_closureRegistry[ - block.ref.target.address] - as void Function( - ffi.Pointer, ffi.Pointer))(arg0, arg1); -} - -class ObjCBlock_ffiVoid_NSData_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData_NSError._( - ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); +class ObjCBlock_ffiVoid_NSData_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSData_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); /// Creates a block from a C function pointer. ObjCBlock_ffiVoid_NSData_NSError.fromFunctionPointer( @@ -52352,12 +51266,12 @@ class NSMutableString extends NSString { } void replaceCharactersInRange_withString_(_NSRange range, NSString? aString) { - _lib._objc_msgSend_672(_id, _lib._sel_replaceCharactersInRange_withString_1, + _lib._objc_msgSend_638(_id, _lib._sel_replaceCharactersInRange_withString_1, range, aString?._id ?? ffi.nullptr); } void insertString_atIndex_(NSString? aString, int loc) { - _lib._objc_msgSend_673(_id, _lib._sel_insertString_atIndex_1, + _lib._objc_msgSend_639(_id, _lib._sel_insertString_atIndex_1, aString?._id ?? ffi.nullptr, loc); } @@ -52382,7 +51296,7 @@ class NSMutableString extends NSString { int replaceOccurrencesOfString_withString_options_range_(NSString? target, NSString? replacement, int options, _NSRange searchRange) { - return _lib._objc_msgSend_674( + return _lib._objc_msgSend_640( _id, _lib._sel_replaceOccurrencesOfString_withString_options_range_1, target?._id ?? ffi.nullptr, @@ -52393,7 +51307,7 @@ class NSMutableString extends NSString { bool applyTransform_reverse_range_updatedRange_(NSString transform, bool reverse, _NSRange range, ffi.Pointer<_NSRange> resultingRange) { - return _lib._objc_msgSend_675( + return _lib._objc_msgSend_641( _id, _lib._sel_applyTransform_reverse_range_updatedRange_1, transform._id, @@ -52404,12 +51318,12 @@ class NSMutableString extends NSString { NSMutableString initWithCapacity_(int capacity) { final _ret = - _lib._objc_msgSend_676(_id, _lib._sel_initWithCapacity_1, capacity); + _lib._objc_msgSend_642(_id, _lib._sel_initWithCapacity_1, capacity); return NSMutableString._(_ret, _lib, retain: true, release: true); } static NSMutableString stringWithCapacity_(SentryCocoa _lib, int capacity) { - final _ret = _lib._objc_msgSend_676( + final _ret = _lib._objc_msgSend_642( _lib._class_NSMutableString1, _lib._sel_stringWithCapacity_1, capacity); return NSMutableString._(_ret, _lib, retain: true, release: true); } @@ -53009,7 +51923,7 @@ class NSNotification extends NSObject { NSNotification initWithName_object_userInfo_( NSString name, NSObject object, NSDictionary? userInfo) { - final _ret = _lib._objc_msgSend_677( + final _ret = _lib._objc_msgSend_643( _id, _lib._sel_initWithName_object_userInfo_1, name._id, @@ -53033,7 +51947,7 @@ class NSNotification extends NSObject { static NSNotification notificationWithName_object_userInfo_(SentryCocoa _lib, NSString aName, NSObject anObject, NSDictionary? aUserInfo) { - final _ret = _lib._objc_msgSend_677( + final _ret = _lib._objc_msgSend_643( _lib._class_NSNotification1, _lib._sel_notificationWithName_object_userInfo_1, aName._id, @@ -53160,7 +52074,7 @@ class NSBundle extends NSObject { static NSBundle? getMainBundle(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_678(_lib._class_NSBundle1, _lib._sel_mainBundle1); + _lib._objc_msgSend_644(_lib._class_NSBundle1, _lib._sel_mainBundle1); return _ret.address == 0 ? null : NSBundle._(_ret, _lib, retain: true, release: true); @@ -53191,14 +52105,14 @@ class NSBundle extends NSObject { } static NSBundle bundleForClass_(SentryCocoa _lib, NSObject aClass) { - final _ret = _lib._objc_msgSend_679( + final _ret = _lib._objc_msgSend_645( _lib._class_NSBundle1, _lib._sel_bundleForClass_1, aClass._id); return NSBundle._(_ret, _lib, retain: true, release: true); } static NSBundle bundleWithIdentifier_( SentryCocoa _lib, NSString? identifier) { - final _ret = _lib._objc_msgSend_680(_lib._class_NSBundle1, + final _ret = _lib._objc_msgSend_646(_lib._class_NSBundle1, _lib._sel_bundleWithIdentifier_1, identifier?._id ?? ffi.nullptr); return NSBundle._(_ret, _lib, retain: true, release: true); } @@ -53367,7 +52281,7 @@ class NSBundle extends NSObject { NSString? ext, NSString? subpath, NSURL? bundleURL) { - final _ret = _lib._objc_msgSend_681( + final _ret = _lib._objc_msgSend_647( _lib._class_NSBundle1, _lib._sel_URLForResource_withExtension_subdirectory_inBundleWithURL_1, name?._id ?? ffi.nullptr, @@ -53379,7 +52293,7 @@ class NSBundle extends NSObject { static NSArray URLsForResourcesWithExtension_subdirectory_inBundleWithURL_( SentryCocoa _lib, NSString? ext, NSString? subpath, NSURL? bundleURL) { - final _ret = _lib._objc_msgSend_682( + final _ret = _lib._objc_msgSend_648( _lib._class_NSBundle1, _lib._sel_URLsForResourcesWithExtension_subdirectory_inBundleWithURL_1, ext?._id ?? ffi.nullptr, @@ -53389,7 +52303,7 @@ class NSBundle extends NSObject { } NSURL URLForResource_withExtension_(NSString? name, NSString? ext) { - final _ret = _lib._objc_msgSend_683( + final _ret = _lib._objc_msgSend_649( _id, _lib._sel_URLForResource_withExtension_1, name?._id ?? ffi.nullptr, @@ -53399,7 +52313,7 @@ class NSBundle extends NSObject { NSURL URLForResource_withExtension_subdirectory_( NSString? name, NSString? ext, NSString? subpath) { - final _ret = _lib._objc_msgSend_684( + final _ret = _lib._objc_msgSend_650( _id, _lib._sel_URLForResource_withExtension_subdirectory_1, name?._id ?? ffi.nullptr, @@ -53410,7 +52324,7 @@ class NSBundle extends NSObject { NSURL URLForResource_withExtension_subdirectory_localization_(NSString? name, NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_685( + final _ret = _lib._objc_msgSend_651( _id, _lib._sel_URLForResource_withExtension_subdirectory_localization_1, name?._id ?? ffi.nullptr, @@ -53422,7 +52336,7 @@ class NSBundle extends NSObject { NSArray URLsForResourcesWithExtension_subdirectory_( NSString? ext, NSString? subpath) { - final _ret = _lib._objc_msgSend_686( + final _ret = _lib._objc_msgSend_652( _id, _lib._sel_URLsForResourcesWithExtension_subdirectory_1, ext?._id ?? ffi.nullptr, @@ -53432,7 +52346,7 @@ class NSBundle extends NSObject { NSArray URLsForResourcesWithExtension_subdirectory_localization_( NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_687( + final _ret = _lib._objc_msgSend_653( _id, _lib._sel_URLsForResourcesWithExtension_subdirectory_localization_1, ext?._id ?? ffi.nullptr, @@ -53443,7 +52357,7 @@ class NSBundle extends NSObject { static NSString pathForResource_ofType_inDirectory_( SentryCocoa _lib, NSString? name, NSString? ext, NSString? bundlePath) { - final _ret = _lib._objc_msgSend_688( + final _ret = _lib._objc_msgSend_654( _lib._class_NSBundle1, _lib._sel_pathForResource_ofType_inDirectory_1, name?._id ?? ffi.nullptr, @@ -53454,7 +52368,7 @@ class NSBundle extends NSObject { static NSArray pathsForResourcesOfType_inDirectory_( SentryCocoa _lib, NSString? ext, NSString? bundlePath) { - final _ret = _lib._objc_msgSend_686( + final _ret = _lib._objc_msgSend_652( _lib._class_NSBundle1, _lib._sel_pathsForResourcesOfType_inDirectory_1, ext?._id ?? ffi.nullptr, @@ -53470,7 +52384,7 @@ class NSBundle extends NSObject { NSString pathForResource_ofType_inDirectory_forLocalization_(NSString? name, NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_689( + final _ret = _lib._objc_msgSend_655( _id, _lib._sel_pathForResource_ofType_inDirectory_forLocalization_1, name?._id ?? ffi.nullptr, @@ -53482,7 +52396,7 @@ class NSBundle extends NSObject { NSArray pathsForResourcesOfType_inDirectory_forLocalization_( NSString? ext, NSString? subpath, NSString? localizationName) { - final _ret = _lib._objc_msgSend_687( + final _ret = _lib._objc_msgSend_653( _id, _lib._sel_pathsForResourcesOfType_inDirectory_forLocalization_1, ext?._id ?? ffi.nullptr, @@ -53493,7 +52407,7 @@ class NSBundle extends NSObject { NSString localizedStringForKey_value_table_( NSString? key, NSString? value, NSString? tableName) { - final _ret = _lib._objc_msgSend_688( + final _ret = _lib._objc_msgSend_654( _id, _lib._sel_localizedStringForKey_value_table_1, key?._id ?? ffi.nullptr, @@ -53504,7 +52418,7 @@ class NSBundle extends NSObject { NSAttributedString localizedAttributedStringForKey_value_table_( NSString? key, NSString? value, NSString? tableName) { - final _ret = _lib._objc_msgSend_710( + final _ret = _lib._objc_msgSend_676( _id, _lib._sel_localizedAttributedStringForKey_value_table_1, key?._id ?? ffi.nullptr, @@ -53586,7 +52500,7 @@ class NSBundle extends NSObject { SentryCocoa _lib, NSArray? localizationsArray, NSArray? preferencesArray) { - final _ret = _lib._objc_msgSend_711( + final _ret = _lib._objc_msgSend_677( _lib._class_NSBundle1, _lib._sel_preferredLocalizationsFromArray_forPreferences_1, localizationsArray?._id ?? ffi.nullptr, @@ -53602,7 +52516,7 @@ class NSBundle extends NSObject { } void setPreservationPriority_forTags_(double priority, NSSet? tags) { - _lib._objc_msgSend_712(_id, _lib._sel_setPreservationPriority_forTags_1, + _lib._objc_msgSend_678(_id, _lib._sel_setPreservationPriority_forTags_1, priority, tags?._id ?? ffi.nullptr); } @@ -53734,7 +52648,7 @@ class NSAttributedString extends NSObject { NSDictionary attributesAtIndex_effectiveRange_( int location, ffi.Pointer<_NSRange> range) { - final _ret = _lib._objc_msgSend_690( + final _ret = _lib._objc_msgSend_656( _id, _lib._sel_attributesAtIndex_effectiveRange_1, location, range); return NSDictionary._(_ret, _lib, retain: true, release: true); } @@ -53745,7 +52659,7 @@ class NSAttributedString extends NSObject { NSObject attribute_atIndex_effectiveRange_( NSString attrName, int location, ffi.Pointer<_NSRange> range) { - final _ret = _lib._objc_msgSend_691( + final _ret = _lib._objc_msgSend_657( _id, _lib._sel_attribute_atIndex_effectiveRange_1, attrName._id, @@ -53755,14 +52669,14 @@ class NSAttributedString extends NSObject { } NSAttributedString attributedSubstringFromRange_(_NSRange range) { - final _ret = _lib._objc_msgSend_692( + final _ret = _lib._objc_msgSend_658( _id, _lib._sel_attributedSubstringFromRange_1, range); return NSAttributedString._(_ret, _lib, retain: true, release: true); } NSDictionary attributesAtIndex_longestEffectiveRange_inRange_( int location, ffi.Pointer<_NSRange> range, _NSRange rangeLimit) { - final _ret = _lib._objc_msgSend_693( + final _ret = _lib._objc_msgSend_659( _id, _lib._sel_attributesAtIndex_longestEffectiveRange_inRange_1, location, @@ -53773,7 +52687,7 @@ class NSAttributedString extends NSObject { NSObject attribute_atIndex_longestEffectiveRange_inRange_(NSString attrName, int location, ffi.Pointer<_NSRange> range, _NSRange rangeLimit) { - final _ret = _lib._objc_msgSend_694( + final _ret = _lib._objc_msgSend_660( _id, _lib._sel_attribute_atIndex_longestEffectiveRange_inRange_1, attrName._id, @@ -53784,7 +52698,7 @@ class NSAttributedString extends NSObject { } bool isEqualToAttributedString_(NSAttributedString? other) { - return _lib._objc_msgSend_695( + return _lib._objc_msgSend_661( _id, _lib._sel_isEqualToAttributedString_1, other?._id ?? ffi.nullptr); } @@ -53805,14 +52719,14 @@ class NSAttributedString extends NSObject { } NSAttributedString initWithAttributedString_(NSAttributedString? attrStr) { - final _ret = _lib._objc_msgSend_696( + final _ret = _lib._objc_msgSend_662( _id, _lib._sel_initWithAttributedString_1, attrStr?._id ?? ffi.nullptr); return NSAttributedString._(_ret, _lib, retain: true, release: true); } void enumerateAttributesInRange_options_usingBlock_(_NSRange enumerationRange, int opts, ObjCBlock_ffiVoid_NSDictionary_NSRange_bool block) { - _lib._objc_msgSend_697( + _lib._objc_msgSend_663( _id, _lib._sel_enumerateAttributesInRange_options_usingBlock_1, enumerationRange, @@ -53825,7 +52739,7 @@ class NSAttributedString extends NSObject { _NSRange enumerationRange, int opts, ObjCBlock_ffiVoid_ObjCObject_NSRange_bool block) { - _lib._objc_msgSend_698( + _lib._objc_msgSend_664( _id, _lib._sel_enumerateAttribute_inRange_options_usingBlock_1, attrName._id, @@ -53839,7 +52753,7 @@ class NSAttributedString extends NSObject { NSAttributedStringMarkdownParsingOptions? options, NSURL? baseURL, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_703( + final _ret = _lib._objc_msgSend_669( _id, _lib._sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1, markdownFile?._id ?? ffi.nullptr, @@ -53854,7 +52768,7 @@ class NSAttributedString extends NSObject { NSAttributedStringMarkdownParsingOptions? options, NSURL? baseURL, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_704( + final _ret = _lib._objc_msgSend_670( _id, _lib._sel_initWithMarkdown_options_baseURL_error_1, markdown?._id ?? ffi.nullptr, @@ -53869,7 +52783,7 @@ class NSAttributedString extends NSObject { NSAttributedStringMarkdownParsingOptions? options, NSURL? baseURL, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_705( + final _ret = _lib._objc_msgSend_671( _id, _lib._sel_initWithMarkdownString_options_baseURL_error_1, markdownString?._id ?? ffi.nullptr, @@ -53881,7 +52795,7 @@ class NSAttributedString extends NSObject { NSAttributedString initWithFormat_options_locale_( NSAttributedString? format, int options, NSLocale? locale) { - final _ret = _lib._objc_msgSend_706( + final _ret = _lib._objc_msgSend_672( _id, _lib._sel_initWithFormat_options_locale_1, format?._id ?? ffi.nullptr, @@ -53895,7 +52809,7 @@ class NSAttributedString extends NSObject { int options, NSLocale? locale, ffi.Pointer arguments) { - final _ret = _lib._objc_msgSend_707( + final _ret = _lib._objc_msgSend_673( _id, _lib._sel_initWithFormat_options_locale_arguments_1, format?._id ?? ffi.nullptr, @@ -53907,7 +52821,7 @@ class NSAttributedString extends NSObject { static NSAttributedString localizedAttributedStringWithFormat_( SentryCocoa _lib, NSAttributedString? format) { - final _ret = _lib._objc_msgSend_696( + final _ret = _lib._objc_msgSend_662( _lib._class_NSAttributedString1, _lib._sel_localizedAttributedStringWithFormat_1, format?._id ?? ffi.nullptr); @@ -53916,7 +52830,7 @@ class NSAttributedString extends NSObject { static NSAttributedString localizedAttributedStringWithFormat_options_( SentryCocoa _lib, NSAttributedString? format, int options) { - final _ret = _lib._objc_msgSend_708( + final _ret = _lib._objc_msgSend_674( _lib._class_NSAttributedString1, _lib._sel_localizedAttributedStringWithFormat_options_1, format?._id ?? ffi.nullptr, @@ -53925,7 +52839,7 @@ class NSAttributedString extends NSObject { } NSAttributedString attributedStringByInflectingString() { - final _ret = _lib._objc_msgSend_709( + final _ret = _lib._objc_msgSend_675( _id, _lib._sel_attributedStringByInflectingString1); return NSAttributedString._(_ret, _lib, retain: true, release: true); } @@ -54277,19 +53191,19 @@ class NSAttributedStringMarkdownParsingOptions extends NSObject { } int get interpretedSyntax { - return _lib._objc_msgSend_699(_id, _lib._sel_interpretedSyntax1); + return _lib._objc_msgSend_665(_id, _lib._sel_interpretedSyntax1); } set interpretedSyntax(int value) { - return _lib._objc_msgSend_700(_id, _lib._sel_setInterpretedSyntax_1, value); + return _lib._objc_msgSend_666(_id, _lib._sel_setInterpretedSyntax_1, value); } int get failurePolicy { - return _lib._objc_msgSend_701(_id, _lib._sel_failurePolicy1); + return _lib._objc_msgSend_667(_id, _lib._sel_failurePolicy1); } set failurePolicy(int value) { - return _lib._objc_msgSend_702(_id, _lib._sel_setFailurePolicy_1, value); + return _lib._objc_msgSend_668(_id, _lib._sel_setFailurePolicy_1, value); } NSString? get languageCode { @@ -54459,17 +53373,17 @@ class NSMutableAttributedString extends NSAttributedString { } void replaceCharactersInRange_withString_(_NSRange range, NSString? str) { - _lib._objc_msgSend_672(_id, _lib._sel_replaceCharactersInRange_withString_1, + _lib._objc_msgSend_638(_id, _lib._sel_replaceCharactersInRange_withString_1, range, str?._id ?? ffi.nullptr); } void setAttributes_range_(NSDictionary? attrs, _NSRange range) { - _lib._objc_msgSend_713( + _lib._objc_msgSend_679( _id, _lib._sel_setAttributes_range_1, attrs?._id ?? ffi.nullptr, range); } NSMutableString? get mutableString { - final _ret = _lib._objc_msgSend_714(_id, _lib._sel_mutableString1); + final _ret = _lib._objc_msgSend_680(_id, _lib._sel_mutableString1); return _ret.address == 0 ? null : NSMutableString._(_ret, _lib, retain: true, release: true); @@ -54477,23 +53391,23 @@ class NSMutableAttributedString extends NSAttributedString { void addAttribute_value_range_( NSString name, NSObject value, _NSRange range) { - _lib._objc_msgSend_715( + _lib._objc_msgSend_681( _id, _lib._sel_addAttribute_value_range_1, name._id, value._id, range); } void addAttributes_range_(NSDictionary? attrs, _NSRange range) { - _lib._objc_msgSend_713( + _lib._objc_msgSend_679( _id, _lib._sel_addAttributes_range_1, attrs?._id ?? ffi.nullptr, range); } void removeAttribute_range_(NSString name, _NSRange range) { - _lib._objc_msgSend_716( + _lib._objc_msgSend_682( _id, _lib._sel_removeAttribute_range_1, name._id, range); } void replaceCharactersInRange_withAttributedString_( _NSRange range, NSAttributedString? attrString) { - _lib._objc_msgSend_717( + _lib._objc_msgSend_683( _id, _lib._sel_replaceCharactersInRange_withAttributedString_1, range, @@ -54502,12 +53416,12 @@ class NSMutableAttributedString extends NSAttributedString { void insertAttributedString_atIndex_( NSAttributedString? attrString, int loc) { - _lib._objc_msgSend_718(_id, _lib._sel_insertAttributedString_atIndex_1, + _lib._objc_msgSend_684(_id, _lib._sel_insertAttributedString_atIndex_1, attrString?._id ?? ffi.nullptr, loc); } void appendAttributedString_(NSAttributedString? attrString) { - _lib._objc_msgSend_719(_id, _lib._sel_appendAttributedString_1, + _lib._objc_msgSend_685(_id, _lib._sel_appendAttributedString_1, attrString?._id ?? ffi.nullptr); } @@ -54516,7 +53430,7 @@ class NSMutableAttributedString extends NSAttributedString { } void setAttributedString_(NSAttributedString? attrString) { - _lib._objc_msgSend_719( + _lib._objc_msgSend_685( _id, _lib._sel_setAttributedString_1, attrString?._id ?? ffi.nullptr); } @@ -54529,7 +53443,7 @@ class NSMutableAttributedString extends NSAttributedString { } void appendLocalizedFormat_(NSAttributedString? format) { - _lib._objc_msgSend_719( + _lib._objc_msgSend_685( _id, _lib._sel_appendLocalizedFormat_1, format?._id ?? ffi.nullptr); } @@ -54554,7 +53468,7 @@ class NSMutableAttributedString extends NSAttributedString { @override NSMutableAttributedString initWithAttributedString_( NSAttributedString? attrStr) { - final _ret = _lib._objc_msgSend_696( + final _ret = _lib._objc_msgSend_662( _id, _lib._sel_initWithAttributedString_1, attrStr?._id ?? ffi.nullptr); return NSMutableAttributedString._(_ret, _lib, retain: true, release: true); } @@ -54566,7 +53480,7 @@ class NSMutableAttributedString extends NSAttributedString { NSAttributedStringMarkdownParsingOptions? options, NSURL? baseURL, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_703( + final _ret = _lib._objc_msgSend_669( _id, _lib._sel_initWithContentsOfMarkdownFileAtURL_options_baseURL_error_1, markdownFile?._id ?? ffi.nullptr, @@ -54582,7 +53496,7 @@ class NSMutableAttributedString extends NSAttributedString { NSAttributedStringMarkdownParsingOptions? options, NSURL? baseURL, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_704( + final _ret = _lib._objc_msgSend_670( _id, _lib._sel_initWithMarkdown_options_baseURL_error_1, markdown?._id ?? ffi.nullptr, @@ -54598,7 +53512,7 @@ class NSMutableAttributedString extends NSAttributedString { NSAttributedStringMarkdownParsingOptions? options, NSURL? baseURL, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_705( + final _ret = _lib._objc_msgSend_671( _id, _lib._sel_initWithMarkdownString_options_baseURL_error_1, markdownString?._id ?? ffi.nullptr, @@ -54611,7 +53525,7 @@ class NSMutableAttributedString extends NSAttributedString { @override NSMutableAttributedString initWithFormat_options_locale_( NSAttributedString? format, int options, NSLocale? locale) { - final _ret = _lib._objc_msgSend_706( + final _ret = _lib._objc_msgSend_672( _id, _lib._sel_initWithFormat_options_locale_1, format?._id ?? ffi.nullptr, @@ -54626,7 +53540,7 @@ class NSMutableAttributedString extends NSAttributedString { int options, NSLocale? locale, ffi.Pointer arguments) { - final _ret = _lib._objc_msgSend_707( + final _ret = _lib._objc_msgSend_673( _id, _lib._sel_initWithFormat_options_locale_arguments_1, format?._id ?? ffi.nullptr, @@ -54638,7 +53552,7 @@ class NSMutableAttributedString extends NSAttributedString { static NSMutableAttributedString localizedAttributedStringWithFormat_( SentryCocoa _lib, NSAttributedString? format) { - final _ret = _lib._objc_msgSend_696( + final _ret = _lib._objc_msgSend_662( _lib._class_NSMutableAttributedString1, _lib._sel_localizedAttributedStringWithFormat_1, format?._id ?? ffi.nullptr); @@ -54647,7 +53561,7 @@ class NSMutableAttributedString extends NSAttributedString { static NSMutableAttributedString localizedAttributedStringWithFormat_options_( SentryCocoa _lib, NSAttributedString? format, int options) { - final _ret = _lib._objc_msgSend_708( + final _ret = _lib._objc_msgSend_674( _lib._class_NSMutableAttributedString1, _lib._sel_localizedAttributedStringWithFormat_options_1, format?._id ?? ffi.nullptr, @@ -54776,11 +53690,11 @@ class NSDateFormatter extends NSFormatter { } int get formattingContext { - return _lib._objc_msgSend_724(_id, _lib._sel_formattingContext1); + return _lib._objc_msgSend_690(_id, _lib._sel_formattingContext1); } set formattingContext(int value) { - return _lib._objc_msgSend_725(_id, _lib._sel_setFormattingContext_1, value); + return _lib._objc_msgSend_691(_id, _lib._sel_setFormattingContext_1, value); } bool getObjectValue_forString_range_error_( @@ -54788,7 +53702,7 @@ class NSDateFormatter extends NSFormatter { NSString? string, ffi.Pointer<_NSRange> rangep, ffi.Pointer> error) { - return _lib._objc_msgSend_726( + return _lib._objc_msgSend_692( _id, _lib._sel_getObjectValue_forString_range_error_1, obj, @@ -54811,7 +53725,7 @@ class NSDateFormatter extends NSFormatter { static NSString localizedStringFromDate_dateStyle_timeStyle_( SentryCocoa _lib, NSDate? date, int dstyle, int tstyle) { - final _ret = _lib._objc_msgSend_727( + final _ret = _lib._objc_msgSend_693( _lib._class_NSDateFormatter1, _lib._sel_localizedStringFromDate_dateStyle_timeStyle_1, date?._id ?? ffi.nullptr, @@ -54822,7 +53736,7 @@ class NSDateFormatter extends NSFormatter { static NSString dateFormatFromTemplate_options_locale_( SentryCocoa _lib, NSString? tmplate, int opts, NSLocale? locale) { - final _ret = _lib._objc_msgSend_728( + final _ret = _lib._objc_msgSend_694( _lib._class_NSDateFormatter1, _lib._sel_dateFormatFromTemplate_options_locale_1, tmplate?._id ?? ffi.nullptr, @@ -54832,12 +53746,12 @@ class NSDateFormatter extends NSFormatter { } static int getDefaultFormatterBehavior(SentryCocoa _lib) { - return _lib._objc_msgSend_729( + return _lib._objc_msgSend_695( _lib._class_NSDateFormatter1, _lib._sel_defaultFormatterBehavior1); } static void setDefaultFormatterBehavior(SentryCocoa _lib, int value) { - return _lib._objc_msgSend_730(_lib._class_NSDateFormatter1, + return _lib._objc_msgSend_696(_lib._class_NSDateFormatter1, _lib._sel_setDefaultFormatterBehavior_1, value); } @@ -54859,19 +53773,19 @@ class NSDateFormatter extends NSFormatter { } int get dateStyle { - return _lib._objc_msgSend_731(_id, _lib._sel_dateStyle1); + return _lib._objc_msgSend_697(_id, _lib._sel_dateStyle1); } set dateStyle(int value) { - return _lib._objc_msgSend_732(_id, _lib._sel_setDateStyle_1, value); + return _lib._objc_msgSend_698(_id, _lib._sel_setDateStyle_1, value); } int get timeStyle { - return _lib._objc_msgSend_731(_id, _lib._sel_timeStyle1); + return _lib._objc_msgSend_697(_id, _lib._sel_timeStyle1); } set timeStyle(int value) { - return _lib._objc_msgSend_732(_id, _lib._sel_setTimeStyle_1, value); + return _lib._objc_msgSend_698(_id, _lib._sel_setTimeStyle_1, value); } NSLocale? get locale { @@ -54882,7 +53796,7 @@ class NSDateFormatter extends NSFormatter { } set locale(NSLocale? value) { - return _lib._objc_msgSend_733( + return _lib._objc_msgSend_699( _id, _lib._sel_setLocale_1, value?._id ?? ffi.nullptr); } @@ -54896,11 +53810,11 @@ class NSDateFormatter extends NSFormatter { } int get formatterBehavior { - return _lib._objc_msgSend_729(_id, _lib._sel_formatterBehavior1); + return _lib._objc_msgSend_695(_id, _lib._sel_formatterBehavior1); } set formatterBehavior(int value) { - return _lib._objc_msgSend_730(_id, _lib._sel_setFormatterBehavior_1, value); + return _lib._objc_msgSend_696(_id, _lib._sel_setFormatterBehavior_1, value); } NSTimeZone? get timeZone { @@ -54916,14 +53830,14 @@ class NSDateFormatter extends NSFormatter { } NSCalendar? get calendar { - final _ret = _lib._objc_msgSend_734(_id, _lib._sel_calendar1); + final _ret = _lib._objc_msgSend_700(_id, _lib._sel_calendar1); return _ret.address == 0 ? null : NSCalendar._(_ret, _lib, retain: true, release: true); } set calendar(NSCalendar? value) { - return _lib._objc_msgSend_740( + return _lib._objc_msgSend_706( _id, _lib._sel_setCalendar_1, value?._id ?? ffi.nullptr); } @@ -54967,7 +53881,7 @@ class NSDateFormatter extends NSFormatter { } set eraSymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setEraSymbols_1, value?._id ?? ffi.nullptr); } @@ -54979,7 +53893,7 @@ class NSDateFormatter extends NSFormatter { } set monthSymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setMonthSymbols_1, value?._id ?? ffi.nullptr); } @@ -54991,7 +53905,7 @@ class NSDateFormatter extends NSFormatter { } set shortMonthSymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setShortMonthSymbols_1, value?._id ?? ffi.nullptr); } @@ -55003,7 +53917,7 @@ class NSDateFormatter extends NSFormatter { } set weekdaySymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setWeekdaySymbols_1, value?._id ?? ffi.nullptr); } @@ -55015,7 +53929,7 @@ class NSDateFormatter extends NSFormatter { } set shortWeekdaySymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setShortWeekdaySymbols_1, value?._id ?? ffi.nullptr); } @@ -55051,7 +53965,7 @@ class NSDateFormatter extends NSFormatter { } set longEraSymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setLongEraSymbols_1, value?._id ?? ffi.nullptr); } @@ -55063,7 +53977,7 @@ class NSDateFormatter extends NSFormatter { } set veryShortMonthSymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setVeryShortMonthSymbols_1, value?._id ?? ffi.nullptr); } @@ -55075,7 +53989,7 @@ class NSDateFormatter extends NSFormatter { } set standaloneMonthSymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setStandaloneMonthSymbols_1, value?._id ?? ffi.nullptr); } @@ -55088,7 +54002,7 @@ class NSDateFormatter extends NSFormatter { } set shortStandaloneMonthSymbols(NSArray? value) { - return _lib._objc_msgSend_765(_id, + return _lib._objc_msgSend_731(_id, _lib._sel_setShortStandaloneMonthSymbols_1, value?._id ?? ffi.nullptr); } @@ -55101,7 +54015,7 @@ class NSDateFormatter extends NSFormatter { } set veryShortStandaloneMonthSymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setVeryShortStandaloneMonthSymbols_1, value?._id ?? ffi.nullptr); @@ -55115,7 +54029,7 @@ class NSDateFormatter extends NSFormatter { } set veryShortWeekdaySymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setVeryShortWeekdaySymbols_1, value?._id ?? ffi.nullptr); } @@ -55128,7 +54042,7 @@ class NSDateFormatter extends NSFormatter { } set standaloneWeekdaySymbols(NSArray? value) { - return _lib._objc_msgSend_765(_id, _lib._sel_setStandaloneWeekdaySymbols_1, + return _lib._objc_msgSend_731(_id, _lib._sel_setStandaloneWeekdaySymbols_1, value?._id ?? ffi.nullptr); } @@ -55141,7 +54055,7 @@ class NSDateFormatter extends NSFormatter { } set shortStandaloneWeekdaySymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setShortStandaloneWeekdaySymbols_1, value?._id ?? ffi.nullptr); @@ -55156,7 +54070,7 @@ class NSDateFormatter extends NSFormatter { } set veryShortStandaloneWeekdaySymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setVeryShortStandaloneWeekdaySymbols_1, value?._id ?? ffi.nullptr); @@ -55170,7 +54084,7 @@ class NSDateFormatter extends NSFormatter { } set quarterSymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setQuarterSymbols_1, value?._id ?? ffi.nullptr); } @@ -55182,7 +54096,7 @@ class NSDateFormatter extends NSFormatter { } set shortQuarterSymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setShortQuarterSymbols_1, value?._id ?? ffi.nullptr); } @@ -55195,7 +54109,7 @@ class NSDateFormatter extends NSFormatter { } set standaloneQuarterSymbols(NSArray? value) { - return _lib._objc_msgSend_765(_id, _lib._sel_setStandaloneQuarterSymbols_1, + return _lib._objc_msgSend_731(_id, _lib._sel_setStandaloneQuarterSymbols_1, value?._id ?? ffi.nullptr); } @@ -55208,7 +54122,7 @@ class NSDateFormatter extends NSFormatter { } set shortStandaloneQuarterSymbols(NSArray? value) { - return _lib._objc_msgSend_765( + return _lib._objc_msgSend_731( _id, _lib._sel_setShortStandaloneQuarterSymbols_1, value?._id ?? ffi.nullptr); @@ -55373,7 +54287,7 @@ class NSFormatter extends NSObject { NSAttributedString attributedStringForObjectValue_withDefaultAttributes_( NSObject obj, NSDictionary? attrs) { - final _ret = _lib._objc_msgSend_720( + final _ret = _lib._objc_msgSend_686( _id, _lib._sel_attributedStringForObjectValue_withDefaultAttributes_1, obj._id, @@ -55391,7 +54305,7 @@ class NSFormatter extends NSObject { ffi.Pointer> obj, NSString? string, ffi.Pointer> error) { - return _lib._objc_msgSend_721( + return _lib._objc_msgSend_687( _id, _lib._sel_getObjectValue_forString_errorDescription_1, obj, @@ -55403,7 +54317,7 @@ class NSFormatter extends NSObject { NSString? partialString, ffi.Pointer> newString, ffi.Pointer> error) { - return _lib._objc_msgSend_722( + return _lib._objc_msgSend_688( _id, _lib._sel_isPartialStringValid_newEditingString_errorDescription_1, partialString?._id ?? ffi.nullptr, @@ -55418,7 +54332,7 @@ class NSFormatter extends NSObject { NSString? origString, _NSRange origSelRange, ffi.Pointer> error) { - return _lib._objc_msgSend_723( + return _lib._objc_msgSend_689( _id, _lib._sel_isPartialStringValid_proposedSelectedRange_originalString_originalSelectedRange_errorDescription_1, partialStringPtr, @@ -55567,7 +54481,7 @@ class NSCalendar extends NSObject { } static NSCalendar? getCurrentCalendar(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_734( + final _ret = _lib._objc_msgSend_700( _lib._class_NSCalendar1, _lib._sel_currentCalendar1); return _ret.address == 0 ? null @@ -55575,7 +54489,7 @@ class NSCalendar extends NSObject { } static NSCalendar? getAutoupdatingCurrentCalendar(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_734( + final _ret = _lib._objc_msgSend_700( _lib._class_NSCalendar1, _lib._sel_autoupdatingCurrentCalendar1); return _ret.address == 0 ? null @@ -55584,7 +54498,7 @@ class NSCalendar extends NSObject { static NSCalendar calendarWithIdentifier_( SentryCocoa _lib, NSString calendarIdentifierConstant) { - final _ret = _lib._objc_msgSend_735(_lib._class_NSCalendar1, + final _ret = _lib._objc_msgSend_701(_lib._class_NSCalendar1, _lib._sel_calendarWithIdentifier_1, calendarIdentifierConstant._id); return NSCalendar._(_ret, _lib, retain: true, release: true); } @@ -55614,7 +54528,7 @@ class NSCalendar extends NSObject { } set locale(NSLocale? value) { - return _lib._objc_msgSend_733( + return _lib._objc_msgSend_699( _id, _lib._sel_setLocale_1, value?._id ?? ffi.nullptr); } @@ -55795,21 +54709,21 @@ class NSCalendar extends NSObject { } void minimumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { - _lib._objc_msgSend_736(stret, _id, _lib._sel_minimumRangeOfUnit_1, unit); + _lib._objc_msgSend_702(stret, _id, _lib._sel_minimumRangeOfUnit_1, unit); } void maximumRangeOfUnit_(ffi.Pointer<_NSRange> stret, int unit) { - _lib._objc_msgSend_736(stret, _id, _lib._sel_maximumRangeOfUnit_1, unit); + _lib._objc_msgSend_702(stret, _id, _lib._sel_maximumRangeOfUnit_1, unit); } void rangeOfUnit_inUnit_forDate_( ffi.Pointer<_NSRange> stret, int smaller, int larger, NSDate? date) { - _lib._objc_msgSend_737(stret, _id, _lib._sel_rangeOfUnit_inUnit_forDate_1, + _lib._objc_msgSend_703(stret, _id, _lib._sel_rangeOfUnit_inUnit_forDate_1, smaller, larger, date?._id ?? ffi.nullptr); } int ordinalityOfUnit_inUnit_forDate_(int smaller, int larger, NSDate? date) { - return _lib._objc_msgSend_738( + return _lib._objc_msgSend_704( _id, _lib._sel_ordinalityOfUnit_inUnit_forDate_1, smaller, @@ -55822,7 +54736,7 @@ class NSCalendar extends NSObject { ffi.Pointer> datep, ffi.Pointer tip, NSDate? date) { - return _lib._objc_msgSend_739( + return _lib._objc_msgSend_705( _id, _lib._sel_rangeOfUnit_startDate_interval_forDate_1, unit, @@ -55832,20 +54746,20 @@ class NSCalendar extends NSObject { } NSDate dateFromComponents_(NSDateComponents? comps) { - final _ret = _lib._objc_msgSend_744( + final _ret = _lib._objc_msgSend_710( _id, _lib._sel_dateFromComponents_1, comps?._id ?? ffi.nullptr); return NSDate._(_ret, _lib, retain: true, release: true); } NSDateComponents components_fromDate_(int unitFlags, NSDate? date) { - final _ret = _lib._objc_msgSend_745(_id, _lib._sel_components_fromDate_1, + final _ret = _lib._objc_msgSend_711(_id, _lib._sel_components_fromDate_1, unitFlags, date?._id ?? ffi.nullptr); return NSDateComponents._(_ret, _lib, retain: true, release: true); } NSDate dateByAddingComponents_toDate_options_( NSDateComponents? comps, NSDate? date, int opts) { - final _ret = _lib._objc_msgSend_746( + final _ret = _lib._objc_msgSend_712( _id, _lib._sel_dateByAddingComponents_toDate_options_1, comps?._id ?? ffi.nullptr, @@ -55856,7 +54770,7 @@ class NSCalendar extends NSObject { NSDateComponents components_fromDate_toDate_options_( int unitFlags, NSDate? startingDate, NSDate? resultDate, int opts) { - final _ret = _lib._objc_msgSend_747( + final _ret = _lib._objc_msgSend_713( _id, _lib._sel_components_fromDate_toDate_options_1, unitFlags, @@ -55872,7 +54786,7 @@ class NSCalendar extends NSObject { ffi.Pointer monthValuePointer, ffi.Pointer dayValuePointer, NSDate? date) { - _lib._objc_msgSend_748( + _lib._objc_msgSend_714( _id, _lib._sel_getEra_year_month_day_fromDate_1, eraValuePointer, @@ -55888,7 +54802,7 @@ class NSCalendar extends NSObject { ffi.Pointer weekValuePointer, ffi.Pointer weekdayValuePointer, NSDate? date) { - _lib._objc_msgSend_748( + _lib._objc_msgSend_714( _id, _lib._sel_getEra_yearForWeekOfYear_weekOfYear_weekday_fromDate_1, eraValuePointer, @@ -55904,7 +54818,7 @@ class NSCalendar extends NSObject { ffi.Pointer secondValuePointer, ffi.Pointer nanosecondValuePointer, NSDate? date) { - _lib._objc_msgSend_748( + _lib._objc_msgSend_714( _id, _lib._sel_getHour_minute_second_nanosecond_fromDate_1, hourValuePointer, @@ -55915,7 +54829,7 @@ class NSCalendar extends NSObject { } int component_fromDate_(int unit, NSDate? date) { - return _lib._objc_msgSend_749( + return _lib._objc_msgSend_715( _id, _lib._sel_component_fromDate_1, unit, date?._id ?? ffi.nullptr); } @@ -55928,7 +54842,7 @@ class NSCalendar extends NSObject { int minuteValue, int secondValue, int nanosecondValue) { - final _ret = _lib._objc_msgSend_750( + final _ret = _lib._objc_msgSend_716( _id, _lib._sel_dateWithEra_year_month_day_hour_minute_second_nanosecond_1, eraValue, @@ -55952,7 +54866,7 @@ class NSCalendar extends NSObject { int minuteValue, int secondValue, int nanosecondValue) { - final _ret = _lib._objc_msgSend_750( + final _ret = _lib._objc_msgSend_716( _id, _lib._sel_dateWithEra_yearForWeekOfYear_weekOfYear_weekday_hour_minute_second_nanosecond_1, eraValue, @@ -55974,7 +54888,7 @@ class NSCalendar extends NSObject { NSDateComponents componentsInTimeZone_fromDate_( NSTimeZone? timezone, NSDate? date) { - final _ret = _lib._objc_msgSend_751( + final _ret = _lib._objc_msgSend_717( _id, _lib._sel_componentsInTimeZone_fromDate_1, timezone?._id ?? ffi.nullptr, @@ -55984,7 +54898,7 @@ class NSCalendar extends NSObject { int compareDate_toDate_toUnitGranularity_( NSDate? date1, NSDate? date2, int unit) { - return _lib._objc_msgSend_752( + return _lib._objc_msgSend_718( _id, _lib._sel_compareDate_toDate_toUnitGranularity_1, date1?._id ?? ffi.nullptr, @@ -55994,7 +54908,7 @@ class NSCalendar extends NSObject { bool isDate_equalToDate_toUnitGranularity_( NSDate? date1, NSDate? date2, int unit) { - return _lib._objc_msgSend_753( + return _lib._objc_msgSend_719( _id, _lib._sel_isDate_equalToDate_toUnitGranularity_1, date1?._id ?? ffi.nullptr, @@ -56003,7 +54917,7 @@ class NSCalendar extends NSObject { } bool isDate_inSameDayAsDate_(NSDate? date1, NSDate? date2) { - return _lib._objc_msgSend_754(_id, _lib._sel_isDate_inSameDayAsDate_1, + return _lib._objc_msgSend_720(_id, _lib._sel_isDate_inSameDayAsDate_1, date1?._id ?? ffi.nullptr, date2?._id ?? ffi.nullptr); } @@ -56031,7 +54945,7 @@ class NSCalendar extends NSObject { ffi.Pointer> datep, ffi.Pointer tip, NSDate? date) { - return _lib._objc_msgSend_755( + return _lib._objc_msgSend_721( _id, _lib._sel_rangeOfWeekendStartDate_interval_containingDate_1, datep, @@ -56044,7 +54958,7 @@ class NSCalendar extends NSObject { ffi.Pointer tip, int options, NSDate? date) { - return _lib._objc_msgSend_756( + return _lib._objc_msgSend_722( _id, _lib._sel_nextWeekendStartDate_interval_options_afterDate_1, datep, @@ -56058,7 +54972,7 @@ class NSCalendar extends NSObject { NSDateComponents? startingDateComp, NSDateComponents? resultDateComp, int options) { - final _ret = _lib._objc_msgSend_757( + final _ret = _lib._objc_msgSend_723( _id, _lib._sel_components_fromDateComponents_toDateComponents_options_1, unitFlags, @@ -56070,7 +54984,7 @@ class NSCalendar extends NSObject { NSDate dateByAddingUnit_value_toDate_options_( int unit, int value, NSDate? date, int options) { - final _ret = _lib._objc_msgSend_758( + final _ret = _lib._objc_msgSend_724( _id, _lib._sel_dateByAddingUnit_value_toDate_options_1, unit, @@ -56085,7 +54999,7 @@ class NSCalendar extends NSObject { NSDateComponents? comps, int opts, ObjCBlock_ffiVoid_NSDate_bool_bool block) { - _lib._objc_msgSend_759( + _lib._objc_msgSend_725( _id, _lib._sel_enumerateDatesStartingAfterDate_matchingComponents_options_usingBlock_1, start?._id ?? ffi.nullptr, @@ -56096,7 +55010,7 @@ class NSCalendar extends NSObject { NSDate nextDateAfterDate_matchingComponents_options_( NSDate? date, NSDateComponents? comps, int options) { - final _ret = _lib._objc_msgSend_760( + final _ret = _lib._objc_msgSend_726( _id, _lib._sel_nextDateAfterDate_matchingComponents_options_1, date?._id ?? ffi.nullptr, @@ -56107,7 +55021,7 @@ class NSCalendar extends NSObject { NSDate nextDateAfterDate_matchingUnit_value_options_( NSDate? date, int unit, int value, int options) { - final _ret = _lib._objc_msgSend_761( + final _ret = _lib._objc_msgSend_727( _id, _lib._sel_nextDateAfterDate_matchingUnit_value_options_1, date?._id ?? ffi.nullptr, @@ -56119,7 +55033,7 @@ class NSCalendar extends NSObject { NSDate nextDateAfterDate_matchingHour_minute_second_options_(NSDate? date, int hourValue, int minuteValue, int secondValue, int options) { - final _ret = _lib._objc_msgSend_762( + final _ret = _lib._objc_msgSend_728( _id, _lib._sel_nextDateAfterDate_matchingHour_minute_second_options_1, date?._id ?? ffi.nullptr, @@ -56132,7 +55046,7 @@ class NSCalendar extends NSObject { NSDate dateBySettingUnit_value_ofDate_options_( int unit, int v, NSDate? date, int opts) { - final _ret = _lib._objc_msgSend_758( + final _ret = _lib._objc_msgSend_724( _id, _lib._sel_dateBySettingUnit_value_ofDate_options_1, unit, @@ -56144,7 +55058,7 @@ class NSCalendar extends NSObject { NSDate dateBySettingHour_minute_second_ofDate_options_( int h, int m, int s, NSDate? date, int opts) { - final _ret = _lib._objc_msgSend_763( + final _ret = _lib._objc_msgSend_729( _id, _lib._sel_dateBySettingHour_minute_second_ofDate_options_1, h, @@ -56156,7 +55070,7 @@ class NSCalendar extends NSObject { } bool date_matchesComponents_(NSDate? date, NSDateComponents? components) { - return _lib._objc_msgSend_764(_id, _lib._sel_date_matchesComponents_1, + return _lib._objc_msgSend_730(_id, _lib._sel_date_matchesComponents_1, date?._id ?? ffi.nullptr, components?._id ?? ffi.nullptr); } @@ -56306,14 +55220,14 @@ class NSDateComponents extends NSObject { } NSCalendar? get calendar { - final _ret = _lib._objc_msgSend_734(_id, _lib._sel_calendar1); + final _ret = _lib._objc_msgSend_700(_id, _lib._sel_calendar1); return _ret.address == 0 ? null : NSCalendar._(_ret, _lib, retain: true, release: true); } set calendar(NSCalendar? value) { - return _lib._objc_msgSend_740( + return _lib._objc_msgSend_706( _id, _lib._sel_setCalendar_1, value?._id ?? ffi.nullptr); } @@ -56465,11 +55379,11 @@ class NSDateComponents extends NSObject { } void setValue_forComponent_(int value, int unit) { - _lib._objc_msgSend_741(_id, _lib._sel_setValue_forComponent_1, value, unit); + _lib._objc_msgSend_707(_id, _lib._sel_setValue_forComponent_1, value, unit); } int valueForComponent_(int unit) { - return _lib._objc_msgSend_742(_id, _lib._sel_valueForComponent_1, unit); + return _lib._objc_msgSend_708(_id, _lib._sel_valueForComponent_1, unit); } bool get validDate { @@ -56477,7 +55391,7 @@ class NSDateComponents extends NSObject { } bool isValidDateInCalendar_(NSCalendar? calendar) { - return _lib._objc_msgSend_743( + return _lib._objc_msgSend_709( _id, _lib._sel_isValidDateInCalendar_1, calendar?._id ?? ffi.nullptr); } @@ -56710,11 +55624,11 @@ class NSNumberFormatter extends NSFormatter { } int get formattingContext { - return _lib._objc_msgSend_724(_id, _lib._sel_formattingContext1); + return _lib._objc_msgSend_690(_id, _lib._sel_formattingContext1); } set formattingContext(int value) { - return _lib._objc_msgSend_725(_id, _lib._sel_setFormattingContext_1, value); + return _lib._objc_msgSend_691(_id, _lib._sel_setFormattingContext_1, value); } bool getObjectValue_forString_range_error_( @@ -56722,7 +55636,7 @@ class NSNumberFormatter extends NSFormatter { NSString? string, ffi.Pointer<_NSRange> rangep, ffi.Pointer> error) { - return _lib._objc_msgSend_726( + return _lib._objc_msgSend_692( _id, _lib._sel_getObjectValue_forString_range_error_1, obj, @@ -56732,20 +55646,20 @@ class NSNumberFormatter extends NSFormatter { } NSString stringFromNumber_(NSNumber? number) { - final _ret = _lib._objc_msgSend_766( + final _ret = _lib._objc_msgSend_732( _id, _lib._sel_stringFromNumber_1, number?._id ?? ffi.nullptr); return NSString._(_ret, _lib, retain: true, release: true); } NSNumber numberFromString_(NSString? string) { - final _ret = _lib._objc_msgSend_767( + final _ret = _lib._objc_msgSend_733( _id, _lib._sel_numberFromString_1, string?._id ?? ffi.nullptr); return NSNumber._(_ret, _lib, retain: true, release: true); } static NSString localizedStringFromNumber_numberStyle_( SentryCocoa _lib, NSNumber? num, int nstyle) { - final _ret = _lib._objc_msgSend_768( + final _ret = _lib._objc_msgSend_734( _lib._class_NSNumberFormatter1, _lib._sel_localizedStringFromNumber_numberStyle_1, num?._id ?? ffi.nullptr, @@ -56754,21 +55668,21 @@ class NSNumberFormatter extends NSFormatter { } static int defaultFormatterBehavior(SentryCocoa _lib) { - return _lib._objc_msgSend_769( + return _lib._objc_msgSend_735( _lib._class_NSNumberFormatter1, _lib._sel_defaultFormatterBehavior1); } static void setDefaultFormatterBehavior_(SentryCocoa _lib, int behavior) { - _lib._objc_msgSend_770(_lib._class_NSNumberFormatter1, + _lib._objc_msgSend_736(_lib._class_NSNumberFormatter1, _lib._sel_setDefaultFormatterBehavior_1, behavior); } int get numberStyle { - return _lib._objc_msgSend_771(_id, _lib._sel_numberStyle1); + return _lib._objc_msgSend_737(_id, _lib._sel_numberStyle1); } set numberStyle(int value) { - return _lib._objc_msgSend_772(_id, _lib._sel_setNumberStyle_1, value); + return _lib._objc_msgSend_738(_id, _lib._sel_setNumberStyle_1, value); } NSLocale? get locale { @@ -56779,7 +55693,7 @@ class NSNumberFormatter extends NSFormatter { } set locale(NSLocale? value) { - return _lib._objc_msgSend_733( + return _lib._objc_msgSend_699( _id, _lib._sel_setLocale_1, value?._id ?? ffi.nullptr); } @@ -56793,11 +55707,11 @@ class NSNumberFormatter extends NSFormatter { } int get formatterBehavior { - return _lib._objc_msgSend_769(_id, _lib._sel_formatterBehavior1); + return _lib._objc_msgSend_735(_id, _lib._sel_formatterBehavior1); } set formatterBehavior(int value) { - return _lib._objc_msgSend_773(_id, _lib._sel_setFormatterBehavior_1, value); + return _lib._objc_msgSend_739(_id, _lib._sel_setFormatterBehavior_1, value); } NSString? get negativeFormat { @@ -57214,7 +56128,7 @@ class NSNumberFormatter extends NSFormatter { } set multiplier(NSNumber? value) { - return _lib._objc_msgSend_654( + return _lib._objc_msgSend_620( _id, _lib._sel_setMultiplier_1, value?._id ?? ffi.nullptr); } @@ -57239,19 +56153,19 @@ class NSNumberFormatter extends NSFormatter { } int get paddingPosition { - return _lib._objc_msgSend_774(_id, _lib._sel_paddingPosition1); + return _lib._objc_msgSend_740(_id, _lib._sel_paddingPosition1); } set paddingPosition(int value) { - return _lib._objc_msgSend_775(_id, _lib._sel_setPaddingPosition_1, value); + return _lib._objc_msgSend_741(_id, _lib._sel_setPaddingPosition_1, value); } int get roundingMode { - return _lib._objc_msgSend_776(_id, _lib._sel_roundingMode1); + return _lib._objc_msgSend_742(_id, _lib._sel_roundingMode1); } set roundingMode(int value) { - return _lib._objc_msgSend_777(_id, _lib._sel_setRoundingMode_1, value); + return _lib._objc_msgSend_743(_id, _lib._sel_setRoundingMode_1, value); } NSNumber? get roundingIncrement { @@ -57262,7 +56176,7 @@ class NSNumberFormatter extends NSFormatter { } set roundingIncrement(NSNumber? value) { - return _lib._objc_msgSend_654( + return _lib._objc_msgSend_620( _id, _lib._sel_setRoundingIncrement_1, value?._id ?? ffi.nullptr); } @@ -57310,7 +56224,7 @@ class NSNumberFormatter extends NSFormatter { } set minimum(NSNumber? value) { - return _lib._objc_msgSend_654( + return _lib._objc_msgSend_620( _id, _lib._sel_setMinimum_1, value?._id ?? ffi.nullptr); } @@ -57322,7 +56236,7 @@ class NSNumberFormatter extends NSFormatter { } set maximum(NSNumber? value) { - return _lib._objc_msgSend_654( + return _lib._objc_msgSend_620( _id, _lib._sel_setMaximum_1, value?._id ?? ffi.nullptr); } @@ -57427,53 +56341,53 @@ class NSNumberFormatter extends NSFormatter { NSAttributedString? get attributedStringForZero { final _ret = - _lib._objc_msgSend_709(_id, _lib._sel_attributedStringForZero1); + _lib._objc_msgSend_675(_id, _lib._sel_attributedStringForZero1); return _ret.address == 0 ? null : NSAttributedString._(_ret, _lib, retain: true, release: true); } set attributedStringForZero(NSAttributedString? value) { - return _lib._objc_msgSend_778( + return _lib._objc_msgSend_744( _id, _lib._sel_setAttributedStringForZero_1, value?._id ?? ffi.nullptr); } NSAttributedString? get attributedStringForNil { - final _ret = _lib._objc_msgSend_709(_id, _lib._sel_attributedStringForNil1); + final _ret = _lib._objc_msgSend_675(_id, _lib._sel_attributedStringForNil1); return _ret.address == 0 ? null : NSAttributedString._(_ret, _lib, retain: true, release: true); } set attributedStringForNil(NSAttributedString? value) { - return _lib._objc_msgSend_778( + return _lib._objc_msgSend_744( _id, _lib._sel_setAttributedStringForNil_1, value?._id ?? ffi.nullptr); } NSAttributedString? get attributedStringForNotANumber { final _ret = - _lib._objc_msgSend_709(_id, _lib._sel_attributedStringForNotANumber1); + _lib._objc_msgSend_675(_id, _lib._sel_attributedStringForNotANumber1); return _ret.address == 0 ? null : NSAttributedString._(_ret, _lib, retain: true, release: true); } set attributedStringForNotANumber(NSAttributedString? value) { - return _lib._objc_msgSend_778( + return _lib._objc_msgSend_744( _id, _lib._sel_setAttributedStringForNotANumber_1, value?._id ?? ffi.nullptr); } NSDecimalNumberHandler? get roundingBehavior { - final _ret = _lib._objc_msgSend_779(_id, _lib._sel_roundingBehavior1); + final _ret = _lib._objc_msgSend_745(_id, _lib._sel_roundingBehavior1); return _ret.address == 0 ? null : NSDecimalNumberHandler._(_ret, _lib, retain: true, release: true); } set roundingBehavior(NSDecimalNumberHandler? value) { - return _lib._objc_msgSend_781( + return _lib._objc_msgSend_747( _id, _lib._sel_setRoundingBehavior_1, value?._id ?? ffi.nullptr); } @@ -57633,7 +56547,7 @@ class NSDecimalNumberHandler extends NSObject { static NSDecimalNumberHandler? getDefaultDecimalNumberHandler( SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_779(_lib._class_NSDecimalNumberHandler1, + final _ret = _lib._objc_msgSend_745(_lib._class_NSDecimalNumberHandler1, _lib._sel_defaultDecimalNumberHandler1); return _ret.address == 0 ? null @@ -57648,7 +56562,7 @@ class NSDecimalNumberHandler extends NSObject { bool overflow, bool underflow, bool divideByZero) { - final _ret = _lib._objc_msgSend_780( + final _ret = _lib._objc_msgSend_746( _id, _lib._sel_initWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1, roundingMode, @@ -57669,7 +56583,7 @@ class NSDecimalNumberHandler extends NSObject { bool overflow, bool underflow, bool divideByZero) { - final _ret = _lib._objc_msgSend_780( + final _ret = _lib._objc_msgSend_746( _lib._class_NSDecimalNumberHandler1, _lib._sel_decimalNumberHandlerWithRoundingMode_scale_raiseOnExactness_raiseOnOverflow_raiseOnUnderflow_raiseOnDivideByZero_1, roundingMode, @@ -57827,7 +56741,7 @@ class NSScanner extends NSObject { } set charactersToBeSkipped(NSCharacterSet? value) { - return _lib._objc_msgSend_782( + return _lib._objc_msgSend_748( _id, _lib._sel_setCharactersToBeSkipped_1, value?._id ?? ffi.nullptr); } @@ -57855,55 +56769,55 @@ class NSScanner extends NSObject { } bool scanInt_(ffi.Pointer result) { - return _lib._objc_msgSend_783(_id, _lib._sel_scanInt_1, result); + return _lib._objc_msgSend_749(_id, _lib._sel_scanInt_1, result); } bool scanInteger_(ffi.Pointer result) { - return _lib._objc_msgSend_784(_id, _lib._sel_scanInteger_1, result); + return _lib._objc_msgSend_750(_id, _lib._sel_scanInteger_1, result); } bool scanLongLong_(ffi.Pointer result) { - return _lib._objc_msgSend_785(_id, _lib._sel_scanLongLong_1, result); + return _lib._objc_msgSend_751(_id, _lib._sel_scanLongLong_1, result); } bool scanUnsignedLongLong_(ffi.Pointer result) { - return _lib._objc_msgSend_786( + return _lib._objc_msgSend_752( _id, _lib._sel_scanUnsignedLongLong_1, result); } bool scanFloat_(ffi.Pointer result) { - return _lib._objc_msgSend_787(_id, _lib._sel_scanFloat_1, result); + return _lib._objc_msgSend_753(_id, _lib._sel_scanFloat_1, result); } bool scanDouble_(ffi.Pointer result) { - return _lib._objc_msgSend_788(_id, _lib._sel_scanDouble_1, result); + return _lib._objc_msgSend_754(_id, _lib._sel_scanDouble_1, result); } bool scanHexInt_(ffi.Pointer result) { - return _lib._objc_msgSend_789(_id, _lib._sel_scanHexInt_1, result); + return _lib._objc_msgSend_755(_id, _lib._sel_scanHexInt_1, result); } bool scanHexLongLong_(ffi.Pointer result) { - return _lib._objc_msgSend_786(_id, _lib._sel_scanHexLongLong_1, result); + return _lib._objc_msgSend_752(_id, _lib._sel_scanHexLongLong_1, result); } bool scanHexFloat_(ffi.Pointer result) { - return _lib._objc_msgSend_787(_id, _lib._sel_scanHexFloat_1, result); + return _lib._objc_msgSend_753(_id, _lib._sel_scanHexFloat_1, result); } bool scanHexDouble_(ffi.Pointer result) { - return _lib._objc_msgSend_788(_id, _lib._sel_scanHexDouble_1, result); + return _lib._objc_msgSend_754(_id, _lib._sel_scanHexDouble_1, result); } bool scanString_intoString_( NSString? string, ffi.Pointer> result) { - return _lib._objc_msgSend_790(_id, _lib._sel_scanString_intoString_1, + return _lib._objc_msgSend_756(_id, _lib._sel_scanString_intoString_1, string?._id ?? ffi.nullptr, result); } bool scanCharactersFromSet_intoString_( NSCharacterSet? set, ffi.Pointer> result) { - return _lib._objc_msgSend_791( + return _lib._objc_msgSend_757( _id, _lib._sel_scanCharactersFromSet_intoString_1, set?._id ?? ffi.nullptr, @@ -57912,13 +56826,13 @@ class NSScanner extends NSObject { bool scanUpToString_intoString_( NSString? string, ffi.Pointer> result) { - return _lib._objc_msgSend_790(_id, _lib._sel_scanUpToString_intoString_1, + return _lib._objc_msgSend_756(_id, _lib._sel_scanUpToString_intoString_1, string?._id ?? ffi.nullptr, result); } bool scanUpToCharactersFromSet_intoString_( NSCharacterSet? set, ffi.Pointer> result) { - return _lib._objc_msgSend_791( + return _lib._objc_msgSend_757( _id, _lib._sel_scanUpToCharactersFromSet_intoString_1, set?._id ?? ffi.nullptr, @@ -57943,7 +56857,7 @@ class NSScanner extends NSObject { } bool scanDecimal_(ffi.Pointer dcm) { - return _lib._objc_msgSend_792(_id, _lib._sel_scanDecimal_1, dcm); + return _lib._objc_msgSend_758(_id, _lib._sel_scanDecimal_1, dcm); } @override @@ -58063,7 +56977,7 @@ class NSException extends NSObject { static NSException exceptionWithName_reason_userInfo_(SentryCocoa _lib, NSString name, NSString? reason, NSDictionary? userInfo) { - final _ret = _lib._objc_msgSend_793( + final _ret = _lib._objc_msgSend_759( _lib._class_NSException1, _lib._sel_exceptionWithName_reason_userInfo_1, name._id, @@ -58128,7 +57042,7 @@ class NSException extends NSObject { static void raise_format_arguments_(SentryCocoa _lib, NSString name, NSString? format, ffi.Pointer argList) { - _lib._objc_msgSend_794( + _lib._objc_msgSend_760( _lib._class_NSException1, _lib._sel_raise_format_arguments_1, name._id, @@ -58259,7 +57173,7 @@ class NSFileHandle extends NSObject { } NSFileHandle initWithFileDescriptor_closeOnDealloc_(int fd, bool closeopt) { - final _ret = _lib._objc_msgSend_795( + final _ret = _lib._objc_msgSend_761( _id, _lib._sel_initWithFileDescriptor_closeOnDealloc_1, fd, closeopt); return NSFileHandle._(_ret, _lib, retain: true, release: true); } @@ -58272,46 +57186,46 @@ class NSFileHandle extends NSObject { NSData readDataToEndOfFileAndReturnError_( ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_796( + final _ret = _lib._objc_msgSend_762( _id, _lib._sel_readDataToEndOfFileAndReturnError_1, error); return NSData._(_ret, _lib, retain: true, release: true); } NSData readDataUpToLength_error_( int length, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_797( + final _ret = _lib._objc_msgSend_763( _id, _lib._sel_readDataUpToLength_error_1, length, error); return NSData._(_ret, _lib, retain: true, release: true); } bool writeData_error_( NSData? data, ffi.Pointer> error) { - return _lib._objc_msgSend_798( + return _lib._objc_msgSend_764( _id, _lib._sel_writeData_error_1, data?._id ?? ffi.nullptr, error); } bool getOffset_error_(ffi.Pointer offsetInFile, ffi.Pointer> error) { - return _lib._objc_msgSend_799( + return _lib._objc_msgSend_765( _id, _lib._sel_getOffset_error_1, offsetInFile, error); } bool seekToEndReturningOffset_error_( ffi.Pointer offsetInFile, ffi.Pointer> error) { - return _lib._objc_msgSend_799( + return _lib._objc_msgSend_765( _id, _lib._sel_seekToEndReturningOffset_error_1, offsetInFile, error); } bool seekToOffset_error_( int offset, ffi.Pointer> error) { - return _lib._objc_msgSend_800( + return _lib._objc_msgSend_766( _id, _lib._sel_seekToOffset_error_1, offset, error); } bool truncateAtOffset_error_( int offset, ffi.Pointer> error) { - return _lib._objc_msgSend_800( + return _lib._objc_msgSend_766( _id, _lib._sel_truncateAtOffset_error_1, offset, error); } @@ -58325,7 +57239,7 @@ class NSFileHandle extends NSObject { } static NSFileHandle? getFileHandleWithStandardInput(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_801( + final _ret = _lib._objc_msgSend_767( _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardInput1); return _ret.address == 0 ? null @@ -58333,7 +57247,7 @@ class NSFileHandle extends NSObject { } static NSFileHandle? getFileHandleWithStandardOutput(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_801( + final _ret = _lib._objc_msgSend_767( _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardOutput1); return _ret.address == 0 ? null @@ -58341,7 +57255,7 @@ class NSFileHandle extends NSObject { } static NSFileHandle? getFileHandleWithStandardError(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_801( + final _ret = _lib._objc_msgSend_767( _lib._class_NSFileHandle1, _lib._sel_fileHandleWithStandardError1); return _ret.address == 0 ? null @@ -58349,7 +57263,7 @@ class NSFileHandle extends NSObject { } static NSFileHandle? getFileHandleWithNullDevice(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_801( + final _ret = _lib._objc_msgSend_767( _lib._class_NSFileHandle1, _lib._sel_fileHandleWithNullDevice1); return _ret.address == 0 ? null @@ -58379,7 +57293,7 @@ class NSFileHandle extends NSObject { static NSFileHandle fileHandleForReadingFromURL_error_(SentryCocoa _lib, NSURL? url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_802( + final _ret = _lib._objc_msgSend_768( _lib._class_NSFileHandle1, _lib._sel_fileHandleForReadingFromURL_error_1, url?._id ?? ffi.nullptr, @@ -58389,7 +57303,7 @@ class NSFileHandle extends NSObject { static NSFileHandle fileHandleForWritingToURL_error_(SentryCocoa _lib, NSURL? url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_802( + final _ret = _lib._objc_msgSend_768( _lib._class_NSFileHandle1, _lib._sel_fileHandleForWritingToURL_error_1, url?._id ?? ffi.nullptr, @@ -58399,7 +57313,7 @@ class NSFileHandle extends NSObject { static NSFileHandle fileHandleForUpdatingURL_error_(SentryCocoa _lib, NSURL? url, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_802( + final _ret = _lib._objc_msgSend_768( _lib._class_NSFileHandle1, _lib._sel_fileHandleForUpdatingURL_error_1, url?._id ?? ffi.nullptr, @@ -58450,28 +57364,28 @@ class NSFileHandle extends NSObject { } ObjCBlock_ffiVoid_NSFileHandle get readabilityHandler { - final _ret = _lib._objc_msgSend_803(_id, _lib._sel_readabilityHandler1); + final _ret = _lib._objc_msgSend_769(_id, _lib._sel_readabilityHandler1); return ObjCBlock_ffiVoid_NSFileHandle._(_ret, _lib); } set readabilityHandler(ObjCBlock_ffiVoid_NSFileHandle value) { - return _lib._objc_msgSend_804( + return _lib._objc_msgSend_770( _id, _lib._sel_setReadabilityHandler_1, value._id); } ObjCBlock_ffiVoid_NSFileHandle get writeabilityHandler { - final _ret = _lib._objc_msgSend_803(_id, _lib._sel_writeabilityHandler1); + final _ret = _lib._objc_msgSend_769(_id, _lib._sel_writeabilityHandler1); return ObjCBlock_ffiVoid_NSFileHandle._(_ret, _lib); } set writeabilityHandler(ObjCBlock_ffiVoid_NSFileHandle value) { - return _lib._objc_msgSend_804( + return _lib._objc_msgSend_770( _id, _lib._sel_setWriteabilityHandler_1, value._id); } NSFileHandle initWithFileDescriptor_(int fd) { final _ret = - _lib._objc_msgSend_805(_id, _lib._sel_initWithFileDescriptor_1, fd); + _lib._objc_msgSend_771(_id, _lib._sel_initWithFileDescriptor_1, fd); return NSFileHandle._(_ret, _lib, retain: true, release: true); } @@ -58504,11 +57418,11 @@ class NSFileHandle extends NSObject { } void seekToFileOffset_(int offset) { - _lib._objc_msgSend_806(_id, _lib._sel_seekToFileOffset_1, offset); + _lib._objc_msgSend_772(_id, _lib._sel_seekToFileOffset_1, offset); } void truncateFileAtOffset_(int offset) { - _lib._objc_msgSend_806(_id, _lib._sel_truncateFileAtOffset_1, offset); + _lib._objc_msgSend_772(_id, _lib._sel_truncateFileAtOffset_1, offset); } void synchronizeFile() { @@ -58707,7 +57621,7 @@ class NSHTTPCookieStorage extends NSObject { } static NSHTTPCookieStorage? getSharedHTTPCookieStorage(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_807( + final _ret = _lib._objc_msgSend_773( _lib._class_NSHTTPCookieStorage1, _lib._sel_sharedHTTPCookieStorage1); return _ret.address == 0 ? null @@ -58716,7 +57630,7 @@ class NSHTTPCookieStorage extends NSObject { static NSHTTPCookieStorage sharedCookieStorageForGroupContainerIdentifier_( SentryCocoa _lib, NSString? identifier) { - final _ret = _lib._objc_msgSend_808( + final _ret = _lib._objc_msgSend_774( _lib._class_NSHTTPCookieStorage1, _lib._sel_sharedCookieStorageForGroupContainerIdentifier_1, identifier?._id ?? ffi.nullptr); @@ -58731,12 +57645,12 @@ class NSHTTPCookieStorage extends NSObject { } void setCookie_(NSHTTPCookie? cookie) { - _lib._objc_msgSend_811( + _lib._objc_msgSend_777( _id, _lib._sel_setCookie_1, cookie?._id ?? ffi.nullptr); } void deleteCookie_(NSHTTPCookie? cookie) { - _lib._objc_msgSend_811( + _lib._objc_msgSend_777( _id, _lib._sel_deleteCookie_1, cookie?._id ?? ffi.nullptr); } @@ -58753,7 +57667,7 @@ class NSHTTPCookieStorage extends NSObject { void setCookies_forURL_mainDocumentURL_( NSArray? cookies, NSURL? URL, NSURL? mainDocumentURL) { - _lib._objc_msgSend_812( + _lib._objc_msgSend_778( _id, _lib._sel_setCookies_forURL_mainDocumentURL_1, cookies?._id ?? ffi.nullptr, @@ -58762,11 +57676,11 @@ class NSHTTPCookieStorage extends NSObject { } int get cookieAcceptPolicy { - return _lib._objc_msgSend_813(_id, _lib._sel_cookieAcceptPolicy1); + return _lib._objc_msgSend_779(_id, _lib._sel_cookieAcceptPolicy1); } set cookieAcceptPolicy(int value) { - return _lib._objc_msgSend_814( + return _lib._objc_msgSend_780( _id, _lib._sel_setCookieAcceptPolicy_1, value); } @@ -58779,39 +57693,539 @@ class NSHTTPCookieStorage extends NSObject { } void storeCookies_forTask_(NSArray? cookies, NSURLSessionTask? task) { - _lib._objc_msgSend_834(_id, _lib._sel_storeCookies_forTask_1, + _lib._objc_msgSend_800(_id, _lib._sel_storeCookies_forTask_1, cookies?._id ?? ffi.nullptr, task?._id ?? ffi.nullptr); } - void getCookiesForTask_completionHandler_( - NSURLSessionTask? task, ObjCBlock_ffiVoid_NSArray completionHandler) { - _lib._objc_msgSend_835(_id, _lib._sel_getCookiesForTask_completionHandler_1, - task?._id ?? ffi.nullptr, completionHandler._id); + void getCookiesForTask_completionHandler_( + NSURLSessionTask? task, ObjCBlock_ffiVoid_NSArray completionHandler) { + _lib._objc_msgSend_801(_id, _lib._sel_getCookiesForTask_completionHandler_1, + task?._id ?? ffi.nullptr, completionHandler._id); + } + + @override + NSHTTPCookieStorage init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + } + + static NSHTTPCookieStorage new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSHTTPCookieStorage1, _lib._sel_new1); + return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + } + + static NSHTTPCookieStorage allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSHTTPCookieStorage1, _lib._sel_allocWithZone_1, zone); + return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + } + + static NSHTTPCookieStorage alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSHTTPCookieStorage1, _lib._sel_alloc1); + return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSHTTPCookieStorage1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSHTTPCookieStorage1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSHTTPCookieStorage1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSHTTPCookieStorage1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSHTTPCookieStorage1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSHTTPCookieStorage1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSHTTPCookieStorage1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSHTTPCookieStorage1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSHTTPCookieStorage1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSHTTPCookie extends NSObject { + NSHTTPCookie._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSHTTPCookie] that points to the same underlying object as [other]. + static NSHTTPCookie castFrom(T other) { + return NSHTTPCookie._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSHTTPCookie] that wraps the given raw object pointer. + static NSHTTPCookie castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSHTTPCookie._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSHTTPCookie]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSHTTPCookie1); + } + + NSHTTPCookie initWithProperties_(NSDictionary? properties) { + final _ret = _lib._objc_msgSend_149( + _id, _lib._sel_initWithProperties_1, properties?._id ?? ffi.nullptr); + return NSHTTPCookie._(_ret, _lib, retain: true, release: true); + } + + static NSHTTPCookie cookieWithProperties_( + SentryCocoa _lib, NSDictionary? properties) { + final _ret = _lib._objc_msgSend_775(_lib._class_NSHTTPCookie1, + _lib._sel_cookieWithProperties_1, properties?._id ?? ffi.nullptr); + return NSHTTPCookie._(_ret, _lib, retain: true, release: true); + } + + static NSDictionary requestHeaderFieldsWithCookies_( + SentryCocoa _lib, NSArray? cookies) { + final _ret = _lib._objc_msgSend_475( + _lib._class_NSHTTPCookie1, + _lib._sel_requestHeaderFieldsWithCookies_1, + cookies?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSArray cookiesWithResponseHeaderFields_forURL_( + SentryCocoa _lib, NSDictionary? headerFields, NSURL? URL) { + final _ret = _lib._objc_msgSend_776( + _lib._class_NSHTTPCookie1, + _lib._sel_cookiesWithResponseHeaderFields_forURL_1, + headerFields?._id ?? ffi.nullptr, + URL?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get properties { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_properties1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + int get version { + return _lib._objc_msgSend_10(_id, _lib._sel_version1); + } + + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get value { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_value1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSDate? get expiresDate { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_expiresDate1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + bool get sessionOnly { + return _lib._objc_msgSend_12(_id, _lib._sel_isSessionOnly1); + } + + NSString? get domain { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_domain1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get path { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_path1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + bool get secure { + return _lib._objc_msgSend_12(_id, _lib._sel_isSecure1); + } + + bool get HTTPOnly { + return _lib._objc_msgSend_12(_id, _lib._sel_isHTTPOnly1); + } + + NSString? get comment { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_comment1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSURL? get commentURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_commentURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + NSArray? get portList { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_portList1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + NSString get sameSitePolicy { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_sameSitePolicy1); + return NSString._(_ret, _lib, retain: true, release: true); + } + + @override + NSHTTPCookie init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSHTTPCookie._(_ret, _lib, retain: true, release: true); + } + + static NSHTTPCookie new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSHTTPCookie1, _lib._sel_new1); + return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + } + + static NSHTTPCookie allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSHTTPCookie1, _lib._sel_allocWithZone_1, zone); + return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + } + + static NSHTTPCookie alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSHTTPCookie1, _lib._sel_alloc1); + return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSHTTPCookie1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSHTTPCookie1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSHTTPCookie1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSHTTPCookie1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSHTTPCookie1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSHTTPCookie1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSHTTPCookie1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSHTTPCookie1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSHTTPCookie1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSHTTPCookieAcceptPolicy { + static const int NSHTTPCookieAcceptPolicyAlways = 0; + static const int NSHTTPCookieAcceptPolicyNever = 1; + static const int NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain = 2; +} + +class NSURLSessionTask extends NSObject { + NSURLSessionTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSessionTask] that points to the same underlying object as [other]. + static NSURLSessionTask castFrom(T other) { + return NSURLSessionTask._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLSessionTask] that wraps the given raw object pointer. + static NSURLSessionTask castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionTask._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLSessionTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionTask1); + } + + int get taskIdentifier { + return _lib._objc_msgSend_10(_id, _lib._sel_taskIdentifier1); + } + + NSURLRequest? get originalRequest { + final _ret = _lib._objc_msgSend_795(_id, _lib._sel_originalRequest1); + return _ret.address == 0 + ? null + : NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + NSURLRequest? get currentRequest { + final _ret = _lib._objc_msgSend_795(_id, _lib._sel_currentRequest1); + return _ret.address == 0 + ? null + : NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + NSURLResponse? get response { + final _ret = _lib._objc_msgSend_797(_id, _lib._sel_response1); + return _ret.address == 0 + ? null + : NSURLResponse._(_ret, _lib, retain: true, release: true); + } + + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + set delegate(NSObject? value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + } + + NSProgress? get progress { + final _ret = _lib._objc_msgSend_609(_id, _lib._sel_progress1); + return _ret.address == 0 + ? null + : NSProgress._(_ret, _lib, retain: true, release: true); + } + + NSDate? get earliestBeginDate { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_earliestBeginDate1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); + } + + set earliestBeginDate(NSDate? value) { + return _lib._objc_msgSend_525( + _id, _lib._sel_setEarliestBeginDate_1, value?._id ?? ffi.nullptr); + } + + int get countOfBytesClientExpectsToSend { + return _lib._objc_msgSend_616( + _id, _lib._sel_countOfBytesClientExpectsToSend1); + } + + set countOfBytesClientExpectsToSend(int value) { + return _lib._objc_msgSend_617( + _id, _lib._sel_setCountOfBytesClientExpectsToSend_1, value); + } + + int get countOfBytesClientExpectsToReceive { + return _lib._objc_msgSend_616( + _id, _lib._sel_countOfBytesClientExpectsToReceive1); + } + + set countOfBytesClientExpectsToReceive(int value) { + return _lib._objc_msgSend_617( + _id, _lib._sel_setCountOfBytesClientExpectsToReceive_1, value); + } + + int get countOfBytesSent { + return _lib._objc_msgSend_616(_id, _lib._sel_countOfBytesSent1); + } + + int get countOfBytesReceived { + return _lib._objc_msgSend_616(_id, _lib._sel_countOfBytesReceived1); + } + + int get countOfBytesExpectedToSend { + return _lib._objc_msgSend_616(_id, _lib._sel_countOfBytesExpectedToSend1); + } + + int get countOfBytesExpectedToReceive { + return _lib._objc_msgSend_616( + _id, _lib._sel_countOfBytesExpectedToReceive1); + } + + NSString? get taskDescription { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_taskDescription1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set taskDescription(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setTaskDescription_1, value?._id ?? ffi.nullptr); + } + + void cancel() { + _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + } + + int get state { + return _lib._objc_msgSend_798(_id, _lib._sel_state1); + } + + NSError? get error { + final _ret = _lib._objc_msgSend_298(_id, _lib._sel_error1); + return _ret.address == 0 + ? null + : NSError._(_ret, _lib, retain: true, release: true); + } + + void suspend() { + _lib._objc_msgSend_1(_id, _lib._sel_suspend1); + } + + void resume() { + _lib._objc_msgSend_1(_id, _lib._sel_resume1); + } + + double get priority { + return _lib._objc_msgSend_221(_id, _lib._sel_priority1); + } + + set priority(double value) { + return _lib._objc_msgSend_799(_id, _lib._sel_setPriority_1, value); + } + + bool get prefersIncrementalDelivery { + return _lib._objc_msgSend_12(_id, _lib._sel_prefersIncrementalDelivery1); + } + + set prefersIncrementalDelivery(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setPrefersIncrementalDelivery_1, value); } @override - NSHTTPCookieStorage init() { + NSURLSessionTask init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + return NSURLSessionTask._(_ret, _lib, retain: true, release: true); } - static NSHTTPCookieStorage new1(SentryCocoa _lib) { + static NSURLSessionTask new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSHTTPCookieStorage1, _lib._sel_new1); - return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLSessionTask1, _lib._sel_new1); + return NSURLSessionTask._(_ret, _lib, retain: false, release: true); } - static NSHTTPCookieStorage allocWithZone_( + static NSURLSessionTask allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSHTTPCookieStorage1, _lib._sel_allocWithZone_1, zone); - return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLSessionTask1, _lib._sel_allocWithZone_1, zone); + return NSURLSessionTask._(_ret, _lib, retain: false, release: true); } - static NSHTTPCookieStorage alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSHTTPCookieStorage1, _lib._sel_alloc1); - return NSHTTPCookieStorage._(_ret, _lib, retain: false, release: true); + static NSURLSessionTask alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLSessionTask1, _lib._sel_alloc1); + return NSURLSessionTask._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -58820,7 +58234,7 @@ class NSHTTPCookieStorage extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSHTTPCookieStorage1, + _lib._class_NSURLSessionTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -58829,24 +58243,24 @@ class NSHTTPCookieStorage extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSHTTPCookieStorage1, + _lib._objc_msgSend_15(_lib._class_NSURLSessionTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSHTTPCookieStorage1, + return _lib._objc_msgSend_12(_lib._class_NSURLSessionTask1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSHTTPCookieStorage1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLSessionTask1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSHTTPCookieStorage1, + _lib._class_NSURLSessionTask1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -58855,7 +58269,7 @@ class NSHTTPCookieStorage extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSHTTPCookieStorage1, + _lib._class_NSURLSessionTask1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -58863,187 +58277,203 @@ class NSHTTPCookieStorage extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSHTTPCookieStorage1, + _lib._class_NSURLSessionTask1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSHTTPCookieStorage1, + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionTask1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSHTTPCookieStorage1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSURLSessionTask1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSHTTPCookie extends NSObject { - NSHTTPCookie._(ffi.Pointer id, SentryCocoa lib, +class NSURLRequest extends NSObject { + NSURLRequest._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSHTTPCookie] that points to the same underlying object as [other]. - static NSHTTPCookie castFrom(T other) { - return NSHTTPCookie._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSURLRequest] that points to the same underlying object as [other]. + static NSURLRequest castFrom(T other) { + return NSURLRequest._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSHTTPCookie] that wraps the given raw object pointer. - static NSHTTPCookie castFromPointer( + /// Returns a [NSURLRequest] that wraps the given raw object pointer. + static NSURLRequest castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSHTTPCookie._(other, lib, retain: retain, release: release); + return NSURLRequest._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSHTTPCookie]. + /// Returns whether [obj] is an instance of [NSURLRequest]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSHTTPCookie1); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLRequest1); } - NSHTTPCookie initWithProperties_(NSDictionary? properties) { - final _ret = _lib._objc_msgSend_149( - _id, _lib._sel_initWithProperties_1, properties?._id ?? ffi.nullptr); - return NSHTTPCookie._(_ret, _lib, retain: true, release: true); + static NSURLRequest requestWithURL_(SentryCocoa _lib, NSURL? URL) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSURLRequest1, + _lib._sel_requestWithURL_1, URL?._id ?? ffi.nullptr); + return NSURLRequest._(_ret, _lib, retain: true, release: true); } - static NSHTTPCookie cookieWithProperties_( - SentryCocoa _lib, NSDictionary? properties) { - final _ret = _lib._objc_msgSend_809(_lib._class_NSHTTPCookie1, - _lib._sel_cookieWithProperties_1, properties?._id ?? ffi.nullptr); - return NSHTTPCookie._(_ret, _lib, retain: true, release: true); + static bool getSupportsSecureCoding(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLRequest1, _lib._sel_supportsSecureCoding1); } - static NSDictionary requestHeaderFieldsWithCookies_( - SentryCocoa _lib, NSArray? cookies) { - final _ret = _lib._objc_msgSend_475( - _lib._class_NSHTTPCookie1, - _lib._sel_requestHeaderFieldsWithCookies_1, - cookies?._id ?? ffi.nullptr); - return NSDictionary._(_ret, _lib, retain: true, release: true); + static NSURLRequest requestWithURL_cachePolicy_timeoutInterval_( + SentryCocoa _lib, NSURL? URL, int cachePolicy, double timeoutInterval) { + final _ret = _lib._objc_msgSend_781( + _lib._class_NSURLRequest1, + _lib._sel_requestWithURL_cachePolicy_timeoutInterval_1, + URL?._id ?? ffi.nullptr, + cachePolicy, + timeoutInterval); + return NSURLRequest._(_ret, _lib, retain: true, release: true); } - static NSArray cookiesWithResponseHeaderFields_forURL_( - SentryCocoa _lib, NSDictionary? headerFields, NSURL? URL) { - final _ret = _lib._objc_msgSend_810( - _lib._class_NSHTTPCookie1, - _lib._sel_cookiesWithResponseHeaderFields_forURL_1, - headerFields?._id ?? ffi.nullptr, - URL?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); + NSURLRequest initWithURL_(NSURL? URL) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithURL_1, URL?._id ?? ffi.nullptr); + return NSURLRequest._(_ret, _lib, retain: true, release: true); } - NSDictionary? get properties { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_properties1); + NSURLRequest initWithURL_cachePolicy_timeoutInterval_( + NSURL? URL, int cachePolicy, double timeoutInterval) { + final _ret = _lib._objc_msgSend_781( + _id, + _lib._sel_initWithURL_cachePolicy_timeoutInterval_1, + URL?._id ?? ffi.nullptr, + cachePolicy, + timeoutInterval); + return NSURLRequest._(_ret, _lib, retain: true, release: true); + } + + NSURL? get URL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : NSURL._(_ret, _lib, retain: true, release: true); } - int get version { - return _lib._objc_msgSend_10(_id, _lib._sel_version1); + int get cachePolicy { + return _lib._objc_msgSend_782(_id, _lib._sel_cachePolicy1); } - NSString? get name { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + double get timeoutInterval { + return _lib._objc_msgSend_155(_id, _lib._sel_timeoutInterval1); } - NSString? get value { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_value1); + NSURL? get mainDocumentURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_mainDocumentURL1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSURL._(_ret, _lib, retain: true, release: true); } - NSDate? get expiresDate { - final _ret = _lib._objc_msgSend_162(_id, _lib._sel_expiresDate1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + int get networkServiceType { + return _lib._objc_msgSend_783(_id, _lib._sel_networkServiceType1); } - bool get sessionOnly { - return _lib._objc_msgSend_12(_id, _lib._sel_isSessionOnly1); + bool get allowsCellularAccess { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); } - NSString? get domain { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_domain1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool get allowsExpensiveNetworkAccess { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); } - NSString? get path { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_path1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + bool get allowsConstrainedNetworkAccess { + return _lib._objc_msgSend_12( + _id, _lib._sel_allowsConstrainedNetworkAccess1); } - bool get secure { - return _lib._objc_msgSend_12(_id, _lib._sel_isSecure1); + bool get assumesHTTP3Capable { + return _lib._objc_msgSend_12(_id, _lib._sel_assumesHTTP3Capable1); } - bool get HTTPOnly { - return _lib._objc_msgSend_12(_id, _lib._sel_isHTTPOnly1); + int get attribution { + return _lib._objc_msgSend_784(_id, _lib._sel_attribution1); } - NSString? get comment { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_comment1); + bool get requiresDNSSECValidation { + return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); + } + + NSString? get HTTPMethod { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_HTTPMethod1); return _ret.address == 0 ? null : NSString._(_ret, _lib, retain: true, release: true); } - NSURL? get commentURL { - final _ret = _lib._objc_msgSend_40(_id, _lib._sel_commentURL1); + NSDictionary? get allHTTPHeaderFields { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_allHTTPHeaderFields1); return _ret.address == 0 ? null - : NSURL._(_ret, _lib, retain: true, release: true); + : NSDictionary._(_ret, _lib, retain: true, release: true); } - NSArray? get portList { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_portList1); + NSString valueForHTTPHeaderField_(NSString? field) { + final _ret = _lib._objc_msgSend_64( + _id, _lib._sel_valueForHTTPHeaderField_1, field?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSData? get HTTPBody { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_HTTPBody1); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : NSData._(_ret, _lib, retain: true, release: true); } - NSString get sameSitePolicy { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_sameSitePolicy1); - return NSString._(_ret, _lib, retain: true, release: true); + NSInputStream? get HTTPBodyStream { + final _ret = _lib._objc_msgSend_794(_id, _lib._sel_HTTPBodyStream1); + return _ret.address == 0 + ? null + : NSInputStream._(_ret, _lib, retain: true, release: true); + } + + bool get HTTPShouldHandleCookies { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldHandleCookies1); + } + + bool get HTTPShouldUsePipelining { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); } @override - NSHTTPCookie init() { + NSURLRequest init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSHTTPCookie._(_ret, _lib, retain: true, release: true); + return NSURLRequest._(_ret, _lib, retain: true, release: true); } - static NSHTTPCookie new1(SentryCocoa _lib) { + static NSURLRequest new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSHTTPCookie1, _lib._sel_new1); - return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLRequest1, _lib._sel_new1); + return NSURLRequest._(_ret, _lib, retain: false, release: true); } - static NSHTTPCookie allocWithZone_( + static NSURLRequest allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSHTTPCookie1, _lib._sel_allocWithZone_1, zone); - return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLRequest1, _lib._sel_allocWithZone_1, zone); + return NSURLRequest._(_ret, _lib, retain: false, release: true); } - static NSHTTPCookie alloc(SentryCocoa _lib) { + static NSURLRequest alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSHTTPCookie1, _lib._sel_alloc1); - return NSHTTPCookie._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLRequest1, _lib._sel_alloc1); + return NSURLRequest._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -59052,7 +58482,7 @@ class NSHTTPCookie extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSHTTPCookie1, + _lib._class_NSURLRequest1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -59061,24 +58491,24 @@ class NSHTTPCookie extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSHTTPCookie1, + _lib._objc_msgSend_15(_lib._class_NSURLRequest1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSHTTPCookie1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSURLRequest1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSHTTPCookie1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLRequest1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSHTTPCookie1, + _lib._class_NSURLRequest1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -59087,7 +58517,7 @@ class NSHTTPCookie extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSHTTPCookie1, + _lib._class_NSURLRequest1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -59095,7 +58525,7 @@ class NSHTTPCookie extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSHTTPCookie1, + _lib._class_NSURLRequest1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -59103,215 +58533,392 @@ class NSHTTPCookie extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSHTTPCookie1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSURLRequest1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSHTTPCookie1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSURLRequest1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSHTTPCookieAcceptPolicy { - static const int NSHTTPCookieAcceptPolicyAlways = 0; - static const int NSHTTPCookieAcceptPolicyNever = 1; - static const int NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain = 2; +abstract class NSURLRequestCachePolicy { + static const int NSURLRequestUseProtocolCachePolicy = 0; + static const int NSURLRequestReloadIgnoringLocalCacheData = 1; + static const int NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4; + static const int NSURLRequestReloadIgnoringCacheData = 1; + static const int NSURLRequestReturnCacheDataElseLoad = 2; + static const int NSURLRequestReturnCacheDataDontLoad = 3; + static const int NSURLRequestReloadRevalidatingCacheData = 5; } -class NSURLSessionTask extends NSObject { - NSURLSessionTask._(ffi.Pointer id, SentryCocoa lib, +abstract class NSURLRequestNetworkServiceType { + static const int NSURLNetworkServiceTypeDefault = 0; + static const int NSURLNetworkServiceTypeVoIP = 1; + static const int NSURLNetworkServiceTypeVideo = 2; + static const int NSURLNetworkServiceTypeBackground = 3; + static const int NSURLNetworkServiceTypeVoice = 4; + static const int NSURLNetworkServiceTypeResponsiveData = 6; + static const int NSURLNetworkServiceTypeAVStreaming = 8; + static const int NSURLNetworkServiceTypeResponsiveAV = 9; + static const int NSURLNetworkServiceTypeCallSignaling = 11; +} + +abstract class NSURLRequestAttribution { + static const int NSURLRequestAttributionDeveloper = 0; + static const int NSURLRequestAttributionUser = 1; +} + +class NSInputStream extends NSStream { + NSInputStream._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLSessionTask] that points to the same underlying object as [other]. - static NSURLSessionTask castFrom(T other) { - return NSURLSessionTask._(other._id, other._lib, - retain: true, release: true); + /// Returns a [NSInputStream] that points to the same underlying object as [other]. + static NSInputStream castFrom(T other) { + return NSInputStream._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLSessionTask] that wraps the given raw object pointer. - static NSURLSessionTask castFromPointer( + /// Returns a [NSInputStream] that wraps the given raw object pointer. + static NSInputStream castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLSessionTask._(other, lib, retain: retain, release: release); + return NSInputStream._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLSessionTask]. + /// Returns whether [obj] is an instance of [NSInputStream]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionTask1); + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSInputStream1); } - int get taskIdentifier { - return _lib._objc_msgSend_10(_id, _lib._sel_taskIdentifier1); + int read_maxLength_(ffi.Pointer buffer, int len) { + return _lib._objc_msgSend_786(_id, _lib._sel_read_maxLength_1, buffer, len); } - NSURLRequest? get originalRequest { - final _ret = _lib._objc_msgSend_829(_id, _lib._sel_originalRequest1); - return _ret.address == 0 - ? null - : NSURLRequest._(_ret, _lib, retain: true, release: true); + bool getBuffer_length_(ffi.Pointer> buffer, + ffi.Pointer len) { + return _lib._objc_msgSend_793( + _id, _lib._sel_getBuffer_length_1, buffer, len); } - NSURLRequest? get currentRequest { - final _ret = _lib._objc_msgSend_829(_id, _lib._sel_currentRequest1); - return _ret.address == 0 - ? null - : NSURLRequest._(_ret, _lib, retain: true, release: true); + bool get hasBytesAvailable { + return _lib._objc_msgSend_12(_id, _lib._sel_hasBytesAvailable1); } - NSURLResponse? get response { - final _ret = _lib._objc_msgSend_831(_id, _lib._sel_response1); - return _ret.address == 0 - ? null - : NSURLResponse._(_ret, _lib, retain: true, release: true); + NSInputStream initWithData_(NSData? data) { + final _ret = _lib._objc_msgSend_257( + _id, _lib._sel_initWithData_1, data?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + NSInputStream initWithURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithURL_1, url?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); } - set delegate(NSObject? value) { - return _lib._objc_msgSend_387( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + NSInputStream initWithFileAtPath_(NSString? path) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithFileAtPath_1, path?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); } - NSProgress? get progress { - final _ret = _lib._objc_msgSend_643(_id, _lib._sel_progress1); - return _ret.address == 0 - ? null - : NSProgress._(_ret, _lib, retain: true, release: true); + static NSInputStream inputStreamWithData_(SentryCocoa _lib, NSData? data) { + final _ret = _lib._objc_msgSend_257(_lib._class_NSInputStream1, + _lib._sel_inputStreamWithData_1, data?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); } - NSDate? get earliestBeginDate { - final _ret = _lib._objc_msgSend_162(_id, _lib._sel_earliestBeginDate1); - return _ret.address == 0 - ? null - : NSDate._(_ret, _lib, retain: true, release: true); + static NSInputStream inputStreamWithFileAtPath_( + SentryCocoa _lib, NSString? path) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSInputStream1, + _lib._sel_inputStreamWithFileAtPath_1, path?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); } - set earliestBeginDate(NSDate? value) { - return _lib._objc_msgSend_525( - _id, _lib._sel_setEarliestBeginDate_1, value?._id ?? ffi.nullptr); + static NSInputStream inputStreamWithURL_(SentryCocoa _lib, NSURL? url) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSInputStream1, + _lib._sel_inputStreamWithURL_1, url?._id ?? ffi.nullptr); + return NSInputStream._(_ret, _lib, retain: true, release: true); } - int get countOfBytesClientExpectsToSend { - return _lib._objc_msgSend_650( - _id, _lib._sel_countOfBytesClientExpectsToSend1); + static void getStreamsToHostWithName_port_inputStream_outputStream_( + SentryCocoa _lib, + NSString? hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_788( + _lib._class_NSInputStream1, + _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, + hostname?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); } - set countOfBytesClientExpectsToSend(int value) { - return _lib._objc_msgSend_651( - _id, _lib._sel_setCountOfBytesClientExpectsToSend_1, value); + static void getStreamsToHost_port_inputStream_outputStream_( + SentryCocoa _lib, + NSHost? host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_791( + _lib._class_NSInputStream1, + _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, + host?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); } - int get countOfBytesClientExpectsToReceive { - return _lib._objc_msgSend_650( - _id, _lib._sel_countOfBytesClientExpectsToReceive1); + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + SentryCocoa _lib, + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_792( + _lib._class_NSInputStream1, + _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, + bufferSize, + inputStream, + outputStream); + } + + @override + NSInputStream init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSInputStream._(_ret, _lib, retain: true, release: true); + } + + static NSInputStream new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInputStream1, _lib._sel_new1); + return NSInputStream._(_ret, _lib, retain: false, release: true); + } + + static NSInputStream allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSInputStream1, _lib._sel_allocWithZone_1, zone); + return NSInputStream._(_ret, _lib, retain: false, release: true); + } + + static NSInputStream alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInputStream1, _lib._sel_alloc1); + return NSInputStream._(_ret, _lib, retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSInputStream1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSInputStream1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSInputStream1, _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSInputStream1, _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSInputStream1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSInputStream1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSInputStream1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSInputStream1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSInputStream1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); } +} + +class NSStream extends NSObject { + NSStream._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); - set countOfBytesClientExpectsToReceive(int value) { - return _lib._objc_msgSend_651( - _id, _lib._sel_setCountOfBytesClientExpectsToReceive_1, value); + /// Returns a [NSStream] that points to the same underlying object as [other]. + static NSStream castFrom(T other) { + return NSStream._(other._id, other._lib, retain: true, release: true); } - int get countOfBytesSent { - return _lib._objc_msgSend_650(_id, _lib._sel_countOfBytesSent1); + /// Returns a [NSStream] that wraps the given raw object pointer. + static NSStream castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSStream._(other, lib, retain: retain, release: release); } - int get countOfBytesReceived { - return _lib._objc_msgSend_650(_id, _lib._sel_countOfBytesReceived1); + /// Returns whether [obj] is an instance of [NSStream]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSStream1); } - int get countOfBytesExpectedToSend { - return _lib._objc_msgSend_650(_id, _lib._sel_countOfBytesExpectedToSend1); + void open() { + _lib._objc_msgSend_1(_id, _lib._sel_open1); } - int get countOfBytesExpectedToReceive { - return _lib._objc_msgSend_650( - _id, _lib._sel_countOfBytesExpectedToReceive1); + void close() { + _lib._objc_msgSend_1(_id, _lib._sel_close1); } - NSString? get taskDescription { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_taskDescription1); + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSObject._(_ret, _lib, retain: true, release: true); } - set taskDescription(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setTaskDescription_1, value?._id ?? ffi.nullptr); + set delegate(NSObject? value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); } - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + NSObject propertyForKey_(NSString key) { + final _ret = + _lib._objc_msgSend_30(_id, _lib._sel_propertyForKey_1, key._id); + return NSObject._(_ret, _lib, retain: true, release: true); } - int get state { - return _lib._objc_msgSend_832(_id, _lib._sel_state1); + bool setProperty_forKey_(NSObject property, NSString key) { + return _lib._objc_msgSend_240( + _id, _lib._sel_setProperty_forKey_1, property._id, key._id); } - NSError? get error { - final _ret = _lib._objc_msgSend_298(_id, _lib._sel_error1); - return _ret.address == 0 - ? null - : NSError._(_ret, _lib, retain: true, release: true); + void scheduleInRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_scheduleInRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); } - void suspend() { - _lib._objc_msgSend_1(_id, _lib._sel_suspend1); + void removeFromRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_removeFromRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); } - void resume() { - _lib._objc_msgSend_1(_id, _lib._sel_resume1); + int get streamStatus { + return _lib._objc_msgSend_785(_id, _lib._sel_streamStatus1); } - double get priority { - return _lib._objc_msgSend_221(_id, _lib._sel_priority1); + NSError? get streamError { + final _ret = _lib._objc_msgSend_298(_id, _lib._sel_streamError1); + return _ret.address == 0 + ? null + : NSError._(_ret, _lib, retain: true, release: true); } - set priority(double value) { - return _lib._objc_msgSend_833(_id, _lib._sel_setPriority_1, value); + static void getStreamsToHostWithName_port_inputStream_outputStream_( + SentryCocoa _lib, + NSString? hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_788( + _lib._class_NSStream1, + _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, + hostname?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); } - bool get prefersIncrementalDelivery { - return _lib._objc_msgSend_12(_id, _lib._sel_prefersIncrementalDelivery1); + static void getStreamsToHost_port_inputStream_outputStream_( + SentryCocoa _lib, + NSHost? host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_791( + _lib._class_NSStream1, + _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, + host?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); } - set prefersIncrementalDelivery(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setPrefersIncrementalDelivery_1, value); + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + SentryCocoa _lib, + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_792( + _lib._class_NSStream1, + _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, + bufferSize, + inputStream, + outputStream); } @override - NSURLSessionTask init() { + NSStream init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionTask._(_ret, _lib, retain: true, release: true); + return NSStream._(_ret, _lib, retain: true, release: true); } - static NSURLSessionTask new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSessionTask1, _lib._sel_new1); - return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + static NSStream new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSStream1, _lib._sel_new1); + return NSStream._(_ret, _lib, retain: false, release: true); } - static NSURLSessionTask allocWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + static NSStream allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + _lib._class_NSStream1, _lib._sel_allocWithZone_1, zone); + return NSStream._(_ret, _lib, retain: false, release: true); } - static NSURLSessionTask alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSessionTask1, _lib._sel_alloc1); - return NSURLSessionTask._(_ret, _lib, retain: false, release: true); + static NSStream alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSStream1, _lib._sel_alloc1); + return NSStream._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -59320,7 +58927,7 @@ class NSURLSessionTask extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLSessionTask1, + _lib._class_NSStream1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -59329,24 +58936,24 @@ class NSURLSessionTask extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionTask1, + _lib._objc_msgSend_15(_lib._class_NSStream1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionTask1, - _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12( + _lib._class_NSStream1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLSessionTask1, _lib._sel_useStoredAccessor1); + _lib._class_NSStream1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLSessionTask1, + _lib._class_NSStream1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -59355,7 +58962,7 @@ class NSURLSessionTask extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLSessionTask1, + _lib._class_NSStream1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -59363,203 +58970,191 @@ class NSURLSessionTask extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLSessionTask1, + _lib._class_NSStream1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionTask1, - _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79( + _lib._class_NSStream1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionTask1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSStream1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSURLRequest extends NSObject { - NSURLRequest._(ffi.Pointer id, SentryCocoa lib, +abstract class NSStreamStatus { + static const int NSStreamStatusNotOpen = 0; + static const int NSStreamStatusOpening = 1; + static const int NSStreamStatusOpen = 2; + static const int NSStreamStatusReading = 3; + static const int NSStreamStatusWriting = 4; + static const int NSStreamStatusAtEnd = 5; + static const int NSStreamStatusClosed = 6; + static const int NSStreamStatusError = 7; +} + +class NSOutputStream extends NSStream { + NSOutputStream._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLRequest] that points to the same underlying object as [other]. - static NSURLRequest castFrom(T other) { - return NSURLRequest._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSOutputStream] that points to the same underlying object as [other]. + static NSOutputStream castFrom(T other) { + return NSOutputStream._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLRequest] that wraps the given raw object pointer. - static NSURLRequest castFromPointer( + /// Returns a [NSOutputStream] that wraps the given raw object pointer. + static NSOutputStream castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLRequest._(other, lib, retain: retain, release: release); + return NSOutputStream._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLRequest]. + /// Returns whether [obj] is an instance of [NSOutputStream]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLRequest1); - } - - static NSURLRequest requestWithURL_(SentryCocoa _lib, NSURL? URL) { - final _ret = _lib._objc_msgSend_241(_lib._class_NSURLRequest1, - _lib._sel_requestWithURL_1, URL?._id ?? ffi.nullptr); - return NSURLRequest._(_ret, _lib, retain: true, release: true); - } - - static bool getSupportsSecureCoding(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLRequest1, _lib._sel_supportsSecureCoding1); - } - - static NSURLRequest requestWithURL_cachePolicy_timeoutInterval_( - SentryCocoa _lib, NSURL? URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_815( - _lib._class_NSURLRequest1, - _lib._sel_requestWithURL_cachePolicy_timeoutInterval_1, - URL?._id ?? ffi.nullptr, - cachePolicy, - timeoutInterval); - return NSURLRequest._(_ret, _lib, retain: true, release: true); - } - - NSURLRequest initWithURL_(NSURL? URL) { - final _ret = _lib._objc_msgSend_241( - _id, _lib._sel_initWithURL_1, URL?._id ?? ffi.nullptr); - return NSURLRequest._(_ret, _lib, retain: true, release: true); - } - - NSURLRequest initWithURL_cachePolicy_timeoutInterval_( - NSURL? URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_815( - _id, - _lib._sel_initWithURL_cachePolicy_timeoutInterval_1, - URL?._id ?? ffi.nullptr, - cachePolicy, - timeoutInterval); - return NSURLRequest._(_ret, _lib, retain: true, release: true); - } - - NSURL? get URL { - final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - int get cachePolicy { - return _lib._objc_msgSend_816(_id, _lib._sel_cachePolicy1); - } - - double get timeoutInterval { - return _lib._objc_msgSend_155(_id, _lib._sel_timeoutInterval1); - } - - NSURL? get mainDocumentURL { - final _ret = _lib._objc_msgSend_40(_id, _lib._sel_mainDocumentURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - int get networkServiceType { - return _lib._objc_msgSend_817(_id, _lib._sel_networkServiceType1); + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSOutputStream1); } - bool get allowsCellularAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); + int write_maxLength_(ffi.Pointer buffer, int len) { + return _lib._objc_msgSend_786( + _id, _lib._sel_write_maxLength_1, buffer, len); } - bool get allowsExpensiveNetworkAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); + bool get hasSpaceAvailable { + return _lib._objc_msgSend_12(_id, _lib._sel_hasSpaceAvailable1); } - bool get allowsConstrainedNetworkAccess { - return _lib._objc_msgSend_12( - _id, _lib._sel_allowsConstrainedNetworkAccess1); + NSOutputStream initToMemory() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_initToMemory1); + return NSOutputStream._(_ret, _lib, retain: true, release: true); } - bool get assumesHTTP3Capable { - return _lib._objc_msgSend_12(_id, _lib._sel_assumesHTTP3Capable1); + NSOutputStream initToBuffer_capacity_( + ffi.Pointer buffer, int capacity) { + final _ret = _lib._objc_msgSend_787( + _id, _lib._sel_initToBuffer_capacity_1, buffer, capacity); + return NSOutputStream._(_ret, _lib, retain: true, release: true); } - int get attribution { - return _lib._objc_msgSend_818(_id, _lib._sel_attribution1); + NSOutputStream initWithURL_append_(NSURL? url, bool shouldAppend) { + final _ret = _lib._objc_msgSend_246(_id, _lib._sel_initWithURL_append_1, + url?._id ?? ffi.nullptr, shouldAppend); + return NSOutputStream._(_ret, _lib, retain: true, release: true); } - bool get requiresDNSSECValidation { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); + NSOutputStream initToFileAtPath_append_(NSString? path, bool shouldAppend) { + final _ret = _lib._objc_msgSend_29(_id, _lib._sel_initToFileAtPath_append_1, + path?._id ?? ffi.nullptr, shouldAppend); + return NSOutputStream._(_ret, _lib, retain: true, release: true); } - NSString? get HTTPMethod { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_HTTPMethod1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSOutputStream outputStreamToMemory(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSOutputStream1, _lib._sel_outputStreamToMemory1); + return NSOutputStream._(_ret, _lib, retain: true, release: true); } - NSDictionary? get allHTTPHeaderFields { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_allHTTPHeaderFields1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static NSOutputStream outputStreamToBuffer_capacity_( + SentryCocoa _lib, ffi.Pointer buffer, int capacity) { + final _ret = _lib._objc_msgSend_787(_lib._class_NSOutputStream1, + _lib._sel_outputStreamToBuffer_capacity_1, buffer, capacity); + return NSOutputStream._(_ret, _lib, retain: true, release: true); } - NSString valueForHTTPHeaderField_(NSString? field) { - final _ret = _lib._objc_msgSend_64( - _id, _lib._sel_valueForHTTPHeaderField_1, field?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + static NSOutputStream outputStreamToFileAtPath_append_( + SentryCocoa _lib, NSString? path, bool shouldAppend) { + final _ret = _lib._objc_msgSend_29( + _lib._class_NSOutputStream1, + _lib._sel_outputStreamToFileAtPath_append_1, + path?._id ?? ffi.nullptr, + shouldAppend); + return NSOutputStream._(_ret, _lib, retain: true, release: true); } - NSData? get HTTPBody { - final _ret = _lib._objc_msgSend_39(_id, _lib._sel_HTTPBody1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static NSOutputStream outputStreamWithURL_append_( + SentryCocoa _lib, NSURL? url, bool shouldAppend) { + final _ret = _lib._objc_msgSend_246( + _lib._class_NSOutputStream1, + _lib._sel_outputStreamWithURL_append_1, + url?._id ?? ffi.nullptr, + shouldAppend); + return NSOutputStream._(_ret, _lib, retain: true, release: true); } - NSInputStream? get HTTPBodyStream { - final _ret = _lib._objc_msgSend_828(_id, _lib._sel_HTTPBodyStream1); - return _ret.address == 0 - ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + static void getStreamsToHostWithName_port_inputStream_outputStream_( + SentryCocoa _lib, + NSString? hostname, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_788( + _lib._class_NSOutputStream1, + _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, + hostname?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); } - bool get HTTPShouldHandleCookies { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldHandleCookies1); + static void getStreamsToHost_port_inputStream_outputStream_( + SentryCocoa _lib, + NSHost? host, + int port, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_791( + _lib._class_NSOutputStream1, + _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, + host?._id ?? ffi.nullptr, + port, + inputStream, + outputStream); } - bool get HTTPShouldUsePipelining { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); + static void getBoundStreamsWithBufferSize_inputStream_outputStream_( + SentryCocoa _lib, + int bufferSize, + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + _lib._objc_msgSend_792( + _lib._class_NSOutputStream1, + _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, + bufferSize, + inputStream, + outputStream); } @override - NSURLRequest init() { + NSOutputStream init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + return NSOutputStream._(_ret, _lib, retain: true, release: true); } - static NSURLRequest new1(SentryCocoa _lib) { + static NSOutputStream new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLRequest1, _lib._sel_new1); - return NSURLRequest._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSOutputStream1, _lib._sel_new1); + return NSOutputStream._(_ret, _lib, retain: false, release: true); } - static NSURLRequest allocWithZone_( + static NSOutputStream allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLRequest1, _lib._sel_allocWithZone_1, zone); - return NSURLRequest._(_ret, _lib, retain: false, release: true); + _lib._class_NSOutputStream1, _lib._sel_allocWithZone_1, zone); + return NSOutputStream._(_ret, _lib, retain: false, release: true); } - static NSURLRequest alloc(SentryCocoa _lib) { + static NSOutputStream alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLRequest1, _lib._sel_alloc1); - return NSURLRequest._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSOutputStream1, _lib._sel_alloc1); + return NSOutputStream._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -59568,7 +59163,7 @@ class NSURLRequest extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLRequest1, + _lib._class_NSOutputStream1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -59577,24 +59172,24 @@ class NSURLRequest extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLRequest1, + _lib._objc_msgSend_15(_lib._class_NSOutputStream1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLRequest1, _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12(_lib._class_NSOutputStream1, + _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLRequest1, _lib._sel_useStoredAccessor1); + _lib._class_NSOutputStream1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLRequest1, + _lib._class_NSOutputStream1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -59603,7 +59198,7 @@ class NSURLRequest extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLRequest1, + _lib._class_NSOutputStream1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -59611,7 +59206,7 @@ class NSURLRequest extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLRequest1, + _lib._class_NSOutputStream1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -59619,184 +59214,131 @@ class NSURLRequest extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSURLRequest1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSOutputStream1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLRequest1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSOutputStream1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSURLRequestCachePolicy { - static const int NSURLRequestUseProtocolCachePolicy = 0; - static const int NSURLRequestReloadIgnoringLocalCacheData = 1; - static const int NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4; - static const int NSURLRequestReloadIgnoringCacheData = 1; - static const int NSURLRequestReturnCacheDataElseLoad = 2; - static const int NSURLRequestReturnCacheDataDontLoad = 3; - static const int NSURLRequestReloadRevalidatingCacheData = 5; -} - -abstract class NSURLRequestNetworkServiceType { - static const int NSURLNetworkServiceTypeDefault = 0; - static const int NSURLNetworkServiceTypeVoIP = 1; - static const int NSURLNetworkServiceTypeVideo = 2; - static const int NSURLNetworkServiceTypeBackground = 3; - static const int NSURLNetworkServiceTypeVoice = 4; - static const int NSURLNetworkServiceTypeResponsiveData = 6; - static const int NSURLNetworkServiceTypeAVStreaming = 8; - static const int NSURLNetworkServiceTypeResponsiveAV = 9; - static const int NSURLNetworkServiceTypeCallSignaling = 11; -} - -abstract class NSURLRequestAttribution { - static const int NSURLRequestAttributionDeveloper = 0; - static const int NSURLRequestAttributionUser = 1; -} - -class NSInputStream extends NSStream { - NSInputStream._(ffi.Pointer id, SentryCocoa lib, +class NSHost extends NSObject { + NSHost._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSInputStream] that points to the same underlying object as [other]. - static NSInputStream castFrom(T other) { - return NSInputStream._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSHost] that points to the same underlying object as [other]. + static NSHost castFrom(T other) { + return NSHost._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSInputStream] that wraps the given raw object pointer. - static NSInputStream castFromPointer( - SentryCocoa lib, ffi.Pointer other, + /// Returns a [NSHost] that wraps the given raw object pointer. + static NSHost castFromPointer(SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSInputStream._(other, lib, retain: retain, release: release); + return NSHost._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSInputStream]. + /// Returns whether [obj] is an instance of [NSHost]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSInputStream1); - } - - int read_maxLength_(ffi.Pointer buffer, int len) { - return _lib._objc_msgSend_820(_id, _lib._sel_read_maxLength_1, buffer, len); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSHost1); } - bool getBuffer_length_(ffi.Pointer> buffer, - ffi.Pointer len) { - return _lib._objc_msgSend_827( - _id, _lib._sel_getBuffer_length_1, buffer, len); + static NSHost currentHost(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_currentHost1); + return NSHost._(_ret, _lib, retain: true, release: true); } - bool get hasBytesAvailable { - return _lib._objc_msgSend_12(_id, _lib._sel_hasBytesAvailable1); + static NSHost hostWithName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSHost1, + _lib._sel_hostWithName_1, name?._id ?? ffi.nullptr); + return NSHost._(_ret, _lib, retain: true, release: true); } - NSInputStream initWithData_(NSData? data) { - final _ret = _lib._objc_msgSend_257( - _id, _lib._sel_initWithData_1, data?._id ?? ffi.nullptr); - return NSInputStream._(_ret, _lib, retain: true, release: true); + static NSHost hostWithAddress_(SentryCocoa _lib, NSString? address) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSHost1, + _lib._sel_hostWithAddress_1, address?._id ?? ffi.nullptr); + return NSHost._(_ret, _lib, retain: true, release: true); } - NSInputStream initWithURL_(NSURL? url) { - final _ret = _lib._objc_msgSend_241( - _id, _lib._sel_initWithURL_1, url?._id ?? ffi.nullptr); - return NSInputStream._(_ret, _lib, retain: true, release: true); + bool isEqualToHost_(NSHost? aHost) { + return _lib._objc_msgSend_789( + _id, _lib._sel_isEqualToHost_1, aHost?._id ?? ffi.nullptr); } - NSInputStream initWithFileAtPath_(NSString? path) { - final _ret = _lib._objc_msgSend_30( - _id, _lib._sel_initWithFileAtPath_1, path?._id ?? ffi.nullptr); - return NSInputStream._(_ret, _lib, retain: true, release: true); + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - static NSInputStream inputStreamWithData_(SentryCocoa _lib, NSData? data) { - final _ret = _lib._objc_msgSend_257(_lib._class_NSInputStream1, - _lib._sel_inputStreamWithData_1, data?._id ?? ffi.nullptr); - return NSInputStream._(_ret, _lib, retain: true, release: true); + NSArray? get names { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_names1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - static NSInputStream inputStreamWithFileAtPath_( - SentryCocoa _lib, NSString? path) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSInputStream1, - _lib._sel_inputStreamWithFileAtPath_1, path?._id ?? ffi.nullptr); - return NSInputStream._(_ret, _lib, retain: true, release: true); + NSString? get address { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_address1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - static NSInputStream inputStreamWithURL_(SentryCocoa _lib, NSURL? url) { - final _ret = _lib._objc_msgSend_241(_lib._class_NSInputStream1, - _lib._sel_inputStreamWithURL_1, url?._id ?? ffi.nullptr); - return NSInputStream._(_ret, _lib, retain: true, release: true); + NSArray? get addresses { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_addresses1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - static void getStreamsToHostWithName_port_inputStream_outputStream_( - SentryCocoa _lib, - NSString? hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_822( - _lib._class_NSInputStream1, - _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, - hostname?._id ?? ffi.nullptr, - port, - inputStream, - outputStream); + NSString? get localizedName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localizedName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - static void getStreamsToHost_port_inputStream_outputStream_( - SentryCocoa _lib, - NSHost? host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_825( - _lib._class_NSInputStream1, - _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, - host?._id ?? ffi.nullptr, - port, - inputStream, - outputStream); + static void setHostCacheEnabled_(SentryCocoa _lib, bool flag) { + _lib._objc_msgSend_790( + _lib._class_NSHost1, _lib._sel_setHostCacheEnabled_1, flag); } - static void getBoundStreamsWithBufferSize_inputStream_outputStream_( - SentryCocoa _lib, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_826( - _lib._class_NSInputStream1, - _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, - bufferSize, - inputStream, - outputStream); + static bool isHostCacheEnabled(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSHost1, _lib._sel_isHostCacheEnabled1); + } + + static void flushHostCache(SentryCocoa _lib) { + _lib._objc_msgSend_1(_lib._class_NSHost1, _lib._sel_flushHostCache1); } @override - NSInputStream init() { + NSHost init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSInputStream._(_ret, _lib, retain: true, release: true); + return NSHost._(_ret, _lib, retain: true, release: true); } - static NSInputStream new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInputStream1, _lib._sel_new1); - return NSInputStream._(_ret, _lib, retain: false, release: true); + static NSHost new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_new1); + return NSHost._(_ret, _lib, retain: false, release: true); } - static NSInputStream allocWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + static NSHost allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSInputStream1, _lib._sel_allocWithZone_1, zone); - return NSInputStream._(_ret, _lib, retain: false, release: true); + _lib._class_NSHost1, _lib._sel_allocWithZone_1, zone); + return NSHost._(_ret, _lib, retain: false, release: true); } - static NSInputStream alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSInputStream1, _lib._sel_alloc1); - return NSInputStream._(_ret, _lib, retain: false, release: true); + static NSHost alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_alloc1); + return NSHost._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -59805,7 +59347,7 @@ class NSInputStream extends NSStream { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSInputStream1, + _lib._class_NSHost1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -59814,24 +59356,24 @@ class NSInputStream extends NSStream { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSInputStream1, + _lib._objc_msgSend_15(_lib._class_NSHost1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSInputStream1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSHost1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSInputStream1, _lib._sel_useStoredAccessor1); + _lib._class_NSHost1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSInputStream1, + _lib._class_NSHost1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -59840,7 +59382,7 @@ class NSInputStream extends NSStream { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSInputStream1, + _lib._class_NSHost1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -59848,7 +59390,7 @@ class NSInputStream extends NSStream { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSInputStream1, + _lib._class_NSHost1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -59856,155 +59398,107 @@ class NSInputStream extends NSStream { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSInputStream1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSHost1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSInputStream1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSHost1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSStream extends NSObject { - NSStream._(ffi.Pointer id, SentryCocoa lib, +class NSURLResponse extends NSObject { + NSURLResponse._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSStream] that points to the same underlying object as [other]. - static NSStream castFrom(T other) { - return NSStream._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSURLResponse] that points to the same underlying object as [other]. + static NSURLResponse castFrom(T other) { + return NSURLResponse._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSStream] that wraps the given raw object pointer. - static NSStream castFromPointer( + /// Returns a [NSURLResponse] that wraps the given raw object pointer. + static NSURLResponse castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSStream._(other, lib, retain: retain, release: release); + return NSURLResponse._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSStream]. + /// Returns whether [obj] is an instance of [NSURLResponse]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSStream1); - } - - void open() { - _lib._objc_msgSend_1(_id, _lib._sel_open1); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLResponse1); } - void close() { - _lib._objc_msgSend_1(_id, _lib._sel_close1); + NSURLResponse initWithURL_MIMEType_expectedContentLength_textEncodingName_( + NSURL? URL, NSString? MIMEType, int length, NSString? name) { + final _ret = _lib._objc_msgSend_796( + _id, + _lib._sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_1, + URL?._id ?? ffi.nullptr, + MIMEType?._id ?? ffi.nullptr, + length, + name?._id ?? ffi.nullptr); + return NSURLResponse._(_ret, _lib, retain: true, release: true); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); + NSURL? get URL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); return _ret.address == 0 ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set delegate(NSObject? value) { - return _lib._objc_msgSend_387( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); - } - - NSObject propertyForKey_(NSString key) { - final _ret = - _lib._objc_msgSend_30(_id, _lib._sel_propertyForKey_1, key._id); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - bool setProperty_forKey_(NSObject property, NSString key) { - return _lib._objc_msgSend_240( - _id, _lib._sel_setProperty_forKey_1, property._id, key._id); - } - - void scheduleInRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { - _lib._objc_msgSend_533(_id, _lib._sel_scheduleInRunLoop_forMode_1, - aRunLoop?._id ?? ffi.nullptr, mode._id); - } - - void removeFromRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { - _lib._objc_msgSend_533(_id, _lib._sel_removeFromRunLoop_forMode_1, - aRunLoop?._id ?? ffi.nullptr, mode._id); - } - - int get streamStatus { - return _lib._objc_msgSend_819(_id, _lib._sel_streamStatus1); + : NSURL._(_ret, _lib, retain: true, release: true); } - NSError? get streamError { - final _ret = _lib._objc_msgSend_298(_id, _lib._sel_streamError1); + NSString? get MIMEType { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_MIMEType1); return _ret.address == 0 ? null - : NSError._(_ret, _lib, retain: true, release: true); + : NSString._(_ret, _lib, retain: true, release: true); } - static void getStreamsToHostWithName_port_inputStream_outputStream_( - SentryCocoa _lib, - NSString? hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_822( - _lib._class_NSStream1, - _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, - hostname?._id ?? ffi.nullptr, - port, - inputStream, - outputStream); + int get expectedContentLength { + return _lib._objc_msgSend_220(_id, _lib._sel_expectedContentLength1); } - static void getStreamsToHost_port_inputStream_outputStream_( - SentryCocoa _lib, - NSHost? host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_825( - _lib._class_NSStream1, - _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, - host?._id ?? ffi.nullptr, - port, - inputStream, - outputStream); + NSString? get textEncodingName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_textEncodingName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - static void getBoundStreamsWithBufferSize_inputStream_outputStream_( - SentryCocoa _lib, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_826( - _lib._class_NSStream1, - _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, - bufferSize, - inputStream, - outputStream); + NSString? get suggestedFilename { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_suggestedFilename1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } @override - NSStream init() { + NSURLResponse init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSStream._(_ret, _lib, retain: true, release: true); + return NSURLResponse._(_ret, _lib, retain: true, release: true); } - static NSStream new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSStream1, _lib._sel_new1); - return NSStream._(_ret, _lib, retain: false, release: true); + static NSURLResponse new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLResponse1, _lib._sel_new1); + return NSURLResponse._(_ret, _lib, retain: false, release: true); } - static NSStream allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + static NSURLResponse allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSStream1, _lib._sel_allocWithZone_1, zone); - return NSStream._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLResponse1, _lib._sel_allocWithZone_1, zone); + return NSURLResponse._(_ret, _lib, retain: false, release: true); } - static NSStream alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSStream1, _lib._sel_alloc1); - return NSStream._(_ret, _lib, retain: false, release: true); + static NSURLResponse alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLResponse1, _lib._sel_alloc1); + return NSURLResponse._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -60013,7 +59507,7 @@ class NSStream extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSStream1, + _lib._class_NSURLResponse1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -60022,24 +59516,24 @@ class NSStream extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSStream1, + _lib._objc_msgSend_15(_lib._class_NSURLResponse1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSStream1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSURLResponse1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSStream1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLResponse1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSStream1, + _lib._class_NSURLResponse1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -60048,7 +59542,7 @@ class NSStream extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSStream1, + _lib._class_NSURLResponse1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -60056,7 +59550,7 @@ class NSStream extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSStream1, + _lib._class_NSURLResponse1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -60064,183 +59558,198 @@ class NSStream extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSStream1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSURLResponse1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSStream1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSURLResponse1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSStreamStatus { - static const int NSStreamStatusNotOpen = 0; - static const int NSStreamStatusOpening = 1; - static const int NSStreamStatusOpen = 2; - static const int NSStreamStatusReading = 3; - static const int NSStreamStatusWriting = 4; - static const int NSStreamStatusAtEnd = 5; - static const int NSStreamStatusClosed = 6; - static const int NSStreamStatusError = 7; +abstract class NSURLSessionTaskState { + static const int NSURLSessionTaskStateRunning = 0; + static const int NSURLSessionTaskStateSuspended = 1; + static const int NSURLSessionTaskStateCanceling = 2; + static const int NSURLSessionTaskStateCompleted = 3; } -class NSOutputStream extends NSStream { - NSOutputStream._(ffi.Pointer id, SentryCocoa lib, +void _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSArray_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSArray_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSArray_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSArray_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSArray_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSArray_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSArray_closureRegistry[block.ref.target.address] + as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSArray extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSArray._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSArray.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSArray.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSArray_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSArray_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +class NSIndexPath extends NSObject { + NSIndexPath._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSOutputStream] that points to the same underlying object as [other]. - static NSOutputStream castFrom(T other) { - return NSOutputStream._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSIndexPath] that points to the same underlying object as [other]. + static NSIndexPath castFrom(T other) { + return NSIndexPath._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSOutputStream] that wraps the given raw object pointer. - static NSOutputStream castFromPointer( + /// Returns a [NSIndexPath] that wraps the given raw object pointer. + static NSIndexPath castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSOutputStream._(other, lib, retain: retain, release: release); + return NSIndexPath._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSOutputStream]. + /// Returns whether [obj] is an instance of [NSIndexPath]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSOutputStream1); - } - - int write_maxLength_(ffi.Pointer buffer, int len) { - return _lib._objc_msgSend_820( - _id, _lib._sel_write_maxLength_1, buffer, len); - } - - bool get hasSpaceAvailable { - return _lib._objc_msgSend_12(_id, _lib._sel_hasSpaceAvailable1); + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSIndexPath1); } - NSOutputStream initToMemory() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_initToMemory1); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + static NSIndexPath indexPathWithIndex_(SentryCocoa _lib, int index) { + final _ret = _lib._objc_msgSend_60( + _lib._class_NSIndexPath1, _lib._sel_indexPathWithIndex_1, index); + return NSIndexPath._(_ret, _lib, retain: true, release: true); } - NSOutputStream initToBuffer_capacity_( - ffi.Pointer buffer, int capacity) { - final _ret = _lib._objc_msgSend_821( - _id, _lib._sel_initToBuffer_capacity_1, buffer, capacity); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + static NSIndexPath indexPathWithIndexes_length_( + SentryCocoa _lib, ffi.Pointer indexes, int length) { + final _ret = _lib._objc_msgSend_802(_lib._class_NSIndexPath1, + _lib._sel_indexPathWithIndexes_length_1, indexes, length); + return NSIndexPath._(_ret, _lib, retain: true, release: true); } - NSOutputStream initWithURL_append_(NSURL? url, bool shouldAppend) { - final _ret = _lib._objc_msgSend_246(_id, _lib._sel_initWithURL_append_1, - url?._id ?? ffi.nullptr, shouldAppend); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + NSIndexPath initWithIndexes_length_( + ffi.Pointer indexes, int length) { + final _ret = _lib._objc_msgSend_802( + _id, _lib._sel_initWithIndexes_length_1, indexes, length); + return NSIndexPath._(_ret, _lib, retain: true, release: true); } - NSOutputStream initToFileAtPath_append_(NSString? path, bool shouldAppend) { - final _ret = _lib._objc_msgSend_29(_id, _lib._sel_initToFileAtPath_append_1, - path?._id ?? ffi.nullptr, shouldAppend); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + NSIndexPath initWithIndex_(int index) { + final _ret = _lib._objc_msgSend_60(_id, _lib._sel_initWithIndex_1, index); + return NSIndexPath._(_ret, _lib, retain: true, release: true); } - static NSOutputStream outputStreamToMemory(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSOutputStream1, _lib._sel_outputStreamToMemory1); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + NSIndexPath indexPathByAddingIndex_(int index) { + final _ret = + _lib._objc_msgSend_803(_id, _lib._sel_indexPathByAddingIndex_1, index); + return NSIndexPath._(_ret, _lib, retain: true, release: true); } - static NSOutputStream outputStreamToBuffer_capacity_( - SentryCocoa _lib, ffi.Pointer buffer, int capacity) { - final _ret = _lib._objc_msgSend_821(_lib._class_NSOutputStream1, - _lib._sel_outputStreamToBuffer_capacity_1, buffer, capacity); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + NSIndexPath indexPathByRemovingLastIndex() { + final _ret = + _lib._objc_msgSend_804(_id, _lib._sel_indexPathByRemovingLastIndex1); + return NSIndexPath._(_ret, _lib, retain: true, release: true); } - static NSOutputStream outputStreamToFileAtPath_append_( - SentryCocoa _lib, NSString? path, bool shouldAppend) { - final _ret = _lib._objc_msgSend_29( - _lib._class_NSOutputStream1, - _lib._sel_outputStreamToFileAtPath_append_1, - path?._id ?? ffi.nullptr, - shouldAppend); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + int indexAtPosition_(int position) { + return _lib._objc_msgSend_88(_id, _lib._sel_indexAtPosition_1, position); } - static NSOutputStream outputStreamWithURL_append_( - SentryCocoa _lib, NSURL? url, bool shouldAppend) { - final _ret = _lib._objc_msgSend_246( - _lib._class_NSOutputStream1, - _lib._sel_outputStreamWithURL_append_1, - url?._id ?? ffi.nullptr, - shouldAppend); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + int get length { + return _lib._objc_msgSend_10(_id, _lib._sel_length1); } - static void getStreamsToHostWithName_port_inputStream_outputStream_( - SentryCocoa _lib, - NSString? hostname, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_822( - _lib._class_NSOutputStream1, - _lib._sel_getStreamsToHostWithName_port_inputStream_outputStream_1, - hostname?._id ?? ffi.nullptr, - port, - inputStream, - outputStream); + void getIndexes_range_( + ffi.Pointer indexes, _NSRange positionRange) { + _lib._objc_msgSend_805( + _id, _lib._sel_getIndexes_range_1, indexes, positionRange); } - static void getStreamsToHost_port_inputStream_outputStream_( - SentryCocoa _lib, - NSHost? host, - int port, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_825( - _lib._class_NSOutputStream1, - _lib._sel_getStreamsToHost_port_inputStream_outputStream_1, - host?._id ?? ffi.nullptr, - port, - inputStream, - outputStream); + int compare_(NSIndexPath? otherObject) { + return _lib._objc_msgSend_806( + _id, _lib._sel_compare_1, otherObject?._id ?? ffi.nullptr); } - static void getBoundStreamsWithBufferSize_inputStream_outputStream_( - SentryCocoa _lib, - int bufferSize, - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - _lib._objc_msgSend_826( - _lib._class_NSOutputStream1, - _lib._sel_getBoundStreamsWithBufferSize_inputStream_outputStream_1, - bufferSize, - inputStream, - outputStream); + void getIndexes_(ffi.Pointer indexes) { + _lib._objc_msgSend_807(_id, _lib._sel_getIndexes_1, indexes); } @override - NSOutputStream init() { + NSIndexPath init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOutputStream._(_ret, _lib, retain: true, release: true); + return NSIndexPath._(_ret, _lib, retain: true, release: true); } - static NSOutputStream new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSOutputStream1, _lib._sel_new1); - return NSOutputStream._(_ret, _lib, retain: false, release: true); + static NSIndexPath new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSIndexPath1, _lib._sel_new1); + return NSIndexPath._(_ret, _lib, retain: false, release: true); } - static NSOutputStream allocWithZone_( + static NSIndexPath allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSOutputStream1, _lib._sel_allocWithZone_1, zone); - return NSOutputStream._(_ret, _lib, retain: false, release: true); + _lib._class_NSIndexPath1, _lib._sel_allocWithZone_1, zone); + return NSIndexPath._(_ret, _lib, retain: false, release: true); } - static NSOutputStream alloc(SentryCocoa _lib) { + static NSIndexPath alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSOutputStream1, _lib._sel_alloc1); - return NSOutputStream._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSIndexPath1, _lib._sel_alloc1); + return NSIndexPath._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -60249,7 +59758,7 @@ class NSOutputStream extends NSStream { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSOutputStream1, + _lib._class_NSIndexPath1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -60258,24 +59767,24 @@ class NSOutputStream extends NSStream { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOutputStream1, + _lib._objc_msgSend_15(_lib._class_NSIndexPath1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSOutputStream1, - _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12( + _lib._class_NSIndexPath1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSOutputStream1, _lib._sel_useStoredAccessor1); + _lib._class_NSIndexPath1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSOutputStream1, + _lib._class_NSIndexPath1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -60284,7 +59793,7 @@ class NSOutputStream extends NSStream { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSOutputStream1, + _lib._class_NSIndexPath1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -60292,7 +59801,7 @@ class NSOutputStream extends NSStream { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSOutputStream1, + _lib._class_NSIndexPath1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -60300,131 +59809,82 @@ class NSOutputStream extends NSStream { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSOutputStream1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSIndexPath1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSOutputStream1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSIndexPath1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSHost extends NSObject { - NSHost._(ffi.Pointer id, SentryCocoa lib, +class NSInflectionRule extends NSObject { + NSInflectionRule._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSHost] that points to the same underlying object as [other]. - static NSHost castFrom(T other) { - return NSHost._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSInflectionRule] that points to the same underlying object as [other]. + static NSInflectionRule castFrom(T other) { + return NSInflectionRule._(other._id, other._lib, + retain: true, release: true); } - /// Returns a [NSHost] that wraps the given raw object pointer. - static NSHost castFromPointer(SentryCocoa lib, ffi.Pointer other, + /// Returns a [NSInflectionRule] that wraps the given raw object pointer. + static NSInflectionRule castFromPointer( + SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSHost._(other, lib, retain: retain, release: release); + return NSInflectionRule._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSHost]. + /// Returns whether [obj] is an instance of [NSInflectionRule]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSHost1); - } - - static NSHost currentHost(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_currentHost1); - return NSHost._(_ret, _lib, retain: true, release: true); - } - - static NSHost hostWithName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSHost1, - _lib._sel_hostWithName_1, name?._id ?? ffi.nullptr); - return NSHost._(_ret, _lib, retain: true, release: true); - } - - static NSHost hostWithAddress_(SentryCocoa _lib, NSString? address) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSHost1, - _lib._sel_hostWithAddress_1, address?._id ?? ffi.nullptr); - return NSHost._(_ret, _lib, retain: true, release: true); - } - - bool isEqualToHost_(NSHost? aHost) { - return _lib._objc_msgSend_823( - _id, _lib._sel_isEqualToHost_1, aHost?._id ?? ffi.nullptr); - } - - NSString? get name { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray? get names { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_names1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSString? get address { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_address1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSInflectionRule1); } - NSArray? get addresses { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_addresses1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + @override + NSObject init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSObject._(_ret, _lib, retain: true, release: true); } - NSString? get localizedName { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localizedName1); + static NSInflectionRule? getAutomaticRule(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_808( + _lib._class_NSInflectionRule1, _lib._sel_automaticRule1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static void setHostCacheEnabled_(SentryCocoa _lib, bool flag) { - _lib._objc_msgSend_824( - _lib._class_NSHost1, _lib._sel_setHostCacheEnabled_1, flag); - } - - static bool isHostCacheEnabled(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHost1, _lib._sel_isHostCacheEnabled1); + : NSInflectionRule._(_ret, _lib, retain: true, release: true); } - static void flushHostCache(SentryCocoa _lib) { - _lib._objc_msgSend_1(_lib._class_NSHost1, _lib._sel_flushHostCache1); + static bool canInflectLanguage_(SentryCocoa _lib, NSString? language) { + return _lib._objc_msgSend_59(_lib._class_NSInflectionRule1, + _lib._sel_canInflectLanguage_1, language?._id ?? ffi.nullptr); } - @override - NSHost init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSHost._(_ret, _lib, retain: true, release: true); + static bool getCanInflectPreferredLocalization(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSInflectionRule1, + _lib._sel_canInflectPreferredLocalization1); } - static NSHost new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_new1); - return NSHost._(_ret, _lib, retain: false, release: true); + static NSInflectionRule new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInflectionRule1, _lib._sel_new1); + return NSInflectionRule._(_ret, _lib, retain: false, release: true); } - static NSHost allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + static NSInflectionRule allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSHost1, _lib._sel_allocWithZone_1, zone); - return NSHost._(_ret, _lib, retain: false, release: true); + _lib._class_NSInflectionRule1, _lib._sel_allocWithZone_1, zone); + return NSInflectionRule._(_ret, _lib, retain: false, release: true); } - static NSHost alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSHost1, _lib._sel_alloc1); - return NSHost._(_ret, _lib, retain: false, release: true); + static NSInflectionRule alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSInflectionRule1, _lib._sel_alloc1); + return NSInflectionRule._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -60433,7 +59893,7 @@ class NSHost extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSHost1, + _lib._class_NSInflectionRule1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -60442,24 +59902,24 @@ class NSHost extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSHost1, + _lib._objc_msgSend_15(_lib._class_NSInflectionRule1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSHost1, _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12(_lib._class_NSInflectionRule1, + _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSHost1, _lib._sel_useStoredAccessor1); + _lib._class_NSInflectionRule1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSHost1, + _lib._class_NSInflectionRule1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -60468,7 +59928,7 @@ class NSHost extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSHost1, + _lib._class_NSInflectionRule1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -60476,115 +59936,123 @@ class NSHost extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSHost1, + _lib._class_NSInflectionRule1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_NSHost1, _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79(_lib._class_NSInflectionRule1, + _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSHost1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSInflectionRule1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSURLResponse extends NSObject { - NSURLResponse._(ffi.Pointer id, SentryCocoa lib, +class NSMorphology extends NSObject { + NSMorphology._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLResponse] that points to the same underlying object as [other]. - static NSURLResponse castFrom(T other) { - return NSURLResponse._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSMorphology] that points to the same underlying object as [other]. + static NSMorphology castFrom(T other) { + return NSMorphology._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLResponse] that wraps the given raw object pointer. - static NSURLResponse castFromPointer( + /// Returns a [NSMorphology] that wraps the given raw object pointer. + static NSMorphology castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLResponse._(other, lib, retain: retain, release: release); + return NSMorphology._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLResponse]. + /// Returns whether [obj] is an instance of [NSMorphology]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLResponse1); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSMorphology1); } - NSURLResponse initWithURL_MIMEType_expectedContentLength_textEncodingName_( - NSURL? URL, NSString? MIMEType, int length, NSString? name) { - final _ret = _lib._objc_msgSend_830( - _id, - _lib._sel_initWithURL_MIMEType_expectedContentLength_textEncodingName_1, - URL?._id ?? ffi.nullptr, - MIMEType?._id ?? ffi.nullptr, - length, - name?._id ?? ffi.nullptr); - return NSURLResponse._(_ret, _lib, retain: true, release: true); + int get grammaticalGender { + return _lib._objc_msgSend_809(_id, _lib._sel_grammaticalGender1); } - NSURL? get URL { - final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + set grammaticalGender(int value) { + return _lib._objc_msgSend_810(_id, _lib._sel_setGrammaticalGender_1, value); } - NSString? get MIMEType { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_MIMEType1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get partOfSpeech { + return _lib._objc_msgSend_811(_id, _lib._sel_partOfSpeech1); } - int get expectedContentLength { - return _lib._objc_msgSend_220(_id, _lib._sel_expectedContentLength1); + set partOfSpeech(int value) { + return _lib._objc_msgSend_812(_id, _lib._sel_setPartOfSpeech_1, value); } - NSString? get textEncodingName { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_textEncodingName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get number { + return _lib._objc_msgSend_813(_id, _lib._sel_number1); } - NSString? get suggestedFilename { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_suggestedFilename1); + set number(int value) { + return _lib._objc_msgSend_814(_id, _lib._sel_setNumber_1, value); + } + + NSMorphologyCustomPronoun customPronounForLanguage_(NSString? language) { + final _ret = _lib._objc_msgSend_815(_id, + _lib._sel_customPronounForLanguage_1, language?._id ?? ffi.nullptr); + return NSMorphologyCustomPronoun._(_ret, _lib, retain: true, release: true); + } + + bool setCustomPronoun_forLanguage_error_(NSMorphologyCustomPronoun? features, + NSString? language, ffi.Pointer> error) { + return _lib._objc_msgSend_816( + _id, + _lib._sel_setCustomPronoun_forLanguage_error_1, + features?._id ?? ffi.nullptr, + language?._id ?? ffi.nullptr, + error); + } + + bool get unspecified { + return _lib._objc_msgSend_12(_id, _lib._sel_isUnspecified1); + } + + static NSMorphology? getUserMorphology(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_817( + _lib._class_NSMorphology1, _lib._sel_userMorphology1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSMorphology._(_ret, _lib, retain: true, release: true); } @override - NSURLResponse init() { + NSMorphology init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLResponse._(_ret, _lib, retain: true, release: true); + return NSMorphology._(_ret, _lib, retain: true, release: true); } - static NSURLResponse new1(SentryCocoa _lib) { + static NSMorphology new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLResponse1, _lib._sel_new1); - return NSURLResponse._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSMorphology1, _lib._sel_new1); + return NSMorphology._(_ret, _lib, retain: false, release: true); } - static NSURLResponse allocWithZone_( + static NSMorphology allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLResponse1, _lib._sel_allocWithZone_1, zone); - return NSURLResponse._(_ret, _lib, retain: false, release: true); + _lib._class_NSMorphology1, _lib._sel_allocWithZone_1, zone); + return NSMorphology._(_ret, _lib, retain: false, release: true); } - static NSURLResponse alloc(SentryCocoa _lib) { + static NSMorphology alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLResponse1, _lib._sel_alloc1); - return NSURLResponse._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSMorphology1, _lib._sel_alloc1); + return NSMorphology._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -60593,7 +60061,7 @@ class NSURLResponse extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLResponse1, + _lib._class_NSMorphology1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -60602,24 +60070,24 @@ class NSURLResponse extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLResponse1, + _lib._objc_msgSend_15(_lib._class_NSMorphology1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLResponse1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSMorphology1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLResponse1, _lib._sel_useStoredAccessor1); + _lib._class_NSMorphology1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLResponse1, + _lib._class_NSMorphology1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -60628,7 +60096,7 @@ class NSURLResponse extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLResponse1, + _lib._class_NSMorphology1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -60636,7 +60104,7 @@ class NSURLResponse extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLResponse1, + _lib._class_NSMorphology1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -60644,198 +60112,175 @@ class NSURLResponse extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSURLResponse1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSMorphology1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLResponse1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSMorphology1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSURLSessionTaskState { - static const int NSURLSessionTaskStateRunning = 0; - static const int NSURLSessionTaskStateSuspended = 1; - static const int NSURLSessionTaskStateCanceling = 2; - static const int NSURLSessionTaskStateCompleted = 3; -} - -void _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return block.ref.target - .cast< - ffi.NativeFunction arg0)>>() - .asFunction arg0)>()(arg0); -} - -final _ObjCBlock_ffiVoid_NSArray_closureRegistry = {}; -int _ObjCBlock_ffiVoid_NSArray_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSArray_registerClosure(Function fn) { - final id = ++_ObjCBlock_ffiVoid_NSArray_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSArray_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); +abstract class NSGrammaticalGender { + static const int NSGrammaticalGenderNotSet = 0; + static const int NSGrammaticalGenderFeminine = 1; + static const int NSGrammaticalGenderMasculine = 2; + static const int NSGrammaticalGenderNeuter = 3; } -void _ObjCBlock_ffiVoid_NSArray_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return (_ObjCBlock_ffiVoid_NSArray_closureRegistry[block.ref.target.address] - as void Function(ffi.Pointer))(arg0); +abstract class NSGrammaticalPartOfSpeech { + static const int NSGrammaticalPartOfSpeechNotSet = 0; + static const int NSGrammaticalPartOfSpeechDeterminer = 1; + static const int NSGrammaticalPartOfSpeechPronoun = 2; + static const int NSGrammaticalPartOfSpeechLetter = 3; + static const int NSGrammaticalPartOfSpeechAdverb = 4; + static const int NSGrammaticalPartOfSpeechParticle = 5; + static const int NSGrammaticalPartOfSpeechAdjective = 6; + static const int NSGrammaticalPartOfSpeechAdposition = 7; + static const int NSGrammaticalPartOfSpeechVerb = 8; + static const int NSGrammaticalPartOfSpeechNoun = 9; + static const int NSGrammaticalPartOfSpeechConjunction = 10; + static const int NSGrammaticalPartOfSpeechNumeral = 11; + static const int NSGrammaticalPartOfSpeechInterjection = 12; + static const int NSGrammaticalPartOfSpeechPreposition = 13; + static const int NSGrammaticalPartOfSpeechAbbreviation = 14; } -class ObjCBlock_ffiVoid_NSArray extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSArray._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); - - /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSArray.fromFunctionPointer( - SentryCocoa lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSArray_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSArray.fromFunction( - SentryCocoa lib, void Function(ffi.Pointer arg0) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSArray_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSArray_registerClosure(fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - void call(ffi.Pointer arg0) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>()(_id, arg0); - } +abstract class NSGrammaticalNumber { + static const int NSGrammaticalNumberNotSet = 0; + static const int NSGrammaticalNumberSingular = 1; + static const int NSGrammaticalNumberZero = 2; + static const int NSGrammaticalNumberPlural = 3; + static const int NSGrammaticalNumberPluralTwo = 4; + static const int NSGrammaticalNumberPluralFew = 5; + static const int NSGrammaticalNumberPluralMany = 6; } -class NSIndexPath extends NSObject { - NSIndexPath._(ffi.Pointer id, SentryCocoa lib, +class NSMorphologyCustomPronoun extends NSObject { + NSMorphologyCustomPronoun._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSIndexPath] that points to the same underlying object as [other]. - static NSIndexPath castFrom(T other) { - return NSIndexPath._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSMorphologyCustomPronoun] that points to the same underlying object as [other]. + static NSMorphologyCustomPronoun castFrom(T other) { + return NSMorphologyCustomPronoun._(other._id, other._lib, + retain: true, release: true); } - /// Returns a [NSIndexPath] that wraps the given raw object pointer. - static NSIndexPath castFromPointer( + /// Returns a [NSMorphologyCustomPronoun] that wraps the given raw object pointer. + static NSMorphologyCustomPronoun castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSIndexPath._(other, lib, retain: retain, release: release); + return NSMorphologyCustomPronoun._(other, lib, + retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSIndexPath]. + /// Returns whether [obj] is an instance of [NSMorphologyCustomPronoun]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSIndexPath1); + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMorphologyCustomPronoun1); } - static NSIndexPath indexPathWithIndex_(SentryCocoa _lib, int index) { - final _ret = _lib._objc_msgSend_60( - _lib._class_NSIndexPath1, _lib._sel_indexPathWithIndex_1, index); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + static bool isSupportedForLanguage_(SentryCocoa _lib, NSString? language) { + return _lib._objc_msgSend_59(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_isSupportedForLanguage_1, language?._id ?? ffi.nullptr); } - static NSIndexPath indexPathWithIndexes_length_( - SentryCocoa _lib, ffi.Pointer indexes, int length) { - final _ret = _lib._objc_msgSend_836(_lib._class_NSIndexPath1, - _lib._sel_indexPathWithIndexes_length_1, indexes, length); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + static NSArray requiredKeysForLanguage_( + SentryCocoa _lib, NSString? language) { + final _ret = _lib._objc_msgSend_123(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_requiredKeysForLanguage_1, language?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); } - NSIndexPath initWithIndexes_length_( - ffi.Pointer indexes, int length) { - final _ret = _lib._objc_msgSend_836( - _id, _lib._sel_initWithIndexes_length_1, indexes, length); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + NSString? get subjectForm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_subjectForm1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - NSIndexPath initWithIndex_(int index) { - final _ret = _lib._objc_msgSend_60(_id, _lib._sel_initWithIndex_1, index); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + set subjectForm(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setSubjectForm_1, value?._id ?? ffi.nullptr); } - NSIndexPath indexPathByAddingIndex_(int index) { - final _ret = - _lib._objc_msgSend_837(_id, _lib._sel_indexPathByAddingIndex_1, index); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + NSString? get objectForm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_objectForm1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - NSIndexPath indexPathByRemovingLastIndex() { - final _ret = - _lib._objc_msgSend_838(_id, _lib._sel_indexPathByRemovingLastIndex1); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + set objectForm(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setObjectForm_1, value?._id ?? ffi.nullptr); } - int indexAtPosition_(int position) { - return _lib._objc_msgSend_88(_id, _lib._sel_indexAtPosition_1, position); + NSString? get possessiveForm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_possessiveForm1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); + set possessiveForm(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPossessiveForm_1, value?._id ?? ffi.nullptr); } - void getIndexes_range_( - ffi.Pointer indexes, _NSRange positionRange) { - _lib._objc_msgSend_839( - _id, _lib._sel_getIndexes_range_1, indexes, positionRange); + NSString? get possessiveAdjectiveForm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_possessiveAdjectiveForm1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - int compare_(NSIndexPath? otherObject) { - return _lib._objc_msgSend_840( - _id, _lib._sel_compare_1, otherObject?._id ?? ffi.nullptr); + set possessiveAdjectiveForm(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPossessiveAdjectiveForm_1, value?._id ?? ffi.nullptr); } - void getIndexes_(ffi.Pointer indexes) { - _lib._objc_msgSend_841(_id, _lib._sel_getIndexes_1, indexes); + NSString? get reflexiveForm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_reflexiveForm1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set reflexiveForm(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setReflexiveForm_1, value?._id ?? ffi.nullptr); } @override - NSIndexPath init() { + NSMorphologyCustomPronoun init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSIndexPath._(_ret, _lib, retain: true, release: true); + return NSMorphologyCustomPronoun._(_ret, _lib, retain: true, release: true); } - static NSIndexPath new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSIndexPath1, _lib._sel_new1); - return NSIndexPath._(_ret, _lib, retain: false, release: true); + static NSMorphologyCustomPronoun new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMorphologyCustomPronoun1, _lib._sel_new1); + return NSMorphologyCustomPronoun._(_ret, _lib, + retain: false, release: true); } - static NSIndexPath allocWithZone_( + static NSMorphologyCustomPronoun allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSIndexPath1, _lib._sel_allocWithZone_1, zone); - return NSIndexPath._(_ret, _lib, retain: false, release: true); + final _ret = _lib._objc_msgSend_3(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_allocWithZone_1, zone); + return NSMorphologyCustomPronoun._(_ret, _lib, + retain: false, release: true); } - static NSIndexPath alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSIndexPath1, _lib._sel_alloc1); - return NSIndexPath._(_ret, _lib, retain: false, release: true); + static NSMorphologyCustomPronoun alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMorphologyCustomPronoun1, _lib._sel_alloc1); + return NSMorphologyCustomPronoun._(_ret, _lib, + retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -60844,7 +60289,7 @@ class NSIndexPath extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSIndexPath1, + _lib._class_NSMorphologyCustomPronoun1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -60853,24 +60298,24 @@ class NSIndexPath extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSIndexPath1, + _lib._objc_msgSend_15(_lib._class_NSMorphologyCustomPronoun1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSIndexPath1, _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSIndexPath1, _lib._sel_useStoredAccessor1); + _lib._class_NSMorphologyCustomPronoun1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSIndexPath1, + _lib._class_NSMorphologyCustomPronoun1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -60879,7 +60324,7 @@ class NSIndexPath extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSIndexPath1, + _lib._class_NSMorphologyCustomPronoun1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -60887,90 +60332,179 @@ class NSIndexPath extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSIndexPath1, + _lib._class_NSMorphologyCustomPronoun1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_NSIndexPath1, _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSIndexPath1, _lib._sel_classForKeyedUnarchiver1); + final _ret = _lib._objc_msgSend_2(_lib._class_NSMorphologyCustomPronoun1, + _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSInflectionRule extends NSObject { - NSInflectionRule._(ffi.Pointer id, SentryCocoa lib, +class NSOperationQueue extends NSObject { + NSOperationQueue._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSInflectionRule] that points to the same underlying object as [other]. - static NSInflectionRule castFrom(T other) { - return NSInflectionRule._(other._id, other._lib, + /// Returns a [NSOperationQueue] that points to the same underlying object as [other]. + static NSOperationQueue castFrom(T other) { + return NSOperationQueue._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSInflectionRule] that wraps the given raw object pointer. - static NSInflectionRule castFromPointer( + /// Returns a [NSOperationQueue] that wraps the given raw object pointer. + static NSOperationQueue castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSInflectionRule._(other, lib, retain: retain, release: release); + return NSOperationQueue._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSInflectionRule]. + /// Returns whether [obj] is an instance of [NSOperationQueue]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSInflectionRule1); + obj._lib._class_NSOperationQueue1); } - @override - NSObject init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + NSProgress? get progress { + final _ret = _lib._objc_msgSend_609(_id, _lib._sel_progress1); + return _ret.address == 0 + ? null + : NSProgress._(_ret, _lib, retain: true, release: true); + } + + void addOperation_(NSOperation? op) { + _lib._objc_msgSend_818( + _id, _lib._sel_addOperation_1, op?._id ?? ffi.nullptr); + } + + void addOperations_waitUntilFinished_(NSArray? ops, bool wait) { + _lib._objc_msgSend_821(_id, _lib._sel_addOperations_waitUntilFinished_1, + ops?._id ?? ffi.nullptr, wait); + } + + void addOperationWithBlock_(ObjCBlock_ffiVoid block) { + _lib._objc_msgSend_497(_id, _lib._sel_addOperationWithBlock_1, block._id); + } + + void addBarrierBlock_(ObjCBlock_ffiVoid barrier) { + _lib._objc_msgSend_497(_id, _lib._sel_addBarrierBlock_1, barrier._id); + } + + int get maxConcurrentOperationCount { + return _lib._objc_msgSend_78(_id, _lib._sel_maxConcurrentOperationCount1); + } + + set maxConcurrentOperationCount(int value) { + return _lib._objc_msgSend_590( + _id, _lib._sel_setMaxConcurrentOperationCount_1, value); + } + + bool get suspended { + return _lib._objc_msgSend_12(_id, _lib._sel_isSuspended1); + } + + set suspended(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setSuspended_1, value); + } + + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set name(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + } + + int get qualityOfService { + return _lib._objc_msgSend_507(_id, _lib._sel_qualityOfService1); + } + + set qualityOfService(int value) { + return _lib._objc_msgSend_508(_id, _lib._sel_setQualityOfService_1, value); + } + + NSObject get underlyingQueue { + final _ret = _lib._objc_msgSend_822(_id, _lib._sel_underlyingQueue1); return NSObject._(_ret, _lib, retain: true, release: true); } - static NSInflectionRule? getAutomaticRule(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_842( - _lib._class_NSInflectionRule1, _lib._sel_automaticRule1); + set underlyingQueue(NSObject value) { + return _lib._objc_msgSend_823( + _id, _lib._sel_setUnderlyingQueue_1, value._id); + } + + void cancelAllOperations() { + _lib._objc_msgSend_1(_id, _lib._sel_cancelAllOperations1); + } + + void waitUntilAllOperationsAreFinished() { + _lib._objc_msgSend_1(_id, _lib._sel_waitUntilAllOperationsAreFinished1); + } + + static NSOperationQueue? getCurrentQueue(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_824( + _lib._class_NSOperationQueue1, _lib._sel_currentQueue1); return _ret.address == 0 ? null - : NSInflectionRule._(_ret, _lib, retain: true, release: true); + : NSOperationQueue._(_ret, _lib, retain: true, release: true); } - static bool canInflectLanguage_(SentryCocoa _lib, NSString? language) { - return _lib._objc_msgSend_59(_lib._class_NSInflectionRule1, - _lib._sel_canInflectLanguage_1, language?._id ?? ffi.nullptr); + static NSOperationQueue? getMainQueue(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_824( + _lib._class_NSOperationQueue1, _lib._sel_mainQueue1); + return _ret.address == 0 + ? null + : NSOperationQueue._(_ret, _lib, retain: true, release: true); } - static bool getCanInflectPreferredLocalization(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSInflectionRule1, - _lib._sel_canInflectPreferredLocalization1); + NSArray? get operations { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_operations1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - static NSInflectionRule new1(SentryCocoa _lib) { + int get operationCount { + return _lib._objc_msgSend_10(_id, _lib._sel_operationCount1); + } + + @override + NSOperationQueue init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSOperationQueue._(_ret, _lib, retain: true, release: true); + } + + static NSOperationQueue new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSInflectionRule1, _lib._sel_new1); - return NSInflectionRule._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSOperationQueue1, _lib._sel_new1); + return NSOperationQueue._(_ret, _lib, retain: false, release: true); } - static NSInflectionRule allocWithZone_( + static NSOperationQueue allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSInflectionRule1, _lib._sel_allocWithZone_1, zone); - return NSInflectionRule._(_ret, _lib, retain: false, release: true); + _lib._class_NSOperationQueue1, _lib._sel_allocWithZone_1, zone); + return NSOperationQueue._(_ret, _lib, retain: false, release: true); } - static NSInflectionRule alloc(SentryCocoa _lib) { + static NSOperationQueue alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSInflectionRule1, _lib._sel_alloc1); - return NSInflectionRule._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSOperationQueue1, _lib._sel_alloc1); + return NSOperationQueue._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -60979,7 +60513,7 @@ class NSInflectionRule extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSInflectionRule1, + _lib._class_NSOperationQueue1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -60988,24 +60522,24 @@ class NSInflectionRule extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSInflectionRule1, + _lib._objc_msgSend_15(_lib._class_NSOperationQueue1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSInflectionRule1, + return _lib._objc_msgSend_12(_lib._class_NSOperationQueue1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSInflectionRule1, _lib._sel_useStoredAccessor1); + _lib._class_NSOperationQueue1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSInflectionRule1, + _lib._class_NSOperationQueue1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -61014,7 +60548,7 @@ class NSInflectionRule extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSInflectionRule1, + _lib._class_NSOperationQueue1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -61022,123 +60556,173 @@ class NSInflectionRule extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSInflectionRule1, + _lib._class_NSOperationQueue1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSInflectionRule1, + final _ret = _lib._objc_msgSend_79(_lib._class_NSOperationQueue1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSInflectionRule1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSOperationQueue1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSMorphology extends NSObject { - NSMorphology._(ffi.Pointer id, SentryCocoa lib, +class NSOperation extends NSObject { + NSOperation._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSMorphology] that points to the same underlying object as [other]. - static NSMorphology castFrom(T other) { - return NSMorphology._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSOperation] that points to the same underlying object as [other]. + static NSOperation castFrom(T other) { + return NSOperation._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSMorphology] that wraps the given raw object pointer. - static NSMorphology castFromPointer( + /// Returns a [NSOperation] that wraps the given raw object pointer. + static NSOperation castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSMorphology._(other, lib, retain: retain, release: release); + return NSOperation._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSMorphology]. + /// Returns whether [obj] is an instance of [NSOperation]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSMorphology1); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSOperation1); } - int get grammaticalGender { - return _lib._objc_msgSend_843(_id, _lib._sel_grammaticalGender1); + void start() { + _lib._objc_msgSend_1(_id, _lib._sel_start1); } - set grammaticalGender(int value) { - return _lib._objc_msgSend_844(_id, _lib._sel_setGrammaticalGender_1, value); + void main() { + _lib._objc_msgSend_1(_id, _lib._sel_main1); } - int get partOfSpeech { - return _lib._objc_msgSend_845(_id, _lib._sel_partOfSpeech1); + bool get cancelled { + return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); } - set partOfSpeech(int value) { - return _lib._objc_msgSend_846(_id, _lib._sel_setPartOfSpeech_1, value); + void cancel() { + _lib._objc_msgSend_1(_id, _lib._sel_cancel1); } - int get number { - return _lib._objc_msgSend_847(_id, _lib._sel_number1); + bool get executing { + return _lib._objc_msgSend_12(_id, _lib._sel_isExecuting1); } - set number(int value) { - return _lib._objc_msgSend_848(_id, _lib._sel_setNumber_1, value); + bool get finished { + return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); } - NSMorphologyCustomPronoun customPronounForLanguage_(NSString? language) { - final _ret = _lib._objc_msgSend_849(_id, - _lib._sel_customPronounForLanguage_1, language?._id ?? ffi.nullptr); - return NSMorphologyCustomPronoun._(_ret, _lib, retain: true, release: true); + bool get concurrent { + return _lib._objc_msgSend_12(_id, _lib._sel_isConcurrent1); } - bool setCustomPronoun_forLanguage_error_(NSMorphologyCustomPronoun? features, - NSString? language, ffi.Pointer> error) { - return _lib._objc_msgSend_850( - _id, - _lib._sel_setCustomPronoun_forLanguage_error_1, - features?._id ?? ffi.nullptr, - language?._id ?? ffi.nullptr, - error); + bool get asynchronous { + return _lib._objc_msgSend_12(_id, _lib._sel_isAsynchronous1); } - bool get unspecified { - return _lib._objc_msgSend_12(_id, _lib._sel_isUnspecified1); + bool get ready { + return _lib._objc_msgSend_12(_id, _lib._sel_isReady1); } - static NSMorphology? getUserMorphology(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_851( - _lib._class_NSMorphology1, _lib._sel_userMorphology1); + void addDependency_(NSOperation? op) { + _lib._objc_msgSend_818( + _id, _lib._sel_addDependency_1, op?._id ?? ffi.nullptr); + } + + void removeDependency_(NSOperation? op) { + _lib._objc_msgSend_818( + _id, _lib._sel_removeDependency_1, op?._id ?? ffi.nullptr); + } + + NSArray? get dependencies { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_dependencies1); return _ret.address == 0 ? null - : NSMorphology._(_ret, _lib, retain: true, release: true); + : NSArray._(_ret, _lib, retain: true, release: true); + } + + int get queuePriority { + return _lib._objc_msgSend_819(_id, _lib._sel_queuePriority1); + } + + set queuePriority(int value) { + return _lib._objc_msgSend_820(_id, _lib._sel_setQueuePriority_1, value); + } + + ObjCBlock_ffiVoid get completionBlock { + final _ret = _lib._objc_msgSend_618(_id, _lib._sel_completionBlock1); + return ObjCBlock_ffiVoid._(_ret, _lib); + } + + set completionBlock(ObjCBlock_ffiVoid value) { + return _lib._objc_msgSend_619( + _id, _lib._sel_setCompletionBlock_1, value._id); + } + + void waitUntilFinished() { + _lib._objc_msgSend_1(_id, _lib._sel_waitUntilFinished1); + } + + double get threadPriority { + return _lib._objc_msgSend_155(_id, _lib._sel_threadPriority1); + } + + set threadPriority(double value) { + return _lib._objc_msgSend_506(_id, _lib._sel_setThreadPriority_1, value); + } + + int get qualityOfService { + return _lib._objc_msgSend_507(_id, _lib._sel_qualityOfService1); + } + + set qualityOfService(int value) { + return _lib._objc_msgSend_508(_id, _lib._sel_setQualityOfService_1, value); + } + + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set name(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); } @override - NSMorphology init() { + NSOperation init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMorphology._(_ret, _lib, retain: true, release: true); + return NSOperation._(_ret, _lib, retain: true, release: true); } - static NSMorphology new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMorphology1, _lib._sel_new1); - return NSMorphology._(_ret, _lib, retain: false, release: true); + static NSOperation new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSOperation1, _lib._sel_new1); + return NSOperation._(_ret, _lib, retain: false, release: true); } - static NSMorphology allocWithZone_( + static NSOperation allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSMorphology1, _lib._sel_allocWithZone_1, zone); - return NSMorphology._(_ret, _lib, retain: false, release: true); + _lib._class_NSOperation1, _lib._sel_allocWithZone_1, zone); + return NSOperation._(_ret, _lib, retain: false, release: true); } - static NSMorphology alloc(SentryCocoa _lib) { + static NSOperation alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSMorphology1, _lib._sel_alloc1); - return NSMorphology._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSOperation1, _lib._sel_alloc1); + return NSOperation._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -61147,7 +60731,7 @@ class NSMorphology extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSMorphology1, + _lib._class_NSOperation1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -61156,24 +60740,24 @@ class NSMorphology extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMorphology1, + _lib._objc_msgSend_15(_lib._class_NSOperation1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSMorphology1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSOperation1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSMorphology1, _lib._sel_useStoredAccessor1); + _lib._class_NSOperation1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSMorphology1, + _lib._class_NSOperation1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -61182,7 +60766,7 @@ class NSMorphology extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSMorphology1, + _lib._class_NSOperation1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -61190,7 +60774,7 @@ class NSMorphology extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSMorphology1, + _lib._class_NSOperation1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -61198,175 +60782,171 @@ class NSMorphology extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSMorphology1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSOperation1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSMorphology1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSOperation1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSGrammaticalGender { - static const int NSGrammaticalGenderNotSet = 0; - static const int NSGrammaticalGenderFeminine = 1; - static const int NSGrammaticalGenderMasculine = 2; - static const int NSGrammaticalGenderNeuter = 3; -} - -abstract class NSGrammaticalPartOfSpeech { - static const int NSGrammaticalPartOfSpeechNotSet = 0; - static const int NSGrammaticalPartOfSpeechDeterminer = 1; - static const int NSGrammaticalPartOfSpeechPronoun = 2; - static const int NSGrammaticalPartOfSpeechLetter = 3; - static const int NSGrammaticalPartOfSpeechAdverb = 4; - static const int NSGrammaticalPartOfSpeechParticle = 5; - static const int NSGrammaticalPartOfSpeechAdjective = 6; - static const int NSGrammaticalPartOfSpeechAdposition = 7; - static const int NSGrammaticalPartOfSpeechVerb = 8; - static const int NSGrammaticalPartOfSpeechNoun = 9; - static const int NSGrammaticalPartOfSpeechConjunction = 10; - static const int NSGrammaticalPartOfSpeechNumeral = 11; - static const int NSGrammaticalPartOfSpeechInterjection = 12; - static const int NSGrammaticalPartOfSpeechPreposition = 13; - static const int NSGrammaticalPartOfSpeechAbbreviation = 14; -} - -abstract class NSGrammaticalNumber { - static const int NSGrammaticalNumberNotSet = 0; - static const int NSGrammaticalNumberSingular = 1; - static const int NSGrammaticalNumberZero = 2; - static const int NSGrammaticalNumberPlural = 3; - static const int NSGrammaticalNumberPluralTwo = 4; - static const int NSGrammaticalNumberPluralFew = 5; - static const int NSGrammaticalNumberPluralMany = 6; +abstract class NSOperationQueuePriority { + static const int NSOperationQueuePriorityVeryLow = -8; + static const int NSOperationQueuePriorityLow = -4; + static const int NSOperationQueuePriorityNormal = 0; + static const int NSOperationQueuePriorityHigh = 4; + static const int NSOperationQueuePriorityVeryHigh = 8; } -class NSMorphologyCustomPronoun extends NSObject { - NSMorphologyCustomPronoun._(ffi.Pointer id, SentryCocoa lib, +class NSPointerArray extends NSObject { + NSPointerArray._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSMorphologyCustomPronoun] that points to the same underlying object as [other]. - static NSMorphologyCustomPronoun castFrom(T other) { - return NSMorphologyCustomPronoun._(other._id, other._lib, - retain: true, release: true); + /// Returns a [NSPointerArray] that points to the same underlying object as [other]. + static NSPointerArray castFrom(T other) { + return NSPointerArray._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSMorphologyCustomPronoun] that wraps the given raw object pointer. - static NSMorphologyCustomPronoun castFromPointer( + /// Returns a [NSPointerArray] that wraps the given raw object pointer. + static NSPointerArray castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSMorphologyCustomPronoun._(other, lib, - retain: retain, release: release); + return NSPointerArray._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSMorphologyCustomPronoun]. + /// Returns whether [obj] is an instance of [NSPointerArray]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMorphologyCustomPronoun1); + obj._lib._class_NSPointerArray1); } - static bool isSupportedForLanguage_(SentryCocoa _lib, NSString? language) { - return _lib._objc_msgSend_59(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_isSupportedForLanguage_1, language?._id ?? ffi.nullptr); + NSPointerArray initWithOptions_(int options) { + final _ret = + _lib._objc_msgSend_825(_id, _lib._sel_initWithOptions_1, options); + return NSPointerArray._(_ret, _lib, retain: true, release: true); } - static NSArray requiredKeysForLanguage_( - SentryCocoa _lib, NSString? language) { - final _ret = _lib._objc_msgSend_123(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_requiredKeysForLanguage_1, language?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); + NSPointerArray initWithPointerFunctions_(NSPointerFunctions? functions) { + final _ret = _lib._objc_msgSend_839(_id, + _lib._sel_initWithPointerFunctions_1, functions?._id ?? ffi.nullptr); + return NSPointerArray._(_ret, _lib, retain: true, release: true); } - NSString? get subjectForm { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_subjectForm1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSPointerArray pointerArrayWithOptions_( + SentryCocoa _lib, int options) { + final _ret = _lib._objc_msgSend_840(_lib._class_NSPointerArray1, + _lib._sel_pointerArrayWithOptions_1, options); + return NSPointerArray._(_ret, _lib, retain: true, release: true); } - set subjectForm(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setSubjectForm_1, value?._id ?? ffi.nullptr); + static NSPointerArray pointerArrayWithPointerFunctions_( + SentryCocoa _lib, NSPointerFunctions? functions) { + final _ret = _lib._objc_msgSend_841( + _lib._class_NSPointerArray1, + _lib._sel_pointerArrayWithPointerFunctions_1, + functions?._id ?? ffi.nullptr); + return NSPointerArray._(_ret, _lib, retain: true, release: true); } - NSString? get objectForm { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_objectForm1); + NSPointerFunctions? get pointerFunctions { + final _ret = _lib._objc_msgSend_842(_id, _lib._sel_pointerFunctions1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSPointerFunctions._(_ret, _lib, retain: true, release: true); } - set objectForm(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setObjectForm_1, value?._id ?? ffi.nullptr); + ffi.Pointer pointerAtIndex_(int index) { + return _lib._objc_msgSend_843(_id, _lib._sel_pointerAtIndex_1, index); } - NSString? get possessiveForm { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_possessiveForm1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + void addPointer_(ffi.Pointer pointer) { + _lib._objc_msgSend_47(_id, _lib._sel_addPointer_1, pointer); } - set possessiveForm(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setPossessiveForm_1, value?._id ?? ffi.nullptr); + void removePointerAtIndex_(int index) { + _lib._objc_msgSend_439(_id, _lib._sel_removePointerAtIndex_1, index); } - NSString? get possessiveAdjectiveForm { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_possessiveAdjectiveForm1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + void insertPointer_atIndex_(ffi.Pointer item, int index) { + _lib._objc_msgSend_21(_id, _lib._sel_insertPointer_atIndex_1, item, index); } - set possessiveAdjectiveForm(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setPossessiveAdjectiveForm_1, value?._id ?? ffi.nullptr); + void replacePointerAtIndex_withPointer_( + int index, ffi.Pointer item) { + _lib._objc_msgSend_844( + _id, _lib._sel_replacePointerAtIndex_withPointer_1, index, item); } - NSString? get reflexiveForm { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_reflexiveForm1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + void compact() { + _lib._objc_msgSend_1(_id, _lib._sel_compact1); + } + + int get count { + return _lib._objc_msgSend_10(_id, _lib._sel_count1); + } + + set count(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setCount_1, value); + } + + static NSObject pointerArrayWithStrongObjects(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSPointerArray1, _lib._sel_pointerArrayWithStrongObjects1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject pointerArrayWithWeakObjects(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSPointerArray1, _lib._sel_pointerArrayWithWeakObjects1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSPointerArray strongObjectsPointerArray(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_845( + _lib._class_NSPointerArray1, _lib._sel_strongObjectsPointerArray1); + return NSPointerArray._(_ret, _lib, retain: true, release: true); + } + + static NSPointerArray weakObjectsPointerArray(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_845( + _lib._class_NSPointerArray1, _lib._sel_weakObjectsPointerArray1); + return NSPointerArray._(_ret, _lib, retain: true, release: true); } - set reflexiveForm(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setReflexiveForm_1, value?._id ?? ffi.nullptr); + NSArray? get allObjects { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_allObjects1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } @override - NSMorphologyCustomPronoun init() { + NSPointerArray init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMorphologyCustomPronoun._(_ret, _lib, retain: true, release: true); + return NSPointerArray._(_ret, _lib, retain: true, release: true); } - static NSMorphologyCustomPronoun new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMorphologyCustomPronoun1, _lib._sel_new1); - return NSMorphologyCustomPronoun._(_ret, _lib, - retain: false, release: true); + static NSPointerArray new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSPointerArray1, _lib._sel_new1); + return NSPointerArray._(_ret, _lib, retain: false, release: true); } - static NSMorphologyCustomPronoun allocWithZone_( + static NSPointerArray allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_allocWithZone_1, zone); - return NSMorphologyCustomPronoun._(_ret, _lib, - retain: false, release: true); + final _ret = _lib._objc_msgSend_3( + _lib._class_NSPointerArray1, _lib._sel_allocWithZone_1, zone); + return NSPointerArray._(_ret, _lib, retain: false, release: true); } - static NSMorphologyCustomPronoun alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMorphologyCustomPronoun1, _lib._sel_alloc1); - return NSMorphologyCustomPronoun._(_ret, _lib, - retain: false, release: true); + static NSPointerArray alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSPointerArray1, _lib._sel_alloc1); + return NSPointerArray._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -61375,7 +60955,7 @@ class NSMorphologyCustomPronoun extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSMorphologyCustomPronoun1, + _lib._class_NSPointerArray1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -61384,24 +60964,24 @@ class NSMorphologyCustomPronoun extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMorphologyCustomPronoun1, + _lib._objc_msgSend_15(_lib._class_NSPointerArray1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMorphologyCustomPronoun1, + return _lib._objc_msgSend_12(_lib._class_NSPointerArray1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSMorphologyCustomPronoun1, _lib._sel_useStoredAccessor1); + _lib._class_NSPointerArray1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSMorphologyCustomPronoun1, + _lib._class_NSPointerArray1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -61410,7 +60990,7 @@ class NSMorphologyCustomPronoun extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSMorphologyCustomPronoun1, + _lib._class_NSPointerArray1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -61418,179 +60998,249 @@ class NSMorphologyCustomPronoun extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSMorphologyCustomPronoun1, + _lib._class_NSPointerArray1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79( + _lib._class_NSPointerArray1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSMorphologyCustomPronoun1, - _lib._sel_classForKeyedUnarchiver1); + final _ret = _lib._objc_msgSend_2( + _lib._class_NSPointerArray1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSOperationQueue extends NSObject { - NSOperationQueue._(ffi.Pointer id, SentryCocoa lib, +abstract class NSPointerFunctionsOptions { + static const int NSPointerFunctionsStrongMemory = 0; + static const int NSPointerFunctionsZeroingWeakMemory = 1; + static const int NSPointerFunctionsOpaqueMemory = 2; + static const int NSPointerFunctionsMallocMemory = 3; + static const int NSPointerFunctionsMachVirtualMemory = 4; + static const int NSPointerFunctionsWeakMemory = 5; + static const int NSPointerFunctionsObjectPersonality = 0; + static const int NSPointerFunctionsOpaquePersonality = 256; + static const int NSPointerFunctionsObjectPointerPersonality = 512; + static const int NSPointerFunctionsCStringPersonality = 768; + static const int NSPointerFunctionsStructPersonality = 1024; + static const int NSPointerFunctionsIntegerPersonality = 1280; + static const int NSPointerFunctionsCopyIn = 65536; +} + +class NSPointerFunctions extends NSObject { + NSPointerFunctions._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSOperationQueue] that points to the same underlying object as [other]. - static NSOperationQueue castFrom(T other) { - return NSOperationQueue._(other._id, other._lib, + /// Returns a [NSPointerFunctions] that points to the same underlying object as [other]. + static NSPointerFunctions castFrom(T other) { + return NSPointerFunctions._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSOperationQueue] that wraps the given raw object pointer. - static NSOperationQueue castFromPointer( + /// Returns a [NSPointerFunctions] that wraps the given raw object pointer. + static NSPointerFunctions castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSOperationQueue._(other, lib, retain: retain, release: release); + return NSPointerFunctions._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSOperationQueue]. + /// Returns whether [obj] is an instance of [NSPointerFunctions]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSOperationQueue1); - } - - NSProgress? get progress { - final _ret = _lib._objc_msgSend_643(_id, _lib._sel_progress1); - return _ret.address == 0 - ? null - : NSProgress._(_ret, _lib, retain: true, release: true); - } - - void addOperation_(NSOperation? op) { - _lib._objc_msgSend_852( - _id, _lib._sel_addOperation_1, op?._id ?? ffi.nullptr); - } - - void addOperations_waitUntilFinished_(NSArray? ops, bool wait) { - _lib._objc_msgSend_855(_id, _lib._sel_addOperations_waitUntilFinished_1, - ops?._id ?? ffi.nullptr, wait); + obj._lib._class_NSPointerFunctions1); } - void addOperationWithBlock_(ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_497(_id, _lib._sel_addOperationWithBlock_1, block._id); + NSPointerFunctions initWithOptions_(int options) { + final _ret = + _lib._objc_msgSend_825(_id, _lib._sel_initWithOptions_1, options); + return NSPointerFunctions._(_ret, _lib, retain: true, release: true); } - void addBarrierBlock_(ObjCBlock_ffiVoid barrier) { - _lib._objc_msgSend_497(_id, _lib._sel_addBarrierBlock_1, barrier._id); + static NSPointerFunctions pointerFunctionsWithOptions_( + SentryCocoa _lib, int options) { + final _ret = _lib._objc_msgSend_826(_lib._class_NSPointerFunctions1, + _lib._sel_pointerFunctionsWithOptions_1, options); + return NSPointerFunctions._(_ret, _lib, retain: true, release: true); } - int get maxConcurrentOperationCount { - return _lib._objc_msgSend_78(_id, _lib._sel_maxConcurrentOperationCount1); + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get hashFunction { + return _lib._objc_msgSend_827(_id, _lib._sel_hashFunction1); } - set maxConcurrentOperationCount(int value) { - return _lib._objc_msgSend_590( - _id, _lib._sel_setMaxConcurrentOperationCount_1, value); + set hashFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _lib._objc_msgSend_828(_id, _lib._sel_setHashFunction_1, value); } - bool get suspended { - return _lib._objc_msgSend_12(_id, _lib._sel_isSuspended1); + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get isEqualFunction { + return _lib._objc_msgSend_829(_id, _lib._sel_isEqualFunction1); } - set suspended(bool value) { - return _lib._objc_msgSend_492(_id, _lib._sel_setSuspended_1, value); + set isEqualFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Bool Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _lib._objc_msgSend_830(_id, _lib._sel_setIsEqualFunction_1, value); } - NSString? get name { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + ffi.Pointer< + ffi.NativeFunction)>> + get sizeFunction { + return _lib._objc_msgSend_831(_id, _lib._sel_sizeFunction1); } - set name(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + set sizeFunction( + ffi.Pointer< + ffi + .NativeFunction)>> + value) { + return _lib._objc_msgSend_832(_id, _lib._sel_setSizeFunction_1, value); } - int get qualityOfService { - return _lib._objc_msgSend_507(_id, _lib._sel_qualityOfService1); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + get descriptionFunction { + return _lib._objc_msgSend_833(_id, _lib._sel_descriptionFunction1); } - set qualityOfService(int value) { - return _lib._objc_msgSend_508(_id, _lib._sel_setQualityOfService_1, value); + set descriptionFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function(ffi.Pointer)>> + value) { + return _lib._objc_msgSend_834( + _id, _lib._sel_setDescriptionFunction_1, value); } - NSObject get underlyingQueue { - final _ret = _lib._objc_msgSend_856(_id, _lib._sel_underlyingQueue1); - return NSObject._(_ret, _lib, retain: true, release: true); + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>)>> + get relinquishFunction { + return _lib._objc_msgSend_835(_id, _lib._sel_relinquishFunction1); } - set underlyingQueue(NSObject value) { - return _lib._objc_msgSend_857( - _id, _lib._sel_setUnderlyingQueue_1, value._id); + set relinquishFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>)>> + value) { + return _lib._objc_msgSend_836( + _id, _lib._sel_setRelinquishFunction_1, value); } - void cancelAllOperations() { - _lib._objc_msgSend_1(_id, _lib._sel_cancelAllOperations1); + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function(ffi.Pointer)>>, + ffi.Bool)>> get acquireFunction { + return _lib._objc_msgSend_837(_id, _lib._sel_acquireFunction1); } - void waitUntilAllOperationsAreFinished() { - _lib._objc_msgSend_1(_id, _lib._sel_waitUntilAllOperationsAreFinished1); + set acquireFunction( + ffi.Pointer< + ffi.NativeFunction< + ffi.Pointer Function( + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.UnsignedLong Function( + ffi.Pointer)>>, + ffi.Bool)>> + value) { + return _lib._objc_msgSend_838(_id, _lib._sel_setAcquireFunction_1, value); } - static NSOperationQueue? getCurrentQueue(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_858( - _lib._class_NSOperationQueue1, _lib._sel_currentQueue1); - return _ret.address == 0 - ? null - : NSOperationQueue._(_ret, _lib, retain: true, release: true); + bool get usesStrongWriteBarrier { + return _lib._objc_msgSend_12(_id, _lib._sel_usesStrongWriteBarrier1); } - static NSOperationQueue? getMainQueue(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_858( - _lib._class_NSOperationQueue1, _lib._sel_mainQueue1); - return _ret.address == 0 - ? null - : NSOperationQueue._(_ret, _lib, retain: true, release: true); + set usesStrongWriteBarrier(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setUsesStrongWriteBarrier_1, value); } - NSArray? get operations { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_operations1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + bool get usesWeakReadAndWriteBarriers { + return _lib._objc_msgSend_12(_id, _lib._sel_usesWeakReadAndWriteBarriers1); } - int get operationCount { - return _lib._objc_msgSend_10(_id, _lib._sel_operationCount1); + set usesWeakReadAndWriteBarriers(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setUsesWeakReadAndWriteBarriers_1, value); } @override - NSOperationQueue init() { + NSPointerFunctions init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOperationQueue._(_ret, _lib, retain: true, release: true); + return NSPointerFunctions._(_ret, _lib, retain: true, release: true); } - static NSOperationQueue new1(SentryCocoa _lib) { + static NSPointerFunctions new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSOperationQueue1, _lib._sel_new1); - return NSOperationQueue._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSPointerFunctions1, _lib._sel_new1); + return NSPointerFunctions._(_ret, _lib, retain: false, release: true); } - static NSOperationQueue allocWithZone_( + static NSPointerFunctions allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSOperationQueue1, _lib._sel_allocWithZone_1, zone); - return NSOperationQueue._(_ret, _lib, retain: false, release: true); + _lib._class_NSPointerFunctions1, _lib._sel_allocWithZone_1, zone); + return NSPointerFunctions._(_ret, _lib, retain: false, release: true); } - static NSOperationQueue alloc(SentryCocoa _lib) { + static NSPointerFunctions alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSOperationQueue1, _lib._sel_alloc1); - return NSOperationQueue._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSPointerFunctions1, _lib._sel_alloc1); + return NSPointerFunctions._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -61599,7 +61249,7 @@ class NSOperationQueue extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSOperationQueue1, + _lib._class_NSPointerFunctions1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -61608,24 +61258,24 @@ class NSOperationQueue extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOperationQueue1, + _lib._objc_msgSend_15(_lib._class_NSPointerFunctions1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSOperationQueue1, + return _lib._objc_msgSend_12(_lib._class_NSPointerFunctions1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSOperationQueue1, _lib._sel_useStoredAccessor1); + _lib._class_NSPointerFunctions1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSOperationQueue1, + _lib._class_NSPointerFunctions1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -61634,7 +61284,7 @@ class NSOperationQueue extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSOperationQueue1, + _lib._class_NSPointerFunctions1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -61642,173 +61292,256 @@ class NSOperationQueue extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSOperationQueue1, + _lib._class_NSPointerFunctions1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSOperationQueue1, + final _ret = _lib._objc_msgSend_79(_lib._class_NSPointerFunctions1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSOperationQueue1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSPointerFunctions1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSOperation extends NSObject { - NSOperation._(ffi.Pointer id, SentryCocoa lib, +class NSProcessInfo extends NSObject { + NSProcessInfo._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSOperation] that points to the same underlying object as [other]. - static NSOperation castFrom(T other) { - return NSOperation._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSProcessInfo] that points to the same underlying object as [other]. + static NSProcessInfo castFrom(T other) { + return NSProcessInfo._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSOperation] that wraps the given raw object pointer. - static NSOperation castFromPointer( + /// Returns a [NSProcessInfo] that wraps the given raw object pointer. + static NSProcessInfo castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSOperation._(other, lib, retain: retain, release: release); + return NSProcessInfo._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSOperation]. + /// Returns whether [obj] is an instance of [NSProcessInfo]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSOperation1); - } - - void start() { - _lib._objc_msgSend_1(_id, _lib._sel_start1); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProcessInfo1); } - void main() { - _lib._objc_msgSend_1(_id, _lib._sel_main1); + static NSProcessInfo? getProcessInfo(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_846( + _lib._class_NSProcessInfo1, _lib._sel_processInfo1); + return _ret.address == 0 + ? null + : NSProcessInfo._(_ret, _lib, retain: true, release: true); } - bool get cancelled { - return _lib._objc_msgSend_12(_id, _lib._sel_isCancelled1); + NSDictionary? get environment { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_environment1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); } - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + NSArray? get arguments { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_arguments1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - bool get executing { - return _lib._objc_msgSend_12(_id, _lib._sel_isExecuting1); + NSString? get hostName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_hostName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - bool get finished { - return _lib._objc_msgSend_12(_id, _lib._sel_isFinished1); + NSString? get processName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_processName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - bool get concurrent { - return _lib._objc_msgSend_12(_id, _lib._sel_isConcurrent1); + set processName(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setProcessName_1, value?._id ?? ffi.nullptr); } - bool get asynchronous { - return _lib._objc_msgSend_12(_id, _lib._sel_isAsynchronous1); + int get processIdentifier { + return _lib._objc_msgSend_219(_id, _lib._sel_processIdentifier1); } - bool get ready { - return _lib._objc_msgSend_12(_id, _lib._sel_isReady1); + NSString? get globallyUniqueString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_globallyUniqueString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - void addDependency_(NSOperation? op) { - _lib._objc_msgSend_852( - _id, _lib._sel_addDependency_1, op?._id ?? ffi.nullptr); + int operatingSystem() { + return _lib._objc_msgSend_10(_id, _lib._sel_operatingSystem1); } - void removeDependency_(NSOperation? op) { - _lib._objc_msgSend_852( - _id, _lib._sel_removeDependency_1, op?._id ?? ffi.nullptr); + NSString operatingSystemName() { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_operatingSystemName1); + return NSString._(_ret, _lib, retain: true, release: true); } - NSArray? get dependencies { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_dependencies1); + NSString? get operatingSystemVersionString { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_operatingSystemVersionString1); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : NSString._(_ret, _lib, retain: true, release: true); } - int get queuePriority { - return _lib._objc_msgSend_853(_id, _lib._sel_queuePriority1); + void getOperatingSystemVersion(ffi.Pointer stret) { + _lib._objc_msgSend_847(stret, _id, _lib._sel_operatingSystemVersion1); } - set queuePriority(int value) { - return _lib._objc_msgSend_854(_id, _lib._sel_setQueuePriority_1, value); + int get processorCount { + return _lib._objc_msgSend_10(_id, _lib._sel_processorCount1); } - ObjCBlock_ffiVoid get completionBlock { - final _ret = _lib._objc_msgSend_652(_id, _lib._sel_completionBlock1); - return ObjCBlock_ffiVoid._(_ret, _lib); + int get activeProcessorCount { + return _lib._objc_msgSend_10(_id, _lib._sel_activeProcessorCount1); } - set completionBlock(ObjCBlock_ffiVoid value) { - return _lib._objc_msgSend_653( - _id, _lib._sel_setCompletionBlock_1, value._id); + int get physicalMemory { + return _lib._objc_msgSend_154(_id, _lib._sel_physicalMemory1); } - void waitUntilFinished() { - _lib._objc_msgSend_1(_id, _lib._sel_waitUntilFinished1); + bool isOperatingSystemAtLeastVersion_(NSOperatingSystemVersion version) { + return _lib._objc_msgSend_848( + _id, _lib._sel_isOperatingSystemAtLeastVersion_1, version); } - double get threadPriority { - return _lib._objc_msgSend_155(_id, _lib._sel_threadPriority1); + double get systemUptime { + return _lib._objc_msgSend_155(_id, _lib._sel_systemUptime1); } - set threadPriority(double value) { - return _lib._objc_msgSend_506(_id, _lib._sel_setThreadPriority_1, value); + void disableSuddenTermination() { + _lib._objc_msgSend_1(_id, _lib._sel_disableSuddenTermination1); } - int get qualityOfService { - return _lib._objc_msgSend_507(_id, _lib._sel_qualityOfService1); + void enableSuddenTermination() { + _lib._objc_msgSend_1(_id, _lib._sel_enableSuddenTermination1); } - set qualityOfService(int value) { - return _lib._objc_msgSend_508(_id, _lib._sel_setQualityOfService_1, value); + void disableAutomaticTermination_(NSString? reason) { + _lib._objc_msgSend_192(_id, _lib._sel_disableAutomaticTermination_1, + reason?._id ?? ffi.nullptr); } - NSString? get name { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + void enableAutomaticTermination_(NSString? reason) { + _lib._objc_msgSend_192(_id, _lib._sel_enableAutomaticTermination_1, + reason?._id ?? ffi.nullptr); + } + + bool get automaticTerminationSupportEnabled { + return _lib._objc_msgSend_12( + _id, _lib._sel_automaticTerminationSupportEnabled1); + } + + set automaticTerminationSupportEnabled(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAutomaticTerminationSupportEnabled_1, value); + } + + NSObject beginActivityWithOptions_reason_(int options, NSString? reason) { + final _ret = _lib._objc_msgSend_849( + _id, + _lib._sel_beginActivityWithOptions_reason_1, + options, + reason?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + void endActivity_(NSObject? activity) { + _lib._objc_msgSend_15( + _id, _lib._sel_endActivity_1, activity?._id ?? ffi.nullptr); + } + + void performActivityWithOptions_reason_usingBlock_( + int options, NSString? reason, ObjCBlock_ffiVoid block) { + _lib._objc_msgSend_850( + _id, + _lib._sel_performActivityWithOptions_reason_usingBlock_1, + options, + reason?._id ?? ffi.nullptr, + block._id); + } + + void performExpiringActivityWithReason_usingBlock_( + NSString? reason, ObjCBlock_ffiVoid_bool block) { + _lib._objc_msgSend_851( + _id, + _lib._sel_performExpiringActivityWithReason_usingBlock_1, + reason?._id ?? ffi.nullptr, + block._id); + } + + NSString? get userName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_userName1); return _ret.address == 0 ? null : NSString._(_ret, _lib, retain: true, release: true); } - set name(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + NSString? get fullUserName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_fullUserName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + int get thermalState { + return _lib._objc_msgSend_852(_id, _lib._sel_thermalState1); + } + + bool get lowPowerModeEnabled { + return _lib._objc_msgSend_12(_id, _lib._sel_isLowPowerModeEnabled1); + } + + bool get macCatalystApp { + return _lib._objc_msgSend_12(_id, _lib._sel_isMacCatalystApp1); + } + + bool get iOSAppOnMac { + return _lib._objc_msgSend_12(_id, _lib._sel_isiOSAppOnMac1); } @override - NSOperation init() { + NSProcessInfo init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSOperation._(_ret, _lib, retain: true, release: true); + return NSProcessInfo._(_ret, _lib, retain: true, release: true); } - static NSOperation new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSOperation1, _lib._sel_new1); - return NSOperation._(_ret, _lib, retain: false, release: true); + static NSProcessInfo new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSProcessInfo1, _lib._sel_new1); + return NSProcessInfo._(_ret, _lib, retain: false, release: true); } - static NSOperation allocWithZone_( + static NSProcessInfo allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSOperation1, _lib._sel_allocWithZone_1, zone); - return NSOperation._(_ret, _lib, retain: false, release: true); + _lib._class_NSProcessInfo1, _lib._sel_allocWithZone_1, zone); + return NSProcessInfo._(_ret, _lib, retain: false, release: true); } - static NSOperation alloc(SentryCocoa _lib) { + static NSProcessInfo alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSOperation1, _lib._sel_alloc1); - return NSOperation._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSProcessInfo1, _lib._sel_alloc1); + return NSProcessInfo._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -61817,7 +61550,7 @@ class NSOperation extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSOperation1, + _lib._class_NSProcessInfo1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -61826,24 +61559,24 @@ class NSOperation extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSOperation1, + _lib._objc_msgSend_15(_lib._class_NSProcessInfo1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSOperation1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSProcessInfo1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSOperation1, _lib._sel_useStoredAccessor1); + _lib._class_NSProcessInfo1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSOperation1, + _lib._class_NSProcessInfo1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -61852,7 +61585,7 @@ class NSOperation extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSOperation1, + _lib._class_NSProcessInfo1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -61860,7 +61593,7 @@ class NSOperation extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSOperation1, + _lib._class_NSProcessInfo1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -61868,171 +61601,431 @@ class NSOperation extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSOperation1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSProcessInfo1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSOperation1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSProcessInfo1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSOperationQueuePriority { - static const int NSOperationQueuePriorityVeryLow = -8; - static const int NSOperationQueuePriorityLow = -4; - static const int NSOperationQueuePriorityNormal = 0; - static const int NSOperationQueuePriorityHigh = 4; - static const int NSOperationQueuePriorityVeryHigh = 8; +class NSOperatingSystemVersion extends ffi.Struct { + @ffi.Long() + external int majorVersion; + + @ffi.Long() + external int minorVersion; + + @ffi.Long() + external int patchVersion; } -class NSPointerArray extends NSObject { - NSPointerArray._(ffi.Pointer id, SentryCocoa lib, +abstract class NSActivityOptions { + static const int NSActivityIdleDisplaySleepDisabled = 1099511627776; + static const int NSActivityIdleSystemSleepDisabled = 1048576; + static const int NSActivitySuddenTerminationDisabled = 16384; + static const int NSActivityAutomaticTerminationDisabled = 32768; + static const int NSActivityAnimationTrackingEnabled = 35184372088832; + static const int NSActivityTrackingEnabled = 70368744177664; + static const int NSActivityUserInitiated = 16777215; + static const int NSActivityUserInitiatedAllowingIdleSystemSleep = 15728639; + static const int NSActivityBackground = 255; + static const int NSActivityLatencyCritical = 1095216660480; + static const int NSActivityUserInteractive = 1095233437695; +} + +void _ObjCBlock_ffiVoid_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, bool arg0) { + return block.ref.target + .cast>() + .asFunction()(arg0); +} + +final _ObjCBlock_ffiVoid_bool_closureRegistry = {}; +int _ObjCBlock_ffiVoid_bool_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_bool_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_bool_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, bool arg0) { + return (_ObjCBlock_ffiVoid_bool_closureRegistry[block.ref.target.address] + as void Function(bool))(arg0); +} + +class ObjCBlock_ffiVoid_bool extends _ObjCBlockBase { + ObjCBlock_ffiVoid_bool._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_bool.fromFunctionPointer(SentryCocoa lib, + ffi.Pointer> ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0)>( + _ObjCBlock_ffiVoid_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_bool.fromFunction( + SentryCocoa lib, void Function(bool arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0)>( + _ObjCBlock_ffiVoid_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_bool_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(bool arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, bool arg0)>()(_id, arg0); + } +} + +abstract class NSProcessInfoThermalState { + static const int NSProcessInfoThermalStateNominal = 0; + static const int NSProcessInfoThermalStateFair = 1; + static const int NSProcessInfoThermalStateSerious = 2; + static const int NSProcessInfoThermalStateCritical = 3; +} + +class NSTextCheckingResult extends NSObject { + NSTextCheckingResult._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSPointerArray] that points to the same underlying object as [other]. - static NSPointerArray castFrom(T other) { - return NSPointerArray._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSTextCheckingResult] that points to the same underlying object as [other]. + static NSTextCheckingResult castFrom(T other) { + return NSTextCheckingResult._(other._id, other._lib, + retain: true, release: true); } - /// Returns a [NSPointerArray] that wraps the given raw object pointer. - static NSPointerArray castFromPointer( + /// Returns a [NSTextCheckingResult] that wraps the given raw object pointer. + static NSTextCheckingResult castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSPointerArray._(other, lib, retain: retain, release: release); + return NSTextCheckingResult._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSPointerArray]. + /// Returns whether [obj] is an instance of [NSTextCheckingResult]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSPointerArray1); + obj._lib._class_NSTextCheckingResult1); } - NSPointerArray initWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_859(_id, _lib._sel_initWithOptions_1, options); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + int get resultType { + return _lib._objc_msgSend_853(_id, _lib._sel_resultType1); } - NSPointerArray initWithPointerFunctions_(NSPointerFunctions? functions) { - final _ret = _lib._objc_msgSend_873(_id, - _lib._sel_initWithPointerFunctions_1, functions?._id ?? ffi.nullptr); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + void getRange(ffi.Pointer<_NSRange> stret) { + _lib._objc_msgSend_49(stret, _id, _lib._sel_range1); } - static NSPointerArray pointerArrayWithOptions_( - SentryCocoa _lib, int options) { - final _ret = _lib._objc_msgSend_874(_lib._class_NSPointerArray1, - _lib._sel_pointerArrayWithOptions_1, options); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + NSOrthography? get orthography { + final _ret = _lib._objc_msgSend_854(_id, _lib._sel_orthography1); + return _ret.address == 0 + ? null + : NSOrthography._(_ret, _lib, retain: true, release: true); } - static NSPointerArray pointerArrayWithPointerFunctions_( - SentryCocoa _lib, NSPointerFunctions? functions) { - final _ret = _lib._objc_msgSend_875( - _lib._class_NSPointerArray1, - _lib._sel_pointerArrayWithPointerFunctions_1, - functions?._id ?? ffi.nullptr); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + NSArray? get grammarDetails { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_grammarDetails1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - NSPointerFunctions? get pointerFunctions { - final _ret = _lib._objc_msgSend_876(_id, _lib._sel_pointerFunctions1); + NSDate? get date { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_date1); return _ret.address == 0 ? null - : NSPointerFunctions._(_ret, _lib, retain: true, release: true); + : NSDate._(_ret, _lib, retain: true, release: true); } - ffi.Pointer pointerAtIndex_(int index) { - return _lib._objc_msgSend_877(_id, _lib._sel_pointerAtIndex_1, index); + NSTimeZone? get timeZone { + final _ret = _lib._objc_msgSend_168(_id, _lib._sel_timeZone1); + return _ret.address == 0 + ? null + : NSTimeZone._(_ret, _lib, retain: true, release: true); } - void addPointer_(ffi.Pointer pointer) { - _lib._objc_msgSend_47(_id, _lib._sel_addPointer_1, pointer); + double get duration { + return _lib._objc_msgSend_155(_id, _lib._sel_duration1); } - void removePointerAtIndex_(int index) { - _lib._objc_msgSend_439(_id, _lib._sel_removePointerAtIndex_1, index); + NSDictionary? get components { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_components1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); } - void insertPointer_atIndex_(ffi.Pointer item, int index) { - _lib._objc_msgSend_21(_id, _lib._sel_insertPointer_atIndex_1, item, index); + NSURL? get URL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); } - void replacePointerAtIndex_withPointer_( - int index, ffi.Pointer item) { - _lib._objc_msgSend_878( - _id, _lib._sel_replacePointerAtIndex_withPointer_1, index, item); + NSString? get replacementString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_replacementString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - void compact() { - _lib._objc_msgSend_1(_id, _lib._sel_compact1); + NSArray? get alternativeStrings { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_alternativeStrings1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - int get count { - return _lib._objc_msgSend_10(_id, _lib._sel_count1); + NSRegularExpression? get regularExpression { + final _ret = _lib._objc_msgSend_866(_id, _lib._sel_regularExpression1); + return _ret.address == 0 + ? null + : NSRegularExpression._(_ret, _lib, retain: true, release: true); } - set count(int value) { - return _lib._objc_msgSend_483(_id, _lib._sel_setCount_1, value); + NSString? get phoneNumber { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_phoneNumber1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - static NSObject pointerArrayWithStrongObjects(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerArray1, _lib._sel_pointerArrayWithStrongObjects1); - return NSObject._(_ret, _lib, retain: true, release: true); + int get numberOfRanges { + return _lib._objc_msgSend_10(_id, _lib._sel_numberOfRanges1); } - static NSObject pointerArrayWithWeakObjects(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerArray1, _lib._sel_pointerArrayWithWeakObjects1); - return NSObject._(_ret, _lib, retain: true, release: true); + void rangeAtIndex_(ffi.Pointer<_NSRange> stret, int idx) { + _lib._objc_msgSend_323(stret, _id, _lib._sel_rangeAtIndex_1, idx); } - static NSPointerArray strongObjectsPointerArray(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_879( - _lib._class_NSPointerArray1, _lib._sel_strongObjectsPointerArray1); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + void rangeWithName_(ffi.Pointer<_NSRange> stret, NSString? name) { + _lib._objc_msgSend_316( + stret, _id, _lib._sel_rangeWithName_1, name?._id ?? ffi.nullptr); } - static NSPointerArray weakObjectsPointerArray(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_879( - _lib._class_NSPointerArray1, _lib._sel_weakObjectsPointerArray1); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + NSTextCheckingResult resultByAdjustingRangesWithOffset_(int offset) { + final _ret = _lib._objc_msgSend_867( + _id, _lib._sel_resultByAdjustingRangesWithOffset_1, offset); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); } - NSArray? get allObjects { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_allObjects1); + NSDictionary? get addressComponents { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_addressComponents1); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult orthographyCheckingResultWithRange_orthography_( + SentryCocoa _lib, _NSRange range, NSOrthography? orthography) { + final _ret = _lib._objc_msgSend_868( + _lib._class_NSTextCheckingResult1, + _lib._sel_orthographyCheckingResultWithRange_orthography_1, + range, + orthography?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult spellCheckingResultWithRange_( + SentryCocoa _lib, _NSRange range) { + final _ret = _lib._objc_msgSend_869(_lib._class_NSTextCheckingResult1, + _lib._sel_spellCheckingResultWithRange_1, range); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult grammarCheckingResultWithRange_details_( + SentryCocoa _lib, _NSRange range, NSArray? details) { + final _ret = _lib._objc_msgSend_870( + _lib._class_NSTextCheckingResult1, + _lib._sel_grammarCheckingResultWithRange_details_1, + range, + details?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult dateCheckingResultWithRange_date_( + SentryCocoa _lib, _NSRange range, NSDate? date) { + final _ret = _lib._objc_msgSend_871( + _lib._class_NSTextCheckingResult1, + _lib._sel_dateCheckingResultWithRange_date_1, + range, + date?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + dateCheckingResultWithRange_date_timeZone_duration_(SentryCocoa _lib, + _NSRange range, NSDate? date, NSTimeZone? timeZone, double duration) { + final _ret = _lib._objc_msgSend_872( + _lib._class_NSTextCheckingResult1, + _lib._sel_dateCheckingResultWithRange_date_timeZone_duration_1, + range, + date?._id ?? ffi.nullptr, + timeZone?._id ?? ffi.nullptr, + duration); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult addressCheckingResultWithRange_components_( + SentryCocoa _lib, _NSRange range, NSDictionary? components) { + final _ret = _lib._objc_msgSend_873( + _lib._class_NSTextCheckingResult1, + _lib._sel_addressCheckingResultWithRange_components_1, + range, + components?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult linkCheckingResultWithRange_URL_( + SentryCocoa _lib, _NSRange range, NSURL? url) { + final _ret = _lib._objc_msgSend_874( + _lib._class_NSTextCheckingResult1, + _lib._sel_linkCheckingResultWithRange_URL_1, + range, + url?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult quoteCheckingResultWithRange_replacementString_( + SentryCocoa _lib, _NSRange range, NSString? replacementString) { + final _ret = _lib._objc_msgSend_875( + _lib._class_NSTextCheckingResult1, + _lib._sel_quoteCheckingResultWithRange_replacementString_1, + range, + replacementString?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult dashCheckingResultWithRange_replacementString_( + SentryCocoa _lib, _NSRange range, NSString? replacementString) { + final _ret = _lib._objc_msgSend_875( + _lib._class_NSTextCheckingResult1, + _lib._sel_dashCheckingResultWithRange_replacementString_1, + range, + replacementString?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + replacementCheckingResultWithRange_replacementString_( + SentryCocoa _lib, _NSRange range, NSString? replacementString) { + final _ret = _lib._objc_msgSend_875( + _lib._class_NSTextCheckingResult1, + _lib._sel_replacementCheckingResultWithRange_replacementString_1, + range, + replacementString?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + correctionCheckingResultWithRange_replacementString_( + SentryCocoa _lib, _NSRange range, NSString? replacementString) { + final _ret = _lib._objc_msgSend_875( + _lib._class_NSTextCheckingResult1, + _lib._sel_correctionCheckingResultWithRange_replacementString_1, + range, + replacementString?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + correctionCheckingResultWithRange_replacementString_alternativeStrings_( + SentryCocoa _lib, + _NSRange range, + NSString? replacementString, + NSArray? alternativeStrings) { + final _ret = _lib._objc_msgSend_876( + _lib._class_NSTextCheckingResult1, + _lib._sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_1, + range, + replacementString?._id ?? ffi.nullptr, + alternativeStrings?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + regularExpressionCheckingResultWithRanges_count_regularExpression_( + SentryCocoa _lib, + ffi.Pointer<_NSRange> ranges, + int count, + NSRegularExpression? regularExpression) { + final _ret = _lib._objc_msgSend_877( + _lib._class_NSTextCheckingResult1, + _lib._sel_regularExpressionCheckingResultWithRanges_count_regularExpression_1, + ranges, + count, + regularExpression?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult phoneNumberCheckingResultWithRange_phoneNumber_( + SentryCocoa _lib, _NSRange range, NSString? phoneNumber) { + final _ret = _lib._objc_msgSend_875( + _lib._class_NSTextCheckingResult1, + _lib._sel_phoneNumberCheckingResultWithRange_phoneNumber_1, + range, + phoneNumber?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + } + + static NSTextCheckingResult + transitInformationCheckingResultWithRange_components_( + SentryCocoa _lib, _NSRange range, NSDictionary? components) { + final _ret = _lib._objc_msgSend_873( + _lib._class_NSTextCheckingResult1, + _lib._sel_transitInformationCheckingResultWithRange_components_1, + range, + components?._id ?? ffi.nullptr); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); } @override - NSPointerArray init() { + NSTextCheckingResult init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPointerArray._(_ret, _lib, retain: true, release: true); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); } - static NSPointerArray new1(SentryCocoa _lib) { + static NSTextCheckingResult new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerArray1, _lib._sel_new1); - return NSPointerArray._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSTextCheckingResult1, _lib._sel_new1); + return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); } - static NSPointerArray allocWithZone_( + static NSTextCheckingResult allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSPointerArray1, _lib._sel_allocWithZone_1, zone); - return NSPointerArray._(_ret, _lib, retain: false, release: true); + _lib._class_NSTextCheckingResult1, _lib._sel_allocWithZone_1, zone); + return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); } - static NSPointerArray alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerArray1, _lib._sel_alloc1); - return NSPointerArray._(_ret, _lib, retain: false, release: true); + static NSTextCheckingResult alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSTextCheckingResult1, _lib._sel_alloc1); + return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -62041,7 +62034,7 @@ class NSPointerArray extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSPointerArray1, + _lib._class_NSTextCheckingResult1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -62050,24 +62043,24 @@ class NSPointerArray extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPointerArray1, + _lib._objc_msgSend_15(_lib._class_NSTextCheckingResult1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSPointerArray1, + return _lib._objc_msgSend_12(_lib._class_NSTextCheckingResult1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSPointerArray1, _lib._sel_useStoredAccessor1); + _lib._class_NSTextCheckingResult1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSPointerArray1, + _lib._class_NSTextCheckingResult1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -62076,7 +62069,7 @@ class NSPointerArray extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSPointerArray1, + _lib._class_NSTextCheckingResult1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -62084,249 +62077,236 @@ class NSPointerArray extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSPointerArray1, + _lib._class_NSTextCheckingResult1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_NSPointerArray1, _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79(_lib._class_NSTextCheckingResult1, + _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerArray1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSTextCheckingResult1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSPointerFunctionsOptions { - static const int NSPointerFunctionsStrongMemory = 0; - static const int NSPointerFunctionsZeroingWeakMemory = 1; - static const int NSPointerFunctionsOpaqueMemory = 2; - static const int NSPointerFunctionsMallocMemory = 3; - static const int NSPointerFunctionsMachVirtualMemory = 4; - static const int NSPointerFunctionsWeakMemory = 5; - static const int NSPointerFunctionsObjectPersonality = 0; - static const int NSPointerFunctionsOpaquePersonality = 256; - static const int NSPointerFunctionsObjectPointerPersonality = 512; - static const int NSPointerFunctionsCStringPersonality = 768; - static const int NSPointerFunctionsStructPersonality = 1024; - static const int NSPointerFunctionsIntegerPersonality = 1280; - static const int NSPointerFunctionsCopyIn = 65536; +abstract class NSTextCheckingType { + static const int NSTextCheckingTypeOrthography = 1; + static const int NSTextCheckingTypeSpelling = 2; + static const int NSTextCheckingTypeGrammar = 4; + static const int NSTextCheckingTypeDate = 8; + static const int NSTextCheckingTypeAddress = 16; + static const int NSTextCheckingTypeLink = 32; + static const int NSTextCheckingTypeQuote = 64; + static const int NSTextCheckingTypeDash = 128; + static const int NSTextCheckingTypeReplacement = 256; + static const int NSTextCheckingTypeCorrection = 512; + static const int NSTextCheckingTypeRegularExpression = 1024; + static const int NSTextCheckingTypePhoneNumber = 2048; + static const int NSTextCheckingTypeTransitInformation = 4096; } -class NSPointerFunctions extends NSObject { - NSPointerFunctions._(ffi.Pointer id, SentryCocoa lib, +class NSRegularExpression extends NSObject { + NSRegularExpression._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSPointerFunctions] that points to the same underlying object as [other]. - static NSPointerFunctions castFrom(T other) { - return NSPointerFunctions._(other._id, other._lib, + /// Returns a [NSRegularExpression] that points to the same underlying object as [other]. + static NSRegularExpression castFrom(T other) { + return NSRegularExpression._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSPointerFunctions] that wraps the given raw object pointer. - static NSPointerFunctions castFromPointer( + /// Returns a [NSRegularExpression] that wraps the given raw object pointer. + static NSRegularExpression castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSPointerFunctions._(other, lib, retain: retain, release: release); + return NSRegularExpression._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSPointerFunctions]. + /// Returns whether [obj] is an instance of [NSRegularExpression]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSPointerFunctions1); - } - - NSPointerFunctions initWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_859(_id, _lib._sel_initWithOptions_1, options); - return NSPointerFunctions._(_ret, _lib, retain: true, release: true); - } - - static NSPointerFunctions pointerFunctionsWithOptions_( - SentryCocoa _lib, int options) { - final _ret = _lib._objc_msgSend_860(_lib._class_NSPointerFunctions1, - _lib._sel_pointerFunctionsWithOptions_1, options); - return NSPointerFunctions._(_ret, _lib, retain: true, release: true); - } - - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - get hashFunction { - return _lib._objc_msgSend_861(_id, _lib._sel_hashFunction1); + obj._lib._class_NSRegularExpression1); } - set hashFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value) { - return _lib._objc_msgSend_862(_id, _lib._sel_setHashFunction_1, value); + static NSRegularExpression regularExpressionWithPattern_options_error_( + SentryCocoa _lib, + NSString? pattern, + int options, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_855( + _lib._class_NSRegularExpression1, + _lib._sel_regularExpressionWithPattern_options_error_1, + pattern?._id ?? ffi.nullptr, + options, + error); + return NSRegularExpression._(_ret, _lib, retain: true, release: true); } - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - get isEqualFunction { - return _lib._objc_msgSend_863(_id, _lib._sel_isEqualFunction1); + NSRegularExpression initWithPattern_options_error_(NSString? pattern, + int options, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_856( + _id, + _lib._sel_initWithPattern_options_error_1, + pattern?._id ?? ffi.nullptr, + options, + error); + return NSRegularExpression._(_ret, _lib, retain: true, release: true); } - set isEqualFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Bool Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value) { - return _lib._objc_msgSend_864(_id, _lib._sel_setIsEqualFunction_1, value); + NSString? get pattern { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_pattern1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - ffi.Pointer< - ffi.NativeFunction)>> - get sizeFunction { - return _lib._objc_msgSend_865(_id, _lib._sel_sizeFunction1); + int get options { + return _lib._objc_msgSend_857(_id, _lib._sel_options1); } - set sizeFunction( - ffi.Pointer< - ffi - .NativeFunction)>> - value) { - return _lib._objc_msgSend_866(_id, _lib._sel_setSizeFunction_1, value); + int get numberOfCaptureGroups { + return _lib._objc_msgSend_10(_id, _lib._sel_numberOfCaptureGroups1); } - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - get descriptionFunction { - return _lib._objc_msgSend_867(_id, _lib._sel_descriptionFunction1); + static NSString escapedPatternForString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSRegularExpression1, + _lib._sel_escapedPatternForString_1, string?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - set descriptionFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function(ffi.Pointer)>> - value) { - return _lib._objc_msgSend_868( - _id, _lib._sel_setDescriptionFunction_1, value); + void enumerateMatchesInString_options_range_usingBlock_( + NSString? string, + int options, + _NSRange range, + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool block) { + _lib._objc_msgSend_858( + _id, + _lib._sel_enumerateMatchesInString_options_range_usingBlock_1, + string?._id ?? ffi.nullptr, + options, + range, + block._id); } - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>)>> - get relinquishFunction { - return _lib._objc_msgSend_869(_id, _lib._sel_relinquishFunction1); + NSArray matchesInString_options_range_( + NSString? string, int options, _NSRange range) { + final _ret = _lib._objc_msgSend_859( + _id, + _lib._sel_matchesInString_options_range_1, + string?._id ?? ffi.nullptr, + options, + range); + return NSArray._(_ret, _lib, retain: true, release: true); } - set relinquishFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>)>> - value) { - return _lib._objc_msgSend_870( - _id, _lib._sel_setRelinquishFunction_1, value); + int numberOfMatchesInString_options_range_( + NSString? string, int options, _NSRange range) { + return _lib._objc_msgSend_860( + _id, + _lib._sel_numberOfMatchesInString_options_range_1, + string?._id ?? ffi.nullptr, + options, + range); } - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function(ffi.Pointer)>>, - ffi.Bool)>> get acquireFunction { - return _lib._objc_msgSend_871(_id, _lib._sel_acquireFunction1); + NSTextCheckingResult firstMatchInString_options_range_( + NSString? string, int options, _NSRange range) { + final _ret = _lib._objc_msgSend_861( + _id, + _lib._sel_firstMatchInString_options_range_1, + string?._id ?? ffi.nullptr, + options, + range); + return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); } - set acquireFunction( - ffi.Pointer< - ffi.NativeFunction< - ffi.Pointer Function( - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.UnsignedLong Function( - ffi.Pointer)>>, - ffi.Bool)>> - value) { - return _lib._objc_msgSend_872(_id, _lib._sel_setAcquireFunction_1, value); + void rangeOfFirstMatchInString_options_range_(ffi.Pointer<_NSRange> stret, + NSString? string, int options, _NSRange range) { + _lib._objc_msgSend_862( + stret, + _id, + _lib._sel_rangeOfFirstMatchInString_options_range_1, + string?._id ?? ffi.nullptr, + options, + range); } - bool get usesStrongWriteBarrier { - return _lib._objc_msgSend_12(_id, _lib._sel_usesStrongWriteBarrier1); + NSString stringByReplacingMatchesInString_options_range_withTemplate_( + NSString? string, int options, _NSRange range, NSString? templ) { + final _ret = _lib._objc_msgSend_863( + _id, + _lib._sel_stringByReplacingMatchesInString_options_range_withTemplate_1, + string?._id ?? ffi.nullptr, + options, + range, + templ?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - set usesStrongWriteBarrier(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setUsesStrongWriteBarrier_1, value); + int replaceMatchesInString_options_range_withTemplate_( + NSMutableString? string, int options, _NSRange range, NSString? templ) { + return _lib._objc_msgSend_864( + _id, + _lib._sel_replaceMatchesInString_options_range_withTemplate_1, + string?._id ?? ffi.nullptr, + options, + range, + templ?._id ?? ffi.nullptr); } - bool get usesWeakReadAndWriteBarriers { - return _lib._objc_msgSend_12(_id, _lib._sel_usesWeakReadAndWriteBarriers1); + NSString replacementStringForResult_inString_offset_template_( + NSTextCheckingResult? result, + NSString? string, + int offset, + NSString? templ) { + final _ret = _lib._objc_msgSend_865( + _id, + _lib._sel_replacementStringForResult_inString_offset_template_1, + result?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr, + offset, + templ?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - set usesWeakReadAndWriteBarriers(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setUsesWeakReadAndWriteBarriers_1, value); + static NSString escapedTemplateForString_( + SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSRegularExpression1, + _lib._sel_escapedTemplateForString_1, string?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } @override - NSPointerFunctions init() { + NSRegularExpression init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSPointerFunctions._(_ret, _lib, retain: true, release: true); + return NSRegularExpression._(_ret, _lib, retain: true, release: true); } - static NSPointerFunctions new1(SentryCocoa _lib) { + static NSRegularExpression new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerFunctions1, _lib._sel_new1); - return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSRegularExpression1, _lib._sel_new1); + return NSRegularExpression._(_ret, _lib, retain: false, release: true); } - static NSPointerFunctions allocWithZone_( + static NSRegularExpression allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSPointerFunctions1, _lib._sel_allocWithZone_1, zone); - return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + _lib._class_NSRegularExpression1, _lib._sel_allocWithZone_1, zone); + return NSRegularExpression._(_ret, _lib, retain: false, release: true); } - static NSPointerFunctions alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSPointerFunctions1, _lib._sel_alloc1); - return NSPointerFunctions._(_ret, _lib, retain: false, release: true); + static NSRegularExpression alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSRegularExpression1, _lib._sel_alloc1); + return NSRegularExpression._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -62335,7 +62315,7 @@ class NSPointerFunctions extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSPointerFunctions1, + _lib._class_NSRegularExpression1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -62344,24 +62324,24 @@ class NSPointerFunctions extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSPointerFunctions1, + _lib._objc_msgSend_15(_lib._class_NSRegularExpression1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSPointerFunctions1, + return _lib._objc_msgSend_12(_lib._class_NSRegularExpression1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSPointerFunctions1, _lib._sel_useStoredAccessor1); + _lib._class_NSRegularExpression1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSPointerFunctions1, + _lib._class_NSRegularExpression1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -62370,7 +62350,7 @@ class NSPointerFunctions extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSPointerFunctions1, + _lib._class_NSRegularExpression1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -62378,256 +62358,311 @@ class NSPointerFunctions extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSPointerFunctions1, + _lib._class_NSRegularExpression1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSPointerFunctions1, + final _ret = _lib._objc_msgSend_79(_lib._class_NSRegularExpression1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSPointerFunctions1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSRegularExpression1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSProcessInfo extends NSObject { - NSProcessInfo._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSProcessInfo] that points to the same underlying object as [other]. - static NSProcessInfo castFrom(T other) { - return NSProcessInfo._(other._id, other._lib, retain: true, release: true); - } +abstract class NSRegularExpressionOptions { + static const int NSRegularExpressionCaseInsensitive = 1; + static const int NSRegularExpressionAllowCommentsAndWhitespace = 2; + static const int NSRegularExpressionIgnoreMetacharacters = 4; + static const int NSRegularExpressionDotMatchesLineSeparators = 8; + static const int NSRegularExpressionAnchorsMatchLines = 16; + static const int NSRegularExpressionUseUnixLineSeparators = 32; + static const int NSRegularExpressionUseUnicodeWordBoundaries = 64; +} - /// Returns a [NSProcessInfo] that wraps the given raw object pointer. - static NSProcessInfo castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSProcessInfo._(other, lib, retain: retain, release: release); - } +abstract class NSMatchingOptions { + static const int NSMatchingReportProgress = 1; + static const int NSMatchingReportCompletion = 2; + static const int NSMatchingAnchored = 4; + static const int NSMatchingWithTransparentBounds = 8; + static const int NSMatchingWithoutAnchoringBounds = 16; +} - /// Returns whether [obj] is an instance of [NSProcessInfo]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSProcessInfo1); - } +void + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, ffi.Int32 arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer arg0, int arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} - static NSProcessInfo? getProcessInfo(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_880( - _lib._class_NSProcessInfo1, _lib._sel_processInfo1); - return _ret.address == 0 - ? null - : NSProcessInfo._(_ret, _lib, retain: true, release: true); - } +final _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ + id] = fn; + return ffi.Pointer.fromAddress(id); +} - NSDictionary? get environment { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_environment1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } +void + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, int, + ffi.Pointer))(arg0, arg1, arg2); +} - NSArray? get arguments { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_arguments1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } +class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool + extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); - NSString? get hostName { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_hostName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Int32 arg1, ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Int32 arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; - NSString? get processName { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_processName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, int arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Int32 arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call( + ffi.Pointer arg0, int arg1, ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Int32 arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + int arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); } +} - set processName(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setProcessName_1, value?._id ?? ffi.nullptr); - } +abstract class NSMatchingFlags { + static const int NSMatchingProgress = 1; + static const int NSMatchingCompleted = 2; + static const int NSMatchingHitEnd = 4; + static const int NSMatchingRequiredEnd = 8; + static const int NSMatchingInternalError = 16; +} - int get processIdentifier { - return _lib._objc_msgSend_219(_id, _lib._sel_processIdentifier1); - } +class NSURLCache extends NSObject { + NSURLCache._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); - NSString? get globallyUniqueString { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_globallyUniqueString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + /// Returns a [NSURLCache] that points to the same underlying object as [other]. + static NSURLCache castFrom(T other) { + return NSURLCache._(other._id, other._lib, retain: true, release: true); } - int operatingSystem() { - return _lib._objc_msgSend_10(_id, _lib._sel_operatingSystem1); + /// Returns a [NSURLCache] that wraps the given raw object pointer. + static NSURLCache castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLCache._(other, lib, retain: retain, release: release); } - NSString operatingSystemName() { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_operatingSystemName1); - return NSString._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLCache]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLCache1); } - NSString? get operatingSystemVersionString { - final _ret = - _lib._objc_msgSend_20(_id, _lib._sel_operatingSystemVersionString1); + static NSURLCache? getSharedURLCache(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_878( + _lib._class_NSURLCache1, _lib._sel_sharedURLCache1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - void getOperatingSystemVersion(ffi.Pointer stret) { - _lib._objc_msgSend_881(stret, _id, _lib._sel_operatingSystemVersion1); - } - - int get processorCount { - return _lib._objc_msgSend_10(_id, _lib._sel_processorCount1); - } - - int get activeProcessorCount { - return _lib._objc_msgSend_10(_id, _lib._sel_activeProcessorCount1); - } - - int get physicalMemory { - return _lib._objc_msgSend_154(_id, _lib._sel_physicalMemory1); - } - - bool isOperatingSystemAtLeastVersion_(NSOperatingSystemVersion version) { - return _lib._objc_msgSend_882( - _id, _lib._sel_isOperatingSystemAtLeastVersion_1, version); + : NSURLCache._(_ret, _lib, retain: true, release: true); } - double get systemUptime { - return _lib._objc_msgSend_155(_id, _lib._sel_systemUptime1); + static void setSharedURLCache(SentryCocoa _lib, NSURLCache? value) { + return _lib._objc_msgSend_879(_lib._class_NSURLCache1, + _lib._sel_setSharedURLCache_1, value?._id ?? ffi.nullptr); } - void disableSuddenTermination() { - _lib._objc_msgSend_1(_id, _lib._sel_disableSuddenTermination1); + NSURLCache initWithMemoryCapacity_diskCapacity_diskPath_( + int memoryCapacity, int diskCapacity, NSString? path) { + final _ret = _lib._objc_msgSend_880( + _id, + _lib._sel_initWithMemoryCapacity_diskCapacity_diskPath_1, + memoryCapacity, + diskCapacity, + path?._id ?? ffi.nullptr); + return NSURLCache._(_ret, _lib, retain: true, release: true); } - void enableSuddenTermination() { - _lib._objc_msgSend_1(_id, _lib._sel_enableSuddenTermination1); + NSURLCache initWithMemoryCapacity_diskCapacity_directoryURL_( + int memoryCapacity, int diskCapacity, NSURL? directoryURL) { + final _ret = _lib._objc_msgSend_881( + _id, + _lib._sel_initWithMemoryCapacity_diskCapacity_directoryURL_1, + memoryCapacity, + diskCapacity, + directoryURL?._id ?? ffi.nullptr); + return NSURLCache._(_ret, _lib, retain: true, release: true); } - void disableAutomaticTermination_(NSString? reason) { - _lib._objc_msgSend_192(_id, _lib._sel_disableAutomaticTermination_1, - reason?._id ?? ffi.nullptr); + NSCachedURLResponse cachedResponseForRequest_(NSURLRequest? request) { + final _ret = _lib._objc_msgSend_885( + _id, _lib._sel_cachedResponseForRequest_1, request?._id ?? ffi.nullptr); + return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); } - void enableAutomaticTermination_(NSString? reason) { - _lib._objc_msgSend_192(_id, _lib._sel_enableAutomaticTermination_1, - reason?._id ?? ffi.nullptr); + void storeCachedResponse_forRequest_( + NSCachedURLResponse? cachedResponse, NSURLRequest? request) { + _lib._objc_msgSend_886(_id, _lib._sel_storeCachedResponse_forRequest_1, + cachedResponse?._id ?? ffi.nullptr, request?._id ?? ffi.nullptr); } - bool get automaticTerminationSupportEnabled { - return _lib._objc_msgSend_12( - _id, _lib._sel_automaticTerminationSupportEnabled1); + void removeCachedResponseForRequest_(NSURLRequest? request) { + _lib._objc_msgSend_887(_id, _lib._sel_removeCachedResponseForRequest_1, + request?._id ?? ffi.nullptr); } - set automaticTerminationSupportEnabled(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setAutomaticTerminationSupportEnabled_1, value); + void removeAllCachedResponses() { + _lib._objc_msgSend_1(_id, _lib._sel_removeAllCachedResponses1); } - NSObject beginActivityWithOptions_reason_(int options, NSString? reason) { - final _ret = _lib._objc_msgSend_883( - _id, - _lib._sel_beginActivityWithOptions_reason_1, - options, - reason?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + void removeCachedResponsesSinceDate_(NSDate? date) { + _lib._objc_msgSend_504(_id, _lib._sel_removeCachedResponsesSinceDate_1, + date?._id ?? ffi.nullptr); } - void endActivity_(NSObject? activity) { - _lib._objc_msgSend_15( - _id, _lib._sel_endActivity_1, activity?._id ?? ffi.nullptr); + int get memoryCapacity { + return _lib._objc_msgSend_10(_id, _lib._sel_memoryCapacity1); } - void performActivityWithOptions_reason_usingBlock_( - int options, NSString? reason, ObjCBlock_ffiVoid block) { - _lib._objc_msgSend_884( - _id, - _lib._sel_performActivityWithOptions_reason_usingBlock_1, - options, - reason?._id ?? ffi.nullptr, - block._id); + set memoryCapacity(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setMemoryCapacity_1, value); } - void performExpiringActivityWithReason_usingBlock_( - NSString? reason, ObjCBlock_ffiVoid_bool block) { - _lib._objc_msgSend_885( - _id, - _lib._sel_performExpiringActivityWithReason_usingBlock_1, - reason?._id ?? ffi.nullptr, - block._id); + int get diskCapacity { + return _lib._objc_msgSend_10(_id, _lib._sel_diskCapacity1); } - NSString? get userName { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_userName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set diskCapacity(int value) { + return _lib._objc_msgSend_483(_id, _lib._sel_setDiskCapacity_1, value); } - NSString? get fullUserName { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_fullUserName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + int get currentMemoryUsage { + return _lib._objc_msgSend_10(_id, _lib._sel_currentMemoryUsage1); } - int get thermalState { - return _lib._objc_msgSend_886(_id, _lib._sel_thermalState1); + int get currentDiskUsage { + return _lib._objc_msgSend_10(_id, _lib._sel_currentDiskUsage1); } - bool get lowPowerModeEnabled { - return _lib._objc_msgSend_12(_id, _lib._sel_isLowPowerModeEnabled1); + void storeCachedResponse_forDataTask_( + NSCachedURLResponse? cachedResponse, NSURLSessionDataTask? dataTask) { + _lib._objc_msgSend_888(_id, _lib._sel_storeCachedResponse_forDataTask_1, + cachedResponse?._id ?? ffi.nullptr, dataTask?._id ?? ffi.nullptr); } - bool get macCatalystApp { - return _lib._objc_msgSend_12(_id, _lib._sel_isMacCatalystApp1); + void getCachedResponseForDataTask_completionHandler_( + NSURLSessionDataTask? dataTask, + ObjCBlock_ffiVoid_NSCachedURLResponse completionHandler) { + _lib._objc_msgSend_889( + _id, + _lib._sel_getCachedResponseForDataTask_completionHandler_1, + dataTask?._id ?? ffi.nullptr, + completionHandler._id); } - bool get iOSAppOnMac { - return _lib._objc_msgSend_12(_id, _lib._sel_isiOSAppOnMac1); + void removeCachedResponseForDataTask_(NSURLSessionDataTask? dataTask) { + _lib._objc_msgSend_890(_id, _lib._sel_removeCachedResponseForDataTask_1, + dataTask?._id ?? ffi.nullptr); } @override - NSProcessInfo init() { + NSURLCache init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSProcessInfo._(_ret, _lib, retain: true, release: true); + return NSURLCache._(_ret, _lib, retain: true, release: true); } - static NSProcessInfo new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSProcessInfo1, _lib._sel_new1); - return NSProcessInfo._(_ret, _lib, retain: false, release: true); + static NSURLCache new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLCache1, _lib._sel_new1); + return NSURLCache._(_ret, _lib, retain: false, release: true); } - static NSProcessInfo allocWithZone_( + static NSURLCache allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSProcessInfo1, _lib._sel_allocWithZone_1, zone); - return NSProcessInfo._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLCache1, _lib._sel_allocWithZone_1, zone); + return NSURLCache._(_ret, _lib, retain: false, release: true); } - static NSProcessInfo alloc(SentryCocoa _lib) { + static NSURLCache alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSProcessInfo1, _lib._sel_alloc1); - return NSProcessInfo._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLCache1, _lib._sel_alloc1); + return NSURLCache._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -62636,7 +62671,7 @@ class NSProcessInfo extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSProcessInfo1, + _lib._class_NSURLCache1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -62645,24 +62680,24 @@ class NSProcessInfo extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSProcessInfo1, + _lib._objc_msgSend_15(_lib._class_NSURLCache1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSProcessInfo1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSURLCache1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSProcessInfo1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLCache1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSProcessInfo1, + _lib._class_NSURLCache1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -62671,7 +62706,7 @@ class NSProcessInfo extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSProcessInfo1, + _lib._class_NSURLCache1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -62679,7 +62714,7 @@ class NSProcessInfo extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSProcessInfo1, + _lib._class_NSURLCache1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -62687,431 +62722,234 @@ class NSProcessInfo extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSProcessInfo1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSURLCache1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSProcessInfo1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSURLCache1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSOperatingSystemVersion extends ffi.Struct { - @ffi.Long() - external int majorVersion; - - @ffi.Long() - external int minorVersion; - - @ffi.Long() - external int patchVersion; -} - -abstract class NSActivityOptions { - static const int NSActivityIdleDisplaySleepDisabled = 1099511627776; - static const int NSActivityIdleSystemSleepDisabled = 1048576; - static const int NSActivitySuddenTerminationDisabled = 16384; - static const int NSActivityAutomaticTerminationDisabled = 32768; - static const int NSActivityAnimationTrackingEnabled = 35184372088832; - static const int NSActivityTrackingEnabled = 70368744177664; - static const int NSActivityUserInitiated = 16777215; - static const int NSActivityUserInitiatedAllowingIdleSystemSleep = 15728639; - static const int NSActivityBackground = 255; - static const int NSActivityLatencyCritical = 1095216660480; - static const int NSActivityUserInteractive = 1095233437695; -} - -void _ObjCBlock_ffiVoid_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, bool arg0) { - return block.ref.target - .cast>() - .asFunction()(arg0); -} - -final _ObjCBlock_ffiVoid_bool_closureRegistry = {}; -int _ObjCBlock_ffiVoid_bool_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_bool_registerClosure(Function fn) { - final id = ++_ObjCBlock_ffiVoid_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_bool_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, bool arg0) { - return (_ObjCBlock_ffiVoid_bool_closureRegistry[block.ref.target.address] - as void Function(bool))(arg0); -} - -class ObjCBlock_ffiVoid_bool extends _ObjCBlockBase { - ObjCBlock_ffiVoid_bool._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); - - /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_bool.fromFunctionPointer(SentryCocoa lib, - ffi.Pointer> ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0)>( - _ObjCBlock_ffiVoid_bool_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_bool.fromFunction( - SentryCocoa lib, void Function(bool arg0) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0)>( - _ObjCBlock_ffiVoid_bool_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_bool_registerClosure(fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - void call(bool arg0) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, ffi.Bool arg0)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock> block, bool arg0)>()(_id, arg0); - } -} - -abstract class NSProcessInfoThermalState { - static const int NSProcessInfoThermalStateNominal = 0; - static const int NSProcessInfoThermalStateFair = 1; - static const int NSProcessInfoThermalStateSerious = 2; - static const int NSProcessInfoThermalStateCritical = 3; -} - -class NSTextCheckingResult extends NSObject { - NSTextCheckingResult._(ffi.Pointer id, SentryCocoa lib, +class NSCachedURLResponse extends NSObject { + NSCachedURLResponse._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSTextCheckingResult] that points to the same underlying object as [other]. - static NSTextCheckingResult castFrom(T other) { - return NSTextCheckingResult._(other._id, other._lib, + /// Returns a [NSCachedURLResponse] that points to the same underlying object as [other]. + static NSCachedURLResponse castFrom(T other) { + return NSCachedURLResponse._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSTextCheckingResult] that wraps the given raw object pointer. - static NSTextCheckingResult castFromPointer( + /// Returns a [NSCachedURLResponse] that wraps the given raw object pointer. + static NSCachedURLResponse castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSTextCheckingResult._(other, lib, retain: retain, release: release); + return NSCachedURLResponse._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSTextCheckingResult]. + /// Returns whether [obj] is an instance of [NSCachedURLResponse]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSTextCheckingResult1); - } - - int get resultType { - return _lib._objc_msgSend_887(_id, _lib._sel_resultType1); - } - - void getRange(ffi.Pointer<_NSRange> stret) { - _lib._objc_msgSend_49(stret, _id, _lib._sel_range1); + obj._lib._class_NSCachedURLResponse1); } - NSOrthography? get orthography { - final _ret = _lib._objc_msgSend_888(_id, _lib._sel_orthography1); - return _ret.address == 0 - ? null - : NSOrthography._(_ret, _lib, retain: true, release: true); + NSCachedURLResponse initWithResponse_data_( + NSURLResponse? response, NSData? data) { + final _ret = _lib._objc_msgSend_882(_id, _lib._sel_initWithResponse_data_1, + response?._id ?? ffi.nullptr, data?._id ?? ffi.nullptr); + return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); } - NSArray? get grammarDetails { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_grammarDetails1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + NSCachedURLResponse initWithResponse_data_userInfo_storagePolicy_( + NSURLResponse? response, + NSData? data, + NSDictionary? userInfo, + int storagePolicy) { + final _ret = _lib._objc_msgSend_883( + _id, + _lib._sel_initWithResponse_data_userInfo_storagePolicy_1, + response?._id ?? ffi.nullptr, + data?._id ?? ffi.nullptr, + userInfo?._id ?? ffi.nullptr, + storagePolicy); + return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); } - NSDate? get date { - final _ret = _lib._objc_msgSend_162(_id, _lib._sel_date1); + NSURLResponse? get response { + final _ret = _lib._objc_msgSend_797(_id, _lib._sel_response1); return _ret.address == 0 ? null - : NSDate._(_ret, _lib, retain: true, release: true); + : NSURLResponse._(_ret, _lib, retain: true, release: true); } - NSTimeZone? get timeZone { - final _ret = _lib._objc_msgSend_168(_id, _lib._sel_timeZone1); + NSData? get data { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_data1); return _ret.address == 0 ? null - : NSTimeZone._(_ret, _lib, retain: true, release: true); - } - - double get duration { - return _lib._objc_msgSend_155(_id, _lib._sel_duration1); + : NSData._(_ret, _lib, retain: true, release: true); } - NSDictionary? get components { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_components1); + NSDictionary? get userInfo { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_userInfo1); return _ret.address == 0 ? null : NSDictionary._(_ret, _lib, retain: true, release: true); } - NSURL? get URL { - final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSString? get replacementString { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_replacementString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSArray? get alternativeStrings { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_alternativeStrings1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - NSRegularExpression? get regularExpression { - final _ret = _lib._objc_msgSend_900(_id, _lib._sel_regularExpression1); - return _ret.address == 0 - ? null - : NSRegularExpression._(_ret, _lib, retain: true, release: true); - } - - NSString? get phoneNumber { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_phoneNumber1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - int get numberOfRanges { - return _lib._objc_msgSend_10(_id, _lib._sel_numberOfRanges1); - } - - void rangeAtIndex_(ffi.Pointer<_NSRange> stret, int idx) { - _lib._objc_msgSend_323(stret, _id, _lib._sel_rangeAtIndex_1, idx); - } - - void rangeWithName_(ffi.Pointer<_NSRange> stret, NSString? name) { - _lib._objc_msgSend_316( - stret, _id, _lib._sel_rangeWithName_1, name?._id ?? ffi.nullptr); + int get storagePolicy { + return _lib._objc_msgSend_884(_id, _lib._sel_storagePolicy1); } - NSTextCheckingResult resultByAdjustingRangesWithOffset_(int offset) { - final _ret = _lib._objc_msgSend_901( - _id, _lib._sel_resultByAdjustingRangesWithOffset_1, offset); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + @override + NSCachedURLResponse init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); } - NSDictionary? get addressComponents { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_addressComponents1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static NSCachedURLResponse new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSCachedURLResponse1, _lib._sel_new1); + return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); } - static NSTextCheckingResult orthographyCheckingResultWithRange_orthography_( - SentryCocoa _lib, _NSRange range, NSOrthography? orthography) { - final _ret = _lib._objc_msgSend_902( - _lib._class_NSTextCheckingResult1, - _lib._sel_orthographyCheckingResultWithRange_orthography_1, - range, - orthography?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static NSCachedURLResponse allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSCachedURLResponse1, _lib._sel_allocWithZone_1, zone); + return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); } - static NSTextCheckingResult spellCheckingResultWithRange_( - SentryCocoa _lib, _NSRange range) { - final _ret = _lib._objc_msgSend_903(_lib._class_NSTextCheckingResult1, - _lib._sel_spellCheckingResultWithRange_1, range); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static NSCachedURLResponse alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSCachedURLResponse1, _lib._sel_alloc1); + return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); } - static NSTextCheckingResult grammarCheckingResultWithRange_details_( - SentryCocoa _lib, _NSRange range, NSArray? details) { - final _ret = _lib._objc_msgSend_904( - _lib._class_NSTextCheckingResult1, - _lib._sel_grammarCheckingResultWithRange_details_1, - range, - details?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSCachedURLResponse1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); } - static NSTextCheckingResult dateCheckingResultWithRange_date_( - SentryCocoa _lib, _NSRange range, NSDate? date) { - final _ret = _lib._objc_msgSend_905( - _lib._class_NSTextCheckingResult1, - _lib._sel_dateCheckingResultWithRange_date_1, - range, - date?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSCachedURLResponse1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } - static NSTextCheckingResult - dateCheckingResultWithRange_date_timeZone_duration_(SentryCocoa _lib, - _NSRange range, NSDate? date, NSTimeZone? timeZone, double duration) { - final _ret = _lib._objc_msgSend_906( - _lib._class_NSTextCheckingResult1, - _lib._sel_dateCheckingResultWithRange_date_timeZone_duration_1, - range, - date?._id ?? ffi.nullptr, - timeZone?._id ?? ffi.nullptr, - duration); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSCachedURLResponse1, + _lib._sel_accessInstanceVariablesDirectly1); } - static NSTextCheckingResult addressCheckingResultWithRange_components_( - SentryCocoa _lib, _NSRange range, NSDictionary? components) { - final _ret = _lib._objc_msgSend_907( - _lib._class_NSTextCheckingResult1, - _lib._sel_addressCheckingResultWithRange_components_1, - range, - components?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSCachedURLResponse1, _lib._sel_useStoredAccessor1); } - static NSTextCheckingResult linkCheckingResultWithRange_URL_( - SentryCocoa _lib, _NSRange range, NSURL? url) { - final _ret = _lib._objc_msgSend_908( - _lib._class_NSTextCheckingResult1, - _lib._sel_linkCheckingResultWithRange_URL_1, - range, - url?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSCachedURLResponse1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); } - static NSTextCheckingResult quoteCheckingResultWithRange_replacementString_( - SentryCocoa _lib, _NSRange range, NSString? replacementString) { - final _ret = _lib._objc_msgSend_909( - _lib._class_NSTextCheckingResult1, - _lib._sel_quoteCheckingResultWithRange_replacementString_1, - range, - replacementString?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSCachedURLResponse1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); } - static NSTextCheckingResult dashCheckingResultWithRange_replacementString_( - SentryCocoa _lib, _NSRange range, NSString? replacementString) { - final _ret = _lib._objc_msgSend_909( - _lib._class_NSTextCheckingResult1, - _lib._sel_dashCheckingResultWithRange_replacementString_1, - range, - replacementString?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSCachedURLResponse1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); } - static NSTextCheckingResult - replacementCheckingResultWithRange_replacementString_( - SentryCocoa _lib, _NSRange range, NSString? replacementString) { - final _ret = _lib._objc_msgSend_909( - _lib._class_NSTextCheckingResult1, - _lib._sel_replacementCheckingResultWithRange_replacementString_1, - range, - replacementString?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSCachedURLResponse1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); } - static NSTextCheckingResult - correctionCheckingResultWithRange_replacementString_( - SentryCocoa _lib, _NSRange range, NSString? replacementString) { - final _ret = _lib._objc_msgSend_909( - _lib._class_NSTextCheckingResult1, - _lib._sel_correctionCheckingResultWithRange_replacementString_1, - range, - replacementString?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSCachedURLResponse1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); } +} - static NSTextCheckingResult - correctionCheckingResultWithRange_replacementString_alternativeStrings_( - SentryCocoa _lib, - _NSRange range, - NSString? replacementString, - NSArray? alternativeStrings) { - final _ret = _lib._objc_msgSend_910( - _lib._class_NSTextCheckingResult1, - _lib._sel_correctionCheckingResultWithRange_replacementString_alternativeStrings_1, - range, - replacementString?._id ?? ffi.nullptr, - alternativeStrings?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); - } +abstract class NSURLCacheStoragePolicy { + static const int NSURLCacheStorageAllowed = 0; + static const int NSURLCacheStorageAllowedInMemoryOnly = 1; + static const int NSURLCacheStorageNotAllowed = 2; +} - static NSTextCheckingResult - regularExpressionCheckingResultWithRanges_count_regularExpression_( - SentryCocoa _lib, - ffi.Pointer<_NSRange> ranges, - int count, - NSRegularExpression? regularExpression) { - final _ret = _lib._objc_msgSend_911( - _lib._class_NSTextCheckingResult1, - _lib._sel_regularExpressionCheckingResultWithRanges_count_regularExpression_1, - ranges, - count, - regularExpression?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); +class NSURLSessionDataTask extends NSURLSessionTask { + NSURLSessionDataTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSessionDataTask] that points to the same underlying object as [other]. + static NSURLSessionDataTask castFrom(T other) { + return NSURLSessionDataTask._(other._id, other._lib, + retain: true, release: true); } - static NSTextCheckingResult phoneNumberCheckingResultWithRange_phoneNumber_( - SentryCocoa _lib, _NSRange range, NSString? phoneNumber) { - final _ret = _lib._objc_msgSend_909( - _lib._class_NSTextCheckingResult1, - _lib._sel_phoneNumberCheckingResultWithRange_phoneNumber_1, - range, - phoneNumber?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + /// Returns a [NSURLSessionDataTask] that wraps the given raw object pointer. + static NSURLSessionDataTask castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionDataTask._(other, lib, retain: retain, release: release); } - static NSTextCheckingResult - transitInformationCheckingResultWithRange_components_( - SentryCocoa _lib, _NSRange range, NSDictionary? components) { - final _ret = _lib._objc_msgSend_907( - _lib._class_NSTextCheckingResult1, - _lib._sel_transitInformationCheckingResultWithRange_components_1, - range, - components?._id ?? ffi.nullptr); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLSessionDataTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionDataTask1); } @override - NSTextCheckingResult init() { + NSURLSessionDataTask init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); } - static NSTextCheckingResult new1(SentryCocoa _lib) { + static NSURLSessionDataTask new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSTextCheckingResult1, _lib._sel_new1); - return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLSessionDataTask1, _lib._sel_new1); + return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); } - static NSTextCheckingResult allocWithZone_( + static NSURLSessionDataTask allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSTextCheckingResult1, _lib._sel_allocWithZone_1, zone); - return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLSessionDataTask1, _lib._sel_allocWithZone_1, zone); + return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); } - static NSTextCheckingResult alloc(SentryCocoa _lib) { + static NSURLSessionDataTask alloc(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSTextCheckingResult1, _lib._sel_alloc1); - return NSTextCheckingResult._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLSessionDataTask1, _lib._sel_alloc1); + return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -63120,7 +62958,7 @@ class NSTextCheckingResult extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSTextCheckingResult1, + _lib._class_NSURLSessionDataTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -63129,24 +62967,24 @@ class NSTextCheckingResult extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSTextCheckingResult1, + _lib._objc_msgSend_15(_lib._class_NSURLSessionDataTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSTextCheckingResult1, + return _lib._objc_msgSend_12(_lib._class_NSURLSessionDataTask1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSTextCheckingResult1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLSessionDataTask1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSTextCheckingResult1, + _lib._class_NSURLSessionDataTask1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -63155,7 +62993,7 @@ class NSTextCheckingResult extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSTextCheckingResult1, + _lib._class_NSURLSessionDataTask1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -63163,236 +63001,244 @@ class NSTextCheckingResult extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSTextCheckingResult1, + _lib._class_NSURLSessionDataTask1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSTextCheckingResult1, + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionDataTask1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSTextCheckingResult1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSURLSessionDataTask1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSTextCheckingType { - static const int NSTextCheckingTypeOrthography = 1; - static const int NSTextCheckingTypeSpelling = 2; - static const int NSTextCheckingTypeGrammar = 4; - static const int NSTextCheckingTypeDate = 8; - static const int NSTextCheckingTypeAddress = 16; - static const int NSTextCheckingTypeLink = 32; - static const int NSTextCheckingTypeQuote = 64; - static const int NSTextCheckingTypeDash = 128; - static const int NSTextCheckingTypeReplacement = 256; - static const int NSTextCheckingTypeCorrection = 512; - static const int NSTextCheckingTypeRegularExpression = 1024; - static const int NSTextCheckingTypePhoneNumber = 2048; - static const int NSTextCheckingTypeTransitInformation = 4096; +void _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); } -class NSRegularExpression extends NSObject { - NSRegularExpression._(ffi.Pointer id, SentryCocoa lib, +final _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[block + .ref.target.address] as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSCachedURLResponse extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSCachedURLResponse._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +class NSURLConnection extends NSObject { + NSURLConnection._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSRegularExpression] that points to the same underlying object as [other]. - static NSRegularExpression castFrom(T other) { - return NSRegularExpression._(other._id, other._lib, + /// Returns a [NSURLConnection] that points to the same underlying object as [other]. + static NSURLConnection castFrom(T other) { + return NSURLConnection._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSRegularExpression] that wraps the given raw object pointer. - static NSRegularExpression castFromPointer( + /// Returns a [NSURLConnection] that wraps the given raw object pointer. + static NSURLConnection castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSRegularExpression._(other, lib, retain: retain, release: release); + return NSURLConnection._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSRegularExpression]. + /// Returns whether [obj] is an instance of [NSURLConnection]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSRegularExpression1); - } - - static NSRegularExpression regularExpressionWithPattern_options_error_( - SentryCocoa _lib, - NSString? pattern, - int options, - ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_889( - _lib._class_NSRegularExpression1, - _lib._sel_regularExpressionWithPattern_options_error_1, - pattern?._id ?? ffi.nullptr, - options, - error); - return NSRegularExpression._(_ret, _lib, retain: true, release: true); + obj._lib._class_NSURLConnection1); } - NSRegularExpression initWithPattern_options_error_(NSString? pattern, - int options, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_890( + NSURLConnection initWithRequest_delegate_startImmediately_( + NSURLRequest? request, NSObject delegate, bool startImmediately) { + final _ret = _lib._objc_msgSend_891( _id, - _lib._sel_initWithPattern_options_error_1, - pattern?._id ?? ffi.nullptr, - options, - error); - return NSRegularExpression._(_ret, _lib, retain: true, release: true); - } - - NSString? get pattern { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_pattern1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + _lib._sel_initWithRequest_delegate_startImmediately_1, + request?._id ?? ffi.nullptr, + delegate._id, + startImmediately); + return NSURLConnection._(_ret, _lib, retain: true, release: true); } - int get options { - return _lib._objc_msgSend_891(_id, _lib._sel_options1); + NSURLConnection initWithRequest_delegate_( + NSURLRequest? request, NSObject delegate) { + final _ret = _lib._objc_msgSend_892( + _id, + _lib._sel_initWithRequest_delegate_1, + request?._id ?? ffi.nullptr, + delegate._id); + return NSURLConnection._(_ret, _lib, retain: true, release: true); } - int get numberOfCaptureGroups { - return _lib._objc_msgSend_10(_id, _lib._sel_numberOfCaptureGroups1); + static NSURLConnection connectionWithRequest_delegate_( + SentryCocoa _lib, NSURLRequest? request, NSObject delegate) { + final _ret = _lib._objc_msgSend_893( + _lib._class_NSURLConnection1, + _lib._sel_connectionWithRequest_delegate_1, + request?._id ?? ffi.nullptr, + delegate._id); + return NSURLConnection._(_ret, _lib, retain: true, release: true); } - static NSString escapedPatternForString_(SentryCocoa _lib, NSString? string) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSRegularExpression1, - _lib._sel_escapedPatternForString_1, string?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + NSURLRequest? get originalRequest { + final _ret = _lib._objc_msgSend_795(_id, _lib._sel_originalRequest1); + return _ret.address == 0 + ? null + : NSURLRequest._(_ret, _lib, retain: true, release: true); } - void enumerateMatchesInString_options_range_usingBlock_( - NSString? string, - int options, - _NSRange range, - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool block) { - _lib._objc_msgSend_892( - _id, - _lib._sel_enumerateMatchesInString_options_range_usingBlock_1, - string?._id ?? ffi.nullptr, - options, - range, - block._id); + NSURLRequest? get currentRequest { + final _ret = _lib._objc_msgSend_795(_id, _lib._sel_currentRequest1); + return _ret.address == 0 + ? null + : NSURLRequest._(_ret, _lib, retain: true, release: true); } - NSArray matchesInString_options_range_( - NSString? string, int options, _NSRange range) { - final _ret = _lib._objc_msgSend_893( - _id, - _lib._sel_matchesInString_options_range_1, - string?._id ?? ffi.nullptr, - options, - range); - return NSArray._(_ret, _lib, retain: true, release: true); + void start() { + _lib._objc_msgSend_1(_id, _lib._sel_start1); } - int numberOfMatchesInString_options_range_( - NSString? string, int options, _NSRange range) { - return _lib._objc_msgSend_894( - _id, - _lib._sel_numberOfMatchesInString_options_range_1, - string?._id ?? ffi.nullptr, - options, - range); + void cancel() { + _lib._objc_msgSend_1(_id, _lib._sel_cancel1); } - NSTextCheckingResult firstMatchInString_options_range_( - NSString? string, int options, _NSRange range) { - final _ret = _lib._objc_msgSend_895( - _id, - _lib._sel_firstMatchInString_options_range_1, - string?._id ?? ffi.nullptr, - options, - range); - return NSTextCheckingResult._(_ret, _lib, retain: true, release: true); + void scheduleInRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_scheduleInRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); } - void rangeOfFirstMatchInString_options_range_(ffi.Pointer<_NSRange> stret, - NSString? string, int options, _NSRange range) { - _lib._objc_msgSend_896( - stret, - _id, - _lib._sel_rangeOfFirstMatchInString_options_range_1, - string?._id ?? ffi.nullptr, - options, - range); + void unscheduleFromRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_unscheduleFromRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); } - NSString stringByReplacingMatchesInString_options_range_withTemplate_( - NSString? string, int options, _NSRange range, NSString? templ) { - final _ret = _lib._objc_msgSend_897( - _id, - _lib._sel_stringByReplacingMatchesInString_options_range_withTemplate_1, - string?._id ?? ffi.nullptr, - options, - range, - templ?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + void setDelegateQueue_(NSOperationQueue? queue) { + _lib._objc_msgSend_894( + _id, _lib._sel_setDelegateQueue_1, queue?._id ?? ffi.nullptr); } - int replaceMatchesInString_options_range_withTemplate_( - NSMutableString? string, int options, _NSRange range, NSString? templ) { - return _lib._objc_msgSend_898( - _id, - _lib._sel_replaceMatchesInString_options_range_withTemplate_1, - string?._id ?? ffi.nullptr, - options, - range, - templ?._id ?? ffi.nullptr); + static bool canHandleRequest_(SentryCocoa _lib, NSURLRequest? request) { + return _lib._objc_msgSend_895(_lib._class_NSURLConnection1, + _lib._sel_canHandleRequest_1, request?._id ?? ffi.nullptr); } - NSString replacementStringForResult_inString_offset_template_( - NSTextCheckingResult? result, - NSString? string, - int offset, - NSString? templ) { - final _ret = _lib._objc_msgSend_899( - _id, - _lib._sel_replacementStringForResult_inString_offset_template_1, - result?._id ?? ffi.nullptr, - string?._id ?? ffi.nullptr, - offset, - templ?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + static NSData sendSynchronousRequest_returningResponse_error_( + SentryCocoa _lib, + NSURLRequest? request, + ffi.Pointer> response, + ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_896( + _lib._class_NSURLConnection1, + _lib._sel_sendSynchronousRequest_returningResponse_error_1, + request?._id ?? ffi.nullptr, + response, + error); + return NSData._(_ret, _lib, retain: true, release: true); } - static NSString escapedTemplateForString_( - SentryCocoa _lib, NSString? string) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSRegularExpression1, - _lib._sel_escapedTemplateForString_1, string?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + static void sendAsynchronousRequest_queue_completionHandler_( + SentryCocoa _lib, + NSURLRequest? request, + NSOperationQueue? queue, + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError handler) { + _lib._objc_msgSend_897( + _lib._class_NSURLConnection1, + _lib._sel_sendAsynchronousRequest_queue_completionHandler_1, + request?._id ?? ffi.nullptr, + queue?._id ?? ffi.nullptr, + handler._id); } @override - NSRegularExpression init() { + NSURLConnection init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSRegularExpression._(_ret, _lib, retain: true, release: true); + return NSURLConnection._(_ret, _lib, retain: true, release: true); } - static NSRegularExpression new1(SentryCocoa _lib) { + static NSURLConnection new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSRegularExpression1, _lib._sel_new1); - return NSRegularExpression._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLConnection1, _lib._sel_new1); + return NSURLConnection._(_ret, _lib, retain: false, release: true); } - static NSRegularExpression allocWithZone_( + static NSURLConnection allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSRegularExpression1, _lib._sel_allocWithZone_1, zone); - return NSRegularExpression._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLConnection1, _lib._sel_allocWithZone_1, zone); + return NSURLConnection._(_ret, _lib, retain: false, release: true); } - static NSRegularExpression alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSRegularExpression1, _lib._sel_alloc1); - return NSRegularExpression._(_ret, _lib, retain: false, release: true); + static NSURLConnection alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLConnection1, _lib._sel_alloc1); + return NSURLConnection._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -63401,7 +63247,7 @@ class NSRegularExpression extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSRegularExpression1, + _lib._class_NSURLConnection1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -63410,24 +63256,24 @@ class NSRegularExpression extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSRegularExpression1, + _lib._objc_msgSend_15(_lib._class_NSURLConnection1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSRegularExpression1, + return _lib._objc_msgSend_12(_lib._class_NSURLConnection1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSRegularExpression1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLConnection1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSRegularExpression1, + _lib._class_NSURLConnection1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -63436,7 +63282,7 @@ class NSRegularExpression extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSRegularExpression1, + _lib._class_NSURLConnection1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -63444,98 +63290,81 @@ class NSRegularExpression extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSRegularExpression1, + _lib._class_NSURLConnection1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSRegularExpression1, + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLConnection1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSRegularExpression1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSURLConnection1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSRegularExpressionOptions { - static const int NSRegularExpressionCaseInsensitive = 1; - static const int NSRegularExpressionAllowCommentsAndWhitespace = 2; - static const int NSRegularExpressionIgnoreMetacharacters = 4; - static const int NSRegularExpressionDotMatchesLineSeparators = 8; - static const int NSRegularExpressionAnchorsMatchLines = 16; - static const int NSRegularExpressionUseUnixLineSeparators = 32; - static const int NSRegularExpressionUseUnicodeWordBoundaries = 64; -} - -abstract class NSMatchingOptions { - static const int NSMatchingReportProgress = 1; - static const int NSMatchingReportCompletion = 2; - static const int NSMatchingAnchored = 4; - static const int NSMatchingWithTransparentBounds = 8; - static const int NSMatchingWithoutAnchoringBounds = 16; -} - -void - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) { +void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { return block.ref.target .cast< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Int32 arg1, - ffi.Pointer arg2)>>() + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() .asFunction< - void Function(ffi.Pointer arg0, int arg1, - ffi.Pointer arg2)>()(arg0, arg1, arg2); + void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); } -final _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry = +final _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry = {}; -int _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex = - 0; +int _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex = 0; ffi.Pointer - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( Function fn) { final id = - ++_ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ - id] = fn; + ++_ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2) { - return (_ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureRegistry[ +void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[ block.ref.target.address] - as void Function(ffi.Pointer, int, - ffi.Pointer))(arg0, arg1, arg2); + as void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer))(arg0, arg1, arg2); } -class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool - extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool._( +class ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError._( ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) : super._(id, lib, retain: false, release: true); /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunctionPointer( + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunctionPointer( SentryCocoa lib, ffi.Pointer< ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Int32 arg1, ffi.Pointer arg2)>> + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> ptr) : this._( lib._newBlock1( @@ -63543,19 +63372,19 @@ class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool ffi.Void Function( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, - ffi.Int32 arg1, - ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_fnPtrTrampoline) + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline) .cast(), ptr.cast()), lib); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool.fromFunction( + ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunction( SentryCocoa lib, - void Function(ffi.Pointer arg0, int arg1, - ffi.Pointer arg2) + void Function(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) fn) : this._( lib._newBlock1( @@ -63563,192 +63392,174 @@ class ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool ffi.Void Function( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, - ffi.Int32 arg1, - ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_closureTrampoline) + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline) .cast(), - _ObjCBlock_ffiVoid_NSTextCheckingResult_NSMatchingFlags_bool_registerClosure( + _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( fn)), lib); static ffi.Pointer? _dartFuncTrampoline; - void call( - ffi.Pointer arg0, int arg1, ffi.Pointer arg2) { + void call(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) { return _id.ref.invoke .cast< ffi.NativeFunction< ffi.Void Function( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, - ffi.Int32 arg1, - ffi.Pointer arg2)>>() + ffi.Pointer arg1, + ffi.Pointer arg2)>>() .asFunction< void Function( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, - int arg1, - ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + ffi.Pointer arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); } } -abstract class NSMatchingFlags { - static const int NSMatchingProgress = 1; - static const int NSMatchingCompleted = 2; - static const int NSMatchingHitEnd = 4; - static const int NSMatchingRequiredEnd = 8; - static const int NSMatchingInternalError = 16; -} - -class NSURLCache extends NSObject { - NSURLCache._(ffi.Pointer id, SentryCocoa lib, +class NSURLCredential extends NSObject { + NSURLCredential._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLCache] that points to the same underlying object as [other]. - static NSURLCache castFrom(T other) { - return NSURLCache._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSURLCredential] that points to the same underlying object as [other]. + static NSURLCredential castFrom(T other) { + return NSURLCredential._(other._id, other._lib, + retain: true, release: true); } - /// Returns a [NSURLCache] that wraps the given raw object pointer. - static NSURLCache castFromPointer( + /// Returns a [NSURLCredential] that wraps the given raw object pointer. + static NSURLCredential castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLCache._(other, lib, retain: retain, release: release); + return NSURLCredential._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLCache]. + /// Returns whether [obj] is an instance of [NSURLCredential]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLCache1); - } - - static NSURLCache? getSharedURLCache(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_912( - _lib._class_NSURLCache1, _lib._sel_sharedURLCache1); - return _ret.address == 0 - ? null - : NSURLCache._(_ret, _lib, retain: true, release: true); - } - - static void setSharedURLCache(SentryCocoa _lib, NSURLCache? value) { - return _lib._objc_msgSend_913(_lib._class_NSURLCache1, - _lib._sel_setSharedURLCache_1, value?._id ?? ffi.nullptr); + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLCredential1); } - NSURLCache initWithMemoryCapacity_diskCapacity_diskPath_( - int memoryCapacity, int diskCapacity, NSString? path) { - final _ret = _lib._objc_msgSend_914( - _id, - _lib._sel_initWithMemoryCapacity_diskCapacity_diskPath_1, - memoryCapacity, - diskCapacity, - path?._id ?? ffi.nullptr); - return NSURLCache._(_ret, _lib, retain: true, release: true); + int get persistence { + return _lib._objc_msgSend_898(_id, _lib._sel_persistence1); } - NSURLCache initWithMemoryCapacity_diskCapacity_directoryURL_( - int memoryCapacity, int diskCapacity, NSURL? directoryURL) { - final _ret = _lib._objc_msgSend_915( + NSURLCredential initWithUser_password_persistence_( + NSString? user, NSString? password, int persistence) { + final _ret = _lib._objc_msgSend_899( _id, - _lib._sel_initWithMemoryCapacity_diskCapacity_directoryURL_1, - memoryCapacity, - diskCapacity, - directoryURL?._id ?? ffi.nullptr); - return NSURLCache._(_ret, _lib, retain: true, release: true); - } - - NSCachedURLResponse cachedResponseForRequest_(NSURLRequest? request) { - final _ret = _lib._objc_msgSend_919( - _id, _lib._sel_cachedResponseForRequest_1, request?._id ?? ffi.nullptr); - return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); - } - - void storeCachedResponse_forRequest_( - NSCachedURLResponse? cachedResponse, NSURLRequest? request) { - _lib._objc_msgSend_920(_id, _lib._sel_storeCachedResponse_forRequest_1, - cachedResponse?._id ?? ffi.nullptr, request?._id ?? ffi.nullptr); - } - - void removeCachedResponseForRequest_(NSURLRequest? request) { - _lib._objc_msgSend_921(_id, _lib._sel_removeCachedResponseForRequest_1, - request?._id ?? ffi.nullptr); - } - - void removeAllCachedResponses() { - _lib._objc_msgSend_1(_id, _lib._sel_removeAllCachedResponses1); + _lib._sel_initWithUser_password_persistence_1, + user?._id ?? ffi.nullptr, + password?._id ?? ffi.nullptr, + persistence); + return NSURLCredential._(_ret, _lib, retain: true, release: true); } - void removeCachedResponsesSinceDate_(NSDate? date) { - _lib._objc_msgSend_504(_id, _lib._sel_removeCachedResponsesSinceDate_1, - date?._id ?? ffi.nullptr); + static NSURLCredential credentialWithUser_password_persistence_( + SentryCocoa _lib, NSString? user, NSString? password, int persistence) { + final _ret = _lib._objc_msgSend_900( + _lib._class_NSURLCredential1, + _lib._sel_credentialWithUser_password_persistence_1, + user?._id ?? ffi.nullptr, + password?._id ?? ffi.nullptr, + persistence); + return NSURLCredential._(_ret, _lib, retain: true, release: true); } - int get memoryCapacity { - return _lib._objc_msgSend_10(_id, _lib._sel_memoryCapacity1); + NSString? get user { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_user1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - set memoryCapacity(int value) { - return _lib._objc_msgSend_483(_id, _lib._sel_setMemoryCapacity_1, value); + NSString? get password { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_password1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - int get diskCapacity { - return _lib._objc_msgSend_10(_id, _lib._sel_diskCapacity1); + bool get hasPassword { + return _lib._objc_msgSend_12(_id, _lib._sel_hasPassword1); } - set diskCapacity(int value) { - return _lib._objc_msgSend_483(_id, _lib._sel_setDiskCapacity_1, value); + NSURLCredential initWithIdentity_certificates_persistence_( + ffi.Pointer<__SecIdentity> identity, + NSArray? certArray, + int persistence) { + final _ret = _lib._objc_msgSend_901( + _id, + _lib._sel_initWithIdentity_certificates_persistence_1, + identity, + certArray?._id ?? ffi.nullptr, + persistence); + return NSURLCredential._(_ret, _lib, retain: true, release: true); } - int get currentMemoryUsage { - return _lib._objc_msgSend_10(_id, _lib._sel_currentMemoryUsage1); + static NSURLCredential credentialWithIdentity_certificates_persistence_( + SentryCocoa _lib, + ffi.Pointer<__SecIdentity> identity, + NSArray? certArray, + int persistence) { + final _ret = _lib._objc_msgSend_902( + _lib._class_NSURLCredential1, + _lib._sel_credentialWithIdentity_certificates_persistence_1, + identity, + certArray?._id ?? ffi.nullptr, + persistence); + return NSURLCredential._(_ret, _lib, retain: true, release: true); } - int get currentDiskUsage { - return _lib._objc_msgSend_10(_id, _lib._sel_currentDiskUsage1); + ffi.Pointer<__SecIdentity> get identity { + return _lib._objc_msgSend_903(_id, _lib._sel_identity1); } - void storeCachedResponse_forDataTask_( - NSCachedURLResponse? cachedResponse, NSURLSessionDataTask? dataTask) { - _lib._objc_msgSend_922(_id, _lib._sel_storeCachedResponse_forDataTask_1, - cachedResponse?._id ?? ffi.nullptr, dataTask?._id ?? ffi.nullptr); + NSArray? get certificates { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_certificates1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - void getCachedResponseForDataTask_completionHandler_( - NSURLSessionDataTask? dataTask, - ObjCBlock_ffiVoid_NSCachedURLResponse completionHandler) { - _lib._objc_msgSend_923( - _id, - _lib._sel_getCachedResponseForDataTask_completionHandler_1, - dataTask?._id ?? ffi.nullptr, - completionHandler._id); + NSURLCredential initWithTrust_(ffi.Pointer<__SecTrust> trust) { + final _ret = _lib._objc_msgSend_904(_id, _lib._sel_initWithTrust_1, trust); + return NSURLCredential._(_ret, _lib, retain: true, release: true); } - void removeCachedResponseForDataTask_(NSURLSessionDataTask? dataTask) { - _lib._objc_msgSend_924(_id, _lib._sel_removeCachedResponseForDataTask_1, - dataTask?._id ?? ffi.nullptr); + static NSURLCredential credentialForTrust_( + SentryCocoa _lib, ffi.Pointer<__SecTrust> trust) { + final _ret = _lib._objc_msgSend_905( + _lib._class_NSURLCredential1, _lib._sel_credentialForTrust_1, trust); + return NSURLCredential._(_ret, _lib, retain: true, release: true); } @override - NSURLCache init() { + NSURLCredential init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLCache._(_ret, _lib, retain: true, release: true); + return NSURLCredential._(_ret, _lib, retain: true, release: true); } - static NSURLCache new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLCache1, _lib._sel_new1); - return NSURLCache._(_ret, _lib, retain: false, release: true); + static NSURLCredential new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSURLCredential1, _lib._sel_new1); + return NSURLCredential._(_ret, _lib, retain: false, release: true); } - static NSURLCache allocWithZone_( + static NSURLCredential allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLCache1, _lib._sel_allocWithZone_1, zone); - return NSURLCache._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLCredential1, _lib._sel_allocWithZone_1, zone); + return NSURLCredential._(_ret, _lib, retain: false, release: true); } - static NSURLCache alloc(SentryCocoa _lib) { + static NSURLCredential alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLCache1, _lib._sel_alloc1); - return NSURLCache._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLCredential1, _lib._sel_alloc1); + return NSURLCredential._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -63757,7 +63568,7 @@ class NSURLCache extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLCache1, + _lib._class_NSURLCredential1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -63766,24 +63577,24 @@ class NSURLCache extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLCache1, + _lib._objc_msgSend_15(_lib._class_NSURLCredential1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLCache1, _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12(_lib._class_NSURLCredential1, + _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLCache1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLCredential1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLCache1, + _lib._class_NSURLCredential1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -63792,7 +63603,7 @@ class NSURLCache extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLCache1, + _lib._class_NSURLCredential1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -63800,119 +63611,175 @@ class NSURLCache extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLCache1, + _lib._class_NSURLCredential1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_NSURLCache1, _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLCredential1, + _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCache1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSURLCredential1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSCachedURLResponse extends NSObject { - NSCachedURLResponse._(ffi.Pointer id, SentryCocoa lib, +abstract class NSURLCredentialPersistence { + static const int NSURLCredentialPersistenceNone = 0; + static const int NSURLCredentialPersistenceForSession = 1; + static const int NSURLCredentialPersistencePermanent = 2; + static const int NSURLCredentialPersistenceSynchronizable = 3; +} + +class __SecIdentity extends ffi.Opaque {} + +class __SecTrust extends ffi.Opaque {} + +class NSURLProtectionSpace extends NSObject { + NSURLProtectionSpace._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSCachedURLResponse] that points to the same underlying object as [other]. - static NSCachedURLResponse castFrom(T other) { - return NSCachedURLResponse._(other._id, other._lib, + /// Returns a [NSURLProtectionSpace] that points to the same underlying object as [other]. + static NSURLProtectionSpace castFrom(T other) { + return NSURLProtectionSpace._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSCachedURLResponse] that wraps the given raw object pointer. - static NSCachedURLResponse castFromPointer( + /// Returns a [NSURLProtectionSpace] that wraps the given raw object pointer. + static NSURLProtectionSpace castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSCachedURLResponse._(other, lib, retain: retain, release: release); + return NSURLProtectionSpace._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSCachedURLResponse]. + /// Returns whether [obj] is an instance of [NSURLProtectionSpace]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSCachedURLResponse1); + obj._lib._class_NSURLProtectionSpace1); } - NSCachedURLResponse initWithResponse_data_( - NSURLResponse? response, NSData? data) { - final _ret = _lib._objc_msgSend_916(_id, _lib._sel_initWithResponse_data_1, - response?._id ?? ffi.nullptr, data?._id ?? ffi.nullptr); - return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + NSURLProtectionSpace initWithHost_port_protocol_realm_authenticationMethod_( + NSString? host, + int port, + NSString? protocol, + NSString? realm, + NSString? authenticationMethod) { + final _ret = _lib._objc_msgSend_906( + _id, + _lib._sel_initWithHost_port_protocol_realm_authenticationMethod_1, + host?._id ?? ffi.nullptr, + port, + protocol?._id ?? ffi.nullptr, + realm?._id ?? ffi.nullptr, + authenticationMethod?._id ?? ffi.nullptr); + return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); } - NSCachedURLResponse initWithResponse_data_userInfo_storagePolicy_( - NSURLResponse? response, - NSData? data, - NSDictionary? userInfo, - int storagePolicy) { - final _ret = _lib._objc_msgSend_917( + NSURLProtectionSpace initWithProxyHost_port_type_realm_authenticationMethod_( + NSString? host, + int port, + NSString? type, + NSString? realm, + NSString? authenticationMethod) { + final _ret = _lib._objc_msgSend_906( _id, - _lib._sel_initWithResponse_data_userInfo_storagePolicy_1, - response?._id ?? ffi.nullptr, - data?._id ?? ffi.nullptr, - userInfo?._id ?? ffi.nullptr, - storagePolicy); - return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + _lib._sel_initWithProxyHost_port_type_realm_authenticationMethod_1, + host?._id ?? ffi.nullptr, + port, + type?._id ?? ffi.nullptr, + realm?._id ?? ffi.nullptr, + authenticationMethod?._id ?? ffi.nullptr); + return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); } - NSURLResponse? get response { - final _ret = _lib._objc_msgSend_831(_id, _lib._sel_response1); + NSString? get realm { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_realm1); return _ret.address == 0 ? null - : NSURLResponse._(_ret, _lib, retain: true, release: true); + : NSString._(_ret, _lib, retain: true, release: true); } - NSData? get data { - final _ret = _lib._objc_msgSend_39(_id, _lib._sel_data1); + bool get receivesCredentialSecurely { + return _lib._objc_msgSend_12(_id, _lib._sel_receivesCredentialSecurely1); + } + + bool get isProxy { + return _lib._objc_msgSend_12(_id, _lib._sel_isProxy1); + } + + NSString? get host { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_host1); return _ret.address == 0 ? null - : NSData._(_ret, _lib, retain: true, release: true); + : NSString._(_ret, _lib, retain: true, release: true); } - NSDictionary? get userInfo { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_userInfo1); + int get port { + return _lib._objc_msgSend_78(_id, _lib._sel_port1); + } + + NSString? get proxyType { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_proxyType1); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : NSString._(_ret, _lib, retain: true, release: true); } - int get storagePolicy { - return _lib._objc_msgSend_918(_id, _lib._sel_storagePolicy1); + NSString? get protocol { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_protocol1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get authenticationMethod { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_authenticationMethod1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray? get distinguishedNames { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_distinguishedNames1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + ffi.Pointer<__SecTrust> get serverTrust { + return _lib._objc_msgSend_907(_id, _lib._sel_serverTrust1); } @override - NSCachedURLResponse init() { + NSURLProtectionSpace init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); } - static NSCachedURLResponse new1(SentryCocoa _lib) { + static NSURLProtectionSpace new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSCachedURLResponse1, _lib._sel_new1); - return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLProtectionSpace1, _lib._sel_new1); + return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); } - static NSCachedURLResponse allocWithZone_( + static NSURLProtectionSpace allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSCachedURLResponse1, _lib._sel_allocWithZone_1, zone); - return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLProtectionSpace1, _lib._sel_allocWithZone_1, zone); + return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); } - static NSCachedURLResponse alloc(SentryCocoa _lib) { + static NSURLProtectionSpace alloc(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSCachedURLResponse1, _lib._sel_alloc1); - return NSCachedURLResponse._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLProtectionSpace1, _lib._sel_alloc1); + return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -63921,7 +63788,7 @@ class NSCachedURLResponse extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSCachedURLResponse1, + _lib._class_NSURLProtectionSpace1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -63930,24 +63797,24 @@ class NSCachedURLResponse extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSCachedURLResponse1, + _lib._objc_msgSend_15(_lib._class_NSURLProtectionSpace1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSCachedURLResponse1, + return _lib._objc_msgSend_12(_lib._class_NSURLProtectionSpace1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSCachedURLResponse1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLProtectionSpace1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSCachedURLResponse1, + _lib._class_NSURLProtectionSpace1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -63956,7 +63823,7 @@ class NSCachedURLResponse extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSCachedURLResponse1, + _lib._class_NSURLProtectionSpace1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -63964,78 +63831,194 @@ class NSCachedURLResponse extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSCachedURLResponse1, + _lib._class_NSURLProtectionSpace1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSCachedURLResponse1, + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLProtectionSpace1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSCachedURLResponse1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSURLProtectionSpace1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } -} - -abstract class NSURLCacheStoragePolicy { - static const int NSURLCacheStorageAllowed = 0; - static const int NSURLCacheStorageAllowedInMemoryOnly = 1; - static const int NSURLCacheStorageNotAllowed = 2; -} +} + +class NSURLCredentialStorage extends NSObject { + NSURLCredentialStorage._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLCredentialStorage] that points to the same underlying object as [other]. + static NSURLCredentialStorage castFrom(T other) { + return NSURLCredentialStorage._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLCredentialStorage] that wraps the given raw object pointer. + static NSURLCredentialStorage castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLCredentialStorage._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLCredentialStorage]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLCredentialStorage1); + } + + static NSURLCredentialStorage? getSharedCredentialStorage(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_908(_lib._class_NSURLCredentialStorage1, + _lib._sel_sharedCredentialStorage1); + return _ret.address == 0 + ? null + : NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + } + + NSDictionary credentialsForProtectionSpace_(NSURLProtectionSpace? space) { + final _ret = _lib._objc_msgSend_909(_id, + _lib._sel_credentialsForProtectionSpace_1, space?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); + } + + NSDictionary? get allCredentials { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_allCredentials1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + void setCredential_forProtectionSpace_( + NSURLCredential? credential, NSURLProtectionSpace? space) { + _lib._objc_msgSend_910(_id, _lib._sel_setCredential_forProtectionSpace_1, + credential?._id ?? ffi.nullptr, space?._id ?? ffi.nullptr); + } + + void removeCredential_forProtectionSpace_( + NSURLCredential? credential, NSURLProtectionSpace? space) { + _lib._objc_msgSend_910(_id, _lib._sel_removeCredential_forProtectionSpace_1, + credential?._id ?? ffi.nullptr, space?._id ?? ffi.nullptr); + } + + void removeCredential_forProtectionSpace_options_(NSURLCredential? credential, + NSURLProtectionSpace? space, NSDictionary? options) { + _lib._objc_msgSend_911( + _id, + _lib._sel_removeCredential_forProtectionSpace_options_1, + credential?._id ?? ffi.nullptr, + space?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr); + } + + NSURLCredential defaultCredentialForProtectionSpace_( + NSURLProtectionSpace? space) { + final _ret = _lib._objc_msgSend_912( + _id, + _lib._sel_defaultCredentialForProtectionSpace_1, + space?._id ?? ffi.nullptr); + return NSURLCredential._(_ret, _lib, retain: true, release: true); + } + + void setDefaultCredential_forProtectionSpace_( + NSURLCredential? credential, NSURLProtectionSpace? space) { + _lib._objc_msgSend_910( + _id, + _lib._sel_setDefaultCredential_forProtectionSpace_1, + credential?._id ?? ffi.nullptr, + space?._id ?? ffi.nullptr); + } + + void getCredentialsForProtectionSpace_task_completionHandler_( + NSURLProtectionSpace? protectionSpace, + NSURLSessionTask? task, + ObjCBlock_ffiVoid_NSDictionary completionHandler) { + _lib._objc_msgSend_913( + _id, + _lib._sel_getCredentialsForProtectionSpace_task_completionHandler_1, + protectionSpace?._id ?? ffi.nullptr, + task?._id ?? ffi.nullptr, + completionHandler._id); + } -class NSURLSessionDataTask extends NSURLSessionTask { - NSURLSessionDataTask._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + void setCredential_forProtectionSpace_task_(NSURLCredential? credential, + NSURLProtectionSpace? protectionSpace, NSURLSessionTask? task) { + _lib._objc_msgSend_914( + _id, + _lib._sel_setCredential_forProtectionSpace_task_1, + credential?._id ?? ffi.nullptr, + protectionSpace?._id ?? ffi.nullptr, + task?._id ?? ffi.nullptr); + } - /// Returns a [NSURLSessionDataTask] that points to the same underlying object as [other]. - static NSURLSessionDataTask castFrom(T other) { - return NSURLSessionDataTask._(other._id, other._lib, - retain: true, release: true); + void removeCredential_forProtectionSpace_options_task_( + NSURLCredential? credential, + NSURLProtectionSpace? protectionSpace, + NSDictionary? options, + NSURLSessionTask? task) { + _lib._objc_msgSend_915( + _id, + _lib._sel_removeCredential_forProtectionSpace_options_task_1, + credential?._id ?? ffi.nullptr, + protectionSpace?._id ?? ffi.nullptr, + options?._id ?? ffi.nullptr, + task?._id ?? ffi.nullptr); } - /// Returns a [NSURLSessionDataTask] that wraps the given raw object pointer. - static NSURLSessionDataTask castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionDataTask._(other, lib, retain: retain, release: release); + void getDefaultCredentialForProtectionSpace_task_completionHandler_( + NSURLProtectionSpace? space, + NSURLSessionTask? task, + ObjCBlock_ffiVoid_NSURLCredential completionHandler) { + _lib._objc_msgSend_916( + _id, + _lib._sel_getDefaultCredentialForProtectionSpace_task_completionHandler_1, + space?._id ?? ffi.nullptr, + task?._id ?? ffi.nullptr, + completionHandler._id); } - /// Returns whether [obj] is an instance of [NSURLSessionDataTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionDataTask1); + void setDefaultCredential_forProtectionSpace_task_( + NSURLCredential? credential, + NSURLProtectionSpace? protectionSpace, + NSURLSessionTask? task) { + _lib._objc_msgSend_914( + _id, + _lib._sel_setDefaultCredential_forProtectionSpace_task_1, + credential?._id ?? ffi.nullptr, + protectionSpace?._id ?? ffi.nullptr, + task?._id ?? ffi.nullptr); } @override - NSURLSessionDataTask init() { + NSURLCredentialStorage init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + return NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); } - static NSURLSessionDataTask new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSessionDataTask1, _lib._sel_new1); - return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + static NSURLCredentialStorage new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLCredentialStorage1, _lib._sel_new1); + return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); } - static NSURLSessionDataTask allocWithZone_( + static NSURLCredentialStorage allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionDataTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLCredentialStorage1, _lib._sel_allocWithZone_1, zone); + return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); } - static NSURLSessionDataTask alloc(SentryCocoa _lib) { + static NSURLCredentialStorage alloc(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDataTask1, _lib._sel_alloc1); - return NSURLSessionDataTask._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLCredentialStorage1, _lib._sel_alloc1); + return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -64044,7 +64027,7 @@ class NSURLSessionDataTask extends NSURLSessionTask { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLSessionDataTask1, + _lib._class_NSURLCredentialStorage1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -64053,24 +64036,24 @@ class NSURLSessionDataTask extends NSURLSessionTask { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionDataTask1, + _lib._objc_msgSend_15(_lib._class_NSURLCredentialStorage1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionDataTask1, + return _lib._objc_msgSend_12(_lib._class_NSURLCredentialStorage1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLSessionDataTask1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLCredentialStorage1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLSessionDataTask1, + _lib._class_NSURLCredentialStorage1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -64079,7 +64062,7 @@ class NSURLSessionDataTask extends NSURLSessionTask { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLSessionDataTask1, + _lib._class_NSURLCredentialStorage1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -64087,26 +64070,26 @@ class NSURLSessionDataTask extends NSURLSessionTask { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLSessionDataTask1, + _lib._class_NSURLCredentialStorage1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionDataTask1, + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLCredentialStorage1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDataTask1, _lib._sel_classForKeyedUnarchiver1); + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLCredentialStorage1, + _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -void _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline( +void _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { return block.ref.target .cast< @@ -64114,29 +64097,98 @@ void _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline( .asFunction arg0)>()(arg0); } -final _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry = - {}; -int _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure( +final _ObjCBlock_ffiVoid_NSDictionary_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_registerClosure( Function fn) { - final id = ++_ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[id] = fn; + final id = ++_ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSDictionary_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline( +void _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return (_ObjCBlock_ffiVoid_NSCachedURLResponse_closureRegistry[block + return (_ObjCBlock_ffiVoid_NSDictionary_closureRegistry[block .ref.target.address] as void Function(ffi.Pointer))(arg0); } -class ObjCBlock_ffiVoid_NSCachedURLResponse extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSCachedURLResponse._( +class ObjCBlock_ffiVoid_NSDictionary extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSDictionary._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSDictionary.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSDictionary.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSDictionary_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); + } +} + +void _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} + +final _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[block + .ref.target.address] as void Function(ffi.Pointer))(arg0); +} + +class ObjCBlock_ffiVoid_NSURLCredential extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLCredential._( ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) : super._(id, lib, retain: false, release: true); /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunctionPointer( + ObjCBlock_ffiVoid_NSURLCredential.fromFunctionPointer( SentryCocoa lib, ffi.Pointer< ffi @@ -64147,23 +64199,23 @@ class ObjCBlock_ffiVoid_NSCachedURLResponse extends _ObjCBlockBase { _cFuncTrampoline ??= ffi.Pointer.fromFunction< ffi.Void Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSCachedURLResponse_fnPtrTrampoline) + _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline) .cast(), ptr.cast()), lib); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSCachedURLResponse.fromFunction( + ObjCBlock_ffiVoid_NSURLCredential.fromFunction( SentryCocoa lib, void Function(ffi.Pointer arg0) fn) : this._( lib._newBlock1( _dartFuncTrampoline ??= ffi.Pointer.fromFunction< ffi.Void Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSCachedURLResponse_closureTrampoline) + _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline) .cast(), - _ObjCBlock_ffiVoid_NSCachedURLResponse_registerClosure(fn)), + _ObjCBlock_ffiVoid_NSURLCredential_registerClosure(fn)), lib); static ffi.Pointer? _dartFuncTrampoline; void call(ffi.Pointer arg0) { @@ -64178,153 +64230,175 @@ class ObjCBlock_ffiVoid_NSCachedURLResponse extends _ObjCBlockBase { } } -class NSURLConnection extends NSObject { - NSURLConnection._(ffi.Pointer id, SentryCocoa lib, +class NSURLProtocol extends NSObject { + NSURLProtocol._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLConnection] that points to the same underlying object as [other]. - static NSURLConnection castFrom(T other) { - return NSURLConnection._(other._id, other._lib, - retain: true, release: true); + /// Returns a [NSURLProtocol] that points to the same underlying object as [other]. + static NSURLProtocol castFrom(T other) { + return NSURLProtocol._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLConnection] that wraps the given raw object pointer. - static NSURLConnection castFromPointer( + /// Returns a [NSURLProtocol] that wraps the given raw object pointer. + static NSURLProtocol castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLConnection._(other, lib, retain: retain, release: release); + return NSURLProtocol._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLConnection]. + /// Returns whether [obj] is an instance of [NSURLProtocol]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLConnection1); - } - - NSURLConnection initWithRequest_delegate_startImmediately_( - NSURLRequest? request, NSObject delegate, bool startImmediately) { - final _ret = _lib._objc_msgSend_925( - _id, - _lib._sel_initWithRequest_delegate_startImmediately_1, - request?._id ?? ffi.nullptr, - delegate._id, - startImmediately); - return NSURLConnection._(_ret, _lib, retain: true, release: true); + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLProtocol1); } - NSURLConnection initWithRequest_delegate_( - NSURLRequest? request, NSObject delegate) { - final _ret = _lib._objc_msgSend_926( + NSURLProtocol initWithRequest_cachedResponse_client_(NSURLRequest? request, + NSCachedURLResponse? cachedResponse, NSObject? client) { + final _ret = _lib._objc_msgSend_917( _id, - _lib._sel_initWithRequest_delegate_1, + _lib._sel_initWithRequest_cachedResponse_client_1, request?._id ?? ffi.nullptr, - delegate._id); - return NSURLConnection._(_ret, _lib, retain: true, release: true); + cachedResponse?._id ?? ffi.nullptr, + client?._id ?? ffi.nullptr); + return NSURLProtocol._(_ret, _lib, retain: true, release: true); } - static NSURLConnection connectionWithRequest_delegate_( - SentryCocoa _lib, NSURLRequest? request, NSObject delegate) { - final _ret = _lib._objc_msgSend_927( - _lib._class_NSURLConnection1, - _lib._sel_connectionWithRequest_delegate_1, - request?._id ?? ffi.nullptr, - delegate._id); - return NSURLConnection._(_ret, _lib, retain: true, release: true); + NSObject? get client { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_client1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); } - NSURLRequest? get originalRequest { - final _ret = _lib._objc_msgSend_829(_id, _lib._sel_originalRequest1); + NSURLRequest? get request { + final _ret = _lib._objc_msgSend_795(_id, _lib._sel_request1); return _ret.address == 0 ? null : NSURLRequest._(_ret, _lib, retain: true, release: true); } - NSURLRequest? get currentRequest { - final _ret = _lib._objc_msgSend_829(_id, _lib._sel_currentRequest1); + NSCachedURLResponse? get cachedResponse { + final _ret = _lib._objc_msgSend_918(_id, _lib._sel_cachedResponse1); return _ret.address == 0 ? null - : NSURLRequest._(_ret, _lib, retain: true, release: true); + : NSCachedURLResponse._(_ret, _lib, retain: true, release: true); } - void start() { - _lib._objc_msgSend_1(_id, _lib._sel_start1); + static bool canInitWithRequest_(SentryCocoa _lib, NSURLRequest? request) { + return _lib._objc_msgSend_895(_lib._class_NSURLProtocol1, + _lib._sel_canInitWithRequest_1, request?._id ?? ffi.nullptr); } - void cancel() { - _lib._objc_msgSend_1(_id, _lib._sel_cancel1); + static NSURLRequest canonicalRequestForRequest_( + SentryCocoa _lib, NSURLRequest? request) { + final _ret = _lib._objc_msgSend_919(_lib._class_NSURLProtocol1, + _lib._sel_canonicalRequestForRequest_1, request?._id ?? ffi.nullptr); + return NSURLRequest._(_ret, _lib, retain: true, release: true); } - void scheduleInRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { - _lib._objc_msgSend_533(_id, _lib._sel_scheduleInRunLoop_forMode_1, - aRunLoop?._id ?? ffi.nullptr, mode._id); + static bool requestIsCacheEquivalent_toRequest_( + SentryCocoa _lib, NSURLRequest? a, NSURLRequest? b) { + return _lib._objc_msgSend_920( + _lib._class_NSURLProtocol1, + _lib._sel_requestIsCacheEquivalent_toRequest_1, + a?._id ?? ffi.nullptr, + b?._id ?? ffi.nullptr); } - void unscheduleFromRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { - _lib._objc_msgSend_533(_id, _lib._sel_unscheduleFromRunLoop_forMode_1, - aRunLoop?._id ?? ffi.nullptr, mode._id); + void startLoading() { + _lib._objc_msgSend_1(_id, _lib._sel_startLoading1); } - void setDelegateQueue_(NSOperationQueue? queue) { + void stopLoading() { + _lib._objc_msgSend_1(_id, _lib._sel_stopLoading1); + } + + static NSObject propertyForKey_inRequest_( + SentryCocoa _lib, NSString? key, NSURLRequest? request) { + final _ret = _lib._objc_msgSend_921( + _lib._class_NSURLProtocol1, + _lib._sel_propertyForKey_inRequest_1, + key?._id ?? ffi.nullptr, + request?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static void setProperty_forKey_inRequest_(SentryCocoa _lib, NSObject value, + NSString? key, NSMutableURLRequest? request) { + _lib._objc_msgSend_927( + _lib._class_NSURLProtocol1, + _lib._sel_setProperty_forKey_inRequest_1, + value._id, + key?._id ?? ffi.nullptr, + request?._id ?? ffi.nullptr); + } + + static void removePropertyForKey_inRequest_( + SentryCocoa _lib, NSString? key, NSMutableURLRequest? request) { _lib._objc_msgSend_928( - _id, _lib._sel_setDelegateQueue_1, queue?._id ?? ffi.nullptr); + _lib._class_NSURLProtocol1, + _lib._sel_removePropertyForKey_inRequest_1, + key?._id ?? ffi.nullptr, + request?._id ?? ffi.nullptr); } - static bool canHandleRequest_(SentryCocoa _lib, NSURLRequest? request) { - return _lib._objc_msgSend_929(_lib._class_NSURLConnection1, - _lib._sel_canHandleRequest_1, request?._id ?? ffi.nullptr); + static bool registerClass_(SentryCocoa _lib, NSObject protocolClass) { + return _lib._objc_msgSend_0(_lib._class_NSURLProtocol1, + _lib._sel_registerClass_1, protocolClass._id); } - static NSData sendSynchronousRequest_returningResponse_error_( - SentryCocoa _lib, - NSURLRequest? request, - ffi.Pointer> response, - ffi.Pointer> error) { + static void unregisterClass_(SentryCocoa _lib, NSObject protocolClass) { + _lib._objc_msgSend_15(_lib._class_NSURLProtocol1, + _lib._sel_unregisterClass_1, protocolClass._id); + } + + static bool canInitWithTask_(SentryCocoa _lib, NSURLSessionTask? task) { + return _lib._objc_msgSend_929(_lib._class_NSURLProtocol1, + _lib._sel_canInitWithTask_1, task?._id ?? ffi.nullptr); + } + + NSURLProtocol initWithTask_cachedResponse_client_(NSURLSessionTask? task, + NSCachedURLResponse? cachedResponse, NSObject? client) { final _ret = _lib._objc_msgSend_930( - _lib._class_NSURLConnection1, - _lib._sel_sendSynchronousRequest_returningResponse_error_1, - request?._id ?? ffi.nullptr, - response, - error); - return NSData._(_ret, _lib, retain: true, release: true); + _id, + _lib._sel_initWithTask_cachedResponse_client_1, + task?._id ?? ffi.nullptr, + cachedResponse?._id ?? ffi.nullptr, + client?._id ?? ffi.nullptr); + return NSURLProtocol._(_ret, _lib, retain: true, release: true); } - static void sendAsynchronousRequest_queue_completionHandler_( - SentryCocoa _lib, - NSURLRequest? request, - NSOperationQueue? queue, - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError handler) { - _lib._objc_msgSend_931( - _lib._class_NSURLConnection1, - _lib._sel_sendAsynchronousRequest_queue_completionHandler_1, - request?._id ?? ffi.nullptr, - queue?._id ?? ffi.nullptr, - handler._id); + NSURLSessionTask? get task { + final _ret = _lib._objc_msgSend_931(_id, _lib._sel_task1); + return _ret.address == 0 + ? null + : NSURLSessionTask._(_ret, _lib, retain: true, release: true); } @override - NSURLConnection init() { + NSURLProtocol init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLConnection._(_ret, _lib, retain: true, release: true); + return NSURLProtocol._(_ret, _lib, retain: true, release: true); } - static NSURLConnection new1(SentryCocoa _lib) { + static NSURLProtocol new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLConnection1, _lib._sel_new1); - return NSURLConnection._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLProtocol1, _lib._sel_new1); + return NSURLProtocol._(_ret, _lib, retain: false, release: true); } - static NSURLConnection allocWithZone_( + static NSURLProtocol allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLConnection1, _lib._sel_allocWithZone_1, zone); - return NSURLConnection._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLProtocol1, _lib._sel_allocWithZone_1, zone); + return NSURLProtocol._(_ret, _lib, retain: false, release: true); } - static NSURLConnection alloc(SentryCocoa _lib) { + static NSURLProtocol alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLConnection1, _lib._sel_alloc1); - return NSURLConnection._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLProtocol1, _lib._sel_alloc1); + return NSURLProtocol._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -64333,7 +64407,7 @@ class NSURLConnection extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLConnection1, + _lib._class_NSURLProtocol1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -64342,310 +64416,343 @@ class NSURLConnection extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLConnection1, + _lib._objc_msgSend_15(_lib._class_NSURLProtocol1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLConnection1, - _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12( + _lib._class_NSURLProtocol1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLConnection1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLProtocol1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLConnection1, + _lib._class_NSURLProtocol1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SentryCocoa _lib, NSString? key) { - return _lib._objc_msgSend_59( - _lib._class_NSURLConnection1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key?._id ?? ffi.nullptr); + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLProtocol1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLProtocol1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSURLProtocol1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLProtocol1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +class NSMutableURLRequest extends NSURLRequest { + NSMutableURLRequest._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSMutableURLRequest] that points to the same underlying object as [other]. + static NSMutableURLRequest castFrom(T other) { + return NSMutableURLRequest._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSMutableURLRequest] that wraps the given raw object pointer. + static NSMutableURLRequest castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSMutableURLRequest._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSMutableURLRequest]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSMutableURLRequest1); + } + + @override + NSURL? get URL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + set URL(NSURL? value) { + return _lib._objc_msgSend_621( + _id, _lib._sel_setURL_1, value?._id ?? ffi.nullptr); + } + + @override + int get cachePolicy { + return _lib._objc_msgSend_782(_id, _lib._sel_cachePolicy1); + } + + set cachePolicy(int value) { + return _lib._objc_msgSend_922(_id, _lib._sel_setCachePolicy_1, value); + } + + @override + double get timeoutInterval { + return _lib._objc_msgSend_155(_id, _lib._sel_timeoutInterval1); + } + + set timeoutInterval(double value) { + return _lib._objc_msgSend_506(_id, _lib._sel_setTimeoutInterval_1, value); + } + + @override + NSURL? get mainDocumentURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_mainDocumentURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); + } + + set mainDocumentURL(NSURL? value) { + return _lib._objc_msgSend_621( + _id, _lib._sel_setMainDocumentURL_1, value?._id ?? ffi.nullptr); + } + + @override + int get networkServiceType { + return _lib._objc_msgSend_783(_id, _lib._sel_networkServiceType1); + } + + set networkServiceType(int value) { + return _lib._objc_msgSend_923( + _id, _lib._sel_setNetworkServiceType_1, value); + } + + @override + bool get allowsCellularAccess { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); + } + + set allowsCellularAccess(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAllowsCellularAccess_1, value); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { - _lib._objc_msgSend_82( - _lib._class_NSURLConnection1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys?._id ?? ffi.nullptr, - dependentKey?._id ?? ffi.nullptr); + @override + bool get allowsExpensiveNetworkAccess { + return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); } - static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSURLConnection1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + set allowsExpensiveNetworkAccess(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAllowsExpensiveNetworkAccess_1, value); } - static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLConnection1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + bool get allowsConstrainedNetworkAccess { + return _lib._objc_msgSend_12( + _id, _lib._sel_allowsConstrainedNetworkAccess1); } -} -void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) { - return block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>()(arg0, arg1, arg2); -} + set allowsConstrainedNetworkAccess(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAllowsConstrainedNetworkAccess_1, value); + } -final _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry = - {}; -int _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( - Function fn) { - final id = - ++_ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + @override + bool get assumesHTTP3Capable { + return _lib._objc_msgSend_12(_id, _lib._sel_assumesHTTP3Capable1); + } -void _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) { - return (_ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureRegistry[ - block.ref.target.address] - as void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer))(arg0, arg1, arg2); -} + set assumesHTTP3Capable(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setAssumesHTTP3Capable_1, value); + } -class ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError._( - ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); + @override + int get attribution { + return _lib._objc_msgSend_784(_id, _lib._sel_attribution1); + } - /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunctionPointer( - SentryCocoa lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + set attribution(int value) { + return _lib._objc_msgSend_924(_id, _lib._sel_setAttribution_1, value); + } - /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError.fromFunction( - SentryCocoa lib, - void Function(ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) - fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURLResponse_NSData_NSError_registerClosure( - fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - void call(ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + @override + bool get requiresDNSSECValidation { + return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); } -} -class NSURLCredential extends NSObject { - NSURLCredential._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + set requiresDNSSECValidation(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setRequiresDNSSECValidation_1, value); + } - /// Returns a [NSURLCredential] that points to the same underlying object as [other]. - static NSURLCredential castFrom(T other) { - return NSURLCredential._(other._id, other._lib, - retain: true, release: true); + @override + NSString? get HTTPMethod { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_HTTPMethod1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - /// Returns a [NSURLCredential] that wraps the given raw object pointer. - static NSURLCredential castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLCredential._(other, lib, retain: retain, release: release); + set HTTPMethod(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setHTTPMethod_1, value?._id ?? ffi.nullptr); } - /// Returns whether [obj] is an instance of [NSURLCredential]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLCredential1); + @override + NSDictionary? get allHTTPHeaderFields { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_allHTTPHeaderFields1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); } - int get persistence { - return _lib._objc_msgSend_932(_id, _lib._sel_persistence1); + set allHTTPHeaderFields(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, _lib._sel_setAllHTTPHeaderFields_1, value?._id ?? ffi.nullptr); } - NSURLCredential initWithUser_password_persistence_( - NSString? user, NSString? password, int persistence) { - final _ret = _lib._objc_msgSend_933( - _id, - _lib._sel_initWithUser_password_persistence_1, - user?._id ?? ffi.nullptr, - password?._id ?? ffi.nullptr, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + void setValue_forHTTPHeaderField_(NSString? value, NSString? field) { + _lib._objc_msgSend_515(_id, _lib._sel_setValue_forHTTPHeaderField_1, + value?._id ?? ffi.nullptr, field?._id ?? ffi.nullptr); } - static NSURLCredential credentialWithUser_password_persistence_( - SentryCocoa _lib, NSString? user, NSString? password, int persistence) { - final _ret = _lib._objc_msgSend_934( - _lib._class_NSURLCredential1, - _lib._sel_credentialWithUser_password_persistence_1, - user?._id ?? ffi.nullptr, - password?._id ?? ffi.nullptr, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + void addValue_forHTTPHeaderField_(NSString? value, NSString? field) { + _lib._objc_msgSend_515(_id, _lib._sel_addValue_forHTTPHeaderField_1, + value?._id ?? ffi.nullptr, field?._id ?? ffi.nullptr); } - NSString? get user { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_user1); + @override + NSData? get HTTPBody { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_HTTPBody1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSData._(_ret, _lib, retain: true, release: true); } - NSString? get password { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_password1); + set HTTPBody(NSData? value) { + return _lib._objc_msgSend_925( + _id, _lib._sel_setHTTPBody_1, value?._id ?? ffi.nullptr); + } + + @override + NSInputStream? get HTTPBodyStream { + final _ret = _lib._objc_msgSend_794(_id, _lib._sel_HTTPBodyStream1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSInputStream._(_ret, _lib, retain: true, release: true); } - bool get hasPassword { - return _lib._objc_msgSend_12(_id, _lib._sel_hasPassword1); + set HTTPBodyStream(NSInputStream? value) { + return _lib._objc_msgSend_926( + _id, _lib._sel_setHTTPBodyStream_1, value?._id ?? ffi.nullptr); } - NSURLCredential initWithIdentity_certificates_persistence_( - ffi.Pointer<__SecIdentity> identity, - NSArray? certArray, - int persistence) { - final _ret = _lib._objc_msgSend_935( - _id, - _lib._sel_initWithIdentity_certificates_persistence_1, - identity, - certArray?._id ?? ffi.nullptr, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + @override + bool get HTTPShouldHandleCookies { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldHandleCookies1); } - static NSURLCredential credentialWithIdentity_certificates_persistence_( - SentryCocoa _lib, - ffi.Pointer<__SecIdentity> identity, - NSArray? certArray, - int persistence) { - final _ret = _lib._objc_msgSend_936( - _lib._class_NSURLCredential1, - _lib._sel_credentialWithIdentity_certificates_persistence_1, - identity, - certArray?._id ?? ffi.nullptr, - persistence); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + set HTTPShouldHandleCookies(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setHTTPShouldHandleCookies_1, value); } - ffi.Pointer<__SecIdentity> get identity { - return _lib._objc_msgSend_937(_id, _lib._sel_identity1); + @override + bool get HTTPShouldUsePipelining { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); } - NSArray? get certificates { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_certificates1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + set HTTPShouldUsePipelining(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setHTTPShouldUsePipelining_1, value); } - NSURLCredential initWithTrust_(ffi.Pointer<__SecTrust> trust) { - final _ret = _lib._objc_msgSend_938(_id, _lib._sel_initWithTrust_1, trust); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + static NSMutableURLRequest requestWithURL_(SentryCocoa _lib, NSURL? URL) { + final _ret = _lib._objc_msgSend_241(_lib._class_NSMutableURLRequest1, + _lib._sel_requestWithURL_1, URL?._id ?? ffi.nullptr); + return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); } - static NSURLCredential credentialForTrust_( - SentryCocoa _lib, ffi.Pointer<__SecTrust> trust) { - final _ret = _lib._objc_msgSend_939( - _lib._class_NSURLCredential1, _lib._sel_credentialForTrust_1, trust); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + static bool getSupportsSecureCoding(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSMutableURLRequest1, _lib._sel_supportsSecureCoding1); + } + + static NSMutableURLRequest requestWithURL_cachePolicy_timeoutInterval_( + SentryCocoa _lib, NSURL? URL, int cachePolicy, double timeoutInterval) { + final _ret = _lib._objc_msgSend_781( + _lib._class_NSMutableURLRequest1, + _lib._sel_requestWithURL_cachePolicy_timeoutInterval_1, + URL?._id ?? ffi.nullptr, + cachePolicy, + timeoutInterval); + return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); } @override - NSURLCredential init() { + NSMutableURLRequest initWithURL_(NSURL? URL) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithURL_1, URL?._id ?? ffi.nullptr); + return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableURLRequest initWithURL_cachePolicy_timeoutInterval_( + NSURL? URL, int cachePolicy, double timeoutInterval) { + final _ret = _lib._objc_msgSend_781( + _id, + _lib._sel_initWithURL_cachePolicy_timeoutInterval_1, + URL?._id ?? ffi.nullptr, + cachePolicy, + timeoutInterval); + return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + } + + @override + NSMutableURLRequest init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); } - static NSURLCredential new1(SentryCocoa _lib) { + static NSMutableURLRequest new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLCredential1, _lib._sel_new1); - return NSURLCredential._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSMutableURLRequest1, _lib._sel_new1); + return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); } - static NSURLCredential allocWithZone_( + static NSMutableURLRequest allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLCredential1, _lib._sel_allocWithZone_1, zone); - return NSURLCredential._(_ret, _lib, retain: false, release: true); + _lib._class_NSMutableURLRequest1, _lib._sel_allocWithZone_1, zone); + return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); } - static NSURLCredential alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLCredential1, _lib._sel_alloc1); - return NSURLCredential._(_ret, _lib, retain: false, release: true); + static NSMutableURLRequest alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSMutableURLRequest1, _lib._sel_alloc1); + return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -64654,7 +64761,7 @@ class NSURLCredential extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLCredential1, + _lib._class_NSMutableURLRequest1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -64663,24 +64770,24 @@ class NSURLCredential extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLCredential1, + _lib._objc_msgSend_15(_lib._class_NSMutableURLRequest1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLCredential1, + return _lib._objc_msgSend_12(_lib._class_NSMutableURLRequest1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLCredential1, _lib._sel_useStoredAccessor1); + _lib._class_NSMutableURLRequest1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLCredential1, + _lib._class_NSMutableURLRequest1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -64689,7 +64796,7 @@ class NSURLCredential extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLCredential1, + _lib._class_NSMutableURLRequest1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -64697,175 +64804,187 @@ class NSURLCredential extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLCredential1, + _lib._class_NSMutableURLRequest1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSURLCredential1, + final _ret = _lib._objc_msgSend_79(_lib._class_NSMutableURLRequest1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCredential1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSMutableURLRequest1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSURLCredentialPersistence { - static const int NSURLCredentialPersistenceNone = 0; - static const int NSURLCredentialPersistenceForSession = 1; - static const int NSURLCredentialPersistencePermanent = 2; - static const int NSURLCredentialPersistenceSynchronizable = 3; -} - -class __SecIdentity extends ffi.Opaque {} - -class __SecTrust extends ffi.Opaque {} - -class NSURLProtectionSpace extends NSObject { - NSURLProtectionSpace._(ffi.Pointer id, SentryCocoa lib, +class NSXMLParser extends NSObject { + NSXMLParser._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLProtectionSpace] that points to the same underlying object as [other]. - static NSURLProtectionSpace castFrom(T other) { - return NSURLProtectionSpace._(other._id, other._lib, - retain: true, release: true); + /// Returns a [NSXMLParser] that points to the same underlying object as [other]. + static NSXMLParser castFrom(T other) { + return NSXMLParser._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLProtectionSpace] that wraps the given raw object pointer. - static NSURLProtectionSpace castFromPointer( + /// Returns a [NSXMLParser] that wraps the given raw object pointer. + static NSXMLParser castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLProtectionSpace._(other, lib, retain: retain, release: release); + return NSXMLParser._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLProtectionSpace]. + /// Returns whether [obj] is an instance of [NSXMLParser]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLProtectionSpace1); + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLParser1); } - NSURLProtectionSpace initWithHost_port_protocol_realm_authenticationMethod_( - NSString? host, - int port, - NSString? protocol, - NSString? realm, - NSString? authenticationMethod) { - final _ret = _lib._objc_msgSend_940( - _id, - _lib._sel_initWithHost_port_protocol_realm_authenticationMethod_1, - host?._id ?? ffi.nullptr, - port, - protocol?._id ?? ffi.nullptr, - realm?._id ?? ffi.nullptr, - authenticationMethod?._id ?? ffi.nullptr); - return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + NSXMLParser initWithContentsOfURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_241( + _id, _lib._sel_initWithContentsOfURL_1, url?._id ?? ffi.nullptr); + return NSXMLParser._(_ret, _lib, retain: true, release: true); } - NSURLProtectionSpace initWithProxyHost_port_type_realm_authenticationMethod_( - NSString? host, - int port, - NSString? type, - NSString? realm, - NSString? authenticationMethod) { - final _ret = _lib._objc_msgSend_940( - _id, - _lib._sel_initWithProxyHost_port_type_realm_authenticationMethod_1, - host?._id ?? ffi.nullptr, - port, - type?._id ?? ffi.nullptr, - realm?._id ?? ffi.nullptr, - authenticationMethod?._id ?? ffi.nullptr); - return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + NSXMLParser initWithData_(NSData? data) { + final _ret = _lib._objc_msgSend_257( + _id, _lib._sel_initWithData_1, data?._id ?? ffi.nullptr); + return NSXMLParser._(_ret, _lib, retain: true, release: true); } - NSString? get realm { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_realm1); + NSXMLParser initWithStream_(NSInputStream? stream) { + final _ret = _lib._objc_msgSend_932( + _id, _lib._sel_initWithStream_1, stream?._id ?? ffi.nullptr); + return NSXMLParser._(_ret, _lib, retain: true, release: true); + } + + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSObject._(_ret, _lib, retain: true, release: true); } - bool get receivesCredentialSecurely { - return _lib._objc_msgSend_12(_id, _lib._sel_receivesCredentialSecurely1); + set delegate(NSObject? value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); } - bool get isProxy { - return _lib._objc_msgSend_12(_id, _lib._sel_isProxy1); + bool get shouldProcessNamespaces { + return _lib._objc_msgSend_12(_id, _lib._sel_shouldProcessNamespaces1); } - NSString? get host { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_host1); + set shouldProcessNamespaces(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setShouldProcessNamespaces_1, value); + } + + bool get shouldReportNamespacePrefixes { + return _lib._objc_msgSend_12(_id, _lib._sel_shouldReportNamespacePrefixes1); + } + + set shouldReportNamespacePrefixes(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setShouldReportNamespacePrefixes_1, value); + } + + int get externalEntityResolvingPolicy { + return _lib._objc_msgSend_933( + _id, _lib._sel_externalEntityResolvingPolicy1); + } + + set externalEntityResolvingPolicy(int value) { + return _lib._objc_msgSend_934( + _id, _lib._sel_setExternalEntityResolvingPolicy_1, value); + } + + NSSet? get allowedExternalEntityURLs { + final _ret = + _lib._objc_msgSend_295(_id, _lib._sel_allowedExternalEntityURLs1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSSet._(_ret, _lib, retain: true, release: true); } - int get port { - return _lib._objc_msgSend_78(_id, _lib._sel_port1); + set allowedExternalEntityURLs(NSSet? value) { + return _lib._objc_msgSend_935(_id, _lib._sel_setAllowedExternalEntityURLs_1, + value?._id ?? ffi.nullptr); } - NSString? get proxyType { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_proxyType1); + bool parse() { + return _lib._objc_msgSend_12(_id, _lib._sel_parse1); + } + + void abortParsing() { + _lib._objc_msgSend_1(_id, _lib._sel_abortParsing1); + } + + NSError? get parserError { + final _ret = _lib._objc_msgSend_298(_id, _lib._sel_parserError1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSError._(_ret, _lib, retain: true, release: true); + } + + bool get shouldResolveExternalEntities { + return _lib._objc_msgSend_12(_id, _lib._sel_shouldResolveExternalEntities1); + } + + set shouldResolveExternalEntities(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setShouldResolveExternalEntities_1, value); } - NSString? get protocol { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_protocol1); + NSString? get publicID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_publicID1); return _ret.address == 0 ? null : NSString._(_ret, _lib, retain: true, release: true); } - NSString? get authenticationMethod { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_authenticationMethod1); + NSString? get systemID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_systemID1); return _ret.address == 0 ? null : NSString._(_ret, _lib, retain: true, release: true); } - NSArray? get distinguishedNames { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_distinguishedNames1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + int get lineNumber { + return _lib._objc_msgSend_78(_id, _lib._sel_lineNumber1); } - ffi.Pointer<__SecTrust> get serverTrust { - return _lib._objc_msgSend_941(_id, _lib._sel_serverTrust1); + int get columnNumber { + return _lib._objc_msgSend_78(_id, _lib._sel_columnNumber1); } @override - NSURLProtectionSpace init() { + NSXMLParser init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLProtectionSpace._(_ret, _lib, retain: true, release: true); + return NSXMLParser._(_ret, _lib, retain: true, release: true); } - static NSURLProtectionSpace new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLProtectionSpace1, _lib._sel_new1); - return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + static NSXMLParser new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLParser1, _lib._sel_new1); + return NSXMLParser._(_ret, _lib, retain: false, release: true); } - static NSURLProtectionSpace allocWithZone_( + static NSXMLParser allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLProtectionSpace1, _lib._sel_allocWithZone_1, zone); - return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + _lib._class_NSXMLParser1, _lib._sel_allocWithZone_1, zone); + return NSXMLParser._(_ret, _lib, retain: false, release: true); } - static NSURLProtectionSpace alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLProtectionSpace1, _lib._sel_alloc1); - return NSURLProtectionSpace._(_ret, _lib, retain: false, release: true); + static NSXMLParser alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLParser1, _lib._sel_alloc1); + return NSXMLParser._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -64874,7 +64993,7 @@ class NSURLProtectionSpace extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLProtectionSpace1, + _lib._class_NSXMLParser1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -64883,24 +65002,24 @@ class NSURLProtectionSpace extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLProtectionSpace1, + _lib._objc_msgSend_15(_lib._class_NSXMLParser1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLProtectionSpace1, - _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12( + _lib._class_NSXMLParser1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLProtectionSpace1, _lib._sel_useStoredAccessor1); + _lib._class_NSXMLParser1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLProtectionSpace1, + _lib._class_NSXMLParser1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -64909,7 +65028,7 @@ class NSURLProtectionSpace extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLProtectionSpace1, + _lib._class_NSXMLParser1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -64917,574 +65036,703 @@ class NSURLProtectionSpace extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLProtectionSpace1, + _lib._class_NSXMLParser1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSURLProtectionSpace1, - _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79( + _lib._class_NSXMLParser1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLProtectionSpace1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSXMLParser1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSURLCredentialStorage extends NSObject { - NSURLCredentialStorage._(ffi.Pointer id, SentryCocoa lib, +abstract class NSXMLParserExternalEntityResolvingPolicy { + static const int NSXMLParserResolveExternalEntitiesNever = 0; + static const int NSXMLParserResolveExternalEntitiesNoNetwork = 1; + static const int NSXMLParserResolveExternalEntitiesSameOriginOnly = 2; + static const int NSXMLParserResolveExternalEntitiesAlways = 3; +} + +class NSFileWrapper extends NSObject { + NSFileWrapper._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLCredentialStorage] that points to the same underlying object as [other]. - static NSURLCredentialStorage castFrom(T other) { - return NSURLCredentialStorage._(other._id, other._lib, - retain: true, release: true); + /// Returns a [NSFileWrapper] that points to the same underlying object as [other]. + static NSFileWrapper castFrom(T other) { + return NSFileWrapper._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLCredentialStorage] that wraps the given raw object pointer. - static NSURLCredentialStorage castFromPointer( + /// Returns a [NSFileWrapper] that wraps the given raw object pointer. + static NSFileWrapper castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLCredentialStorage._(other, lib, - retain: retain, release: release); + return NSFileWrapper._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLCredentialStorage]. + /// Returns whether [obj] is an instance of [NSFileWrapper]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLCredentialStorage1); + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFileWrapper1); } - static NSURLCredentialStorage? getSharedCredentialStorage(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_942(_lib._class_NSURLCredentialStorage1, - _lib._sel_sharedCredentialStorage1); + NSFileWrapper initWithURL_options_error_( + NSURL? url, int options, ffi.Pointer> outError) { + final _ret = _lib._objc_msgSend_936( + _id, + _lib._sel_initWithURL_options_error_1, + url?._id ?? ffi.nullptr, + options, + outError); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + NSFileWrapper initDirectoryWithFileWrappers_( + NSDictionary? childrenByPreferredName) { + final _ret = _lib._objc_msgSend_149( + _id, + _lib._sel_initDirectoryWithFileWrappers_1, + childrenByPreferredName?._id ?? ffi.nullptr); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + NSFileWrapper initRegularFileWithContents_(NSData? contents) { + final _ret = _lib._objc_msgSend_257(_id, + _lib._sel_initRegularFileWithContents_1, contents?._id ?? ffi.nullptr); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + NSFileWrapper initSymbolicLinkWithDestinationURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_241( + _id, + _lib._sel_initSymbolicLinkWithDestinationURL_1, + url?._id ?? ffi.nullptr); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + NSFileWrapper initWithSerializedRepresentation_( + NSData? serializeRepresentation) { + final _ret = _lib._objc_msgSend_257( + _id, + _lib._sel_initWithSerializedRepresentation_1, + serializeRepresentation?._id ?? ffi.nullptr); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + NSFileWrapper initWithCoder_(NSCoder? inCoder) { + final _ret = _lib._objc_msgSend_42( + _id, _lib._sel_initWithCoder_1, inCoder?._id ?? ffi.nullptr); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); + } + + bool get directory { + return _lib._objc_msgSend_12(_id, _lib._sel_isDirectory1); + } + + bool get regularFile { + return _lib._objc_msgSend_12(_id, _lib._sel_isRegularFile1); + } + + bool get symbolicLink { + return _lib._objc_msgSend_12(_id, _lib._sel_isSymbolicLink1); + } + + NSString? get preferredFilename { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_preferredFilename1); return _ret.address == 0 ? null - : NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + : NSString._(_ret, _lib, retain: true, release: true); } - NSDictionary credentialsForProtectionSpace_(NSURLProtectionSpace? space) { - final _ret = _lib._objc_msgSend_943(_id, - _lib._sel_credentialsForProtectionSpace_1, space?._id ?? ffi.nullptr); - return NSDictionary._(_ret, _lib, retain: true, release: true); + set preferredFilename(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPreferredFilename_1, value?._id ?? ffi.nullptr); } - NSDictionary? get allCredentials { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_allCredentials1); + NSString? get filename { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_filename1); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : NSString._(_ret, _lib, retain: true, release: true); } - void setCredential_forProtectionSpace_( - NSURLCredential? credential, NSURLProtectionSpace? space) { - _lib._objc_msgSend_944(_id, _lib._sel_setCredential_forProtectionSpace_1, - credential?._id ?? ffi.nullptr, space?._id ?? ffi.nullptr); + set filename(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setFilename_1, value?._id ?? ffi.nullptr); } - void removeCredential_forProtectionSpace_( - NSURLCredential? credential, NSURLProtectionSpace? space) { - _lib._objc_msgSend_944(_id, _lib._sel_removeCredential_forProtectionSpace_1, - credential?._id ?? ffi.nullptr, space?._id ?? ffi.nullptr); + NSDictionary? get fileAttributes { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_fileAttributes1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); } - void removeCredential_forProtectionSpace_options_(NSURLCredential? credential, - NSURLProtectionSpace? space, NSDictionary? options) { - _lib._objc_msgSend_945( - _id, - _lib._sel_removeCredential_forProtectionSpace_options_1, - credential?._id ?? ffi.nullptr, - space?._id ?? ffi.nullptr, - options?._id ?? ffi.nullptr); + set fileAttributes(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, _lib._sel_setFileAttributes_1, value?._id ?? ffi.nullptr); } - NSURLCredential defaultCredentialForProtectionSpace_( - NSURLProtectionSpace? space) { - final _ret = _lib._objc_msgSend_946( - _id, - _lib._sel_defaultCredentialForProtectionSpace_1, - space?._id ?? ffi.nullptr); - return NSURLCredential._(_ret, _lib, retain: true, release: true); + bool matchesContentsOfURL_(NSURL? url) { + return _lib._objc_msgSend_244( + _id, _lib._sel_matchesContentsOfURL_1, url?._id ?? ffi.nullptr); } - void setDefaultCredential_forProtectionSpace_( - NSURLCredential? credential, NSURLProtectionSpace? space) { - _lib._objc_msgSend_944( - _id, - _lib._sel_setDefaultCredential_forProtectionSpace_1, - credential?._id ?? ffi.nullptr, - space?._id ?? ffi.nullptr); + bool readFromURL_options_error_( + NSURL? url, int options, ffi.Pointer> outError) { + return _lib._objc_msgSend_937(_id, _lib._sel_readFromURL_options_error_1, + url?._id ?? ffi.nullptr, options, outError); } - void getCredentialsForProtectionSpace_task_completionHandler_( - NSURLProtectionSpace? protectionSpace, - NSURLSessionTask? task, - ObjCBlock_ffiVoid_NSDictionary completionHandler) { - _lib._objc_msgSend_947( + bool writeToURL_options_originalContentsURL_error_( + NSURL? url, + int options, + NSURL? originalContentsURL, + ffi.Pointer> outError) { + return _lib._objc_msgSend_938( _id, - _lib._sel_getCredentialsForProtectionSpace_task_completionHandler_1, - protectionSpace?._id ?? ffi.nullptr, - task?._id ?? ffi.nullptr, - completionHandler._id); + _lib._sel_writeToURL_options_originalContentsURL_error_1, + url?._id ?? ffi.nullptr, + options, + originalContentsURL?._id ?? ffi.nullptr, + outError); } - void setCredential_forProtectionSpace_task_(NSURLCredential? credential, - NSURLProtectionSpace? protectionSpace, NSURLSessionTask? task) { - _lib._objc_msgSend_948( - _id, - _lib._sel_setCredential_forProtectionSpace_task_1, - credential?._id ?? ffi.nullptr, - protectionSpace?._id ?? ffi.nullptr, - task?._id ?? ffi.nullptr); + NSData? get serializedRepresentation { + final _ret = + _lib._objc_msgSend_39(_id, _lib._sel_serializedRepresentation1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); } - void removeCredential_forProtectionSpace_options_task_( - NSURLCredential? credential, - NSURLProtectionSpace? protectionSpace, - NSDictionary? options, - NSURLSessionTask? task) { - _lib._objc_msgSend_949( - _id, - _lib._sel_removeCredential_forProtectionSpace_options_task_1, - credential?._id ?? ffi.nullptr, - protectionSpace?._id ?? ffi.nullptr, - options?._id ?? ffi.nullptr, - task?._id ?? ffi.nullptr); + NSString addFileWrapper_(NSFileWrapper? child) { + final _ret = _lib._objc_msgSend_939( + _id, _lib._sel_addFileWrapper_1, child?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - void getDefaultCredentialForProtectionSpace_task_completionHandler_( - NSURLProtectionSpace? space, - NSURLSessionTask? task, - ObjCBlock_ffiVoid_NSURLCredential completionHandler) { - _lib._objc_msgSend_950( + NSString addRegularFileWithContents_preferredFilename_( + NSData? data, NSString? fileName) { + final _ret = _lib._objc_msgSend_940( _id, - _lib._sel_getDefaultCredentialForProtectionSpace_task_completionHandler_1, - space?._id ?? ffi.nullptr, - task?._id ?? ffi.nullptr, - completionHandler._id); + _lib._sel_addRegularFileWithContents_preferredFilename_1, + data?._id ?? ffi.nullptr, + fileName?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - void setDefaultCredential_forProtectionSpace_task_( - NSURLCredential? credential, - NSURLProtectionSpace? protectionSpace, - NSURLSessionTask? task) { - _lib._objc_msgSend_948( - _id, - _lib._sel_setDefaultCredential_forProtectionSpace_task_1, - credential?._id ?? ffi.nullptr, - protectionSpace?._id ?? ffi.nullptr, - task?._id ?? ffi.nullptr); + void removeFileWrapper_(NSFileWrapper? child) { + _lib._objc_msgSend_941( + _id, _lib._sel_removeFileWrapper_1, child?._id ?? ffi.nullptr); } - @override - NSURLCredentialStorage init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + NSDictionary? get fileWrappers { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_fileWrappers1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); } - static NSURLCredentialStorage new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCredentialStorage1, _lib._sel_new1); - return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + NSString keyForFileWrapper_(NSFileWrapper? child) { + final _ret = _lib._objc_msgSend_939( + _id, _lib._sel_keyForFileWrapper_1, child?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - static NSURLCredentialStorage allocWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLCredentialStorage1, _lib._sel_allocWithZone_1, zone); - return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + NSData? get regularFileContents { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_regularFileContents1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); } - static NSURLCredentialStorage alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLCredentialStorage1, _lib._sel_alloc1); - return NSURLCredentialStorage._(_ret, _lib, retain: false, release: true); + NSURL? get symbolicLinkDestinationURL { + final _ret = + _lib._objc_msgSend_40(_id, _lib._sel_symbolicLinkDestinationURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SentryCocoa _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLCredentialStorage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument._id); + NSObject initWithPath_(NSString? path) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithPath_1, path?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_( - SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLCredentialStorage1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + NSObject initSymbolicLinkWithDestination_(NSString? path) { + final _ret = _lib._objc_msgSend_30(_id, + _lib._sel_initSymbolicLinkWithDestination_1, path?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLCredentialStorage1, - _lib._sel_accessInstanceVariablesDirectly1); + bool needsToBeUpdatedFromPath_(NSString? path) { + return _lib._objc_msgSend_59( + _id, _lib._sel_needsToBeUpdatedFromPath_1, path?._id ?? ffi.nullptr); } - static bool useStoredAccessor(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLCredentialStorage1, _lib._sel_useStoredAccessor1); + bool updateFromPath_(NSString? path) { + return _lib._objc_msgSend_59( + _id, _lib._sel_updateFromPath_1, path?._id ?? ffi.nullptr); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SentryCocoa _lib, NSString? key) { - final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLCredentialStorage1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key?._id ?? ffi.nullptr); - return NSSet._(_ret, _lib, retain: true, release: true); + bool writeToFile_atomically_updateFilenames_( + NSString? path, bool atomicFlag, bool updateFilenamesFlag) { + return _lib._objc_msgSend_942( + _id, + _lib._sel_writeToFile_atomically_updateFilenames_1, + path?._id ?? ffi.nullptr, + atomicFlag, + updateFilenamesFlag); } - static bool automaticallyNotifiesObserversForKey_( - SentryCocoa _lib, NSString? key) { - return _lib._objc_msgSend_59( - _lib._class_NSURLCredentialStorage1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key?._id ?? ffi.nullptr); + NSString addFileWithPath_(NSString? path) { + final _ret = _lib._objc_msgSend_64( + _id, _lib._sel_addFileWithPath_1, path?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { - _lib._objc_msgSend_82( - _lib._class_NSURLCredentialStorage1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys?._id ?? ffi.nullptr, - dependentKey?._id ?? ffi.nullptr); + NSString addSymbolicLinkWithDestination_preferredFilename_( + NSString? path, NSString? filename) { + final _ret = _lib._objc_msgSend_339( + _id, + _lib._sel_addSymbolicLinkWithDestination_preferredFilename_1, + path?._id ?? ffi.nullptr, + filename?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSURLCredentialStorage1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + NSString symbolicLinkDestination() { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_symbolicLinkDestination1); + return NSString._(_ret, _lib, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLCredentialStorage1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + NSFileWrapper init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSFileWrapper._(_ret, _lib, retain: true, release: true); } -} - -void _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return block.ref.target - .cast< - ffi.NativeFunction arg0)>>() - .asFunction arg0)>()(arg0); -} -final _ObjCBlock_ffiVoid_NSDictionary_closureRegistry = {}; -int _ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSDictionary_registerClosure( - Function fn) { - final id = ++_ObjCBlock_ffiVoid_NSDictionary_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSDictionary_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + static NSFileWrapper new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSFileWrapper1, _lib._sel_new1); + return NSFileWrapper._(_ret, _lib, retain: false, release: true); + } -void _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return (_ObjCBlock_ffiVoid_NSDictionary_closureRegistry[block - .ref.target.address] as void Function(ffi.Pointer))(arg0); -} + static NSFileWrapper allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSFileWrapper1, _lib._sel_allocWithZone_1, zone); + return NSFileWrapper._(_ret, _lib, retain: false, release: true); + } -class ObjCBlock_ffiVoid_NSDictionary extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSDictionary._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); + static NSFileWrapper alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSFileWrapper1, _lib._sel_alloc1); + return NSFileWrapper._(_ret, _lib, retain: false, release: true); + } - /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSDictionary.fromFunctionPointer( - SentryCocoa lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSDictionary_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSFileWrapper1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } - /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSDictionary.fromFunction( - SentryCocoa lib, void Function(ffi.Pointer arg0) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSDictionary_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSDictionary_registerClosure(fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - void call(ffi.Pointer arg0) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>()(_id, arg0); + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSFileWrapper1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } -} -void _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return block.ref.target - .cast< - ffi.NativeFunction arg0)>>() - .asFunction arg0)>()(arg0); -} + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSFileWrapper1, _lib._sel_accessInstanceVariablesDirectly1); + } -final _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry = {}; -int _ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSURLCredential_registerClosure( - Function fn) { - final id = ++_ObjCBlock_ffiVoid_NSURLCredential_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSFileWrapper1, _lib._sel_useStoredAccessor1); + } -void _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return (_ObjCBlock_ffiVoid_NSURLCredential_closureRegistry[block - .ref.target.address] as void Function(ffi.Pointer))(arg0); -} + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSFileWrapper1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } -class ObjCBlock_ffiVoid_NSURLCredential extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURLCredential._( - ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSFileWrapper1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } - /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSURLCredential.fromFunctionPointer( - SentryCocoa lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSURLCredential_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSFileWrapper1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } - /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSURLCredential.fromFunction( - SentryCocoa lib, void Function(ffi.Pointer arg0) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSURLCredential_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURLCredential_registerClosure(fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - void call(ffi.Pointer arg0) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>()(_id, arg0); + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSFileWrapper1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSFileWrapper1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSURLProtocol extends NSObject { - NSURLProtocol._(ffi.Pointer id, SentryCocoa lib, +abstract class NSFileWrapperReadingOptions { + static const int NSFileWrapperReadingImmediate = 1; + static const int NSFileWrapperReadingWithoutMapping = 2; +} + +abstract class NSFileWrapperWritingOptions { + static const int NSFileWrapperWritingAtomic = 1; + static const int NSFileWrapperWritingWithNameUpdating = 2; +} + +class NSURLSession extends NSObject { + NSURLSession._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLProtocol] that points to the same underlying object as [other]. - static NSURLProtocol castFrom(T other) { - return NSURLProtocol._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSURLSession] that points to the same underlying object as [other]. + static NSURLSession castFrom(T other) { + return NSURLSession._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLProtocol] that wraps the given raw object pointer. - static NSURLProtocol castFromPointer( + /// Returns a [NSURLSession] that wraps the given raw object pointer. + static NSURLSession castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLProtocol._(other, lib, retain: retain, release: release); + return NSURLSession._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLProtocol]. + /// Returns whether [obj] is an instance of [NSURLSession]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLProtocol1); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLSession1); } - NSURLProtocol initWithRequest_cachedResponse_client_(NSURLRequest? request, - NSCachedURLResponse? cachedResponse, NSObject? client) { - final _ret = _lib._objc_msgSend_951( - _id, - _lib._sel_initWithRequest_cachedResponse_client_1, - request?._id ?? ffi.nullptr, - cachedResponse?._id ?? ffi.nullptr, - client?._id ?? ffi.nullptr); - return NSURLProtocol._(_ret, _lib, retain: true, release: true); + static NSURLSession? getSharedSession(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_943( + _lib._class_NSURLSession1, _lib._sel_sharedSession1); + return _ret.address == 0 + ? null + : NSURLSession._(_ret, _lib, retain: true, release: true); } - NSObject? get client { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_client1); + static NSURLSession sessionWithConfiguration_( + SentryCocoa _lib, NSURLSessionConfiguration? configuration) { + final _ret = _lib._objc_msgSend_954( + _lib._class_NSURLSession1, + _lib._sel_sessionWithConfiguration_1, + configuration?._id ?? ffi.nullptr); + return NSURLSession._(_ret, _lib, retain: true, release: true); + } + + static NSURLSession sessionWithConfiguration_delegate_delegateQueue_( + SentryCocoa _lib, + NSURLSessionConfiguration? configuration, + NSObject? delegate, + NSOperationQueue? queue) { + final _ret = _lib._objc_msgSend_955( + _lib._class_NSURLSession1, + _lib._sel_sessionWithConfiguration_delegate_delegateQueue_1, + configuration?._id ?? ffi.nullptr, + delegate?._id ?? ffi.nullptr, + queue?._id ?? ffi.nullptr); + return NSURLSession._(_ret, _lib, retain: true, release: true); + } + + NSOperationQueue? get delegateQueue { + final _ret = _lib._objc_msgSend_824(_id, _lib._sel_delegateQueue1); + return _ret.address == 0 + ? null + : NSOperationQueue._(_ret, _lib, retain: true, release: true); + } + + NSObject? get delegate { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); return _ret.address == 0 ? null : NSObject._(_ret, _lib, retain: true, release: true); } - NSURLRequest? get request { - final _ret = _lib._objc_msgSend_829(_id, _lib._sel_request1); + NSURLSessionConfiguration? get configuration { + final _ret = _lib._objc_msgSend_944(_id, _lib._sel_configuration1); return _ret.address == 0 ? null - : NSURLRequest._(_ret, _lib, retain: true, release: true); + : NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); } - NSCachedURLResponse? get cachedResponse { - final _ret = _lib._objc_msgSend_952(_id, _lib._sel_cachedResponse1); + NSString? get sessionDescription { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_sessionDescription1); return _ret.address == 0 ? null - : NSCachedURLResponse._(_ret, _lib, retain: true, release: true); + : NSString._(_ret, _lib, retain: true, release: true); } - static bool canInitWithRequest_(SentryCocoa _lib, NSURLRequest? request) { - return _lib._objc_msgSend_929(_lib._class_NSURLProtocol1, - _lib._sel_canInitWithRequest_1, request?._id ?? ffi.nullptr); + set sessionDescription(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setSessionDescription_1, value?._id ?? ffi.nullptr); } - static NSURLRequest canonicalRequestForRequest_( - SentryCocoa _lib, NSURLRequest? request) { - final _ret = _lib._objc_msgSend_953(_lib._class_NSURLProtocol1, - _lib._sel_canonicalRequestForRequest_1, request?._id ?? ffi.nullptr); - return NSURLRequest._(_ret, _lib, retain: true, release: true); + void finishTasksAndInvalidate() { + _lib._objc_msgSend_1(_id, _lib._sel_finishTasksAndInvalidate1); } - static bool requestIsCacheEquivalent_toRequest_( - SentryCocoa _lib, NSURLRequest? a, NSURLRequest? b) { - return _lib._objc_msgSend_954( - _lib._class_NSURLProtocol1, - _lib._sel_requestIsCacheEquivalent_toRequest_1, - a?._id ?? ffi.nullptr, - b?._id ?? ffi.nullptr); + void invalidateAndCancel() { + _lib._objc_msgSend_1(_id, _lib._sel_invalidateAndCancel1); } - void startLoading() { - _lib._objc_msgSend_1(_id, _lib._sel_startLoading1); + void resetWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { + _lib._objc_msgSend_497( + _id, _lib._sel_resetWithCompletionHandler_1, completionHandler._id); } - void stopLoading() { - _lib._objc_msgSend_1(_id, _lib._sel_stopLoading1); + void flushWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { + _lib._objc_msgSend_497( + _id, _lib._sel_flushWithCompletionHandler_1, completionHandler._id); } - static NSObject propertyForKey_inRequest_( - SentryCocoa _lib, NSString? key, NSURLRequest? request) { - final _ret = _lib._objc_msgSend_955( - _lib._class_NSURLProtocol1, - _lib._sel_propertyForKey_inRequest_1, - key?._id ?? ffi.nullptr, - request?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + void getTasksWithCompletionHandler_( + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray completionHandler) { + _lib._objc_msgSend_956( + _id, _lib._sel_getTasksWithCompletionHandler_1, completionHandler._id); } - static void setProperty_forKey_inRequest_(SentryCocoa _lib, NSObject value, - NSString? key, NSMutableURLRequest? request) { - _lib._objc_msgSend_961( - _lib._class_NSURLProtocol1, - _lib._sel_setProperty_forKey_inRequest_1, - value._id, - key?._id ?? ffi.nullptr, - request?._id ?? ffi.nullptr); + void getAllTasksWithCompletionHandler_( + ObjCBlock_ffiVoid_NSArray completionHandler) { + _lib._objc_msgSend_957(_id, _lib._sel_getAllTasksWithCompletionHandler_1, + completionHandler._id); } - static void removePropertyForKey_inRequest_( - SentryCocoa _lib, NSString? key, NSMutableURLRequest? request) { - _lib._objc_msgSend_962( - _lib._class_NSURLProtocol1, - _lib._sel_removePropertyForKey_inRequest_1, - key?._id ?? ffi.nullptr, - request?._id ?? ffi.nullptr); + NSURLSessionDataTask dataTaskWithRequest_(NSURLRequest? request) { + final _ret = _lib._objc_msgSend_958( + _id, _lib._sel_dataTaskWithRequest_1, request?._id ?? ffi.nullptr); + return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); } - static bool registerClass_(SentryCocoa _lib, NSObject protocolClass) { - return _lib._objc_msgSend_0(_lib._class_NSURLProtocol1, - _lib._sel_registerClass_1, protocolClass._id); + NSURLSessionDataTask dataTaskWithURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_959( + _id, _lib._sel_dataTaskWithURL_1, url?._id ?? ffi.nullptr); + return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); } - static void unregisterClass_(SentryCocoa _lib, NSObject protocolClass) { - _lib._objc_msgSend_15(_lib._class_NSURLProtocol1, - _lib._sel_unregisterClass_1, protocolClass._id); + NSURLSessionUploadTask uploadTaskWithRequest_fromFile_( + NSURLRequest? request, NSURL? fileURL) { + final _ret = _lib._objc_msgSend_960( + _id, + _lib._sel_uploadTaskWithRequest_fromFile_1, + request?._id ?? ffi.nullptr, + fileURL?._id ?? ffi.nullptr); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); } - static bool canInitWithTask_(SentryCocoa _lib, NSURLSessionTask? task) { - return _lib._objc_msgSend_963(_lib._class_NSURLProtocol1, - _lib._sel_canInitWithTask_1, task?._id ?? ffi.nullptr); + NSURLSessionUploadTask uploadTaskWithRequest_fromData_( + NSURLRequest? request, NSData? bodyData) { + final _ret = _lib._objc_msgSend_961( + _id, + _lib._sel_uploadTaskWithRequest_fromData_1, + request?._id ?? ffi.nullptr, + bodyData?._id ?? ffi.nullptr); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); } - NSURLProtocol initWithTask_cachedResponse_client_(NSURLSessionTask? task, - NSCachedURLResponse? cachedResponse, NSObject? client) { + NSURLSessionUploadTask uploadTaskWithStreamedRequest_(NSURLRequest? request) { + final _ret = _lib._objc_msgSend_962(_id, + _lib._sel_uploadTaskWithStreamedRequest_1, request?._id ?? ffi.nullptr); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithRequest_(NSURLRequest? request) { final _ret = _lib._objc_msgSend_964( + _id, _lib._sel_downloadTaskWithRequest_1, request?._id ?? ffi.nullptr); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_965( + _id, _lib._sel_downloadTaskWithURL_1, url?._id ?? ffi.nullptr); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithResumeData_(NSData? resumeData) { + final _ret = _lib._objc_msgSend_966(_id, + _lib._sel_downloadTaskWithResumeData_1, resumeData?._id ?? ffi.nullptr); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionStreamTask streamTaskWithHostName_port_( + NSString? hostname, int port) { + final _ret = _lib._objc_msgSend_969( _id, - _lib._sel_initWithTask_cachedResponse_client_1, - task?._id ?? ffi.nullptr, - cachedResponse?._id ?? ffi.nullptr, - client?._id ?? ffi.nullptr); - return NSURLProtocol._(_ret, _lib, retain: true, release: true); + _lib._sel_streamTaskWithHostName_port_1, + hostname?._id ?? ffi.nullptr, + port); + return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); } - NSURLSessionTask? get task { - final _ret = _lib._objc_msgSend_965(_id, _lib._sel_task1); - return _ret.address == 0 - ? null - : NSURLSessionTask._(_ret, _lib, retain: true, release: true); + NSURLSessionStreamTask streamTaskWithNetService_(NSNetService? service) { + final _ret = _lib._objc_msgSend_975( + _id, _lib._sel_streamTaskWithNetService_1, service?._id ?? ffi.nullptr); + return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionWebSocketTask webSocketTaskWithURL_(NSURL? url) { + final _ret = _lib._objc_msgSend_982( + _id, _lib._sel_webSocketTaskWithURL_1, url?._id ?? ffi.nullptr); + return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionWebSocketTask webSocketTaskWithURL_protocols_( + NSURL? url, NSArray? protocols) { + final _ret = _lib._objc_msgSend_983( + _id, + _lib._sel_webSocketTaskWithURL_protocols_1, + url?._id ?? ffi.nullptr, + protocols?._id ?? ffi.nullptr); + return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionWebSocketTask webSocketTaskWithRequest_(NSURLRequest? request) { + final _ret = _lib._objc_msgSend_984( + _id, _lib._sel_webSocketTaskWithRequest_1, request?._id ?? ffi.nullptr); + return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); } @override - NSURLProtocol init() { + NSURLSession init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLProtocol._(_ret, _lib, retain: true, release: true); + return NSURLSession._(_ret, _lib, retain: true, release: true); } - static NSURLProtocol new1(SentryCocoa _lib) { + static NSURLSession new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLProtocol1, _lib._sel_new1); - return NSURLProtocol._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLSession1, _lib._sel_new1); + return NSURLSession._(_ret, _lib, retain: false, release: true); } - static NSURLProtocol allocWithZone_( + NSURLSessionDataTask dataTaskWithRequest_completionHandler_( + NSURLRequest? request, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_985( + _id, + _lib._sel_dataTaskWithRequest_completionHandler_1, + request?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDataTask dataTaskWithURL_completionHandler_(NSURL? url, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_986( + _id, + _lib._sel_dataTaskWithURL_completionHandler_1, + url?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionUploadTask uploadTaskWithRequest_fromFile_completionHandler_( + NSURLRequest? request, + NSURL? fileURL, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_987( + _id, + _lib._sel_uploadTaskWithRequest_fromFile_completionHandler_1, + request?._id ?? ffi.nullptr, + fileURL?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionUploadTask uploadTaskWithRequest_fromData_completionHandler_( + NSURLRequest? request, + NSData? bodyData, + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_988( + _id, + _lib._sel_uploadTaskWithRequest_fromData_completionHandler_1, + request?._id ?? ffi.nullptr, + bodyData?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithRequest_completionHandler_( + NSURLRequest? request, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_989( + _id, + _lib._sel_downloadTaskWithRequest_completionHandler_1, + request?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithURL_completionHandler_(NSURL? url, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_990( + _id, + _lib._sel_downloadTaskWithURL_completionHandler_1, + url?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + NSURLSessionDownloadTask downloadTaskWithResumeData_completionHandler_( + NSData? resumeData, + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { + final _ret = _lib._objc_msgSend_991( + _id, + _lib._sel_downloadTaskWithResumeData_completionHandler_1, + resumeData?._id ?? ffi.nullptr, + completionHandler._id); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + } + + static NSURLSession allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLProtocol1, _lib._sel_allocWithZone_1, zone); - return NSURLProtocol._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLSession1, _lib._sel_allocWithZone_1, zone); + return NSURLSession._(_ret, _lib, retain: false, release: true); } - static NSURLProtocol alloc(SentryCocoa _lib) { + static NSURLSession alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLProtocol1, _lib._sel_alloc1); - return NSURLProtocol._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSURLSession1, _lib._sel_alloc1); + return NSURLSession._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -65493,7 +65741,7 @@ class NSURLProtocol extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLProtocol1, + _lib._class_NSURLSession1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -65502,24 +65750,24 @@ class NSURLProtocol extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLProtocol1, + _lib._objc_msgSend_15(_lib._class_NSURLSession1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLProtocol1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSURLSession1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLProtocol1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLSession1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLProtocol1, + _lib._class_NSURLSession1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -65528,7 +65776,7 @@ class NSURLProtocol extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLProtocol1, + _lib._class_NSURLSession1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -65536,7 +65784,7 @@ class NSURLProtocol extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLProtocol1, + _lib._class_NSURLSession1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -65544,96 +65792,113 @@ class NSURLProtocol extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSURLProtocol1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSURLSession1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLProtocol1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSURLSession1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSMutableURLRequest extends NSURLRequest { - NSMutableURLRequest._(ffi.Pointer id, SentryCocoa lib, +class NSURLSessionConfiguration extends NSObject { + NSURLSessionConfiguration._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSMutableURLRequest] that points to the same underlying object as [other]. - static NSMutableURLRequest castFrom(T other) { - return NSMutableURLRequest._(other._id, other._lib, + /// Returns a [NSURLSessionConfiguration] that points to the same underlying object as [other]. + static NSURLSessionConfiguration castFrom(T other) { + return NSURLSessionConfiguration._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSMutableURLRequest] that wraps the given raw object pointer. - static NSMutableURLRequest castFromPointer( + /// Returns a [NSURLSessionConfiguration] that wraps the given raw object pointer. + static NSURLSessionConfiguration castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSMutableURLRequest._(other, lib, retain: retain, release: release); + return NSURLSessionConfiguration._(other, lib, + retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSMutableURLRequest]. + /// Returns whether [obj] is an instance of [NSURLSessionConfiguration]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSMutableURLRequest1); + obj._lib._class_NSURLSessionConfiguration1); } - @override - NSURL? get URL { - final _ret = _lib._objc_msgSend_40(_id, _lib._sel_URL1); + static NSURLSessionConfiguration? getDefaultSessionConfiguration( + SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_944(_lib._class_NSURLSessionConfiguration1, + _lib._sel_defaultSessionConfiguration1); return _ret.address == 0 ? null - : NSURL._(_ret, _lib, retain: true, release: true); + : NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); } - set URL(NSURL? value) { - return _lib._objc_msgSend_655( - _id, _lib._sel_setURL_1, value?._id ?? ffi.nullptr); + static NSURLSessionConfiguration? getEphemeralSessionConfiguration( + SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_944(_lib._class_NSURLSessionConfiguration1, + _lib._sel_ephemeralSessionConfiguration1); + return _ret.address == 0 + ? null + : NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); } - @override - int get cachePolicy { - return _lib._objc_msgSend_816(_id, _lib._sel_cachePolicy1); + static NSURLSessionConfiguration + backgroundSessionConfigurationWithIdentifier_( + SentryCocoa _lib, NSString? identifier) { + final _ret = _lib._objc_msgSend_945( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_backgroundSessionConfigurationWithIdentifier_1, + identifier?._id ?? ffi.nullptr); + return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); } - set cachePolicy(int value) { - return _lib._objc_msgSend_956(_id, _lib._sel_setCachePolicy_1, value); + NSString? get identifier { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_identifier1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - @override - double get timeoutInterval { - return _lib._objc_msgSend_155(_id, _lib._sel_timeoutInterval1); + int get requestCachePolicy { + return _lib._objc_msgSend_782(_id, _lib._sel_requestCachePolicy1); + } + + set requestCachePolicy(int value) { + return _lib._objc_msgSend_922( + _id, _lib._sel_setRequestCachePolicy_1, value); + } + + double get timeoutIntervalForRequest { + return _lib._objc_msgSend_155(_id, _lib._sel_timeoutIntervalForRequest1); } - set timeoutInterval(double value) { - return _lib._objc_msgSend_506(_id, _lib._sel_setTimeoutInterval_1, value); + set timeoutIntervalForRequest(double value) { + return _lib._objc_msgSend_506( + _id, _lib._sel_setTimeoutIntervalForRequest_1, value); } - @override - NSURL? get mainDocumentURL { - final _ret = _lib._objc_msgSend_40(_id, _lib._sel_mainDocumentURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + double get timeoutIntervalForResource { + return _lib._objc_msgSend_155(_id, _lib._sel_timeoutIntervalForResource1); } - set mainDocumentURL(NSURL? value) { - return _lib._objc_msgSend_655( - _id, _lib._sel_setMainDocumentURL_1, value?._id ?? ffi.nullptr); + set timeoutIntervalForResource(double value) { + return _lib._objc_msgSend_506( + _id, _lib._sel_setTimeoutIntervalForResource_1, value); } - @override int get networkServiceType { - return _lib._objc_msgSend_817(_id, _lib._sel_networkServiceType1); + return _lib._objc_msgSend_783(_id, _lib._sel_networkServiceType1); } set networkServiceType(int value) { - return _lib._objc_msgSend_957( + return _lib._objc_msgSend_923( _id, _lib._sel_setNetworkServiceType_1, value); } - @override bool get allowsCellularAccess { return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); } @@ -65643,7 +65908,6 @@ class NSMutableURLRequest extends NSURLRequest { _id, _lib._sel_setAllowsCellularAccess_1, value); } - @override bool get allowsExpensiveNetworkAccess { return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); } @@ -65653,7 +65917,6 @@ class NSMutableURLRequest extends NSURLRequest { _id, _lib._sel_setAllowsExpensiveNetworkAccess_1, value); } - @override bool get allowsConstrainedNetworkAccess { return _lib._objc_msgSend_12( _id, _lib._sel_allowsConstrainedNetworkAccess1); @@ -65664,181 +65927,512 @@ class NSMutableURLRequest extends NSURLRequest { _id, _lib._sel_setAllowsConstrainedNetworkAccess_1, value); } - @override - bool get assumesHTTP3Capable { - return _lib._objc_msgSend_12(_id, _lib._sel_assumesHTTP3Capable1); + bool get requiresDNSSECValidation { + return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); } - set assumesHTTP3Capable(bool value) { + set requiresDNSSECValidation(bool value) { return _lib._objc_msgSend_492( - _id, _lib._sel_setAssumesHTTP3Capable_1, value); + _id, _lib._sel_setRequiresDNSSECValidation_1, value); } - @override - int get attribution { - return _lib._objc_msgSend_818(_id, _lib._sel_attribution1); + bool get waitsForConnectivity { + return _lib._objc_msgSend_12(_id, _lib._sel_waitsForConnectivity1); } - set attribution(int value) { - return _lib._objc_msgSend_958(_id, _lib._sel_setAttribution_1, value); + set waitsForConnectivity(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setWaitsForConnectivity_1, value); } - @override - bool get requiresDNSSECValidation { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); + bool get discretionary { + return _lib._objc_msgSend_12(_id, _lib._sel_isDiscretionary1); } - set requiresDNSSECValidation(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setRequiresDNSSECValidation_1, value); + set discretionary(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setDiscretionary_1, value); } - @override - NSString? get HTTPMethod { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_HTTPMethod1); + NSString? get sharedContainerIdentifier { + final _ret = + _lib._objc_msgSend_20(_id, _lib._sel_sharedContainerIdentifier1); return _ret.address == 0 ? null : NSString._(_ret, _lib, retain: true, release: true); } - set HTTPMethod(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setHTTPMethod_1, value?._id ?? ffi.nullptr); + set sharedContainerIdentifier(NSString? value) { + return _lib._objc_msgSend_509(_id, _lib._sel_setSharedContainerIdentifier_1, + value?._id ?? ffi.nullptr); } - @override - NSDictionary? get allHTTPHeaderFields { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_allHTTPHeaderFields1); + bool get sessionSendsLaunchEvents { + return _lib._objc_msgSend_12(_id, _lib._sel_sessionSendsLaunchEvents1); + } + + set sessionSendsLaunchEvents(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setSessionSendsLaunchEvents_1, value); + } + + NSDictionary? get connectionProxyDictionary { + final _ret = + _lib._objc_msgSend_170(_id, _lib._sel_connectionProxyDictionary1); return _ret.address == 0 ? null : NSDictionary._(_ret, _lib, retain: true, release: true); } - set allHTTPHeaderFields(NSDictionary? value) { + set connectionProxyDictionary(NSDictionary? value) { + return _lib._objc_msgSend_171(_id, _lib._sel_setConnectionProxyDictionary_1, + value?._id ?? ffi.nullptr); + } + + int get TLSMinimumSupportedProtocol { + return _lib._objc_msgSend_946(_id, _lib._sel_TLSMinimumSupportedProtocol1); + } + + set TLSMinimumSupportedProtocol(int value) { + return _lib._objc_msgSend_947( + _id, _lib._sel_setTLSMinimumSupportedProtocol_1, value); + } + + int get TLSMaximumSupportedProtocol { + return _lib._objc_msgSend_946(_id, _lib._sel_TLSMaximumSupportedProtocol1); + } + + set TLSMaximumSupportedProtocol(int value) { + return _lib._objc_msgSend_947( + _id, _lib._sel_setTLSMaximumSupportedProtocol_1, value); + } + + int get TLSMinimumSupportedProtocolVersion { + return _lib._objc_msgSend_948( + _id, _lib._sel_TLSMinimumSupportedProtocolVersion1); + } + + set TLSMinimumSupportedProtocolVersion(int value) { + return _lib._objc_msgSend_949( + _id, _lib._sel_setTLSMinimumSupportedProtocolVersion_1, value); + } + + int get TLSMaximumSupportedProtocolVersion { + return _lib._objc_msgSend_948( + _id, _lib._sel_TLSMaximumSupportedProtocolVersion1); + } + + set TLSMaximumSupportedProtocolVersion(int value) { + return _lib._objc_msgSend_949( + _id, _lib._sel_setTLSMaximumSupportedProtocolVersion_1, value); + } + + bool get HTTPShouldUsePipelining { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); + } + + set HTTPShouldUsePipelining(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setHTTPShouldUsePipelining_1, value); + } + + bool get HTTPShouldSetCookies { + return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldSetCookies1); + } + + set HTTPShouldSetCookies(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setHTTPShouldSetCookies_1, value); + } + + int get HTTPCookieAcceptPolicy { + return _lib._objc_msgSend_779(_id, _lib._sel_HTTPCookieAcceptPolicy1); + } + + set HTTPCookieAcceptPolicy(int value) { + return _lib._objc_msgSend_780( + _id, _lib._sel_setHTTPCookieAcceptPolicy_1, value); + } + + NSDictionary? get HTTPAdditionalHeaders { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_HTTPAdditionalHeaders1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); + } + + set HTTPAdditionalHeaders(NSDictionary? value) { return _lib._objc_msgSend_171( - _id, _lib._sel_setAllHTTPHeaderFields_1, value?._id ?? ffi.nullptr); + _id, _lib._sel_setHTTPAdditionalHeaders_1, value?._id ?? ffi.nullptr); } - void setValue_forHTTPHeaderField_(NSString? value, NSString? field) { - _lib._objc_msgSend_515(_id, _lib._sel_setValue_forHTTPHeaderField_1, - value?._id ?? ffi.nullptr, field?._id ?? ffi.nullptr); + int get HTTPMaximumConnectionsPerHost { + return _lib._objc_msgSend_78(_id, _lib._sel_HTTPMaximumConnectionsPerHost1); } - void addValue_forHTTPHeaderField_(NSString? value, NSString? field) { - _lib._objc_msgSend_515(_id, _lib._sel_addValue_forHTTPHeaderField_1, - value?._id ?? ffi.nullptr, field?._id ?? ffi.nullptr); + set HTTPMaximumConnectionsPerHost(int value) { + return _lib._objc_msgSend_590( + _id, _lib._sel_setHTTPMaximumConnectionsPerHost_1, value); } - @override - NSData? get HTTPBody { - final _ret = _lib._objc_msgSend_39(_id, _lib._sel_HTTPBody1); + NSHTTPCookieStorage? get HTTPCookieStorage { + final _ret = _lib._objc_msgSend_773(_id, _lib._sel_HTTPCookieStorage1); return _ret.address == 0 ? null - : NSData._(_ret, _lib, retain: true, release: true); + : NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); } - set HTTPBody(NSData? value) { - return _lib._objc_msgSend_959( - _id, _lib._sel_setHTTPBody_1, value?._id ?? ffi.nullptr); + set HTTPCookieStorage(NSHTTPCookieStorage? value) { + return _lib._objc_msgSend_950( + _id, _lib._sel_setHTTPCookieStorage_1, value?._id ?? ffi.nullptr); } - @override - NSInputStream? get HTTPBodyStream { - final _ret = _lib._objc_msgSend_828(_id, _lib._sel_HTTPBodyStream1); + NSURLCredentialStorage? get URLCredentialStorage { + final _ret = _lib._objc_msgSend_908(_id, _lib._sel_URLCredentialStorage1); return _ret.address == 0 ? null - : NSInputStream._(_ret, _lib, retain: true, release: true); + : NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); } - set HTTPBodyStream(NSInputStream? value) { - return _lib._objc_msgSend_960( - _id, _lib._sel_setHTTPBodyStream_1, value?._id ?? ffi.nullptr); + set URLCredentialStorage(NSURLCredentialStorage? value) { + return _lib._objc_msgSend_951( + _id, _lib._sel_setURLCredentialStorage_1, value?._id ?? ffi.nullptr); } - @override - bool get HTTPShouldHandleCookies { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldHandleCookies1); + NSURLCache? get URLCache { + final _ret = _lib._objc_msgSend_878(_id, _lib._sel_URLCache1); + return _ret.address == 0 + ? null + : NSURLCache._(_ret, _lib, retain: true, release: true); } - set HTTPShouldHandleCookies(bool value) { + set URLCache(NSURLCache? value) { + return _lib._objc_msgSend_879( + _id, _lib._sel_setURLCache_1, value?._id ?? ffi.nullptr); + } + + bool get shouldUseExtendedBackgroundIdleMode { + return _lib._objc_msgSend_12( + _id, _lib._sel_shouldUseExtendedBackgroundIdleMode1); + } + + set shouldUseExtendedBackgroundIdleMode(bool value) { return _lib._objc_msgSend_492( - _id, _lib._sel_setHTTPShouldHandleCookies_1, value); + _id, _lib._sel_setShouldUseExtendedBackgroundIdleMode_1, value); + } + + NSArray? get protocolClasses { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_protocolClasses1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set protocolClasses(NSArray? value) { + return _lib._objc_msgSend_731( + _id, _lib._sel_setProtocolClasses_1, value?._id ?? ffi.nullptr); + } + + int get multipathServiceType { + return _lib._objc_msgSend_952(_id, _lib._sel_multipathServiceType1); + } + + set multipathServiceType(int value) { + return _lib._objc_msgSend_953( + _id, _lib._sel_setMultipathServiceType_1, value); } @override - bool get HTTPShouldUsePipelining { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); + NSURLSessionConfiguration init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); } - set HTTPShouldUsePipelining(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setHTTPShouldUsePipelining_1, value); + static NSURLSessionConfiguration new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionConfiguration1, _lib._sel_new1); + return NSURLSessionConfiguration._(_ret, _lib, + retain: false, release: true); } - static NSMutableURLRequest requestWithURL_(SentryCocoa _lib, NSURL? URL) { - final _ret = _lib._objc_msgSend_241(_lib._class_NSMutableURLRequest1, - _lib._sel_requestWithURL_1, URL?._id ?? ffi.nullptr); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + static NSURLSessionConfiguration backgroundSessionConfiguration_( + SentryCocoa _lib, NSString? identifier) { + final _ret = _lib._objc_msgSend_945( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_backgroundSessionConfiguration_1, + identifier?._id ?? ffi.nullptr); + return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); } - static bool getSupportsSecureCoding(SentryCocoa _lib) { + static NSURLSessionConfiguration allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionConfiguration1, + _lib._sel_allocWithZone_1, zone); + return NSURLSessionConfiguration._(_ret, _lib, + retain: false, release: true); + } + + static NSURLSessionConfiguration alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionConfiguration1, _lib._sel_alloc1); + return NSURLSessionConfiguration._(_ret, _lib, + retain: false, release: true); + } + + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); + } + + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLSessionConfiguration1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + } + + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionConfiguration1, + _lib._sel_accessInstanceVariablesDirectly1); + } + + static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSMutableURLRequest1, _lib._sel_supportsSecureCoding1); + _lib._class_NSURLSessionConfiguration1, _lib._sel_useStoredAccessor1); } - static NSMutableURLRequest requestWithURL_cachePolicy_timeoutInterval_( - SentryCocoa _lib, NSURL? URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_815( - _lib._class_NSMutableURLRequest1, - _lib._sel_requestWithURL_cachePolicy_timeoutInterval_1, - URL?._id ?? ffi.nullptr, - cachePolicy, - timeoutInterval); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); } - @override - NSMutableURLRequest initWithURL_(NSURL? URL) { - final _ret = _lib._objc_msgSend_241( - _id, _lib._sel_initWithURL_1, URL?._id ?? ffi.nullptr); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); } - @override - NSMutableURLRequest initWithURL_cachePolicy_timeoutInterval_( - NSURL? URL, int cachePolicy, double timeoutInterval) { - final _ret = _lib._objc_msgSend_815( - _id, - _lib._sel_initWithURL_cachePolicy_timeoutInterval_1, - URL?._id ?? ffi.nullptr, - cachePolicy, - timeoutInterval); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSessionConfiguration1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionConfiguration1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionConfiguration1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class SSLProtocol { + static const int kSSLProtocolUnknown = 0; + static const int kTLSProtocol1 = 4; + static const int kTLSProtocol11 = 7; + static const int kTLSProtocol12 = 8; + static const int kDTLSProtocol1 = 9; + static const int kTLSProtocol13 = 10; + static const int kDTLSProtocol12 = 11; + static const int kTLSProtocolMaxSupported = 999; + static const int kSSLProtocol2 = 1; + static const int kSSLProtocol3 = 2; + static const int kSSLProtocol3Only = 3; + static const int kTLSProtocol1Only = 5; + static const int kSSLProtocolAll = 6; +} + +abstract class tls_protocol_version_t { + static const int tls_protocol_version_TLSv10 = 769; + static const int tls_protocol_version_TLSv11 = 770; + static const int tls_protocol_version_TLSv12 = 771; + static const int tls_protocol_version_TLSv13 = 772; + static const int tls_protocol_version_DTLSv10 = -257; + static const int tls_protocol_version_DTLSv12 = -259; +} + +abstract class NSURLSessionMultipathServiceType { + static const int NSURLSessionMultipathServiceTypeNone = 0; + static const int NSURLSessionMultipathServiceTypeHandover = 1; + static const int NSURLSessionMultipathServiceTypeInteractive = 2; + static const int NSURLSessionMultipathServiceTypeAggregate = 3; +} + +void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); +} + +final _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +class NSURLSessionUploadTask extends NSURLSessionDataTask { + NSURLSessionUploadTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSURLSessionUploadTask] that points to the same underlying object as [other]. + static NSURLSessionUploadTask castFrom(T other) { + return NSURLSessionUploadTask._(other._id, other._lib, + retain: true, release: true); + } + + /// Returns a [NSURLSessionUploadTask] that wraps the given raw object pointer. + static NSURLSessionUploadTask castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionUploadTask._(other, lib, + retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSURLSessionUploadTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionUploadTask1); } @override - NSMutableURLRequest init() { + NSURLSessionUploadTask init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSMutableURLRequest._(_ret, _lib, retain: true, release: true); + return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); } - static NSMutableURLRequest new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSMutableURLRequest1, _lib._sel_new1); - return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); + static NSURLSessionUploadTask new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionUploadTask1, _lib._sel_new1); + return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); } - static NSMutableURLRequest allocWithZone_( + static NSURLSessionUploadTask allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSMutableURLRequest1, _lib._sel_allocWithZone_1, zone); - return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLSessionUploadTask1, _lib._sel_allocWithZone_1, zone); + return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); } - static NSMutableURLRequest alloc(SentryCocoa _lib) { + static NSURLSessionUploadTask alloc(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableURLRequest1, _lib._sel_alloc1); - return NSMutableURLRequest._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLSessionUploadTask1, _lib._sel_alloc1); + return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -65847,7 +66441,7 @@ class NSMutableURLRequest extends NSURLRequest { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSMutableURLRequest1, + _lib._class_NSURLSessionUploadTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -65856,24 +66450,24 @@ class NSMutableURLRequest extends NSURLRequest { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSMutableURLRequest1, + _lib._objc_msgSend_15(_lib._class_NSURLSessionUploadTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSMutableURLRequest1, + return _lib._objc_msgSend_12(_lib._class_NSURLSessionUploadTask1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSMutableURLRequest1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLSessionUploadTask1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSMutableURLRequest1, + _lib._class_NSURLSessionUploadTask1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -65882,7 +66476,7 @@ class NSMutableURLRequest extends NSURLRequest { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSMutableURLRequest1, + _lib._class_NSURLSessionUploadTask1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -65890,187 +66484,79 @@ class NSMutableURLRequest extends NSURLRequest { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSMutableURLRequest1, + _lib._class_NSURLSessionUploadTask1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSMutableURLRequest1, + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionUploadTask1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSMutableURLRequest1, _lib._sel_classForKeyedUnarchiver1); + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionUploadTask1, + _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSXMLParser extends NSObject { - NSXMLParser._(ffi.Pointer id, SentryCocoa lib, +class NSURLSessionDownloadTask extends NSURLSessionTask { + NSURLSessionDownloadTask._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSXMLParser] that points to the same underlying object as [other]. - static NSXMLParser castFrom(T other) { - return NSXMLParser._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSURLSessionDownloadTask] that points to the same underlying object as [other]. + static NSURLSessionDownloadTask castFrom(T other) { + return NSURLSessionDownloadTask._(other._id, other._lib, + retain: true, release: true); } - /// Returns a [NSXMLParser] that wraps the given raw object pointer. - static NSXMLParser castFromPointer( + /// Returns a [NSURLSessionDownloadTask] that wraps the given raw object pointer. + static NSURLSessionDownloadTask castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSXMLParser._(other, lib, retain: retain, release: release); + return NSURLSessionDownloadTask._(other, lib, + retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSXMLParser]. + /// Returns whether [obj] is an instance of [NSURLSessionDownloadTask]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLParser1); - } - - NSXMLParser initWithContentsOfURL_(NSURL? url) { - final _ret = _lib._objc_msgSend_241( - _id, _lib._sel_initWithContentsOfURL_1, url?._id ?? ffi.nullptr); - return NSXMLParser._(_ret, _lib, retain: true, release: true); - } - - NSXMLParser initWithData_(NSData? data) { - final _ret = _lib._objc_msgSend_257( - _id, _lib._sel_initWithData_1, data?._id ?? ffi.nullptr); - return NSXMLParser._(_ret, _lib, retain: true, release: true); - } - - NSXMLParser initWithStream_(NSInputStream? stream) { - final _ret = _lib._objc_msgSend_966( - _id, _lib._sel_initWithStream_1, stream?._id ?? ffi.nullptr); - return NSXMLParser._(_ret, _lib, retain: true, release: true); - } - - NSObject? get delegate { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - set delegate(NSObject? value) { - return _lib._objc_msgSend_387( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); - } - - bool get shouldProcessNamespaces { - return _lib._objc_msgSend_12(_id, _lib._sel_shouldProcessNamespaces1); - } - - set shouldProcessNamespaces(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setShouldProcessNamespaces_1, value); - } - - bool get shouldReportNamespacePrefixes { - return _lib._objc_msgSend_12(_id, _lib._sel_shouldReportNamespacePrefixes1); - } - - set shouldReportNamespacePrefixes(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setShouldReportNamespacePrefixes_1, value); - } - - int get externalEntityResolvingPolicy { - return _lib._objc_msgSend_967( - _id, _lib._sel_externalEntityResolvingPolicy1); - } - - set externalEntityResolvingPolicy(int value) { - return _lib._objc_msgSend_968( - _id, _lib._sel_setExternalEntityResolvingPolicy_1, value); - } - - NSSet? get allowedExternalEntityURLs { - final _ret = - _lib._objc_msgSend_295(_id, _lib._sel_allowedExternalEntityURLs1); - return _ret.address == 0 - ? null - : NSSet._(_ret, _lib, retain: true, release: true); - } - - set allowedExternalEntityURLs(NSSet? value) { - return _lib._objc_msgSend_969(_id, _lib._sel_setAllowedExternalEntityURLs_1, - value?._id ?? ffi.nullptr); - } - - bool parse() { - return _lib._objc_msgSend_12(_id, _lib._sel_parse1); - } - - void abortParsing() { - _lib._objc_msgSend_1(_id, _lib._sel_abortParsing1); - } - - NSError? get parserError { - final _ret = _lib._objc_msgSend_298(_id, _lib._sel_parserError1); - return _ret.address == 0 - ? null - : NSError._(_ret, _lib, retain: true, release: true); - } - - bool get shouldResolveExternalEntities { - return _lib._objc_msgSend_12(_id, _lib._sel_shouldResolveExternalEntities1); - } - - set shouldResolveExternalEntities(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setShouldResolveExternalEntities_1, value); - } - - NSString? get publicID { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_publicID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get systemID { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_systemID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - int get lineNumber { - return _lib._objc_msgSend_78(_id, _lib._sel_lineNumber1); + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionDownloadTask1); } - int get columnNumber { - return _lib._objc_msgSend_78(_id, _lib._sel_columnNumber1); + void cancelByProducingResumeData_( + ObjCBlock_ffiVoid_NSData completionHandler) { + _lib._objc_msgSend_963( + _id, _lib._sel_cancelByProducingResumeData_1, completionHandler._id); } @override - NSXMLParser init() { + NSURLSessionDownloadTask init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLParser._(_ret, _lib, retain: true, release: true); + return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); } - static NSXMLParser new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLParser1, _lib._sel_new1); - return NSXMLParser._(_ret, _lib, retain: false, release: true); + static NSURLSessionDownloadTask new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionDownloadTask1, _lib._sel_new1); + return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); } - static NSXMLParser allocWithZone_( + static NSURLSessionDownloadTask allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLParser1, _lib._sel_allocWithZone_1, zone); - return NSXMLParser._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLSessionDownloadTask1, _lib._sel_allocWithZone_1, zone); + return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); } - static NSXMLParser alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLParser1, _lib._sel_alloc1); - return NSXMLParser._(_ret, _lib, retain: false, release: true); + static NSURLSessionDownloadTask alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionDownloadTask1, _lib._sel_alloc1); + return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -66079,7 +66565,7 @@ class NSXMLParser extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSXMLParser1, + _lib._class_NSURLSessionDownloadTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -66088,24 +66574,24 @@ class NSXMLParser extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLParser1, + _lib._objc_msgSend_15(_lib._class_NSURLSessionDownloadTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLParser1, _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12(_lib._class_NSURLSessionDownloadTask1, + _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSXMLParser1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLSessionDownloadTask1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSXMLParser1, + _lib._class_NSURLSessionDownloadTask1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -66114,7 +66600,7 @@ class NSXMLParser extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSXMLParser1, + _lib._class_NSURLSessionDownloadTask1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -66122,310 +66608,182 @@ class NSXMLParser extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSXMLParser1, + _lib._class_NSURLSessionDownloadTask1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_NSXMLParser1, _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionDownloadTask1, + _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLParser1, _lib._sel_classForKeyedUnarchiver1); + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionDownloadTask1, + _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSXMLParserExternalEntityResolvingPolicy { - static const int NSXMLParserResolveExternalEntitiesNever = 0; - static const int NSXMLParserResolveExternalEntitiesNoNetwork = 1; - static const int NSXMLParserResolveExternalEntitiesSameOriginOnly = 2; - static const int NSXMLParserResolveExternalEntitiesAlways = 3; +void _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); } -class NSFileWrapper extends NSObject { - NSFileWrapper._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSFileWrapper] that points to the same underlying object as [other]. - static NSFileWrapper castFrom(T other) { - return NSFileWrapper._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSFileWrapper] that wraps the given raw object pointer. - static NSFileWrapper castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSFileWrapper._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSFileWrapper]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSFileWrapper1); - } - - NSFileWrapper initWithURL_options_error_( - NSURL? url, int options, ffi.Pointer> outError) { - final _ret = _lib._objc_msgSend_970( - _id, - _lib._sel_initWithURL_options_error_1, - url?._id ?? ffi.nullptr, - options, - outError); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); - } - - NSFileWrapper initDirectoryWithFileWrappers_( - NSDictionary? childrenByPreferredName) { - final _ret = _lib._objc_msgSend_149( - _id, - _lib._sel_initDirectoryWithFileWrappers_1, - childrenByPreferredName?._id ?? ffi.nullptr); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); - } - - NSFileWrapper initRegularFileWithContents_(NSData? contents) { - final _ret = _lib._objc_msgSend_257(_id, - _lib._sel_initRegularFileWithContents_1, contents?._id ?? ffi.nullptr); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); - } - - NSFileWrapper initSymbolicLinkWithDestinationURL_(NSURL? url) { - final _ret = _lib._objc_msgSend_241( - _id, - _lib._sel_initSymbolicLinkWithDestinationURL_1, - url?._id ?? ffi.nullptr); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); - } - - NSFileWrapper initWithSerializedRepresentation_( - NSData? serializeRepresentation) { - final _ret = _lib._objc_msgSend_257( - _id, - _lib._sel_initWithSerializedRepresentation_1, - serializeRepresentation?._id ?? ffi.nullptr); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); - } - - NSFileWrapper initWithCoder_(NSCoder? inCoder) { - final _ret = _lib._objc_msgSend_42( - _id, _lib._sel_initWithCoder_1, inCoder?._id ?? ffi.nullptr); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); - } - - bool get directory { - return _lib._objc_msgSend_12(_id, _lib._sel_isDirectory1); - } - - bool get regularFile { - return _lib._objc_msgSend_12(_id, _lib._sel_isRegularFile1); - } - - bool get symbolicLink { - return _lib._objc_msgSend_12(_id, _lib._sel_isSymbolicLink1); - } - - NSString? get preferredFilename { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_preferredFilename1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set preferredFilename(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setPreferredFilename_1, value?._id ?? ffi.nullptr); - } - - NSString? get filename { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_filename1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } +final _ObjCBlock_ffiVoid_NSData_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSData_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSData_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSData_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - set filename(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setFilename_1, value?._id ?? ffi.nullptr); - } +void _ObjCBlock_ffiVoid_NSData_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_NSData_closureRegistry[block.ref.target.address] + as void Function(ffi.Pointer))(arg0); +} - NSDictionary? get fileAttributes { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_fileAttributes1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } +class ObjCBlock_ffiVoid_NSData extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSData._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); - set fileAttributes(NSDictionary? value) { - return _lib._objc_msgSend_171( - _id, _lib._sel_setFileAttributes_1, value?._id ?? ffi.nullptr); - } + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSData.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; - bool matchesContentsOfURL_(NSURL? url) { - return _lib._objc_msgSend_244( - _id, _lib._sel_matchesContentsOfURL_1, url?._id ?? ffi.nullptr); + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSData.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_NSData_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSData_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); } +} - bool readFromURL_options_error_( - NSURL? url, int options, ffi.Pointer> outError) { - return _lib._objc_msgSend_971(_id, _lib._sel_readFromURL_options_error_1, - url?._id ?? ffi.nullptr, options, outError); - } +class NSURLSessionStreamTask extends NSURLSessionTask { + NSURLSessionStreamTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); - bool writeToURL_options_originalContentsURL_error_( - NSURL? url, - int options, - NSURL? originalContentsURL, - ffi.Pointer> outError) { - return _lib._objc_msgSend_972( - _id, - _lib._sel_writeToURL_options_originalContentsURL_error_1, - url?._id ?? ffi.nullptr, - options, - originalContentsURL?._id ?? ffi.nullptr, - outError); + /// Returns a [NSURLSessionStreamTask] that points to the same underlying object as [other]. + static NSURLSessionStreamTask castFrom(T other) { + return NSURLSessionStreamTask._(other._id, other._lib, + retain: true, release: true); } - NSData? get serializedRepresentation { - final _ret = - _lib._objc_msgSend_39(_id, _lib._sel_serializedRepresentation1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + /// Returns a [NSURLSessionStreamTask] that wraps the given raw object pointer. + static NSURLSessionStreamTask castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionStreamTask._(other, lib, + retain: retain, release: release); } - NSString addFileWrapper_(NSFileWrapper? child) { - final _ret = _lib._objc_msgSend_973( - _id, _lib._sel_addFileWrapper_1, child?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLSessionStreamTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionStreamTask1); } - NSString addRegularFileWithContents_preferredFilename_( - NSData? data, NSString? fileName) { - final _ret = _lib._objc_msgSend_974( + void readDataOfMinLength_maxLength_timeout_completionHandler_( + int minBytes, + int maxBytes, + double timeout, + ObjCBlock_ffiVoid_NSData_bool_NSError completionHandler) { + _lib._objc_msgSend_967( _id, - _lib._sel_addRegularFileWithContents_preferredFilename_1, - data?._id ?? ffi.nullptr, - fileName?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - void removeFileWrapper_(NSFileWrapper? child) { - _lib._objc_msgSend_975( - _id, _lib._sel_removeFileWrapper_1, child?._id ?? ffi.nullptr); - } - - NSDictionary? get fileWrappers { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_fileWrappers1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - NSString keyForFileWrapper_(NSFileWrapper? child) { - final _ret = _lib._objc_msgSend_973( - _id, _lib._sel_keyForFileWrapper_1, child?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); - } - - NSData? get regularFileContents { - final _ret = _lib._objc_msgSend_39(_id, _lib._sel_regularFileContents1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSURL? get symbolicLinkDestinationURL { - final _ret = - _lib._objc_msgSend_40(_id, _lib._sel_symbolicLinkDestinationURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); - } - - NSObject initWithPath_(NSString? path) { - final _ret = _lib._objc_msgSend_30( - _id, _lib._sel_initWithPath_1, path?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - NSObject initSymbolicLinkWithDestination_(NSString? path) { - final _ret = _lib._objc_msgSend_30(_id, - _lib._sel_initSymbolicLinkWithDestination_1, path?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + _lib._sel_readDataOfMinLength_maxLength_timeout_completionHandler_1, + minBytes, + maxBytes, + timeout, + completionHandler._id); } - bool needsToBeUpdatedFromPath_(NSString? path) { - return _lib._objc_msgSend_59( - _id, _lib._sel_needsToBeUpdatedFromPath_1, path?._id ?? ffi.nullptr); + void writeData_timeout_completionHandler_(NSData? data, double timeout, + ObjCBlock_ffiVoid_NSError completionHandler) { + _lib._objc_msgSend_968(_id, _lib._sel_writeData_timeout_completionHandler_1, + data?._id ?? ffi.nullptr, timeout, completionHandler._id); } - bool updateFromPath_(NSString? path) { - return _lib._objc_msgSend_59( - _id, _lib._sel_updateFromPath_1, path?._id ?? ffi.nullptr); + void captureStreams() { + _lib._objc_msgSend_1(_id, _lib._sel_captureStreams1); } - bool writeToFile_atomically_updateFilenames_( - NSString? path, bool atomicFlag, bool updateFilenamesFlag) { - return _lib._objc_msgSend_976( - _id, - _lib._sel_writeToFile_atomically_updateFilenames_1, - path?._id ?? ffi.nullptr, - atomicFlag, - updateFilenamesFlag); + void closeWrite() { + _lib._objc_msgSend_1(_id, _lib._sel_closeWrite1); } - NSString addFileWithPath_(NSString? path) { - final _ret = _lib._objc_msgSend_64( - _id, _lib._sel_addFileWithPath_1, path?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + void closeRead() { + _lib._objc_msgSend_1(_id, _lib._sel_closeRead1); } - NSString addSymbolicLinkWithDestination_preferredFilename_( - NSString? path, NSString? filename) { - final _ret = _lib._objc_msgSend_339( - _id, - _lib._sel_addSymbolicLinkWithDestination_preferredFilename_1, - path?._id ?? ffi.nullptr, - filename?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + void startSecureConnection() { + _lib._objc_msgSend_1(_id, _lib._sel_startSecureConnection1); } - NSString symbolicLinkDestination() { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_symbolicLinkDestination1); - return NSString._(_ret, _lib, retain: true, release: true); + void stopSecureConnection() { + _lib._objc_msgSend_1(_id, _lib._sel_stopSecureConnection1); } @override - NSFileWrapper init() { + NSURLSessionStreamTask init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSFileWrapper._(_ret, _lib, retain: true, release: true); + return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); } - static NSFileWrapper new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileWrapper1, _lib._sel_new1); - return NSFileWrapper._(_ret, _lib, retain: false, release: true); + static NSURLSessionStreamTask new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionStreamTask1, _lib._sel_new1); + return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); } - static NSFileWrapper allocWithZone_( + static NSURLSessionStreamTask allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSFileWrapper1, _lib._sel_allocWithZone_1, zone); - return NSFileWrapper._(_ret, _lib, retain: false, release: true); + _lib._class_NSURLSessionStreamTask1, _lib._sel_allocWithZone_1, zone); + return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); } - static NSFileWrapper alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSFileWrapper1, _lib._sel_alloc1); - return NSFileWrapper._(_ret, _lib, retain: false, release: true); + static NSURLSessionStreamTask alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionStreamTask1, _lib._sel_alloc1); + return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -66434,7 +66792,7 @@ class NSFileWrapper extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSFileWrapper1, + _lib._class_NSURLSessionStreamTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -66443,24 +66801,24 @@ class NSFileWrapper extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSFileWrapper1, + _lib._objc_msgSend_15(_lib._class_NSURLSessionStreamTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSFileWrapper1, _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12(_lib._class_NSURLSessionStreamTask1, + _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSFileWrapper1, _lib._sel_useStoredAccessor1); + _lib._class_NSURLSessionStreamTask1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSFileWrapper1, + _lib._class_NSURLSessionStreamTask1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -66469,7 +66827,7 @@ class NSFileWrapper extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSFileWrapper1, + _lib._class_NSURLSessionStreamTask1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -66477,94 +66835,180 @@ class NSFileWrapper extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSFileWrapper1, + _lib._class_NSURLSessionStreamTask1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_NSFileWrapper1, _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionStreamTask1, + _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSFileWrapper1, _lib._sel_classForKeyedUnarchiver1); + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionStreamTask1, + _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSFileWrapperReadingOptions { - static const int NSFileWrapperReadingImmediate = 1; - static const int NSFileWrapperReadingWithoutMapping = 2; +void _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function(ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); } -abstract class NSFileWrapperWritingOptions { - static const int NSFileWrapperWritingAtomic = 1; - static const int NSFileWrapperWritingWithNameUpdating = 2; +final _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( + Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); } -class NSURLSession extends NSObject { - NSURLSession._(ffi.Pointer id, SentryCocoa lib, +void _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, bool, + ffi.Pointer))(arg0, arg1, arg2); +} + +class ObjCBlock_ffiVoid_NSData_bool_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSData_bool_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, bool arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure(fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call( + ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Bool arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + bool arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } +} + +class NSNetService extends NSObject { + NSNetService._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLSession] that points to the same underlying object as [other]. - static NSURLSession castFrom(T other) { - return NSURLSession._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSNetService] that points to the same underlying object as [other]. + static NSNetService castFrom(T other) { + return NSNetService._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLSession] that wraps the given raw object pointer. - static NSURLSession castFromPointer( + /// Returns a [NSNetService] that wraps the given raw object pointer. + static NSNetService castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLSession._(other, lib, retain: retain, release: release); + return NSNetService._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLSession]. + /// Returns whether [obj] is an instance of [NSNetService]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSURLSession1); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSNetService1); } - static NSURLSession? getSharedSession(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_977( - _lib._class_NSURLSession1, _lib._sel_sharedSession1); - return _ret.address == 0 - ? null - : NSURLSession._(_ret, _lib, retain: true, release: true); + NSNetService initWithDomain_type_name_port_( + NSString? domain, NSString? type, NSString? name, int port) { + final _ret = _lib._objc_msgSend_970( + _id, + _lib._sel_initWithDomain_type_name_port_1, + domain?._id ?? ffi.nullptr, + type?._id ?? ffi.nullptr, + name?._id ?? ffi.nullptr, + port); + return NSNetService._(_ret, _lib, retain: true, release: true); } - static NSURLSession sessionWithConfiguration_( - SentryCocoa _lib, NSURLSessionConfiguration? configuration) { - final _ret = _lib._objc_msgSend_988( - _lib._class_NSURLSession1, - _lib._sel_sessionWithConfiguration_1, - configuration?._id ?? ffi.nullptr); - return NSURLSession._(_ret, _lib, retain: true, release: true); + NSNetService initWithDomain_type_name_( + NSString? domain, NSString? type, NSString? name) { + final _ret = _lib._objc_msgSend_26( + _id, + _lib._sel_initWithDomain_type_name_1, + domain?._id ?? ffi.nullptr, + type?._id ?? ffi.nullptr, + name?._id ?? ffi.nullptr); + return NSNetService._(_ret, _lib, retain: true, release: true); } - static NSURLSession sessionWithConfiguration_delegate_delegateQueue_( - SentryCocoa _lib, - NSURLSessionConfiguration? configuration, - NSObject? delegate, - NSOperationQueue? queue) { - final _ret = _lib._objc_msgSend_989( - _lib._class_NSURLSession1, - _lib._sel_sessionWithConfiguration_delegate_delegateQueue_1, - configuration?._id ?? ffi.nullptr, - delegate?._id ?? ffi.nullptr, - queue?._id ?? ffi.nullptr); - return NSURLSession._(_ret, _lib, retain: true, release: true); + void scheduleInRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_scheduleInRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); } - NSOperationQueue? get delegateQueue { - final _ret = _lib._objc_msgSend_858(_id, _lib._sel_delegateQueue1); - return _ret.address == 0 - ? null - : NSOperationQueue._(_ret, _lib, retain: true, release: true); + void removeFromRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { + _lib._objc_msgSend_533(_id, _lib._sel_removeFromRunLoop_forMode_1, + aRunLoop?._id ?? ffi.nullptr, mode._id); } NSObject? get delegate { @@ -66574,251 +67018,143 @@ class NSURLSession extends NSObject { : NSObject._(_ret, _lib, retain: true, release: true); } - NSURLSessionConfiguration? get configuration { - final _ret = _lib._objc_msgSend_978(_id, _lib._sel_configuration1); - return _ret.address == 0 - ? null - : NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); - } - - NSString? get sessionDescription { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_sessionDescription1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + set delegate(NSObject? value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); } - set sessionDescription(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setSessionDescription_1, value?._id ?? ffi.nullptr); + bool get includesPeerToPeer { + return _lib._objc_msgSend_12(_id, _lib._sel_includesPeerToPeer1); } - void finishTasksAndInvalidate() { - _lib._objc_msgSend_1(_id, _lib._sel_finishTasksAndInvalidate1); + set includesPeerToPeer(bool value) { + return _lib._objc_msgSend_492( + _id, _lib._sel_setIncludesPeerToPeer_1, value); } - void invalidateAndCancel() { - _lib._objc_msgSend_1(_id, _lib._sel_invalidateAndCancel1); + NSString? get name { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - void resetWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { - _lib._objc_msgSend_497( - _id, _lib._sel_resetWithCompletionHandler_1, completionHandler._id); + NSString? get type { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_type1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - void flushWithCompletionHandler_(ObjCBlock_ffiVoid completionHandler) { - _lib._objc_msgSend_497( - _id, _lib._sel_flushWithCompletionHandler_1, completionHandler._id); + NSString? get domain { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_domain1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - void getTasksWithCompletionHandler_( - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray completionHandler) { - _lib._objc_msgSend_990( - _id, _lib._sel_getTasksWithCompletionHandler_1, completionHandler._id); + NSString? get hostName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_hostName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - void getAllTasksWithCompletionHandler_( - ObjCBlock_ffiVoid_NSArray completionHandler) { - _lib._objc_msgSend_991(_id, _lib._sel_getAllTasksWithCompletionHandler_1, - completionHandler._id); + NSArray? get addresses { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_addresses1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - NSURLSessionDataTask dataTaskWithRequest_(NSURLRequest? request) { - final _ret = _lib._objc_msgSend_992( - _id, _lib._sel_dataTaskWithRequest_1, request?._id ?? ffi.nullptr); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + int get port { + return _lib._objc_msgSend_78(_id, _lib._sel_port1); } - NSURLSessionDataTask dataTaskWithURL_(NSURL? url) { - final _ret = _lib._objc_msgSend_993( - _id, _lib._sel_dataTaskWithURL_1, url?._id ?? ffi.nullptr); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); + void publish() { + _lib._objc_msgSend_1(_id, _lib._sel_publish1); } - NSURLSessionUploadTask uploadTaskWithRequest_fromFile_( - NSURLRequest? request, NSURL? fileURL) { - final _ret = _lib._objc_msgSend_994( - _id, - _lib._sel_uploadTaskWithRequest_fromFile_1, - request?._id ?? ffi.nullptr, - fileURL?._id ?? ffi.nullptr); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + void publishWithOptions_(int options) { + _lib._objc_msgSend_971(_id, _lib._sel_publishWithOptions_1, options); } - NSURLSessionUploadTask uploadTaskWithRequest_fromData_( - NSURLRequest? request, NSData? bodyData) { - final _ret = _lib._objc_msgSend_995( - _id, - _lib._sel_uploadTaskWithRequest_fromData_1, - request?._id ?? ffi.nullptr, - bodyData?._id ?? ffi.nullptr); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + void resolve() { + _lib._objc_msgSend_1(_id, _lib._sel_resolve1); } - NSURLSessionUploadTask uploadTaskWithStreamedRequest_(NSURLRequest? request) { - final _ret = _lib._objc_msgSend_996(_id, - _lib._sel_uploadTaskWithStreamedRequest_1, request?._id ?? ffi.nullptr); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + void stop() { + _lib._objc_msgSend_1(_id, _lib._sel_stop1); } - NSURLSessionDownloadTask downloadTaskWithRequest_(NSURLRequest? request) { - final _ret = _lib._objc_msgSend_998( - _id, _lib._sel_downloadTaskWithRequest_1, request?._id ?? ffi.nullptr); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + static NSDictionary dictionaryFromTXTRecordData_( + SentryCocoa _lib, NSData? txtData) { + final _ret = _lib._objc_msgSend_972(_lib._class_NSNetService1, + _lib._sel_dictionaryFromTXTRecordData_1, txtData?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); } - NSURLSessionDownloadTask downloadTaskWithURL_(NSURL? url) { - final _ret = _lib._objc_msgSend_999( - _id, _lib._sel_downloadTaskWithURL_1, url?._id ?? ffi.nullptr); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + static NSData dataFromTXTRecordDictionary_( + SentryCocoa _lib, NSDictionary? txtDictionary) { + final _ret = _lib._objc_msgSend_973( + _lib._class_NSNetService1, + _lib._sel_dataFromTXTRecordDictionary_1, + txtDictionary?._id ?? ffi.nullptr); + return NSData._(_ret, _lib, retain: true, release: true); } - NSURLSessionDownloadTask downloadTaskWithResumeData_(NSData? resumeData) { - final _ret = _lib._objc_msgSend_1000(_id, - _lib._sel_downloadTaskWithResumeData_1, resumeData?._id ?? ffi.nullptr); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + void resolveWithTimeout_(double timeout) { + _lib._objc_msgSend_505(_id, _lib._sel_resolveWithTimeout_1, timeout); } - NSURLSessionStreamTask streamTaskWithHostName_port_( - NSString? hostname, int port) { - final _ret = _lib._objc_msgSend_1003( - _id, - _lib._sel_streamTaskWithHostName_port_1, - hostname?._id ?? ffi.nullptr, - port); - return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + bool getInputStream_outputStream_( + ffi.Pointer> inputStream, + ffi.Pointer> outputStream) { + return _lib._objc_msgSend_974(_id, _lib._sel_getInputStream_outputStream_1, + inputStream, outputStream); } - NSURLSessionStreamTask streamTaskWithNetService_(NSNetService? service) { - final _ret = _lib._objc_msgSend_1009( - _id, _lib._sel_streamTaskWithNetService_1, service?._id ?? ffi.nullptr); - return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + bool setTXTRecordData_(NSData? recordData) { + return _lib._objc_msgSend_23( + _id, _lib._sel_setTXTRecordData_1, recordData?._id ?? ffi.nullptr); } - NSURLSessionWebSocketTask webSocketTaskWithURL_(NSURL? url) { - final _ret = _lib._objc_msgSend_1016( - _id, _lib._sel_webSocketTaskWithURL_1, url?._id ?? ffi.nullptr); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + NSData TXTRecordData() { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_TXTRecordData1); + return NSData._(_ret, _lib, retain: true, release: true); } - NSURLSessionWebSocketTask webSocketTaskWithURL_protocols_( - NSURL? url, NSArray? protocols) { - final _ret = _lib._objc_msgSend_1017( - _id, - _lib._sel_webSocketTaskWithURL_protocols_1, - url?._id ?? ffi.nullptr, - protocols?._id ?? ffi.nullptr); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + void startMonitoring() { + _lib._objc_msgSend_1(_id, _lib._sel_startMonitoring1); } - NSURLSessionWebSocketTask webSocketTaskWithRequest_(NSURLRequest? request) { - final _ret = _lib._objc_msgSend_1018( - _id, _lib._sel_webSocketTaskWithRequest_1, request?._id ?? ffi.nullptr); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + void stopMonitoring() { + _lib._objc_msgSend_1(_id, _lib._sel_stopMonitoring1); } @override - NSURLSession init() { + NSNetService init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSession._(_ret, _lib, retain: true, release: true); + return NSNetService._(_ret, _lib, retain: true, release: true); } - static NSURLSession new1(SentryCocoa _lib) { + static NSNetService new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSession1, _lib._sel_new1); - return NSURLSession._(_ret, _lib, retain: false, release: true); - } - - NSURLSessionDataTask dataTaskWithRequest_completionHandler_( - NSURLRequest? request, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1019( - _id, - _lib._sel_dataTaskWithRequest_completionHandler_1, - request?._id ?? ffi.nullptr, - completionHandler._id); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); - } - - NSURLSessionDataTask dataTaskWithURL_completionHandler_(NSURL? url, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1020( - _id, - _lib._sel_dataTaskWithURL_completionHandler_1, - url?._id ?? ffi.nullptr, - completionHandler._id); - return NSURLSessionDataTask._(_ret, _lib, retain: true, release: true); - } - - NSURLSessionUploadTask uploadTaskWithRequest_fromFile_completionHandler_( - NSURLRequest? request, - NSURL? fileURL, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1021( - _id, - _lib._sel_uploadTaskWithRequest_fromFile_completionHandler_1, - request?._id ?? ffi.nullptr, - fileURL?._id ?? ffi.nullptr, - completionHandler._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); - } - - NSURLSessionUploadTask uploadTaskWithRequest_fromData_completionHandler_( - NSURLRequest? request, - NSData? bodyData, - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1022( - _id, - _lib._sel_uploadTaskWithRequest_fromData_completionHandler_1, - request?._id ?? ffi.nullptr, - bodyData?._id ?? ffi.nullptr, - completionHandler._id); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); - } - - NSURLSessionDownloadTask downloadTaskWithRequest_completionHandler_( - NSURLRequest? request, - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1023( - _id, - _lib._sel_downloadTaskWithRequest_completionHandler_1, - request?._id ?? ffi.nullptr, - completionHandler._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); - } - - NSURLSessionDownloadTask downloadTaskWithURL_completionHandler_(NSURL? url, - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1024( - _id, - _lib._sel_downloadTaskWithURL_completionHandler_1, - url?._id ?? ffi.nullptr, - completionHandler._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); - } - - NSURLSessionDownloadTask downloadTaskWithResumeData_completionHandler_( - NSData? resumeData, - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError completionHandler) { - final _ret = _lib._objc_msgSend_1025( - _id, - _lib._sel_downloadTaskWithResumeData_completionHandler_1, - resumeData?._id ?? ffi.nullptr, - completionHandler._id); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + _lib._objc_msgSend_2(_lib._class_NSNetService1, _lib._sel_new1); + return NSNetService._(_ret, _lib, retain: false, release: true); } - static NSURLSession allocWithZone_( + static NSNetService allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSession1, _lib._sel_allocWithZone_1, zone); - return NSURLSession._(_ret, _lib, retain: false, release: true); + _lib._class_NSNetService1, _lib._sel_allocWithZone_1, zone); + return NSNetService._(_ret, _lib, retain: false, release: true); } - static NSURLSession alloc(SentryCocoa _lib) { + static NSNetService alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSURLSession1, _lib._sel_alloc1); - return NSURLSession._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSNetService1, _lib._sel_alloc1); + return NSNetService._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -66827,7 +67163,7 @@ class NSURLSession extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLSession1, + _lib._class_NSNetService1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -66836,24 +67172,24 @@ class NSURLSession extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSession1, + _lib._objc_msgSend_15(_lib._class_NSNetService1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLSession1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSNetService1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLSession1, _lib._sel_useStoredAccessor1); + _lib._class_NSNetService1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLSession1, + _lib._class_NSNetService1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -66862,7 +67198,7 @@ class NSURLSession extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLSession1, + _lib._class_NSNetService1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -66870,7 +67206,7 @@ class NSURLSession extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLSession1, + _lib._class_NSNetService1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -66878,389 +67214,271 @@ class NSURLSession extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSURLSession1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSNetService1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSession1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSNetService1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSURLSessionConfiguration extends NSObject { - NSURLSessionConfiguration._(ffi.Pointer id, SentryCocoa lib, +abstract class NSNetServiceOptions { + static const int NSNetServiceNoAutoRename = 1; + static const int NSNetServiceListenForConnections = 2; +} + +class NSURLSessionWebSocketTask extends NSURLSessionTask { + NSURLSessionWebSocketTask._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLSessionConfiguration] that points to the same underlying object as [other]. - static NSURLSessionConfiguration castFrom(T other) { - return NSURLSessionConfiguration._(other._id, other._lib, + /// Returns a [NSURLSessionWebSocketTask] that points to the same underlying object as [other]. + static NSURLSessionWebSocketTask castFrom(T other) { + return NSURLSessionWebSocketTask._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLSessionConfiguration] that wraps the given raw object pointer. - static NSURLSessionConfiguration castFromPointer( + /// Returns a [NSURLSessionWebSocketTask] that wraps the given raw object pointer. + static NSURLSessionWebSocketTask castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLSessionConfiguration._(other, lib, + return NSURLSessionWebSocketTask._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLSessionConfiguration]. + /// Returns whether [obj] is an instance of [NSURLSessionWebSocketTask]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionConfiguration1); - } - - static NSURLSessionConfiguration? getDefaultSessionConfiguration( - SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_978(_lib._class_NSURLSessionConfiguration1, - _lib._sel_defaultSessionConfiguration1); - return _ret.address == 0 - ? null - : NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); - } - - static NSURLSessionConfiguration? getEphemeralSessionConfiguration( - SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_978(_lib._class_NSURLSessionConfiguration1, - _lib._sel_ephemeralSessionConfiguration1); - return _ret.address == 0 - ? null - : NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); - } - - static NSURLSessionConfiguration - backgroundSessionConfigurationWithIdentifier_( - SentryCocoa _lib, NSString? identifier) { - final _ret = _lib._objc_msgSend_979( - _lib._class_NSURLSessionConfiguration1, - _lib._sel_backgroundSessionConfigurationWithIdentifier_1, - identifier?._id ?? ffi.nullptr); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); - } - - NSString? get identifier { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_identifier1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - int get requestCachePolicy { - return _lib._objc_msgSend_816(_id, _lib._sel_requestCachePolicy1); - } - - set requestCachePolicy(int value) { - return _lib._objc_msgSend_956( - _id, _lib._sel_setRequestCachePolicy_1, value); - } - - double get timeoutIntervalForRequest { - return _lib._objc_msgSend_155(_id, _lib._sel_timeoutIntervalForRequest1); - } - - set timeoutIntervalForRequest(double value) { - return _lib._objc_msgSend_506( - _id, _lib._sel_setTimeoutIntervalForRequest_1, value); - } - - double get timeoutIntervalForResource { - return _lib._objc_msgSend_155(_id, _lib._sel_timeoutIntervalForResource1); - } - - set timeoutIntervalForResource(double value) { - return _lib._objc_msgSend_506( - _id, _lib._sel_setTimeoutIntervalForResource_1, value); - } - - int get networkServiceType { - return _lib._objc_msgSend_817(_id, _lib._sel_networkServiceType1); - } - - set networkServiceType(int value) { - return _lib._objc_msgSend_957( - _id, _lib._sel_setNetworkServiceType_1, value); - } - - bool get allowsCellularAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsCellularAccess1); - } - - set allowsCellularAccess(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setAllowsCellularAccess_1, value); - } - - bool get allowsExpensiveNetworkAccess { - return _lib._objc_msgSend_12(_id, _lib._sel_allowsExpensiveNetworkAccess1); - } - - set allowsExpensiveNetworkAccess(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setAllowsExpensiveNetworkAccess_1, value); - } - - bool get allowsConstrainedNetworkAccess { - return _lib._objc_msgSend_12( - _id, _lib._sel_allowsConstrainedNetworkAccess1); - } - - set allowsConstrainedNetworkAccess(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setAllowsConstrainedNetworkAccess_1, value); - } - - bool get requiresDNSSECValidation { - return _lib._objc_msgSend_12(_id, _lib._sel_requiresDNSSECValidation1); - } - - set requiresDNSSECValidation(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setRequiresDNSSECValidation_1, value); - } - - bool get waitsForConnectivity { - return _lib._objc_msgSend_12(_id, _lib._sel_waitsForConnectivity1); + obj._lib._class_NSURLSessionWebSocketTask1); } - set waitsForConnectivity(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setWaitsForConnectivity_1, value); + void sendMessage_completionHandler_(NSURLSessionWebSocketMessage? message, + ObjCBlock_ffiVoid_NSError completionHandler) { + _lib._objc_msgSend_977(_id, _lib._sel_sendMessage_completionHandler_1, + message?._id ?? ffi.nullptr, completionHandler._id); } - bool get discretionary { - return _lib._objc_msgSend_12(_id, _lib._sel_isDiscretionary1); + void receiveMessageWithCompletionHandler_( + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError + completionHandler) { + _lib._objc_msgSend_978(_id, _lib._sel_receiveMessageWithCompletionHandler_1, + completionHandler._id); } - set discretionary(bool value) { - return _lib._objc_msgSend_492(_id, _lib._sel_setDiscretionary_1, value); + void sendPingWithPongReceiveHandler_( + ObjCBlock_ffiVoid_NSError pongReceiveHandler) { + _lib._objc_msgSend_979(_id, _lib._sel_sendPingWithPongReceiveHandler_1, + pongReceiveHandler._id); } - NSString? get sharedContainerIdentifier { - final _ret = - _lib._objc_msgSend_20(_id, _lib._sel_sharedContainerIdentifier1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + void cancelWithCloseCode_reason_(int closeCode, NSData? reason) { + _lib._objc_msgSend_980(_id, _lib._sel_cancelWithCloseCode_reason_1, + closeCode, reason?._id ?? ffi.nullptr); } - set sharedContainerIdentifier(NSString? value) { - return _lib._objc_msgSend_509(_id, _lib._sel_setSharedContainerIdentifier_1, - value?._id ?? ffi.nullptr); + int get maximumMessageSize { + return _lib._objc_msgSend_78(_id, _lib._sel_maximumMessageSize1); } - bool get sessionSendsLaunchEvents { - return _lib._objc_msgSend_12(_id, _lib._sel_sessionSendsLaunchEvents1); + set maximumMessageSize(int value) { + return _lib._objc_msgSend_590( + _id, _lib._sel_setMaximumMessageSize_1, value); } - set sessionSendsLaunchEvents(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setSessionSendsLaunchEvents_1, value); + int get closeCode { + return _lib._objc_msgSend_981(_id, _lib._sel_closeCode1); } - NSDictionary? get connectionProxyDictionary { - final _ret = - _lib._objc_msgSend_170(_id, _lib._sel_connectionProxyDictionary1); + NSData? get closeReason { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_closeReason1); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); - } - - set connectionProxyDictionary(NSDictionary? value) { - return _lib._objc_msgSend_171(_id, _lib._sel_setConnectionProxyDictionary_1, - value?._id ?? ffi.nullptr); - } - - int get TLSMinimumSupportedProtocol { - return _lib._objc_msgSend_980(_id, _lib._sel_TLSMinimumSupportedProtocol1); - } - - set TLSMinimumSupportedProtocol(int value) { - return _lib._objc_msgSend_981( - _id, _lib._sel_setTLSMinimumSupportedProtocol_1, value); + : NSData._(_ret, _lib, retain: true, release: true); } - int get TLSMaximumSupportedProtocol { - return _lib._objc_msgSend_980(_id, _lib._sel_TLSMaximumSupportedProtocol1); + @override + NSURLSessionWebSocketTask init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); } - set TLSMaximumSupportedProtocol(int value) { - return _lib._objc_msgSend_981( - _id, _lib._sel_setTLSMaximumSupportedProtocol_1, value); + static NSURLSessionWebSocketTask new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionWebSocketTask1, _lib._sel_new1); + return NSURLSessionWebSocketTask._(_ret, _lib, + retain: false, release: true); } - int get TLSMinimumSupportedProtocolVersion { - return _lib._objc_msgSend_982( - _id, _lib._sel_TLSMinimumSupportedProtocolVersion1); + static NSURLSessionWebSocketTask allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionWebSocketTask1, + _lib._sel_allocWithZone_1, zone); + return NSURLSessionWebSocketTask._(_ret, _lib, + retain: false, release: true); } - set TLSMinimumSupportedProtocolVersion(int value) { - return _lib._objc_msgSend_983( - _id, _lib._sel_setTLSMinimumSupportedProtocolVersion_1, value); + static NSURLSessionWebSocketTask alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSURLSessionWebSocketTask1, _lib._sel_alloc1); + return NSURLSessionWebSocketTask._(_ret, _lib, + retain: false, release: true); } - int get TLSMaximumSupportedProtocolVersion { - return _lib._objc_msgSend_982( - _id, _lib._sel_TLSMaximumSupportedProtocolVersion1); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSURLSessionWebSocketTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); } - set TLSMaximumSupportedProtocolVersion(int value) { - return _lib._objc_msgSend_983( - _id, _lib._sel_setTLSMaximumSupportedProtocolVersion_1, value); + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSURLSessionWebSocketTask1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } - bool get HTTPShouldUsePipelining { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldUsePipelining1); + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketTask1, + _lib._sel_accessInstanceVariablesDirectly1); } - set HTTPShouldUsePipelining(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setHTTPShouldUsePipelining_1, value); + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSURLSessionWebSocketTask1, _lib._sel_useStoredAccessor1); } - bool get HTTPShouldSetCookies { - return _lib._objc_msgSend_12(_id, _lib._sel_HTTPShouldSetCookies1); + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSessionWebSocketTask1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); } - set HTTPShouldSetCookies(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setHTTPShouldSetCookies_1, value); + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSessionWebSocketTask1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); } - int get HTTPCookieAcceptPolicy { - return _lib._objc_msgSend_813(_id, _lib._sel_HTTPCookieAcceptPolicy1); + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSessionWebSocketTask1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); } - set HTTPCookieAcceptPolicy(int value) { - return _lib._objc_msgSend_814( - _id, _lib._sel_setHTTPCookieAcceptPolicy_1, value); + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionWebSocketTask1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); } - NSDictionary? get HTTPAdditionalHeaders { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_HTTPAdditionalHeaders1); - return _ret.address == 0 - ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionWebSocketTask1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); } +} - set HTTPAdditionalHeaders(NSDictionary? value) { - return _lib._objc_msgSend_171( - _id, _lib._sel_setHTTPAdditionalHeaders_1, value?._id ?? ffi.nullptr); - } +class NSURLSessionWebSocketMessage extends NSObject { + NSURLSessionWebSocketMessage._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); - int get HTTPMaximumConnectionsPerHost { - return _lib._objc_msgSend_78(_id, _lib._sel_HTTPMaximumConnectionsPerHost1); + /// Returns a [NSURLSessionWebSocketMessage] that points to the same underlying object as [other]. + static NSURLSessionWebSocketMessage castFrom( + T other) { + return NSURLSessionWebSocketMessage._(other._id, other._lib, + retain: true, release: true); } - set HTTPMaximumConnectionsPerHost(int value) { - return _lib._objc_msgSend_590( - _id, _lib._sel_setHTTPMaximumConnectionsPerHost_1, value); + /// Returns a [NSURLSessionWebSocketMessage] that wraps the given raw object pointer. + static NSURLSessionWebSocketMessage castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSURLSessionWebSocketMessage._(other, lib, + retain: retain, release: release); } - NSHTTPCookieStorage? get HTTPCookieStorage { - final _ret = _lib._objc_msgSend_807(_id, _lib._sel_HTTPCookieStorage1); - return _ret.address == 0 - ? null - : NSHTTPCookieStorage._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSURLSessionWebSocketMessage]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_NSURLSessionWebSocketMessage1); } - set HTTPCookieStorage(NSHTTPCookieStorage? value) { - return _lib._objc_msgSend_984( - _id, _lib._sel_setHTTPCookieStorage_1, value?._id ?? ffi.nullptr); + NSURLSessionWebSocketMessage initWithData_(NSData? data) { + final _ret = _lib._objc_msgSend_257( + _id, _lib._sel_initWithData_1, data?._id ?? ffi.nullptr); + return NSURLSessionWebSocketMessage._(_ret, _lib, + retain: true, release: true); } - NSURLCredentialStorage? get URLCredentialStorage { - final _ret = _lib._objc_msgSend_942(_id, _lib._sel_URLCredentialStorage1); - return _ret.address == 0 - ? null - : NSURLCredentialStorage._(_ret, _lib, retain: true, release: true); + NSURLSessionWebSocketMessage initWithString_(NSString? string) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithString_1, string?._id ?? ffi.nullptr); + return NSURLSessionWebSocketMessage._(_ret, _lib, + retain: true, release: true); } - set URLCredentialStorage(NSURLCredentialStorage? value) { - return _lib._objc_msgSend_985( - _id, _lib._sel_setURLCredentialStorage_1, value?._id ?? ffi.nullptr); + int get type { + return _lib._objc_msgSend_976(_id, _lib._sel_type1); } - NSURLCache? get URLCache { - final _ret = _lib._objc_msgSend_912(_id, _lib._sel_URLCache1); + NSData? get data { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_data1); return _ret.address == 0 ? null - : NSURLCache._(_ret, _lib, retain: true, release: true); - } - - set URLCache(NSURLCache? value) { - return _lib._objc_msgSend_913( - _id, _lib._sel_setURLCache_1, value?._id ?? ffi.nullptr); - } - - bool get shouldUseExtendedBackgroundIdleMode { - return _lib._objc_msgSend_12( - _id, _lib._sel_shouldUseExtendedBackgroundIdleMode1); - } - - set shouldUseExtendedBackgroundIdleMode(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setShouldUseExtendedBackgroundIdleMode_1, value); + : NSData._(_ret, _lib, retain: true, release: true); } - NSArray? get protocolClasses { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_protocolClasses1); + NSString? get string { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_string1); return _ret.address == 0 ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - set protocolClasses(NSArray? value) { - return _lib._objc_msgSend_765( - _id, _lib._sel_setProtocolClasses_1, value?._id ?? ffi.nullptr); - } - - int get multipathServiceType { - return _lib._objc_msgSend_986(_id, _lib._sel_multipathServiceType1); - } - - set multipathServiceType(int value) { - return _lib._objc_msgSend_987( - _id, _lib._sel_setMultipathServiceType_1, value); + : NSString._(_ret, _lib, retain: true, release: true); } @override - NSURLSessionConfiguration init() { + NSURLSessionWebSocketMessage init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); + return NSURLSessionWebSocketMessage._(_ret, _lib, + retain: true, release: true); } - static NSURLSessionConfiguration new1(SentryCocoa _lib) { + static NSURLSessionWebSocketMessage new1(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionConfiguration1, _lib._sel_new1); - return NSURLSessionConfiguration._(_ret, _lib, + _lib._class_NSURLSessionWebSocketMessage1, _lib._sel_new1); + return NSURLSessionWebSocketMessage._(_ret, _lib, retain: false, release: true); } - static NSURLSessionConfiguration backgroundSessionConfiguration_( - SentryCocoa _lib, NSString? identifier) { - final _ret = _lib._objc_msgSend_979( - _lib._class_NSURLSessionConfiguration1, - _lib._sel_backgroundSessionConfiguration_1, - identifier?._id ?? ffi.nullptr); - return NSURLSessionConfiguration._(_ret, _lib, retain: true, release: true); - } - - static NSURLSessionConfiguration allocWithZone_( + static NSURLSessionWebSocketMessage allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionConfiguration1, + final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionWebSocketMessage1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionConfiguration._(_ret, _lib, + return NSURLSessionWebSocketMessage._(_ret, _lib, retain: false, release: true); } - static NSURLSessionConfiguration alloc(SentryCocoa _lib) { + static NSURLSessionWebSocketMessage alloc(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionConfiguration1, _lib._sel_alloc1); - return NSURLSessionConfiguration._(_ret, _lib, + _lib._class_NSURLSessionWebSocketMessage1, _lib._sel_alloc1); + return NSURLSessionWebSocketMessage._(_ret, _lib, retain: false, release: true); } @@ -67270,7 +67488,7 @@ class NSURLSessionConfiguration extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLSessionConfiguration1, + _lib._class_NSURLSessionWebSocketMessage1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -67279,92 +67497,292 @@ class NSURLSessionConfiguration extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionConfiguration1, + _lib._objc_msgSend_15(_lib._class_NSURLSessionWebSocketMessage1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionConfiguration1, + return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketMessage1, _lib._sel_accessInstanceVariablesDirectly1); } - static bool useStoredAccessor(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionConfiguration1, _lib._sel_useStoredAccessor1); - } + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_useStoredAccessor1); + } + + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); + } + + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); + } + + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); + } + + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionWebSocketMessage1, + _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); + } +} + +abstract class NSURLSessionWebSocketMessageType { + static const int NSURLSessionWebSocketMessageTypeData = 0; + static const int NSURLSessionWebSocketMessageTypeString = 1; +} + +void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>()(arg0, arg1); +} + +final _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex = + 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[id] = + fn; + return ffi.Pointer.fromAddress(id); +} + +void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1) { + return (_ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[ + block.ref.target.address] + as void Function( + ffi.Pointer, ffi.Pointer))(arg0, arg1); +} - static NSSet keyPathsForValuesAffectingValueForKey_( - SentryCocoa _lib, NSString? key) { - final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLSessionConfiguration1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key?._id ?? ffi.nullptr); - return NSSet._(_ret, _lib, retain: true, release: true); - } +class ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError + extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); - static bool automaticallyNotifiesObserversForKey_( - SentryCocoa _lib, NSString? key) { - return _lib._objc_msgSend_59( - _lib._class_NSURLSessionConfiguration1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key?._id ?? ffi.nullptr); - } + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer arg0, + ffi.Pointer arg1)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; - static void setKeys_triggerChangeNotificationsForDependentKey_( - SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { - _lib._objc_msgSend_82( - _lib._class_NSURLSessionConfiguration1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys?._id ?? ffi.nullptr, - dependentKey?._id ?? ffi.nullptr); + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>()(_id, arg0, arg1); } +} - static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionConfiguration1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } +abstract class NSURLSessionWebSocketCloseCode { + static const int NSURLSessionWebSocketCloseCodeInvalid = 0; + static const int NSURLSessionWebSocketCloseCodeNormalClosure = 1000; + static const int NSURLSessionWebSocketCloseCodeGoingAway = 1001; + static const int NSURLSessionWebSocketCloseCodeProtocolError = 1002; + static const int NSURLSessionWebSocketCloseCodeUnsupportedData = 1003; + static const int NSURLSessionWebSocketCloseCodeNoStatusReceived = 1005; + static const int NSURLSessionWebSocketCloseCodeAbnormalClosure = 1006; + static const int NSURLSessionWebSocketCloseCodeInvalidFramePayloadData = 1007; + static const int NSURLSessionWebSocketCloseCodePolicyViolation = 1008; + static const int NSURLSessionWebSocketCloseCodeMessageTooBig = 1009; + static const int NSURLSessionWebSocketCloseCodeMandatoryExtensionMissing = + 1010; + static const int NSURLSessionWebSocketCloseCodeInternalServerError = 1011; + static const int NSURLSessionWebSocketCloseCodeTLSHandshakeFailure = 1015; +} - static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionConfiguration1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return block.ref.target + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(arg0, arg1, arg2); } -abstract class SSLProtocol { - static const int kSSLProtocolUnknown = 0; - static const int kTLSProtocol1 = 4; - static const int kTLSProtocol11 = 7; - static const int kTLSProtocol12 = 8; - static const int kDTLSProtocol1 = 9; - static const int kTLSProtocol13 = 10; - static const int kDTLSProtocol12 = 11; - static const int kTLSProtocolMaxSupported = 999; - static const int kSSLProtocol2 = 1; - static const int kSSLProtocol3 = 2; - static const int kSSLProtocol3Only = 3; - static const int kTLSProtocol1Only = 5; - static const int kSSLProtocolAll = 6; +final _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); } -abstract class tls_protocol_version_t { - static const int tls_protocol_version_TLSv10 = 769; - static const int tls_protocol_version_TLSv11 = 770; - static const int tls_protocol_version_TLSv12 = 771; - static const int tls_protocol_version_TLSv13 = 772; - static const int tls_protocol_version_DTLSv10 = -257; - static const int tls_protocol_version_DTLSv12 = -259; +void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2) { + return (_ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[ + block.ref.target.address] + as void Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer))(arg0, arg1, arg2); } -abstract class NSURLSessionMultipathServiceType { - static const int NSURLSessionMultipathServiceTypeNone = 0; - static const int NSURLSessionMultipathServiceTypeHandover = 1; - static const int NSURLSessionMultipathServiceTypeInteractive = 2; - static const int NSURLSessionMultipathServiceTypeAggregate = 3; +class ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); + + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; + + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunction( + SentryCocoa lib, + void Function(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) + fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>( + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0, ffi.Pointer arg1, + ffi.Pointer arg2) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>>() + .asFunction< + void Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1, + ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + } } -void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline( +void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, ffi.Pointer arg1, @@ -67383,34 +67801,36 @@ void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline( ffi.Pointer arg2)>()(arg0, arg1, arg2); } -final _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry = +final _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry = {}; -int _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex = 0; +int _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex = 0; ffi.Pointer - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure(Function fn) { - final id = ++_ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[id] = fn; + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( + Function fn) { + final id = + ++_ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline( +void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) { - return (_ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureRegistry[ + return (_ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[ block.ref.target.address] as void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer))(arg0, arg1, arg2); } -class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray._( +class ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError._( ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) : super._(id, lib, retain: false, release: true); /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunctionPointer( + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunctionPointer( SentryCocoa lib, ffi.Pointer< ffi.NativeFunction< @@ -67427,14 +67847,14 @@ class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_fnPtrTrampoline) + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline) .cast(), ptr.cast()), lib); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSArray_NSArray_NSArray.fromFunction( + ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunction( SentryCocoa lib, void Function(ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2) @@ -67447,9 +67867,10 @@ class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { ffi.Pointer arg0, ffi.Pointer arg1, ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_closureTrampoline) + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline) .cast(), - _ObjCBlock_ffiVoid_NSArray_NSArray_NSArray_registerClosure(fn)), + _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( + fn)), lib); static ffi.Pointer? _dartFuncTrampoline; void call(ffi.Pointer arg0, ffi.Pointer arg1, @@ -67471,178 +67892,308 @@ class ObjCBlock_ffiVoid_NSArray_NSArray_NSArray extends _ObjCBlockBase { } } -class NSURLSessionUploadTask extends NSURLSessionDataTask { - NSURLSessionUploadTask._(ffi.Pointer id, SentryCocoa lib, +class NSProtocolChecker extends NSProxy { + NSProtocolChecker._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLSessionUploadTask] that points to the same underlying object as [other]. - static NSURLSessionUploadTask castFrom(T other) { - return NSURLSessionUploadTask._(other._id, other._lib, + /// Returns a [NSProtocolChecker] that points to the same underlying object as [other]. + static NSProtocolChecker castFrom(T other) { + return NSProtocolChecker._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLSessionUploadTask] that wraps the given raw object pointer. - static NSURLSessionUploadTask castFromPointer( + /// Returns a [NSProtocolChecker] that wraps the given raw object pointer. + static NSProtocolChecker castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLSessionUploadTask._(other, lib, - retain: retain, release: release); + return NSProtocolChecker._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLSessionUploadTask]. + /// Returns whether [obj] is an instance of [NSProtocolChecker]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionUploadTask1); + obj._lib._class_NSProtocolChecker1); + } + + Protocol? get protocol { + final _ret = _lib._objc_msgSend_992(_id, _lib._sel_protocol1); + return _ret.address == 0 + ? null + : Protocol._(_ret, _lib, retain: true, release: true); + } + + NSObject? get target { + final _ret = _lib._objc_msgSend_822(_id, _lib._sel_target1); + return _ret.address == 0 + ? null + : NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSProtocolChecker protocolCheckerWithTarget_protocol_( + SentryCocoa _lib, NSObject? anObject, Protocol? aProtocol) { + final _ret = _lib._objc_msgSend_993( + _lib._class_NSProtocolChecker1, + _lib._sel_protocolCheckerWithTarget_protocol_1, + anObject?._id ?? ffi.nullptr, + aProtocol?._id ?? ffi.nullptr); + return NSProtocolChecker._(_ret, _lib, retain: true, release: true); + } + + NSProtocolChecker initWithTarget_protocol_( + NSObject? anObject, Protocol? aProtocol) { + final _ret = _lib._objc_msgSend_993( + _id, + _lib._sel_initWithTarget_protocol_1, + anObject?._id ?? ffi.nullptr, + aProtocol?._id ?? ffi.nullptr); + return NSProtocolChecker._(_ret, _lib, retain: true, release: true); + } + + static NSObject alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSProtocolChecker1, _lib._sel_alloc1); + return NSObject._(_ret, _lib, retain: false, release: true); + } + + static bool respondsToSelector_( + SentryCocoa _lib, ffi.Pointer aSelector) { + return _lib._objc_msgSend_4(_lib._class_NSProtocolChecker1, + _lib._sel_respondsToSelector_1, aSelector); + } +} + +class NSTask extends NSObject { + NSTask._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSTask] that points to the same underlying object as [other]. + static NSTask castFrom(T other) { + return NSTask._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [NSTask] that wraps the given raw object pointer. + static NSTask castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSTask._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [NSTask]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSTask1); } @override - NSURLSessionUploadTask init() { + NSTask init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionUploadTask._(_ret, _lib, retain: true, release: true); + return NSTask._(_ret, _lib, retain: true, release: true); } - static NSURLSessionUploadTask new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionUploadTask1, _lib._sel_new1); - return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); + NSURL? get executableURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_executableURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); } - static NSURLSessionUploadTask allocWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionUploadTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); + set executableURL(NSURL? value) { + return _lib._objc_msgSend_621( + _id, _lib._sel_setExecutableURL_1, value?._id ?? ffi.nullptr); } - static NSURLSessionUploadTask alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionUploadTask1, _lib._sel_alloc1); - return NSURLSessionUploadTask._(_ret, _lib, retain: false, release: true); + NSArray? get arguments { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_arguments1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SentryCocoa _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionUploadTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument._id); + set arguments(NSArray? value) { + return _lib._objc_msgSend_731( + _id, _lib._sel_setArguments_1, value?._id ?? ffi.nullptr); } - static void cancelPreviousPerformRequestsWithTarget_( - SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionUploadTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + NSDictionary? get environment { + final _ret = _lib._objc_msgSend_170(_id, _lib._sel_environment1); + return _ret.address == 0 + ? null + : NSDictionary._(_ret, _lib, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionUploadTask1, - _lib._sel_accessInstanceVariablesDirectly1); + set environment(NSDictionary? value) { + return _lib._objc_msgSend_171( + _id, _lib._sel_setEnvironment_1, value?._id ?? ffi.nullptr); } - static bool useStoredAccessor(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionUploadTask1, _lib._sel_useStoredAccessor1); + NSURL? get currentDirectoryURL { + final _ret = _lib._objc_msgSend_40(_id, _lib._sel_currentDirectoryURL1); + return _ret.address == 0 + ? null + : NSURL._(_ret, _lib, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SentryCocoa _lib, NSString? key) { - final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLSessionUploadTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key?._id ?? ffi.nullptr); - return NSSet._(_ret, _lib, retain: true, release: true); + set currentDirectoryURL(NSURL? value) { + return _lib._objc_msgSend_621( + _id, _lib._sel_setCurrentDirectoryURL_1, value?._id ?? ffi.nullptr); + } + + NSObject get standardInput { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_standardInput1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set standardInput(NSObject value) { + return _lib._objc_msgSend_387(_id, _lib._sel_setStandardInput_1, value._id); + } + + NSObject get standardOutput { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_standardOutput1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set standardOutput(NSObject value) { + return _lib._objc_msgSend_387( + _id, _lib._sel_setStandardOutput_1, value._id); + } + + NSObject get standardError { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_standardError1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set standardError(NSObject value) { + return _lib._objc_msgSend_387(_id, _lib._sel_setStandardError_1, value._id); + } + + bool launchAndReturnError_(ffi.Pointer> error) { + return _lib._objc_msgSend_225(_id, _lib._sel_launchAndReturnError_1, error); + } + + void interrupt() { + _lib._objc_msgSend_1(_id, _lib._sel_interrupt1); + } + + void terminate() { + _lib._objc_msgSend_1(_id, _lib._sel_terminate1); + } + + bool suspend() { + return _lib._objc_msgSend_12(_id, _lib._sel_suspend1); + } + + bool resume() { + return _lib._objc_msgSend_12(_id, _lib._sel_resume1); + } + + int get processIdentifier { + return _lib._objc_msgSend_219(_id, _lib._sel_processIdentifier1); + } + + bool get running { + return _lib._objc_msgSend_12(_id, _lib._sel_isRunning1); + } + + int get terminationStatus { + return _lib._objc_msgSend_219(_id, _lib._sel_terminationStatus1); + } + + int get terminationReason { + return _lib._objc_msgSend_994(_id, _lib._sel_terminationReason1); + } + + ObjCBlock_ffiVoid_NSTask get terminationHandler { + final _ret = _lib._objc_msgSend_995(_id, _lib._sel_terminationHandler1); + return ObjCBlock_ffiVoid_NSTask._(_ret, _lib); + } + + set terminationHandler(ObjCBlock_ffiVoid_NSTask value) { + return _lib._objc_msgSend_996( + _id, _lib._sel_setTerminationHandler_1, value._id); } - static bool automaticallyNotifiesObserversForKey_( - SentryCocoa _lib, NSString? key) { - return _lib._objc_msgSend_59( - _lib._class_NSURLSessionUploadTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key?._id ?? ffi.nullptr); + int get qualityOfService { + return _lib._objc_msgSend_507(_id, _lib._sel_qualityOfService1); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { - _lib._objc_msgSend_82( - _lib._class_NSURLSessionUploadTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys?._id ?? ffi.nullptr, - dependentKey?._id ?? ffi.nullptr); + set qualityOfService(int value) { + return _lib._objc_msgSend_508(_id, _lib._sel_setQualityOfService_1, value); } - static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionUploadTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSTask + launchedTaskWithExecutableURL_arguments_error_terminationHandler_( + SentryCocoa _lib, + NSURL? url, + NSArray? arguments, + ffi.Pointer> error, + ObjCBlock_ffiVoid_NSTask terminationHandler) { + final _ret = _lib._objc_msgSend_997( + _lib._class_NSTask1, + _lib._sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_1, + url?._id ?? ffi.nullptr, + arguments?._id ?? ffi.nullptr, + error, + terminationHandler._id); + return NSTask._(_ret, _lib, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionUploadTask1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + void waitUntilExit() { + _lib._objc_msgSend_1(_id, _lib._sel_waitUntilExit1); } -} -class NSURLSessionDownloadTask extends NSURLSessionTask { - NSURLSessionDownloadTask._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + NSString? get launchPath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_launchPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } - /// Returns a [NSURLSessionDownloadTask] that points to the same underlying object as [other]. - static NSURLSessionDownloadTask castFrom(T other) { - return NSURLSessionDownloadTask._(other._id, other._lib, - retain: true, release: true); + set launchPath(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setLaunchPath_1, value?._id ?? ffi.nullptr); } - /// Returns a [NSURLSessionDownloadTask] that wraps the given raw object pointer. - static NSURLSessionDownloadTask castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionDownloadTask._(other, lib, - retain: retain, release: release); + NSString? get currentDirectoryPath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_currentDirectoryPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLSessionDownloadTask]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionDownloadTask1); + set currentDirectoryPath(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setCurrentDirectoryPath_1, value?._id ?? ffi.nullptr); } - void cancelByProducingResumeData_( - ObjCBlock_ffiVoid_NSData completionHandler) { - _lib._objc_msgSend_997( - _id, _lib._sel_cancelByProducingResumeData_1, completionHandler._id); + void launch() { + _lib._objc_msgSend_1(_id, _lib._sel_launch1); } - @override - NSURLSessionDownloadTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionDownloadTask._(_ret, _lib, retain: true, release: true); + static NSTask launchedTaskWithLaunchPath_arguments_( + SentryCocoa _lib, NSString? path, NSArray? arguments) { + final _ret = _lib._objc_msgSend_998( + _lib._class_NSTask1, + _lib._sel_launchedTaskWithLaunchPath_arguments_1, + path?._id ?? ffi.nullptr, + arguments?._id ?? ffi.nullptr); + return NSTask._(_ret, _lib, retain: true, release: true); } - static NSURLSessionDownloadTask new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_new1); - return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + static NSTask new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSTask1, _lib._sel_new1); + return NSTask._(_ret, _lib, retain: false, release: true); } - static NSURLSessionDownloadTask allocWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + static NSTask allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + _lib._class_NSTask1, _lib._sel_allocWithZone_1, zone); + return NSTask._(_ret, _lib, retain: false, release: true); } - static NSURLSessionDownloadTask alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_alloc1); - return NSURLSessionDownloadTask._(_ret, _lib, retain: false, release: true); + static NSTask alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSTask1, _lib._sel_alloc1); + return NSTask._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -67651,7 +68202,7 @@ class NSURLSessionDownloadTask extends NSURLSessionTask { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLSessionDownloadTask1, + _lib._class_NSTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -67660,24 +68211,24 @@ class NSURLSessionDownloadTask extends NSURLSessionTask { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionDownloadTask1, + _lib._objc_msgSend_15(_lib._class_NSTask1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12( + _lib._class_NSTask1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLSessionDownloadTask1, _lib._sel_useStoredAccessor1); + _lib._class_NSTask1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLSessionDownloadTask1, + _lib._class_NSTask1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -67686,7 +68237,7 @@ class NSURLSessionDownloadTask extends NSURLSessionTask { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLSessionDownloadTask1, + _lib._class_NSTask1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -67694,26 +68245,31 @@ class NSURLSessionDownloadTask extends NSURLSessionTask { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLSessionDownloadTask1, + _lib._class_NSTask1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79( + _lib._class_NSTask1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionDownloadTask1, - _lib._sel_classForKeyedUnarchiver1); + final _ret = _lib._objc_msgSend_2( + _lib._class_NSTask1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -void _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline( +abstract class NSTaskTerminationReason { + static const int NSTaskTerminationReasonExit = 1; + static const int NSTaskTerminationReasonUncaughtSignal = 2; +} + +void _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { return block.ref.target .cast< @@ -67721,26 +68277,26 @@ void _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline( .asFunction arg0)>()(arg0); } -final _ObjCBlock_ffiVoid_NSData_closureRegistry = {}; -int _ObjCBlock_ffiVoid_NSData_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSData_registerClosure(Function fn) { - final id = ++_ObjCBlock_ffiVoid_NSData_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_closureRegistry[id] = fn; +final _ObjCBlock_ffiVoid_NSTask_closureRegistry = {}; +int _ObjCBlock_ffiVoid_NSTask_closureRegistryIndex = 0; +ffi.Pointer _ObjCBlock_ffiVoid_NSTask_registerClosure(Function fn) { + final id = ++_ObjCBlock_ffiVoid_NSTask_closureRegistryIndex; + _ObjCBlock_ffiVoid_NSTask_closureRegistry[id] = fn; return ffi.Pointer.fromAddress(id); } -void _ObjCBlock_ffiVoid_NSData_closureTrampoline( +void _ObjCBlock_ffiVoid_NSTask_closureTrampoline( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return (_ObjCBlock_ffiVoid_NSData_closureRegistry[block.ref.target.address] + return (_ObjCBlock_ffiVoid_NSTask_closureRegistry[block.ref.target.address] as void Function(ffi.Pointer))(arg0); } -class ObjCBlock_ffiVoid_NSData extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) +class ObjCBlock_ffiVoid_NSTask extends _ObjCBlockBase { + ObjCBlock_ffiVoid_NSTask._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) : super._(id, lib, retain: false, release: true); /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSData.fromFunctionPointer( + ObjCBlock_ffiVoid_NSTask.fromFunctionPointer( SentryCocoa lib, ffi.Pointer< ffi @@ -67751,23 +68307,23 @@ class ObjCBlock_ffiVoid_NSData extends _ObjCBlockBase { _cFuncTrampoline ??= ffi.Pointer.fromFunction< ffi.Void Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSData_fnPtrTrampoline) + _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline) .cast(), ptr.cast()), lib); static ffi.Pointer? _cFuncTrampoline; /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSData.fromFunction( + ObjCBlock_ffiVoid_NSTask.fromFunction( SentryCocoa lib, void Function(ffi.Pointer arg0) fn) : this._( lib._newBlock1( _dartFuncTrampoline ??= ffi.Pointer.fromFunction< ffi.Void Function(ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSData_closureTrampoline) + _ObjCBlock_ffiVoid_NSTask_closureTrampoline) .cast(), - _ObjCBlock_ffiVoid_NSData_registerClosure(fn)), + _ObjCBlock_ffiVoid_NSTask_registerClosure(fn)), lib); static ffi.Pointer? _dartFuncTrampoline; void call(ffi.Pointer arg0) { @@ -67782,98 +68338,361 @@ class ObjCBlock_ffiVoid_NSData extends _ObjCBlockBase { } } -class NSURLSessionStreamTask extends NSURLSessionTask { - NSURLSessionStreamTask._(ffi.Pointer id, SentryCocoa lib, +class NSXMLElement extends NSXMLNode { + NSXMLElement._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLSessionStreamTask] that points to the same underlying object as [other]. - static NSURLSessionStreamTask castFrom(T other) { - return NSURLSessionStreamTask._(other._id, other._lib, - retain: true, release: true); + /// Returns a [NSXMLElement] that points to the same underlying object as [other]. + static NSXMLElement castFrom(T other) { + return NSXMLElement._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLSessionStreamTask] that wraps the given raw object pointer. - static NSURLSessionStreamTask castFromPointer( + /// Returns a [NSXMLElement] that wraps the given raw object pointer. + static NSXMLElement castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLSessionStreamTask._(other, lib, - retain: retain, release: release); + return NSXMLElement._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLSessionStreamTask]. + /// Returns whether [obj] is an instance of [NSXMLElement]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionStreamTask1); + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLElement1); } - void readDataOfMinLength_maxLength_timeout_completionHandler_( - int minBytes, - int maxBytes, - double timeout, - ObjCBlock_ffiVoid_NSData_bool_NSError completionHandler) { - _lib._objc_msgSend_1001( + NSXMLElement initWithName_(NSString? name) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithName_1, name?._id ?? ffi.nullptr); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + NSXMLElement initWithName_URI_(NSString? name, NSString? URI) { + final _ret = _lib._objc_msgSend_165(_id, _lib._sel_initWithName_URI_1, + name?._id ?? ffi.nullptr, URI?._id ?? ffi.nullptr); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + NSXMLElement initWithName_stringValue_(NSString? name, NSString? string) { + final _ret = _lib._objc_msgSend_165( _id, - _lib._sel_readDataOfMinLength_maxLength_timeout_completionHandler_1, - minBytes, - maxBytes, - timeout, - completionHandler._id); + _lib._sel_initWithName_stringValue_1, + name?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr); + return NSXMLElement._(_ret, _lib, retain: true, release: true); } - void writeData_timeout_completionHandler_(NSData? data, double timeout, - ObjCBlock_ffiVoid_NSError completionHandler) { - _lib._objc_msgSend_1002( + NSXMLElement initWithXMLString_error_( + NSString? string, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_279(_id, + _lib._sel_initWithXMLString_error_1, string?._id ?? ffi.nullptr, error); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + @override + NSXMLElement initWithKind_options_(int kind, int options) { + final _ret = _lib._objc_msgSend_1000( + _id, _lib._sel_initWithKind_options_1, kind, options); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + NSArray elementsForName_(NSString? name) { + final _ret = _lib._objc_msgSend_123( + _id, _lib._sel_elementsForName_1, name?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray elementsForLocalName_URI_(NSString? localName, NSString? URI) { + final _ret = _lib._objc_msgSend_652( _id, - _lib._sel_writeData_timeout_completionHandler_1, - data?._id ?? ffi.nullptr, - timeout, - completionHandler._id); + _lib._sel_elementsForLocalName_URI_1, + localName?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSArray._(_ret, _lib, retain: true, release: true); } - void captureStreams() { - _lib._objc_msgSend_1(_id, _lib._sel_captureStreams1); + void addAttribute_(NSXMLNode? attribute) { + _lib._objc_msgSend_1012( + _id, _lib._sel_addAttribute_1, attribute?._id ?? ffi.nullptr); } - void closeWrite() { - _lib._objc_msgSend_1(_id, _lib._sel_closeWrite1); + void removeAttributeForName_(NSString? name) { + _lib._objc_msgSend_192( + _id, _lib._sel_removeAttributeForName_1, name?._id ?? ffi.nullptr); } - void closeRead() { - _lib._objc_msgSend_1(_id, _lib._sel_closeRead1); + NSArray? get attributes { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_attributes1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - void startSecureConnection() { - _lib._objc_msgSend_1(_id, _lib._sel_startSecureConnection1); + set attributes(NSArray? value) { + return _lib._objc_msgSend_731( + _id, _lib._sel_setAttributes_1, value?._id ?? ffi.nullptr); } - void stopSecureConnection() { - _lib._objc_msgSend_1(_id, _lib._sel_stopSecureConnection1); + void setAttributesWithDictionary_(NSDictionary? attributes) { + _lib._objc_msgSend_476(_id, _lib._sel_setAttributesWithDictionary_1, + attributes?._id ?? ffi.nullptr); + } + + NSXMLNode attributeForName_(NSString? name) { + final _ret = _lib._objc_msgSend_1016( + _id, _lib._sel_attributeForName_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode attributeForLocalName_URI_(NSString? localName, NSString? URI) { + final _ret = _lib._objc_msgSend_1033( + _id, + _lib._sel_attributeForLocalName_URI_1, + localName?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + void addNamespace_(NSXMLNode? aNamespace) { + _lib._objc_msgSend_1012( + _id, _lib._sel_addNamespace_1, aNamespace?._id ?? ffi.nullptr); + } + + void removeNamespaceForPrefix_(NSString? name) { + _lib._objc_msgSend_192( + _id, _lib._sel_removeNamespaceForPrefix_1, name?._id ?? ffi.nullptr); + } + + NSArray? get namespaces { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_namespaces1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); + } + + set namespaces(NSArray? value) { + return _lib._objc_msgSend_731( + _id, _lib._sel_setNamespaces_1, value?._id ?? ffi.nullptr); + } + + NSXMLNode namespaceForPrefix_(NSString? name) { + final _ret = _lib._objc_msgSend_1016( + _id, _lib._sel_namespaceForPrefix_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSXMLNode resolveNamespaceForName_(NSString? name) { + final _ret = _lib._objc_msgSend_1016( + _id, _lib._sel_resolveNamespaceForName_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + NSString resolvePrefixForNamespaceURI_(NSString? namespaceURI) { + final _ret = _lib._objc_msgSend_64( + _id, + _lib._sel_resolvePrefixForNamespaceURI_1, + namespaceURI?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + void insertChild_atIndex_(NSXMLNode? child, int index) { + _lib._objc_msgSend_1010( + _id, _lib._sel_insertChild_atIndex_1, child?._id ?? ffi.nullptr, index); + } + + void insertChildren_atIndex_(NSArray? children, int index) { + _lib._objc_msgSend_1011(_id, _lib._sel_insertChildren_atIndex_1, + children?._id ?? ffi.nullptr, index); + } + + void removeChildAtIndex_(int index) { + _lib._objc_msgSend_439(_id, _lib._sel_removeChildAtIndex_1, index); + } + + void setChildren_(NSArray? children) { + _lib._objc_msgSend_441( + _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + } + + void addChild_(NSXMLNode? child) { + _lib._objc_msgSend_1012( + _id, _lib._sel_addChild_1, child?._id ?? ffi.nullptr); + } + + void replaceChildAtIndex_withNode_(int index, NSXMLNode? node) { + _lib._objc_msgSend_1013(_id, _lib._sel_replaceChildAtIndex_withNode_1, + index, node?._id ?? ffi.nullptr); + } + + void normalizeAdjacentTextNodesPreservingCDATA_(bool preserve) { + _lib._objc_msgSend_790( + _id, _lib._sel_normalizeAdjacentTextNodesPreservingCDATA_1, preserve); + } + + void setAttributesAsDictionary_(NSDictionary? attributes) { + _lib._objc_msgSend_476(_id, _lib._sel_setAttributesAsDictionary_1, + attributes?._id ?? ffi.nullptr); } @override - NSURLSessionStreamTask init() { + NSXMLElement init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionStreamTask._(_ret, _lib, retain: true, release: true); + return NSXMLElement._(_ret, _lib, retain: true, release: true); } - static NSURLSessionStreamTask new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionStreamTask1, _lib._sel_new1); - return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + @override + NSXMLElement initWithKind_(int kind) { + final _ret = _lib._objc_msgSend_999(_id, _lib._sel_initWithKind_1, kind); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + static NSObject document(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_document1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject documentWithRootElement_( + SentryCocoa _lib, NSXMLElement? element) { + final _ret = _lib._objc_msgSend_1001(_lib._class_NSXMLElement1, + _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_URI_( + SentryCocoa _lib, NSString? name, NSString? URI) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLElement1, + _lib._sel_elementWithName_URI_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? string) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLElement1, + _lib._sel_elementWithName_stringValue_1, + name?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_children_attributes_(SentryCocoa _lib, + NSString? name, NSArray? children, NSArray? attributes) { + final _ret = _lib._objc_msgSend_1002( + _lib._class_NSXMLElement1, + _lib._sel_elementWithName_children_attributes_1, + name?._id ?? ffi.nullptr, + children?._id ?? ffi.nullptr, + attributes?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLElement1, + _lib._sel_attributeWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_URI_stringValue_( + SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { + final _ret = _lib._objc_msgSend_26( + _lib._class_NSXMLElement1, + _lib._sel_attributeWithName_URI_stringValue_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject namespaceWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLElement1, + _lib._sel_namespaceWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject processingInstructionWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLElement1, + _lib._sel_processingInstructionWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject commentWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject textWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSString localNameForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLElement1, + _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSString prefixForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLElement1, + _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); + } + + static NSXMLNode predefinedNamespaceForPrefix_( + SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_1016(_lib._class_NSXMLElement1, + _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } + + static NSXMLElement new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_new1); + return NSXMLElement._(_ret, _lib, retain: false, release: true); } - static NSURLSessionStreamTask allocWithZone_( + static NSXMLElement allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSURLSessionStreamTask1, _lib._sel_allocWithZone_1, zone); - return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + _lib._class_NSXMLElement1, _lib._sel_allocWithZone_1, zone); + return NSXMLElement._(_ret, _lib, retain: false, release: true); } - static NSURLSessionStreamTask alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionStreamTask1, _lib._sel_alloc1); - return NSURLSessionStreamTask._(_ret, _lib, retain: false, release: true); + static NSXMLElement alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_alloc1); + return NSXMLElement._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -67882,7 +68701,7 @@ class NSURLSessionStreamTask extends NSURLSessionTask { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLSessionStreamTask1, + _lib._class_NSXMLElement1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -67891,24 +68710,24 @@ class NSURLSessionStreamTask extends NSURLSessionTask { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionStreamTask1, + _lib._objc_msgSend_15(_lib._class_NSXMLElement1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionStreamTask1, - _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12( + _lib._class_NSXMLElement1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSURLSessionStreamTask1, _lib._sel_useStoredAccessor1); + _lib._class_NSXMLElement1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLSessionStreamTask1, + _lib._class_NSXMLElement1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -67917,7 +68736,7 @@ class NSURLSessionStreamTask extends NSURLSessionTask { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLSessionStreamTask1, + _lib._class_NSXMLElement1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -67925,201 +68744,178 @@ class NSURLSessionStreamTask extends NSURLSessionTask { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLSessionStreamTask1, + _lib._class_NSXMLElement1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionStreamTask1, - _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79( + _lib._class_NSXMLElement1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionStreamTask1, - _lib._sel_classForKeyedUnarchiver1); + final _ret = _lib._objc_msgSend_2( + _lib._class_NSXMLElement1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -void _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) { - return block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function(ffi.Pointer arg0, bool arg1, - ffi.Pointer arg2)>()(arg0, arg1, arg2); -} +class NSXMLNode extends NSObject { + NSXMLNode._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); -final _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry = - {}; -int _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure( - Function fn) { - final id = ++_ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} + /// Returns a [NSXMLNode] that points to the same underlying object as [other]. + static NSXMLNode castFrom(T other) { + return NSXMLNode._(other._id, other._lib, retain: true, release: true); + } -void _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2) { - return (_ObjCBlock_ffiVoid_NSData_bool_NSError_closureRegistry[ - block.ref.target.address] - as void Function(ffi.Pointer, bool, - ffi.Pointer))(arg0, arg1, arg2); -} + /// Returns a [NSXMLNode] that wraps the given raw object pointer. + static NSXMLNode castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSXMLNode._(other, lib, retain: retain, release: release); + } -class ObjCBlock_ffiVoid_NSData_bool_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData_bool_NSError._( - ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); + /// Returns whether [obj] is an instance of [NSXMLNode]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLNode1); + } - /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunctionPointer( - SentryCocoa lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, ffi.Bool arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Bool arg1, - ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSData_bool_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; + @override + NSXMLNode init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } - /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSData_bool_NSError.fromFunction( - SentryCocoa lib, - void Function(ffi.Pointer arg0, bool arg1, - ffi.Pointer arg2) - fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Bool arg1, - ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSData_bool_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSData_bool_NSError_registerClosure(fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - void call( - ffi.Pointer arg0, bool arg1, ffi.Pointer arg2) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Bool arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - bool arg1, - ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); + NSXMLNode initWithKind_(int kind) { + final _ret = _lib._objc_msgSend_999(_id, _lib._sel_initWithKind_1, kind); + return NSXMLNode._(_ret, _lib, retain: true, release: true); } -} -class NSNetService extends NSObject { - NSNetService._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + NSXMLNode initWithKind_options_(int kind, int options) { + final _ret = _lib._objc_msgSend_1000( + _id, _lib._sel_initWithKind_options_1, kind, options); + return NSXMLNode._(_ret, _lib, retain: true, release: true); + } - /// Returns a [NSNetService] that points to the same underlying object as [other]. - static NSNetService castFrom(T other) { - return NSNetService._(other._id, other._lib, retain: true, release: true); + static NSObject document(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_document1); + return NSObject._(_ret, _lib, retain: true, release: true); } - /// Returns a [NSNetService] that wraps the given raw object pointer. - static NSNetService castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSNetService._(other, lib, retain: retain, release: release); + static NSObject documentWithRootElement_( + SentryCocoa _lib, NSXMLElement? element) { + final _ret = _lib._objc_msgSend_1001(_lib._class_NSXMLNode1, + _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSNetService]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSNetService1); + static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, + _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - NSNetService initWithDomain_type_name_port_( - NSString? domain, NSString? type, NSString? name, int port) { - final _ret = _lib._objc_msgSend_1004( - _id, - _lib._sel_initWithDomain_type_name_port_1, - domain?._id ?? ffi.nullptr, - type?._id ?? ffi.nullptr, + static NSObject elementWithName_URI_( + SentryCocoa _lib, NSString? name, NSString? URI) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLNode1, + _lib._sel_elementWithName_URI_1, name?._id ?? ffi.nullptr, - port); - return NSNetService._(_ret, _lib, retain: true, release: true); + URI?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - NSNetService initWithDomain_type_name_( - NSString? domain, NSString? type, NSString? name) { + static NSObject elementWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? string) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLNode1, + _lib._sel_elementWithName_stringValue_1, + name?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject elementWithName_children_attributes_(SentryCocoa _lib, + NSString? name, NSArray? children, NSArray? attributes) { + final _ret = _lib._objc_msgSend_1002( + _lib._class_NSXMLNode1, + _lib._sel_elementWithName_children_attributes_1, + name?._id ?? ffi.nullptr, + children?._id ?? ffi.nullptr, + attributes?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLNode1, + _lib._sel_attributeWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + static NSObject attributeWithName_URI_stringValue_( + SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { final _ret = _lib._objc_msgSend_26( - _id, - _lib._sel_initWithDomain_type_name_1, - domain?._id ?? ffi.nullptr, - type?._id ?? ffi.nullptr, - name?._id ?? ffi.nullptr); - return NSNetService._(_ret, _lib, retain: true, release: true); + _lib._class_NSXMLNode1, + _lib._sel_attributeWithName_URI_stringValue_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - void scheduleInRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { - _lib._objc_msgSend_533(_id, _lib._sel_scheduleInRunLoop_forMode_1, - aRunLoop?._id ?? ffi.nullptr, mode._id); + static NSObject namespaceWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLNode1, + _lib._sel_namespaceWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - void removeFromRunLoop_forMode_(NSRunLoop? aRunLoop, NSString mode) { - _lib._objc_msgSend_533(_id, _lib._sel_removeFromRunLoop_forMode_1, - aRunLoop?._id ?? ffi.nullptr, mode._id); + static NSObject processingInstructionWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLNode1, + _lib._sel_processingInstructionWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - NSObject? get delegate { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_delegate1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); + static NSObject commentWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, + _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - set delegate(NSObject? value) { - return _lib._objc_msgSend_387( - _id, _lib._sel_setDelegate_1, value?._id ?? ffi.nullptr); + static NSObject textWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, + _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - bool get includesPeerToPeer { - return _lib._objc_msgSend_12(_id, _lib._sel_includesPeerToPeer1); + static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, + _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - set includesPeerToPeer(bool value) { - return _lib._objc_msgSend_492( - _id, _lib._sel_setIncludesPeerToPeer_1, value); + int get kind { + return _lib._objc_msgSend_1003(_id, _lib._sel_kind1); } NSString? get name { @@ -68129,122 +68925,224 @@ class NSNetService extends NSObject { : NSString._(_ret, _lib, retain: true, release: true); } - NSString? get type { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_type1); + set name(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + } + + NSObject get objectValue { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_objectValue1); + return NSObject._(_ret, _lib, retain: true, release: true); + } + + set objectValue(NSObject value) { + return _lib._objc_msgSend_387(_id, _lib._sel_setObjectValue_1, value._id); + } + + NSString? get stringValue { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_stringValue1); return _ret.address == 0 ? null : NSString._(_ret, _lib, retain: true, release: true); } - NSString? get domain { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_domain1); + set stringValue(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setStringValue_1, value?._id ?? ffi.nullptr); + } + + void setStringValue_resolvingEntities_(NSString? string, bool resolve) { + _lib._objc_msgSend_1004(_id, _lib._sel_setStringValue_resolvingEntities_1, + string?._id ?? ffi.nullptr, resolve); + } + + int get index { + return _lib._objc_msgSend_10(_id, _lib._sel_index1); + } + + int get level { + return _lib._objc_msgSend_10(_id, _lib._sel_level1); + } + + NSXMLDocument? get rootDocument { + final _ret = _lib._objc_msgSend_1027(_id, _lib._sel_rootDocument1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSXMLDocument._(_ret, _lib, retain: true, release: true); } - NSString? get hostName { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_hostName1); + NSXMLNode? get parent { + final _ret = _lib._objc_msgSend_1028(_id, _lib._sel_parent1); return _ret.address == 0 ? null - : NSString._(_ret, _lib, retain: true, release: true); + : NSXMLNode._(_ret, _lib, retain: true, release: true); } - NSArray? get addresses { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_addresses1); + int get childCount { + return _lib._objc_msgSend_10(_id, _lib._sel_childCount1); + } + + NSArray? get children { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_children1); return _ret.address == 0 ? null : NSArray._(_ret, _lib, retain: true, release: true); } - int get port { - return _lib._objc_msgSend_78(_id, _lib._sel_port1); + NSXMLNode childAtIndex_(int index) { + final _ret = _lib._objc_msgSend_1029(_id, _lib._sel_childAtIndex_1, index); + return NSXMLNode._(_ret, _lib, retain: true, release: true); } - void publish() { - _lib._objc_msgSend_1(_id, _lib._sel_publish1); + NSXMLNode? get previousSibling { + final _ret = _lib._objc_msgSend_1028(_id, _lib._sel_previousSibling1); + return _ret.address == 0 + ? null + : NSXMLNode._(_ret, _lib, retain: true, release: true); } - void publishWithOptions_(int options) { - _lib._objc_msgSend_1005(_id, _lib._sel_publishWithOptions_1, options); + NSXMLNode? get nextSibling { + final _ret = _lib._objc_msgSend_1028(_id, _lib._sel_nextSibling1); + return _ret.address == 0 + ? null + : NSXMLNode._(_ret, _lib, retain: true, release: true); } - void resolve() { - _lib._objc_msgSend_1(_id, _lib._sel_resolve1); + NSXMLNode? get previousNode { + final _ret = _lib._objc_msgSend_1028(_id, _lib._sel_previousNode1); + return _ret.address == 0 + ? null + : NSXMLNode._(_ret, _lib, retain: true, release: true); } - void stop() { - _lib._objc_msgSend_1(_id, _lib._sel_stop1); + NSXMLNode? get nextNode { + final _ret = _lib._objc_msgSend_1028(_id, _lib._sel_nextNode1); + return _ret.address == 0 + ? null + : NSXMLNode._(_ret, _lib, retain: true, release: true); } - static NSDictionary dictionaryFromTXTRecordData_( - SentryCocoa _lib, NSData? txtData) { - final _ret = _lib._objc_msgSend_1006(_lib._class_NSNetService1, - _lib._sel_dictionaryFromTXTRecordData_1, txtData?._id ?? ffi.nullptr); - return NSDictionary._(_ret, _lib, retain: true, release: true); + void detach() { + _lib._objc_msgSend_1(_id, _lib._sel_detach1); } - static NSData dataFromTXTRecordDictionary_( - SentryCocoa _lib, NSDictionary? txtDictionary) { - final _ret = _lib._objc_msgSend_1007( - _lib._class_NSNetService1, - _lib._sel_dataFromTXTRecordDictionary_1, - txtDictionary?._id ?? ffi.nullptr); - return NSData._(_ret, _lib, retain: true, release: true); + NSString? get XPath { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_XPath1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - void resolveWithTimeout_(double timeout) { - _lib._objc_msgSend_505(_id, _lib._sel_resolveWithTimeout_1, timeout); + NSString? get localName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - bool getInputStream_outputStream_( - ffi.Pointer> inputStream, - ffi.Pointer> outputStream) { - return _lib._objc_msgSend_1008(_id, _lib._sel_getInputStream_outputStream_1, - inputStream, outputStream); + NSString? get prefix { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_prefix1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - bool setTXTRecordData_(NSData? recordData) { - return _lib._objc_msgSend_23( - _id, _lib._sel_setTXTRecordData_1, recordData?._id ?? ffi.nullptr); + NSString? get URI { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_URI1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - NSData TXTRecordData() { - final _ret = _lib._objc_msgSend_39(_id, _lib._sel_TXTRecordData1); - return NSData._(_ret, _lib, retain: true, release: true); + set URI(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setURI_1, value?._id ?? ffi.nullptr); } - void startMonitoring() { - _lib._objc_msgSend_1(_id, _lib._sel_startMonitoring1); + static NSString localNameForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLNode1, + _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - void stopMonitoring() { - _lib._objc_msgSend_1(_id, _lib._sel_stopMonitoring1); + static NSString prefixForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLNode1, + _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - @override - NSNetService init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSNetService._(_ret, _lib, retain: true, release: true); + static NSXMLNode predefinedNamespaceForPrefix_( + SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_1016(_lib._class_NSXMLNode1, + _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); } - static NSNetService new1(SentryCocoa _lib) { + NSString? get description { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString? get XMLString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_XMLString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + NSString XMLStringWithOptions_(int options) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSNetService1, _lib._sel_new1); - return NSNetService._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_1030(_id, _lib._sel_XMLStringWithOptions_1, options); + return NSString._(_ret, _lib, retain: true, release: true); } - static NSNetService allocWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSNetService1, _lib._sel_allocWithZone_1, zone); - return NSNetService._(_ret, _lib, retain: false, release: true); + NSString canonicalXMLStringPreservingComments_(bool comments) { + final _ret = _lib._objc_msgSend_1031( + _id, _lib._sel_canonicalXMLStringPreservingComments_1, comments); + return NSString._(_ret, _lib, retain: true, release: true); + } + + NSArray nodesForXPath_error_( + NSString? xpath, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_414( + _id, _lib._sel_nodesForXPath_error_1, xpath?._id ?? ffi.nullptr, error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray objectsForXQuery_constants_error_(NSString? xquery, + NSDictionary? constants, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1032( + _id, + _lib._sel_objectsForXQuery_constants_error_1, + xquery?._id ?? ffi.nullptr, + constants?._id ?? ffi.nullptr, + error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + NSArray objectsForXQuery_error_( + NSString? xquery, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_414(_id, _lib._sel_objectsForXQuery_error_1, + xquery?._id ?? ffi.nullptr, error); + return NSArray._(_ret, _lib, retain: true, release: true); + } + + static NSXMLNode new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_new1); + return NSXMLNode._(_ret, _lib, retain: false, release: true); + } + + static NSXMLNode allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSXMLNode1, _lib._sel_allocWithZone_1, zone); + return NSXMLNode._(_ret, _lib, retain: false, release: true); } - static NSNetService alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSNetService1, _lib._sel_alloc1); - return NSNetService._(_ret, _lib, retain: false, release: true); + static NSXMLNode alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_alloc1); + return NSXMLNode._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -68253,7 +69151,7 @@ class NSNetService extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSNetService1, + _lib._class_NSXMLNode1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -68262,24 +69160,24 @@ class NSNetService extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSNetService1, + _lib._objc_msgSend_15(_lib._class_NSXMLNode1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSNetService1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSXMLNode1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSNetService1, _lib._sel_useStoredAccessor1); + _lib._class_NSXMLNode1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSNetService1, + _lib._class_NSXMLNode1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -68288,7 +69186,7 @@ class NSNetService extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSNetService1, + _lib._class_NSXMLNode1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -68296,7 +69194,7 @@ class NSNetService extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSNetService1, + _lib._class_NSXMLNode1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -68304,272 +69202,453 @@ class NSNetService extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSNetService1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSXMLNode1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSNetService1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSXMLNode1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSNetServiceOptions { - static const int NSNetServiceNoAutoRename = 1; - static const int NSNetServiceListenForConnections = 2; +abstract class NSXMLNodeKind { + static const int NSXMLInvalidKind = 0; + static const int NSXMLDocumentKind = 1; + static const int NSXMLElementKind = 2; + static const int NSXMLAttributeKind = 3; + static const int NSXMLNamespaceKind = 4; + static const int NSXMLProcessingInstructionKind = 5; + static const int NSXMLCommentKind = 6; + static const int NSXMLTextKind = 7; + static const int NSXMLDTDKind = 8; + static const int NSXMLEntityDeclarationKind = 9; + static const int NSXMLAttributeDeclarationKind = 10; + static const int NSXMLElementDeclarationKind = 11; + static const int NSXMLNotationDeclarationKind = 12; } -class NSURLSessionWebSocketTask extends NSURLSessionTask { - NSURLSessionWebSocketTask._(ffi.Pointer id, SentryCocoa lib, +abstract class NSXMLNodeOptions { + static const int NSXMLNodeOptionsNone = 0; + static const int NSXMLNodeIsCDATA = 1; + static const int NSXMLNodeExpandEmptyElement = 2; + static const int NSXMLNodeCompactEmptyElement = 4; + static const int NSXMLNodeUseSingleQuotes = 8; + static const int NSXMLNodeUseDoubleQuotes = 16; + static const int NSXMLNodeNeverEscapeContents = 32; + static const int NSXMLDocumentTidyHTML = 512; + static const int NSXMLDocumentTidyXML = 1024; + static const int NSXMLDocumentValidate = 8192; + static const int NSXMLNodeLoadExternalEntitiesAlways = 16384; + static const int NSXMLNodeLoadExternalEntitiesSameOriginOnly = 32768; + static const int NSXMLNodeLoadExternalEntitiesNever = 524288; + static const int NSXMLDocumentXInclude = 65536; + static const int NSXMLNodePrettyPrint = 131072; + static const int NSXMLDocumentIncludeContentTypeDeclaration = 262144; + static const int NSXMLNodePreserveNamespaceOrder = 1048576; + static const int NSXMLNodePreserveAttributeOrder = 2097152; + static const int NSXMLNodePreserveEntities = 4194304; + static const int NSXMLNodePreservePrefixes = 8388608; + static const int NSXMLNodePreserveCDATA = 16777216; + static const int NSXMLNodePreserveWhitespace = 33554432; + static const int NSXMLNodePreserveDTD = 67108864; + static const int NSXMLNodePreserveCharacterReferences = 134217728; + static const int NSXMLNodePromoteSignificantWhitespace = 268435456; + static const int NSXMLNodePreserveEmptyElements = 6; + static const int NSXMLNodePreserveQuotes = 24; + static const int NSXMLNodePreserveAll = 4293918750; +} + +class NSXMLDocument extends NSXMLNode { + NSXMLDocument._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSURLSessionWebSocketTask] that points to the same underlying object as [other]. - static NSURLSessionWebSocketTask castFrom(T other) { - return NSURLSessionWebSocketTask._(other._id, other._lib, - retain: true, release: true); + /// Returns a [NSXMLDocument] that points to the same underlying object as [other]. + static NSXMLDocument castFrom(T other) { + return NSXMLDocument._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSURLSessionWebSocketTask] that wraps the given raw object pointer. - static NSURLSessionWebSocketTask castFromPointer( + /// Returns a [NSXMLDocument] that wraps the given raw object pointer. + static NSXMLDocument castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSURLSessionWebSocketTask._(other, lib, - retain: retain, release: release); + return NSXMLDocument._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSURLSessionWebSocketTask]. + /// Returns whether [obj] is an instance of [NSXMLDocument]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionWebSocketTask1); + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDocument1); } - void sendMessage_completionHandler_(NSURLSessionWebSocketMessage? message, - ObjCBlock_ffiVoid_NSError completionHandler) { - _lib._objc_msgSend_1011(_id, _lib._sel_sendMessage_completionHandler_1, - message?._id ?? ffi.nullptr, completionHandler._id); + @override + NSXMLDocument init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); } - void receiveMessageWithCompletionHandler_( - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError - completionHandler) { - _lib._objc_msgSend_1012(_id, - _lib._sel_receiveMessageWithCompletionHandler_1, completionHandler._id); + NSXMLDocument initWithXMLString_options_error_( + NSString? string, int mask, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1005( + _id, + _lib._sel_initWithXMLString_options_error_1, + string?._id ?? ffi.nullptr, + mask, + error); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); } - void sendPingWithPongReceiveHandler_( - ObjCBlock_ffiVoid_NSError pongReceiveHandler) { - _lib._objc_msgSend_1013(_id, _lib._sel_sendPingWithPongReceiveHandler_1, - pongReceiveHandler._id); + NSXMLDocument initWithContentsOfURL_options_error_( + NSURL? url, int mask, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1006( + _id, + _lib._sel_initWithContentsOfURL_options_error_1, + url?._id ?? ffi.nullptr, + mask, + error); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); } - void cancelWithCloseCode_reason_(int closeCode, NSData? reason) { - _lib._objc_msgSend_1014(_id, _lib._sel_cancelWithCloseCode_reason_1, - closeCode, reason?._id ?? ffi.nullptr); + NSXMLDocument initWithData_options_error_( + NSData? data, int mask, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1007( + _id, + _lib._sel_initWithData_options_error_1, + data?._id ?? ffi.nullptr, + mask, + error); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); } - int get maximumMessageSize { - return _lib._objc_msgSend_78(_id, _lib._sel_maximumMessageSize1); + NSXMLDocument initWithRootElement_(NSXMLElement? element) { + final _ret = _lib._objc_msgSend_1001( + _id, _lib._sel_initWithRootElement_1, element?._id ?? ffi.nullptr); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); } - set maximumMessageSize(int value) { - return _lib._objc_msgSend_590( - _id, _lib._sel_setMaximumMessageSize_1, value); + static NSObject replacementClassForClass_(SentryCocoa _lib, NSObject cls) { + final _ret = _lib._objc_msgSend_16(_lib._class_NSXMLDocument1, + _lib._sel_replacementClassForClass_1, cls._id); + return NSObject._(_ret, _lib, retain: true, release: true); } - int get closeCode { - return _lib._objc_msgSend_1015(_id, _lib._sel_closeCode1); + NSString? get characterEncoding { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_characterEncoding1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - NSData? get closeReason { - final _ret = _lib._objc_msgSend_39(_id, _lib._sel_closeReason1); + set characterEncoding(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setCharacterEncoding_1, value?._id ?? ffi.nullptr); + } + + NSString? get version { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_version1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set version(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setVersion_1, value?._id ?? ffi.nullptr); + } + + bool get standalone { + return _lib._objc_msgSend_12(_id, _lib._sel_isStandalone1); + } + + set standalone(bool value) { + return _lib._objc_msgSend_492(_id, _lib._sel_setStandalone_1, value); + } + + int get documentContentKind { + return _lib._objc_msgSend_1008(_id, _lib._sel_documentContentKind1); + } + + set documentContentKind(int value) { + return _lib._objc_msgSend_1009( + _id, _lib._sel_setDocumentContentKind_1, value); + } + + NSString? get MIMEType { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_MIMEType1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); + } + + set MIMEType(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setMIMEType_1, value?._id ?? ffi.nullptr); + } + + NSXMLDTD? get DTD { + final _ret = _lib._objc_msgSend_1019(_id, _lib._sel_DTD1); + return _ret.address == 0 + ? null + : NSXMLDTD._(_ret, _lib, retain: true, release: true); + } + + set DTD(NSXMLDTD? value) { + return _lib._objc_msgSend_1020( + _id, _lib._sel_setDTD_1, value?._id ?? ffi.nullptr); + } + + void setRootElement_(NSXMLElement? root) { + _lib._objc_msgSend_1021( + _id, _lib._sel_setRootElement_1, root?._id ?? ffi.nullptr); + } + + NSXMLElement rootElement() { + final _ret = _lib._objc_msgSend_1022(_id, _lib._sel_rootElement1); + return NSXMLElement._(_ret, _lib, retain: true, release: true); + } + + void insertChild_atIndex_(NSXMLNode? child, int index) { + _lib._objc_msgSend_1010( + _id, _lib._sel_insertChild_atIndex_1, child?._id ?? ffi.nullptr, index); + } + + void insertChildren_atIndex_(NSArray? children, int index) { + _lib._objc_msgSend_1011(_id, _lib._sel_insertChildren_atIndex_1, + children?._id ?? ffi.nullptr, index); + } + + void removeChildAtIndex_(int index) { + _lib._objc_msgSend_439(_id, _lib._sel_removeChildAtIndex_1, index); + } + + void setChildren_(NSArray? children) { + _lib._objc_msgSend_441( + _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + } + + void addChild_(NSXMLNode? child) { + _lib._objc_msgSend_1012( + _id, _lib._sel_addChild_1, child?._id ?? ffi.nullptr); + } + + void replaceChildAtIndex_withNode_(int index, NSXMLNode? node) { + _lib._objc_msgSend_1013(_id, _lib._sel_replaceChildAtIndex_withNode_1, + index, node?._id ?? ffi.nullptr); + } + + NSData? get XMLData { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_XMLData1); return _ret.address == 0 ? null : NSData._(_ret, _lib, retain: true, release: true); } - @override - NSURLSessionWebSocketTask init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionWebSocketTask._(_ret, _lib, retain: true, release: true); + NSData XMLDataWithOptions_(int options) { + final _ret = + _lib._objc_msgSend_1023(_id, _lib._sel_XMLDataWithOptions_1, options); + return NSData._(_ret, _lib, retain: true, release: true); } - static NSURLSessionWebSocketTask new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketTask1, _lib._sel_new1); - return NSURLSessionWebSocketTask._(_ret, _lib, - retain: false, release: true); + NSObject objectByApplyingXSLT_arguments_error_(NSData? xslt, + NSDictionary? arguments, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1024( + _id, + _lib._sel_objectByApplyingXSLT_arguments_error_1, + xslt?._id ?? ffi.nullptr, + arguments?._id ?? ffi.nullptr, + error); + return NSObject._(_ret, _lib, retain: true, release: true); } - static NSURLSessionWebSocketTask allocWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_allocWithZone_1, zone); - return NSURLSessionWebSocketTask._(_ret, _lib, - retain: false, release: true); + NSObject objectByApplyingXSLTString_arguments_error_(NSString? xslt, + NSDictionary? arguments, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1025( + _id, + _lib._sel_objectByApplyingXSLTString_arguments_error_1, + xslt?._id ?? ffi.nullptr, + arguments?._id ?? ffi.nullptr, + error); + return NSObject._(_ret, _lib, retain: true, release: true); } - static NSURLSessionWebSocketTask alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketTask1, _lib._sel_alloc1); - return NSURLSessionWebSocketTask._(_ret, _lib, - retain: false, release: true); + NSObject objectByApplyingXSLTAtURL_arguments_error_(NSURL? xsltURL, + NSDictionary? argument, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1026( + _id, + _lib._sel_objectByApplyingXSLTAtURL_arguments_error_1, + xsltURL?._id ?? ffi.nullptr, + argument?._id ?? ffi.nullptr, + error); + return NSObject._(_ret, _lib, retain: true, release: true); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SentryCocoa _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSURLSessionWebSocketTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument._id); + bool validateAndReturnError_(ffi.Pointer> error) { + return _lib._objc_msgSend_225( + _id, _lib._sel_validateAndReturnError_1, error); } - static void cancelPreviousPerformRequestsWithTarget_( - SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); + @override + NSXMLDocument initWithKind_(int kind) { + final _ret = _lib._objc_msgSend_999(_id, _lib._sel_initWithKind_1, kind); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); } - static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_accessInstanceVariablesDirectly1); + @override + NSXMLDocument initWithKind_options_(int kind, int options) { + final _ret = _lib._objc_msgSend_1000( + _id, _lib._sel_initWithKind_options_1, kind, options); + return NSXMLDocument._(_ret, _lib, retain: true, release: true); } - static bool useStoredAccessor(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSURLSessionWebSocketTask1, _lib._sel_useStoredAccessor1); + static NSObject document(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_document1); + return NSObject._(_ret, _lib, retain: true, release: true); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SentryCocoa _lib, NSString? key) { - final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLSessionWebSocketTask1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key?._id ?? ffi.nullptr); - return NSSet._(_ret, _lib, retain: true, release: true); + static NSObject documentWithRootElement_( + SentryCocoa _lib, NSXMLElement? element) { + final _ret = _lib._objc_msgSend_1001(_lib._class_NSXMLDocument1, + _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - static bool automaticallyNotifiesObserversForKey_( - SentryCocoa _lib, NSString? key) { - return _lib._objc_msgSend_59( - _lib._class_NSURLSessionWebSocketTask1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key?._id ?? ffi.nullptr); + static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, + _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - static void setKeys_triggerChangeNotificationsForDependentKey_( - SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { - _lib._objc_msgSend_82( - _lib._class_NSURLSessionWebSocketTask1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys?._id ?? ffi.nullptr, - dependentKey?._id ?? ffi.nullptr); + static NSObject elementWithName_URI_( + SentryCocoa _lib, NSString? name, NSString? URI) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDocument1, + _lib._sel_elementWithName_URI_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + static NSObject elementWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? string) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDocument1, + _lib._sel_elementWithName_stringValue_1, + name?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionWebSocketTask1, - _lib._sel_classForKeyedUnarchiver1); + static NSObject elementWithName_children_attributes_(SentryCocoa _lib, + NSString? name, NSArray? children, NSArray? attributes) { + final _ret = _lib._objc_msgSend_1002( + _lib._class_NSXMLDocument1, + _lib._sel_elementWithName_children_attributes_1, + name?._id ?? ffi.nullptr, + children?._id ?? ffi.nullptr, + attributes?._id ?? ffi.nullptr); return NSObject._(_ret, _lib, retain: true, release: true); } -} -class NSURLSessionWebSocketMessage extends NSObject { - NSURLSessionWebSocketMessage._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); + static NSObject attributeWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDocument1, + _lib._sel_attributeWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); + } - /// Returns a [NSURLSessionWebSocketMessage] that points to the same underlying object as [other]. - static NSURLSessionWebSocketMessage castFrom( - T other) { - return NSURLSessionWebSocketMessage._(other._id, other._lib, - retain: true, release: true); + static NSObject attributeWithName_URI_stringValue_( + SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { + final _ret = _lib._objc_msgSend_26( + _lib._class_NSXMLDocument1, + _lib._sel_attributeWithName_URI_stringValue_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - /// Returns a [NSURLSessionWebSocketMessage] that wraps the given raw object pointer. - static NSURLSessionWebSocketMessage castFromPointer( - SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSURLSessionWebSocketMessage._(other, lib, - retain: retain, release: release); + static NSObject namespaceWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDocument1, + _lib._sel_namespaceWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - /// Returns whether [obj] is an instance of [NSURLSessionWebSocketMessage]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSURLSessionWebSocketMessage1); + static NSObject processingInstructionWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDocument1, + _lib._sel_processingInstructionWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - NSURLSessionWebSocketMessage initWithData_(NSData? data) { - final _ret = _lib._objc_msgSend_257( - _id, _lib._sel_initWithData_1, data?._id ?? ffi.nullptr); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: true, release: true); + static NSObject commentWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, + _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - NSURLSessionWebSocketMessage initWithString_(NSString? string) { - final _ret = _lib._objc_msgSend_30( - _id, _lib._sel_initWithString_1, string?._id ?? ffi.nullptr); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: true, release: true); + static NSObject textWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, + _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - int get type { - return _lib._objc_msgSend_1010(_id, _lib._sel_type1); + static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, + _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - NSData? get data { - final _ret = _lib._objc_msgSend_39(_id, _lib._sel_data1); - return _ret.address == 0 - ? null - : NSData._(_ret, _lib, retain: true, release: true); + static NSString localNameForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDocument1, + _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - NSString? get string { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_string1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSString prefixForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDocument1, + _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - @override - NSURLSessionWebSocketMessage init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: true, release: true); + static NSXMLNode predefinedNamespaceForPrefix_( + SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_1016(_lib._class_NSXMLDocument1, + _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); } - static NSURLSessionWebSocketMessage new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketMessage1, _lib._sel_new1); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: false, release: true); + static NSXMLDocument new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_new1); + return NSXMLDocument._(_ret, _lib, retain: false, release: true); } - static NSURLSessionWebSocketMessage allocWithZone_( + static NSXMLDocument allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_allocWithZone_1, zone); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: false, release: true); + final _ret = _lib._objc_msgSend_3( + _lib._class_NSXMLDocument1, _lib._sel_allocWithZone_1, zone); + return NSXMLDocument._(_ret, _lib, retain: false, release: true); } - static NSURLSessionWebSocketMessage alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSURLSessionWebSocketMessage1, _lib._sel_alloc1); - return NSURLSessionWebSocketMessage._(_ret, _lib, - retain: false, release: true); + static NSXMLDocument alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_alloc1); + return NSXMLDocument._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -68578,7 +69657,7 @@ class NSURLSessionWebSocketMessage extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSURLSessionWebSocketMessage1, + _lib._class_NSXMLDocument1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -68587,24 +69666,24 @@ class NSURLSessionWebSocketMessage extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSURLSessionWebSocketMessage1, + _lib._objc_msgSend_15(_lib._class_NSXMLDocument1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12( + _lib._class_NSXMLDocument1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_useStoredAccessor1); + return _lib._objc_msgSend_12( + _lib._class_NSXMLDocument1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSURLSessionWebSocketMessage1, + _lib._class_NSXMLDocument1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -68613,7 +69692,7 @@ class NSURLSessionWebSocketMessage extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSURLSessionWebSocketMessage1, + _lib._class_NSXMLDocument1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -68621,7 +69700,7 @@ class NSURLSessionWebSocketMessage extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSURLSessionWebSocketMessage1, + _lib._class_NSXMLDocument1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -68629,661 +69708,322 @@ class NSURLSessionWebSocketMessage extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSXMLDocument1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSURLSessionWebSocketMessage1, - _lib._sel_classForKeyedUnarchiver1); + final _ret = _lib._objc_msgSend_2( + _lib._class_NSXMLDocument1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSURLSessionWebSocketMessageType { - static const int NSURLSessionWebSocketMessageTypeData = 0; - static const int NSURLSessionWebSocketMessageTypeString = 1; -} - -void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) { - return block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>()(arg0, arg1); -} - -final _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry = - {}; -int _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex = - 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( - Function fn) { - final id = - ++_ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[id] = - fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1) { - return (_ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureRegistry[ - block.ref.target.address] - as void Function( - ffi.Pointer, ffi.Pointer))(arg0, arg1); -} - -class ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError - extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError._( - ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); - - /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunctionPointer( - SentryCocoa lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer arg0, - ffi.Pointer arg1)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>( - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError.fromFunction( - SentryCocoa lib, - void Function(ffi.Pointer arg0, ffi.Pointer arg1) - fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>( - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURLSessionWebSocketMessage_NSError_registerClosure( - fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - void call(ffi.Pointer arg0, ffi.Pointer arg1) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>()(_id, arg0, arg1); - } -} - -abstract class NSURLSessionWebSocketCloseCode { - static const int NSURLSessionWebSocketCloseCodeInvalid = 0; - static const int NSURLSessionWebSocketCloseCodeNormalClosure = 1000; - static const int NSURLSessionWebSocketCloseCodeGoingAway = 1001; - static const int NSURLSessionWebSocketCloseCodeProtocolError = 1002; - static const int NSURLSessionWebSocketCloseCodeUnsupportedData = 1003; - static const int NSURLSessionWebSocketCloseCodeNoStatusReceived = 1005; - static const int NSURLSessionWebSocketCloseCodeAbnormalClosure = 1006; - static const int NSURLSessionWebSocketCloseCodeInvalidFramePayloadData = 1007; - static const int NSURLSessionWebSocketCloseCodePolicyViolation = 1008; - static const int NSURLSessionWebSocketCloseCodeMessageTooBig = 1009; - static const int NSURLSessionWebSocketCloseCodeMandatoryExtensionMissing = - 1010; - static const int NSURLSessionWebSocketCloseCodeInternalServerError = 1011; - static const int NSURLSessionWebSocketCloseCodeTLSHandshakeFailure = 1015; -} - -void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) { - return block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>()(arg0, arg1, arg2); -} - -final _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry = - {}; -int _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( - Function fn) { - final id = - ++_ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) { - return (_ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureRegistry[ - block.ref.target.address] - as void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer))(arg0, arg1, arg2); -} - -class ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError._( - ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); - - /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunctionPointer( - SentryCocoa lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError.fromFunction( - SentryCocoa lib, - void Function(ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) - fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSData_NSURLResponse_NSError_registerClosure( - fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - void call(ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); - } -} - -void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) { - return block.ref.target - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>()(arg0, arg1, arg2); -} - -final _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry = - {}; -int _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex = 0; -ffi.Pointer - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( - Function fn) { - final id = - ++_ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2) { - return (_ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureRegistry[ - block.ref.target.address] - as void Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer))(arg0, arg1, arg2); -} - -class ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError._( - ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); - - /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunctionPointer( - SentryCocoa lib, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError.fromFunction( - SentryCocoa lib, - void Function(ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) - fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>( - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSURL_NSURLResponse_NSError_registerClosure( - fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - void call(ffi.Pointer arg0, ffi.Pointer arg1, - ffi.Pointer arg2) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>>() - .asFunction< - void Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1, - ffi.Pointer arg2)>()(_id, arg0, arg1, arg2); - } +abstract class NSXMLDocumentContentKind { + static const int NSXMLDocumentXMLKind = 0; + static const int NSXMLDocumentXHTMLKind = 1; + static const int NSXMLDocumentHTMLKind = 2; + static const int NSXMLDocumentTextKind = 3; } -class NSProtocolChecker extends NSProxy { - NSProtocolChecker._(ffi.Pointer id, SentryCocoa lib, +class NSXMLDTD extends NSXMLNode { + NSXMLDTD._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSProtocolChecker] that points to the same underlying object as [other]. - static NSProtocolChecker castFrom(T other) { - return NSProtocolChecker._(other._id, other._lib, - retain: true, release: true); + /// Returns a [NSXMLDTD] that points to the same underlying object as [other]. + static NSXMLDTD castFrom(T other) { + return NSXMLDTD._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSProtocolChecker] that wraps the given raw object pointer. - static NSProtocolChecker castFromPointer( + /// Returns a [NSXMLDTD] that wraps the given raw object pointer. + static NSXMLDTD castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSProtocolChecker._(other, lib, retain: retain, release: release); - } - - /// Returns whether [obj] is an instance of [NSProtocolChecker]. - static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, - obj._lib._class_NSProtocolChecker1); - } - - Protocol? get protocol { - final _ret = _lib._objc_msgSend_1026(_id, _lib._sel_protocol1); - return _ret.address == 0 - ? null - : Protocol._(_ret, _lib, retain: true, release: true); - } - - NSObject? get target { - final _ret = _lib._objc_msgSend_856(_id, _lib._sel_target1); - return _ret.address == 0 - ? null - : NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSProtocolChecker protocolCheckerWithTarget_protocol_( - SentryCocoa _lib, NSObject? anObject, Protocol? aProtocol) { - final _ret = _lib._objc_msgSend_1027( - _lib._class_NSProtocolChecker1, - _lib._sel_protocolCheckerWithTarget_protocol_1, - anObject?._id ?? ffi.nullptr, - aProtocol?._id ?? ffi.nullptr); - return NSProtocolChecker._(_ret, _lib, retain: true, release: true); - } - - NSProtocolChecker initWithTarget_protocol_( - NSObject? anObject, Protocol? aProtocol) { - final _ret = _lib._objc_msgSend_1027( - _id, - _lib._sel_initWithTarget_protocol_1, - anObject?._id ?? ffi.nullptr, - aProtocol?._id ?? ffi.nullptr); - return NSProtocolChecker._(_ret, _lib, retain: true, release: true); - } - - static NSObject alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSProtocolChecker1, _lib._sel_alloc1); - return NSObject._(_ret, _lib, retain: false, release: true); - } - - static bool respondsToSelector_( - SentryCocoa _lib, ffi.Pointer aSelector) { - return _lib._objc_msgSend_4(_lib._class_NSProtocolChecker1, - _lib._sel_respondsToSelector_1, aSelector); - } -} - -class NSTask extends NSObject { - NSTask._(ffi.Pointer id, SentryCocoa lib, - {bool retain = false, bool release = false}) - : super._(id, lib, retain: retain, release: release); - - /// Returns a [NSTask] that points to the same underlying object as [other]. - static NSTask castFrom(T other) { - return NSTask._(other._id, other._lib, retain: true, release: true); - } - - /// Returns a [NSTask] that wraps the given raw object pointer. - static NSTask castFromPointer(SentryCocoa lib, ffi.Pointer other, - {bool retain = false, bool release = false}) { - return NSTask._(other, lib, retain: retain, release: release); + return NSXMLDTD._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSTask]. + /// Returns whether [obj] is an instance of [NSXMLDTD]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSTask1); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDTD1); } @override - NSTask init() { + NSXMLDTD init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSTask._(_ret, _lib, retain: true, release: true); - } - - NSURL? get executableURL { - final _ret = _lib._objc_msgSend_40(_id, _lib._sel_executableURL1); - return _ret.address == 0 - ? null - : NSURL._(_ret, _lib, retain: true, release: true); + return NSXMLDTD._(_ret, _lib, retain: true, release: true); } - set executableURL(NSURL? value) { - return _lib._objc_msgSend_655( - _id, _lib._sel_setExecutableURL_1, value?._id ?? ffi.nullptr); + @override + NSXMLDTD initWithKind_options_(int kind, int options) { + final _ret = _lib._objc_msgSend_1000( + _id, _lib._sel_initWithKind_options_1, kind, options); + return NSXMLDTD._(_ret, _lib, retain: true, release: true); } - NSArray? get arguments { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_arguments1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + NSXMLDTD initWithContentsOfURL_options_error_( + NSURL? url, int mask, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1006( + _id, + _lib._sel_initWithContentsOfURL_options_error_1, + url?._id ?? ffi.nullptr, + mask, + error); + return NSXMLDTD._(_ret, _lib, retain: true, release: true); } - set arguments(NSArray? value) { - return _lib._objc_msgSend_765( - _id, _lib._sel_setArguments_1, value?._id ?? ffi.nullptr); + NSXMLDTD initWithData_options_error_( + NSData? data, int mask, ffi.Pointer> error) { + final _ret = _lib._objc_msgSend_1007( + _id, + _lib._sel_initWithData_options_error_1, + data?._id ?? ffi.nullptr, + mask, + error); + return NSXMLDTD._(_ret, _lib, retain: true, release: true); } - - NSDictionary? get environment { - final _ret = _lib._objc_msgSend_170(_id, _lib._sel_environment1); + + NSString? get publicID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_publicID1); return _ret.address == 0 ? null - : NSDictionary._(_ret, _lib, retain: true, release: true); + : NSString._(_ret, _lib, retain: true, release: true); } - set environment(NSDictionary? value) { - return _lib._objc_msgSend_171( - _id, _lib._sel_setEnvironment_1, value?._id ?? ffi.nullptr); + set publicID(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPublicID_1, value?._id ?? ffi.nullptr); } - NSURL? get currentDirectoryURL { - final _ret = _lib._objc_msgSend_40(_id, _lib._sel_currentDirectoryURL1); + NSString? get systemID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_systemID1); return _ret.address == 0 ? null - : NSURL._(_ret, _lib, retain: true, release: true); + : NSString._(_ret, _lib, retain: true, release: true); } - set currentDirectoryURL(NSURL? value) { - return _lib._objc_msgSend_655( - _id, _lib._sel_setCurrentDirectoryURL_1, value?._id ?? ffi.nullptr); + set systemID(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setSystemID_1, value?._id ?? ffi.nullptr); } - NSObject get standardInput { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_standardInput1); - return NSObject._(_ret, _lib, retain: true, release: true); + void insertChild_atIndex_(NSXMLNode? child, int index) { + _lib._objc_msgSend_1010( + _id, _lib._sel_insertChild_atIndex_1, child?._id ?? ffi.nullptr, index); } - set standardInput(NSObject value) { - return _lib._objc_msgSend_387(_id, _lib._sel_setStandardInput_1, value._id); + void insertChildren_atIndex_(NSArray? children, int index) { + _lib._objc_msgSend_1011(_id, _lib._sel_insertChildren_atIndex_1, + children?._id ?? ffi.nullptr, index); } - NSObject get standardOutput { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_standardOutput1); - return NSObject._(_ret, _lib, retain: true, release: true); + void removeChildAtIndex_(int index) { + _lib._objc_msgSend_439(_id, _lib._sel_removeChildAtIndex_1, index); } - set standardOutput(NSObject value) { - return _lib._objc_msgSend_387( - _id, _lib._sel_setStandardOutput_1, value._id); + void setChildren_(NSArray? children) { + _lib._objc_msgSend_441( + _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); } - NSObject get standardError { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_standardError1); - return NSObject._(_ret, _lib, retain: true, release: true); + void addChild_(NSXMLNode? child) { + _lib._objc_msgSend_1012( + _id, _lib._sel_addChild_1, child?._id ?? ffi.nullptr); } - set standardError(NSObject value) { - return _lib._objc_msgSend_387(_id, _lib._sel_setStandardError_1, value._id); + void replaceChildAtIndex_withNode_(int index, NSXMLNode? node) { + _lib._objc_msgSend_1013(_id, _lib._sel_replaceChildAtIndex_withNode_1, + index, node?._id ?? ffi.nullptr); } - bool launchAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_225(_id, _lib._sel_launchAndReturnError_1, error); + NSXMLDTDNode entityDeclarationForName_(NSString? name) { + final _ret = _lib._objc_msgSend_1017( + _id, _lib._sel_entityDeclarationForName_1, name?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); } - void interrupt() { - _lib._objc_msgSend_1(_id, _lib._sel_interrupt1); + NSXMLDTDNode notationDeclarationForName_(NSString? name) { + final _ret = _lib._objc_msgSend_1017( + _id, _lib._sel_notationDeclarationForName_1, name?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); } - void terminate() { - _lib._objc_msgSend_1(_id, _lib._sel_terminate1); + NSXMLDTDNode elementDeclarationForName_(NSString? name) { + final _ret = _lib._objc_msgSend_1017( + _id, _lib._sel_elementDeclarationForName_1, name?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); } - bool suspend() { - return _lib._objc_msgSend_12(_id, _lib._sel_suspend1); + NSXMLDTDNode attributeDeclarationForName_elementName_( + NSString? name, NSString? elementName) { + final _ret = _lib._objc_msgSend_1018( + _id, + _lib._sel_attributeDeclarationForName_elementName_1, + name?._id ?? ffi.nullptr, + elementName?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); } - bool resume() { - return _lib._objc_msgSend_12(_id, _lib._sel_resume1); + static NSXMLDTDNode predefinedEntityDeclarationForName_( + SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_1017( + _lib._class_NSXMLDTD1, + _lib._sel_predefinedEntityDeclarationForName_1, + name?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); } - int get processIdentifier { - return _lib._objc_msgSend_219(_id, _lib._sel_processIdentifier1); + @override + NSXMLDTD initWithKind_(int kind) { + final _ret = _lib._objc_msgSend_999(_id, _lib._sel_initWithKind_1, kind); + return NSXMLDTD._(_ret, _lib, retain: true, release: true); } - bool get running { - return _lib._objc_msgSend_12(_id, _lib._sel_isRunning1); + static NSObject document(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_document1); + return NSObject._(_ret, _lib, retain: true, release: true); } - int get terminationStatus { - return _lib._objc_msgSend_219(_id, _lib._sel_terminationStatus1); + static NSObject documentWithRootElement_( + SentryCocoa _lib, NSXMLElement? element) { + final _ret = _lib._objc_msgSend_1001(_lib._class_NSXMLDTD1, + _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - int get terminationReason { - return _lib._objc_msgSend_1028(_id, _lib._sel_terminationReason1); + static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, + _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - ObjCBlock_ffiVoid_NSTask get terminationHandler { - final _ret = _lib._objc_msgSend_1029(_id, _lib._sel_terminationHandler1); - return ObjCBlock_ffiVoid_NSTask._(_ret, _lib); + static NSObject elementWithName_URI_( + SentryCocoa _lib, NSString? name, NSString? URI) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTD1, + _lib._sel_elementWithName_URI_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - set terminationHandler(ObjCBlock_ffiVoid_NSTask value) { - return _lib._objc_msgSend_1030( - _id, _lib._sel_setTerminationHandler_1, value._id); + static NSObject elementWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? string) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTD1, + _lib._sel_elementWithName_stringValue_1, + name?._id ?? ffi.nullptr, + string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - int get qualityOfService { - return _lib._objc_msgSend_507(_id, _lib._sel_qualityOfService1); + static NSObject elementWithName_children_attributes_(SentryCocoa _lib, + NSString? name, NSArray? children, NSArray? attributes) { + final _ret = _lib._objc_msgSend_1002( + _lib._class_NSXMLDTD1, + _lib._sel_elementWithName_children_attributes_1, + name?._id ?? ffi.nullptr, + children?._id ?? ffi.nullptr, + attributes?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - set qualityOfService(int value) { - return _lib._objc_msgSend_508(_id, _lib._sel_setQualityOfService_1, value); + static NSObject attributeWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTD1, + _lib._sel_attributeWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - static NSTask - launchedTaskWithExecutableURL_arguments_error_terminationHandler_( - SentryCocoa _lib, - NSURL? url, - NSArray? arguments, - ffi.Pointer> error, - ObjCBlock_ffiVoid_NSTask terminationHandler) { - final _ret = _lib._objc_msgSend_1031( - _lib._class_NSTask1, - _lib._sel_launchedTaskWithExecutableURL_arguments_error_terminationHandler_1, - url?._id ?? ffi.nullptr, - arguments?._id ?? ffi.nullptr, - error, - terminationHandler._id); - return NSTask._(_ret, _lib, retain: true, release: true); + static NSObject attributeWithName_URI_stringValue_( + SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { + final _ret = _lib._objc_msgSend_26( + _lib._class_NSXMLDTD1, + _lib._sel_attributeWithName_URI_stringValue_1, + name?._id ?? ffi.nullptr, + URI?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - void waitUntilExit() { - _lib._objc_msgSend_1(_id, _lib._sel_waitUntilExit1); + static NSObject namespaceWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTD1, + _lib._sel_namespaceWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - NSString? get launchPath { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_launchPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSObject processingInstructionWithName_stringValue_( + SentryCocoa _lib, NSString? name, NSString? stringValue) { + final _ret = _lib._objc_msgSend_165( + _lib._class_NSXMLDTD1, + _lib._sel_processingInstructionWithName_stringValue_1, + name?._id ?? ffi.nullptr, + stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - set launchPath(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setLaunchPath_1, value?._id ?? ffi.nullptr); + static NSObject commentWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, + _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - NSString? get currentDirectoryPath { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_currentDirectoryPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static NSObject textWithStringValue_( + SentryCocoa _lib, NSString? stringValue) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, + _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - set currentDirectoryPath(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setCurrentDirectoryPath_1, value?._id ?? ffi.nullptr); + static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, + _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); + return NSObject._(_ret, _lib, retain: true, release: true); } - void launch() { - _lib._objc_msgSend_1(_id, _lib._sel_launch1); + static NSString localNameForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTD1, + _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - static NSTask launchedTaskWithLaunchPath_arguments_( - SentryCocoa _lib, NSString? path, NSArray? arguments) { - final _ret = _lib._objc_msgSend_1032( - _lib._class_NSTask1, - _lib._sel_launchedTaskWithLaunchPath_arguments_1, - path?._id ?? ffi.nullptr, - arguments?._id ?? ffi.nullptr); - return NSTask._(_ret, _lib, retain: true, release: true); + static NSString prefixForName_(SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTD1, + _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); + return NSString._(_ret, _lib, retain: true, release: true); } - static NSTask new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTask1, _lib._sel_new1); - return NSTask._(_ret, _lib, retain: false, release: true); + static NSXMLNode predefinedNamespaceForPrefix_( + SentryCocoa _lib, NSString? name) { + final _ret = _lib._objc_msgSend_1016(_lib._class_NSXMLDTD1, + _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); + return NSXMLNode._(_ret, _lib, retain: true, release: true); } - static NSTask allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + static NSXMLDTD new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_new1); + return NSXMLDTD._(_ret, _lib, retain: false, release: true); + } + + static NSXMLDTD allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSTask1, _lib._sel_allocWithZone_1, zone); - return NSTask._(_ret, _lib, retain: false, release: true); + _lib._class_NSXMLDTD1, _lib._sel_allocWithZone_1, zone); + return NSXMLDTD._(_ret, _lib, retain: false, release: true); } - static NSTask alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSTask1, _lib._sel_alloc1); - return NSTask._(_ret, _lib, retain: false, release: true); + static NSXMLDTD alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_alloc1); + return NSXMLDTD._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -69292,7 +70032,7 @@ class NSTask extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSTask1, + _lib._class_NSXMLDTD1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -69301,24 +70041,24 @@ class NSTask extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSTask1, + _lib._objc_msgSend_15(_lib._class_NSXMLDTD1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSTask1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSXMLDTD1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSTask1, _lib._sel_useStoredAccessor1); + _lib._class_NSXMLDTD1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSTask1, + _lib._class_NSXMLDTD1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -69327,7 +70067,7 @@ class NSTask extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSTask1, + _lib._class_NSXMLDTD1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -69335,7 +70075,7 @@ class NSTask extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSTask1, + _lib._class_NSXMLDTD1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -69343,314 +70083,128 @@ class NSTask extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSTask1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSXMLDTD1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSTask1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSXMLDTD1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSTaskTerminationReason { - static const int NSTaskTerminationReasonExit = 1; - static const int NSTaskTerminationReasonUncaughtSignal = 2; -} - -void _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return block.ref.target - .cast< - ffi.NativeFunction arg0)>>() - .asFunction arg0)>()(arg0); -} - -final _ObjCBlock_ffiVoid_NSTask_closureRegistry = {}; -int _ObjCBlock_ffiVoid_NSTask_closureRegistryIndex = 0; -ffi.Pointer _ObjCBlock_ffiVoid_NSTask_registerClosure(Function fn) { - final id = ++_ObjCBlock_ffiVoid_NSTask_closureRegistryIndex; - _ObjCBlock_ffiVoid_NSTask_closureRegistry[id] = fn; - return ffi.Pointer.fromAddress(id); -} - -void _ObjCBlock_ffiVoid_NSTask_closureTrampoline( - ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { - return (_ObjCBlock_ffiVoid_NSTask_closureRegistry[block.ref.target.address] - as void Function(ffi.Pointer))(arg0); -} - -class ObjCBlock_ffiVoid_NSTask extends _ObjCBlockBase { - ObjCBlock_ffiVoid_NSTask._(ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) - : super._(id, lib, retain: false, release: true); - - /// Creates a block from a C function pointer. - ObjCBlock_ffiVoid_NSTask.fromFunctionPointer( - SentryCocoa lib, - ffi.Pointer< - ffi - .NativeFunction arg0)>> - ptr) - : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSTask_fnPtrTrampoline) - .cast(), - ptr.cast()), - lib); - static ffi.Pointer? _cFuncTrampoline; - - /// Creates a block from a Dart function. - ObjCBlock_ffiVoid_NSTask.fromFunction( - SentryCocoa lib, void Function(ffi.Pointer arg0) fn) - : this._( - lib._newBlock1( - _dartFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>( - _ObjCBlock_ffiVoid_NSTask_closureTrampoline) - .cast(), - _ObjCBlock_ffiVoid_NSTask_registerClosure(fn)), - lib); - static ffi.Pointer? _dartFuncTrampoline; - void call(ffi.Pointer arg0) { - return _id.ref.invoke - .cast< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>>() - .asFunction< - void Function(ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0)>()(_id, arg0); - } -} - -class NSXMLElement extends NSXMLNode { - NSXMLElement._(ffi.Pointer id, SentryCocoa lib, +class NSXMLDTDNode extends NSXMLNode { + NSXMLDTDNode._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSXMLElement] that points to the same underlying object as [other]. - static NSXMLElement castFrom(T other) { - return NSXMLElement._(other._id, other._lib, retain: true, release: true); + /// Returns a [NSXMLDTDNode] that points to the same underlying object as [other]. + static NSXMLDTDNode castFrom(T other) { + return NSXMLDTDNode._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSXMLElement] that wraps the given raw object pointer. - static NSXMLElement castFromPointer( + /// Returns a [NSXMLDTDNode] that wraps the given raw object pointer. + static NSXMLDTDNode castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSXMLElement._(other, lib, retain: retain, release: release); + return NSXMLDTDNode._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSXMLElement]. + /// Returns whether [obj] is an instance of [NSXMLDTDNode]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLElement1); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDTDNode1); } - NSXMLElement initWithName_(NSString? name) { + NSXMLDTDNode initWithXMLString_(NSString? string) { final _ret = _lib._objc_msgSend_30( - _id, _lib._sel_initWithName_1, name?._id ?? ffi.nullptr); - return NSXMLElement._(_ret, _lib, retain: true, release: true); - } - - NSXMLElement initWithName_URI_(NSString? name, NSString? URI) { - final _ret = _lib._objc_msgSend_165(_id, _lib._sel_initWithName_URI_1, - name?._id ?? ffi.nullptr, URI?._id ?? ffi.nullptr); - return NSXMLElement._(_ret, _lib, retain: true, release: true); - } - - NSXMLElement initWithName_stringValue_(NSString? name, NSString? string) { - final _ret = _lib._objc_msgSend_165( - _id, - _lib._sel_initWithName_stringValue_1, - name?._id ?? ffi.nullptr, - string?._id ?? ffi.nullptr); - return NSXMLElement._(_ret, _lib, retain: true, release: true); - } - - NSXMLElement initWithXMLString_error_( - NSString? string, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_279(_id, - _lib._sel_initWithXMLString_error_1, string?._id ?? ffi.nullptr, error); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + _id, _lib._sel_initWithXMLString_1, string?._id ?? ffi.nullptr); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); } @override - NSXMLElement initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1034( + NSXMLDTDNode initWithKind_options_(int kind, int options) { + final _ret = _lib._objc_msgSend_1000( _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLElement._(_ret, _lib, retain: true, release: true); - } - - NSArray elementsForName_(NSString? name) { - final _ret = _lib._objc_msgSend_123( - _id, _lib._sel_elementsForName_1, name?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - NSArray elementsForLocalName_URI_(NSString? localName, NSString? URI) { - final _ret = _lib._objc_msgSend_686( - _id, - _lib._sel_elementsForLocalName_URI_1, - localName?._id ?? ffi.nullptr, - URI?._id ?? ffi.nullptr); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - void addAttribute_(NSXMLNode? attribute) { - _lib._objc_msgSend_1046( - _id, _lib._sel_addAttribute_1, attribute?._id ?? ffi.nullptr); - } - - void removeAttributeForName_(NSString? name) { - _lib._objc_msgSend_192( - _id, _lib._sel_removeAttributeForName_1, name?._id ?? ffi.nullptr); - } - - NSArray? get attributes { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_attributes1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - set attributes(NSArray? value) { - return _lib._objc_msgSend_765( - _id, _lib._sel_setAttributes_1, value?._id ?? ffi.nullptr); - } - - void setAttributesWithDictionary_(NSDictionary? attributes) { - _lib._objc_msgSend_476(_id, _lib._sel_setAttributesWithDictionary_1, - attributes?._id ?? ffi.nullptr); - } - - NSXMLNode attributeForName_(NSString? name) { - final _ret = _lib._objc_msgSend_1050( - _id, _lib._sel_attributeForName_1, name?._id ?? ffi.nullptr); - return NSXMLNode._(_ret, _lib, retain: true, release: true); - } - - NSXMLNode attributeForLocalName_URI_(NSString? localName, NSString? URI) { - final _ret = _lib._objc_msgSend_1067( - _id, - _lib._sel_attributeForLocalName_URI_1, - localName?._id ?? ffi.nullptr, - URI?._id ?? ffi.nullptr); - return NSXMLNode._(_ret, _lib, retain: true, release: true); - } - - void addNamespace_(NSXMLNode? aNamespace) { - _lib._objc_msgSend_1046( - _id, _lib._sel_addNamespace_1, aNamespace?._id ?? ffi.nullptr); - } - - void removeNamespaceForPrefix_(NSString? name) { - _lib._objc_msgSend_192( - _id, _lib._sel_removeNamespaceForPrefix_1, name?._id ?? ffi.nullptr); - } - - NSArray? get namespaces { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_namespaces1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); - } - - set namespaces(NSArray? value) { - return _lib._objc_msgSend_765( - _id, _lib._sel_setNamespaces_1, value?._id ?? ffi.nullptr); - } - - NSXMLNode namespaceForPrefix_(NSString? name) { - final _ret = _lib._objc_msgSend_1050( - _id, _lib._sel_namespaceForPrefix_1, name?._id ?? ffi.nullptr); - return NSXMLNode._(_ret, _lib, retain: true, release: true); - } - - NSXMLNode resolveNamespaceForName_(NSString? name) { - final _ret = _lib._objc_msgSend_1050( - _id, _lib._sel_resolveNamespaceForName_1, name?._id ?? ffi.nullptr); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); } - NSString resolvePrefixForNamespaceURI_(NSString? namespaceURI) { - final _ret = _lib._objc_msgSend_64( - _id, - _lib._sel_resolvePrefixForNamespaceURI_1, - namespaceURI?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + @override + NSXMLDTDNode init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); } - void insertChild_atIndex_(NSXMLNode? child, int index) { - _lib._objc_msgSend_1044( - _id, _lib._sel_insertChild_atIndex_1, child?._id ?? ffi.nullptr, index); + int get DTDKind { + return _lib._objc_msgSend_1014(_id, _lib._sel_DTDKind1); } - - void insertChildren_atIndex_(NSArray? children, int index) { - _lib._objc_msgSend_1045(_id, _lib._sel_insertChildren_atIndex_1, - children?._id ?? ffi.nullptr, index); + + set DTDKind(int value) { + return _lib._objc_msgSend_1015(_id, _lib._sel_setDTDKind_1, value); } - void removeChildAtIndex_(int index) { - _lib._objc_msgSend_439(_id, _lib._sel_removeChildAtIndex_1, index); + bool get external1 { + return _lib._objc_msgSend_12(_id, _lib._sel_isExternal1); } - void setChildren_(NSArray? children) { - _lib._objc_msgSend_441( - _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + NSString? get publicID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_publicID1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - void addChild_(NSXMLNode? child) { - _lib._objc_msgSend_1046( - _id, _lib._sel_addChild_1, child?._id ?? ffi.nullptr); + set publicID(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setPublicID_1, value?._id ?? ffi.nullptr); } - void replaceChildAtIndex_withNode_(int index, NSXMLNode? node) { - _lib._objc_msgSend_1047(_id, _lib._sel_replaceChildAtIndex_withNode_1, - index, node?._id ?? ffi.nullptr); + NSString? get systemID { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_systemID1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - void normalizeAdjacentTextNodesPreservingCDATA_(bool preserve) { - _lib._objc_msgSend_824( - _id, _lib._sel_normalizeAdjacentTextNodesPreservingCDATA_1, preserve); + set systemID(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setSystemID_1, value?._id ?? ffi.nullptr); } - void setAttributesAsDictionary_(NSDictionary? attributes) { - _lib._objc_msgSend_476(_id, _lib._sel_setAttributesAsDictionary_1, - attributes?._id ?? ffi.nullptr); + NSString? get notationName { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_notationName1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - @override - NSXMLElement init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + set notationName(NSString? value) { + return _lib._objc_msgSend_509( + _id, _lib._sel_setNotationName_1, value?._id ?? ffi.nullptr); } @override - NSXMLElement initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1033(_id, _lib._sel_initWithKind_1, kind); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + NSXMLDTDNode initWithKind_(int kind) { + final _ret = _lib._objc_msgSend_999(_id, _lib._sel_initWithKind_1, kind); + return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); } static NSObject document(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_document1); + _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_document1); return NSObject._(_ret, _lib, retain: true, release: true); } static NSObject documentWithRootElement_( SentryCocoa _lib, NSXMLElement? element) { - final _ret = _lib._objc_msgSend_1035(_lib._class_NSXMLElement1, + final _ret = _lib._objc_msgSend_1001(_lib._class_NSXMLDTDNode1, _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); return NSObject._(_ret, _lib, retain: true, release: true); } static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); return NSObject._(_ret, _lib, retain: true, release: true); } @@ -69658,7 +70212,7 @@ class NSXMLElement extends NSXMLNode { static NSObject elementWithName_URI_( SentryCocoa _lib, NSString? name, NSString? URI) { final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLElement1, + _lib._class_NSXMLDTDNode1, _lib._sel_elementWithName_URI_1, name?._id ?? ffi.nullptr, URI?._id ?? ffi.nullptr); @@ -69668,7 +70222,7 @@ class NSXMLElement extends NSXMLNode { static NSObject elementWithName_stringValue_( SentryCocoa _lib, NSString? name, NSString? string) { final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLElement1, + _lib._class_NSXMLDTDNode1, _lib._sel_elementWithName_stringValue_1, name?._id ?? ffi.nullptr, string?._id ?? ffi.nullptr); @@ -69677,8 +70231,8 @@ class NSXMLElement extends NSXMLNode { static NSObject elementWithName_children_attributes_(SentryCocoa _lib, NSString? name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1036( - _lib._class_NSXMLElement1, + final _ret = _lib._objc_msgSend_1002( + _lib._class_NSXMLDTDNode1, _lib._sel_elementWithName_children_attributes_1, name?._id ?? ffi.nullptr, children?._id ?? ffi.nullptr, @@ -69689,7 +70243,7 @@ class NSXMLElement extends NSXMLNode { static NSObject attributeWithName_stringValue_( SentryCocoa _lib, NSString? name, NSString? stringValue) { final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLElement1, + _lib._class_NSXMLDTDNode1, _lib._sel_attributeWithName_stringValue_1, name?._id ?? ffi.nullptr, stringValue?._id ?? ffi.nullptr); @@ -69699,7 +70253,7 @@ class NSXMLElement extends NSXMLNode { static NSObject attributeWithName_URI_stringValue_( SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { final _ret = _lib._objc_msgSend_26( - _lib._class_NSXMLElement1, + _lib._class_NSXMLDTDNode1, _lib._sel_attributeWithName_URI_stringValue_1, name?._id ?? ffi.nullptr, URI?._id ?? ffi.nullptr, @@ -69710,7 +70264,7 @@ class NSXMLElement extends NSXMLNode { static NSObject namespaceWithName_stringValue_( SentryCocoa _lib, NSString? name, NSString? stringValue) { final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLElement1, + _lib._class_NSXMLDTDNode1, _lib._sel_namespaceWithName_stringValue_1, name?._id ?? ffi.nullptr, stringValue?._id ?? ffi.nullptr); @@ -69720,7 +70274,7 @@ class NSXMLElement extends NSXMLNode { static NSObject processingInstructionWithName_stringValue_( SentryCocoa _lib, NSString? name, NSString? stringValue) { final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLElement1, + _lib._class_NSXMLDTDNode1, _lib._sel_processingInstructionWithName_stringValue_1, name?._id ?? ffi.nullptr, stringValue?._id ?? ffi.nullptr); @@ -69729,60 +70283,60 @@ class NSXMLElement extends NSXMLNode { static NSObject commentWithStringValue_( SentryCocoa _lib, NSString? stringValue) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); return NSObject._(_ret, _lib, retain: true, release: true); } static NSObject textWithStringValue_( SentryCocoa _lib, NSString? stringValue) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); return NSObject._(_ret, _lib, retain: true, release: true); } static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLElement1, + final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); return NSObject._(_ret, _lib, retain: true, release: true); } static NSString localNameForName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLElement1, + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTDNode1, _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); return NSString._(_ret, _lib, retain: true, release: true); } static NSString prefixForName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLElement1, + final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTDNode1, _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); return NSString._(_ret, _lib, retain: true, release: true); } static NSXMLNode predefinedNamespaceForPrefix_( SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_1050(_lib._class_NSXMLElement1, + final _ret = _lib._objc_msgSend_1016(_lib._class_NSXMLDTDNode1, _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); return NSXMLNode._(_ret, _lib, retain: true, release: true); } - static NSXMLElement new1(SentryCocoa _lib) { + static NSXMLDTDNode new1(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_new1); - return NSXMLElement._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_new1); + return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); } - static NSXMLElement allocWithZone_( + static NSXMLDTDNode allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLElement1, _lib._sel_allocWithZone_1, zone); - return NSXMLElement._(_ret, _lib, retain: false, release: true); + _lib._class_NSXMLDTDNode1, _lib._sel_allocWithZone_1, zone); + return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); } - static NSXMLElement alloc(SentryCocoa _lib) { + static NSXMLDTDNode alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLElement1, _lib._sel_alloc1); - return NSXMLElement._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_alloc1); + return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -69791,7 +70345,7 @@ class NSXMLElement extends NSXMLNode { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSXMLElement1, + _lib._class_NSXMLDTDNode1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -69800,24 +70354,24 @@ class NSXMLElement extends NSXMLNode { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLElement1, + _lib._objc_msgSend_15(_lib._class_NSXMLDTDNode1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSXMLElement1, _lib._sel_accessInstanceVariablesDirectly1); + _lib._class_NSXMLDTDNode1, _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSXMLElement1, _lib._sel_useStoredAccessor1); + _lib._class_NSXMLDTDNode1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSXMLElement1, + _lib._class_NSXMLDTDNode1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -69826,7 +70380,7 @@ class NSXMLElement extends NSXMLNode { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSXMLElement1, + _lib._class_NSXMLDTDNode1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -69834,7 +70388,7 @@ class NSXMLElement extends NSXMLNode { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSXMLElement1, + _lib._class_NSXMLDTDNode1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -69842,397 +70396,465 @@ class NSXMLElement extends NSXMLNode { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSXMLElement1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_NSXMLDTDNode1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLElement1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_NSXMLDTDNode1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSXMLNode extends NSObject { - NSXMLNode._(ffi.Pointer id, SentryCocoa lib, +abstract class NSXMLDTDNodeKind { + static const int NSXMLEntityGeneralKind = 1; + static const int NSXMLEntityParsedKind = 2; + static const int NSXMLEntityUnparsedKind = 3; + static const int NSXMLEntityParameterKind = 4; + static const int NSXMLEntityPredefined = 5; + static const int NSXMLAttributeCDATAKind = 6; + static const int NSXMLAttributeIDKind = 7; + static const int NSXMLAttributeIDRefKind = 8; + static const int NSXMLAttributeIDRefsKind = 9; + static const int NSXMLAttributeEntityKind = 10; + static const int NSXMLAttributeEntitiesKind = 11; + static const int NSXMLAttributeNMTokenKind = 12; + static const int NSXMLAttributeNMTokensKind = 13; + static const int NSXMLAttributeEnumerationKind = 14; + static const int NSXMLAttributeNotationKind = 15; + static const int NSXMLElementDeclarationUndefinedKind = 16; + static const int NSXMLElementDeclarationEmptyKind = 17; + static const int NSXMLElementDeclarationAnyKind = 18; + static const int NSXMLElementDeclarationMixedKind = 19; + static const int NSXMLElementDeclarationElementKind = 20; +} + +/// @warning This class is reserved for hybrid SDKs. Methods may be changed, renamed or removed +/// without notice. If you want to use one of these methods here please open up an issue and let us +/// know. +/// @note The name of this class is supposed to be a bit weird and ugly. The name starts with private +/// on purpose so users don't see it in code completion when typing Sentry. We also add only at the +/// end to make it more obvious you shouldn't use it. +class PrivateSentrySDKOnly extends NSObject { + PrivateSentrySDKOnly._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSXMLNode] that points to the same underlying object as [other]. - static NSXMLNode castFrom(T other) { - return NSXMLNode._(other._id, other._lib, retain: true, release: true); + /// Returns a [PrivateSentrySDKOnly] that points to the same underlying object as [other]. + static PrivateSentrySDKOnly castFrom(T other) { + return PrivateSentrySDKOnly._(other._id, other._lib, + retain: true, release: true); } - /// Returns a [NSXMLNode] that wraps the given raw object pointer. - static NSXMLNode castFromPointer( + /// Returns a [PrivateSentrySDKOnly] that wraps the given raw object pointer. + static PrivateSentrySDKOnly castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSXMLNode._(other, lib, retain: retain, release: release); + return PrivateSentrySDKOnly._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSXMLNode]. + /// Returns whether [obj] is an instance of [PrivateSentrySDKOnly]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLNode1); - } - - @override - NSXMLNode init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_PrivateSentrySDKOnly1); } - NSXMLNode initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1033(_id, _lib._sel_initWithKind_1, kind); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + /// For storing an envelope synchronously to disk. + static void storeEnvelope_(SentryCocoa _lib, SentryEnvelope? envelope) { + _lib._objc_msgSend_1057(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_storeEnvelope_1, envelope?._id ?? ffi.nullptr); } - NSXMLNode initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1034( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + static void captureEnvelope_(SentryCocoa _lib, SentryEnvelope? envelope) { + _lib._objc_msgSend_1057(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_captureEnvelope_1, envelope?._id ?? ffi.nullptr); } - static NSObject document(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Create an envelope from @c NSData. Needed for example by Flutter. + static SentryEnvelope envelopeWithData_(SentryCocoa _lib, NSData? data) { + final _ret = _lib._objc_msgSend_1058(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_envelopeWithData_1, data?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); } - static NSObject documentWithRootElement_( - SentryCocoa _lib, NSXMLElement? element) { - final _ret = _lib._objc_msgSend_1035(_lib._class_NSXMLNode1, - _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns the current list of debug images. Be aware that the @c SentryDebugMeta is actually + /// describing a debug image. + /// @warning This assumes a crash has occurred and attempts to read the crash information from each + /// image's data segment, which may not be present or be invalid if a crash has not actually + /// occurred. To avoid this, use the new @c +[getDebugImagesCrashed:] instead. + static NSArray getDebugImages(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_getDebugImages1); + return NSArray._(_ret, _lib, retain: true, release: true); } - static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, - _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns the current list of debug images. Be aware that the @c SentryDebugMeta is actually + /// describing a debug image. + /// @param isCrash @c YES if we're collecting binary images for a crash report, @c NO if we're + /// gathering them for other backtrace information, like a performance transaction. If this is for a + /// crash, each image's data section crash info is also included. + static NSArray getDebugImagesCrashed_(SentryCocoa _lib, bool isCrash) { + final _ret = _lib._objc_msgSend_1059(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_getDebugImagesCrashed_1, isCrash); + return NSArray._(_ret, _lib, retain: true, release: true); } - static NSObject elementWithName_URI_( - SentryCocoa _lib, NSString? name, NSString? URI) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLNode1, - _lib._sel_elementWithName_URI_1, - name?._id ?? ffi.nullptr, - URI?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Override SDK information. + static void setSdkName_andVersionString_( + SentryCocoa _lib, NSString? sdkName, NSString? versionString) { + _lib._objc_msgSend_515( + _lib._class_PrivateSentrySDKOnly1, + _lib._sel_setSdkName_andVersionString_1, + sdkName?._id ?? ffi.nullptr, + versionString?._id ?? ffi.nullptr); } - static NSObject elementWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? string) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLNode1, - _lib._sel_elementWithName_stringValue_1, - name?._id ?? ffi.nullptr, - string?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Override SDK information. + static void setSdkName_(SentryCocoa _lib, NSString? sdkName) { + _lib._objc_msgSend_192(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_setSdkName_1, sdkName?._id ?? ffi.nullptr); } - static NSObject elementWithName_children_attributes_(SentryCocoa _lib, - NSString? name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1036( - _lib._class_NSXMLNode1, - _lib._sel_elementWithName_children_attributes_1, - name?._id ?? ffi.nullptr, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Retrieves the SDK name + static NSString getSdkName(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_20( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_getSdkName1); + return NSString._(_ret, _lib, retain: true, release: true); } - static NSObject attributeWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLNode1, - _lib._sel_attributeWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Retrieves the SDK version string + static NSString getSdkVersionString(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_20( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_getSdkVersionString1); + return NSString._(_ret, _lib, retain: true, release: true); } - static NSObject attributeWithName_URI_stringValue_( - SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { - final _ret = _lib._objc_msgSend_26( - _lib._class_NSXMLNode1, - _lib._sel_attributeWithName_URI_stringValue_1, - name?._id ?? ffi.nullptr, - URI?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Retrieves extra context + static NSDictionary getExtraContext(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_170( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_getExtraContext1); + return NSDictionary._(_ret, _lib, retain: true, release: true); } - static NSObject namespaceWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLNode1, - _lib._sel_namespaceWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Start a profiler session associated with the given @c SentryId. + /// @return The system time when the profiler session started. + static int startProfilerForTrace_(SentryCocoa _lib, SentryId? traceId) { + return _lib._objc_msgSend_1060(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_startProfilerForTrace_1, traceId?._id ?? ffi.nullptr); } - static NSObject processingInstructionWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLNode1, - _lib._sel_processingInstructionWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Collect a profiler session data associated with the given @c SentryId. + /// This also discards the profiler. + static NSDictionary collectProfileBetween_and_forTrace_(SentryCocoa _lib, + int startSystemTime, int endSystemTime, SentryId? traceId) { + final _ret = _lib._objc_msgSend_1061( + _lib._class_PrivateSentrySDKOnly1, + _lib._sel_collectProfileBetween_and_forTrace_1, + startSystemTime, + endSystemTime, + traceId?._id ?? ffi.nullptr); + return NSDictionary._(_ret, _lib, retain: true, release: true); } - static NSObject commentWithStringValue_( - SentryCocoa _lib, NSString? stringValue) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, - _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Discard profiler session data associated with the given @c SentryId. + /// This only needs to be called in case you haven't collected the profile (and don't intend to). + static void discardProfilerForTrace_(SentryCocoa _lib, SentryId? traceId) { + _lib._objc_msgSend_1062(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_discardProfilerForTrace_1, traceId?._id ?? ffi.nullptr); } - static NSObject textWithStringValue_( - SentryCocoa _lib, NSString? stringValue) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, - _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static ObjCBlock_ffiVoid_SentryAppStartMeasurement + getOnAppStartMeasurementAvailable(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_1063(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_onAppStartMeasurementAvailable1); + return ObjCBlock_ffiVoid_SentryAppStartMeasurement._(_ret, _lib); } - static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLNode1, - _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static void setOnAppStartMeasurementAvailable( + SentryCocoa _lib, ObjCBlock_ffiVoid_SentryAppStartMeasurement value) { + return _lib._objc_msgSend_1064(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_setOnAppStartMeasurementAvailable_1, value._id); } - int get kind { - return _lib._objc_msgSend_1037(_id, _lib._sel_kind1); + static SentryAppStartMeasurement? getAppStartMeasurement(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_1065( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_appStartMeasurement1); + return _ret.address == 0 + ? null + : SentryAppStartMeasurement._(_ret, _lib, retain: true, release: true); } - NSString? get name { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_name1); + static NSString? getInstallationID(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_20( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_installationID1); return _ret.address == 0 ? null : NSString._(_ret, _lib, retain: true, release: true); } - set name(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setName_1, value?._id ?? ffi.nullptr); + static SentryOptions? getOptions(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_1066( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_options1); + return _ret.address == 0 + ? null + : SentryOptions._(_ret, _lib, retain: true, release: true); } - NSObject get objectValue { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_objectValue1); - return NSObject._(_ret, _lib, retain: true, release: true); + /// If enabled, the SDK won't send the app start measurement with the first transaction. Instead, if + /// @c enableAutoPerformanceTracing is enabled, the SDK measures the app start and then calls + /// @c onAppStartMeasurementAvailable. Furthermore, the SDK doesn't set all values for the app start + /// measurement because the HybridSDKs initialize the Cocoa SDK too late to receive all + /// notifications. Instead, the SDK sets the @c appStartDuration to @c 0 and the + /// @c didFinishLaunchingTimestamp to @c timeIntervalSinceReferenceDate. + /// @note Default is @c NO. + static bool getAppStartMeasurementHybridSDKMode(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_appStartMeasurementHybridSDKMode1); } - set objectValue(NSObject value) { - return _lib._objc_msgSend_387(_id, _lib._sel_setObjectValue_1, value._id); + /// If enabled, the SDK won't send the app start measurement with the first transaction. Instead, if + /// @c enableAutoPerformanceTracing is enabled, the SDK measures the app start and then calls + /// @c onAppStartMeasurementAvailable. Furthermore, the SDK doesn't set all values for the app start + /// measurement because the HybridSDKs initialize the Cocoa SDK too late to receive all + /// notifications. Instead, the SDK sets the @c appStartDuration to @c 0 and the + /// @c didFinishLaunchingTimestamp to @c timeIntervalSinceReferenceDate. + /// @note Default is @c NO. + static void setAppStartMeasurementHybridSDKMode( + SentryCocoa _lib, bool value) { + return _lib._objc_msgSend_492(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_setAppStartMeasurementHybridSDKMode_1, value); } - NSString? get stringValue { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_stringValue1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static SentryUser userWithDictionary_( + SentryCocoa _lib, NSDictionary? dictionary) { + final _ret = _lib._objc_msgSend_1067(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_userWithDictionary_1, dictionary?._id ?? ffi.nullptr); + return SentryUser._(_ret, _lib, retain: true, release: true); } - set stringValue(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setStringValue_1, value?._id ?? ffi.nullptr); + static SentryBreadcrumb breadcrumbWithDictionary_( + SentryCocoa _lib, NSDictionary? dictionary) { + final _ret = _lib._objc_msgSend_1068(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_breadcrumbWithDictionary_1, dictionary?._id ?? ffi.nullptr); + return SentryBreadcrumb._(_ret, _lib, retain: true, release: true); } - void setStringValue_resolvingEntities_(NSString? string, bool resolve) { - _lib._objc_msgSend_1038(_id, _lib._sel_setStringValue_resolvingEntities_1, - string?._id ?? ffi.nullptr, resolve); + @override + PrivateSentrySDKOnly init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return PrivateSentrySDKOnly._(_ret, _lib, retain: true, release: true); } - int get index { - return _lib._objc_msgSend_10(_id, _lib._sel_index1); + static PrivateSentrySDKOnly new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_PrivateSentrySDKOnly1, _lib._sel_new1); + return PrivateSentrySDKOnly._(_ret, _lib, retain: false, release: true); } - int get level { - return _lib._objc_msgSend_10(_id, _lib._sel_level1); + static PrivateSentrySDKOnly allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_allocWithZone_1, zone); + return PrivateSentrySDKOnly._(_ret, _lib, retain: false, release: true); } - NSXMLDocument? get rootDocument { - final _ret = _lib._objc_msgSend_1061(_id, _lib._sel_rootDocument1); - return _ret.address == 0 - ? null - : NSXMLDocument._(_ret, _lib, retain: true, release: true); + static PrivateSentrySDKOnly alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_alloc1); + return PrivateSentrySDKOnly._(_ret, _lib, retain: false, release: true); } - NSXMLNode? get parent { - final _ret = _lib._objc_msgSend_1062(_id, _lib._sel_parent1); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_PrivateSentrySDKOnly1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); } - int get childCount { - return _lib._objc_msgSend_10(_id, _lib._sel_childCount1); + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } - NSArray? get children { - final _ret = _lib._objc_msgSend_79(_id, _lib._sel_children1); - return _ret.address == 0 - ? null - : NSArray._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_accessInstanceVariablesDirectly1); } - NSXMLNode childAtIndex_(int index) { - final _ret = _lib._objc_msgSend_1063(_id, _lib._sel_childAtIndex_1, index); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_useStoredAccessor1); } - NSXMLNode? get previousSibling { - final _ret = _lib._objc_msgSend_1062(_id, _lib._sel_previousSibling1); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_PrivateSentrySDKOnly1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); } - NSXMLNode? get nextSibling { - final _ret = _lib._objc_msgSend_1062(_id, _lib._sel_nextSibling1); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_PrivateSentrySDKOnly1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); } - NSXMLNode? get previousNode { - final _ret = _lib._objc_msgSend_1062(_id, _lib._sel_previousNode1); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_PrivateSentrySDKOnly1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); } - NSXMLNode? get nextNode { - final _ret = _lib._objc_msgSend_1062(_id, _lib._sel_nextNode1); - return _ret.address == 0 - ? null - : NSXMLNode._(_ret, _lib, retain: true, release: true); + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_PrivateSentrySDKOnly1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); } - void detach() { - _lib._objc_msgSend_1(_id, _lib._sel_detach1); + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_PrivateSentrySDKOnly1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); } +} - NSString? get XPath { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_XPath1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } +class SentryEnvelope extends NSObject { + SentryEnvelope._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); - NSString? get localName { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_localName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + /// Returns a [SentryEnvelope] that points to the same underlying object as [other]. + static SentryEnvelope castFrom(T other) { + return SentryEnvelope._(other._id, other._lib, retain: true, release: true); } - NSString? get prefix { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_prefix1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + /// Returns a [SentryEnvelope] that wraps the given raw object pointer. + static SentryEnvelope castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryEnvelope._(other, lib, retain: retain, release: release); } - NSString? get URI { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_URI1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [SentryEnvelope]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryEnvelope1); } - set URI(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setURI_1, value?._id ?? ffi.nullptr); + @override + SentryEnvelope init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); } - static NSString localNameForName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLNode1, - _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + static SentryEnvelope new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_SentryEnvelope1, _lib._sel_new1); + return SentryEnvelope._(_ret, _lib, retain: false, release: true); } - static NSString prefixForName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLNode1, - _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + SentryEnvelope initWithId_singleItem_( + SentryId? id, SentryEnvelopeItem? item) { + final _ret = _lib._objc_msgSend_1047(_id, _lib._sel_initWithId_singleItem_1, + id?._id ?? ffi.nullptr, item?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); } - static NSXMLNode predefinedNamespaceForPrefix_( - SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_1050(_lib._class_NSXMLNode1, - _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + SentryEnvelope initWithHeader_singleItem_( + SentryEnvelopeHeader? header, SentryEnvelopeItem? item) { + final _ret = _lib._objc_msgSend_1053( + _id, + _lib._sel_initWithHeader_singleItem_1, + header?._id ?? ffi.nullptr, + item?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); } - NSString? get description { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_description1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + SentryEnvelope initWithId_items_(SentryId? id, NSArray? items) { + final _ret = _lib._objc_msgSend_1054(_id, _lib._sel_initWithId_items_1, + id?._id ?? ffi.nullptr, items?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); } - NSString? get XMLString { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_XMLString1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + /// Initializes a @c SentryEnvelope with a single session. + /// @param session to init the envelope with. + SentryEnvelope initWithSession_(SentrySession? session) { + final _ret = _lib._objc_msgSend_1040( + _id, _lib._sel_initWithSession_1, session?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); } - NSString XMLStringWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_1064(_id, _lib._sel_XMLStringWithOptions_1, options); - return NSString._(_ret, _lib, retain: true, release: true); + /// Initializes a @c SentryEnvelope with a list of sessions. + /// Can be used when an operation that starts a session closes an ongoing session. + /// @param sessions to init the envelope with. + SentryEnvelope initWithSessions_(NSArray? sessions) { + final _ret = _lib._objc_msgSend_67( + _id, _lib._sel_initWithSessions_1, sessions?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); } - NSString canonicalXMLStringPreservingComments_(bool comments) { - final _ret = _lib._objc_msgSend_1065( - _id, _lib._sel_canonicalXMLStringPreservingComments_1, comments); - return NSString._(_ret, _lib, retain: true, release: true); + SentryEnvelope initWithHeader_items_( + SentryEnvelopeHeader? header, NSArray? items) { + final _ret = _lib._objc_msgSend_1055(_id, _lib._sel_initWithHeader_items_1, + header?._id ?? ffi.nullptr, items?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); } - NSArray nodesForXPath_error_( - NSString? xpath, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_414( - _id, _lib._sel_nodesForXPath_error_1, xpath?._id ?? ffi.nullptr, error); - return NSArray._(_ret, _lib, retain: true, release: true); + /// Convenience init for a single event. + SentryEnvelope initWithEvent_(SentryEvent? event) { + final _ret = _lib._objc_msgSend_1039( + _id, _lib._sel_initWithEvent_1, event?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); } - NSArray objectsForXQuery_constants_error_(NSString? xquery, - NSDictionary? constants, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1066( - _id, - _lib._sel_objectsForXQuery_constants_error_1, - xquery?._id ?? ffi.nullptr, - constants?._id ?? ffi.nullptr, - error); - return NSArray._(_ret, _lib, retain: true, release: true); + SentryEnvelope initWithUserFeedback_(SentryUserFeedback? userFeedback) { + final _ret = _lib._objc_msgSend_1041(_id, _lib._sel_initWithUserFeedback_1, + userFeedback?._id ?? ffi.nullptr); + return SentryEnvelope._(_ret, _lib, retain: true, release: true); } - NSArray objectsForXQuery_error_( - NSString? xquery, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_414(_id, _lib._sel_objectsForXQuery_error_1, - xquery?._id ?? ffi.nullptr, error); - return NSArray._(_ret, _lib, retain: true, release: true); + /// The envelope header. + SentryEnvelopeHeader? get header { + final _ret = _lib._objc_msgSend_1056(_id, _lib._sel_header1); + return _ret.address == 0 + ? null + : SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); } - static NSXMLNode new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_new1); - return NSXMLNode._(_ret, _lib, retain: false, release: true); + /// The envelope items. + NSArray? get items { + final _ret = _lib._objc_msgSend_79(_id, _lib._sel_items1); + return _ret.address == 0 + ? null + : NSArray._(_ret, _lib, retain: true, release: true); } - static NSXMLNode allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + static SentryEnvelope allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLNode1, _lib._sel_allocWithZone_1, zone); - return NSXMLNode._(_ret, _lib, retain: false, release: true); + _lib._class_SentryEnvelope1, _lib._sel_allocWithZone_1, zone); + return SentryEnvelope._(_ret, _lib, retain: false, release: true); } - static NSXMLNode alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLNode1, _lib._sel_alloc1); - return NSXMLNode._(_ret, _lib, retain: false, release: true); + static SentryEnvelope alloc(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_SentryEnvelope1, _lib._sel_alloc1); + return SentryEnvelope._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -70241,7 +70863,7 @@ class NSXMLNode extends NSObject { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSXMLNode1, + _lib._class_SentryEnvelope1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -70250,24 +70872,24 @@ class NSXMLNode extends NSObject { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLNode1, + _lib._objc_msgSend_15(_lib._class_SentryEnvelope1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLNode1, _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12(_lib._class_SentryEnvelope1, + _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSXMLNode1, _lib._sel_useStoredAccessor1); + _lib._class_SentryEnvelope1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSXMLNode1, + _lib._class_SentryEnvelope1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -70276,7 +70898,7 @@ class NSXMLNode extends NSObject { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSXMLNode1, + _lib._class_SentryEnvelope1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -70284,7 +70906,7 @@ class NSXMLNode extends NSObject { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSXMLNode1, + _lib._class_SentryEnvelope1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); @@ -70292,453 +70914,409 @@ class NSXMLNode extends NSObject { static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_79( - _lib._class_NSXMLNode1, _lib._sel_classFallbacksForKeyedArchiver1); + _lib._class_SentryEnvelope1, _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLNode1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_SentryEnvelope1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSXMLNodeKind { - static const int NSXMLInvalidKind = 0; - static const int NSXMLDocumentKind = 1; - static const int NSXMLElementKind = 2; - static const int NSXMLAttributeKind = 3; - static const int NSXMLNamespaceKind = 4; - static const int NSXMLProcessingInstructionKind = 5; - static const int NSXMLCommentKind = 6; - static const int NSXMLTextKind = 7; - static const int NSXMLDTDKind = 8; - static const int NSXMLEntityDeclarationKind = 9; - static const int NSXMLAttributeDeclarationKind = 10; - static const int NSXMLElementDeclarationKind = 11; - static const int NSXMLNotationDeclarationKind = 12; -} - -abstract class NSXMLNodeOptions { - static const int NSXMLNodeOptionsNone = 0; - static const int NSXMLNodeIsCDATA = 1; - static const int NSXMLNodeExpandEmptyElement = 2; - static const int NSXMLNodeCompactEmptyElement = 4; - static const int NSXMLNodeUseSingleQuotes = 8; - static const int NSXMLNodeUseDoubleQuotes = 16; - static const int NSXMLNodeNeverEscapeContents = 32; - static const int NSXMLDocumentTidyHTML = 512; - static const int NSXMLDocumentTidyXML = 1024; - static const int NSXMLDocumentValidate = 8192; - static const int NSXMLNodeLoadExternalEntitiesAlways = 16384; - static const int NSXMLNodeLoadExternalEntitiesSameOriginOnly = 32768; - static const int NSXMLNodeLoadExternalEntitiesNever = 524288; - static const int NSXMLDocumentXInclude = 65536; - static const int NSXMLNodePrettyPrint = 131072; - static const int NSXMLDocumentIncludeContentTypeDeclaration = 262144; - static const int NSXMLNodePreserveNamespaceOrder = 1048576; - static const int NSXMLNodePreserveAttributeOrder = 2097152; - static const int NSXMLNodePreserveEntities = 4194304; - static const int NSXMLNodePreservePrefixes = 8388608; - static const int NSXMLNodePreserveCDATA = 16777216; - static const int NSXMLNodePreserveWhitespace = 33554432; - static const int NSXMLNodePreserveDTD = 67108864; - static const int NSXMLNodePreserveCharacterReferences = 134217728; - static const int NSXMLNodePromoteSignificantWhitespace = 268435456; - static const int NSXMLNodePreserveEmptyElements = 6; - static const int NSXMLNodePreserveQuotes = 24; - static const int NSXMLNodePreserveAll = 4293918750; -} - -class NSXMLDocument extends NSXMLNode { - NSXMLDocument._(ffi.Pointer id, SentryCocoa lib, +class SentryId extends NSObject { + SentryId._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSXMLDocument] that points to the same underlying object as [other]. - static NSXMLDocument castFrom(T other) { - return NSXMLDocument._(other._id, other._lib, retain: true, release: true); + /// Returns a [SentryId] that points to the same underlying object as [other]. + static SentryId castFrom(T other) { + return SentryId._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSXMLDocument] that wraps the given raw object pointer. - static NSXMLDocument castFromPointer( + /// Returns a [SentryId] that wraps the given raw object pointer. + static SentryId castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSXMLDocument._(other, lib, retain: retain, release: release); + return SentryId._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSXMLDocument]. + /// Returns whether [obj] is an instance of [SentryId]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDocument1); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryId1); } + /// Creates a @c SentryId with a random UUID. @override - NSXMLDocument init() { + SentryId init() { final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + return SentryId._(_ret, _lib, retain: true, release: true); } - NSXMLDocument initWithXMLString_options_error_( - NSString? string, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1039( - _id, - _lib._sel_initWithXMLString_options_error_1, - string?._id ?? ffi.nullptr, - mask, - error); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + /// Creates a SentryId with the given UUID. + SentryId initWithUUID_(NSUUID? uuid) { + final _ret = _lib._objc_msgSend_1037( + _id, _lib._sel_initWithUUID_1, uuid?._id ?? ffi.nullptr); + return SentryId._(_ret, _lib, retain: true, release: true); } - NSXMLDocument initWithContentsOfURL_options_error_( - NSURL? url, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1040( - _id, - _lib._sel_initWithContentsOfURL_options_error_1, - url?._id ?? ffi.nullptr, - mask, - error); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + /// Creates a @c SentryId from a 32 character hexadecimal string without dashes such as + /// "12c2d058d58442709aa2eca08bf20986" or a 36 character hexadecimal string such as such as + /// "12c2d058-d584-4270-9aa2-eca08bf20986". + /// @return SentryId.empty for invalid strings. + SentryId initWithUUIDString_(NSString? string) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithUUIDString_1, string?._id ?? ffi.nullptr); + return SentryId._(_ret, _lib, retain: true, release: true); } - NSXMLDocument initWithData_options_error_( - NSData? data, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1041( - _id, - _lib._sel_initWithData_options_error_1, - data?._id ?? ffi.nullptr, - mask, - error); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + /// Returns a 32 lowercase character hexadecimal string description of the @c SentryId, such as + /// "12c2d058d58442709aa2eca08bf20986". + NSString? get sentryIdString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_sentryIdString1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - NSXMLDocument initWithRootElement_(NSXMLElement? element) { - final _ret = _lib._objc_msgSend_1035( - _id, _lib._sel_initWithRootElement_1, element?._id ?? ffi.nullptr); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + /// A @c SentryId with an empty UUID "00000000000000000000000000000000". + static SentryId? getEmpty(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_1038(_lib._class_SentryId1, _lib._sel_empty1); + return _ret.address == 0 + ? null + : SentryId._(_ret, _lib, retain: true, release: true); } - static NSObject replacementClassForClass_(SentryCocoa _lib, NSObject cls) { - final _ret = _lib._objc_msgSend_16(_lib._class_NSXMLDocument1, - _lib._sel_replacementClassForClass_1, cls._id); - return NSObject._(_ret, _lib, retain: true, release: true); + static SentryId new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_SentryId1, _lib._sel_new1); + return SentryId._(_ret, _lib, retain: false, release: true); } - NSString? get characterEncoding { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_characterEncoding1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static SentryId allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_SentryId1, _lib._sel_allocWithZone_1, zone); + return SentryId._(_ret, _lib, retain: false, release: true); } - set characterEncoding(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setCharacterEncoding_1, value?._id ?? ffi.nullptr); + static SentryId alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_SentryId1, _lib._sel_alloc1); + return SentryId._(_ret, _lib, retain: false, release: true); } - NSString? get version { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_version1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_SentryId1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); } - set version(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setVersion_1, value?._id ?? ffi.nullptr); + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_SentryId1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } - bool get standalone { - return _lib._objc_msgSend_12(_id, _lib._sel_isStandalone1); + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_SentryId1, _lib._sel_accessInstanceVariablesDirectly1); } - set standalone(bool value) { - return _lib._objc_msgSend_492(_id, _lib._sel_setStandalone_1, value); + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_SentryId1, _lib._sel_useStoredAccessor1); } - int get documentContentKind { - return _lib._objc_msgSend_1042(_id, _lib._sel_documentContentKind1); + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_SentryId1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); } - set documentContentKind(int value) { - return _lib._objc_msgSend_1043( - _id, _lib._sel_setDocumentContentKind_1, value); + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_SentryId1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); } - NSString? get MIMEType { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_MIMEType1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_SentryId1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); } - set MIMEType(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setMIMEType_1, value?._id ?? ffi.nullptr); + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_SentryId1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); } - NSXMLDTD? get DTD { - final _ret = _lib._objc_msgSend_1053(_id, _lib._sel_DTD1); - return _ret.address == 0 - ? null - : NSXMLDTD._(_ret, _lib, retain: true, release: true); + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_SentryId1, _lib._sel_classForKeyedUnarchiver1); + return NSObject._(_ret, _lib, retain: true, release: true); } +} - set DTD(NSXMLDTD? value) { - return _lib._objc_msgSend_1054( - _id, _lib._sel_setDTD_1, value?._id ?? ffi.nullptr); +class NSUUID extends NSObject { + NSUUID._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [NSUUID] that points to the same underlying object as [other]. + static NSUUID castFrom(T other) { + return NSUUID._(other._id, other._lib, retain: true, release: true); } - void setRootElement_(NSXMLElement? root) { - _lib._objc_msgSend_1055( - _id, _lib._sel_setRootElement_1, root?._id ?? ffi.nullptr); + /// Returns a [NSUUID] that wraps the given raw object pointer. + static NSUUID castFromPointer(SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return NSUUID._(other, lib, retain: retain, release: release); } - NSXMLElement rootElement() { - final _ret = _lib._objc_msgSend_1056(_id, _lib._sel_rootElement1); - return NSXMLElement._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [NSUUID]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSUUID1); } - void insertChild_atIndex_(NSXMLNode? child, int index) { - _lib._objc_msgSend_1044( - _id, _lib._sel_insertChild_atIndex_1, child?._id ?? ffi.nullptr, index); + static NSUUID UUID(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSUUID1, _lib._sel_UUID1); + return NSUUID._(_ret, _lib, retain: true, release: true); } - void insertChildren_atIndex_(NSArray? children, int index) { - _lib._objc_msgSend_1045(_id, _lib._sel_insertChildren_atIndex_1, - children?._id ?? ffi.nullptr, index); + @override + NSUUID init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return NSUUID._(_ret, _lib, retain: true, release: true); } - void removeChildAtIndex_(int index) { - _lib._objc_msgSend_439(_id, _lib._sel_removeChildAtIndex_1, index); + NSUUID initWithUUIDString_(NSString? string) { + final _ret = _lib._objc_msgSend_30( + _id, _lib._sel_initWithUUIDString_1, string?._id ?? ffi.nullptr); + return NSUUID._(_ret, _lib, retain: true, release: true); } - void setChildren_(NSArray? children) { - _lib._objc_msgSend_441( - _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + NSUUID initWithUUIDBytes_(ffi.Pointer bytes) { + final _ret = + _lib._objc_msgSend_1034(_id, _lib._sel_initWithUUIDBytes_1, bytes); + return NSUUID._(_ret, _lib, retain: true, release: true); } - void addChild_(NSXMLNode? child) { - _lib._objc_msgSend_1046( - _id, _lib._sel_addChild_1, child?._id ?? ffi.nullptr); + void getUUIDBytes_(ffi.Pointer uuid) { + _lib._objc_msgSend_1035(_id, _lib._sel_getUUIDBytes_1, uuid); } - void replaceChildAtIndex_withNode_(int index, NSXMLNode? node) { - _lib._objc_msgSend_1047(_id, _lib._sel_replaceChildAtIndex_withNode_1, - index, node?._id ?? ffi.nullptr); + int compare_(NSUUID? otherUUID) { + return _lib._objc_msgSend_1036( + _id, _lib._sel_compare_1, otherUUID?._id ?? ffi.nullptr); } - NSData? get XMLData { - final _ret = _lib._objc_msgSend_39(_id, _lib._sel_XMLData1); + NSString? get UUIDString { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_UUIDString1); return _ret.address == 0 ? null - : NSData._(_ret, _lib, retain: true, release: true); - } - - NSData XMLDataWithOptions_(int options) { - final _ret = - _lib._objc_msgSend_1057(_id, _lib._sel_XMLDataWithOptions_1, options); - return NSData._(_ret, _lib, retain: true, release: true); + : NSString._(_ret, _lib, retain: true, release: true); } - NSObject objectByApplyingXSLT_arguments_error_(NSData? xslt, - NSDictionary? arguments, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1058( - _id, - _lib._sel_objectByApplyingXSLT_arguments_error_1, - xslt?._id ?? ffi.nullptr, - arguments?._id ?? ffi.nullptr, - error); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSUUID new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSUUID1, _lib._sel_new1); + return NSUUID._(_ret, _lib, retain: false, release: true); } - NSObject objectByApplyingXSLTString_arguments_error_(NSString? xslt, - NSDictionary? arguments, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1059( - _id, - _lib._sel_objectByApplyingXSLTString_arguments_error_1, - xslt?._id ?? ffi.nullptr, - arguments?._id ?? ffi.nullptr, - error); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSUUID allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_NSUUID1, _lib._sel_allocWithZone_1, zone); + return NSUUID._(_ret, _lib, retain: false, release: true); } - NSObject objectByApplyingXSLTAtURL_arguments_error_(NSURL? xsltURL, - NSDictionary? argument, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1060( - _id, - _lib._sel_objectByApplyingXSLTAtURL_arguments_error_1, - xsltURL?._id ?? ffi.nullptr, - argument?._id ?? ffi.nullptr, - error); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSUUID alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_NSUUID1, _lib._sel_alloc1); + return NSUUID._(_ret, _lib, retain: false, release: true); } - bool validateAndReturnError_(ffi.Pointer> error) { - return _lib._objc_msgSend_225( - _id, _lib._sel_validateAndReturnError_1, error); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_NSUUID1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); } - @override - NSXMLDocument initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1033(_id, _lib._sel_initWithKind_1, kind); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_NSUUID1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } - @override - NSXMLDocument initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1034( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLDocument._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSUUID1, _lib._sel_accessInstanceVariablesDirectly1); } - static NSObject document(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_NSUUID1, _lib._sel_useStoredAccessor1); } - static NSObject documentWithRootElement_( - SentryCocoa _lib, NSXMLElement? element) { - final _ret = _lib._objc_msgSend_1035(_lib._class_NSXMLDocument1, - _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_NSUUID1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); } - static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, - _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_NSUUID1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); } - static NSObject elementWithName_URI_( - SentryCocoa _lib, NSString? name, NSString? URI) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDocument1, - _lib._sel_elementWithName_URI_1, - name?._id ?? ffi.nullptr, - URI?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_NSUUID1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); } - static NSObject elementWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? string) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDocument1, - _lib._sel_elementWithName_stringValue_1, - name?._id ?? ffi.nullptr, - string?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79( + _lib._class_NSUUID1, _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); } - static NSObject elementWithName_children_attributes_(SentryCocoa _lib, - NSString? name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1036( - _lib._class_NSXMLDocument1, - _lib._sel_elementWithName_children_attributes_1, - name?._id ?? ffi.nullptr, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_NSUUID1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } +} - static NSObject attributeWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDocument1, - _lib._sel_attributeWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); +class SentryEnvelopeItem extends NSObject { + SentryEnvelopeItem._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryEnvelopeItem] that points to the same underlying object as [other]. + static SentryEnvelopeItem castFrom(T other) { + return SentryEnvelopeItem._(other._id, other._lib, + retain: true, release: true); } - static NSObject attributeWithName_URI_stringValue_( - SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { - final _ret = _lib._objc_msgSend_26( - _lib._class_NSXMLDocument1, - _lib._sel_attributeWithName_URI_stringValue_1, - name?._id ?? ffi.nullptr, - URI?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns a [SentryEnvelopeItem] that wraps the given raw object pointer. + static SentryEnvelopeItem castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryEnvelopeItem._(other, lib, retain: retain, release: release); } - static NSObject namespaceWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDocument1, - _lib._sel_namespaceWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [SentryEnvelopeItem]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryEnvelopeItem1); } - static NSObject processingInstructionWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDocument1, - _lib._sel_processingInstructionWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + SentryEnvelopeItem init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); } - static NSObject commentWithStringValue_( - SentryCocoa _lib, NSString? stringValue) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, - _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static SentryEnvelopeItem new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_SentryEnvelopeItem1, _lib._sel_new1); + return SentryEnvelopeItem._(_ret, _lib, retain: false, release: true); } - static NSObject textWithStringValue_( - SentryCocoa _lib, NSString? stringValue) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, - _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + SentryEnvelopeItem initWithEvent_(SentryEvent? event) { + final _ret = _lib._objc_msgSend_1039( + _id, _lib._sel_initWithEvent_1, event?._id ?? ffi.nullptr); + return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); } - static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDocument1, - _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + SentryEnvelopeItem initWithSession_(SentrySession? session) { + final _ret = _lib._objc_msgSend_1040( + _id, _lib._sel_initWithSession_1, session?._id ?? ffi.nullptr); + return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); } - static NSString localNameForName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDocument1, - _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + SentryEnvelopeItem initWithUserFeedback_(SentryUserFeedback? userFeedback) { + final _ret = _lib._objc_msgSend_1041(_id, _lib._sel_initWithUserFeedback_1, + userFeedback?._id ?? ffi.nullptr); + return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); } - static NSString prefixForName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDocument1, - _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + SentryEnvelopeItem initWithAttachment_maxAttachmentSize_( + SentryAttachment? attachment, int maxAttachmentSize) { + final _ret = _lib._objc_msgSend_1042( + _id, + _lib._sel_initWithAttachment_maxAttachmentSize_1, + attachment?._id ?? ffi.nullptr, + maxAttachmentSize); + return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); } - static NSXMLNode predefinedNamespaceForPrefix_( - SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_1050(_lib._class_NSXMLDocument1, - _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + SentryEnvelopeItem initWithHeader_data_( + SentryEnvelopeItemHeader? header, NSData? data) { + final _ret = _lib._objc_msgSend_1045(_id, _lib._sel_initWithHeader_data_1, + header?._id ?? ffi.nullptr, data?._id ?? ffi.nullptr); + return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); } - static NSXMLDocument new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_new1); - return NSXMLDocument._(_ret, _lib, retain: false, release: true); + /// The envelope item header. + SentryEnvelopeItemHeader? get header { + final _ret = _lib._objc_msgSend_1046(_id, _lib._sel_header1); + return _ret.address == 0 + ? null + : SentryEnvelopeItemHeader._(_ret, _lib, retain: true, release: true); } - static NSXMLDocument allocWithZone_( + /// The envelope payload. + NSData? get data { + final _ret = _lib._objc_msgSend_39(_id, _lib._sel_data1); + return _ret.address == 0 + ? null + : NSData._(_ret, _lib, retain: true, release: true); + } + + static SentryEnvelopeItem allocWithZone_( SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLDocument1, _lib._sel_allocWithZone_1, zone); - return NSXMLDocument._(_ret, _lib, retain: false, release: true); + _lib._class_SentryEnvelopeItem1, _lib._sel_allocWithZone_1, zone); + return SentryEnvelopeItem._(_ret, _lib, retain: false, release: true); } - static NSXMLDocument alloc(SentryCocoa _lib) { + static SentryEnvelopeItem alloc(SentryCocoa _lib) { final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDocument1, _lib._sel_alloc1); - return NSXMLDocument._(_ret, _lib, retain: false, release: true); + _lib._objc_msgSend_2(_lib._class_SentryEnvelopeItem1, _lib._sel_alloc1); + return SentryEnvelopeItem._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -70747,7 +71325,7 @@ class NSXMLDocument extends NSXMLNode { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSXMLDocument1, + _lib._class_SentryEnvelopeItem1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -70756,24 +71334,24 @@ class NSXMLDocument extends NSXMLNode { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLDocument1, + _lib._objc_msgSend_15(_lib._class_SentryEnvelopeItem1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDocument1, _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12(_lib._class_SentryEnvelopeItem1, + _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSXMLDocument1, _lib._sel_useStoredAccessor1); + _lib._class_SentryEnvelopeItem1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSXMLDocument1, + _lib._class_SentryEnvelopeItem1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -70782,7 +71360,7 @@ class NSXMLDocument extends NSXMLNode { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSXMLDocument1, + _lib._class_SentryEnvelopeItem1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -70790,330 +71368,423 @@ class NSXMLDocument extends NSXMLNode { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSXMLDocument1, + _lib._class_SentryEnvelopeItem1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_NSXMLDocument1, _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79(_lib._class_SentryEnvelopeItem1, + _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLDocument1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_SentryEnvelopeItem1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -abstract class NSXMLDocumentContentKind { - static const int NSXMLDocumentXMLKind = 0; - static const int NSXMLDocumentXHTMLKind = 1; - static const int NSXMLDocumentHTMLKind = 2; - static const int NSXMLDocumentTextKind = 3; +class SentryEvent extends _ObjCWrapper { + SentryEvent._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryEvent] that points to the same underlying object as [other]. + static SentryEvent castFrom(T other) { + return SentryEvent._(other._id, other._lib, retain: true, release: true); + } + + /// Returns a [SentryEvent] that wraps the given raw object pointer. + static SentryEvent castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryEvent._(other, lib, retain: retain, release: release); + } + + /// Returns whether [obj] is an instance of [SentryEvent]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryEvent1); + } } -class NSXMLDTD extends NSXMLNode { - NSXMLDTD._(ffi.Pointer id, SentryCocoa lib, +class SentrySession extends _ObjCWrapper { + SentrySession._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSXMLDTD] that points to the same underlying object as [other]. - static NSXMLDTD castFrom(T other) { - return NSXMLDTD._(other._id, other._lib, retain: true, release: true); + /// Returns a [SentrySession] that points to the same underlying object as [other]. + static SentrySession castFrom(T other) { + return SentrySession._(other._id, other._lib, retain: true, release: true); } - /// Returns a [NSXMLDTD] that wraps the given raw object pointer. - static NSXMLDTD castFromPointer( + /// Returns a [SentrySession] that wraps the given raw object pointer. + static SentrySession castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSXMLDTD._(other, lib, retain: retain, release: release); + return SentrySession._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSXMLDTD]. + /// Returns whether [obj] is an instance of [SentrySession]. static bool isInstance(_ObjCWrapper obj) { return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDTD1); + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentrySession1); } +} - @override - NSXMLDTD init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLDTD._(_ret, _lib, retain: true, release: true); +class SentryUserFeedback extends _ObjCWrapper { + SentryUserFeedback._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryUserFeedback] that points to the same underlying object as [other]. + static SentryUserFeedback castFrom(T other) { + return SentryUserFeedback._(other._id, other._lib, + retain: true, release: true); } - @override - NSXMLDTD initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1034( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLDTD._(_ret, _lib, retain: true, release: true); + /// Returns a [SentryUserFeedback] that wraps the given raw object pointer. + static SentryUserFeedback castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryUserFeedback._(other, lib, retain: retain, release: release); } - NSXMLDTD initWithContentsOfURL_options_error_( - NSURL? url, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1040( - _id, - _lib._sel_initWithContentsOfURL_options_error_1, - url?._id ?? ffi.nullptr, - mask, - error); - return NSXMLDTD._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [SentryUserFeedback]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryUserFeedback1); } +} - NSXMLDTD initWithData_options_error_( - NSData? data, int mask, ffi.Pointer> error) { - final _ret = _lib._objc_msgSend_1041( - _id, - _lib._sel_initWithData_options_error_1, - data?._id ?? ffi.nullptr, - mask, - error); - return NSXMLDTD._(_ret, _lib, retain: true, release: true); +class SentryAttachment extends _ObjCWrapper { + SentryAttachment._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryAttachment] that points to the same underlying object as [other]. + static SentryAttachment castFrom(T other) { + return SentryAttachment._(other._id, other._lib, + retain: true, release: true); } - NSString? get publicID { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_publicID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); + /// Returns a [SentryAttachment] that wraps the given raw object pointer. + static SentryAttachment castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryAttachment._(other, lib, retain: retain, release: release); } - set publicID(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setPublicID_1, value?._id ?? ffi.nullptr); + /// Returns whether [obj] is an instance of [SentryAttachment]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryAttachment1); } +} - NSString? get systemID { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_systemID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); +class SentryEnvelopeItemHeader extends NSObject { + SentryEnvelopeItemHeader._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryEnvelopeItemHeader] that points to the same underlying object as [other]. + static SentryEnvelopeItemHeader castFrom(T other) { + return SentryEnvelopeItemHeader._(other._id, other._lib, + retain: true, release: true); } - set systemID(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setSystemID_1, value?._id ?? ffi.nullptr); + /// Returns a [SentryEnvelopeItemHeader] that wraps the given raw object pointer. + static SentryEnvelopeItemHeader castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryEnvelopeItemHeader._(other, lib, + retain: retain, release: release); } - void insertChild_atIndex_(NSXMLNode? child, int index) { - _lib._objc_msgSend_1044( - _id, _lib._sel_insertChild_atIndex_1, child?._id ?? ffi.nullptr, index); + /// Returns whether [obj] is an instance of [SentryEnvelopeItemHeader]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryEnvelopeItemHeader1); } - void insertChildren_atIndex_(NSArray? children, int index) { - _lib._objc_msgSend_1045(_id, _lib._sel_insertChildren_atIndex_1, - children?._id ?? ffi.nullptr, index); + @override + SentryEnvelopeItemHeader init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return SentryEnvelopeItemHeader._(_ret, _lib, retain: true, release: true); } - void removeChildAtIndex_(int index) { - _lib._objc_msgSend_439(_id, _lib._sel_removeChildAtIndex_1, index); + static SentryEnvelopeItemHeader new1(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_SentryEnvelopeItemHeader1, _lib._sel_new1); + return SentryEnvelopeItemHeader._(_ret, _lib, retain: false, release: true); } - void setChildren_(NSArray? children) { - _lib._objc_msgSend_441( - _id, _lib._sel_setChildren_1, children?._id ?? ffi.nullptr); + SentryEnvelopeItemHeader initWithType_length_(NSString? type, int length) { + final _ret = _lib._objc_msgSend_1043( + _id, _lib._sel_initWithType_length_1, type?._id ?? ffi.nullptr, length); + return SentryEnvelopeItemHeader._(_ret, _lib, retain: true, release: true); } - void addChild_(NSXMLNode? child) { - _lib._objc_msgSend_1046( - _id, _lib._sel_addChild_1, child?._id ?? ffi.nullptr); + SentryEnvelopeItemHeader initWithType_length_filenname_contentType_( + NSString? type, int length, NSString? filename, NSString? contentType) { + final _ret = _lib._objc_msgSend_1044( + _id, + _lib._sel_initWithType_length_filenname_contentType_1, + type?._id ?? ffi.nullptr, + length, + filename?._id ?? ffi.nullptr, + contentType?._id ?? ffi.nullptr); + return SentryEnvelopeItemHeader._(_ret, _lib, retain: true, release: true); } - void replaceChildAtIndex_withNode_(int index, NSXMLNode? node) { - _lib._objc_msgSend_1047(_id, _lib._sel_replaceChildAtIndex_withNode_1, - index, node?._id ?? ffi.nullptr); + /// The type of the envelope item. + NSString? get type { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_type1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - NSXMLDTDNode entityDeclarationForName_(NSString? name) { - final _ret = _lib._objc_msgSend_1051( - _id, _lib._sel_entityDeclarationForName_1, name?._id ?? ffi.nullptr); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + int get length { + return _lib._objc_msgSend_10(_id, _lib._sel_length1); } - NSXMLDTDNode notationDeclarationForName_(NSString? name) { - final _ret = _lib._objc_msgSend_1051( - _id, _lib._sel_notationDeclarationForName_1, name?._id ?? ffi.nullptr); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + NSString? get filename { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_filename1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - NSXMLDTDNode elementDeclarationForName_(NSString? name) { - final _ret = _lib._objc_msgSend_1051( - _id, _lib._sel_elementDeclarationForName_1, name?._id ?? ffi.nullptr); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + NSString? get contentType { + final _ret = _lib._objc_msgSend_20(_id, _lib._sel_contentType1); + return _ret.address == 0 + ? null + : NSString._(_ret, _lib, retain: true, release: true); } - NSXMLDTDNode attributeDeclarationForName_elementName_( - NSString? name, NSString? elementName) { - final _ret = _lib._objc_msgSend_1052( - _id, - _lib._sel_attributeDeclarationForName_elementName_1, - name?._id ?? ffi.nullptr, - elementName?._id ?? ffi.nullptr); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + static SentryEnvelopeItemHeader allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + final _ret = _lib._objc_msgSend_3( + _lib._class_SentryEnvelopeItemHeader1, _lib._sel_allocWithZone_1, zone); + return SentryEnvelopeItemHeader._(_ret, _lib, retain: false, release: true); } - static NSXMLDTDNode predefinedEntityDeclarationForName_( - SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_1051( - _lib._class_NSXMLDTD1, - _lib._sel_predefinedEntityDeclarationForName_1, - name?._id ?? ffi.nullptr); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); + static SentryEnvelopeItemHeader alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_SentryEnvelopeItemHeader1, _lib._sel_alloc1); + return SentryEnvelopeItemHeader._(_ret, _lib, retain: false, release: true); } - @override - NSXMLDTD initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1033(_id, _lib._sel_initWithKind_1, kind); - return NSXMLDTD._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_selector_object_( + SentryCocoa _lib, + NSObject aTarget, + ffi.Pointer aSelector, + NSObject anArgument) { + _lib._objc_msgSend_14( + _lib._class_SentryEnvelopeItemHeader1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, + aTarget._id, + aSelector, + anArgument._id); } - static NSObject document(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); + static void cancelPreviousPerformRequestsWithTarget_( + SentryCocoa _lib, NSObject aTarget) { + _lib._objc_msgSend_15(_lib._class_SentryEnvelopeItemHeader1, + _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } - static NSObject documentWithRootElement_( - SentryCocoa _lib, NSXMLElement? element) { - final _ret = _lib._objc_msgSend_1035(_lib._class_NSXMLDTD1, - _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { + return _lib._objc_msgSend_12(_lib._class_SentryEnvelopeItemHeader1, + _lib._sel_accessInstanceVariablesDirectly1); } - static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, - _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool useStoredAccessor(SentryCocoa _lib) { + return _lib._objc_msgSend_12( + _lib._class_SentryEnvelopeItemHeader1, _lib._sel_useStoredAccessor1); } - static NSObject elementWithName_URI_( - SentryCocoa _lib, NSString? name, NSString? URI) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDTD1, - _lib._sel_elementWithName_URI_1, - name?._id ?? ffi.nullptr, - URI?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSSet keyPathsForValuesAffectingValueForKey_( + SentryCocoa _lib, NSString? key) { + final _ret = _lib._objc_msgSend_58( + _lib._class_SentryEnvelopeItemHeader1, + _lib._sel_keyPathsForValuesAffectingValueForKey_1, + key?._id ?? ffi.nullptr); + return NSSet._(_ret, _lib, retain: true, release: true); } - static NSObject elementWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? string) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDTD1, - _lib._sel_elementWithName_stringValue_1, - name?._id ?? ffi.nullptr, - string?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static bool automaticallyNotifiesObserversForKey_( + SentryCocoa _lib, NSString? key) { + return _lib._objc_msgSend_59( + _lib._class_SentryEnvelopeItemHeader1, + _lib._sel_automaticallyNotifiesObserversForKey_1, + key?._id ?? ffi.nullptr); } - static NSObject elementWithName_children_attributes_(SentryCocoa _lib, - NSString? name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1036( - _lib._class_NSXMLDTD1, - _lib._sel_elementWithName_children_attributes_1, - name?._id ?? ffi.nullptr, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static void setKeys_triggerChangeNotificationsForDependentKey_( + SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { + _lib._objc_msgSend_82( + _lib._class_SentryEnvelopeItemHeader1, + _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, + keys?._id ?? ffi.nullptr, + dependentKey?._id ?? ffi.nullptr); } - static NSObject attributeWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDTD1, - _lib._sel_attributeWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_79(_lib._class_SentryEnvelopeItemHeader1, + _lib._sel_classFallbacksForKeyedArchiver1); + return NSArray._(_ret, _lib, retain: true, release: true); } - static NSObject attributeWithName_URI_stringValue_( - SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { - final _ret = _lib._objc_msgSend_26( - _lib._class_NSXMLDTD1, - _lib._sel_attributeWithName_URI_stringValue_1, - name?._id ?? ffi.nullptr, - URI?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); + static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2(_lib._class_SentryEnvelopeItemHeader1, + _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } +} - static NSObject namespaceWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDTD1, - _lib._sel_namespaceWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); +class SentryEnvelopeHeader extends NSObject { + SentryEnvelopeHeader._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); + + /// Returns a [SentryEnvelopeHeader] that points to the same underlying object as [other]. + static SentryEnvelopeHeader castFrom(T other) { + return SentryEnvelopeHeader._(other._id, other._lib, + retain: true, release: true); } - static NSObject processingInstructionWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDTD1, - _lib._sel_processingInstructionWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns a [SentryEnvelopeHeader] that wraps the given raw object pointer. + static SentryEnvelopeHeader castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryEnvelopeHeader._(other, lib, retain: retain, release: release); } - static NSObject commentWithStringValue_( - SentryCocoa _lib, NSString? stringValue) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, - _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [SentryEnvelopeHeader]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryEnvelopeHeader1); } - static NSObject textWithStringValue_( - SentryCocoa _lib, NSString? stringValue) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, - _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + @override + SentryEnvelopeHeader init() { + final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); + return SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); + } + + static SentryEnvelopeHeader new1(SentryCocoa _lib) { + final _ret = + _lib._objc_msgSend_2(_lib._class_SentryEnvelopeHeader1, _lib._sel_new1); + return SentryEnvelopeHeader._(_ret, _lib, retain: false, release: true); + } + + /// Initializes an @c SentryEnvelopeHeader object with the specified eventId. + /// @note Sets the @c sdkInfo from @c SentryMeta. + /// @param eventId The identifier of the event. Can be nil if no event in the envelope or attachment + /// related to event. + SentryEnvelopeHeader initWithId_(SentryId? eventId) { + final _ret = _lib._objc_msgSend_1048( + _id, _lib._sel_initWithId_1, eventId?._id ?? ffi.nullptr); + return SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); + } + + /// Initializes a @c SentryEnvelopeHeader object with the specified @c eventId and @c traceContext. + /// @param eventId The identifier of the event. Can be @c nil if no event in the envelope or + /// attachment related to event. + /// @param traceContext Current trace state. + SentryEnvelopeHeader initWithId_traceContext_( + SentryId? eventId, SentryTraceContext? traceContext) { + final _ret = _lib._objc_msgSend_1049( + _id, + _lib._sel_initWithId_traceContext_1, + eventId?._id ?? ffi.nullptr, + traceContext?._id ?? ffi.nullptr); + return SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); + } + + /// Initializes a @c SentryEnvelopeHeader object with the specified @c eventId, @c skdInfo and + /// @c traceContext. It is recommended to use @c initWithId:traceContext: because it sets the + /// @c sdkInfo for you. + /// @param eventId The identifier of the event. Can be @c nil if no event in the envelope or + /// attachment related to event. + /// @param sdkInfo Describes the Sentry SDK. Can be @c nil for backwards compatibility. New + /// instances should always provide a version. + /// @param traceContext Current trace state. + SentryEnvelopeHeader initWithId_sdkInfo_traceContext_(SentryId? eventId, + SentrySdkInfo? sdkInfo, SentryTraceContext? traceContext) { + final _ret = _lib._objc_msgSend_1050( + _id, + _lib._sel_initWithId_sdkInfo_traceContext_1, + eventId?._id ?? ffi.nullptr, + sdkInfo?._id ?? ffi.nullptr, + traceContext?._id ?? ffi.nullptr); + return SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); } - static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTD1, - _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// The event identifier, if available. + /// An event id exist if the envelope contains an event of items within it are related. i.e + /// Attachments + SentryId? get eventId { + final _ret = _lib._objc_msgSend_1038(_id, _lib._sel_eventId1); + return _ret.address == 0 + ? null + : SentryId._(_ret, _lib, retain: true, release: true); } - static NSString localNameForName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTD1, - _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + SentrySdkInfo? get sdkInfo { + final _ret = _lib._objc_msgSend_1051(_id, _lib._sel_sdkInfo1); + return _ret.address == 0 + ? null + : SentrySdkInfo._(_ret, _lib, retain: true, release: true); } - static NSString prefixForName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTD1, - _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + SentryTraceContext? get traceContext { + final _ret = _lib._objc_msgSend_1052(_id, _lib._sel_traceContext1); + return _ret.address == 0 + ? null + : SentryTraceContext._(_ret, _lib, retain: true, release: true); } - static NSXMLNode predefinedNamespaceForPrefix_( - SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_1050(_lib._class_NSXMLDTD1, - _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + /// The timestamp when the event was sent from the SDK as string in RFC 3339 format. Used + /// for clock drift correction of the event timestamp. The time zone must be UTC. + /// + /// The timestamp should be generated as close as possible to the transmision of the event, + /// so that the delay between sending the envelope and receiving it on the server-side is + /// minimized. + NSDate? get sentAt { + final _ret = _lib._objc_msgSend_162(_id, _lib._sel_sentAt1); + return _ret.address == 0 + ? null + : NSDate._(_ret, _lib, retain: true, release: true); } - static NSXMLDTD new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_new1); - return NSXMLDTD._(_ret, _lib, retain: false, release: true); + /// The timestamp when the event was sent from the SDK as string in RFC 3339 format. Used + /// for clock drift correction of the event timestamp. The time zone must be UTC. + /// + /// The timestamp should be generated as close as possible to the transmision of the event, + /// so that the delay between sending the envelope and receiving it on the server-side is + /// minimized. + set sentAt(NSDate? value) { + return _lib._objc_msgSend_525( + _id, _lib._sel_setSentAt_1, value?._id ?? ffi.nullptr); } - static NSXMLDTD allocWithZone_(SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { + static SentryEnvelopeHeader allocWithZone_( + SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLDTD1, _lib._sel_allocWithZone_1, zone); - return NSXMLDTD._(_ret, _lib, retain: false, release: true); + _lib._class_SentryEnvelopeHeader1, _lib._sel_allocWithZone_1, zone); + return SentryEnvelopeHeader._(_ret, _lib, retain: false, release: true); } - static NSXMLDTD alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_NSXMLDTD1, _lib._sel_alloc1); - return NSXMLDTD._(_ret, _lib, retain: false, release: true); + static SentryEnvelopeHeader alloc(SentryCocoa _lib) { + final _ret = _lib._objc_msgSend_2( + _lib._class_SentryEnvelopeHeader1, _lib._sel_alloc1); + return SentryEnvelopeHeader._(_ret, _lib, retain: false, release: true); } static void cancelPreviousPerformRequestsWithTarget_selector_object_( @@ -71122,7 +71793,7 @@ class NSXMLDTD extends NSXMLNode { ffi.Pointer aSelector, NSObject anArgument) { _lib._objc_msgSend_14( - _lib._class_NSXMLDTD1, + _lib._class_SentryEnvelopeHeader1, _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, aTarget._id, aSelector, @@ -71131,24 +71802,24 @@ class NSXMLDTD extends NSXMLNode { static void cancelPreviousPerformRequestsWithTarget_( SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLDTD1, + _lib._objc_msgSend_15(_lib._class_SentryEnvelopeHeader1, _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); } static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDTD1, _lib._sel_accessInstanceVariablesDirectly1); + return _lib._objc_msgSend_12(_lib._class_SentryEnvelopeHeader1, + _lib._sel_accessInstanceVariablesDirectly1); } static bool useStoredAccessor(SentryCocoa _lib) { return _lib._objc_msgSend_12( - _lib._class_NSXMLDTD1, _lib._sel_useStoredAccessor1); + _lib._class_SentryEnvelopeHeader1, _lib._sel_useStoredAccessor1); } static NSSet keyPathsForValuesAffectingValueForKey_( SentryCocoa _lib, NSString? key) { final _ret = _lib._objc_msgSend_58( - _lib._class_NSXMLDTD1, + _lib._class_SentryEnvelopeHeader1, _lib._sel_keyPathsForValuesAffectingValueForKey_1, key?._id ?? ffi.nullptr); return NSSet._(_ret, _lib, retain: true, release: true); @@ -71157,7 +71828,7 @@ class NSXMLDTD extends NSXMLNode { static bool automaticallyNotifiesObserversForKey_( SentryCocoa _lib, NSString? key) { return _lib._objc_msgSend_59( - _lib._class_NSXMLDTD1, + _lib._class_SentryEnvelopeHeader1, _lib._sel_automaticallyNotifiesObserversForKey_1, key?._id ?? ffi.nullptr); } @@ -71165,357 +71836,243 @@ class NSXMLDTD extends NSXMLNode { static void setKeys_triggerChangeNotificationsForDependentKey_( SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { _lib._objc_msgSend_82( - _lib._class_NSXMLDTD1, + _lib._class_SentryEnvelopeHeader1, _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, keys?._id ?? ffi.nullptr, dependentKey?._id ?? ffi.nullptr); } static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_NSXMLDTD1, _lib._sel_classFallbacksForKeyedArchiver1); + final _ret = _lib._objc_msgSend_79(_lib._class_SentryEnvelopeHeader1, + _lib._sel_classFallbacksForKeyedArchiver1); return NSArray._(_ret, _lib, retain: true, release: true); } static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLDTD1, _lib._sel_classForKeyedUnarchiver1); + _lib._class_SentryEnvelopeHeader1, _lib._sel_classForKeyedUnarchiver1); return NSObject._(_ret, _lib, retain: true, release: true); } } -class NSXMLDTDNode extends NSXMLNode { - NSXMLDTDNode._(ffi.Pointer id, SentryCocoa lib, +class SentryTraceContext extends _ObjCWrapper { + SentryTraceContext._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); - /// Returns a [NSXMLDTDNode] that points to the same underlying object as [other]. - static NSXMLDTDNode castFrom(T other) { - return NSXMLDTDNode._(other._id, other._lib, retain: true, release: true); + /// Returns a [SentryTraceContext] that points to the same underlying object as [other]. + static SentryTraceContext castFrom(T other) { + return SentryTraceContext._(other._id, other._lib, + retain: true, release: true); } - /// Returns a [NSXMLDTDNode] that wraps the given raw object pointer. - static NSXMLDTDNode castFromPointer( + /// Returns a [SentryTraceContext] that wraps the given raw object pointer. + static SentryTraceContext castFromPointer( SentryCocoa lib, ffi.Pointer other, {bool retain = false, bool release = false}) { - return NSXMLDTDNode._(other, lib, retain: retain, release: release); + return SentryTraceContext._(other, lib, retain: retain, release: release); } - /// Returns whether [obj] is an instance of [NSXMLDTDNode]. + /// Returns whether [obj] is an instance of [SentryTraceContext]. static bool isInstance(_ObjCWrapper obj) { - return obj._lib._objc_msgSend_0( - obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_NSXMLDTDNode1); - } - - NSXMLDTDNode initWithXMLString_(NSString? string) { - final _ret = _lib._objc_msgSend_30( - _id, _lib._sel_initWithXMLString_1, string?._id ?? ffi.nullptr); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); - } - - @override - NSXMLDTDNode initWithKind_options_(int kind, int options) { - final _ret = _lib._objc_msgSend_1034( - _id, _lib._sel_initWithKind_options_1, kind, options); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); - } - - @override - NSXMLDTDNode init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); - } - - int get DTDKind { - return _lib._objc_msgSend_1048(_id, _lib._sel_DTDKind1); - } - - set DTDKind(int value) { - return _lib._objc_msgSend_1049(_id, _lib._sel_setDTDKind_1, value); - } - - bool get external1 { - return _lib._objc_msgSend_12(_id, _lib._sel_isExternal1); - } - - NSString? get publicID { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_publicID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set publicID(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setPublicID_1, value?._id ?? ffi.nullptr); - } - - NSString? get systemID { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_systemID1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set systemID(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setSystemID_1, value?._id ?? ffi.nullptr); - } - - NSString? get notationName { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_notationName1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - set notationName(NSString? value) { - return _lib._objc_msgSend_509( - _id, _lib._sel_setNotationName_1, value?._id ?? ffi.nullptr); - } - - @override - NSXMLDTDNode initWithKind_(int kind) { - final _ret = _lib._objc_msgSend_1033(_id, _lib._sel_initWithKind_1, kind); - return NSXMLDTDNode._(_ret, _lib, retain: true, release: true); - } - - static NSObject document(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_document1); - return NSObject._(_ret, _lib, retain: true, release: true); - } - - static NSObject documentWithRootElement_( - SentryCocoa _lib, NSXMLElement? element) { - final _ret = _lib._objc_msgSend_1035(_lib._class_NSXMLDTDNode1, - _lib._sel_documentWithRootElement_1, element?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryTraceContext1); } +} - static NSObject elementWithName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, - _lib._sel_elementWithName_1, name?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } +class SentrySdkInfo extends _ObjCWrapper { + SentrySdkInfo._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); - static NSObject elementWithName_URI_( - SentryCocoa _lib, NSString? name, NSString? URI) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDTDNode1, - _lib._sel_elementWithName_URI_1, - name?._id ?? ffi.nullptr, - URI?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns a [SentrySdkInfo] that points to the same underlying object as [other]. + static SentrySdkInfo castFrom(T other) { + return SentrySdkInfo._(other._id, other._lib, retain: true, release: true); } - static NSObject elementWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? string) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDTDNode1, - _lib._sel_elementWithName_stringValue_1, - name?._id ?? ffi.nullptr, - string?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns a [SentrySdkInfo] that wraps the given raw object pointer. + static SentrySdkInfo castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentrySdkInfo._(other, lib, retain: retain, release: release); } - static NSObject elementWithName_children_attributes_(SentryCocoa _lib, - NSString? name, NSArray? children, NSArray? attributes) { - final _ret = _lib._objc_msgSend_1036( - _lib._class_NSXMLDTDNode1, - _lib._sel_elementWithName_children_attributes_1, - name?._id ?? ffi.nullptr, - children?._id ?? ffi.nullptr, - attributes?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [SentrySdkInfo]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentrySdkInfo1); } +} - static NSObject attributeWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDTDNode1, - _lib._sel_attributeWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_SentryAppStartMeasurement_fnPtrTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return block.ref.target + .cast< + ffi.NativeFunction arg0)>>() + .asFunction arg0)>()(arg0); +} - static NSObject attributeWithName_URI_stringValue_( - SentryCocoa _lib, NSString? name, NSString? URI, NSString? stringValue) { - final _ret = _lib._objc_msgSend_26( - _lib._class_NSXMLDTDNode1, - _lib._sel_attributeWithName_URI_stringValue_1, - name?._id ?? ffi.nullptr, - URI?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } +final _ObjCBlock_ffiVoid_SentryAppStartMeasurement_closureRegistry = + {}; +int _ObjCBlock_ffiVoid_SentryAppStartMeasurement_closureRegistryIndex = 0; +ffi.Pointer + _ObjCBlock_ffiVoid_SentryAppStartMeasurement_registerClosure(Function fn) { + final id = + ++_ObjCBlock_ffiVoid_SentryAppStartMeasurement_closureRegistryIndex; + _ObjCBlock_ffiVoid_SentryAppStartMeasurement_closureRegistry[id] = fn; + return ffi.Pointer.fromAddress(id); +} - static NSObject namespaceWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDTDNode1, - _lib._sel_namespaceWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } +void _ObjCBlock_ffiVoid_SentryAppStartMeasurement_closureTrampoline( + ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0) { + return (_ObjCBlock_ffiVoid_SentryAppStartMeasurement_closureRegistry[block + .ref.target.address] as void Function(ffi.Pointer))(arg0); +} - static NSObject processingInstructionWithName_stringValue_( - SentryCocoa _lib, NSString? name, NSString? stringValue) { - final _ret = _lib._objc_msgSend_165( - _lib._class_NSXMLDTDNode1, - _lib._sel_processingInstructionWithName_stringValue_1, - name?._id ?? ffi.nullptr, - stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } +class ObjCBlock_ffiVoid_SentryAppStartMeasurement extends _ObjCBlockBase { + ObjCBlock_ffiVoid_SentryAppStartMeasurement._( + ffi.Pointer<_ObjCBlock> id, SentryCocoa lib) + : super._(id, lib, retain: false, release: true); - static NSObject commentWithStringValue_( - SentryCocoa _lib, NSString? stringValue) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, - _lib._sel_commentWithStringValue_1, stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } + /// Creates a block from a C function pointer. + ObjCBlock_ffiVoid_SentryAppStartMeasurement.fromFunctionPointer( + SentryCocoa lib, + ffi.Pointer< + ffi + .NativeFunction arg0)>> + ptr) + : this._( + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_SentryAppStartMeasurement_fnPtrTrampoline) + .cast(), + ptr.cast()), + lib); + static ffi.Pointer? _cFuncTrampoline; - static NSObject textWithStringValue_( - SentryCocoa _lib, NSString? stringValue) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, - _lib._sel_textWithStringValue_1, stringValue?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Creates a block from a Dart function. + ObjCBlock_ffiVoid_SentryAppStartMeasurement.fromFunction( + SentryCocoa lib, void Function(ffi.Pointer arg0) fn) + : this._( + lib._newBlock1( + _dartFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>( + _ObjCBlock_ffiVoid_SentryAppStartMeasurement_closureTrampoline) + .cast(), + _ObjCBlock_ffiVoid_SentryAppStartMeasurement_registerClosure( + fn)), + lib); + static ffi.Pointer? _dartFuncTrampoline; + void call(ffi.Pointer arg0) { + return _id.ref.invoke + .cast< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>>() + .asFunction< + void Function(ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0)>()(_id, arg0); } +} - static NSObject DTDNodeWithXMLString_(SentryCocoa _lib, NSString? string) { - final _ret = _lib._objc_msgSend_30(_lib._class_NSXMLDTDNode1, - _lib._sel_DTDNodeWithXMLString_1, string?._id ?? ffi.nullptr); - return NSObject._(_ret, _lib, retain: true, release: true); - } +class SentryAppStartMeasurement extends _ObjCWrapper { + SentryAppStartMeasurement._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); - static NSString localNameForName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTDNode1, - _lib._sel_localNameForName_1, name?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + /// Returns a [SentryAppStartMeasurement] that points to the same underlying object as [other]. + static SentryAppStartMeasurement castFrom(T other) { + return SentryAppStartMeasurement._(other._id, other._lib, + retain: true, release: true); } - static NSString prefixForName_(SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_64(_lib._class_NSXMLDTDNode1, - _lib._sel_prefixForName_1, name?._id ?? ffi.nullptr); - return NSString._(_ret, _lib, retain: true, release: true); + /// Returns a [SentryAppStartMeasurement] that wraps the given raw object pointer. + static SentryAppStartMeasurement castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryAppStartMeasurement._(other, lib, + retain: retain, release: release); } - static NSXMLNode predefinedNamespaceForPrefix_( - SentryCocoa _lib, NSString? name) { - final _ret = _lib._objc_msgSend_1050(_lib._class_NSXMLDTDNode1, - _lib._sel_predefinedNamespaceForPrefix_1, name?._id ?? ffi.nullptr); - return NSXMLNode._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [SentryAppStartMeasurement]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryAppStartMeasurement1); } +} - static NSXMLDTDNode new1(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_new1); - return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); - } +class SentryOptions extends _ObjCWrapper { + SentryOptions._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); - static NSXMLDTDNode allocWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_NSXMLDTDNode1, _lib._sel_allocWithZone_1, zone); - return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); + /// Returns a [SentryOptions] that points to the same underlying object as [other]. + static SentryOptions castFrom(T other) { + return SentryOptions._(other._id, other._lib, retain: true, release: true); } - static NSXMLDTDNode alloc(SentryCocoa _lib) { - final _ret = - _lib._objc_msgSend_2(_lib._class_NSXMLDTDNode1, _lib._sel_alloc1); - return NSXMLDTDNode._(_ret, _lib, retain: false, release: true); + /// Returns a [SentryOptions] that wraps the given raw object pointer. + static SentryOptions castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryOptions._(other, lib, retain: retain, release: release); } - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SentryCocoa _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject anArgument) { - _lib._objc_msgSend_14( - _lib._class_NSXMLDTDNode1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument._id); + /// Returns whether [obj] is an instance of [SentryOptions]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryOptions1); } +} - static void cancelPreviousPerformRequestsWithTarget_( - SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_NSXMLDTDNode1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } +class SentryUser extends _ObjCWrapper { + SentryUser._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); - static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDTDNode1, _lib._sel_accessInstanceVariablesDirectly1); + /// Returns a [SentryUser] that points to the same underlying object as [other]. + static SentryUser castFrom(T other) { + return SentryUser._(other._id, other._lib, retain: true, release: true); } - static bool useStoredAccessor(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_NSXMLDTDNode1, _lib._sel_useStoredAccessor1); + /// Returns a [SentryUser] that wraps the given raw object pointer. + static SentryUser castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryUser._(other, lib, retain: retain, release: release); } - static NSSet keyPathsForValuesAffectingValueForKey_( - SentryCocoa _lib, NSString? key) { - final _ret = _lib._objc_msgSend_58( - _lib._class_NSXMLDTDNode1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key?._id ?? ffi.nullptr); - return NSSet._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [SentryUser]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0( + obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryUser1); } +} - static bool automaticallyNotifiesObserversForKey_( - SentryCocoa _lib, NSString? key) { - return _lib._objc_msgSend_59( - _lib._class_NSXMLDTDNode1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key?._id ?? ffi.nullptr); - } +class SentryBreadcrumb extends _ObjCWrapper { + SentryBreadcrumb._(ffi.Pointer id, SentryCocoa lib, + {bool retain = false, bool release = false}) + : super._(id, lib, retain: retain, release: release); - static void setKeys_triggerChangeNotificationsForDependentKey_( - SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { - _lib._objc_msgSend_82( - _lib._class_NSXMLDTDNode1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys?._id ?? ffi.nullptr, - dependentKey?._id ?? ffi.nullptr); + /// Returns a [SentryBreadcrumb] that points to the same underlying object as [other]. + static SentryBreadcrumb castFrom(T other) { + return SentryBreadcrumb._(other._id, other._lib, + retain: true, release: true); } - static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79( - _lib._class_NSXMLDTDNode1, _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); + /// Returns a [SentryBreadcrumb] that wraps the given raw object pointer. + static SentryBreadcrumb castFromPointer( + SentryCocoa lib, ffi.Pointer other, + {bool retain = false, bool release = false}) { + return SentryBreadcrumb._(other, lib, retain: retain, release: release); } - static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_NSXMLDTDNode1, _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); + /// Returns whether [obj] is an instance of [SentryBreadcrumb]. + static bool isInstance(_ObjCWrapper obj) { + return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, + obj._lib._class_SentryBreadcrumb1); } } - -abstract class NSXMLDTDNodeKind { - static const int NSXMLEntityGeneralKind = 1; - static const int NSXMLEntityParsedKind = 2; - static const int NSXMLEntityUnparsedKind = 3; - static const int NSXMLEntityParameterKind = 4; - static const int NSXMLEntityPredefined = 5; - static const int NSXMLAttributeCDATAKind = 6; - static const int NSXMLAttributeIDKind = 7; - static const int NSXMLAttributeIDRefKind = 8; - static const int NSXMLAttributeIDRefsKind = 9; - static const int NSXMLAttributeEntityKind = 10; - static const int NSXMLAttributeEntitiesKind = 11; - static const int NSXMLAttributeNMTokenKind = 12; - static const int NSXMLAttributeNMTokensKind = 13; - static const int NSXMLAttributeEnumerationKind = 14; - static const int NSXMLAttributeNotationKind = 15; - static const int NSXMLElementDeclarationUndefinedKind = 16; - static const int NSXMLElementDeclarationEmptyKind = 17; - static const int NSXMLElementDeclarationAnyKind = 18; - static const int NSXMLElementDeclarationMixedKind = 19; - static const int NSXMLElementDeclarationElementKind = 20; -} diff --git a/flutter/scripts/generate-cocoa-bindings.sh b/flutter/scripts/generate-cocoa-bindings.sh index d40dd41fd5..3381089df5 100755 --- a/flutter/scripts/generate-cocoa-bindings.sh +++ b/flutter/scripts/generate-cocoa-bindings.sh @@ -34,5 +34,5 @@ unzip -q $temp/Sentry.xcframework.zip "$subdir/*" -d $temp mv "$temp/$subdir" $temp/Sentry.framework dart run ffigen --config ffi-cocoa.yaml -sed -i.bak 's|final class|class|g' lib/src/sentry_cocoa.dart -rm lib/src/sentry_cocoa.dart.bak +sed -i.bak 's|final class|class|g' lib/src/native/cocoa/binding.dart +rm lib/src/native/cocoa/binding.dart.bak From da14c18c75ec20e797ab31b02233df67dba0c57b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Uek=C3=B6tter?= Date: Tue, 19 Sep 2023 18:52:33 +0200 Subject: [PATCH 023/166] Update uuid (#1647) Co-authored-by: Ivan Dlugos <6349682+vaind@users.noreply.github.com> --- CHANGELOG.md | 6 ++++++ dart/pubspec.yaml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22a4a38e04..31b931c990 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Dependencies + +- Enable compatibility with uuid v4 ([#1647](https://github.com/getsentry/sentry-dart/pull/1647)) + ## 7.10.1 ### Enhancements diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index 5487446118..c15a87b971 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -15,7 +15,7 @@ dependencies: http: '>=0.13.0 <2.0.0' meta: ^1.3.0 stack_trace: ^1.10.0 - uuid: ^3.0.0 + uuid: '>=3.0.0 <5.0.0' dev_dependencies: mockito: ^5.1.0 From cd16818c9a52b00812b5354203d617d4294a83f5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 17:13:02 +0000 Subject: [PATCH 024/166] chore(deps): update Cocoa SDK to v8.12.0 (#1650) Co-authored-by: GitHub --- CHANGELOG.md | 3 + flutter/ios/sentry_flutter.podspec | 2 +- flutter/lib/src/native/cocoa/binding.dart | 83 +++++++++++++---------- 3 files changed, 53 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31b931c990..9c3e79e483 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ ### Dependencies - Enable compatibility with uuid v4 ([#1647](https://github.com/getsentry/sentry-dart/pull/1647)) +- Bump Cocoa SDK from v8.11.0 to v8.12.0 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8120) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.12.0) ## 7.10.1 diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 4ba99f91c8..498acb7b7b 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.11.0' + s.dependency 'Sentry/HybridSDK', '8.12.0' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' diff --git a/flutter/lib/src/native/cocoa/binding.dart b/flutter/lib/src/native/cocoa/binding.dart index 3ca61810e9..e4ca5c9d03 100644 --- a/flutter/lib/src/native/cocoa/binding.dart +++ b/flutter/lib/src/native/cocoa/binding.dart @@ -3621,7 +3621,7 @@ class SentryCocoa { ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer predicateFormat, - ffi.Pointer argList, + ffi.Pointer<__va_list_tag> argList, ) { return __objc_msgSend_135( obj, @@ -3637,13 +3637,13 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); late final __objc_msgSend_135 = __objc_msgSend_135Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer<__va_list_tag>)>(); late final _sel_predicateFromMetadataQueryString_1 = _registerName1("predicateFromMetadataQueryString:"); @@ -9531,7 +9531,7 @@ class SentryCocoa { ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer format, - ffi.Pointer argList, + ffi.Pointer<__va_list_tag> argList, ) { return __objc_msgSend_348( obj, @@ -9543,11 +9543,14 @@ class SentryCocoa { late final __objc_msgSend_348Ptr = _lookup< ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); + instancetype Function( + ffi.Pointer, + ffi.Pointer, + ffi.Pointer, + ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); late final __objc_msgSend_348 = __objc_msgSend_348Ptr.asFunction< instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.Pointer)>(); + ffi.Pointer, ffi.Pointer<__va_list_tag>)>(); late final _sel_initWithFormat_locale_1 = _registerName1("initWithFormat:locale:"); @@ -9558,7 +9561,7 @@ class SentryCocoa { ffi.Pointer sel, ffi.Pointer format, ffi.Pointer locale, - ffi.Pointer argList, + ffi.Pointer<__va_list_tag> argList, ) { return __objc_msgSend_349( obj, @@ -9576,14 +9579,14 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); late final __objc_msgSend_349 = __objc_msgSend_349Ptr.asFunction< instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer<__va_list_tag>)>(); late final _sel_initWithValidatedFormat_validFormatSpecifiers_error_1 = _registerName1("initWithValidatedFormat:validFormatSpecifiers:error:"); @@ -9666,7 +9669,7 @@ class SentryCocoa { ffi.Pointer sel, ffi.Pointer format, ffi.Pointer validFormatSpecifiers, - ffi.Pointer argList, + ffi.Pointer<__va_list_tag> argList, ffi.Pointer> error, ) { return __objc_msgSend_352( @@ -9686,7 +9689,7 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, + ffi.Pointer<__va_list_tag>, ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_352 = __objc_msgSend_352Ptr.asFunction< instancetype Function( @@ -9694,7 +9697,7 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, + ffi.Pointer<__va_list_tag>, ffi.Pointer>)>(); late final _sel_initWithValidatedFormat_validFormatSpecifiers_locale_arguments_error_1 = @@ -9706,7 +9709,7 @@ class SentryCocoa { ffi.Pointer format, ffi.Pointer validFormatSpecifiers, ffi.Pointer locale, - ffi.Pointer argList, + ffi.Pointer<__va_list_tag> argList, ffi.Pointer> error, ) { return __objc_msgSend_353( @@ -9728,7 +9731,7 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, + ffi.Pointer<__va_list_tag>, ffi.Pointer>)>>('objc_msgSend'); late final __objc_msgSend_353 = __objc_msgSend_353Ptr.asFunction< instancetype Function( @@ -9737,7 +9740,7 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, + ffi.Pointer<__va_list_tag>, ffi.Pointer>)>(); late final _sel_initWithData_encoding_1 = @@ -19011,7 +19014,7 @@ class SentryCocoa { ffi.Pointer format, int options, ffi.Pointer locale, - ffi.Pointer arguments, + ffi.Pointer<__va_list_tag> arguments, ) { return __objc_msgSend_673( obj, @@ -19031,7 +19034,7 @@ class SentryCocoa { ffi.Pointer, ffi.Int32, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); late final __objc_msgSend_673 = __objc_msgSend_673Ptr.asFunction< instancetype Function( ffi.Pointer, @@ -19039,7 +19042,7 @@ class SentryCocoa { ffi.Pointer, int, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer<__va_list_tag>)>(); late final _sel_localizedAttributedStringWithFormat_1 = _registerName1("localizedAttributedStringWithFormat:"); @@ -21713,7 +21716,7 @@ class SentryCocoa { ffi.Pointer sel, ffi.Pointer name, ffi.Pointer format, - ffi.Pointer argList, + ffi.Pointer<__va_list_tag> argList, ) { return __objc_msgSend_760( obj, @@ -21731,14 +21734,14 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); + ffi.Pointer<__va_list_tag>)>>('objc_msgSend'); late final __objc_msgSend_760 = __objc_msgSend_760Ptr.asFunction< void Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer)>(); + ffi.Pointer<__va_list_tag>)>(); late final _class_NSFileHandle1 = _getClass1("NSFileHandle"); late final _sel_availableData1 = _registerName1("availableData"); @@ -32816,7 +32819,7 @@ class NSString extends NSObject { } NSString initWithFormat_arguments_( - NSString? format, ffi.Pointer argList) { + NSString? format, ffi.Pointer<__va_list_tag> argList) { final _ret = _lib._objc_msgSend_348( _id, _lib._sel_initWithFormat_arguments_1, @@ -32832,7 +32835,7 @@ class NSString extends NSObject { } NSString initWithFormat_locale_arguments_( - NSString? format, NSObject locale, ffi.Pointer argList) { + NSString? format, NSObject locale, ffi.Pointer<__va_list_tag> argList) { final _ret = _lib._objc_msgSend_349( _id, _lib._sel_initWithFormat_locale_arguments_1, @@ -32873,7 +32876,7 @@ class NSString extends NSObject { NSString initWithValidatedFormat_validFormatSpecifiers_arguments_error_( NSString? format, NSString? validFormatSpecifiers, - ffi.Pointer argList, + ffi.Pointer<__va_list_tag> argList, ffi.Pointer> error) { final _ret = _lib._objc_msgSend_352( _id, @@ -32890,7 +32893,7 @@ class NSString extends NSObject { NSString? format, NSString? validFormatSpecifiers, NSObject locale, - ffi.Pointer argList, + ffi.Pointer<__va_list_tag> argList, ffi.Pointer> error) { final _ret = _lib._objc_msgSend_353( _id, @@ -37990,7 +37993,7 @@ class NSPredicate extends NSObject { } static NSPredicate predicateWithFormat_arguments_(SentryCocoa _lib, - NSString? predicateFormat, ffi.Pointer argList) { + NSString? predicateFormat, ffi.Pointer<__va_list_tag> argList) { final _ret = _lib._objc_msgSend_135( _lib._class_NSPredicate1, _lib._sel_predicateWithFormat_arguments_1, @@ -38146,6 +38149,18 @@ class NSPredicate extends NSObject { } } +class __va_list_tag extends ffi.Struct { + @ffi.UnsignedInt() + external int gp_offset; + + @ffi.UnsignedInt() + external int fp_offset; + + external ffi.Pointer overflow_arg_area; + + external ffi.Pointer reg_save_area; +} + bool _ObjCBlock_bool_ObjCObject_NSDictionary_fnPtrTrampoline( ffi.Pointer<_ObjCBlock> block, ffi.Pointer arg0, @@ -51417,7 +51432,7 @@ class NSMutableString extends NSString { @override NSMutableString initWithFormat_arguments_( - NSString? format, ffi.Pointer argList) { + NSString? format, ffi.Pointer<__va_list_tag> argList) { final _ret = _lib._objc_msgSend_348( _id, _lib._sel_initWithFormat_arguments_1, @@ -51435,7 +51450,7 @@ class NSMutableString extends NSString { @override NSMutableString initWithFormat_locale_arguments_( - NSString? format, NSObject locale, ffi.Pointer argList) { + NSString? format, NSObject locale, ffi.Pointer<__va_list_tag> argList) { final _ret = _lib._objc_msgSend_349( _id, _lib._sel_initWithFormat_locale_arguments_1, @@ -51480,7 +51495,7 @@ class NSMutableString extends NSString { initWithValidatedFormat_validFormatSpecifiers_arguments_error_( NSString? format, NSString? validFormatSpecifiers, - ffi.Pointer argList, + ffi.Pointer<__va_list_tag> argList, ffi.Pointer> error) { final _ret = _lib._objc_msgSend_352( _id, @@ -51498,7 +51513,7 @@ class NSMutableString extends NSString { NSString? format, NSString? validFormatSpecifiers, NSObject locale, - ffi.Pointer argList, + ffi.Pointer<__va_list_tag> argList, ffi.Pointer> error) { final _ret = _lib._objc_msgSend_353( _id, @@ -52808,7 +52823,7 @@ class NSAttributedString extends NSObject { NSAttributedString? format, int options, NSLocale? locale, - ffi.Pointer arguments) { + ffi.Pointer<__va_list_tag> arguments) { final _ret = _lib._objc_msgSend_673( _id, _lib._sel_initWithFormat_options_locale_arguments_1, @@ -53539,7 +53554,7 @@ class NSMutableAttributedString extends NSAttributedString { NSAttributedString? format, int options, NSLocale? locale, - ffi.Pointer arguments) { + ffi.Pointer<__va_list_tag> arguments) { final _ret = _lib._objc_msgSend_673( _id, _lib._sel_initWithFormat_options_locale_arguments_1, @@ -57041,7 +57056,7 @@ class NSException extends NSObject { } static void raise_format_arguments_(SentryCocoa _lib, NSString name, - NSString? format, ffi.Pointer argList) { + NSString? format, ffi.Pointer<__va_list_tag> argList) { _lib._objc_msgSend_760( _lib._class_NSException1, _lib._sel_raise_format_arguments_1, From 21f1bf76b7669a57e83a66238fce9dfe1f79c57f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 25 Sep 2023 10:44:55 +0000 Subject: [PATCH 025/166] Breadcrumbs for file I/O operations (#1649) --- CHANGELOG.md | 4 ++ file/lib/src/sentry_file.dart | 32 ++++++++- file/test/mock_sentry_client.dart | 5 +- file/test/sentry_file_test.dart | 109 ++++++++++++++++++++++++++++++ 4 files changed, 146 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c3e79e483..40d3b04f3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Features + +- Breadcrumbs for file I/O operations ([#1649](https://github.com/getsentry/sentry-dart/pull/1649)) + ### Dependencies - Enable compatibility with uuid v4 ([#1647](https://github.com/getsentry/sentry-dart/pull/1647)) diff --git a/file/lib/src/sentry_file.dart b/file/lib/src/sentry_file.dart index 4b7659dc0c..de0004c938 100644 --- a/file/lib/src/sentry_file.dart +++ b/file/lib/src/sentry_file.dart @@ -215,7 +215,8 @@ import 'version.dart'; typedef Callback = FutureOr Function(); /// The Sentry wrapper for the File IO implementation that creates a span -/// out of the active transaction in the scope. +/// out of the active transaction in the scope and a breadcrumb, which gets +/// added to the hub. /// The span is started before the operation is executed and finished after. /// The File tracing isn't available for Web. /// @@ -228,7 +229,7 @@ typedef Callback = FutureOr Function(); /// final sentryFile = SentryFile(file); /// // span starts /// await sentryFile.writeAsString('Hello World'); -/// // span finishes +/// // span finishes, adds breadcrumb /// ``` /// /// All the copy, create, delete, open, rename, read, and write operations are @@ -425,8 +426,13 @@ class SentryFile implements File { span?.origin = SentryTraceOrigins.autoFile; span?.setData('file.async', true); + + final Map breadcrumbData = {}; + breadcrumbData['file.async'] = true; + if (_hub.options.sendDefaultPii) { span?.setData('file.path', absolute.path); + breadcrumbData['file.path'] = absolute.path; } T data; try { @@ -453,6 +459,7 @@ class SentryFile implements File { if (length != null) { span?.setData('file.size', length); + breadcrumbData['file.size'] = length; } span?.status = SpanStatus.ok(); @@ -462,6 +469,14 @@ class SentryFile implements File { rethrow; } finally { await span?.finish(); + + await _hub.addBreadcrumb( + Breadcrumb( + message: desc, + data: breadcrumbData, + category: operation, + ), + ); } return data; } @@ -475,8 +490,12 @@ class SentryFile implements File { span?.origin = SentryTraceOrigins.autoFile; span?.setData('file.async', false); + final Map breadcrumbData = {}; + breadcrumbData['file.async'] = false; + if (_hub.options.sendDefaultPii) { span?.setData('file.path', absolute.path); + breadcrumbData['file.path'] = absolute.path; } T data; @@ -504,6 +523,7 @@ class SentryFile implements File { if (length != null) { span?.setData('file.size', length); + breadcrumbData['file.size'] = length; } span?.status = SpanStatus.ok(); @@ -513,6 +533,14 @@ class SentryFile implements File { rethrow; } finally { span?.finish(); + + _hub.addBreadcrumb( + Breadcrumb( + message: desc, + data: breadcrumbData, + category: operation, + ), + ); } return data; } diff --git a/file/test/mock_sentry_client.dart b/file/test/mock_sentry_client.dart index c68fde9b47..4a4a28142d 100644 --- a/file/test/mock_sentry_client.dart +++ b/file/test/mock_sentry_client.dart @@ -14,7 +14,7 @@ class MockSentryClient with NoSuchMethodProvider implements SentryClient { SentryTraceContextHeader? traceContext, }) async { captureTransactionCalls - .add(CaptureTransactionCall(transaction, traceContext)); + .add(CaptureTransactionCall(transaction, traceContext, scope)); return transaction.eventId; } } @@ -22,6 +22,7 @@ class MockSentryClient with NoSuchMethodProvider implements SentryClient { class CaptureTransactionCall { final SentryTransaction transaction; final SentryTraceContextHeader? traceContext; + final Scope? scope; - CaptureTransactionCall(this.transaction, this.traceContext); + CaptureTransactionCall(this.transaction, this.traceContext, this.scope); } diff --git a/file/test/sentry_file_test.dart b/file/test/sentry_file_test.dart index a3fc47f670..3f7135de54 100644 --- a/file/test/sentry_file_test.dart +++ b/file/test/sentry_file_test.dart @@ -36,6 +36,20 @@ void main() { expect(span.origin, SentryTraceOrigins.autoFile); } + void _asserBreadcrumb(bool async) { + final call = fixture.client.captureTransactionCalls.first; + final breadcrumb = call.scope?.breadcrumbs.first; + + expect(breadcrumb?.category, 'file.copy'); + expect(breadcrumb?.data?['file.size'], 7); + expect(breadcrumb?.data?['file.async'], async); + expect(breadcrumb?.message, 'testfile.txt'); + expect( + (breadcrumb?.data?['file.path'] as String) + .endsWith('test_resources/testfile.txt'), + true); + } + test('async', () async { final file = File('test_resources/testfile.txt'); @@ -56,6 +70,7 @@ void main() { expect(sut.uri.toFilePath(), isNot(newFile.uri.toFilePath())); _assertSpan(true); + _asserBreadcrumb(true); await newFile.delete(); }); @@ -80,6 +95,7 @@ void main() { expect(sut.uri.toFilePath(), isNot(newFile.uri.toFilePath())); _assertSpan(false); + _asserBreadcrumb(false); newFile.deleteSync(); }); @@ -107,6 +123,20 @@ void main() { expect(span.origin, SentryTraceOrigins.autoFile); } + void _assertBreadcrumb(bool async, {int? size = 0}) { + final call = fixture.client.captureTransactionCalls.first; + final breadcrumb = call.scope?.breadcrumbs.first; + + expect(breadcrumb?.category, 'file.write'); + expect(breadcrumb?.data?['file.size'], size); + expect(breadcrumb?.data?['file.async'], async); + expect(breadcrumb?.message, 'testfile_create.txt'); + expect( + (breadcrumb?.data?['file.path'] as String) + .endsWith('test_resources/testfile_create.txt'), + true); + } + test('async', () async { final file = File('test_resources/testfile_create.txt'); expect(await file.exists(), false); @@ -126,6 +156,7 @@ void main() { expect(await newFile.exists(), true); _assertSpan(true); + _assertBreadcrumb(true); await newFile.delete(); }); @@ -149,6 +180,7 @@ void main() { expect(sut.existsSync(), true); _assertSpan(false); + _assertBreadcrumb(false); sut.deleteSync(); }); @@ -176,6 +208,20 @@ void main() { expect(span.origin, SentryTraceOrigins.autoFile); } + void _assertBreadcrumb(bool async, {int? size = 0}) { + final call = fixture.client.captureTransactionCalls.first; + final breadcrumb = call.scope?.breadcrumbs.first; + + expect(breadcrumb?.category, 'file.delete'); + expect(breadcrumb?.data?['file.size'], size); + expect(breadcrumb?.data?['file.async'], async); + expect(breadcrumb?.message, 'testfile_delete.txt'); + expect( + (breadcrumb?.data?['file.path'] as String) + .endsWith('test_resources/testfile_delete.txt'), + true); + } + test('async', () async { final file = File('test_resources/testfile_delete.txt'); await file.create(); @@ -196,6 +242,7 @@ void main() { expect(await newFile.exists(), false); _assertSpan(true); + _assertBreadcrumb(true); }); test('sync', () async { @@ -218,6 +265,7 @@ void main() { expect(sut.existsSync(), false); _assertSpan(false); + _assertBreadcrumb(false); }); }); @@ -243,6 +291,20 @@ void main() { expect(span.origin, SentryTraceOrigins.autoFile); } + void _assertBreadcrumb() { + final call = fixture.client.captureTransactionCalls.first; + final breadcrumb = call.scope?.breadcrumbs.first; + + expect(breadcrumb?.category, 'file.open'); + expect(breadcrumb?.data?['file.size'], 3535); + expect(breadcrumb?.data?['file.async'], true); + expect(breadcrumb?.message, 'sentry.png'); + expect( + (breadcrumb?.data?['file.path'] as String) + .endsWith('test_resources/sentry.png'), + true); + } + test('async', () async { final file = File('test_resources/sentry.png'); @@ -261,6 +323,7 @@ void main() { await newFile.close(); _assertSpan(); + _assertBreadcrumb(); }); }); @@ -286,6 +349,20 @@ void main() { expect(span.origin, SentryTraceOrigins.autoFile); } + void _assertBreadcrumb(String fileName, bool async, {int? size = 0}) { + final call = fixture.client.captureTransactionCalls.first; + final breadcrumb = call.scope?.breadcrumbs.first; + + expect(breadcrumb?.category, 'file.read'); + expect(breadcrumb?.data?['file.size'], size); + expect(breadcrumb?.data?['file.async'], async); + expect(breadcrumb?.message, fileName); + expect( + (breadcrumb?.data?['file.path'] as String) + .endsWith('test_resources/$fileName'), + true); + } + test('as bytes async', () async { final file = File('test_resources/sentry.png'); @@ -302,6 +379,7 @@ void main() { await tr.finish(); _assertSpan('sentry.png', true, size: 3535); + _assertBreadcrumb('sentry.png', true, size: 3535); }); test('as bytes sync', () async { @@ -320,6 +398,7 @@ void main() { await tr.finish(); _assertSpan('sentry.png', false, size: 3535); + _assertBreadcrumb('sentry.png', false, size: 3535); }); test('lines async', () async { @@ -338,6 +417,7 @@ void main() { await tr.finish(); _assertSpan('testfile.txt', true, size: 7); + _assertBreadcrumb('testfile.txt', true, size: 7); }); test('lines sync', () async { @@ -356,6 +436,7 @@ void main() { await tr.finish(); _assertSpan('testfile.txt', false, size: 7); + _assertBreadcrumb('testfile.txt', false, size: 7); }); test('string async', () async { @@ -374,6 +455,7 @@ void main() { await tr.finish(); _assertSpan('testfile.txt', true, size: 7); + _assertBreadcrumb('testfile.txt', true, size: 7); }); test('string sync', () async { @@ -392,6 +474,7 @@ void main() { await tr.finish(); _assertSpan('testfile.txt', false, size: 7); + _assertBreadcrumb('testfile.txt', false, size: 7); }); }); @@ -416,6 +499,20 @@ void main() { expect(span.origin, SentryTraceOrigins.autoFile); } + void _assertBreadcrumb(bool async, String name) { + final call = fixture.client.captureTransactionCalls.first; + final breadcrumb = call.scope?.breadcrumbs.first; + + expect(breadcrumb?.category, 'file.rename'); + expect(breadcrumb?.data?['file.size'], 0); + expect(breadcrumb?.data?['file.async'], async); + expect(breadcrumb?.message, name); + expect( + (breadcrumb?.data?['file.path'] as String) + .endsWith('test_resources/$name'), + true); + } + test('async', () async { final file = File('test_resources/old_name.txt'); await file.create(); @@ -438,6 +535,7 @@ void main() { expect(sut.uri.toFilePath(), isNot(newFile.uri.toFilePath())); _assertSpan(true, 'old_name.txt'); + _assertBreadcrumb(true, 'old_name.txt'); await newFile.delete(); }); @@ -464,6 +562,7 @@ void main() { expect(sut.uri.toFilePath(), isNot(newFile.uri.toFilePath())); _assertSpan(false, 'old_name.txt'); + _assertBreadcrumb(false, 'old_name.txt'); newFile.deleteSync(); }); @@ -485,6 +584,14 @@ void main() { expect(span.origin, SentryTraceOrigins.autoFile); } + void _assertBreadcrumb(bool async) { + final call = fixture.client.captureTransactionCalls.first; + final breadcrumb = call.scope?.breadcrumbs.first; + + expect(breadcrumb?.data?['file.async'], async); + expect(breadcrumb?.data?['file.path'], null); + } + test('does not add file path if sendDefaultPii is disabled async', () async { final file = File('test_resources/testfile.txt'); @@ -501,6 +608,7 @@ void main() { await tr.finish(); _assertSpan(true); + _assertBreadcrumb(true); }); test('does not add file path if sendDefaultPii is disabled sync', () async { @@ -518,6 +626,7 @@ void main() { await tr.finish(); _assertSpan(false); + _assertBreadcrumb(false); }); test('add SentryFileTracing integration', () async { From d10745a889492816d12c824de97603dcf4621a18 Mon Sep 17 00:00:00 2001 From: Ivan Dlugos <6349682+vaind@users.noreply.github.com> Date: Mon, 25 Sep 2023 15:35:14 +0200 Subject: [PATCH 026/166] ci: don't run CI on markdown updates (#1651) --- .github/workflows/dart.yml | 1 + .github/workflows/dio.yml | 1 + .github/workflows/e2e_dart.yml | 13 +++++++------ .github/workflows/file.yml | 1 + .github/workflows/flutter.yml | 1 + .github/workflows/flutter_test.yml | 1 + .github/workflows/logging.yml | 1 + .github/workflows/metrics.yml | 7 ++++--- .github/workflows/min_version_test.yml | 15 ++++++++------- .github/workflows/sqflite.yml | 1 + 10 files changed, 26 insertions(+), 16 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 8dbd66da01..3971ee75bb 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -6,6 +6,7 @@ on: - release/** pull_request: paths-ignore: + - "**/*.md" - "logging/**" - "dio/**" - "file/**" diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index 647d0e8a21..b501067224 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -6,6 +6,7 @@ on: - release/** pull_request: paths-ignore: + - "**/*.md" - "logging/**" - "flutter/**" - "file/**" diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index 06d4eaae17..7909dc2fb0 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -6,11 +6,12 @@ on: - release/** pull_request: paths-ignore: - - 'logging/**' - - 'dio/**' - - 'flutter/**' - - 'file/**' - - 'sqflite/**' + - "**/*.md" + - "logging/**" + - "dio/**" + - "flutter/**" + - "file/**" + - "sqflite/**" env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} @@ -27,7 +28,7 @@ jobs: build: name: E2E - runs-on: 'ubuntu-latest' + runs-on: "ubuntu-latest" timeout-minutes: 30 defaults: run: diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 4ecfb3c28e..81a6e5abec 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -6,6 +6,7 @@ on: - release/** pull_request: paths-ignore: + - "**/*.md" - "logging/**" - "flutter/**" - "dio/**" diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index cb05fac65d..68237980f7 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -6,6 +6,7 @@ on: - release/** pull_request: paths-ignore: + - "**/*.md" - "logging/**" - "dio/**" - "file/**" diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 3bfda0de36..502efc1375 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -6,6 +6,7 @@ on: - release/** pull_request: paths-ignore: + - "**/*.md" - "file/**" env: diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index 04d595e269..a393dfe570 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -6,6 +6,7 @@ on: - release/** pull_request: paths-ignore: + - "**/*.md" - "dio/**" - "flutter/**" - "file/**" diff --git a/.github/workflows/metrics.yml b/.github/workflows/metrics.yml index 9603300200..601c365a39 100644 --- a/.github/workflows/metrics.yml +++ b/.github/workflows/metrics.yml @@ -7,10 +7,11 @@ on: - dart/** - flutter/** - metrics/** + - "!**/*.md" branches-ignore: - deps/** - dependabot/** - tags-ignore: ['**'] + tags-ignore: ["**"] jobs: cancel-previous-workflow: @@ -59,8 +60,8 @@ jobs: - uses: actions/setup-java@v3 if: ${{ matrix.platform == 'android' }} with: - java-version: '11' - distribution: 'adopt' + java-version: "11" + distribution: "adopt" - run: ./metrics/prepare.sh diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index 86287d14ed..a3b26d593f 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -6,8 +6,9 @@ on: - release/** pull_request: paths-ignore: - - 'file/**' - - 'sqflite/**' + - "**/*.md" + - "file/**" + - "sqflite/**" jobs: cancel-previous-workflow: @@ -27,12 +28,12 @@ jobs: - uses: actions/setup-java@v3 with: - distribution: 'adopt' - java-version: '11' + distribution: "adopt" + java-version: "11" - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 with: - flutter-version: '3.0.0' + flutter-version: "3.0.0" - name: Build Android run: | @@ -49,7 +50,7 @@ jobs: - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 with: - flutter-version: '3.0.0' + flutter-version: "3.0.0" - name: Build iOS run: | @@ -66,7 +67,7 @@ jobs: - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 with: - flutter-version: '3.0.0' + flutter-version: "3.0.0" - name: Build web run: | diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index e8619fd44d..5bfd63c666 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -6,6 +6,7 @@ on: - release/** pull_request: paths-ignore: + - "**/*.md" - "logging/**" - "flutter/**" - "dio/**" From afa6e2a6ded2f7dbb4530fe3974fdbb30db1f914 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Oct 2023 16:26:32 +0200 Subject: [PATCH 027/166] chore(deps): update Flutter SDK (metrics) to v3.13.6 (#1659) * chore: update metrics/flutter.properties to 3.13.6 * Update flutter.properties --------- Co-authored-by: GitHub Co-authored-by: Stefano --- metrics/flutter.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/flutter.properties b/metrics/flutter.properties index 37ce1e3724..0e98ad233b 100644 --- a/metrics/flutter.properties +++ b/metrics/flutter.properties @@ -1,2 +1,2 @@ -version = 3.13.3 +version = 3.13.6 repo = https://github.com/flutter/flutter From 42f6e7e6bf2882e21c1f664a1a6c8277ab07ad3b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Oct 2023 17:45:48 +0200 Subject: [PATCH 028/166] chore: update flutter/scripts/update-android.sh to 6.30.0 (#1660) --- CHANGELOG.md | 3 +++ flutter/android/build.gradle | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40d3b04f3a..550f613f77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ - Bump Cocoa SDK from v8.11.0 to v8.12.0 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650)) - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8120) - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.12.0) +- Bump Android SDK from v6.29.0 to v6.30.0 ([#1660](https://github.com/getsentry/sentry-dart/pull/1660)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6300) + - [diff](https://github.com/getsentry/sentry-java/compare/6.29.0...6.30.0) ## 7.10.1 diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index 47619a3105..02368c3389 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -60,7 +60,7 @@ android { } dependencies { - api 'io.sentry:sentry-android:6.29.0' + api 'io.sentry:sentry-android:6.30.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // Required -- JUnit 4 framework From 746a779146780ddca7ead3cc74e1c81d8e1d63a2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Oct 2023 16:06:16 +0000 Subject: [PATCH 029/166] chore: update flutter/scripts/update-cocoa.sh to 8.13.0 (#1655) --- CHANGELOG.md | 6 +++--- flutter/ios/sentry_flutter.podspec | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 550f613f77..462af5d11e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,9 +9,9 @@ ### Dependencies - Enable compatibility with uuid v4 ([#1647](https://github.com/getsentry/sentry-dart/pull/1647)) -- Bump Cocoa SDK from v8.11.0 to v8.12.0 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8120) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.12.0) +- Bump Cocoa SDK from v8.11.0 to v8.13.0 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650), [#1655](https://github.com/getsentry/sentry-dart/pull/1655)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8130) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.13.0) - Bump Android SDK from v6.29.0 to v6.30.0 ([#1660](https://github.com/getsentry/sentry-dart/pull/1660)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6300) - [diff](https://github.com/getsentry/sentry-java/compare/6.29.0...6.30.0) diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 498acb7b7b..063a35bc26 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.12.0' + s.dependency 'Sentry/HybridSDK', '8.13.0' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' From 5f3facd0ba24c011d59b1b63afc6815fd2edc75f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 9 Oct 2023 07:59:55 +0000 Subject: [PATCH 030/166] Generate class diagrams (#1646) --- .github/workflows/diagrams.yml | 56 + .github/workflows/format-and-fix.yml | 2 +- dart/class-diagram.svg | 3364 +++++++++++++++++ dio/class-diagram.svg | 159 + file/class-diagram.svg | 111 + flutter/class-diagram.svg | 869 +++++ logging/class-diagram.svg | 69 + ...ommit-formatted-code.sh => commit-code.sh} | 7 +- sqflite/class-diagram.svg | 194 + 9 files changed, 4827 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/diagrams.yml create mode 100644 dart/class-diagram.svg create mode 100644 dio/class-diagram.svg create mode 100644 file/class-diagram.svg create mode 100644 flutter/class-diagram.svg create mode 100644 logging/class-diagram.svg rename scripts/{commit-formatted-code.sh => commit-code.sh} (67%) create mode 100644 sqflite/class-diagram.svg diff --git a/.github/workflows/diagrams.yml b/.github/workflows/diagrams.yml new file mode 100644 index 0000000000..9e38ca53a7 --- /dev/null +++ b/.github/workflows/diagrams.yml @@ -0,0 +1,56 @@ +name: diagrams +on: + workflow_dispatch: + +jobs: + diagrams: + runs-on: ubuntu-latest + name: "Create class diagrams of all packages" + steps: + - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + with: + sdk: stable + + - uses: actions/checkout@v3 + + - name: dependencies + run: | + dart pub global activate lakos + sudo apt update + sudo apt install graphviz + + - name: dart + working-directory: ./dart + run: lakos . -i "{test/**,example/**,example_web/**}" | dot -Tsvg -o class-diagram.svg + + - name: flutter + working-directory: ./flutter + run: lakos . -i "{test/**,example/**}" | dot -Tsvg -o class-diagram.svg + + - name: dio + working-directory: ./dio + run: lakos . -i "{test/**,example/**}" | dot -Tsvg -o class-diagram.svg + + - name: file + working-directory: ./file + run: lakos . -i "{test/**,example/**}" | dot -Tsvg -o class-diagram.svg + + - name: sqflite + working-directory: ./sqflite + run: lakos . -i "{test/**,example/**}" | dot -Tsvg -o class-diagram.svg + + - name: logging + working-directory: ./logging + run: lakos . -i "{test/**,example/**}" | dot -Tsvg -o class-diagram.svg + + # Source: https://stackoverflow.com/a/58035262 + - name: Extract branch name + shell: bash + run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT + id: extract_branch + + # actions/checkout fetches only a single commit in a detached HEAD state. Therefore + # we need to pass the current branch, otherwise we can't commit the changes. + # GITHUB_HEAD_REF is the name of the head branch. GitHub Actions only sets this for PRs. + - name: Commit & push + run: ./scripts/commit-code.sh ${{ steps.extract_branch.outputs.branch }} "Update class diagrams" diff --git a/.github/workflows/format-and-fix.yml b/.github/workflows/format-and-fix.yml index fa77a33098..5cdcb6e5f7 100644 --- a/.github/workflows/format-and-fix.yml +++ b/.github/workflows/format-and-fix.yml @@ -51,4 +51,4 @@ jobs: # we need to pass the current branch, otherwise we can't commit the changes. # GITHUB_HEAD_REF is the name of the head branch. GitHub Actions only sets this for PRs. - name: Commit & push - run: ./scripts/commit-formatted-code.sh ${{ steps.extract_branch.outputs.branch }} + run: ./scripts/commit-code.sh ${{ steps.extract_branch.outputs.branch }} "Format & fix code" diff --git a/dart/class-diagram.svg b/dart/class-diagram.svg new file mode 100644 index 0000000000..db98a9ad63 --- /dev/null +++ b/dart/class-diagram.svg @@ -0,0 +1,3364 @@ + + + + + + + + +cluster~ + +dart + + +cluster~/lib + +lib + + +cluster~/lib/src + +src + + +cluster~/lib/src/environment + +environment + + +cluster~/lib/src/protocol + +protocol + + +cluster~/lib/src/event_processor + +event_processor + + +cluster~/lib/src/event_processor/exception + +exception + + +cluster~/lib/src/event_processor/enricher + +enricher + + +cluster~/lib/src/platform + +platform + + +cluster~/lib/src/sentry_attachment + +sentry_attachment + + +cluster~/lib/src/http_client + +http_client + + +cluster~/lib/src/transport + +transport + + +cluster~/lib/src/utils + +utils + + +cluster~/lib/src/client_reports + +client_reports + + + +/lib/src/noop_hub.dart + +noop_hub + + + +/lib/src/sentry_client.dart + +sentry_client + + + +/lib/src/noop_hub.dart->/lib/src/sentry_client.dart + + + + + +/lib/src/sentry_options.dart + +sentry_options + + + +/lib/src/noop_hub.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/hint.dart + +hint + + + +/lib/src/noop_hub.dart->/lib/src/hint.dart + + + + + +/lib/src/tracing.dart + +tracing + + + +/lib/src/noop_hub.dart->/lib/src/tracing.dart + + + + + +/lib/src/protocol.dart + +protocol + + + +/lib/src/noop_hub.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_user_feedback.dart + +sentry_user_feedback + + + +/lib/src/noop_hub.dart->/lib/src/sentry_user_feedback.dart + + + + + +/lib/src/scope.dart + +scope + + + +/lib/src/noop_hub.dart->/lib/src/scope.dart + + + + + +/lib/src/hub.dart + +hub + + + +/lib/src/noop_hub.dart->/lib/src/hub.dart + + + + + +/lib/src/sentry_event_like.dart + +sentry_event_like + + + +/lib/src/sentry_event_like.dart->/lib/src/protocol.dart + + + + + +/lib/src/version.dart + +version + + + +/lib/src/utils.dart + +utils + + + +/lib/src/sentry_span_context.dart + +sentry_span_context + + + +/lib/sentry.dart + +sentry + + + +/lib/src/sentry_span_context.dart->/lib/sentry.dart + + + + + +/lib/src/environment/_web_environment_variables.dart + +_web_environment_variables + + + +/lib/src/environment/keys.dart + +keys + + + +/lib/src/environment/_web_environment_variables.dart->/lib/src/environment/keys.dart + + + + + +/lib/src/environment/environment_variables.dart + +environment_variables + + + +/lib/src/environment/_web_environment_variables.dart->/lib/src/environment/environment_variables.dart + + + + + +/lib/src/environment/_io_environment_variables.dart + +_io_environment_variables + + + +/lib/src/environment/_io_environment_variables.dart->/lib/src/environment/_web_environment_variables.dart + + + + + +/lib/src/environment/_io_environment_variables.dart->/lib/src/environment/keys.dart + + + + + +/lib/src/environment/_io_environment_variables.dart->/lib/src/environment/environment_variables.dart + + + + + +/lib/src/platform_checker.dart + +platform_checker + + + +/lib/src/environment/environment_variables.dart->/lib/src/platform_checker.dart + + + + + +/lib/src/propagation_context.dart + +propagation_context + + + +/lib/src/sentry_baggage.dart + +sentry_baggage + + + +/lib/src/propagation_context.dart->/lib/src/sentry_baggage.dart + + + + + +/lib/src/propagation_context.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_trace_origins.dart + +sentry_trace_origins + + + +/lib/src/sentry_isolate_extension.dart + +sentry_isolate_extension + + + +/lib/src/hub_adapter.dart + +hub_adapter + + + +/lib/src/sentry_isolate_extension.dart->/lib/src/hub_adapter.dart + + + + + +/lib/src/sentry_isolate.dart + +sentry_isolate + + + +/lib/src/sentry_isolate_extension.dart->/lib/src/sentry_isolate.dart + + + + + +/lib/src/sentry_isolate_extension.dart->/lib/src/hub.dart + + + + + +/lib/src/sentry_item_type.dart + +sentry_item_type + + + +/lib/src/diagnostic_logger.dart + +diagnostic_logger + + + +/lib/src/diagnostic_logger.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/diagnostic_logger.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_traces_sampler.dart + +sentry_traces_sampler + + + +/lib/src/sentry_traces_sampler.dart->/lib/sentry.dart + + + + + +/lib/src/invalid_sentry_trace_header_exception.dart + +invalid_sentry_trace_header_exception + + + +/lib/src/sentry.dart + +sentry + + + +/lib/src/sentry.dart->/lib/src/noop_hub.dart + + + + + +/lib/src/sentry.dart->/lib/src/environment/environment_variables.dart + + + + + +/lib/src/sentry.dart->/lib/src/sentry_client.dart + + + + + +/lib/src/sentry.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/event_processor/deduplication_event_processor.dart + +deduplication_event_processor + + + +/lib/src/sentry.dart->/lib/src/event_processor/deduplication_event_processor.dart + + + + + +/lib/src/event_processor/exception/exception_event_processor.dart + +exception_event_processor + + + +/lib/src/sentry.dart->/lib/src/event_processor/exception/exception_event_processor.dart + + + + + +/lib/src/event_processor/enricher/enricher_event_processor.dart + +enricher_event_processor + + + +/lib/src/sentry.dart->/lib/src/event_processor/enricher/enricher_event_processor.dart + + + + + +/lib/src/sentry.dart->/lib/src/hint.dart + + + + + +/lib/src/sentry.dart->/lib/src/tracing.dart + + + + + +/lib/src/integration.dart + +integration + + + +/lib/src/sentry.dart->/lib/src/integration.dart + + + + + +/lib/src/sentry.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry.dart->/lib/src/hub_adapter.dart + + + + + +/lib/src/sentry.dart->/lib/src/sentry_user_feedback.dart + + + + + +/lib/src/run_zoned_guarded_integration.dart + +run_zoned_guarded_integration + + + +/lib/src/sentry.dart->/lib/src/run_zoned_guarded_integration.dart + + + + + +/lib/src/sentry.dart->/lib/src/hub.dart + + + + + +/lib/src/sentry_envelope_item.dart + +sentry_envelope_item + + + +/lib/src/sentry_envelope_item.dart->/lib/src/utils.dart + + + + + +/lib/src/sentry_envelope_item.dart->/lib/src/sentry_item_type.dart + + + + + +/lib/src/sentry_envelope_item_header.dart + +sentry_envelope_item_header + + + +/lib/src/sentry_envelope_item.dart->/lib/src/sentry_envelope_item_header.dart + + + + + +/lib/src/sentry_envelope_item.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_attachment/sentry_attachment.dart + +sentry_attachment + + + +/lib/src/sentry_envelope_item.dart->/lib/src/sentry_attachment/sentry_attachment.dart + + + + + +/lib/src/sentry_envelope_item.dart->/lib/src/sentry_user_feedback.dart + + + + + +/lib/src/client_reports/client_report.dart + +client_report + + + +/lib/src/sentry_envelope_item.dart->/lib/src/client_reports/client_report.dart + + + + + +/lib/src/sentry_client.dart->/lib/src/version.dart + + + + + +/lib/src/sentry_client.dart->/lib/src/sentry_baggage.dart + + + + + +/lib/src/sentry_client.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/sentry_client.dart->/lib/src/hint.dart + + + + + +/lib/src/sentry_trace_context_header.dart + +sentry_trace_context_header + + + +/lib/src/sentry_client.dart->/lib/src/sentry_trace_context_header.dart + + + + + +/lib/src/sentry_client.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_client.dart->/lib/src/sentry_attachment/sentry_attachment.dart + + + + + +/lib/src/sentry_client.dart->/lib/src/sentry_user_feedback.dart + + + + + +/lib/src/transport/noop_transport.dart + +noop_transport + + + +/lib/src/sentry_client.dart->/lib/src/transport/noop_transport.dart + + + + + +/lib/src/transport/data_category.dart + +data_category + + + +/lib/src/sentry_client.dart->/lib/src/transport/data_category.dart + + + + + +/lib/src/transport/rate_limiter.dart + +rate_limiter + + + +/lib/src/sentry_client.dart->/lib/src/transport/rate_limiter.dart + + + + + +/lib/src/transport/http_transport.dart + +http_transport + + + +/lib/src/sentry_client.dart->/lib/src/transport/http_transport.dart + + + + + +/lib/src/sentry_client.dart->/lib/src/scope.dart + + + + + +/lib/src/event_processor.dart + +event_processor + + + +/lib/src/sentry_client.dart->/lib/src/event_processor.dart + + + + + +/lib/src/utils/isolate_utils.dart + +isolate_utils + + + +/lib/src/sentry_client.dart->/lib/src/utils/isolate_utils.dart + + + + + +/lib/src/client_reports/client_report_recorder.dart + +client_report_recorder + + + +/lib/src/sentry_client.dart->/lib/src/client_reports/client_report_recorder.dart + + + + + +/lib/src/client_reports/discard_reason.dart + +discard_reason + + + +/lib/src/sentry_client.dart->/lib/src/client_reports/discard_reason.dart + + + + + +/lib/src/sentry_stack_trace_factory.dart + +sentry_stack_trace_factory + + + +/lib/src/sentry_client.dart->/lib/src/sentry_stack_trace_factory.dart + + + + + +/lib/src/sentry_envelope.dart + +sentry_envelope + + + +/lib/src/sentry_client.dart->/lib/src/sentry_envelope.dart + + + + + +/lib/src/sentry_exception_factory.dart + +sentry_exception_factory + + + +/lib/src/sentry_client.dart->/lib/src/sentry_exception_factory.dart + + + + + +/lib/src/protocol/span_id.dart + +span_id + + + +/lib/src/protocol/sentry_response.dart + +sentry_response + + + +/lib/src/protocol/contexts.dart + +contexts + + + +/lib/src/protocol/sentry_response.dart->/lib/src/protocol/contexts.dart + + + + + +/lib/src/utils/iterable_extension.dart + +iterable_extension + + + +/lib/src/protocol/sentry_response.dart->/lib/src/utils/iterable_extension.dart + + + + + +/lib/src/protocol/sentry_thread.dart + +sentry_thread + + + +/lib/src/protocol/sentry_stack_trace.dart + +sentry_stack_trace + + + +/lib/src/protocol/sentry_thread.dart->/lib/src/protocol/sentry_stack_trace.dart + + + + + +/lib/src/protocol/sentry_stack_frame.dart + +sentry_stack_frame + + + +/lib/src/protocol/sentry_transaction_info.dart + +sentry_transaction_info + + + +/lib/src/protocol/sentry_span.dart + +sentry_span + + + +/lib/src/protocol/sentry_span.dart->/lib/src/utils.dart + + + + + +/lib/src/protocol/sentry_span.dart->/lib/src/tracing.dart + + + + + +/lib/src/protocol/sentry_span.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_tracer.dart + +sentry_tracer + + + +/lib/src/protocol/sentry_span.dart->/lib/src/sentry_tracer.dart + + + + + +/lib/src/protocol/sentry_span.dart->/lib/src/hub.dart + + + + + +/lib/src/protocol/breadcrumb.dart + +breadcrumb + + + +/lib/src/protocol/breadcrumb.dart->/lib/src/utils.dart + + + + + +/lib/src/protocol/breadcrumb.dart->/lib/src/protocol.dart + + + + + +/lib/src/protocol/sentry_request.dart + +sentry_request + + + +/lib/src/utils/http_sanitizer.dart + +http_sanitizer + + + +/lib/src/protocol/sentry_request.dart->/lib/src/utils/http_sanitizer.dart + + + + + +/lib/src/protocol/sentry_request.dart->/lib/src/utils/iterable_extension.dart + + + + + +/lib/src/protocol/sentry_level.dart + +sentry_level + + + +/lib/src/protocol/sdk_version.dart + +sdk_version + + + +/lib/src/protocol/sentry_package.dart + +sentry_package + + + +/lib/src/protocol/sdk_version.dart->/lib/src/protocol/sentry_package.dart + + + + + +/lib/src/protocol/sentry_trace_header.dart + +sentry_trace_header + + + +/lib/src/protocol/sentry_trace_header.dart->/lib/src/invalid_sentry_trace_header_exception.dart + + + + + +/lib/src/protocol/sentry_trace_header.dart->/lib/src/protocol.dart + + + + + +/lib/src/protocol/sentry_transaction.dart + +sentry_transaction + + + +/lib/src/protocol/sentry_transaction.dart->/lib/src/utils.dart + + + + + +/lib/src/protocol/sentry_transaction.dart->/lib/src/protocol.dart + + + + + +/lib/src/protocol/sentry_transaction.dart->/lib/src/sentry_tracer.dart + + + + + +/lib/src/sentry_measurement.dart + +sentry_measurement + + + +/lib/src/protocol/sentry_transaction.dart->/lib/src/sentry_measurement.dart + + + + + +/lib/src/protocol/sentry_id.dart + +sentry_id + + + +/lib/src/protocol/sentry_view_hierarchy_element.dart + +sentry_view_hierarchy_element + + + +/lib/src/protocol/sentry_culture.dart + +sentry_culture + + + +/lib/src/protocol/sentry_geo.dart + +sentry_geo + + + +/lib/src/protocol/debug_meta.dart + +debug_meta + + + +/lib/src/protocol/debug_meta.dart->/lib/src/protocol.dart + + + + + +/lib/src/protocol/mechanism.dart + +mechanism + + + +/lib/src/protocol/sentry_app.dart + +sentry_app + + + +/lib/src/protocol/sentry_gpu.dart + +sentry_gpu + + + +/lib/src/protocol/sentry_trace_context.dart + +sentry_trace_context + + + +/lib/src/protocol/sentry_trace_context.dart->/lib/src/propagation_context.dart + + + + + +/lib/src/protocol/sentry_trace_context.dart->/lib/src/protocol.dart + + + + + +/lib/src/protocol/sentry_trace_context.dart->/lib/sentry.dart + + + + + +/lib/src/protocol/contexts.dart->/lib/src/protocol.dart + + + + + +/lib/src/protocol/debug_image.dart + +debug_image + + + +/lib/src/protocol/sentry_baggage_header.dart + +sentry_baggage_header + + + +/lib/src/protocol/sentry_baggage_header.dart->/lib/src/sentry_baggage.dart + + + + + +/lib/src/protocol/sentry_stack_trace.dart->/lib/src/protocol/sentry_stack_frame.dart + + + + + +/lib/src/protocol/sentry_runtime.dart + +sentry_runtime + + + +/lib/src/protocol/sentry_device.dart + +sentry_device + + + +/lib/src/protocol/sentry_device.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/protocol/sentry_message.dart + +sentry_message + + + +/lib/src/protocol/sdk_info.dart + +sdk_info + + + +/lib/src/protocol/max_body_size.dart + +max_body_size + + + +/lib/src/protocol/sentry_event.dart + +sentry_event + + + +/lib/src/protocol/sentry_event.dart->/lib/src/utils.dart + + + + + +/lib/src/throwable_mechanism.dart + +throwable_mechanism + + + +/lib/src/protocol/sentry_event.dart->/lib/src/throwable_mechanism.dart + + + + + +/lib/src/protocol/sentry_event.dart->/lib/src/protocol.dart + + + + + +/lib/src/protocol/sentry_operating_system.dart + +sentry_operating_system + + + +/lib/src/protocol/sentry_user.dart + +sentry_user + + + +/lib/src/protocol/sentry_user.dart->/lib/sentry.dart + + + + + +/lib/src/protocol/sentry_exception.dart + +sentry_exception + + + +/lib/src/protocol/sentry_exception.dart->/lib/src/protocol.dart + + + + + +/lib/src/protocol/span_status.dart + +span_status + + + +/lib/src/protocol/sentry_transaction_name_source.dart + +sentry_transaction_name_source + + + +/lib/src/protocol/sentry_view_hierarchy.dart + +sentry_view_hierarchy + + + +/lib/src/protocol/sentry_view_hierarchy.dart->/lib/src/protocol/sentry_view_hierarchy_element.dart + + + + + +/lib/src/protocol/sentry_browser.dart + +sentry_browser + + + +/lib/src/protocol/dsn.dart + +dsn + + + +/lib/src/sentry_baggage.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/sentry_baggage.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_baggage.dart->/lib/src/scope.dart + + + + + +/lib/src/exception_stacktrace_extractor.dart + +exception_stacktrace_extractor + + + +/lib/src/exception_stacktrace_extractor.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/exception_stacktrace_extractor.dart->/lib/src/protocol.dart + + + + + +/lib/src/isolate_error_integration.dart + +isolate_error_integration + + + +/lib/src/isolate_error_integration.dart->/lib/src/sentry_isolate_extension.dart + + + + + +/lib/src/isolate_error_integration.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/isolate_error_integration.dart->/lib/src/integration.dart + + + + + +/lib/src/isolate_error_integration.dart->/lib/src/hub.dart + + + + + +/lib/src/throwable_mechanism.dart->/lib/src/protocol/mechanism.dart + + + + + +/lib/src/type_check_hint.dart + +type_check_hint + + + +/lib/src/http_client/failed_request_client.dart + +failed_request_client + + + +/lib/src/type_check_hint.dart->/lib/src/http_client/failed_request_client.dart + + + + + +/lib/src/sentry_client_stub.dart + +sentry_client_stub + + + +/lib/src/sentry_client_stub.dart->/lib/src/sentry_client.dart + + + + + +/lib/src/sentry_client_stub.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/sentry_options.dart->/lib/src/version.dart + + + + + +/lib/src/sentry_options.dart->/lib/src/environment/environment_variables.dart + + + + + +/lib/src/sentry_options.dart->/lib/src/diagnostic_logger.dart + + + + + +/lib/src/noop_client.dart + +noop_client + + + +/lib/src/sentry_options.dart->/lib/src/noop_client.dart + + + + + +/lib/src/sentry_options.dart->/lib/src/transport/noop_transport.dart + + + + + +/lib/src/client_reports/noop_client_report_recorder.dart + +noop_client_report_recorder + + + +/lib/src/sentry_options.dart->/lib/src/client_reports/noop_client_report_recorder.dart + + + + + +/lib/src/sentry_options.dart->/lib/src/client_reports/client_report_recorder.dart + + + + + +/lib/src/sentry_options.dart->/lib/src/sentry_stack_trace_factory.dart + + + + + +/lib/src/sentry_options.dart->/lib/src/sentry_exception_factory.dart + + + + + +/lib/src/sentry_options.dart->/lib/sentry.dart + + + + + +/lib/src/event_processor/deduplication_event_processor.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/event_processor/deduplication_event_processor.dart->/lib/src/hint.dart + + + + + +/lib/src/event_processor/deduplication_event_processor.dart->/lib/src/protocol.dart + + + + + +/lib/src/event_processor/deduplication_event_processor.dart->/lib/src/event_processor.dart + + + + + +/lib/src/event_processor/exception/exception_event_processor.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/event_processor/exception/exception_event_processor.dart->/lib/src/event_processor.dart + + + + + +/lib/src/event_processor/exception/web_exception_event_processor.dart + +web_exception_event_processor + + + +/lib/src/event_processor/exception/web_exception_event_processor.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/event_processor/exception/web_exception_event_processor.dart->/lib/src/event_processor/exception/exception_event_processor.dart + + + + + +/lib/src/event_processor/exception/web_exception_event_processor.dart->/lib/src/hint.dart + + + + + +/lib/src/event_processor/exception/web_exception_event_processor.dart->/lib/src/protocol.dart + + + + + +/lib/src/event_processor/exception/io_exception_event_processor.dart + +io_exception_event_processor + + + +/lib/src/event_processor/exception/io_exception_event_processor.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/event_processor/exception/io_exception_event_processor.dart->/lib/src/event_processor/exception/exception_event_processor.dart + + + + + +/lib/src/event_processor/exception/io_exception_event_processor.dart->/lib/src/hint.dart + + + + + +/lib/src/event_processor/exception/io_exception_event_processor.dart->/lib/src/protocol.dart + + + + + +/lib/src/event_processor/enricher/io_enricher_event_processor.dart + +io_enricher_event_processor + + + +/lib/src/event_processor/enricher/io_enricher_event_processor.dart->/lib/src/event_processor/enricher/enricher_event_processor.dart + + + + + +/lib/src/event_processor/enricher/io_enricher_event_processor.dart->/lib/sentry.dart + + + + + +/lib/src/event_processor/enricher/enricher_event_processor.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/event_processor/enricher/enricher_event_processor.dart->/lib/src/event_processor.dart + + + + + +/lib/src/event_processor/enricher/web_enricher_event_processor.dart + +web_enricher_event_processor + + + +/lib/src/event_processor/enricher/web_enricher_event_processor.dart->/lib/src/event_processor/enricher/enricher_event_processor.dart + + + + + +/lib/src/event_processor/enricher/web_enricher_event_processor.dart->/lib/sentry.dart + + + + + +/lib/src/platform/platform.dart + +platform + + + +/lib/src/platform/_web_platform.dart + +_web_platform + + + +/lib/src/platform/_web_platform.dart->/lib/src/platform/platform.dart + + + + + +/lib/src/platform/_io_platform.dart + +_io_platform + + + +/lib/src/platform/_io_platform.dart->/lib/src/platform/platform.dart + + + + + +/lib/src/hint.dart->/lib/src/sentry_attachment/sentry_attachment.dart + + + + + +/lib/src/platform_checker.dart->/lib/src/platform/platform.dart + + + + + +/lib/src/tracing.dart->/lib/src/sentry_span_context.dart + + + + + +/lib/src/tracing.dart->/lib/src/invalid_sentry_trace_header_exception.dart + + + + + +/lib/src/tracing.dart->/lib/src/sentry_trace_context_header.dart + + + + + +/lib/src/sentry_measurement_unit.dart + +sentry_measurement_unit + + + +/lib/src/tracing.dart->/lib/src/sentry_measurement_unit.dart + + + + + +/lib/src/sentry_transaction_context.dart + +sentry_transaction_context + + + +/lib/src/tracing.dart->/lib/src/sentry_transaction_context.dart + + + + + +/lib/src/sentry_span_interface.dart + +sentry_span_interface + + + +/lib/src/tracing.dart->/lib/src/sentry_span_interface.dart + + + + + +/lib/src/sentry_traces_sampling_decision.dart + +sentry_traces_sampling_decision + + + +/lib/src/tracing.dart->/lib/src/sentry_traces_sampling_decision.dart + + + + + +/lib/src/noop_sentry_span.dart + +noop_sentry_span + + + +/lib/src/tracing.dart->/lib/src/noop_sentry_span.dart + + + + + +/lib/src/tracing.dart->/lib/src/sentry_measurement.dart + + + + + +/lib/src/sentry_sampling_context.dart + +sentry_sampling_context + + + +/lib/src/tracing.dart->/lib/src/sentry_sampling_context.dart + + + + + +/lib/src/exception_cause.dart + +exception_cause + + + +/lib/src/noop_isolate_error_integration.dart + +noop_isolate_error_integration + + + +/lib/src/noop_isolate_error_integration.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/noop_isolate_error_integration.dart->/lib/src/integration.dart + + + + + +/lib/src/noop_isolate_error_integration.dart->/lib/src/hub.dart + + + + + +/lib/src/sentry_trace_context_header.dart->/lib/src/protocol/sentry_id.dart + + + + + +/lib/src/sentry_trace_context_header.dart->/lib/src/sentry_baggage.dart + + + + + +/lib/src/sentry_trace_context_header.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/integration.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/integration.dart->/lib/src/hub.dart + + + + + +/lib/src/protocol.dart->/lib/src/sentry_event_like.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/span_id.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_response.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_thread.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_stack_frame.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_transaction_info.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_span.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/breadcrumb.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_request.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_level.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sdk_version.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_trace_header.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_transaction.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_id.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_view_hierarchy_element.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_culture.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_geo.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/debug_meta.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/mechanism.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_app.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_gpu.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_trace_context.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/contexts.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/debug_image.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_baggage_header.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_stack_trace.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_runtime.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_device.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_message.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sdk_info.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/max_body_size.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_package.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_event.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_operating_system.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_user.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_exception.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/span_status.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_transaction_name_source.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_view_hierarchy.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/sentry_browser.dart + + + + + +/lib/src/protocol.dart->/lib/src/protocol/dsn.dart + + + + + +/lib/src/sentry_attachment/io_sentry_attachment.dart + +io_sentry_attachment + + + +/lib/src/sentry_attachment/io_sentry_attachment.dart->/lib/src/sentry_attachment/sentry_attachment.dart + + + + + +/lib/src/sentry_attachment/sentry_attachment.dart->/lib/src/utils.dart + + + + + +/lib/src/sentry_attachment/sentry_attachment.dart->/lib/src/protocol/sentry_view_hierarchy.dart + + + + + +/lib/src/exception_cause_extractor.dart + +exception_cause_extractor + + + +/lib/src/exception_cause_extractor.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/exception_cause_extractor.dart->/lib/src/exception_cause.dart + + + + + +/lib/src/exception_cause_extractor.dart->/lib/src/protocol.dart + + + + + +/lib/src/noop_sentry_client.dart + +noop_sentry_client + + + +/lib/src/noop_sentry_client.dart->/lib/src/sentry_client.dart + + + + + +/lib/src/noop_sentry_client.dart->/lib/src/hint.dart + + + + + +/lib/src/noop_sentry_client.dart->/lib/src/sentry_trace_context_header.dart + + + + + +/lib/src/noop_sentry_client.dart->/lib/src/protocol.dart + + + + + +/lib/src/noop_sentry_client.dart->/lib/src/sentry_user_feedback.dart + + + + + +/lib/src/noop_sentry_client.dart->/lib/src/scope.dart + + + + + +/lib/src/noop_sentry_client.dart->/lib/src/sentry_envelope.dart + + + + + +/lib/src/sentry_transaction_context.dart->/lib/src/sentry_trace_origins.dart + + + + + +/lib/src/sentry_transaction_context.dart->/lib/src/sentry_baggage.dart + + + + + +/lib/src/sentry_transaction_context.dart->/lib/src/tracing.dart + + + + + +/lib/src/sentry_transaction_context.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_tracer_finish_status.dart + +sentry_tracer_finish_status + + + +/lib/src/sentry_tracer.dart->/lib/src/sentry_tracer_finish_status.dart + + + + + +/lib/src/utils/sample_rate_format.dart + +sample_rate_format + + + +/lib/src/sentry_tracer.dart->/lib/src/utils/sample_rate_format.dart + + + + + +/lib/src/sentry_tracer.dart->/lib/sentry.dart + + + + + +/lib/src/sentry_span_interface.dart->/lib/src/tracing.dart + + + + + +/lib/src/sentry_span_interface.dart->/lib/src/protocol.dart + + + + + +/lib/src/noop_origin.dart + +noop_origin + + + +/lib/src/hub_adapter.dart->/lib/src/sentry.dart + + + + + +/lib/src/hub_adapter.dart->/lib/src/sentry_client.dart + + + + + +/lib/src/hub_adapter.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/hub_adapter.dart->/lib/src/hint.dart + + + + + +/lib/src/hub_adapter.dart->/lib/src/tracing.dart + + + + + +/lib/src/hub_adapter.dart->/lib/src/protocol.dart + + + + + +/lib/src/hub_adapter.dart->/lib/src/sentry_user_feedback.dart + + + + + +/lib/src/hub_adapter.dart->/lib/src/scope.dart + + + + + +/lib/src/hub_adapter.dart->/lib/src/hub.dart + + + + + +/lib/src/sentry_user_feedback.dart->/lib/src/protocol.dart + + + + + +/lib/src/http_client/failed_request_client.dart->/lib/src/throwable_mechanism.dart + + + + + +/lib/src/http_client/failed_request_client.dart->/lib/src/type_check_hint.dart + + + + + +/lib/src/http_client/failed_request_client.dart->/lib/src/hint.dart + + + + + +/lib/src/http_client/failed_request_client.dart->/lib/src/protocol.dart + + + + + +/lib/src/http_client/failed_request_client.dart->/lib/src/hub_adapter.dart + + + + + +/lib/src/http_client/sentry_http_client.dart + +sentry_http_client + + + +/lib/src/http_client/failed_request_client.dart->/lib/src/http_client/sentry_http_client.dart + + + + + +/lib/src/http_client/sentry_http_client_error.dart + +sentry_http_client_error + + + +/lib/src/http_client/failed_request_client.dart->/lib/src/http_client/sentry_http_client_error.dart + + + + + +/lib/src/utils/tracing_utils.dart + +tracing_utils + + + +/lib/src/http_client/failed_request_client.dart->/lib/src/utils/tracing_utils.dart + + + + + +/lib/src/http_client/failed_request_client.dart->/lib/src/hub.dart + + + + + +/lib/src/http_client/sentry_http_client.dart->/lib/src/hub_adapter.dart + + + + + +/lib/src/http_client/sentry_http_client.dart->/lib/src/http_client/failed_request_client.dart + + + + + +/lib/src/http_client/breadcrumb_client.dart + +breadcrumb_client + + + +/lib/src/http_client/sentry_http_client.dart->/lib/src/http_client/breadcrumb_client.dart + + + + + +/lib/src/http_client/tracing_client.dart + +tracing_client + + + +/lib/src/http_client/sentry_http_client.dart->/lib/src/http_client/tracing_client.dart + + + + + +/lib/src/http_client/sentry_http_client.dart->/lib/src/hub.dart + + + + + +/lib/src/http_client/breadcrumb_client.dart->/lib/src/protocol.dart + + + + + +/lib/src/http_client/breadcrumb_client.dart->/lib/src/hub_adapter.dart + + + + + +/lib/src/http_client/breadcrumb_client.dart->/lib/src/utils/http_sanitizer.dart + + + + + +/lib/src/utils/url_details.dart + +url_details + + + +/lib/src/http_client/breadcrumb_client.dart->/lib/src/utils/url_details.dart + + + + + +/lib/src/http_client/breadcrumb_client.dart->/lib/src/hub.dart + + + + + +/lib/src/http_client/tracing_client.dart->/lib/src/sentry_trace_origins.dart + + + + + +/lib/src/http_client/tracing_client.dart->/lib/src/tracing.dart + + + + + +/lib/src/http_client/tracing_client.dart->/lib/src/protocol.dart + + + + + +/lib/src/http_client/tracing_client.dart->/lib/src/hub_adapter.dart + + + + + +/lib/src/http_client/tracing_client.dart->/lib/src/utils/http_sanitizer.dart + + + + + +/lib/src/http_client/tracing_client.dart->/lib/src/utils/tracing_utils.dart + + + + + +/lib/src/http_client/tracing_client.dart->/lib/src/hub.dart + + + + + +/lib/src/noop_sentry_span.dart->/lib/src/utils.dart + + + + + +/lib/src/noop_sentry_span.dart->/lib/src/tracing.dart + + + + + +/lib/src/noop_sentry_span.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_tracer_finish_status.dart->/lib/sentry.dart + + + + + +/lib/src/run_zoned_guarded_integration.dart->/lib/src/throwable_mechanism.dart + + + + + +/lib/src/run_zoned_guarded_integration.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/run_zoned_guarded_integration.dart->/lib/src/integration.dart + + + + + +/lib/src/run_zoned_guarded_integration.dart->/lib/src/protocol.dart + + + + + +/lib/src/run_zoned_guarded_integration.dart->/lib/src/hub.dart + + + + + +/lib/src/transport/noop_transport.dart->/lib/src/protocol.dart + + + + + +/lib/src/transport/transport.dart + +transport + + + +/lib/src/transport/noop_transport.dart->/lib/src/transport/transport.dart + + + + + +/lib/src/transport/noop_transport.dart->/lib/src/sentry_envelope.dart + + + + + +/lib/src/transport/rate_limit_parser.dart + +rate_limit_parser + + + +/lib/src/transport/rate_limit_parser.dart->/lib/src/transport/data_category.dart + + + + + +/lib/src/transport/rate_limit.dart + +rate_limit + + + +/lib/src/transport/rate_limit_parser.dart->/lib/src/transport/rate_limit.dart + + + + + +/lib/src/transport/noop_encode.dart + +noop_encode + + + +/lib/src/transport/transport.dart->/lib/src/protocol.dart + + + + + +/lib/src/transport/transport.dart->/lib/src/sentry_envelope.dart + + + + + +/lib/src/transport/rate_limiter.dart->/lib/src/sentry_envelope_item.dart + + + + + +/lib/src/transport/rate_limiter.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/transport/rate_limiter.dart->/lib/src/transport/rate_limit_parser.dart + + + + + +/lib/src/transport/rate_limiter.dart->/lib/src/transport/data_category.dart + + + + + +/lib/src/transport/rate_limiter.dart->/lib/src/transport/rate_limit.dart + + + + + +/lib/src/transport/rate_limiter.dart->/lib/src/client_reports/discard_reason.dart + + + + + +/lib/src/transport/rate_limiter.dart->/lib/src/sentry_envelope.dart + + + + + +/lib/src/transport/encode.dart + +encode + + + +/lib/src/transport/rate_limit.dart->/lib/src/transport/data_category.dart + + + + + +/lib/src/transport/http_transport.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/transport/http_transport.dart->/lib/src/noop_client.dart + + + + + +/lib/src/transport/http_transport.dart->/lib/src/protocol.dart + + + + + +/lib/src/transport/http_transport.dart->/lib/src/transport/noop_encode.dart + + + + + +/lib/src/transport/http_transport.dart->/lib/src/transport/data_category.dart + + + + + +/lib/src/transport/http_transport.dart->/lib/src/transport/transport.dart + + + + + +/lib/src/transport/http_transport.dart->/lib/src/transport/rate_limiter.dart + + + + + +/lib/src/transport/http_transport.dart->/lib/src/client_reports/client_report_recorder.dart + + + + + +/lib/src/transport/http_transport.dart->/lib/src/client_reports/discard_reason.dart + + + + + +/lib/src/transport/http_transport.dart->/lib/src/sentry_envelope.dart + + + + + +/lib/src/recursive_exception_cause_extractor.dart + +recursive_exception_cause_extractor + + + +/lib/src/recursive_exception_cause_extractor.dart->/lib/src/throwable_mechanism.dart + + + + + +/lib/src/recursive_exception_cause_extractor.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/recursive_exception_cause_extractor.dart->/lib/src/exception_cause.dart + + + + + +/lib/src/recursive_exception_cause_extractor.dart->/lib/src/protocol.dart + + + + + +/lib/src/scope.dart->/lib/src/propagation_context.dart + + + + + +/lib/src/scope.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/scope.dart->/lib/src/hint.dart + + + + + +/lib/src/scope.dart->/lib/src/protocol.dart + + + + + +/lib/src/scope.dart->/lib/src/sentry_attachment/sentry_attachment.dart + + + + + +/lib/src/scope.dart->/lib/src/sentry_tracer.dart + + + + + +/lib/src/scope.dart->/lib/src/sentry_span_interface.dart + + + + + +/lib/src/scope.dart->/lib/src/event_processor.dart + + + + + +/lib/src/scope_observer.dart + +scope_observer + + + +/lib/src/scope.dart->/lib/src/scope_observer.dart + + + + + +/lib/src/event_processor.dart->/lib/src/hint.dart + + + + + +/lib/src/event_processor.dart->/lib/src/protocol.dart + + + + + +/lib/src/utils/http_sanitizer.dart->/lib/src/protocol.dart + + + + + +/lib/src/utils/http_sanitizer.dart->/lib/src/utils/url_details.dart + + + + + +/lib/src/utils/url_details.dart->/lib/sentry.dart + + + + + +/lib/src/utils/http_header_utils.dart + +http_header_utils + + + +/lib/src/utils/_web_get_isolate_name.dart + +_web_get_isolate_name + + + +/lib/src/utils/tracing_utils.dart->/lib/sentry.dart + + + + + +/lib/src/utils/_io_get_isolate_name.dart + +_io_get_isolate_name + + + +/lib/src/client_reports/client_report.dart->/lib/src/utils.dart + + + + + +/lib/src/client_reports/discarded_event.dart + +discarded_event + + + +/lib/src/client_reports/client_report.dart->/lib/src/client_reports/discarded_event.dart + + + + + +/lib/src/client_reports/noop_client_report_recorder.dart->/lib/src/transport/data_category.dart + + + + + +/lib/src/client_reports/noop_client_report_recorder.dart->/lib/src/client_reports/client_report.dart + + + + + +/lib/src/client_reports/noop_client_report_recorder.dart->/lib/src/client_reports/client_report_recorder.dart + + + + + +/lib/src/client_reports/noop_client_report_recorder.dart->/lib/src/client_reports/discard_reason.dart + + + + + +/lib/src/client_reports/discarded_event.dart->/lib/src/transport/data_category.dart + + + + + +/lib/src/client_reports/discarded_event.dart->/lib/src/client_reports/discard_reason.dart + + + + + +/lib/src/client_reports/client_report_recorder.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/client_reports/client_report_recorder.dart->/lib/src/transport/data_category.dart + + + + + +/lib/src/client_reports/client_report_recorder.dart->/lib/src/client_reports/client_report.dart + + + + + +/lib/src/client_reports/client_report_recorder.dart->/lib/src/client_reports/discarded_event.dart + + + + + +/lib/src/client_reports/client_report_recorder.dart->/lib/src/client_reports/discard_reason.dart + + + + + +/lib/src/sentry_stack_trace_factory.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/sentry_stack_trace_factory.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_stack_trace_factory.dart->/lib/src/noop_origin.dart + + + + + +/lib/src/sentry_measurement.dart->/lib/src/sentry_measurement_unit.dart + + + + + +/lib/src/sentry_envelope_header.dart + +sentry_envelope_header + + + +/lib/src/sentry_envelope_header.dart->/lib/src/utils.dart + + + + + +/lib/src/sentry_envelope_header.dart->/lib/src/protocol/sdk_version.dart + + + + + +/lib/src/sentry_envelope_header.dart->/lib/src/protocol/sentry_id.dart + + + + + +/lib/src/sentry_envelope_header.dart->/lib/src/sentry_trace_context_header.dart + + + + + +/lib/src/sentry_isolate.dart->/lib/src/throwable_mechanism.dart + + + + + +/lib/src/sentry_isolate.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_isolate.dart->/lib/src/hub_adapter.dart + + + + + +/lib/src/sentry_isolate.dart->/lib/src/hub.dart + + + + + +/lib/src/scope_observer.dart->/lib/src/protocol/breadcrumb.dart + + + + + +/lib/src/scope_observer.dart->/lib/src/protocol/sentry_user.dart + + + + + +/lib/src/sentry_envelope.dart->/lib/src/utils.dart + + + + + +/lib/src/sentry_envelope.dart->/lib/src/sentry_item_type.dart + + + + + +/lib/src/sentry_envelope.dart->/lib/src/sentry_envelope_item.dart + + + + + +/lib/src/sentry_envelope.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/sentry_envelope.dart->/lib/src/sentry_trace_context_header.dart + + + + + +/lib/src/sentry_envelope.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_envelope.dart->/lib/src/sentry_attachment/sentry_attachment.dart + + + + + +/lib/src/sentry_envelope.dart->/lib/src/sentry_user_feedback.dart + + + + + +/lib/src/sentry_envelope.dart->/lib/src/client_reports/client_report.dart + + + + + +/lib/src/sentry_envelope.dart->/lib/src/sentry_envelope_header.dart + + + + + +/lib/src/sentry_sampling_context.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/sentry_sampling_context.dart->/lib/src/tracing.dart + + + + + +/lib/src/sentry_exception_factory.dart->/lib/src/throwable_mechanism.dart + + + + + +/lib/src/sentry_exception_factory.dart->/lib/src/sentry_options.dart + + + + + +/lib/src/sentry_exception_factory.dart->/lib/src/protocol.dart + + + + + +/lib/src/sentry_exception_factory.dart->/lib/src/recursive_exception_cause_extractor.dart + + + + + +/lib/src/sentry_exception_factory.dart->/lib/src/sentry_stack_trace_factory.dart + + + + + +/lib/src/hub.dart->/lib/src/propagation_context.dart + + + + + +/lib/src/hub.dart->/lib/src/sentry_traces_sampler.dart + + + + + +/lib/src/hub.dart->/lib/src/sentry_tracer.dart + + + + + +/lib/src/hub.dart->/lib/src/transport/data_category.dart + + + + + +/lib/src/hub.dart->/lib/src/client_reports/discard_reason.dart + + + + + +/lib/src/hub.dart->/lib/sentry.dart + + + + + +/lib/src/origin.dart + +origin + + + +/lib/sentry.dart->/lib/src/utils.dart + + + + + +/lib/sentry.dart->/lib/src/sentry_trace_origins.dart + + + + + +/lib/sentry.dart->/lib/src/sentry.dart + + + + + +/lib/sentry.dart->/lib/src/sentry_envelope_item.dart + + + + + +/lib/sentry.dart->/lib/src/sentry_client.dart + + + + + +/lib/sentry.dart->/lib/src/sentry_baggage.dart + + + + + +/lib/sentry.dart->/lib/src/exception_stacktrace_extractor.dart + + + + + +/lib/sentry.dart->/lib/src/throwable_mechanism.dart + + + + + +/lib/sentry.dart->/lib/src/type_check_hint.dart + + + + + +/lib/sentry.dart->/lib/src/sentry_options.dart + + + + + +/lib/sentry.dart->/lib/src/hint.dart + + + + + +/lib/sentry.dart->/lib/src/platform_checker.dart + + + + + +/lib/sentry.dart->/lib/src/tracing.dart + + + + + +/lib/sentry.dart->/lib/src/exception_cause.dart + + + + + +/lib/sentry.dart->/lib/src/integration.dart + + + + + +/lib/sentry.dart->/lib/src/protocol.dart + + + + + +/lib/sentry.dart->/lib/src/sentry_attachment/sentry_attachment.dart + + + + + +/lib/sentry.dart->/lib/src/exception_cause_extractor.dart + + + + + +/lib/sentry.dart->/lib/src/hub_adapter.dart + + + + + +/lib/sentry.dart->/lib/src/sentry_user_feedback.dart + + + + + +/lib/sentry.dart->/lib/src/http_client/sentry_http_client.dart + + + + + +/lib/sentry.dart->/lib/src/http_client/sentry_http_client_error.dart + + + + + +/lib/sentry.dart->/lib/src/run_zoned_guarded_integration.dart + + + + + +/lib/sentry.dart->/lib/src/transport/transport.dart + + + + + +/lib/sentry.dart->/lib/src/scope.dart + + + + + +/lib/sentry.dart->/lib/src/event_processor.dart + + + + + +/lib/sentry.dart->/lib/src/utils/http_sanitizer.dart + + + + + +/lib/sentry.dart->/lib/src/utils/url_details.dart + + + + + +/lib/sentry.dart->/lib/src/utils/http_header_utils.dart + + + + + +/lib/sentry.dart->/lib/src/utils/tracing_utils.dart + + + + + +/lib/sentry.dart->/lib/src/scope_observer.dart + + + + + +/lib/sentry.dart->/lib/src/sentry_envelope.dart + + + + + +/lib/sentry.dart->/lib/src/hub.dart + + + + + +/lib/sentry_io.dart + +sentry_io + + + +/lib/sentry_io.dart->/lib/src/sentry_isolate_extension.dart + + + + + +/lib/sentry_io.dart->/lib/src/sentry_attachment/io_sentry_attachment.dart + + + + + +/lib/sentry_io.dart->/lib/src/sentry_isolate.dart + + + + + +/lib/sentry_io.dart->/lib/sentry.dart + + + + + diff --git a/dio/class-diagram.svg b/dio/class-diagram.svg new file mode 100644 index 0000000000..0e368cbdf5 --- /dev/null +++ b/dio/class-diagram.svg @@ -0,0 +1,159 @@ + + + + + + + + +cluster~ + +dio + + +cluster~/lib + +lib + + +cluster~/lib/src + +src + + + +/lib/src/version.dart + +version + + + +/lib/src/dio_event_processor.dart + +dio_event_processor + + + +/lib/src/dio_stacktrace_extractor.dart + +dio_stacktrace_extractor + + + +/lib/src/sentry_dio_client_adapter.dart + +sentry_dio_client_adapter + + + +/lib/src/tracing_client_adapter.dart + +tracing_client_adapter + + + +/lib/src/sentry_dio_client_adapter.dart->/lib/src/tracing_client_adapter.dart + + + + + +/lib/src/breadcrumb_client_adapter.dart + +breadcrumb_client_adapter + + + +/lib/src/sentry_dio_client_adapter.dart->/lib/src/breadcrumb_client_adapter.dart + + + + + +/lib/src/sentry_transformer.dart + +sentry_transformer + + + +/lib/src/dio_error_extractor.dart + +dio_error_extractor + + + +/lib/src/sentry_dio_extension.dart + +sentry_dio_extension + + + +/lib/src/sentry_dio_extension.dart->/lib/src/version.dart + + + + + +/lib/src/sentry_dio_extension.dart->/lib/src/dio_event_processor.dart + + + + + +/lib/src/sentry_dio_extension.dart->/lib/src/dio_stacktrace_extractor.dart + + + + + +/lib/src/sentry_dio_extension.dart->/lib/src/sentry_dio_client_adapter.dart + + + + + +/lib/src/sentry_dio_extension.dart->/lib/src/sentry_transformer.dart + + + + + +/lib/src/sentry_dio_extension.dart->/lib/src/dio_error_extractor.dart + + + + + +/lib/src/failed_request_interceptor.dart + +failed_request_interceptor + + + +/lib/src/sentry_dio_extension.dart->/lib/src/failed_request_interceptor.dart + + + + + +/lib/sentry_dio.dart + +sentry_dio + + + +/lib/sentry_dio.dart->/lib/src/dio_event_processor.dart + + + + + +/lib/sentry_dio.dart->/lib/src/sentry_dio_extension.dart + + + + + diff --git a/file/class-diagram.svg b/file/class-diagram.svg new file mode 100644 index 0000000000..e8497bd57d --- /dev/null +++ b/file/class-diagram.svg @@ -0,0 +1,111 @@ + + + + + + + + +cluster~ + +file + + +cluster~/lib + +lib + + +cluster~/lib/src + +src + + + +/lib/sentry_file.dart + +sentry_file + + + +/lib/src/sentry_file.dart + +sentry_file + + + +/lib/sentry_file.dart->/lib/src/sentry_file.dart + + + + + +/lib/src/sentry_io_overrides.dart + +sentry_io_overrides + + + +/lib/sentry_file.dart->/lib/src/sentry_io_overrides.dart + + + + + +/lib/src/sentry_io_overrides_integration.dart + +sentry_io_overrides_integration + + + +/lib/sentry_file.dart->/lib/src/sentry_io_overrides_integration.dart + + + + + +/lib/src/sentry_file_extension.dart + +sentry_file_extension + + + +/lib/sentry_file.dart->/lib/src/sentry_file_extension.dart + + + + + +/lib/src/version.dart + +version + + + +/lib/src/sentry_file.dart->/lib/src/version.dart + + + + + +/lib/src/sentry_io_overrides.dart->/lib/sentry_file.dart + + + + + +/lib/src/sentry_io_overrides_integration.dart->/lib/src/sentry_io_overrides.dart + + + + + +/lib/src/sentry_file_extension.dart->/lib/sentry_file.dart + + + + + diff --git a/flutter/class-diagram.svg b/flutter/class-diagram.svg new file mode 100644 index 0000000000..511429f7f8 --- /dev/null +++ b/flutter/class-diagram.svg @@ -0,0 +1,869 @@ + + + + + + + + +cluster~ + +flutter + + +cluster~/lib + +lib + + +cluster~/lib/src + +src + + +cluster~/lib/src/renderer + +renderer + + +cluster~/lib/src/screenshot + +screenshot + + +cluster~/lib/src/user_interaction + +user_interaction + + +cluster~/lib/src/event_processor + +event_processor + + +cluster~/lib/src/navigation + +navigation + + +cluster~/lib/src/view_hierarchy + +view_hierarchy + + +cluster~/lib/src/jvm + +jvm + + +cluster~/lib/src/native + +native + + +cluster~/lib/src/native/cocoa + +cocoa + + +cluster~/lib/src/integrations + +integrations + + + +/lib/sentry_flutter.dart + +sentry_flutter + + + +/lib/src/sentry_flutter.dart + +sentry_flutter + + + +/lib/sentry_flutter.dart->/lib/src/sentry_flutter.dart + + + + + +/lib/src/screenshot/sentry_screenshot_widget.dart + +sentry_screenshot_widget + + + +/lib/sentry_flutter.dart->/lib/src/screenshot/sentry_screenshot_widget.dart + + + + + +/lib/src/screenshot/sentry_screenshot_quality.dart + +sentry_screenshot_quality + + + +/lib/sentry_flutter.dart->/lib/src/screenshot/sentry_screenshot_quality.dart + + + + + +/lib/src/flutter_sentry_attachment.dart + +flutter_sentry_attachment + + + +/lib/sentry_flutter.dart->/lib/src/flutter_sentry_attachment.dart + + + + + +/lib/src/binding_wrapper.dart + +binding_wrapper + + + +/lib/sentry_flutter.dart->/lib/src/binding_wrapper.dart + + + + + +/lib/src/user_interaction/sentry_user_interaction_widget.dart + +sentry_user_interaction_widget + + + +/lib/sentry_flutter.dart->/lib/src/user_interaction/sentry_user_interaction_widget.dart + + + + + +/lib/src/sentry_asset_bundle.dart + +sentry_asset_bundle + + + +/lib/sentry_flutter.dart->/lib/src/sentry_asset_bundle.dart + + + + + +/lib/src/navigation/sentry_navigator_observer.dart + +sentry_navigator_observer + + + +/lib/sentry_flutter.dart->/lib/src/navigation/sentry_navigator_observer.dart + + + + + +/lib/src/sentry_flutter_options.dart + +sentry_flutter_options + + + +/lib/sentry_flutter.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/integrations/on_error_integration.dart + +on_error_integration + + + +/lib/sentry_flutter.dart->/lib/src/integrations/on_error_integration.dart + + + + + +/lib/src/integrations/load_release_integration.dart + +load_release_integration + + + +/lib/sentry_flutter.dart->/lib/src/integrations/load_release_integration.dart + + + + + +/lib/src/renderer/renderer.dart + +renderer + + + +/lib/src/renderer/unknown_renderer.dart + +unknown_renderer + + + +/lib/src/renderer/unknown_renderer.dart->/lib/src/renderer/renderer.dart + + + + + +/lib/src/renderer/io_renderer.dart + +io_renderer + + + +/lib/src/renderer/io_renderer.dart->/lib/src/renderer/renderer.dart + + + + + +/lib/src/renderer/html_renderer.dart + +html_renderer + + + +/lib/src/renderer/html_renderer.dart->/lib/src/renderer/renderer.dart + + + + + +/lib/src/version.dart + +version + + + +/lib/src/sentry_flutter.dart->/lib/sentry_flutter.dart + + + + + +/lib/src/sentry_flutter.dart->/lib/src/renderer/renderer.dart + + + + + +/lib/src/sentry_flutter.dart->/lib/src/version.dart + + + + + +/lib/src/file_system_transport.dart + +file_system_transport + + + +/lib/src/sentry_flutter.dart->/lib/src/file_system_transport.dart + + + + + +/lib/src/event_processor/flutter_exception_event_processor.dart + +flutter_exception_event_processor + + + +/lib/src/sentry_flutter.dart->/lib/src/event_processor/flutter_exception_event_processor.dart + + + + + +/lib/src/event_processor/flutter_enricher_event_processor.dart + +flutter_enricher_event_processor + + + +/lib/src/sentry_flutter.dart->/lib/src/event_processor/flutter_enricher_event_processor.dart + + + + + +/lib/src/event_processor/platform_exception_event_processor.dart + +platform_exception_event_processor + + + +/lib/src/sentry_flutter.dart->/lib/src/event_processor/platform_exception_event_processor.dart + + + + + +/lib/src/event_processor/android_platform_exception_event_processor.dart + +android_platform_exception_event_processor + + + +/lib/src/sentry_flutter.dart->/lib/src/event_processor/android_platform_exception_event_processor.dart + + + + + +/lib/src/view_hierarchy/view_hierarchy_integration.dart + +view_hierarchy_integration + + + +/lib/src/sentry_flutter.dart->/lib/src/view_hierarchy/view_hierarchy_integration.dart + + + + + +/lib/src/native/native_scope_observer.dart + +native_scope_observer + + + +/lib/src/sentry_flutter.dart->/lib/src/native/native_scope_observer.dart + + + + + +/lib/src/native/sentry_native_channel.dart + +sentry_native_channel + + + +/lib/src/sentry_flutter.dart->/lib/src/native/sentry_native_channel.dart + + + + + +/lib/src/native/sentry_native.dart + +sentry_native + + + +/lib/src/sentry_flutter.dart->/lib/src/native/sentry_native.dart + + + + + +/lib/src/integrations/screenshot_integration.dart + +screenshot_integration + + + +/lib/src/sentry_flutter.dart->/lib/src/integrations/screenshot_integration.dart + + + + + +/lib/src/integrations/integrations.dart + +integrations + + + +/lib/src/sentry_flutter.dart->/lib/src/integrations/integrations.dart + + + + + +/lib/src/binding_wrapper.dart->/lib/sentry_flutter.dart + + + + + +/lib/src/user_interaction/sentry_user_interaction_widget.dart->/lib/sentry_flutter.dart + + + + + +/lib/src/user_interaction/user_interaction_widget.dart + +user_interaction_widget + + + +/lib/src/user_interaction/sentry_user_interaction_widget.dart->/lib/src/user_interaction/user_interaction_widget.dart + + + + + +/lib/src/widget_utils.dart + +widget_utils + + + +/lib/src/user_interaction/sentry_user_interaction_widget.dart->/lib/src/widget_utils.dart + + + + + +/lib/src/event_processor/screenshot_event_processor.dart + +screenshot_event_processor + + + +/lib/src/event_processor/screenshot_event_processor.dart->/lib/src/renderer/renderer.dart + + + + + +/lib/src/event_processor/screenshot_event_processor.dart->/lib/src/screenshot/sentry_screenshot_widget.dart + + + + + +/lib/src/event_processor/screenshot_event_processor.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/event_processor/flutter_enricher_event_processor.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/event_processor/android_platform_exception_event_processor.dart->/lib/sentry_flutter.dart + + + + + +/lib/src/jvm/jvm_exception.dart + +jvm_exception + + + +/lib/src/event_processor/android_platform_exception_event_processor.dart->/lib/src/jvm/jvm_exception.dart + + + + + +/lib/src/jvm/jvm_frame.dart + +jvm_frame + + + +/lib/src/event_processor/android_platform_exception_event_processor.dart->/lib/src/jvm/jvm_frame.dart + + + + + +/lib/src/event_processor/native_app_start_event_processor.dart + +native_app_start_event_processor + + + +/lib/src/event_processor/native_app_start_event_processor.dart->/lib/src/native/sentry_native.dart + + + + + +/lib/src/navigation/sentry_navigator_observer.dart->/lib/sentry_flutter.dart + + + + + +/lib/src/navigation/sentry_navigator_observer.dart->/lib/src/native/sentry_native.dart + + + + + +/lib/src/sentry_flutter_options.dart->/lib/src/renderer/renderer.dart + + + + + +/lib/src/sentry_flutter_options.dart->/lib/src/screenshot/sentry_screenshot_quality.dart + + + + + +/lib/src/sentry_flutter_options.dart->/lib/src/binding_wrapper.dart + + + + + +/lib/src/widgets_binding_observer.dart + +widgets_binding_observer + + + +/lib/src/widgets_binding_observer.dart->/lib/sentry_flutter.dart + + + + + +/lib/src/view_hierarchy/view_hierarchy_integration.dart->/lib/sentry_flutter.dart + + + + + +/lib/src/view_hierarchy/view_hierarchy_event_processor.dart + +view_hierarchy_event_processor + + + +/lib/src/view_hierarchy/view_hierarchy_integration.dart->/lib/src/view_hierarchy/view_hierarchy_event_processor.dart + + + + + +/lib/src/view_hierarchy/sentry_tree_walker.dart + +sentry_tree_walker + + + +/lib/src/view_hierarchy/sentry_tree_walker.dart->/lib/sentry_flutter.dart + + + + + +/lib/src/view_hierarchy/sentry_tree_walker.dart->/lib/src/widget_utils.dart + + + + + +/lib/src/view_hierarchy/view_hierarchy_event_processor.dart->/lib/sentry_flutter.dart + + + + + +/lib/src/view_hierarchy/view_hierarchy_event_processor.dart->/lib/src/view_hierarchy/sentry_tree_walker.dart + + + + + +/lib/src/jvm/jvm_exception.dart->/lib/src/jvm/jvm_frame.dart + + + + + +/lib/src/native/method_channel_helper.dart + +method_channel_helper + + + +/lib/src/native/native_scope_observer.dart->/lib/src/native/sentry_native.dart + + + + + +/lib/src/native/sentry_native_channel.dart->/lib/sentry_flutter.dart + + + + + +/lib/src/native/sentry_native_channel.dart->/lib/src/native/method_channel_helper.dart + + + + + +/lib/src/native/sentry_native_channel.dart->/lib/src/native/sentry_native.dart + + + + + +/lib/src/native/sentry_native.dart->/lib/sentry_flutter.dart + + + + + +/lib/src/native/sentry_native.dart->/lib/src/native/sentry_native_channel.dart + + + + + +/lib/src/native/cocoa/binding.dart + +binding + + + +/lib/src/integrations/load_image_list_integration.dart + +load_image_list_integration + + + +/lib/src/integrations/load_image_list_integration.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/integrations/load_contexts_integration.dart + +load_contexts_integration + + + +/lib/src/integrations/load_contexts_integration.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/integrations/on_error_integration.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/integrations/widgets_binding_integration.dart + +widgets_binding_integration + + + +/lib/src/integrations/widgets_binding_integration.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/integrations/widgets_binding_integration.dart->/lib/src/widgets_binding_observer.dart + + + + + +/lib/src/integrations/native_app_start_integration.dart + +native_app_start_integration + + + +/lib/src/integrations/native_app_start_integration.dart->/lib/src/event_processor/native_app_start_event_processor.dart + + + + + +/lib/src/integrations/native_app_start_integration.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/integrations/native_app_start_integration.dart->/lib/src/native/sentry_native.dart + + + + + +/lib/src/integrations/load_release_integration.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/integrations/flutter_error_integration.dart + +flutter_error_integration + + + +/lib/src/integrations/flutter_error_integration.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/integrations/debug_print_integration.dart + +debug_print_integration + + + +/lib/src/integrations/debug_print_integration.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/integrations/screenshot_integration.dart->/lib/src/event_processor/screenshot_event_processor.dart + + + + + +/lib/src/integrations/screenshot_integration.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/integrations/integrations.dart->/lib/src/integrations/load_image_list_integration.dart + + + + + +/lib/src/integrations/integrations.dart->/lib/src/integrations/load_contexts_integration.dart + + + + + +/lib/src/integrations/integrations.dart->/lib/src/integrations/on_error_integration.dart + + + + + +/lib/src/integrations/integrations.dart->/lib/src/integrations/widgets_binding_integration.dart + + + + + +/lib/src/integrations/integrations.dart->/lib/src/integrations/native_app_start_integration.dart + + + + + +/lib/src/integrations/integrations.dart->/lib/src/integrations/load_release_integration.dart + + + + + +/lib/src/integrations/integrations.dart->/lib/src/integrations/flutter_error_integration.dart + + + + + +/lib/src/integrations/integrations.dart->/lib/src/integrations/debug_print_integration.dart + + + + + +/lib/src/integrations/widgets_flutter_binding_integration.dart + +widgets_flutter_binding_integration + + + +/lib/src/integrations/integrations.dart->/lib/src/integrations/widgets_flutter_binding_integration.dart + + + + + +/lib/src/integrations/native_sdk_integration.dart + +native_sdk_integration + + + +/lib/src/integrations/integrations.dart->/lib/src/integrations/native_sdk_integration.dart + + + + + +/lib/src/integrations/widgets_flutter_binding_integration.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/src/integrations/native_sdk_integration.dart->/lib/src/sentry_flutter_options.dart + + + + + +/lib/sentry_flutter_web.dart + +sentry_flutter_web + + + diff --git a/logging/class-diagram.svg b/logging/class-diagram.svg new file mode 100644 index 0000000000..327f533953 --- /dev/null +++ b/logging/class-diagram.svg @@ -0,0 +1,69 @@ + + + + + + + + +cluster~ + +logging + + +cluster~/lib + +lib + + +cluster~/lib/src + +src + + + +/lib/src/version.dart + +version + + + +/lib/src/logging_integration.dart + +logging_integration + + + +/lib/src/logging_integration.dart->/lib/src/version.dart + + + + + +/lib/src/extension.dart + +extension + + + +/lib/src/logging_integration.dart->/lib/src/extension.dart + + + + + +/lib/sentry_logging.dart + +sentry_logging + + + +/lib/sentry_logging.dart->/lib/src/logging_integration.dart + + + + + diff --git a/scripts/commit-formatted-code.sh b/scripts/commit-code.sh similarity index 67% rename from scripts/commit-formatted-code.sh rename to scripts/commit-code.sh index 8f77921ceb..b3c1ad9914 100755 --- a/scripts/commit-formatted-code.sh +++ b/scripts/commit-code.sh @@ -2,15 +2,16 @@ set -euo pipefail GITHUB_BRANCH="${1}" +COMMIT_MESSAGE="${2}" if [[ $(git status) == *"nothing to commit"* ]]; then - echo "Nothing to commit. All code formatted correctly." + echo "Nothing to commit." else - echo "Formatted some code. Going to push the changes." + echo "Changed some code. Going to push the changes." git config --global user.name 'Sentry Github Bot' git config --global user.email 'bot+github-bot@sentry.io' git fetch git checkout ${GITHUB_BRANCH} - git commit -am "Format & fix code" + git commit -am "${COMMIT_MESSAGE}" git push --set-upstream origin ${GITHUB_BRANCH} fi diff --git a/sqflite/class-diagram.svg b/sqflite/class-diagram.svg new file mode 100644 index 0000000000..882e930afe --- /dev/null +++ b/sqflite/class-diagram.svg @@ -0,0 +1,194 @@ + + + + + + + + +cluster~ + +sqflite + + +cluster~/lib + +lib + + +cluster~/lib/src + +src + + +cluster~/lib/src/utils + +utils + + + +/lib/src/version.dart + +version + + + +/lib/src/sentry_database.dart + +sentry_database + + + +/lib/src/sentry_database.dart->/lib/src/version.dart + + + + + +/lib/src/sentry_database_executor.dart + +sentry_database_executor + + + +/lib/src/sentry_database.dart->/lib/src/sentry_database_executor.dart + + + + + +/lib/src/utils/sentry_database_span_attributes.dart + +sentry_database_span_attributes + + + +/lib/src/sentry_database.dart->/lib/src/utils/sentry_database_span_attributes.dart + + + + + +/lib/src/sentry_sqflite_transaction.dart + +sentry_sqflite_transaction + + + +/lib/src/sentry_database.dart->/lib/src/sentry_sqflite_transaction.dart + + + + + +/lib/src/sentry_batch.dart + +sentry_batch + + + +/lib/src/sentry_batch.dart->/lib/src/sentry_database.dart + + + + + +/lib/src/sentry_batch.dart->/lib/src/utils/sentry_database_span_attributes.dart + + + + + +/lib/src/sentry_database_executor.dart->/lib/src/sentry_database.dart + + + + + +/lib/src/sentry_database_executor.dart->/lib/src/sentry_batch.dart + + + + + +/lib/src/sentry_database_executor.dart->/lib/src/utils/sentry_database_span_attributes.dart + + + + + +/lib/src/sentry_sqflite_database_factory.dart + +sentry_sqflite_database_factory + + + +/lib/src/sentry_sqflite_database_factory.dart->/lib/src/sentry_database.dart + + + + + +/lib/src/sentry_sqflite.dart + +sentry_sqflite + + + +/lib/src/sentry_sqflite.dart->/lib/src/sentry_database.dart + + + + + +/lib/sentry_sqflite.dart + +sentry_sqflite + + + +/lib/src/utils/sentry_database_span_attributes.dart->/lib/sentry_sqflite.dart + + + + + +/lib/src/sentry_sqflite_transaction.dart->/lib/src/sentry_batch.dart + + + + + +/lib/sentry_sqflite.dart->/lib/src/sentry_database.dart + + + + + +/lib/sentry_sqflite.dart->/lib/src/sentry_batch.dart + + + + + +/lib/sentry_sqflite.dart->/lib/src/sentry_sqflite_database_factory.dart + + + + + +/lib/sentry_sqflite.dart->/lib/src/sentry_sqflite.dart + + + + + +/lib/sentry_sqflite.dart->/lib/src/sentry_sqflite_transaction.dart + + + + + From 2211a404b20307bd6264e00fc7f3a7216041ff70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 9 Oct 2023 08:01:39 +0000 Subject: [PATCH 031/166] Rename `options.devMode` to `options.automatedTestMode` (#1664) --- dart/lib/src/hub.dart | 4 +- dart/lib/src/scope.dart | 4 +- dart/lib/src/sentry.dart | 2 +- dart/lib/src/sentry_client.dart | 4 +- dart/lib/src/sentry_options.dart | 4 +- dart/lib/src/sentry_traces_sampler.dart | 2 +- dart/test/environment_test.dart | 4 +- .../deduplication_event_processor_test.dart | 2 +- .../enricher/io_enricher_test.dart | 2 +- dart/test/initialization_test.dart | 4 +- dart/test/sentry_test.dart | 40 +++++++++---------- e2e_test/bin/e2e_test.dart | 2 +- flutter/test/initialization_test.dart | 8 ++-- flutter/test/sentry_flutter_test.dart | 28 ++++++------- 14 files changed, 55 insertions(+), 55 deletions(-) diff --git a/dart/lib/src/hub.dart b/dart/lib/src/hub.dart index 855f2b9438..2693996d2a 100644 --- a/dart/lib/src/hub.dart +++ b/dart/lib/src/hub.dart @@ -277,7 +277,7 @@ class Hub { exception: exception, stackTrace: stackTrace, ); - if (_options.devMode) { + if (_options.automatedTestMode) { rethrow; } } @@ -377,7 +377,7 @@ class Hub { SentryLevel.error, "Error in the 'configureScope' callback, error: $err", ); - if (_options.devMode) { + if (_options.automatedTestMode) { rethrow; } } diff --git a/dart/lib/src/scope.dart b/dart/lib/src/scope.dart index 0a63badc92..4f36895131 100644 --- a/dart/lib/src/scope.dart +++ b/dart/lib/src/scope.dart @@ -178,7 +178,7 @@ class Scope { exception: exception, stackTrace: stackTrace, ); - if (_options.devMode) { + if (_options.automatedTestMode) { rethrow; } } @@ -345,7 +345,7 @@ class Scope { exception: exception, stackTrace: stackTrace, ); - if (_options.devMode) { + if (_options.automatedTestMode) { rethrow; } } diff --git a/dart/lib/src/sentry.dart b/dart/lib/src/sentry.dart index b3ec82ce10..88fdd42996 100644 --- a/dart/lib/src/sentry.dart +++ b/dart/lib/src/sentry.dart @@ -58,7 +58,7 @@ class Sentry { exception: exception, stackTrace: stackTrace, ); - if (sentryOptions.devMode) { + if (sentryOptions.automatedTestMode) { rethrow; } } diff --git a/dart/lib/src/sentry_client.dart b/dart/lib/src/sentry_client.dart index a2af9c47b2..b3508db4d1 100644 --- a/dart/lib/src/sentry_client.dart +++ b/dart/lib/src/sentry_client.dart @@ -401,7 +401,7 @@ class SentryClient { exception: exception, stackTrace: stackTrace, ); - if (_options.devMode) { + if (_options.automatedTestMode) { rethrow; } } @@ -438,7 +438,7 @@ class SentryClient { exception: exception, stackTrace: stackTrace, ); - if (_options.devMode) { + if (_options.automatedTestMode) { rethrow; } } diff --git a/dart/lib/src/sentry_options.dart b/dart/lib/src/sentry_options.dart index 55450be9dd..76d3365386 100644 --- a/dart/lib/src/sentry_options.dart +++ b/dart/lib/src/sentry_options.dart @@ -353,10 +353,10 @@ class SentryOptions { /// are set. bool? enableTracing; - /// Changed SDK behaviour when set to true: + /// Only for internal use. Changed SDK behaviour when set to true: /// - Rethrow exceptions that occur in user provided closures @internal - bool devMode = false; + bool automatedTestMode = false; SentryOptions({this.dsn, PlatformChecker? checker}) { if (checker != null) { diff --git a/dart/lib/src/sentry_traces_sampler.dart b/dart/lib/src/sentry_traces_sampler.dart index 62d94dc339..06ab2edcea 100644 --- a/dart/lib/src/sentry_traces_sampler.dart +++ b/dart/lib/src/sentry_traces_sampler.dart @@ -40,7 +40,7 @@ class SentryTracesSampler { exception: exception, stackTrace: stackTrace, ); - if (_options.devMode) { + if (_options.automatedTestMode) { rethrow; } } diff --git a/dart/test/environment_test.dart b/dart/test/environment_test.dart index 6a409022c5..e4bf97fea7 100644 --- a/dart/test/environment_test.dart +++ b/dart/test/environment_test.dart @@ -23,7 +23,7 @@ void main() { release: 'release-9.8.7', dist: 'bar', ); - options.devMode = true; + options.automatedTestMode = true; await Sentry.init( (options) => options, @@ -44,7 +44,7 @@ void main() { release: 'release-9.8.7', dist: 'bar', ); - options.devMode = true; + options.automatedTestMode = true; await Sentry.init( (options) => options, diff --git a/dart/test/event_processor/deduplication_event_processor_test.dart b/dart/test/event_processor/deduplication_event_processor_test.dart index 47540cf035..54592351bb 100644 --- a/dart/test/event_processor/deduplication_event_processor_test.dart +++ b/dart/test/event_processor/deduplication_event_processor_test.dart @@ -77,7 +77,7 @@ void main() { final transport = MockTransport(); - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( (options) { options.dsn = fakeDsn; diff --git a/dart/test/event_processor/enricher/io_enricher_test.dart b/dart/test/event_processor/enricher/io_enricher_test.dart index eb4a821de7..1704960edc 100644 --- a/dart/test/event_processor/enricher/io_enricher_test.dart +++ b/dart/test/event_processor/enricher/io_enricher_test.dart @@ -159,7 +159,7 @@ void main() { }); test('$IoEnricherEventProcessor gets added on init', () async { - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; late SentryOptions configuredOptions; await Sentry.init( (options) { diff --git a/dart/test/initialization_test.dart b/dart/test/initialization_test.dart index fae9f26e82..7eb8c15265 100644 --- a/dart/test/initialization_test.dart +++ b/dart/test/initialization_test.dart @@ -14,7 +14,7 @@ void main() { }); test('async re-initilization', () async { - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( (options) { options.dsn = fakeDsn; @@ -35,7 +35,7 @@ void main() { // This is the failure from // https://github.com/getsentry/sentry-dart/issues/508 test('re-initilization', () async { - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( (options) { options.dsn = fakeDsn; diff --git a/dart/test/sentry_test.dart b/dart/test/sentry_test.dart index 2705f23161..b041f19527 100644 --- a/dart/test/sentry_test.dart +++ b/dart/test/sentry_test.dart @@ -18,7 +18,7 @@ void main() { var anException = Exception(); setUp(() async { - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( options: options, (options) => { @@ -137,7 +137,7 @@ void main() { }); test('null DSN', () async { - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; expect( () async => await Sentry.init( options: options, @@ -150,7 +150,7 @@ void main() { test('appRunner should be optional', () async { expect(Sentry.isEnabled, false); - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( options: options, (options) => options.dsn = fakeDsn, @@ -159,7 +159,7 @@ void main() { }); test('empty DSN', () async { - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( options: options, (options) => options.dsn = '', @@ -170,7 +170,7 @@ void main() { test('empty DSN disables the SDK but runs the integrations', () async { final integration = MockIntegration(); - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( options: options, (options) { @@ -183,7 +183,7 @@ void main() { }); test('close disables the SDK', () async { - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( options: options, (options) => options.dsn = fakeDsn, @@ -207,7 +207,7 @@ void main() { test('should install integrations', () async { final integration = MockIntegration(); - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( options: options, (options) { @@ -221,7 +221,7 @@ void main() { test('should add default integrations', () async { late SentryOptions optionsReference; - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( options: options, (options) { @@ -245,7 +245,7 @@ void main() { }, onPlatform: {'browser': Skip()}); test('should add only web compatible default integrations', () async { - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( options: options, (options) { @@ -261,7 +261,7 @@ void main() { test('should close integrations', () async { final integration = MockIntegration(); - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( options: options, (options) { @@ -277,7 +277,7 @@ void main() { }); test('$DeduplicationEventProcessor is added on init', () async { - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; await Sentry.init( options: options, (options) { @@ -294,7 +294,7 @@ void main() { final completer = Completer(); var completed = false; - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; final init = Sentry.init( options: options, (options) { @@ -321,7 +321,7 @@ void main() { final completer = Completer(); var completed = false; - final options = SentryOptions(dsn: fakeDsn)..devMode = true; + final options = SentryOptions(dsn: fakeDsn)..automatedTestMode = true; final init = Sentry.init( options: options, (options) { @@ -345,11 +345,11 @@ void main() { test('options.environment debug', () async { final sentryOptions = SentryOptions(dsn: fakeDsn) - ..devMode = true + ..automatedTestMode = true ..platformChecker = FakePlatformChecker.debugMode(); final options = SentryOptions(); - options.devMode = true; + options.automatedTestMode = true; await Sentry.init( (options) { options.dsn = fakeDsn; @@ -363,7 +363,7 @@ void main() { test('options.environment profile', () async { final sentryOptions = SentryOptions(dsn: fakeDsn, checker: FakePlatformChecker.profileMode()) - ..devMode = true; + ..automatedTestMode = true; await Sentry.init( (options) { @@ -378,7 +378,7 @@ void main() { test('options.environment production (defaultEnvironment)', () async { final sentryOptions = SentryOptions(dsn: fakeDsn, checker: FakePlatformChecker.releaseMode()) - ..devMode = true; + ..automatedTestMode = true; await Sentry.init( (options) { options.dsn = fakeDsn; @@ -392,7 +392,7 @@ void main() { test('options.logger is set by setting the debug flag', () async { final sentryOptions = SentryOptions(dsn: fakeDsn, checker: FakePlatformChecker.debugMode()) - ..devMode = true; + ..automatedTestMode = true; await Sentry.init( (options) { @@ -417,7 +417,7 @@ void main() { test('throw is handled and logged', () async { final sentryOptions = SentryOptions(dsn: fakeDsn) - ..devMode = false + ..automatedTestMode = false ..debug = true ..logger = fixture.mockLogger; @@ -439,7 +439,7 @@ void main() { test('throw is handled and logged', () async { final sentryOptions = SentryOptions(dsn: fakeDsn) - ..devMode = false + ..automatedTestMode = false ..debug = true ..logger = fixture.mockLogger; diff --git a/e2e_test/bin/e2e_test.dart b/e2e_test/bin/e2e_test.dart index 785f98ea72..d8d315c5e3 100644 --- a/e2e_test/bin/e2e_test.dart +++ b/e2e_test/bin/e2e_test.dart @@ -20,7 +20,7 @@ void main(List arguments) async { } final options = SentryOptions(dsn: _exampleDsn) // ignore: invalid_use_of_internal_member - ..devMode = true; + ..automatedTestMode = true; await Sentry.init( (options) { options.dsn = _exampleDsn; diff --git a/flutter/test/initialization_test.dart b/flutter/test/initialization_test.dart index cf1374df37..29d5e42c96 100644 --- a/flutter/test/initialization_test.dart +++ b/flutter/test/initialization_test.dart @@ -18,7 +18,7 @@ void main() { (options) { options.dsn = fakeDsn; // ignore: invalid_use_of_internal_member - options.devMode = true; + options.automatedTestMode = true; }, ); @@ -28,7 +28,7 @@ void main() { (options) { options.dsn = fakeDsn; // ignore: invalid_use_of_internal_member - options.devMode = true; + options.automatedTestMode = true; }, ); @@ -42,7 +42,7 @@ void main() { (options) { options.dsn = fakeDsn; // ignore: invalid_use_of_internal_member - options.devMode = true; + options.automatedTestMode = true; }, ); @@ -52,7 +52,7 @@ void main() { (options) { options.dsn = fakeDsn; // ignore: invalid_use_of_internal_member - options.devMode = true; + options.automatedTestMode = true; }, ); diff --git a/flutter/test/sentry_flutter_test.dart b/flutter/test/sentry_flutter_test.dart index 4621ae3b7f..b800d18c8d 100644 --- a/flutter/test/sentry_flutter_test.dart +++ b/flutter/test/sentry_flutter_test.dart @@ -64,7 +64,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -112,7 +112,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -158,7 +158,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -204,7 +204,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -253,7 +253,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -302,7 +302,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -353,7 +353,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; transport = options.transport; }, @@ -397,7 +397,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; transport = options.transport; }, @@ -440,7 +440,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; transport = options.transport; }, @@ -487,7 +487,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; }, appRunner: appRunner, @@ -510,7 +510,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; }, appRunner: appRunner, @@ -533,7 +533,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; }, appRunner: appRunner, @@ -556,7 +556,7 @@ void main() { await SentryFlutter.init( (options) async { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; integrations = options.integrations; }, appRunner: appRunner, @@ -584,7 +584,7 @@ void main() { await SentryFlutter.init( (options) { options.dsn = fakeDsn; - options.devMode = true; + options.automatedTestMode = true; expect(false, options.debug); expect('debug', options.environment); From 9d05a053d54f666f4f390fe9e42d354e095cf513 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 12:24:59 +0200 Subject: [PATCH 032/166] chore: update flutter/scripts/update-cocoa.sh to 8.13.1 (#1677) Co-authored-by: GitHub --- CHANGELOG.md | 6 +++--- flutter/ios/sentry_flutter.podspec | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 462af5d11e..95b3660587 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,9 +9,9 @@ ### Dependencies - Enable compatibility with uuid v4 ([#1647](https://github.com/getsentry/sentry-dart/pull/1647)) -- Bump Cocoa SDK from v8.11.0 to v8.13.0 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650), [#1655](https://github.com/getsentry/sentry-dart/pull/1655)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8130) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.13.0) +- Bump Cocoa SDK from v8.11.0 to v8.13.1 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650), [#1655](https://github.com/getsentry/sentry-dart/pull/1655), [#1677](https://github.com/getsentry/sentry-dart/pull/1677)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8131) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.13.1) - Bump Android SDK from v6.29.0 to v6.30.0 ([#1660](https://github.com/getsentry/sentry-dart/pull/1660)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6300) - [diff](https://github.com/getsentry/sentry-java/compare/6.29.0...6.30.0) diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 063a35bc26..83c35b7f0e 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.13.0' + s.dependency 'Sentry/HybridSDK', '8.13.1' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' From 1a938255a9c0a1073ccebbdb23a70ea2d435013e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 10:42:40 +0000 Subject: [PATCH 033/166] chore: update flutter/scripts/update-android.sh to 6.31.0 (#1676) --- CHANGELOG.md | 6 +++--- flutter/android/build.gradle | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95b3660587..11707b1d57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,12 +9,12 @@ ### Dependencies - Enable compatibility with uuid v4 ([#1647](https://github.com/getsentry/sentry-dart/pull/1647)) +- Bump Android SDK from v6.29.0 to v6.31.0 ([#1660](https://github.com/getsentry/sentry-dart/pull/1660), [#1676](https://github.com/getsentry/sentry-dart/pull/1676)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6310) + - [diff](https://github.com/getsentry/sentry-java/compare/6.29.0...6.31.0) - Bump Cocoa SDK from v8.11.0 to v8.13.1 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650), [#1655](https://github.com/getsentry/sentry-dart/pull/1655), [#1677](https://github.com/getsentry/sentry-dart/pull/1677)) - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8131) - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.13.1) -- Bump Android SDK from v6.29.0 to v6.30.0 ([#1660](https://github.com/getsentry/sentry-dart/pull/1660)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6300) - - [diff](https://github.com/getsentry/sentry-java/compare/6.29.0...6.30.0) ## 7.10.1 diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index 02368c3389..e092f5fd54 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -60,7 +60,7 @@ android { } dependencies { - api 'io.sentry:sentry-android:6.30.0' + api 'io.sentry:sentry-android:6.31.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // Required -- JUnit 4 framework From daa1b330099908feace526008680693a69587afc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 13:08:04 +0200 Subject: [PATCH 034/166] chore: update metrics/flutter.properties to 3.13.7 (#1674) Co-authored-by: GitHub --- metrics/flutter.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/flutter.properties b/metrics/flutter.properties index 0e98ad233b..e596e3de52 100644 --- a/metrics/flutter.properties +++ b/metrics/flutter.properties @@ -1,2 +1,2 @@ -version = 3.13.6 +version = 3.13.7 repo = https://github.com/flutter/flutter From 2ba6efd3e22499737b24ed32c4c601517672b656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 17 Oct 2023 14:44:33 +0000 Subject: [PATCH 035/166] Add dependabot (#1670) --- .github/dependabot.yml | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..adc2cfb3a7 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,48 @@ +version: 2 +updates: + - package-ecosystem: pub + directory: /dart + schedule: + interval: weekly + open-pull-requests-limit: 2 + versioning-strategy: increase-if-necessary + + - package-ecosystem: pub + directory: /flutter + schedule: + interval: weekly + open-pull-requests-limit: 2 + versioning-strategy: increase-if-necessary + + - package-ecosystem: pub + directory: /dio + schedule: + interval: weekly + open-pull-requests-limit: 2 + versioning-strategy: increase-if-necessary + + - package-ecosystem: pub + directory: /file + schedule: + interval: weekly + open-pull-requests-limit: 2 + versioning-strategy: increase-if-necessary + + - package-ecosystem: pub + directory: /logging + schedule: + interval: weekly + open-pull-requests-limit: 2 + versioning-strategy: increase-if-necessary + + - package-ecosystem: pub + directory: /sqflite + schedule: + interval: weekly + open-pull-requests-limit: 2 + versioning-strategy: increase-if-necessary + + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly From dfa585e957213b679f308c2f4e2f26de67904edc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Oct 2023 11:37:56 +0200 Subject: [PATCH 036/166] Bump codecov/codecov-action from 3.1.1 to 3.1.4 (#1680) --- .github/workflows/dart.yml | 2 +- .github/workflows/dio.yml | 2 +- .github/workflows/file.yml | 2 +- .github/workflows/flutter.yml | 2 +- .github/workflows/logging.yml | 2 +- .github/workflows/sqflite.yml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 3971ee75bb..2980445098 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -69,7 +69,7 @@ jobs: dart pub get webdev build - - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # pin@v3 + - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index b501067224..421579cb40 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # pin@v3 + - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_dio diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 81a6e5abec..52f77ede51 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -51,7 +51,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # pin@v3 + - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_file diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 68237980f7..90784f4c2e 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -104,7 +104,7 @@ jobs: cd flutter flutter test --coverage --test-randomize-ordering-seed=random - - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # pin@v3 + - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_flutter diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index a393dfe570..bf2bcbb59a 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # pin@v3 + - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_logging diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 5bfd63c666..4d0f62ee10 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -93,7 +93,7 @@ jobs: cd sqflite flutter test --coverage --test-randomize-ordering-seed=random - - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # pin@v3 + - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_sqflite From 64e4616c0444f9dd46605b79140797623a76b10b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 20 Oct 2023 11:51:30 +0000 Subject: [PATCH 037/166] chore: update flutter/scripts/update-android.sh to 6.32.0 (#1688) Co-authored-by: GitHub --- CHANGELOG.md | 6 +++--- flutter/android/build.gradle | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11707b1d57..4f6ee6c995 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,9 +9,9 @@ ### Dependencies - Enable compatibility with uuid v4 ([#1647](https://github.com/getsentry/sentry-dart/pull/1647)) -- Bump Android SDK from v6.29.0 to v6.31.0 ([#1660](https://github.com/getsentry/sentry-dart/pull/1660), [#1676](https://github.com/getsentry/sentry-dart/pull/1676)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6310) - - [diff](https://github.com/getsentry/sentry-java/compare/6.29.0...6.31.0) +- Bump Android SDK from v6.29.0 to v6.32.0 ([#1660](https://github.com/getsentry/sentry-dart/pull/1660), [#1676](https://github.com/getsentry/sentry-dart/pull/1676), [#1688](https://github.com/getsentry/sentry-dart/pull/1688)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6320) + - [diff](https://github.com/getsentry/sentry-java/compare/6.29.0...6.32.0) - Bump Cocoa SDK from v8.11.0 to v8.13.1 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650), [#1655](https://github.com/getsentry/sentry-dart/pull/1655), [#1677](https://github.com/getsentry/sentry-dart/pull/1677)) - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8131) - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.13.1) diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index e092f5fd54..f33a8d465e 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -60,7 +60,7 @@ android { } dependencies { - api 'io.sentry:sentry-android:6.31.0' + api 'io.sentry:sentry-android:6.32.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // Required -- JUnit 4 framework From f83bc1d235973d25cb628df973083f4093ed5282 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 10:08:10 +0000 Subject: [PATCH 038/166] chore(deps): update Cocoa SDK to v8.14.2 (#1691) * chore: update flutter/scripts/update-cocoa.sh to 8.14.2 --------- Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor --- CHANGELOG.md | 6 +++--- dio/pubspec.yaml | 2 +- flutter/ios/sentry_flutter.podspec | 2 +- logging/pubspec.yaml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f6ee6c995..9ac863594f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,9 +12,9 @@ - Bump Android SDK from v6.29.0 to v6.32.0 ([#1660](https://github.com/getsentry/sentry-dart/pull/1660), [#1676](https://github.com/getsentry/sentry-dart/pull/1676), [#1688](https://github.com/getsentry/sentry-dart/pull/1688)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6320) - [diff](https://github.com/getsentry/sentry-java/compare/6.29.0...6.32.0) -- Bump Cocoa SDK from v8.11.0 to v8.13.1 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650), [#1655](https://github.com/getsentry/sentry-dart/pull/1655), [#1677](https://github.com/getsentry/sentry-dart/pull/1677)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8131) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.13.1) +- Bump Cocoa SDK from v8.11.0 to v8.14.2 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650), [#1655](https://github.com/getsentry/sentry-dart/pull/1655), [#1677](https://github.com/getsentry/sentry-dart/pull/1677), [#1691](https://github.com/getsentry/sentry-dart/pull/1691)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8142) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.14.2) ## 7.10.1 diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index 56e5102e60..ce7a826218 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -4,7 +4,7 @@ version: 7.10.1 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues -documentation: https://docs.sentry.io/platforms/dart/configuration/integrations/dio/ +documentation: https://docs.sentry.io/platforms/dart/integrations/dio/ environment: sdk: '>=2.17.0 <4.0.0' diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 83c35b7f0e..b6df0830f7 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.13.1' + s.dependency 'Sentry/HybridSDK', '8.14.2' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index a9394bc92c..5deb649563 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -4,7 +4,7 @@ version: 7.10.1 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues -documentation: https://docs.sentry.io/platforms/dart/configuration/integrations/logging/ +documentation: https://docs.sentry.io/platforms/dart/integrations/logging/ environment: sdk: '>=2.17.0 <4.0.0' From edb78ed692daee1ab693122e32facf7e96c795db Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Tue, 24 Oct 2023 12:58:05 +0000 Subject: [PATCH 039/166] chore: update changelog (#1699) * Update changelog --- CHANGELOG.md | 4 ++++ logging/example/sentry_logging_example.dart | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ac863594f..60f43591bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Fixes + +- Session: missing mechanism.handled is considered crash ([#3353](https://github.com/getsentry/sentry-cocoa/pull/3353)) + ### Features - Breadcrumbs for file I/O operations ([#1649](https://github.com/getsentry/sentry-dart/pull/1649)) diff --git a/logging/example/sentry_logging_example.dart b/logging/example/sentry_logging_example.dart index 408c40d799..d7b1713e44 100644 --- a/logging/example/sentry_logging_example.dart +++ b/logging/example/sentry_logging_example.dart @@ -20,7 +20,7 @@ Future main() async { Future runApp() async { final log = Logger('MyAwesomeLogger'); - log.warning('a warning!'); + log.warning('this is a warning!'); try { throw Exception(); From 6d1740057edb4eabcb6d791061efabf2fd58a8ea Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 24 Oct 2023 12:59:45 +0000 Subject: [PATCH 040/166] release: 7.11.0 --- CHANGELOG.md | 2 +- dart/lib/src/version.dart | 2 +- dart/pubspec.yaml | 2 +- dio/lib/src/version.dart | 2 +- dio/pubspec.yaml | 4 ++-- file/lib/src/version.dart | 2 +- file/pubspec.yaml | 4 ++-- flutter/example/pubspec.yaml | 2 +- flutter/lib/src/version.dart | 2 +- flutter/pubspec.yaml | 4 ++-- logging/lib/src/version.dart | 2 +- logging/pubspec.yaml | 4 ++-- sqflite/lib/src/version.dart | 2 +- sqflite/pubspec.yaml | 4 ++-- 14 files changed, 19 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60f43591bf..3629b48f9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 7.11.0 ### Fixes diff --git a/dart/lib/src/version.dart b/dart/lib/src/version.dart index 800985f3d8..01770638e4 100644 --- a/dart/lib/src/version.dart +++ b/dart/lib/src/version.dart @@ -9,7 +9,7 @@ library version; /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.10.1'; +const String sdkVersion = '7.11.0'; String sdkName(bool isWeb) => isWeb ? _browserSdkName : _ioSdkName; diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index c15a87b971..7520a9004d 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry -version: 7.10.1 +version: 7.11.0 description: > A crash reporting library for Dart that sends crash reports to Sentry.io. This library supports Dart VM and Web. For Flutter consider sentry_flutter instead. diff --git a/dio/lib/src/version.dart b/dio/lib/src/version.dart index d16c3cf6a8..78933e14bd 100644 --- a/dio/lib/src/version.dart +++ b/dio/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.10.1'; +const String sdkVersion = '7.11.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_dio'; diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index ce7a826218..b58d05b734 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_dio description: An integration which adds support for performance tracing for the Dio package. -version: 7.10.1 +version: 7.11.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: dio: ^5.0.0 - sentry: 7.10.1 + sentry: 7.11.0 dev_dependencies: meta: ^1.3.0 diff --git a/file/lib/src/version.dart b/file/lib/src/version.dart index 683b74ef18..bb9a0d32ea 100644 --- a/file/lib/src/version.dart +++ b/file/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.10.1'; +const String sdkVersion = '7.11.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_file'; diff --git a/file/pubspec.yaml b/file/pubspec.yaml index 1fd8ccf5d8..bd64c11ebc 100644 --- a/file/pubspec.yaml +++ b/file/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_file description: An integration which adds support for performance tracing for dart.io.File. -version: 7.10.1 +version: 7.11.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: sdk: '>=2.19.0 <4.0.0' dependencies: - sentry: 7.10.1 + sentry: 7.11.0 meta: ^1.3.0 dev_dependencies: diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index c4596f70b8..5331b8d0de 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_flutter_example description: Demonstrates how to use the sentry_flutter plugin. -version: 7.10.1 +version: 7.11.0 publish_to: 'none' # Remove this line if you wish to publish to pub.dev diff --git a/flutter/lib/src/version.dart b/flutter/lib/src/version.dart index 1937f65d8e..b9ce8ac76a 100644 --- a/flutter/lib/src/version.dart +++ b/flutter/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.10.1'; +const String sdkVersion = '7.11.0'; /// The default SDK name reported to Sentry.io in the submitted events. const String sdkName = 'sentry.dart.flutter'; diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 89e79196a2..33a233de90 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry_flutter -version: 7.10.1 +version: 7.11.0 description: Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supported by Sentry with native SDKs. homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart @@ -15,7 +15,7 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - sentry: 7.10.1 + sentry: 7.11.0 package_info_plus: '>=1.0.0 <5.0.0' meta: ^1.3.0 ffi: ^2.0.0 diff --git a/logging/lib/src/version.dart b/logging/lib/src/version.dart index f0f9621f37..e1ceffa3c4 100644 --- a/logging/lib/src/version.dart +++ b/logging/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.10.1'; +const String sdkVersion = '7.11.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_logging'; diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index 5deb649563..0a28842c0f 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_logging description: An integration which adds support for recording log from the logging package. -version: 7.10.1 +version: 7.11.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: logging: ^1.0.0 - sentry: 7.10.1 + sentry: 7.11.0 dev_dependencies: lints: ^2.0.0 diff --git a/sqflite/lib/src/version.dart b/sqflite/lib/src/version.dart index a32be0b273..7b6a54019e 100644 --- a/sqflite/lib/src/version.dart +++ b/sqflite/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.10.1'; +const String sdkVersion = '7.11.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_sqflite'; diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index 8f1b5ba006..6247f1613e 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_sqflite description: An integration which adds support for performance tracing for the sqflite package. -version: 7.10.1 +version: 7.11.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' # matching sqflite dependencies: - sentry: 7.10.1 + sentry: 7.11.0 sqflite: ^2.0.0 sqflite_common: ^2.0.0 meta: ^1.3.0 From 583711ddc6eedac2d5897c59b8ffd8385bdd750f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 08:21:43 +0000 Subject: [PATCH 041/166] Bump lints from 2.1.1 to 3.0.0 in /sqflite (#1697) Bumps [lints](https://github.com/dart-lang/lints) from 2.1.1 to 3.0.0. - [Release notes](https://github.com/dart-lang/lints/releases) - [Changelog](https://github.com/dart-lang/lints/blob/main/CHANGELOG.md) - [Commits](https://github.com/dart-lang/lints/compare/v2.1.1...v3.0.0) --- updated-dependencies: - dependency-name: lints dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- sqflite/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index 6247f1613e..9b43b24ccf 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -17,7 +17,7 @@ dependencies: path: ^1.8.3 dev_dependencies: - lints: ^2.0.0 + lints: ^3.0.0 flutter_test: sdk: flutter coverage: ^1.3.0 From 5e612d503f9513505d9259d59b5405501821f294 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 08:22:12 +0000 Subject: [PATCH 042/166] Bump lints from 2.1.1 to 3.0.0 in /logging (#1696) Bumps [lints](https://github.com/dart-lang/lints) from 2.1.1 to 3.0.0. - [Release notes](https://github.com/dart-lang/lints/releases) - [Changelog](https://github.com/dart-lang/lints/blob/main/CHANGELOG.md) - [Commits](https://github.com/dart-lang/lints/compare/v2.1.1...v3.0.0) --- updated-dependencies: - dependency-name: lints dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- logging/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index 0a28842c0f..ddd6b9bca1 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: sentry: 7.11.0 dev_dependencies: - lints: ^2.0.0 + lints: ^3.0.0 test: ^1.21.1 yaml: ^3.1.0 # needed for version match (code and pubspec) coverage: ^1.3.0 From d226fd8e21bc1419df558c8f815c6cace8927d68 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 08:23:50 +0000 Subject: [PATCH 043/166] Bump lints from 2.1.1 to 3.0.0 in /file (#1694) Bumps [lints](https://github.com/dart-lang/lints) from 2.1.1 to 3.0.0. - [Release notes](https://github.com/dart-lang/lints/releases) - [Changelog](https://github.com/dart-lang/lints/blob/main/CHANGELOG.md) - [Commits](https://github.com/dart-lang/lints/compare/v2.1.1...v3.0.0) --- updated-dependencies: - dependency-name: lints dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- file/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/file/pubspec.yaml b/file/pubspec.yaml index bd64c11ebc..0e95d56bdc 100644 --- a/file/pubspec.yaml +++ b/file/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: meta: ^1.3.0 dev_dependencies: - lints: ^2.0.0 + lints: ^3.0.0 test: ^1.21.1 coverage: ^1.3.0 mockito: ^5.1.0 From 677b3319a8fbd62541a96561521671606478407c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Oct 2023 08:24:08 +0000 Subject: [PATCH 044/166] Bump lints from 2.1.1 to 3.0.0 in /dio (#1693) Bumps [lints](https://github.com/dart-lang/lints) from 2.1.1 to 3.0.0. - [Release notes](https://github.com/dart-lang/lints/releases) - [Changelog](https://github.com/dart-lang/lints/blob/main/CHANGELOG.md) - [Commits](https://github.com/dart-lang/lints/compare/v2.1.1...v3.0.0) --- updated-dependencies: - dependency-name: lints dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dio/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index b58d05b734..8e3ceb4ef7 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -15,7 +15,7 @@ dependencies: dev_dependencies: meta: ^1.3.0 - lints: ^2.0.0 + lints: ^3.0.0 test: ^1.21.1 coverage: ^1.3.0 mockito: ^5.1.0 From dc54bfccaea1c39821e8fecfaa6b9f1f806a58f7 Mon Sep 17 00:00:00 2001 From: Ivan Dlugos <6349682+vaind@users.noreply.github.com> Date: Fri, 27 Oct 2023 09:37:11 +0200 Subject: [PATCH 045/166] feat: profiling for iOS/macOS (#1611) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bruno Garcia Co-authored-by: Denis Andrašec Co-authored-by: Stefano --- .github/workflows/analyze.yml | 5 + .github/workflows/flutter.yml | 1 + .github/workflows/flutter_test.yml | 4 +- CHANGELOG.md | 6 + dart/analysis_options.yaml | 1 + dart/lib/src/hub.dart | 26 +- dart/lib/src/hub_adapter.dart | 11 + dart/lib/src/noop_hub.dart | 9 + dart/lib/src/profiling.dart | 22 + dart/lib/src/protocol/sentry_event.dart | 2 +- dart/lib/src/protocol/sentry_transaction.dart | 29 +- dart/lib/src/sentry_client.dart | 5 + dart/lib/src/sentry_envelope_item.dart | 2 + dart/lib/src/sentry_item_type.dart | 1 + dart/lib/src/sentry_options.dart | 11 + dart/lib/src/sentry_tracer.dart | 25 +- dart/lib/src/sentry_traces_sampler.dart | 8 + dart/pubspec.yaml | 1 + dart/test/hub_test.dart | 60 ++ dart/test/mocks.dart | 9 + dart/test/mocks.mocks.dart | 101 ++++ flutter/example/integration_test/all.dart | 8 + .../integration_test/profiling_test.dart | 66 ++ flutter/example/lib/main.dart | 26 +- flutter/example/pubspec.yaml | 1 + .../Classes/SentryFlutterPluginApple.swift | 52 +- .../src/native/cocoa/sentry_native_cocoa.dart | 23 + flutter/lib/src/native/factory.dart | 1 + flutter/lib/src/native/factory_real.dart | 14 + flutter/lib/src/native/factory_web.dart | 9 + flutter/lib/src/native/sentry_native.dart | 130 ++-- .../lib/src/native/sentry_native_binding.dart | 43 ++ .../lib/src/native/sentry_native_channel.dart | 183 +++--- .../navigation/sentry_navigator_observer.dart | 8 +- flutter/lib/src/profiling.dart | 117 ++++ flutter/lib/src/sentry_flutter.dart | 33 +- flutter/lib/src/sentry_flutter_options.dart | 20 + .../native_app_start_integration_test.dart | 13 +- flutter/test/mocks.dart | 66 +- flutter/test/mocks.mocks.dart | 571 ++++++++++-------- flutter/test/profiling_test.dart | 95 +++ flutter/test/sentry_flutter_test.dart | 34 +- flutter/test/sentry_native_channel_test.dart | 45 +- flutter/test/sentry_native_test.dart | 90 +-- .../test/sentry_navigator_observer_test.dart | 30 +- 45 files changed, 1454 insertions(+), 563 deletions(-) create mode 100644 dart/lib/src/profiling.dart create mode 100644 dart/test/mocks.mocks.dart create mode 100644 flutter/example/integration_test/all.dart create mode 100644 flutter/example/integration_test/profiling_test.dart create mode 100644 flutter/lib/src/native/cocoa/sentry_native_cocoa.dart create mode 100644 flutter/lib/src/native/factory.dart create mode 100644 flutter/lib/src/native/factory_real.dart create mode 100644 flutter/lib/src/native/factory_web.dart create mode 100644 flutter/lib/src/native/sentry_native_binding.dart create mode 100644 flutter/lib/src/profiling.dart create mode 100644 flutter/test/profiling_test.dart diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 9b418a78d9..411c29e4b2 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -60,6 +60,11 @@ jobs: timeout-minutes: 20 steps: - uses: actions/checkout@v3 + - name: Apply dependency override + if: ${{ inputs.package == 'flutter' }} + working-directory: ${{ inputs.package }} + run: | + sed -i.bak 's|sentry:.*|sentry:\n path: /github/workspace/dart|g' pubspec.yaml - uses: axel-op/dart-package-analyzer@7a6c3c66bce78d82b729a1ffef2d9458fde6c8d2 # pin@v3 id: analysis with: diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 90784f4c2e..8afd04f4b1 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -116,6 +116,7 @@ jobs: with: path: "./flutter/coverage/lcov.info" min_coverage: 90 + exclude: "lib/src/native/cocoa/binding.dart" - name: Build ${{ matrix.target }} run: | diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 502efc1375..d0875a8604 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -104,7 +104,7 @@ jobs: avd-name: macOS-avd-x86_64-31 emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true - script: flutter test integration_test --verbose + script: flutter test integration_test/all.dart --verbose cocoa: name: "${{ matrix.target }} | ${{ matrix.sdk }}" @@ -155,7 +155,7 @@ jobs: - name: run integration test # Disable flutter integration tests for iOS for now (https://github.com/getsentry/sentry-dart/issues/1605#issuecomment-1695809346) if: ${{ matrix.target != 'ios' }} - run: flutter test -d "${{ steps.device.outputs.name }}" integration_test --verbose + run: flutter test -d "${{ steps.device.outputs.name }}" integration_test/all.dart --verbose - name: run native test # We only have the native unit test package in the iOS xcodeproj at the moment. diff --git a/CHANGELOG.md b/CHANGELOG.md index 3629b48f9c..e5d88dea03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Features + +- Initial (alpha) support for profiling on iOS and macOS ([#1611](https://github.com/getsentry/sentry-dart/pull/1611)) + ## 7.11.0 ### Fixes diff --git a/dart/analysis_options.yaml b/dart/analysis_options.yaml index c5924fcb20..74ed00b114 100644 --- a/dart/analysis_options.yaml +++ b/dart/analysis_options.yaml @@ -3,6 +3,7 @@ include: package:lints/recommended.yaml analyzer: exclude: - example/** # the example has its own 'analysis_options.yaml' + - test/*.mocks.dart errors: # treat missing required parameters as a warning (not a hint) missing_required_param: error diff --git a/dart/lib/src/hub.dart b/dart/lib/src/hub.dart index 2693996d2a..4c09f1722f 100644 --- a/dart/lib/src/hub.dart +++ b/dart/lib/src/hub.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:collection'; import 'package:meta/meta.dart'; +import 'profiling.dart'; import 'propagation_context.dart'; import 'transport/data_category.dart'; @@ -435,12 +436,12 @@ class Hub { } else { final item = _peek(); - final samplingContext = SentrySamplingContext( - transactionContext, customSamplingContext ?? {}); - // if transactionContext has no sampled decision, run the traces sampler - if (transactionContext.samplingDecision == null) { - final samplingDecision = _tracesSampler.sample(samplingContext); + var samplingDecision = transactionContext.samplingDecision; + if (samplingDecision == null) { + final samplingContext = SentrySamplingContext( + transactionContext, customSamplingContext ?? {}); + samplingDecision = _tracesSampler.sample(samplingContext); transactionContext = transactionContext.copyWith(samplingDecision: samplingDecision); } @@ -451,6 +452,12 @@ class Hub { ); } + SentryProfiler? profiler; + if (_profilerFactory != null && + _tracesSampler.sampleProfiling(samplingDecision)) { + profiler = _profilerFactory?.startProfiler(transactionContext); + } + final tracer = SentryTracer( transactionContext, this, @@ -459,6 +466,7 @@ class Hub { autoFinishAfter: autoFinishAfter, trimEnd: trimEnd ?? false, onFinish: onFinish, + profiler: profiler, ); if (bindToScope ?? false) { item.scope.span = tracer; @@ -554,6 +562,14 @@ class Hub { ) => _throwableToSpan.add(throwable, span, transaction); + @internal + SentryProfilerFactory? get profilerFactory => _profilerFactory; + + @internal + set profilerFactory(SentryProfilerFactory? value) => _profilerFactory = value; + + SentryProfilerFactory? _profilerFactory; + SentryEvent _assignTraceContext(SentryEvent event) { // assign trace context if (event.throwable != null && event.contexts.trace == null) { diff --git a/dart/lib/src/hub_adapter.dart b/dart/lib/src/hub_adapter.dart index 0775042e04..8a9107ae54 100644 --- a/dart/lib/src/hub_adapter.dart +++ b/dart/lib/src/hub_adapter.dart @@ -4,6 +4,7 @@ import 'package:meta/meta.dart'; import 'hint.dart'; import 'hub.dart'; +import 'profiling.dart'; import 'protocol.dart'; import 'scope.dart'; import 'sentry.dart'; @@ -168,6 +169,16 @@ class HubAdapter implements Hub { ) => Sentry.currentHub.setSpanContext(throwable, span, transaction); + @internal + @override + set profilerFactory(SentryProfilerFactory? value) => + Sentry.currentHub.profilerFactory = value; + + @internal + @override + SentryProfilerFactory? get profilerFactory => + Sentry.currentHub.profilerFactory; + @override Scope get scope => Sentry.currentHub.scope; } diff --git a/dart/lib/src/noop_hub.dart b/dart/lib/src/noop_hub.dart index 28a56de249..06d31e7da2 100644 --- a/dart/lib/src/noop_hub.dart +++ b/dart/lib/src/noop_hub.dart @@ -4,6 +4,7 @@ import 'package:meta/meta.dart'; import 'hint.dart'; import 'hub.dart'; +import 'profiling.dart'; import 'protocol.dart'; import 'scope.dart'; import 'sentry_client.dart'; @@ -120,6 +121,14 @@ class NoOpHub implements Hub { @override void setSpanContext(throwable, ISentrySpan span, String transaction) {} + @internal + @override + set profilerFactory(SentryProfilerFactory? value) {} + + @internal + @override + SentryProfilerFactory? get profilerFactory => null; + @override Scope get scope => Scope(_options); } diff --git a/dart/lib/src/profiling.dart b/dart/lib/src/profiling.dart new file mode 100644 index 0000000000..d0ed997313 --- /dev/null +++ b/dart/lib/src/profiling.dart @@ -0,0 +1,22 @@ +import 'dart:async'; + +import 'package:meta/meta.dart'; + +import '../sentry.dart'; + +@internal +abstract class SentryProfilerFactory { + SentryProfiler? startProfiler(SentryTransactionContext context); +} + +@internal +abstract class SentryProfiler { + Future finishFor(SentryTransaction transaction); + void dispose(); +} + +// See https://develop.sentry.dev/sdk/profiles/ +@internal +abstract class SentryProfileInfo { + SentryEnvelopeItem asEnvelopeItem(); +} diff --git a/dart/lib/src/protocol/sentry_event.dart b/dart/lib/src/protocol/sentry_event.dart index e51441cd7d..32a76b9885 100644 --- a/dart/lib/src/protocol/sentry_event.dart +++ b/dart/lib/src/protocol/sentry_event.dart @@ -59,7 +59,7 @@ class SentryEvent with SentryEventLike { /// The ID Sentry.io assigned to the submitted event for future reference. final SentryId eventId; - /// A timestamp representing when the breadcrumb occurred. + /// A timestamp representing when the event occurred. final DateTime? timestamp; /// A string representing the platform the SDK is submitting from. This will be used by the Sentry interface to customize various components in the interface. diff --git a/dart/lib/src/protocol/sentry_transaction.dart b/dart/lib/src/protocol/sentry_transaction.dart index 44e6c4298f..986169ce46 100644 --- a/dart/lib/src/protocol/sentry_transaction.dart +++ b/dart/lib/src/protocol/sentry_transaction.dart @@ -10,12 +10,13 @@ class SentryTransaction extends SentryEvent { late final DateTime startTimestamp; static const String _type = 'transaction'; late final List spans; - final SentryTracer _tracer; + @internal + final SentryTracer tracer; late final Map measurements; late final SentryTransactionInfo? transactionInfo; SentryTransaction( - this._tracer, { + this.tracer, { SentryId? eventId, DateTime? timestamp, String? platform, @@ -39,17 +40,17 @@ class SentryTransaction extends SentryEvent { SentryTransactionInfo? transactionInfo, }) : super( eventId: eventId, - timestamp: timestamp ?? _tracer.endTimestamp, + timestamp: timestamp ?? tracer.endTimestamp, platform: platform, serverName: serverName, release: release, dist: dist, environment: environment, - transaction: transaction ?? _tracer.name, - throwable: throwable ?? _tracer.throwable, - tags: tags ?? _tracer.tags, + transaction: transaction ?? tracer.name, + throwable: throwable ?? tracer.throwable, + tags: tags ?? tracer.tags, // ignore: deprecated_member_use_from_same_package - extra: extra ?? _tracer.data, + extra: extra ?? tracer.data, user: user, contexts: contexts, breadcrumbs: breadcrumbs, @@ -57,19 +58,19 @@ class SentryTransaction extends SentryEvent { request: request, type: _type, ) { - startTimestamp = _tracer.startTimestamp; + startTimestamp = tracer.startTimestamp; - final spanContext = _tracer.context; - spans = _tracer.children; + final spanContext = tracer.context; + spans = tracer.children; this.measurements = measurements ?? {}; this.contexts.trace = spanContext.toTraceContext( - sampled: _tracer.samplingDecision?.sampled, - status: _tracer.status, + sampled: tracer.samplingDecision?.sampled, + status: tracer.status, ); this.transactionInfo = transactionInfo ?? - SentryTransactionInfo(_tracer.transactionNameSource.name); + SentryTransactionInfo(tracer.transactionNameSource.name); } @override @@ -136,7 +137,7 @@ class SentryTransaction extends SentryEvent { SentryTransactionInfo? transactionInfo, }) => SentryTransaction( - _tracer, + tracer, eventId: eventId ?? this.eventId, timestamp: timestamp ?? this.timestamp, platform: platform ?? this.platform, diff --git a/dart/lib/src/sentry_client.dart b/dart/lib/src/sentry_client.dart index b3508db4d1..62d2072b85 100644 --- a/dart/lib/src/sentry_client.dart +++ b/dart/lib/src/sentry_client.dart @@ -345,6 +345,11 @@ class SentryClient { traceContext: traceContext, attachments: attachments, ); + + final profileInfo = preparedTransaction.tracer.profileInfo; + if (profileInfo != null) { + envelope.items.add(profileInfo.asEnvelopeItem()); + } final id = await captureEnvelope(envelope); return id ?? SentryId.empty(); diff --git a/dart/lib/src/sentry_envelope_item.dart b/dart/lib/src/sentry_envelope_item.dart index f88f808600..5e38a7123d 100644 --- a/dart/lib/src/sentry_envelope_item.dart +++ b/dart/lib/src/sentry_envelope_item.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'dart:convert'; + import 'client_reports/client_report.dart'; import 'protocol.dart'; import 'utils.dart'; @@ -97,6 +98,7 @@ class SentryEnvelopeItem { final newLine = utf8.encode('\n'); final data = await dataFactory(); + // TODO the data copy could be avoided - this would be most significant with attachments. return [...itemHeader, ...newLine, ...data]; } catch (e) { return []; diff --git a/dart/lib/src/sentry_item_type.dart b/dart/lib/src/sentry_item_type.dart index c74b6b6049..6215cbb78f 100644 --- a/dart/lib/src/sentry_item_type.dart +++ b/dart/lib/src/sentry_item_type.dart @@ -4,5 +4,6 @@ class SentryItemType { static const String attachment = 'attachment'; static const String transaction = 'transaction'; static const String clientReport = 'client_report'; + static const String profile = 'profile'; static const String unknown = '__unknown__'; } diff --git a/dart/lib/src/sentry_options.dart b/dart/lib/src/sentry_options.dart index 76d3365386..27d95fb9f3 100644 --- a/dart/lib/src/sentry_options.dart +++ b/dart/lib/src/sentry_options.dart @@ -289,6 +289,17 @@ class SentryOptions { /// to be sent to Sentry. TracesSamplerCallback? tracesSampler; + double? _profilesSampleRate; + + @internal // Only exposed by SentryFlutterOptions at the moment. + double? get profilesSampleRate => _profilesSampleRate; + + @internal // Only exposed by SentryFlutterOptions at the moment. + set profilesSampleRate(double? value) { + assert(value == null || (value >= 0 && value <= 1)); + _profilesSampleRate = value; + } + /// Send statistics to sentry when the client drops events. bool sendClientReports = true; diff --git a/dart/lib/src/sentry_tracer.dart b/dart/lib/src/sentry_tracer.dart index 46edb2bccb..6012a13bfb 100644 --- a/dart/lib/src/sentry_tracer.dart +++ b/dart/lib/src/sentry_tracer.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:meta/meta.dart'; import '../sentry.dart'; +import 'profiling.dart'; import 'sentry_tracer_finish_status.dart'; import 'utils/sample_rate_format.dart'; @@ -31,6 +32,13 @@ class SentryTracer extends ISentrySpan { SentryTraceContextHeader? _sentryTraceContextHeader; + // Profiler attached to this tracer. + late final SentryProfiler? profiler; + + // Resulting profile, after it has been collected. This is later used by + // SentryClient to attach as an envelope item when sending the transaction. + SentryProfileInfo? profileInfo; + /// If [waitForChildren] is true, this transaction will not finish until all /// its children are finished. /// @@ -52,6 +60,7 @@ class SentryTracer extends ISentrySpan { Duration? autoFinishAfter, bool trimEnd = false, OnTransactionFinish? onFinish, + this.profiler, }) { _rootSpan = SentrySpan( this, @@ -77,8 +86,13 @@ class SentryTracer extends ISentrySpan { final commonEndTimestamp = endTimestamp ?? _hub.options.clock(); _autoFinishAfterTimer?.cancel(); _finishStatus = SentryTracerFinishStatus.finishing(status); - if (!_rootSpan.finished && - (!_waitForChildren || _haveAllChildrenFinished())) { + if (_rootSpan.finished) { + return; + } + if (_waitForChildren && !_haveAllChildrenFinished()) { + return; + } + try { _rootSpan.status ??= status; // remove span where its endTimestamp is before startTimestamp @@ -131,10 +145,17 @@ class SentryTracer extends ISentrySpan { final transaction = SentryTransaction(this); transaction.measurements.addAll(_measurements); + + profileInfo = (status == null || status == SpanStatus.ok()) + ? await profiler?.finishFor(transaction) + : null; + await _hub.captureTransaction( transaction, traceContext: traceContext(), ); + } finally { + profiler?.dispose(); } } diff --git a/dart/lib/src/sentry_traces_sampler.dart b/dart/lib/src/sentry_traces_sampler.dart index 06ab2edcea..1b49e2931b 100644 --- a/dart/lib/src/sentry_traces_sampler.dart +++ b/dart/lib/src/sentry_traces_sampler.dart @@ -67,5 +67,13 @@ class SentryTracesSampler { return SentryTracesSamplingDecision(false); } + bool sampleProfiling(SentryTracesSamplingDecision tracesSamplingDecision) { + double? optionsRate = _options.profilesSampleRate; + if (optionsRate == null || !tracesSamplingDecision.sampled) { + return false; + } + return _sample(optionsRate); + } + bool _sample(double result) => !(result < _random.nextDouble()); } diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index 7520a9004d..f77b7868e5 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -18,6 +18,7 @@ dependencies: uuid: '>=3.0.0 <5.0.0' dev_dependencies: + build_runner: ^2.4.2 mockito: ^5.1.0 lints: ^2.0.0 test: ^1.21.1 diff --git a/dart/test/hub_test.dart b/dart/test/hub_test.dart index 8cc4e99502..37122d43b6 100644 --- a/dart/test/hub_test.dart +++ b/dart/test/hub_test.dart @@ -1,4 +1,5 @@ import 'package:collection/collection.dart'; +import 'package:mockito/mockito.dart'; import 'package:sentry/sentry.dart'; import 'package:sentry/src/client_reports/discard_reason.dart'; import 'package:sentry/src/sentry_tracer.dart'; @@ -6,6 +7,7 @@ import 'package:sentry/src/transport/data_category.dart'; import 'package:test/test.dart'; import 'mocks.dart'; +import 'mocks.mocks.dart'; import 'mocks/mock_client_report_recorder.dart'; import 'mocks/mock_sentry_client.dart'; @@ -375,6 +377,62 @@ void main() { fixture.client.captureTransactionCalls.first.traceContext, context); }); + test('profiler is not started by default', () async { + final hub = fixture.getSut(); + final tr = hub.startTransaction('name', 'op'); + expect(tr, isA()); + expect((tr as SentryTracer).profiler, isNull); + }); + + test('profiler is started according to the sampling rate', () async { + final hub = fixture.getSut(); + final factory = MockSentryProfilerFactory(); + when(factory.startProfiler(fixture._context)) + .thenReturn(MockSentryProfiler()); + hub.profilerFactory = factory; + + var tr = hub.startTransactionWithContext(fixture._context); + expect((tr as SentryTracer).profiler, isNull); + verifyZeroInteractions(factory); + + hub.options.profilesSampleRate = 1.0; + tr = hub.startTransactionWithContext(fixture._context); + expect((tr as SentryTracer).profiler, isNotNull); + verify(factory.startProfiler(fixture._context)).called(1); + }); + + test('profiler.finish() is called', () async { + final hub = fixture.getSut(); + final factory = MockSentryProfilerFactory(); + final profiler = MockSentryProfiler(); + final expected = MockSentryProfileInfo(); + when(factory.startProfiler(fixture._context)).thenReturn(profiler); + when(profiler.finishFor(any)).thenAnswer((_) async => expected); + + hub.profilerFactory = factory; + hub.options.profilesSampleRate = 1.0; + final tr = hub.startTransactionWithContext(fixture._context); + await tr.finish(); + verify(profiler.finishFor(any)).called(1); + verify(profiler.dispose()).called(1); + }); + + test('profiler.dispose() is called even if not captured', () async { + final hub = fixture.getSut(); + final factory = MockSentryProfilerFactory(); + final profiler = MockSentryProfiler(); + final expected = MockSentryProfileInfo(); + when(factory.startProfiler(fixture._context)).thenReturn(profiler); + when(profiler.finishFor(any)).thenAnswer((_) async => expected); + + hub.profilerFactory = factory; + hub.options.profilesSampleRate = 1.0; + final tr = hub.startTransactionWithContext(fixture._context); + await tr.finish(status: SpanStatus.aborted()); + verify(profiler.dispose()).called(1); + verifyNever(profiler.finishFor(any)); + }); + test('returns scope', () async { final hub = fixture.getSut(); @@ -649,10 +707,12 @@ class Fixture { final hub = Hub(options); + // A fully configured context - won't trigger a copy in startTransaction(). _context = SentryTransactionContext( 'name', 'op', samplingDecision: SentryTracesSamplingDecision(sampled!), + origin: SentryTraceOrigins.manual, ); tracer = SentryTracer(_context, hub); diff --git a/dart/test/mocks.dart b/dart/test/mocks.dart index 82430d96e8..b5fdd59aa9 100644 --- a/dart/test/mocks.dart +++ b/dart/test/mocks.dart @@ -1,4 +1,6 @@ +import 'package:mockito/annotations.dart'; import 'package:sentry/sentry.dart'; +import 'package:sentry/src/profiling.dart'; import 'package:sentry/src/transport/rate_limiter.dart'; final fakeDsn = 'https://abc@def.ingest.sentry.io/1234567'; @@ -149,3 +151,10 @@ class MockRateLimiter implements RateLimiter { this.errorCode = errorCode; } } + +@GenerateMocks([ + SentryProfilerFactory, + SentryProfiler, + SentryProfileInfo, +]) +void main() {} diff --git a/dart/test/mocks.mocks.dart b/dart/test/mocks.mocks.dart new file mode 100644 index 0000000000..5f2556400e --- /dev/null +++ b/dart/test/mocks.mocks.dart @@ -0,0 +1,101 @@ +// Mocks generated by Mockito 5.4.2 from annotations +// in sentry/test/mocks.dart. +// Do not manually edit this file. + +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i4; + +import 'package:mockito/mockito.dart' as _i1; +import 'package:sentry/sentry.dart' as _i2; +import 'package:sentry/src/profiling.dart' as _i3; + +// ignore_for_file: type=lint +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: avoid_setters_without_getters +// ignore_for_file: comment_references +// ignore_for_file: implementation_imports +// ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: prefer_const_constructors +// ignore_for_file: unnecessary_parenthesis +// ignore_for_file: camel_case_types +// ignore_for_file: subtype_of_sealed_class + +class _FakeSentryEnvelopeItem_0 extends _i1.SmartFake + implements _i2.SentryEnvelopeItem { + _FakeSentryEnvelopeItem_0( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +/// A class which mocks [SentryProfilerFactory]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockSentryProfilerFactory extends _i1.Mock + implements _i3.SentryProfilerFactory { + MockSentryProfilerFactory() { + _i1.throwOnMissingStub(this); + } + + @override + _i3.SentryProfiler? startProfiler(_i2.SentryTransactionContext? context) => + (super.noSuchMethod(Invocation.method( + #startProfiler, + [context], + )) as _i3.SentryProfiler?); +} + +/// A class which mocks [SentryProfiler]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockSentryProfiler extends _i1.Mock implements _i3.SentryProfiler { + MockSentryProfiler() { + _i1.throwOnMissingStub(this); + } + + @override + _i4.Future<_i3.SentryProfileInfo?> finishFor( + _i2.SentryTransaction? transaction) => + (super.noSuchMethod( + Invocation.method( + #finishFor, + [transaction], + ), + returnValue: _i4.Future<_i3.SentryProfileInfo?>.value(), + ) as _i4.Future<_i3.SentryProfileInfo?>); + @override + void dispose() => super.noSuchMethod( + Invocation.method( + #dispose, + [], + ), + returnValueForMissingStub: null, + ); +} + +/// A class which mocks [SentryProfileInfo]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockSentryProfileInfo extends _i1.Mock implements _i3.SentryProfileInfo { + MockSentryProfileInfo() { + _i1.throwOnMissingStub(this); + } + + @override + _i2.SentryEnvelopeItem asEnvelopeItem() => (super.noSuchMethod( + Invocation.method( + #asEnvelopeItem, + [], + ), + returnValue: _FakeSentryEnvelopeItem_0( + this, + Invocation.method( + #asEnvelopeItem, + [], + ), + ), + ) as _i2.SentryEnvelopeItem); +} diff --git a/flutter/example/integration_test/all.dart b/flutter/example/integration_test/all.dart new file mode 100644 index 0000000000..69cc5a6641 --- /dev/null +++ b/flutter/example/integration_test/all.dart @@ -0,0 +1,8 @@ +// Workaround for https://github.com/flutter/flutter/issues/101031 +import 'integration_test.dart' as a; +import 'profiling_test.dart' as b; + +void main() { + a.main(); + b.main(); +} diff --git a/flutter/example/integration_test/profiling_test.dart b/flutter/example/integration_test/profiling_test.dart new file mode 100644 index 0000000000..e6c1db8bbd --- /dev/null +++ b/flutter/example/integration_test/profiling_test.dart @@ -0,0 +1,66 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; +import '../../../dart/test/mocks/mock_transport.dart'; + +void main() { + final transport = MockTransport(); + + setUp(() async { + await SentryFlutter.init((options) { + // ignore: invalid_use_of_internal_member + options.automatedTestMode = true; + options.dsn = 'https://abc@def.ingest.sentry.io/1234567'; + options.debug = true; + options.transport = transport; + options.tracesSampleRate = 1.0; + options.profilesSampleRate = 1.0; + }); + }); + + tearDown(() async { + await Sentry.close(); + transport.reset(); + }); + + test('native binding is initialized', () async { + // ignore: invalid_use_of_internal_member + expect(SentryFlutter.native, isNotNull); + }); + + test('profile is captured', () async { + final tx = Sentry.startTransaction("name", "op"); + await Future.delayed(const Duration(milliseconds: 1000)); + await tx.finish(); + expect(transport.calls, 1); + + final envelope = transport.envelopes.first; + expect(envelope.items.length, 2); + expect(envelope.items[0].header.type, "transaction"); + expect(await envelope.items[0].header.length(), greaterThan(0)); + expect(envelope.items[1].header.type, "profile"); + expect(await envelope.items[1].header.length(), greaterThan(0)); + + final txJson = utf8.decode(await envelope.items[0].dataFactory()); + final txData = json.decode(txJson) as Map; + + final profileJson = utf8.decode(await envelope.items[1].dataFactory()); + final profileData = json.decode(profileJson) as Map; + + expect(txData["event_id"], isNotNull); + expect(txData["event_id"], profileData["transaction"]["id"]); + expect(txData["contexts"]["trace"]["trace_id"], isNotNull); + expect(txData["contexts"]["trace"]["trace_id"], + profileData["transaction"]["trace_id"]); + expect(profileData["debug_meta"]["images"], isNotEmpty); + expect(profileData["profile"]["thread_metadata"], isNotEmpty); + expect(profileData["profile"]["samples"], isNotEmpty); + expect(profileData["profile"]["stacks"], isNotEmpty); + expect(profileData["profile"]["frames"], isNotEmpty); + }, + skip: (Platform.isMacOS || Platform.isIOS) + ? false + : "Profiling is not supported on this platform"); +} diff --git a/flutter/example/lib/main.dart b/flutter/example/lib/main.dart index 6d657a589e..3d044c155d 100644 --- a/flutter/example/lib/main.dart +++ b/flutter/example/lib/main.dart @@ -48,6 +48,7 @@ Future setupSentry(AppRunner appRunner, String dsn, await SentryFlutter.init((options) { options.dsn = exampleDsn; options.tracesSampleRate = 1.0; + options.profilesSampleRate = 1.0; options.reportPackages = false; options.addInAppInclude('sentry_flutter_example'); options.considerInAppFramesByDefault = false; @@ -327,7 +328,7 @@ class MainScaffold extends StatelessWidget { status: const SpanStatus.internalError()); await Future.delayed(const Duration(milliseconds: 50)); - + // findPrimeNumber(1000000); // Uncomment to see it with profiling await transaction.finish(status: const SpanStatus.ok()); }, child: const Text('Capture transaction'), @@ -855,3 +856,26 @@ class ThemeProvider extends ChangeNotifier { Future execute(String method) async { await _channel.invokeMethod(method); } + +// Don't inline this one or it shows up as an anonymous closure in profiles. +@pragma("vm:never-inline") +int findPrimeNumber(int n) { + int count = 0; + int a = 2; + while (count < n) { + int b = 2; + bool prime = true; // to check if found a prime + while (b * b <= a) { + if (a % b == 0) { + prime = false; + break; + } + b++; + } + if (prime) { + count++; + } + a++; + } + return a - 1; +} diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index 5331b8d0de..d2ed7bba04 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -36,6 +36,7 @@ dev_dependencies: sdk: flutter flutter_test: sdk: flutter + test: ^1.21.1 flutter: uses-material-design: true diff --git a/flutter/ios/Classes/SentryFlutterPluginApple.swift b/flutter/ios/Classes/SentryFlutterPluginApple.swift index 5a41c2fcc2..be5e301791 100644 --- a/flutter/ios/Classes/SentryFlutterPluginApple.swift +++ b/flutter/ios/Classes/SentryFlutterPluginApple.swift @@ -152,6 +152,14 @@ public class SentryFlutterPluginApple: NSObject, FlutterPlugin { let key = arguments?["key"] as? String removeTag(key: key, result: result) + #if !os(tvOS) && !os(watchOS) + case "discardProfiler": + discardProfiler(call, result) + + case "collectProfile": + collectProfile(call, result) + #endif + default: result(FlutterMethodNotImplemented) } @@ -352,8 +360,8 @@ public class SentryFlutterPluginApple: NSObject, FlutterPlugin { private func captureEnvelope(_ call: FlutterMethodCall, result: @escaping FlutterResult) { guard let arguments = call.arguments as? [Any], !arguments.isEmpty, - let data = (arguments.first as? FlutterStandardTypedData)?.data else { - print("Envelope is null or empty !") + let data = (arguments.first as? FlutterStandardTypedData)?.data else { + print("Envelope is null or empty!") result(FlutterError(code: "2", message: "Envelope is null or empty", details: nil)) return } @@ -385,8 +393,8 @@ public class SentryFlutterPluginApple: NSObject, FlutterPlugin { result(item) #else - print("note: appStartMeasurement not available on this platform") - result(nil) + print("note: appStartMeasurement not available on this platform") + result(nil) #endif } @@ -550,6 +558,42 @@ public class SentryFlutterPluginApple: NSObject, FlutterPlugin { result("") } } + + private func collectProfile(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) { + guard let arguments = call.arguments as? [String: Any], + let traceId = arguments["traceId"] as? String else { + print("Cannot collect profile: trace ID missing") + result(FlutterError(code: "6", message: "Cannot collect profile: trace ID missing", details: nil)) + return + } + + guard let startTime = arguments["startTime"] as? UInt64 else { + print("Cannot collect profile: start time missing") + result(FlutterError(code: "7", message: "Cannot collect profile: start time missing", details: nil)) + return + } + + guard let endTime = arguments["endTime"] as? UInt64 else { + print("Cannot collect profile: end time missing") + result(FlutterError(code: "8", message: "Cannot collect profile: end time missing", details: nil)) + return + } + + let payload = PrivateSentrySDKOnly.collectProfileBetween(startTime, and: endTime, + forTrace: SentryId(uuidString: traceId)) + result(payload) + } + + private func discardProfiler(_ call: FlutterMethodCall, _ result: @escaping FlutterResult) { + guard let traceId = call.arguments as? String else { + print("Cannot discard a profiler: trace ID missing") + result(FlutterError(code: "9", message: "Cannot discard a profiler: trace ID missing", details: nil)) + return + } + + PrivateSentrySDKOnly.discardProfiler(forTrace: SentryId(uuidString: traceId)) + result(nil) + } } // swiftlint:enable function_body_length diff --git a/flutter/lib/src/native/cocoa/sentry_native_cocoa.dart b/flutter/lib/src/native/cocoa/sentry_native_cocoa.dart new file mode 100644 index 0000000000..0e6817cb48 --- /dev/null +++ b/flutter/lib/src/native/cocoa/sentry_native_cocoa.dart @@ -0,0 +1,23 @@ +import 'dart:ffi'; + +import 'package:meta/meta.dart'; + +import '../../../sentry_flutter.dart'; +import '../sentry_native_channel.dart'; +import 'binding.dart' as cocoa; + +@internal +class SentryNativeCocoa extends SentryNativeChannel { + late final _lib = cocoa.SentryCocoa(DynamicLibrary.process()); + + SentryNativeCocoa(super.channel); + + @override + int? startProfiler(SentryId traceId) { + final cSentryId = cocoa.SentryId.alloc(_lib) + ..initWithUUIDString_(cocoa.NSString(_lib, traceId.toString())); + final startTime = + cocoa.PrivateSentrySDKOnly.startProfilerForTrace_(_lib, cSentryId); + return startTime; + } +} diff --git a/flutter/lib/src/native/factory.dart b/flutter/lib/src/native/factory.dart new file mode 100644 index 0000000000..981e1d6ead --- /dev/null +++ b/flutter/lib/src/native/factory.dart @@ -0,0 +1 @@ +export 'factory_real.dart' if (dart.library.html) 'factory_web.dart'; diff --git a/flutter/lib/src/native/factory_real.dart b/flutter/lib/src/native/factory_real.dart new file mode 100644 index 0000000000..3c918b7be7 --- /dev/null +++ b/flutter/lib/src/native/factory_real.dart @@ -0,0 +1,14 @@ +import 'package:flutter/services.dart'; + +import '../../sentry_flutter.dart'; +import 'cocoa/sentry_native_cocoa.dart'; +import 'sentry_native_binding.dart'; +import 'sentry_native_channel.dart'; + +SentryNativeBinding createBinding(PlatformChecker pc, MethodChannel channel) { + if (pc.platform.isIOS || pc.platform.isMacOS) { + return SentryNativeCocoa(channel); + } else { + return SentryNativeChannel(channel); + } +} diff --git a/flutter/lib/src/native/factory_web.dart b/flutter/lib/src/native/factory_web.dart new file mode 100644 index 0000000000..8038ea9780 --- /dev/null +++ b/flutter/lib/src/native/factory_web.dart @@ -0,0 +1,9 @@ +import 'package:flutter/services.dart'; + +import '../../sentry_flutter.dart'; +import 'sentry_native_binding.dart'; + +// This isn't actually called, see SentryFlutter.init() +SentryNativeBinding createBinding(PlatformChecker pc, MethodChannel channel) { + throw UnsupportedError("Native binding is not supported on this platform."); +} diff --git a/flutter/lib/src/native/sentry_native.dart b/flutter/lib/src/native/sentry_native.dart index 6250831299..b8d2206a8d 100644 --- a/flutter/lib/src/native/sentry_native.dart +++ b/flutter/lib/src/native/sentry_native.dart @@ -3,28 +3,17 @@ import 'dart:async'; import 'package:meta/meta.dart'; import '../../sentry_flutter.dart'; -import 'sentry_native_channel.dart'; +import 'sentry_native_binding.dart'; -/// [SentryNative] holds state that it fetches from to the native SDKs. Always -/// use the shared instance with [SentryNative()]. +/// [SentryNative] holds state that it fetches from to the native SDKs. +/// It forwards to platform-specific implementations of [SentryNativeBinding]. +/// Any errors are logged and ignored. @internal class SentryNative { - SentryNative._(); + final SentryOptions _options; + final SentryNativeBinding _binding; - static final SentryNative _instance = SentryNative._(); - - SentryNativeChannel? _nativeChannel; - - factory SentryNative() { - return _instance; - } - - SentryNativeChannel? get nativeChannel => _instance._nativeChannel; - - /// Provide [nativeChannel] for native communication. - set nativeChannel(SentryNativeChannel? nativeChannel) { - _instance._nativeChannel = nativeChannel; - } + SentryNative(this._options, this._binding); // AppStart @@ -41,62 +30,99 @@ class SentryNative { /// Fetch [NativeAppStart] from native channels. Can only be called once. Future fetchNativeAppStart() async { _didFetchAppStart = true; - return await _nativeChannel?.fetchNativeAppStart(); + return _invoke("fetchNativeAppStart", _binding.fetchNativeAppStart); } // NativeFrames - Future beginNativeFramesCollection() async { - await _nativeChannel?.beginNativeFrames(); - } + Future beginNativeFramesCollection() => + _invoke("beginNativeFrames", _binding.beginNativeFrames); - Future endNativeFramesCollection(SentryId traceId) async { - return await _nativeChannel?.endNativeFrames(traceId); - } + Future endNativeFramesCollection(SentryId traceId) => + _invoke("endNativeFrames", () => _binding.endNativeFrames(traceId)); // Scope - Future setContexts(String key, dynamic value) async { - return await _nativeChannel?.setContexts(key, value); - } + Future setContexts(String key, dynamic value) => + _invoke("setContexts", () => _binding.setContexts(key, value)); - Future removeContexts(String key) async { - return await _nativeChannel?.removeContexts(key); - } + Future removeContexts(String key) => + _invoke("removeContexts", () => _binding.removeContexts(key)); - Future setUser(SentryUser? sentryUser) async { - return await _nativeChannel?.setUser(sentryUser); - } + Future setUser(SentryUser? sentryUser) => + _invoke("setUser", () => _binding.setUser(sentryUser)); - Future addBreadcrumb(Breadcrumb breadcrumb) async { - return await _nativeChannel?.addBreadcrumb(breadcrumb); - } + Future addBreadcrumb(Breadcrumb breadcrumb) => + _invoke("addBreadcrumb", () => _binding.addBreadcrumb(breadcrumb)); - Future clearBreadcrumbs() async { - return await _nativeChannel?.clearBreadcrumbs(); - } + Future clearBreadcrumbs() => + _invoke("clearBreadcrumbs", _binding.clearBreadcrumbs); - Future setExtra(String key, dynamic value) async { - return await _nativeChannel?.setExtra(key, value); - } + Future setExtra(String key, dynamic value) => + _invoke("setExtra", () => _binding.setExtra(key, value)); - Future removeExtra(String key) async { - return await _nativeChannel?.removeExtra(key); - } + Future removeExtra(String key) => + _invoke("removeExtra", () => _binding.removeExtra(key)); - Future setTag(String key, String value) async { - return await _nativeChannel?.setTag(key, value); - } + Future setTag(String key, String value) => + _invoke("setTag", () => _binding.setTag(key, value)); - Future removeTag(String key) async { - return await _nativeChannel?.removeTag(key); - } + Future removeTag(String key) => + _invoke("removeTag", () => _binding.removeTag(key)); + + int? startProfiler(SentryId traceId) => + _invokeSync("startProfiler", () => _binding.startProfiler(traceId)); + + Future discardProfiler(SentryId traceId) => + _invoke("discardProfiler", () => _binding.discardProfiler(traceId)); + + Future?> collectProfile( + SentryId traceId, int startTimeNs, int endTimeNs) => + _invoke("collectProfile", + () => _binding.collectProfile(traceId, startTimeNs, endTimeNs)); /// Reset state void reset() { appStartEnd = null; _didFetchAppStart = false; } + + // Helpers + Future _invoke( + String nativeMethodName, Future Function() fn) async { + try { + return await fn(); + } catch (error, stackTrace) { + _logError(nativeMethodName, error, stackTrace); + // ignore: invalid_use_of_internal_member + if (_options.automatedTestMode) { + rethrow; + } + return null; + } + } + + T? _invokeSync(String nativeMethodName, T? Function() fn) { + try { + return fn(); + } catch (error, stackTrace) { + _logError(nativeMethodName, error, stackTrace); + // ignore: invalid_use_of_internal_member + if (_options.automatedTestMode) { + rethrow; + } + return null; + } + } + + void _logError(String nativeMethodName, Object error, StackTrace stackTrace) { + _options.logger( + SentryLevel.error, + 'Native call `$nativeMethodName` failed', + exception: error, + stackTrace: stackTrace, + ); + } } class NativeAppStart { diff --git a/flutter/lib/src/native/sentry_native_binding.dart b/flutter/lib/src/native/sentry_native_binding.dart new file mode 100644 index 0000000000..54d335d529 --- /dev/null +++ b/flutter/lib/src/native/sentry_native_binding.dart @@ -0,0 +1,43 @@ +import 'dart:async'; + +import 'package:meta/meta.dart'; + +import '../../sentry_flutter.dart'; +import 'sentry_native.dart'; + +/// Provide typed methods to access native layer. +@internal +abstract class SentryNativeBinding { + // TODO Move other native calls here. + + Future fetchNativeAppStart(); + + Future beginNativeFrames(); + + Future endNativeFrames(SentryId id); + + Future setUser(SentryUser? user); + + Future addBreadcrumb(Breadcrumb breadcrumb); + + Future clearBreadcrumbs(); + + Future setContexts(String key, dynamic value); + + Future removeContexts(String key); + + Future setExtra(String key, dynamic value); + + Future removeExtra(String key); + + Future setTag(String key, String value); + + Future removeTag(String key); + + int? startProfiler(SentryId traceId); + + Future discardProfiler(SentryId traceId); + + Future?> collectProfile( + SentryId traceId, int startTimeNs, int endTimeNs); +} diff --git a/flutter/lib/src/native/sentry_native_channel.dart b/flutter/lib/src/native/sentry_native_channel.dart index 63fd53bd06..4bf9745cb3 100644 --- a/flutter/lib/src/native/sentry_native_channel.dart +++ b/flutter/lib/src/native/sentry_native_channel.dart @@ -6,147 +6,102 @@ import 'package:meta/meta.dart'; import '../../sentry_flutter.dart'; import 'sentry_native.dart'; import 'method_channel_helper.dart'; +import 'sentry_native_binding.dart'; /// Provide typed methods to access native layer via MethodChannel. @internal -class SentryNativeChannel { - SentryNativeChannel(this._channel, this._options); +class SentryNativeChannel implements SentryNativeBinding { + SentryNativeChannel(this._channel); final MethodChannel _channel; - final SentryFlutterOptions _options; // TODO Move other native calls here. + @override Future fetchNativeAppStart() async { - try { - final json = await _channel - .invokeMapMethod('fetchNativeAppStart'); - return (json != null) ? NativeAppStart.fromJson(json) : null; - } catch (error, stackTrace) { - _logError('fetchNativeAppStart', error, stackTrace); - return null; - } + final json = + await _channel.invokeMapMethod('fetchNativeAppStart'); + return (json != null) ? NativeAppStart.fromJson(json) : null; } - Future beginNativeFrames() async { - try { - await _channel.invokeMethod('beginNativeFrames'); - } catch (error, stackTrace) { - _logError('beginNativeFrames', error, stackTrace); - } - } + @override + Future beginNativeFrames() => + _channel.invokeMethod('beginNativeFrames'); + @override Future endNativeFrames(SentryId id) async { - try { - final json = await _channel.invokeMapMethod( - 'endNativeFrames', {'id': id.toString()}); - return (json != null) ? NativeFrames.fromJson(json) : null; - } catch (error, stackTrace) { - _logError('endNativeFrames', error, stackTrace); - return null; - } + final json = await _channel.invokeMapMethod( + 'endNativeFrames', {'id': id.toString()}); + return (json != null) ? NativeFrames.fromJson(json) : null; } + @override Future setUser(SentryUser? user) async { - try { - final normalizedUser = user?.copyWith( - data: MethodChannelHelper.normalizeMap(user.data), - ); - await _channel.invokeMethod( - 'setUser', - {'user': normalizedUser?.toJson()}, - ); - } catch (error, stackTrace) { - _logError('setUser', error, stackTrace); - } + final normalizedUser = user?.copyWith( + data: MethodChannelHelper.normalizeMap(user.data), + ); + await _channel.invokeMethod( + 'setUser', + {'user': normalizedUser?.toJson()}, + ); } + @override Future addBreadcrumb(Breadcrumb breadcrumb) async { - try { - final normalizedBreadcrumb = breadcrumb.copyWith( - data: MethodChannelHelper.normalizeMap(breadcrumb.data), - ); - await _channel.invokeMethod( - 'addBreadcrumb', - {'breadcrumb': normalizedBreadcrumb.toJson()}, - ); - } catch (error, stackTrace) { - _logError('addBreadcrumb', error, stackTrace); - } + final normalizedBreadcrumb = breadcrumb.copyWith( + data: MethodChannelHelper.normalizeMap(breadcrumb.data), + ); + await _channel.invokeMethod( + 'addBreadcrumb', + {'breadcrumb': normalizedBreadcrumb.toJson()}, + ); } - Future clearBreadcrumbs() async { - try { - await _channel.invokeMethod('clearBreadcrumbs'); - } catch (error, stackTrace) { - _logError('clearBreadcrumbs', error, stackTrace); - } - } + @override + Future clearBreadcrumbs() => _channel.invokeMethod('clearBreadcrumbs'); - Future setContexts(String key, dynamic value) async { - try { - final normalizedValue = MethodChannelHelper.normalize(value); - await _channel.invokeMethod( + @override + Future setContexts(String key, dynamic value) => _channel.invokeMethod( 'setContexts', - {'key': key, 'value': normalizedValue}, + {'key': key, 'value': MethodChannelHelper.normalize(value)}, ); - } catch (error, stackTrace) { - _logError('setContexts', error, stackTrace); - } - } - Future removeContexts(String key) async { - try { - await _channel.invokeMethod('removeContexts', {'key': key}); - } catch (error, stackTrace) { - _logError('removeContexts', error, stackTrace); - } - } + @override + Future removeContexts(String key) => + _channel.invokeMethod('removeContexts', {'key': key}); - Future setExtra(String key, dynamic value) async { - try { - final normalizedValue = MethodChannelHelper.normalize(value); - await _channel.invokeMethod( + @override + Future setExtra(String key, dynamic value) => _channel.invokeMethod( 'setExtra', - {'key': key, 'value': normalizedValue}, + {'key': key, 'value': MethodChannelHelper.normalize(value)}, ); - } catch (error, stackTrace) { - _logError('setExtra', error, stackTrace); - } - } - - Future removeExtra(String key) async { - try { - await _channel.invokeMethod('removeExtra', {'key': key}); - } catch (error, stackTrace) { - _logError('removeExtra', error, stackTrace); - } - } - - Future setTag(String key, String value) async { - try { - await _channel.invokeMethod('setTag', {'key': key, 'value': value}); - } catch (error, stackTrace) { - _logError('setTag', error, stackTrace); - } - } - Future removeTag(String key) async { - try { - await _channel.invokeMethod('removeTag', {'key': key}); - } catch (error, stackTrace) { - _logError('removeTag', error, stackTrace); - } - } - - // Helper - - void _logError(String nativeMethodName, Object error, StackTrace stackTrace) { - _options.logger( - SentryLevel.error, - 'Native call `$nativeMethodName` failed', - exception: error, - stackTrace: stackTrace, - ); - } + @override + Future removeExtra(String key) => + _channel.invokeMethod('removeExtra', {'key': key}); + + @override + Future setTag(String key, String value) => + _channel.invokeMethod('setTag', {'key': key, 'value': value}); + + @override + Future removeTag(String key) => + _channel.invokeMethod('removeTag', {'key': key}); + + @override + int? startProfiler(SentryId traceId) => + throw UnsupportedError("Not supported on this platform"); + + @override + Future discardProfiler(SentryId traceId) => + _channel.invokeMethod('discardProfiler', traceId.toString()); + + @override + Future?> collectProfile( + SentryId traceId, int startTimeNs, int endTimeNs) => + _channel.invokeMapMethod('collectProfile', { + 'traceId': traceId.toString(), + 'startTime': startTimeNs, + 'endTime': endTimeNs, + }); } diff --git a/flutter/lib/src/navigation/sentry_navigator_observer.dart b/flutter/lib/src/navigation/sentry_navigator_observer.dart index 8b88b88088..51c4b0fd07 100644 --- a/flutter/lib/src/navigation/sentry_navigator_observer.dart +++ b/flutter/lib/src/navigation/sentry_navigator_observer.dart @@ -67,7 +67,7 @@ class SentryNavigatorObserver extends RouteObserver> { _setRouteNameAsTransaction = setRouteNameAsTransaction, _routeNameExtractor = routeNameExtractor, _additionalInfoProvider = additionalInfoProvider, - _native = SentryNative() { + _native = SentryFlutter.native { if (enableAutoTransactions) { // ignore: invalid_use_of_internal_member _hub.options.sdk.addIntegration('UINavigationTracing'); @@ -80,7 +80,7 @@ class SentryNavigatorObserver extends RouteObserver> { final bool _setRouteNameAsTransaction; final RouteNameExtractor? _routeNameExtractor; final AdditionalInfoExtractor? _additionalInfoProvider; - final SentryNative _native; + final SentryNative? _native; ISentrySpan? _transaction; @@ -189,7 +189,7 @@ class SentryNavigatorObserver extends RouteObserver> { trimEnd: true, onFinish: (transaction) async { final nativeFrames = await _native - .endNativeFramesCollection(transaction.context.traceId); + ?.endNativeFramesCollection(transaction.context.traceId); if (nativeFrames != null) { final measurements = nativeFrames.toMeasurements(); for (final item in measurements.entries) { @@ -218,7 +218,7 @@ class SentryNavigatorObserver extends RouteObserver> { scope.span ??= _transaction; }); - await _native.beginNativeFramesCollection(); + await _native?.beginNativeFramesCollection(); } Future _finishTransaction() async { diff --git a/flutter/lib/src/profiling.dart b/flutter/lib/src/profiling.dart new file mode 100644 index 0000000000..a4332d77e7 --- /dev/null +++ b/flutter/lib/src/profiling.dart @@ -0,0 +1,117 @@ +import 'dart:async'; + +// ignore: implementation_imports +import 'package:sentry/src/profiling.dart'; +// ignore: implementation_imports +import 'package:sentry/src/sentry_envelope_item_header.dart'; +// ignore: implementation_imports +import 'package:sentry/src/sentry_item_type.dart'; + +import '../sentry_flutter.dart'; +import 'native/sentry_native.dart'; + +// ignore: invalid_use_of_internal_member +class SentryNativeProfilerFactory implements SentryProfilerFactory { + final SentryNative _native; + final ClockProvider _clock; + + SentryNativeProfilerFactory(this._native, this._clock); + + static void attachTo(Hub hub, SentryNative native) { + // ignore: invalid_use_of_internal_member + final options = hub.options; + + // ignore: invalid_use_of_internal_member + if ((options.profilesSampleRate ?? 0.0) <= 0.0) { + return; + } + + if (options.platformChecker.isWeb) { + return; + } + + if (options.platformChecker.platform.isMacOS || + options.platformChecker.platform.isIOS) { + // ignore: invalid_use_of_internal_member + hub.profilerFactory = SentryNativeProfilerFactory(native, options.clock); + } + } + + @override + SentryNativeProfiler? startProfiler(SentryTransactionContext context) { + if (context.traceId == SentryId.empty()) { + return null; + } + + final startTime = _native.startProfiler(context.traceId); + if (startTime == null) { + return null; + } + return SentryNativeProfiler(_native, startTime, context.traceId, _clock); + } +} + +// ignore: invalid_use_of_internal_member +class SentryNativeProfiler implements SentryProfiler { + final SentryNative _native; + final int _starTimeNs; + final SentryId _traceId; + bool _finished = false; + final ClockProvider _clock; + + SentryNativeProfiler( + this._native, this._starTimeNs, this._traceId, this._clock); + + @override + void dispose() { + if (!_finished) { + _finished = true; + _native.discardProfiler(_traceId); + } + } + + @override + Future finishFor( + SentryTransaction transaction) async { + if (_finished) { + return null; + } + _finished = true; + + // ignore: invalid_use_of_internal_member + final transactionEndTime = transaction.timestamp ?? _clock(); + final duration = transactionEndTime.difference(transaction.startTimestamp); + final endTimeNs = _starTimeNs + (duration.inMicroseconds * 1000); + + final payload = + await _native.collectProfile(_traceId, _starTimeNs, endTimeNs); + if (payload == null) { + return null; + } + + payload["transaction"]["id"] = transaction.eventId.toString(); + payload["transaction"]["trace_id"] = _traceId.toString(); + payload["transaction"]["name"] = transaction.transaction; + payload["timestamp"] = transaction.startTimestamp.toIso8601String(); + return SentryNativeProfileInfo(payload); + } +} + +// ignore: invalid_use_of_internal_member +class SentryNativeProfileInfo implements SentryProfileInfo { + final Map _payload; + // ignore: invalid_use_of_internal_member + late final List _data = utf8JsonEncoder.convert(_payload); + + SentryNativeProfileInfo(this._payload); + + @override + SentryEnvelopeItem asEnvelopeItem() { + final header = SentryEnvelopeItemHeader( + SentryItemType.profile, + () => Future.value(_data.length), + contentType: 'application/json', + ); + return SentryEnvelopeItem(header, () => Future.value(_data)); + } +} diff --git a/flutter/lib/src/sentry_flutter.dart b/flutter/lib/src/sentry_flutter.dart index 688f10aac0..d1fd8ef1c2 100644 --- a/flutter/lib/src/sentry_flutter.dart +++ b/flutter/lib/src/sentry_flutter.dart @@ -10,10 +10,11 @@ import 'event_processor/android_platform_exception_event_processor.dart'; import 'event_processor/flutter_exception_event_processor.dart'; import 'event_processor/platform_exception_event_processor.dart'; import 'integrations/screenshot_integration.dart'; +import 'native/factory.dart'; import 'native/native_scope_observer.dart'; +import 'profiling.dart'; import 'renderer/renderer.dart'; import 'native/sentry_native.dart'; -import 'native/sentry_native_channel.dart'; import 'integrations/integrations.dart'; import 'event_processor/flutter_enricher_event_processor.dart'; @@ -48,9 +49,8 @@ mixin SentryFlutter { } if (flutterOptions.platformChecker.hasNativeIntegration) { - // Set a default native channel to the singleton SentryNative instance. - SentryNative().nativeChannel = - SentryNativeChannel(channel, flutterOptions); + final binding = createBinding(flutterOptions.platformChecker, channel); + _native = SentryNative(flutterOptions, binding); } final platformDispatcher = PlatformDispatcher.instance; @@ -81,9 +81,7 @@ mixin SentryFlutter { await _initDefaultValues(flutterOptions, channel); await Sentry.init( - (options) async { - await optionsConfiguration(options as SentryFlutterOptions); - }, + (options) => optionsConfiguration(options as SentryFlutterOptions), appRunner: appRunner, // ignore: invalid_use_of_internal_member options: flutterOptions, @@ -92,6 +90,11 @@ mixin SentryFlutter { // ignore: invalid_use_of_internal_member runZonedGuardedOnError: runZonedGuardedOnError, ); + + if (_native != null) { + // ignore: invalid_use_of_internal_member + SentryNativeProfilerFactory.attachTo(Sentry.currentHub, _native!); + } } static Future _initDefaultValues( @@ -101,9 +104,9 @@ mixin SentryFlutter { options.addEventProcessor(FlutterExceptionEventProcessor()); // Not all platforms have a native integration. - if (options.platformChecker.hasNativeIntegration) { + if (_native != null) { options.transport = FileSystemTransport(channel, options); - options.addScopeObserver(NativeScopeObserver(SentryNative())); + options.addScopeObserver(NativeScopeObserver(_native!)); } var flutterEventProcessor = FlutterEnricherEventProcessor(options); @@ -179,9 +182,9 @@ mixin SentryFlutter { // in errors. integrations.add(LoadReleaseIntegration()); - if (platformChecker.hasNativeIntegration) { + if (_native != null) { integrations.add(NativeAppStartIntegration( - SentryNative(), + _native!, () { try { /// Flutter >= 2.12 throws if SchedulerBinding.instance isn't initialized. @@ -207,7 +210,7 @@ mixin SentryFlutter { /// Manually set when your app finished startup. Make sure to set /// [SentryFlutterOptions.autoAppStart] to false on init. static void setAppStartEnd(DateTime appStartEnd) { - SentryNative().appStartEnd = appStartEnd; + _native?.appStartEnd = appStartEnd; } static void _setSdk(SentryFlutterOptions options) { @@ -221,4 +224,10 @@ mixin SentryFlutter { sdk.addPackage('pub:sentry_flutter', sdkVersion); options.sdk = sdk; } + + @internal + static SentryNative? get native => _native; + @internal + static set native(SentryNative? value) => _native = value; + static SentryNative? _native; } diff --git a/flutter/lib/src/sentry_flutter_options.dart b/flutter/lib/src/sentry_flutter_options.dart index a1d7755c3c..5f85e85cb0 100644 --- a/flutter/lib/src/sentry_flutter_options.dart +++ b/flutter/lib/src/sentry_flutter_options.dart @@ -263,4 +263,24 @@ class SentryFlutterOptions extends SentryOptions { /// Setting this to a custom [BindingWrapper] allows you to use a custom [WidgetsBinding]. @experimental BindingWrapper bindingUtils = BindingWrapper(); + + /// The sample rate for profiling traces in the range of 0.0 to 1.0. + /// This is relative to tracesSampleRate - it is a ratio of profiled traces out of all sampled traces. + /// At the moment, only apps targeting iOS and macOS are supported. + @override + @experimental + double? get profilesSampleRate { + // ignore: invalid_use_of_internal_member + return super.profilesSampleRate; + } + + /// The sample rate for profiling traces in the range of 0.0 to 1.0. + /// This is relative to tracesSampleRate - it is a ratio of profiled traces out of all sampled traces. + /// At the moment, only apps targeting iOS and macOS are supported. + @override + @experimental + set profilesSampleRate(double? value) { + // ignore: invalid_use_of_internal_member + super.profilesSampleRate = value; + } } diff --git a/flutter/test/integrations/native_app_start_integration_test.dart b/flutter/test/integrations/native_app_start_integration_test.dart index b4e06183c1..d4b8deaaf5 100644 --- a/flutter/test/integrations/native_app_start_integration_test.dart +++ b/flutter/test/integrations/native_app_start_integration_test.dart @@ -23,7 +23,7 @@ void main() { test('native app start measurement added to first transaction', () async { fixture.options.autoAppStart = false; fixture.native.appStartEnd = DateTime.fromMillisecondsSinceEpoch(10); - fixture.wrapper.nativeAppStart = NativeAppStart(0, true); + fixture.binding.nativeAppStart = NativeAppStart(0, true); fixture.getNativeAppStartIntegration().call(fixture.hub, fixture.options); @@ -42,7 +42,7 @@ void main() { () async { fixture.options.autoAppStart = false; fixture.native.appStartEnd = DateTime.fromMillisecondsSinceEpoch(10); - fixture.wrapper.nativeAppStart = NativeAppStart(0, true); + fixture.binding.nativeAppStart = NativeAppStart(0, true); fixture.getNativeAppStartIntegration().call(fixture.hub, fixture.options); @@ -60,7 +60,7 @@ void main() { test('measurements appended', () async { fixture.options.autoAppStart = false; fixture.native.appStartEnd = DateTime.fromMillisecondsSinceEpoch(10); - fixture.wrapper.nativeAppStart = NativeAppStart(0, true); + fixture.binding.nativeAppStart = NativeAppStart(0, true); final measurement = SentryMeasurement.warmAppStart(Duration(seconds: 1)); fixture.getNativeAppStartIntegration().call(fixture.hub, fixture.options); @@ -81,7 +81,7 @@ void main() { test('native app start measurement not added if more than 60s', () async { fixture.options.autoAppStart = false; fixture.native.appStartEnd = DateTime.fromMillisecondsSinceEpoch(60001); - fixture.wrapper.nativeAppStart = NativeAppStart(0, true); + fixture.binding.nativeAppStart = NativeAppStart(0, true); fixture.getNativeAppStartIntegration().call(fixture.hub, fixture.options); @@ -99,11 +99,10 @@ void main() { class Fixture { final hub = MockHub(); final options = SentryFlutterOptions(dsn: fakeDsn); - final wrapper = MockNativeChannel(); - late final native = SentryNative(); + final binding = MockNativeChannel(); + late final native = SentryNative(options, binding); Fixture() { - native.nativeChannel = wrapper; native.reset(); when(hub.options).thenReturn(options); } diff --git a/flutter/test/mocks.dart b/flutter/test/mocks.dart index 39209f7015..fe032c9271 100644 --- a/flutter/test/mocks.dart +++ b/flutter/test/mocks.dart @@ -4,15 +4,14 @@ import 'package:flutter/services.dart'; import 'package:flutter/src/widgets/binding.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/annotations.dart'; -import 'package:sentry/sentry.dart'; import 'package:sentry/src/platform/platform.dart'; import 'package:sentry/src/sentry_tracer.dart'; import 'package:meta/meta.dart'; -import 'package:sentry_flutter/src/binding_wrapper.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sentry_flutter/src/renderer/renderer.dart'; import 'package:sentry_flutter/src/native/sentry_native.dart'; -import 'package:sentry_flutter/src/native/sentry_native_channel.dart'; +import 'package:sentry_flutter/src/native/sentry_native_binding.dart'; import 'mocks.mocks.dart'; import 'no_such_method_provider.dart'; @@ -20,6 +19,12 @@ import 'no_such_method_provider.dart'; const fakeDsn = 'https://abc@def.ingest.sentry.io/1234567'; const fakeProguardUuid = '3457d982-65ef-576d-a6ad-65b5f30f49a5'; +// TODO use this everywhere in tests so that we don't get exceptions swallowed. +SentryFlutterOptions defaultTestOptions() { + // ignore: invalid_use_of_internal_member + return SentryFlutterOptions(dsn: fakeDsn)..automatedTestMode = true; +} + // https://github.com/dart-lang/mockito/blob/master/NULL_SAFETY_README.md#fallback-generators ISentrySpan startTransactionShim( String? name, @@ -40,8 +45,8 @@ ISentrySpan startTransactionShim( Transport, // ignore: invalid_use_of_internal_member SentryTracer, + SentryTransaction, MethodChannel, - SentryNative, ], customMocks: [ MockSpec(fallbackGenerators: {#startTransaction: startTransactionShim}) ]) @@ -146,7 +151,7 @@ class MockPlatformChecker with NoSuchMethodProvider implements PlatformChecker { // Does nothing or returns default values. // Useful for when a Hub needs to be passed but is not used. class NoOpHub with NoSuchMethodProvider implements Hub { - final _options = SentryOptions(dsn: 'fixture-dsn'); + final _options = defaultTestOptions(); @override @internal @@ -156,13 +161,11 @@ class NoOpHub with NoSuchMethodProvider implements Hub { bool get isEnabled => false; } +// TODO can this be replaced with https://pub.dev/packages/mockito#verifying-exact-number-of-invocations--at-least-x--never class TestMockSentryNative implements SentryNative { @override DateTime? appStartEnd; - @override - SentryNativeChannel? nativeChannel; - bool _didFetchAppStart = false; @override @@ -189,6 +192,9 @@ class TestMockSentryNative implements SentryNative { var numberOfSetTagCalls = 0; SentryUser? sentryUser; var numberOfSetUserCalls = 0; + var numberOfStartProfilerCalls = 0; + var numberOfDiscardProfilerCalls = 0; + var numberOfCollectProfileCalls = 0; @override Future addBreadcrumb(Breadcrumb breadcrumb) async { @@ -265,9 +271,29 @@ class TestMockSentryNative implements SentryNative { this.sentryUser = sentryUser; numberOfSetUserCalls++; } + + @override + Future?> collectProfile( + SentryId traceId, int startTimeNs, int endTimeNs) { + numberOfCollectProfileCalls++; + return Future.value(null); + } + + @override + int? startProfiler(SentryId traceId) { + numberOfStartProfilerCalls++; + return 42; + } + + @override + Future discardProfiler(SentryId traceId) { + numberOfDiscardProfilerCalls++; + return Future.value(null); + } } -class MockNativeChannel implements SentryNativeChannel { +// TODO can this be replaced with https://pub.dev/packages/mockito#verifying-exact-number-of-invocations--at-least-x--never +class MockNativeChannel implements SentryNativeBinding { NativeAppStart? nativeAppStart; NativeFrames? nativeFrames; SentryId? id; @@ -283,6 +309,9 @@ class MockNativeChannel implements SentryNativeChannel { int numberOfSetContextsCalls = 0; int numberOfSetExtraCalls = 0; int numberOfSetTagCalls = 0; + int numberOfStartProfilerCalls = 0; + int numberOfDiscardProfilerCalls = 0; + int numberOfCollectProfileCalls = 0; @override Future fetchNativeAppStart() async => nativeAppStart; @@ -343,6 +372,25 @@ class MockNativeChannel implements SentryNativeChannel { Future setTag(String key, value) async { numberOfSetTagCalls += 1; } + + @override + Future?> collectProfile( + SentryId traceId, int startTimeNs, int endTimeNs) { + numberOfCollectProfileCalls++; + return Future.value(null); + } + + @override + int? startProfiler(SentryId traceId) { + numberOfStartProfilerCalls++; + return null; + } + + @override + Future discardProfiler(SentryId traceId) { + numberOfDiscardProfilerCalls++; + return Future.value(null); + } } class MockRendererWrapper implements RendererWrapper { diff --git a/flutter/test/mocks.mocks.dart b/flutter/test/mocks.mocks.dart index b92e8cfba8..45a91b1b0f 100644 --- a/flutter/test/mocks.mocks.dart +++ b/flutter/test/mocks.mocks.dart @@ -3,20 +3,19 @@ // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'dart:async' as _i6; +import 'dart:async' as _i7; -import 'package:flutter/src/services/binary_messenger.dart' as _i5; -import 'package:flutter/src/services/message_codec.dart' as _i4; -import 'package:flutter/src/services/platform_channel.dart' as _i9; +import 'package:flutter/src/services/binary_messenger.dart' as _i6; +import 'package:flutter/src/services/message_codec.dart' as _i5; +import 'package:flutter/src/services/platform_channel.dart' as _i10; import 'package:mockito/mockito.dart' as _i1; import 'package:sentry/sentry.dart' as _i2; +import 'package:sentry/src/profiling.dart' as _i9; import 'package:sentry/src/protocol.dart' as _i3; -import 'package:sentry/src/sentry_envelope.dart' as _i7; -import 'package:sentry/src/sentry_tracer.dart' as _i8; -import 'package:sentry_flutter/src/native/sentry_native.dart' as _i10; -import 'package:sentry_flutter/src/native/sentry_native_channel.dart' as _i11; +import 'package:sentry/src/sentry_envelope.dart' as _i8; +import 'package:sentry/src/sentry_tracer.dart' as _i4; -import 'mocks.dart' as _i12; +import 'mocks.dart' as _i11; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -71,8 +70,8 @@ class _FakeSentryTraceHeader_3 extends _i1.SmartFake ); } -class _FakeMethodCodec_4 extends _i1.SmartFake implements _i4.MethodCodec { - _FakeMethodCodec_4( +class _FakeSentryTracer_4 extends _i1.SmartFake implements _i4.SentryTracer { + _FakeSentryTracer_4( Object parent, Invocation parentInvocation, ) : super( @@ -81,9 +80,9 @@ class _FakeMethodCodec_4 extends _i1.SmartFake implements _i4.MethodCodec { ); } -class _FakeBinaryMessenger_5 extends _i1.SmartFake - implements _i5.BinaryMessenger { - _FakeBinaryMessenger_5( +class _FakeSentryTransaction_5 extends _i1.SmartFake + implements _i3.SentryTransaction { + _FakeSentryTransaction_5( Object parent, Invocation parentInvocation, ) : super( @@ -92,8 +91,8 @@ class _FakeBinaryMessenger_5 extends _i1.SmartFake ); } -class _FakeSentryOptions_6 extends _i1.SmartFake implements _i2.SentryOptions { - _FakeSentryOptions_6( +class _FakeMethodCodec_6 extends _i1.SmartFake implements _i5.MethodCodec { + _FakeMethodCodec_6( Object parent, Invocation parentInvocation, ) : super( @@ -102,8 +101,9 @@ class _FakeSentryOptions_6 extends _i1.SmartFake implements _i2.SentryOptions { ); } -class _FakeSentryId_7 extends _i1.SmartFake implements _i3.SentryId { - _FakeSentryId_7( +class _FakeBinaryMessenger_7 extends _i1.SmartFake + implements _i6.BinaryMessenger { + _FakeBinaryMessenger_7( Object parent, Invocation parentInvocation, ) : super( @@ -112,8 +112,8 @@ class _FakeSentryId_7 extends _i1.SmartFake implements _i3.SentryId { ); } -class _FakeScope_8 extends _i1.SmartFake implements _i2.Scope { - _FakeScope_8( +class _FakeSentryOptions_8 extends _i1.SmartFake implements _i2.SentryOptions { + _FakeSentryOptions_8( Object parent, Invocation parentInvocation, ) : super( @@ -122,8 +122,28 @@ class _FakeScope_8 extends _i1.SmartFake implements _i2.Scope { ); } -class _FakeHub_9 extends _i1.SmartFake implements _i2.Hub { - _FakeHub_9( +class _FakeSentryId_9 extends _i1.SmartFake implements _i3.SentryId { + _FakeSentryId_9( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeScope_10 extends _i1.SmartFake implements _i2.Scope { + _FakeScope_10( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeHub_11 extends _i1.SmartFake implements _i2.Hub { + _FakeHub_11( Object parent, Invocation parentInvocation, ) : super( @@ -141,20 +161,20 @@ class MockTransport extends _i1.Mock implements _i2.Transport { } @override - _i6.Future<_i3.SentryId?> send(_i7.SentryEnvelope? envelope) => + _i7.Future<_i3.SentryId?> send(_i8.SentryEnvelope? envelope) => (super.noSuchMethod( Invocation.method( #send, [envelope], ), - returnValue: _i6.Future<_i3.SentryId?>.value(), - ) as _i6.Future<_i3.SentryId?>); + returnValue: _i7.Future<_i3.SentryId?>.value(), + ) as _i7.Future<_i3.SentryId?>); } /// A class which mocks [SentryTracer]. /// /// See the documentation for Mockito's code generation for more information. -class MockSentryTracer extends _i1.Mock implements _i8.SentryTracer { +class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { MockSentryTracer() { _i1.throwOnMissingStub(this); } @@ -189,6 +209,22 @@ class MockSentryTracer extends _i1.Mock implements _i8.SentryTracer { returnValueForMissingStub: null, ); @override + set profiler(_i9.SentryProfiler? _profiler) => super.noSuchMethod( + Invocation.setter( + #profiler, + _profiler, + ), + returnValueForMissingStub: null, + ); + @override + set profileInfo(_i9.SentryProfileInfo? _profileInfo) => super.noSuchMethod( + Invocation.setter( + #profileInfo, + _profileInfo, + ), + returnValueForMissingStub: null, + ); + @override _i2.SentrySpanContext get context => (super.noSuchMethod( Invocation.getter(#context), returnValue: _FakeSentrySpanContext_0( @@ -236,7 +272,7 @@ class MockSentryTracer extends _i1.Mock implements _i8.SentryTracer { returnValueForMissingStub: null, ); @override - set status(_i3.SpanStatus? status) => super.noSuchMethod( + set status(dynamic status) => super.noSuchMethod( Invocation.setter( #status, status, @@ -254,8 +290,8 @@ class MockSentryTracer extends _i1.Mock implements _i8.SentryTracer { returnValue: {}, ) as Map); @override - _i6.Future finish({ - _i3.SpanStatus? status, + _i7.Future finish({ + dynamic status, DateTime? endTimestamp, }) => (super.noSuchMethod( @@ -267,9 +303,9 @@ class MockSentryTracer extends _i1.Mock implements _i8.SentryTracer { #endTimestamp: endTimestamp, }, ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override void removeData(String? key) => super.noSuchMethod( Invocation.method( @@ -345,7 +381,7 @@ class MockSentryTracer extends _i1.Mock implements _i8.SentryTracer { ) as _i2.ISentrySpan); @override _i2.ISentrySpan startChildWithParentSpanId( - _i3.SpanId? parentSpanId, + dynamic parentSpanId, String? operation, { String? description, DateTime? startTimestamp, @@ -418,10 +454,203 @@ class MockSentryTracer extends _i1.Mock implements _i8.SentryTracer { ); } +/// A class which mocks [SentryTransaction]. +/// +/// See the documentation for Mockito's code generation for more information. +// ignore: must_be_immutable +class MockSentryTransaction extends _i1.Mock implements _i3.SentryTransaction { + MockSentryTransaction() { + _i1.throwOnMissingStub(this); + } + + @override + DateTime get startTimestamp => (super.noSuchMethod( + Invocation.getter(#startTimestamp), + returnValue: _FakeDateTime_1( + this, + Invocation.getter(#startTimestamp), + ), + ) as DateTime); + @override + set startTimestamp(DateTime? _startTimestamp) => super.noSuchMethod( + Invocation.setter( + #startTimestamp, + _startTimestamp, + ), + returnValueForMissingStub: null, + ); + @override + List<_i3.SentrySpan> get spans => (super.noSuchMethod( + Invocation.getter(#spans), + returnValue: <_i3.SentrySpan>[], + ) as List<_i3.SentrySpan>); + @override + set spans(List<_i3.SentrySpan>? _spans) => super.noSuchMethod( + Invocation.setter( + #spans, + _spans, + ), + returnValueForMissingStub: null, + ); + @override + _i4.SentryTracer get tracer => (super.noSuchMethod( + Invocation.getter(#tracer), + returnValue: _FakeSentryTracer_4( + this, + Invocation.getter(#tracer), + ), + ) as _i4.SentryTracer); + @override + Map get measurements => (super.noSuchMethod( + Invocation.getter(#measurements), + returnValue: {}, + ) as Map); + @override + set measurements(Map? _measurements) => + super.noSuchMethod( + Invocation.setter( + #measurements, + _measurements, + ), + returnValueForMissingStub: null, + ); + @override + set transactionInfo(_i3.SentryTransactionInfo? _transactionInfo) => + super.noSuchMethod( + Invocation.setter( + #transactionInfo, + _transactionInfo, + ), + returnValueForMissingStub: null, + ); + @override + bool get finished => (super.noSuchMethod( + Invocation.getter(#finished), + returnValue: false, + ) as bool); + @override + bool get sampled => (super.noSuchMethod( + Invocation.getter(#sampled), + returnValue: false, + ) as bool); + @override + Map toJson() => (super.noSuchMethod( + Invocation.method( + #toJson, + [], + ), + returnValue: {}, + ) as Map); + @override + _i3.SentryTransaction copyWith({ + _i3.SentryId? eventId, + DateTime? timestamp, + String? platform, + String? logger, + String? serverName, + String? release, + String? dist, + String? environment, + Map? modules, + dynamic message, + String? transaction, + dynamic throwable, + _i3.SentryLevel? level, + String? culprit, + Map? tags, + Map? extra, + List? fingerprint, + _i3.SentryUser? user, + dynamic contexts, + List<_i3.Breadcrumb>? breadcrumbs, + _i3.SdkVersion? sdk, + dynamic request, + dynamic debugMeta, + List<_i3.SentryException>? exceptions, + List? threads, + String? type, + Map? measurements, + _i3.SentryTransactionInfo? transactionInfo, + }) => + (super.noSuchMethod( + Invocation.method( + #copyWith, + [], + { + #eventId: eventId, + #timestamp: timestamp, + #platform: platform, + #logger: logger, + #serverName: serverName, + #release: release, + #dist: dist, + #environment: environment, + #modules: modules, + #message: message, + #transaction: transaction, + #throwable: throwable, + #level: level, + #culprit: culprit, + #tags: tags, + #extra: extra, + #fingerprint: fingerprint, + #user: user, + #contexts: contexts, + #breadcrumbs: breadcrumbs, + #sdk: sdk, + #request: request, + #debugMeta: debugMeta, + #exceptions: exceptions, + #threads: threads, + #type: type, + #measurements: measurements, + #transactionInfo: transactionInfo, + }, + ), + returnValue: _FakeSentryTransaction_5( + this, + Invocation.method( + #copyWith, + [], + { + #eventId: eventId, + #timestamp: timestamp, + #platform: platform, + #logger: logger, + #serverName: serverName, + #release: release, + #dist: dist, + #environment: environment, + #modules: modules, + #message: message, + #transaction: transaction, + #throwable: throwable, + #level: level, + #culprit: culprit, + #tags: tags, + #extra: extra, + #fingerprint: fingerprint, + #user: user, + #contexts: contexts, + #breadcrumbs: breadcrumbs, + #sdk: sdk, + #request: request, + #debugMeta: debugMeta, + #exceptions: exceptions, + #threads: threads, + #type: type, + #measurements: measurements, + #transactionInfo: transactionInfo, + }, + ), + ), + ) as _i3.SentryTransaction); +} + /// A class which mocks [MethodChannel]. /// /// See the documentation for Mockito's code generation for more information. -class MockMethodChannel extends _i1.Mock implements _i9.MethodChannel { +class MockMethodChannel extends _i1.Mock implements _i10.MethodChannel { MockMethodChannel() { _i1.throwOnMissingStub(this); } @@ -432,23 +661,23 @@ class MockMethodChannel extends _i1.Mock implements _i9.MethodChannel { returnValue: '', ) as String); @override - _i4.MethodCodec get codec => (super.noSuchMethod( + _i5.MethodCodec get codec => (super.noSuchMethod( Invocation.getter(#codec), - returnValue: _FakeMethodCodec_4( + returnValue: _FakeMethodCodec_6( this, Invocation.getter(#codec), ), - ) as _i4.MethodCodec); + ) as _i5.MethodCodec); @override - _i5.BinaryMessenger get binaryMessenger => (super.noSuchMethod( + _i6.BinaryMessenger get binaryMessenger => (super.noSuchMethod( Invocation.getter(#binaryMessenger), - returnValue: _FakeBinaryMessenger_5( + returnValue: _FakeBinaryMessenger_7( this, Invocation.getter(#binaryMessenger), ), - ) as _i5.BinaryMessenger); + ) as _i6.BinaryMessenger); @override - _i6.Future invokeMethod( + _i7.Future invokeMethod( String? method, [ dynamic arguments, ]) => @@ -460,10 +689,10 @@ class MockMethodChannel extends _i1.Mock implements _i9.MethodChannel { arguments, ], ), - returnValue: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future?> invokeListMethod( + _i7.Future?> invokeListMethod( String? method, [ dynamic arguments, ]) => @@ -475,10 +704,10 @@ class MockMethodChannel extends _i1.Mock implements _i9.MethodChannel { arguments, ], ), - returnValue: _i6.Future?>.value(), - ) as _i6.Future?>); + returnValue: _i7.Future?>.value(), + ) as _i7.Future?>); @override - _i6.Future?> invokeMapMethod( + _i7.Future?> invokeMapMethod( String? method, [ dynamic arguments, ]) => @@ -490,11 +719,11 @@ class MockMethodChannel extends _i1.Mock implements _i9.MethodChannel { arguments, ], ), - returnValue: _i6.Future?>.value(), - ) as _i6.Future?>); + returnValue: _i7.Future?>.value(), + ) as _i7.Future?>); @override void setMethodCallHandler( - _i6.Future Function(_i4.MethodCall)? handler) => + _i7.Future Function(_i5.MethodCall)? handler) => super.noSuchMethod( Invocation.method( #setMethodCallHandler, @@ -504,176 +733,6 @@ class MockMethodChannel extends _i1.Mock implements _i9.MethodChannel { ); } -/// A class which mocks [SentryNative]. -/// -/// See the documentation for Mockito's code generation for more information. -class MockSentryNative extends _i1.Mock implements _i10.SentryNative { - MockSentryNative() { - _i1.throwOnMissingStub(this); - } - - @override - set appStartEnd(DateTime? _appStartEnd) => super.noSuchMethod( - Invocation.setter( - #appStartEnd, - _appStartEnd, - ), - returnValueForMissingStub: null, - ); - @override - set nativeChannel(_i11.SentryNativeChannel? nativeChannel) => - super.noSuchMethod( - Invocation.setter( - #nativeChannel, - nativeChannel, - ), - returnValueForMissingStub: null, - ); - @override - bool get didFetchAppStart => (super.noSuchMethod( - Invocation.getter(#didFetchAppStart), - returnValue: false, - ) as bool); - @override - _i6.Future<_i10.NativeAppStart?> fetchNativeAppStart() => (super.noSuchMethod( - Invocation.method( - #fetchNativeAppStart, - [], - ), - returnValue: _i6.Future<_i10.NativeAppStart?>.value(), - ) as _i6.Future<_i10.NativeAppStart?>); - @override - _i6.Future beginNativeFramesCollection() => (super.noSuchMethod( - Invocation.method( - #beginNativeFramesCollection, - [], - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - @override - _i6.Future<_i10.NativeFrames?> endNativeFramesCollection( - _i3.SentryId? traceId) => - (super.noSuchMethod( - Invocation.method( - #endNativeFramesCollection, - [traceId], - ), - returnValue: _i6.Future<_i10.NativeFrames?>.value(), - ) as _i6.Future<_i10.NativeFrames?>); - @override - _i6.Future setContexts( - String? key, - dynamic value, - ) => - (super.noSuchMethod( - Invocation.method( - #setContexts, - [ - key, - value, - ], - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - @override - _i6.Future removeContexts(String? key) => (super.noSuchMethod( - Invocation.method( - #removeContexts, - [key], - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - @override - _i6.Future setUser(_i3.SentryUser? sentryUser) => (super.noSuchMethod( - Invocation.method( - #setUser, - [sentryUser], - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - @override - _i6.Future addBreadcrumb(_i3.Breadcrumb? breadcrumb) => - (super.noSuchMethod( - Invocation.method( - #addBreadcrumb, - [breadcrumb], - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - @override - _i6.Future clearBreadcrumbs() => (super.noSuchMethod( - Invocation.method( - #clearBreadcrumbs, - [], - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - @override - _i6.Future setExtra( - String? key, - dynamic value, - ) => - (super.noSuchMethod( - Invocation.method( - #setExtra, - [ - key, - value, - ], - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - @override - _i6.Future removeExtra(String? key) => (super.noSuchMethod( - Invocation.method( - #removeExtra, - [key], - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - @override - _i6.Future setTag( - String? key, - String? value, - ) => - (super.noSuchMethod( - Invocation.method( - #setTag, - [ - key, - value, - ], - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - @override - _i6.Future removeTag(String? key) => (super.noSuchMethod( - Invocation.method( - #removeTag, - [key], - ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); - @override - void reset() => super.noSuchMethod( - Invocation.method( - #reset, - [], - ), - returnValueForMissingStub: null, - ); -} - /// A class which mocks [Hub]. /// /// See the documentation for Mockito's code generation for more information. @@ -685,7 +744,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { @override _i2.SentryOptions get options => (super.noSuchMethod( Invocation.getter(#options), - returnValue: _FakeSentryOptions_6( + returnValue: _FakeSentryOptions_8( this, Invocation.getter(#options), ), @@ -698,7 +757,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { @override _i3.SentryId get lastEventId => (super.noSuchMethod( Invocation.getter(#lastEventId), - returnValue: _FakeSentryId_7( + returnValue: _FakeSentryId_9( this, Invocation.getter(#lastEventId), ), @@ -706,14 +765,22 @@ class MockHub extends _i1.Mock implements _i2.Hub { @override _i2.Scope get scope => (super.noSuchMethod( Invocation.getter(#scope), - returnValue: _FakeScope_8( + returnValue: _FakeScope_10( this, Invocation.getter(#scope), ), ) as _i2.Scope); @override - _i6.Future<_i3.SentryId> captureEvent( - _i3.SentryEvent? event, { + set profilerFactory(_i9.SentryProfilerFactory? value) => super.noSuchMethod( + Invocation.setter( + #profilerFactory, + value, + ), + returnValueForMissingStub: null, + ); + @override + _i7.Future<_i3.SentryId> captureEvent( + dynamic event, { dynamic stackTrace, _i2.Hint? hint, _i2.ScopeCallback? withScope, @@ -728,7 +795,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { #withScope: withScope, }, ), - returnValue: _i6.Future<_i3.SentryId>.value(_FakeSentryId_7( + returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_9( this, Invocation.method( #captureEvent, @@ -740,9 +807,9 @@ class MockHub extends _i1.Mock implements _i2.Hub { }, ), )), - ) as _i6.Future<_i3.SentryId>); + ) as _i7.Future<_i3.SentryId>); @override - _i6.Future<_i3.SentryId> captureException( + _i7.Future<_i3.SentryId> captureException( dynamic throwable, { dynamic stackTrace, _i2.Hint? hint, @@ -758,7 +825,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { #withScope: withScope, }, ), - returnValue: _i6.Future<_i3.SentryId>.value(_FakeSentryId_7( + returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_9( this, Invocation.method( #captureException, @@ -770,9 +837,9 @@ class MockHub extends _i1.Mock implements _i2.Hub { }, ), )), - ) as _i6.Future<_i3.SentryId>); + ) as _i7.Future<_i3.SentryId>); @override - _i6.Future<_i3.SentryId> captureMessage( + _i7.Future<_i3.SentryId> captureMessage( String? message, { _i3.SentryLevel? level, String? template, @@ -792,7 +859,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { #withScope: withScope, }, ), - returnValue: _i6.Future<_i3.SentryId>.value(_FakeSentryId_7( + returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_9( this, Invocation.method( #captureMessage, @@ -806,19 +873,19 @@ class MockHub extends _i1.Mock implements _i2.Hub { }, ), )), - ) as _i6.Future<_i3.SentryId>); + ) as _i7.Future<_i3.SentryId>); @override - _i6.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => + _i7.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => (super.noSuchMethod( Invocation.method( #captureUserFeedback, [userFeedback], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.Future addBreadcrumb( + _i7.Future addBreadcrumb( _i3.Breadcrumb? crumb, { _i2.Hint? hint, }) => @@ -828,9 +895,9 @@ class MockHub extends _i1.Mock implements _i2.Hub { [crumb], {#hint: hint}, ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override void bindClient(_i2.SentryClient? client) => super.noSuchMethod( Invocation.method( @@ -845,7 +912,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { #clone, [], ), - returnValue: _FakeHub_9( + returnValue: _FakeHub_11( this, Invocation.method( #clone, @@ -854,20 +921,20 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), ) as _i2.Hub); @override - _i6.Future close() => (super.noSuchMethod( + _i7.Future close() => (super.noSuchMethod( Invocation.method( #close, [], ), - returnValue: _i6.Future.value(), - returnValueForMissingStub: _i6.Future.value(), - ) as _i6.Future); + returnValue: _i7.Future.value(), + returnValueForMissingStub: _i7.Future.value(), + ) as _i7.Future); @override - _i6.FutureOr configureScope(_i2.ScopeCallback? callback) => + _i7.FutureOr configureScope(_i2.ScopeCallback? callback) => (super.noSuchMethod(Invocation.method( #configureScope, [callback], - )) as _i6.FutureOr); + )) as _i7.FutureOr); @override _i2.ISentrySpan startTransaction( String? name, @@ -899,7 +966,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { #customSamplingContext: customSamplingContext, }, ), - returnValue: _i12.startTransactionShim( + returnValue: _i11.startTransactionShim( name, operation, description: description, @@ -955,7 +1022,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), ) as _i2.ISentrySpan); @override - _i6.Future<_i3.SentryId> captureTransaction( + _i7.Future<_i3.SentryId> captureTransaction( _i3.SentryTransaction? transaction, { _i2.SentryTraceContextHeader? traceContext, }) => @@ -965,7 +1032,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { [transaction], {#traceContext: traceContext}, ), - returnValue: _i6.Future<_i3.SentryId>.value(_FakeSentryId_7( + returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_9( this, Invocation.method( #captureTransaction, @@ -973,7 +1040,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { {#traceContext: traceContext}, ), )), - ) as _i6.Future<_i3.SentryId>); + ) as _i7.Future<_i3.SentryId>); @override void setSpanContext( dynamic throwable, diff --git a/flutter/test/profiling_test.dart b/flutter/test/profiling_test.dart new file mode 100644 index 0000000000..eddb391313 --- /dev/null +++ b/flutter/test/profiling_test.dart @@ -0,0 +1,95 @@ +@TestOn('vm') + +import 'package:flutter_test/flutter_test.dart'; +import 'package:mockito/mockito.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:sentry_flutter/src/profiling.dart'; +import 'mocks.dart'; +import 'mocks.mocks.dart'; +import 'sentry_flutter_test.dart'; + +void main() { + group('$SentryNativeProfilerFactory', () { + Hub hubWithSampleRate(double profilesSampleRate) { + final o = SentryFlutterOptions(dsn: fakeDsn); + o.platformChecker = getPlatformChecker(platform: MockPlatform.iOs()); + o.profilesSampleRate = profilesSampleRate; + + final hub = MockHub(); + when(hub.options).thenAnswer((_) => o); + return hub; + } + + test('attachTo() respects sampling rate', () async { + var hub = hubWithSampleRate(0.0); + SentryNativeProfilerFactory.attachTo(hub, TestMockSentryNative()); + // ignore: invalid_use_of_internal_member + verifyNever(hub.profilerFactory = any); + + hub = hubWithSampleRate(0.1); + SentryNativeProfilerFactory.attachTo(hub, TestMockSentryNative()); + // ignore: invalid_use_of_internal_member + verify(hub.profilerFactory = any); + }); + + test('creates a profiler', () async { + final nativeMock = TestMockSentryNative(); + // ignore: invalid_use_of_internal_member + final sut = SentryNativeProfilerFactory(nativeMock, getUtcDateTime); + final profiler = sut.startProfiler(SentryTransactionContext( + 'name', + 'op', + )); + expect(nativeMock.numberOfStartProfilerCalls, 1); + expect(profiler, isNotNull); + }); + }); + + group('$SentryNativeProfiler', () { + late TestMockSentryNative nativeMock; + late SentryNativeProfiler sut; + + setUp(() { + nativeMock = TestMockSentryNative(); + // ignore: invalid_use_of_internal_member + final factory = SentryNativeProfilerFactory(nativeMock, getUtcDateTime); + final profiler = factory.startProfiler(SentryTransactionContext( + 'name', + 'op', + )); + expect(nativeMock.numberOfStartProfilerCalls, 1); + expect(profiler, isNotNull); + sut = profiler!; + }); + + test('dispose() calls native discard() exactly once', () async { + sut.dispose(); + sut.dispose(); // Additional calls must not have an effect. + + // Yield to let the .then() in .dispose() execute. + await null; + await null; + + expect(nativeMock.numberOfDiscardProfilerCalls, 1); + + // finishFor() mustn't work after disposing + expect(await sut.finishFor(MockSentryTransaction()), isNull); + expect(nativeMock.numberOfCollectProfileCalls, 0); + }); + + test('dispose() does not call discard() after finishing', () async { + final mockTransaction = MockSentryTransaction(); + when(mockTransaction.startTimestamp).thenReturn(DateTime.now()); + when(mockTransaction.timestamp).thenReturn(DateTime.now()); + expect(await sut.finishFor(mockTransaction), isNull); + + sut.dispose(); + + // Yield to let the .then() in .dispose() execute. + await null; + + expect(nativeMock.numberOfDiscardProfilerCalls, 0); + expect(nativeMock.numberOfCollectProfileCalls, 1); + }); + }); +} diff --git a/flutter/test/sentry_flutter_test.dart b/flutter/test/sentry_flutter_test.dart index b800d18c8d..ef8c848348 100644 --- a/flutter/test/sentry_flutter_test.dart +++ b/flutter/test/sentry_flutter_test.dart @@ -5,8 +5,8 @@ import 'package:package_info_plus/package_info_plus.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sentry_flutter/src/integrations/integrations.dart'; import 'package:sentry_flutter/src/integrations/screenshot_integration.dart'; +import 'package:sentry_flutter/src/profiling.dart'; import 'package:sentry_flutter/src/renderer/renderer.dart'; -import 'package:sentry_flutter/src/native/sentry_native.dart'; import 'package:sentry_flutter/src/version.dart'; import 'package:sentry_flutter/src/view_hierarchy/view_hierarchy_integration.dart'; import 'mocks.dart'; @@ -50,9 +50,7 @@ void main() { setUp(() async { loadTestPackage(); await Sentry.close(); - final sentryNative = SentryNative(); - sentryNative.nativeChannel = null; - sentryNative.reset(); + SentryFlutter.native = null; }); test('Android', () async { @@ -65,6 +63,7 @@ void main() { (options) async { options.dsn = fakeDsn; options.automatedTestMode = true; + options.profilesSampleRate = 1.0; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -99,7 +98,8 @@ void main() { beforeIntegration: WidgetsFlutterBindingIntegration, afterIntegration: OnErrorIntegration); - expect(SentryNative().nativeChannel, isNotNull); + expect(SentryFlutter.native, isNotNull); + expect(Sentry.currentHub.profilerFactory, isNull); await Sentry.close(); }, testOn: 'vm'); @@ -113,6 +113,7 @@ void main() { (options) async { options.dsn = fakeDsn; options.automatedTestMode = true; + options.profilesSampleRate = 1.0; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -145,7 +146,9 @@ void main() { beforeIntegration: WidgetsFlutterBindingIntegration, afterIntegration: OnErrorIntegration); - expect(SentryNative().nativeChannel, isNotNull); + expect(SentryFlutter.native, isNotNull); + expect(Sentry.currentHub.profilerFactory, + isInstanceOf()); await Sentry.close(); }, testOn: 'vm'); @@ -159,6 +162,7 @@ void main() { (options) async { options.dsn = fakeDsn; options.automatedTestMode = true; + options.profilesSampleRate = 1.0; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -191,7 +195,9 @@ void main() { beforeIntegration: WidgetsFlutterBindingIntegration, afterIntegration: OnErrorIntegration); - expect(SentryNative().nativeChannel, isNotNull); + expect(SentryFlutter.native, isNotNull); + expect(Sentry.currentHub.profilerFactory, + isInstanceOf()); await Sentry.close(); }, testOn: 'vm'); @@ -205,6 +211,7 @@ void main() { (options) async { options.dsn = fakeDsn; options.automatedTestMode = true; + options.profilesSampleRate = 1.0; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -240,7 +247,8 @@ void main() { beforeIntegration: WidgetsFlutterBindingIntegration, afterIntegration: OnErrorIntegration); - expect(SentryNative().nativeChannel, isNull); + expect(SentryFlutter.native, isNull); + expect(Sentry.currentHub.profilerFactory, isNull); await Sentry.close(); }, testOn: 'vm'); @@ -254,6 +262,7 @@ void main() { (options) async { options.dsn = fakeDsn; options.automatedTestMode = true; + options.profilesSampleRate = 1.0; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -289,7 +298,8 @@ void main() { beforeIntegration: WidgetsFlutterBindingIntegration, afterIntegration: OnErrorIntegration); - expect(SentryNative().nativeChannel, isNull); + expect(SentryFlutter.native, isNull); + expect(Sentry.currentHub.profilerFactory, isNull); await Sentry.close(); }, testOn: 'vm'); @@ -303,6 +313,7 @@ void main() { (options) async { options.dsn = fakeDsn; options.automatedTestMode = true; + options.profilesSampleRate = 1.0; integrations = options.integrations; transport = options.transport; sentryFlutterOptions = options; @@ -339,7 +350,8 @@ void main() { beforeIntegration: RunZonedGuardedIntegration, afterIntegration: WidgetsFlutterBindingIntegration); - expect(SentryNative().nativeChannel, isNull); + expect(SentryFlutter.native, isNull); + expect(Sentry.currentHub.profilerFactory, isNull); await Sentry.close(); }); @@ -429,6 +441,8 @@ void main() { beforeIntegration: RunZonedGuardedIntegration, afterIntegration: WidgetsFlutterBindingIntegration); + expect(Sentry.currentHub.profilerFactory, isNull); + await Sentry.close(); }); diff --git a/flutter/test/sentry_native_channel_test.dart b/flutter/test/sentry_native_channel_test.dart index cd05bf71ea..04ec723feb 100644 --- a/flutter/test/sentry_native_channel_test.dart +++ b/flutter/test/sentry_native_channel_test.dart @@ -38,6 +38,8 @@ void main() { test('beginNativeFrames', () async { final sut = fixture.getSut(); + when(fixture.methodChannel.invokeMethod('beginNativeFrames')) + .thenAnswer((realInvocation) async {}); await sut.beginNativeFrames(); verify(fixture.methodChannel.invokeMethod('beginNativeFrames')); @@ -186,14 +188,53 @@ void main() { verify(fixture.methodChannel .invokeMethod('removeTag', {'key': 'fixture-key'})); }); + + test('startProfiler', () { + final sut = fixture.getSut(); + expect(() => sut.startProfiler(SentryId.newId()), throwsUnsupportedError); + verifyZeroInteractions(fixture.methodChannel); + }); + + test('discardProfiler', () async { + final traceId = SentryId.newId(); + when(fixture.methodChannel + .invokeMethod('discardProfiler', traceId.toString())) + .thenAnswer((_) async {}); + + final sut = fixture.getSut(); + await sut.discardProfiler(traceId); + + verify(fixture.methodChannel + .invokeMethod('discardProfiler', traceId.toString())); + }); + + test('collectProfile', () async { + final traceId = SentryId.newId(); + const startTime = 42; + const endTime = 50; + when(fixture.methodChannel + .invokeMapMethod('collectProfile', { + 'traceId': traceId.toString(), + 'startTime': startTime, + 'endTime': endTime, + })).thenAnswer((_) => Future.value()); + + final sut = fixture.getSut(); + await sut.collectProfile(traceId, startTime, endTime); + + verify(fixture.methodChannel.invokeMapMethod('collectProfile', { + 'traceId': traceId.toString(), + 'startTime': startTime, + 'endTime': endTime, + })); + }); }); } class Fixture { final methodChannel = MockMethodChannel(); - final options = SentryFlutterOptions(); SentryNativeChannel getSut() { - return SentryNativeChannel(methodChannel, options); + return SentryNativeChannel(methodChannel); } } diff --git a/flutter/test/sentry_native_test.dart b/flutter/test/sentry_native_test.dart index d6b5fab583..68dc16fdfa 100644 --- a/flutter/test/sentry_native_test.dart +++ b/flutter/test/sentry_native_test.dart @@ -7,21 +7,17 @@ import 'mocks.dart'; void main() { group('$SentryNative', () { - late Fixture fixture; - - setUp(() { - fixture = Fixture(); - }); + final channel = MockNativeChannel(); + final options = SentryFlutterOptions(dsn: fakeDsn); + late final sut = SentryNative(options, channel); tearDown(() { - fixture.getSut().reset(); + sut.reset(); }); test('fetchNativeAppStart sets didFetchAppStart', () async { final nativeAppStart = NativeAppStart(0.0, true); - fixture.channel.nativeAppStart = nativeAppStart; - - final sut = fixture.getSut(); + channel.nativeAppStart = nativeAppStart; expect(sut.didFetchAppStart, false); @@ -32,110 +28,88 @@ void main() { }); test('beginNativeFramesCollection', () async { - final sut = fixture.getSut(); - await sut.beginNativeFramesCollection(); - - expect(fixture.channel.numberOfBeginNativeFramesCalls, 1); + expect(channel.numberOfBeginNativeFramesCalls, 1); }); test('endNativeFramesCollection', () async { final nativeFrames = NativeFrames(3, 2, 1); final traceId = SentryId.empty(); - fixture.channel.nativeFrames = nativeFrames; - - final sut = fixture.getSut(); + channel.nativeFrames = nativeFrames; final actual = await sut.endNativeFramesCollection(traceId); expect(actual, nativeFrames); - expect(fixture.channel.id, traceId); - expect(fixture.channel.numberOfEndNativeFramesCalls, 1); + expect(channel.id, traceId); + expect(channel.numberOfEndNativeFramesCalls, 1); }); test('setUser', () async { - final sut = fixture.getSut(); await sut.setUser(null); - - expect(fixture.channel.numberOfSetUserCalls, 1); + expect(channel.numberOfSetUserCalls, 1); }); test('addBreadcrumb', () async { - final sut = fixture.getSut(); await sut.addBreadcrumb(Breadcrumb()); - - expect(fixture.channel.numberOfAddBreadcrumbCalls, 1); + expect(channel.numberOfAddBreadcrumbCalls, 1); }); test('clearBreadcrumbs', () async { - final sut = fixture.getSut(); await sut.clearBreadcrumbs(); - - expect(fixture.channel.numberOfClearBreadcrumbCalls, 1); + expect(channel.numberOfClearBreadcrumbCalls, 1); }); test('setContexts', () async { - final sut = fixture.getSut(); await sut.setContexts('fixture-key', 'fixture-value'); - - expect(fixture.channel.numberOfSetContextsCalls, 1); + expect(channel.numberOfSetContextsCalls, 1); }); test('removeContexts', () async { - final sut = fixture.getSut(); await sut.removeContexts('fixture-key'); - - expect(fixture.channel.numberOfRemoveContextsCalls, 1); + expect(channel.numberOfRemoveContextsCalls, 1); }); test('setExtra', () async { - final sut = fixture.getSut(); await sut.setExtra('fixture-key', 'fixture-value'); - - expect(fixture.channel.numberOfSetExtraCalls, 1); + expect(channel.numberOfSetExtraCalls, 1); }); test('removeExtra', () async { - final sut = fixture.getSut(); await sut.removeExtra('fixture-key'); - - expect(fixture.channel.numberOfRemoveExtraCalls, 1); + expect(channel.numberOfRemoveExtraCalls, 1); }); test('setTag', () async { - final sut = fixture.getSut(); await sut.setTag('fixture-key', 'fixture-value'); - - expect(fixture.channel.numberOfSetTagCalls, 1); + expect(channel.numberOfSetTagCalls, 1); }); test('removeTag', () async { - final sut = fixture.getSut(); await sut.removeTag('fixture-key'); + expect(channel.numberOfRemoveTagCalls, 1); + }); - expect(fixture.channel.numberOfRemoveTagCalls, 1); + test('startProfiler', () async { + sut.startProfiler(SentryId.newId()); + expect(channel.numberOfStartProfilerCalls, 1); }); - test('reset', () async { - final sut = fixture.getSut(); + test('discardProfiler', () async { + await sut.discardProfiler(SentryId.newId()); + expect(channel.numberOfDiscardProfilerCalls, 1); + }); + + test('collectProfile', () async { + await sut.collectProfile(SentryId.newId(), 1, 2); + expect(channel.numberOfCollectProfileCalls, 1); + }); + test('reset', () async { sut.appStartEnd = DateTime.now(); await sut.fetchNativeAppStart(); - sut.reset(); - expect(sut.appStartEnd, null); expect(sut.didFetchAppStart, false); }); }); } - -class Fixture { - final channel = MockNativeChannel(); - - SentryNative getSut() { - final sut = SentryNative(); - sut.nativeChannel = channel; - return sut; - } -} diff --git a/flutter/test/sentry_navigator_observer_test.dart b/flutter/test/sentry_navigator_observer_test.dart index c9a1629362..8ef61b1398 100644 --- a/flutter/test/sentry_navigator_observer_test.dart +++ b/flutter/test/sentry_navigator_observer_test.dart @@ -33,21 +33,25 @@ void main() { } setUp(() { - SentryNative().reset(); fixture = Fixture(); }); - tearDown(() { - SentryNative().reset(); - }); - group('NativeFrames', () { + late MockNativeChannel mockNativeChannel; + + setUp(() { + mockNativeChannel = MockNativeChannel(); + SentryFlutter.native = + SentryNative(SentryFlutterOptions(dsn: fakeDsn), mockNativeChannel); + }); + + tearDown(() { + SentryFlutter.native = null; + }); + test('transaction start begins frames collection', () async { final currentRoute = route(RouteSettings(name: 'Current Route')); final mockHub = _MockHub(); - final native = SentryNative(); - final mockNativeChannel = MockNativeChannel(); - native.nativeChannel = mockNativeChannel; final tracer = getMockSentryTracer(); _whenAnyStart(mockHub, tracer); @@ -65,17 +69,13 @@ void main() { test('transaction finish adds native frames to tracer', () async { final currentRoute = route(RouteSettings(name: 'Current Route')); - final options = SentryOptions(dsn: fakeDsn); + final options = defaultTestOptions(); options.tracesSampleRate = 1; final hub = Hub(options); final nativeFrames = NativeFrames(3, 2, 1); - final mockNativeChannel = MockNativeChannel(); mockNativeChannel.nativeFrames = nativeFrames; - final mockNative = SentryNative(); - mockNative.nativeChannel = mockNativeChannel; - final sut = fixture.getSut( hub: hub, autoFinishAfter: Duration(milliseconds: 50), @@ -728,6 +728,8 @@ void main() { } class Fixture { + final mockNativeChannel = MockNativeChannel(); + SentryNavigatorObserver getSut({ required Hub hub, bool enableAutoTransactions = true, @@ -753,7 +755,7 @@ class Fixture { class _MockHub extends MockHub { @override - final options = SentryOptions(dsn: fakeDsn); + final options = defaultTestOptions(); @override late final scope = Scope(options); From ed2ae087f58aef43c92ff2e06cdcd762fd45338b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Oct 2023 10:23:28 +0200 Subject: [PATCH 046/166] chore: update metrics/flutter.properties to 3.13.9 (#1702) --- metrics/flutter.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/flutter.properties b/metrics/flutter.properties index e596e3de52..46cc19edb4 100644 --- a/metrics/flutter.properties +++ b/metrics/flutter.properties @@ -1,2 +1,2 @@ -version = 3.13.7 +version = 3.13.9 repo = https://github.com/flutter/flutter From 891efac7482a4b10381a811967c97b042d097734 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Fri, 27 Oct 2023 09:59:03 +0000 Subject: [PATCH 047/166] chore: log warning if both tracesSampleRate and tracesSampler are set (#1701) * Log warning if both tracesSampleRate and tracesSampler are set * Update CHANGELOG * Update log * Update CHANGELOG --- CHANGELOG.md | 4 ++++ dart/lib/src/sentry_traces_sampler.dart | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5d88dea03..d6466d82fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Enhancements + +- Log warning if both tracesSampleRate and tracesSampler are set ([#1701](https://github.com/getsentry/sentry-dart/pull/1701)) + ### Features - Initial (alpha) support for profiling on iOS and macOS ([#1611](https://github.com/getsentry/sentry-dart/pull/1611)) diff --git a/dart/lib/src/sentry_traces_sampler.dart b/dart/lib/src/sentry_traces_sampler.dart index 1b49e2931b..b1668084c9 100644 --- a/dart/lib/src/sentry_traces_sampler.dart +++ b/dart/lib/src/sentry_traces_sampler.dart @@ -14,7 +14,12 @@ class SentryTracesSampler { SentryTracesSampler( this._options, { Random? random, - }) : _random = random ?? Random(); + }) : _random = random ?? Random() { + if (_options.tracesSampler != null && _options.tracesSampleRate != null) { + _options.logger(SentryLevel.warning, + 'Both tracesSampler and traceSampleRate are set. tracesSampler will take precedence and fallback to traceSampleRate if it returns null.'); + } + } SentryTracesSamplingDecision sample(SentrySamplingContext samplingContext) { final samplingDecision = From 0eb0b26cdb5fe50b73bb54d0601384d1c1b94be8 Mon Sep 17 00:00:00 2001 From: Ivan Dlugos <6349682+vaind@users.noreply.github.com> Date: Mon, 30 Oct 2023 12:14:36 +0100 Subject: [PATCH 048/166] chore: flutter symbol collector CLI tool (#1673) --- .github/workflows/flutter-symbols.yml | 58 +++++++ .github/workflows/update-deps.yml | 9 + CHANGELOG.md | 1 + scripts/flutter_symbol_collector/.gitignore | 6 + scripts/flutter_symbol_collector/README.md | 4 + .../analysis_options.yaml | 7 + .../bin/flutter_symbol_collector.dart | 96 +++++++++++ .../lib/flutter_symbol_collector.dart | 5 + .../lib/src/flutter_symbol_resolver.dart | 73 ++++++++ .../lib/src/flutter_symbol_source.dart | 156 ++++++++++++++++++ .../lib/src/flutter_version.dart | 16 ++ .../lib/src/status_cache.dart | 61 +++++++ .../lib/src/symbol_archive.dart | 10 ++ .../lib/src/symbol_collector_cli.dart | 147 +++++++++++++++++ scripts/flutter_symbol_collector/pubspec.yaml | 24 +++ .../flutter_symbol_collector/test/common.dart | 9 + .../test/flutter_symbol_source_test.dart | 81 +++++++++ .../test/flutter_version_test.dart | 11 ++ .../test/status_cache_test.dart | 43 +++++ .../test/symbol_collector_cli_test.dart | 72 ++++++++ scripts/update-symbol-collector.sh | 28 ++++ 21 files changed, 917 insertions(+) create mode 100644 .github/workflows/flutter-symbols.yml create mode 100644 scripts/flutter_symbol_collector/.gitignore create mode 100644 scripts/flutter_symbol_collector/README.md create mode 100644 scripts/flutter_symbol_collector/analysis_options.yaml create mode 100644 scripts/flutter_symbol_collector/bin/flutter_symbol_collector.dart create mode 100644 scripts/flutter_symbol_collector/lib/flutter_symbol_collector.dart create mode 100644 scripts/flutter_symbol_collector/lib/src/flutter_symbol_resolver.dart create mode 100644 scripts/flutter_symbol_collector/lib/src/flutter_symbol_source.dart create mode 100644 scripts/flutter_symbol_collector/lib/src/flutter_version.dart create mode 100644 scripts/flutter_symbol_collector/lib/src/status_cache.dart create mode 100644 scripts/flutter_symbol_collector/lib/src/symbol_archive.dart create mode 100644 scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart create mode 100644 scripts/flutter_symbol_collector/pubspec.yaml create mode 100644 scripts/flutter_symbol_collector/test/common.dart create mode 100644 scripts/flutter_symbol_collector/test/flutter_symbol_source_test.dart create mode 100644 scripts/flutter_symbol_collector/test/flutter_version_test.dart create mode 100644 scripts/flutter_symbol_collector/test/status_cache_test.dart create mode 100644 scripts/flutter_symbol_collector/test/symbol_collector_cli_test.dart create mode 100755 scripts/update-symbol-collector.sh diff --git a/.github/workflows/flutter-symbols.yml b/.github/workflows/flutter-symbols.yml new file mode 100644 index 0000000000..057240d94a --- /dev/null +++ b/.github/workflows/flutter-symbols.yml @@ -0,0 +1,58 @@ +name: Flutter symbols collection +on: + schedule: + # Run once an hour. It takes just a couple of minutes because of status caching. + - cron: "10 * * * *" + workflow_dispatch: + inputs: + flutter_version: + description: Flutter version, can be either a specific version (3.17.0) or a wildcard (3.2.*) + required: false + type: string + default: "3.*.*" + +defaults: + run: + working-directory: scripts/flutter_symbol_collector + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + + - run: dart pub get + + - run: dart test + + run: + needs: [test] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + + - run: dart pub get + + - name: Download status cache of previously processed files + run: | + gh run download --name 'flutter-symbol-collector-database' --dir .cache + grep -r "" .cache + continue-on-error: true + env: + GITHUB_TOKEN: ${{ github.token }} + + - run: dart run bin/flutter_symbol_collector.dart --version=${{ inputs.flutter_version || '3.*.*' }} + timeout-minutes: 300 + env: + GITHUB_TOKEN: ${{ github.token }} + + - name: Upload updated status cache of processed files + uses: actions/upload-artifact@v3 + if: always() + with: + name: flutter-symbol-collector-database + path: scripts/flutter_symbol_collector/.cache diff --git a/.github/workflows/update-deps.yml b/.github/workflows/update-deps.yml index 953c63cf49..d7eaf21a58 100644 --- a/.github/workflows/update-deps.yml +++ b/.github/workflows/update-deps.yml @@ -35,3 +35,12 @@ jobs: changelog-entry: false secrets: api-token: ${{ secrets.CI_DEPLOY_KEY }} + + symbol-collector: + uses: getsentry/github-workflows/.github/workflows/updater.yml@v2 + with: + path: scripts/update-symbol-collector.sh + name: Symbol collector CLI + changelog-entry: false + secrets: + api-token: ${{ secrets.CI_DEPLOY_KEY }} diff --git a/CHANGELOG.md b/CHANGELOG.md index d6466d82fa..e3507770f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Enhancements - Log warning if both tracesSampleRate and tracesSampler are set ([#1701](https://github.com/getsentry/sentry-dart/pull/1701)) +- Better Flutter framework stack traces - we now collect Flutter framework debug symbols for iOS, macOS and Android automatically on the Sentry server ([#1673](https://github.com/getsentry/sentry-dart/pull/1673)) ### Features diff --git a/scripts/flutter_symbol_collector/.gitignore b/scripts/flutter_symbol_collector/.gitignore new file mode 100644 index 0000000000..d0e14b73aa --- /dev/null +++ b/scripts/flutter_symbol_collector/.gitignore @@ -0,0 +1,6 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ + +.temp +.cache diff --git a/scripts/flutter_symbol_collector/README.md b/scripts/flutter_symbol_collector/README.md new file mode 100644 index 0000000000..55c60bca27 --- /dev/null +++ b/scripts/flutter_symbol_collector/README.md @@ -0,0 +1,4 @@ +# Flutter symbol collector + +This is an internal tool to collect Flutter debug symbols and upload them to Sentry. +This application is not intended for public usage - we're uploading the symbols in CI automatically so you don't have to. diff --git a/scripts/flutter_symbol_collector/analysis_options.yaml b/scripts/flutter_symbol_collector/analysis_options.yaml new file mode 100644 index 0000000000..9fe3182f8d --- /dev/null +++ b/scripts/flutter_symbol_collector/analysis_options.yaml @@ -0,0 +1,7 @@ +include: package:lints/recommended.yaml + +linter: + rules: + prefer_relative_imports: true + unnecessary_brace_in_string_interps: true + unawaited_futures: true diff --git a/scripts/flutter_symbol_collector/bin/flutter_symbol_collector.dart b/scripts/flutter_symbol_collector/bin/flutter_symbol_collector.dart new file mode 100644 index 0000000000..424134eea7 --- /dev/null +++ b/scripts/flutter_symbol_collector/bin/flutter_symbol_collector.dart @@ -0,0 +1,96 @@ +import 'package:args/args.dart'; +import 'package:file/local.dart'; +import 'package:flutter_symbol_collector/flutter_symbol_collector.dart'; +import 'package:github/github.dart'; +import 'package:logging/logging.dart'; + +const githubToken = String.fromEnvironment('GITHUB_TOKEN'); +final githubAuth = githubToken.isEmpty + ? Authentication.anonymous() + : Authentication.withToken(githubToken); +final source = FlutterSymbolSource(githubAuth: githubAuth); +final fs = LocalFileSystem(); +final tempDir = fs.currentDirectory.childDirectory('.temp'); +final stateCache = + DirectoryStatusCache(fs.currentDirectory.childDirectory('.cache')); +late final SymbolCollectorCli collector; + +void main(List arguments) async { + Logger.root.level = Level.ALL; + Logger.root.onRecord.listen((record) { + print('${record.level.name}: ${record.time}: ${record.message}' + '${record.error == null ? '' : ': ${record.error}'}'); + }); + + final parser = ArgParser()..addOption('version', defaultsTo: ''); + final args = parser.parse(arguments); + final argVersion = args['version'] as String; + + collector = await SymbolCollectorCli.setup(tempDir); + + // If a specific version was given, run just for this version. + if (argVersion.isNotEmpty && + !argVersion.contains('*') && + argVersion.split('.').length == 3) { + Logger.root.info('Running for a single flutter version: $argVersion'); + await processFlutterVersion(FlutterVersion(argVersion)); + } else { + // Otherwise, walk all the versions and run for the matching ones. + final versionRegex = RegExp(argVersion.isEmpty + ? '.*' + : '^${argVersion.replaceAll('.', '\\.').replaceAll('*', '.+')}\$'); + Logger.root.info('Running for all Flutter versions matching $versionRegex'); + final versions = await source + .listFlutterVersions() + .where((v) => !v.isPreRelease) + .where((v) => versionRegex.hasMatch(v.tagName)) + .toList(); + Logger.root.info( + 'Found ${versions.length} Flutter versions matching $versionRegex'); + for (var version in versions) { + await processFlutterVersion(version); + } + } +} + +Future processFlutterVersion(FlutterVersion version) async { + if (bool.hasEnvironment('CI')) { + print('::group::Processing Flutter ${version.tagName}'); + } + Logger.root.info('Processing Flutter ${version.tagName}'); + Logger.root.info('Engine version: ${await version.engineVersion}'); + + final archives = await source.listSymbolArchives(version); + final dir = tempDir.childDirectory(version.tagName); + for (final archive in archives) { + final status = await stateCache.getStatus(archive); + if (status == SymbolArchiveStatus.success) { + Logger.root + .info('Skipping ${archive.path} - already processed successfully'); + continue; + } + + final archiveDir = dir.childDirectory(archive.platform.operatingSystem); + try { + if (await source.downloadAndExtractTo(archiveDir, archive.path)) { + if (await collector.upload(archiveDir, archive.platform, version)) { + await stateCache.setStatus(archive, SymbolArchiveStatus.success); + continue; + } + } + await stateCache.setStatus(archive, SymbolArchiveStatus.error); + } finally { + if (await archiveDir.exists()) { + await archiveDir.delete(recursive: true); + } + } + } + + if (await dir.exists()) { + await dir.delete(recursive: true); + } + + if (bool.hasEnvironment('CI')) { + print('::endgroup::'); + } +} diff --git a/scripts/flutter_symbol_collector/lib/flutter_symbol_collector.dart b/scripts/flutter_symbol_collector/lib/flutter_symbol_collector.dart new file mode 100644 index 0000000000..a972b43f75 --- /dev/null +++ b/scripts/flutter_symbol_collector/lib/flutter_symbol_collector.dart @@ -0,0 +1,5 @@ +export 'src/flutter_symbol_source.dart'; +export 'src/flutter_version.dart'; +export 'src/symbol_collector_cli.dart'; +export 'src/status_cache.dart'; +export 'src/symbol_archive.dart'; diff --git a/scripts/flutter_symbol_collector/lib/src/flutter_symbol_resolver.dart b/scripts/flutter_symbol_collector/lib/src/flutter_symbol_resolver.dart new file mode 100644 index 0000000000..93d9b7e02f --- /dev/null +++ b/scripts/flutter_symbol_collector/lib/src/flutter_symbol_resolver.dart @@ -0,0 +1,73 @@ +import 'package:gcloud/storage.dart'; +import 'package:platform/platform.dart'; + +import 'symbol_archive.dart'; + +abstract class FlutterSymbolResolver { + final String _prefix; + final Bucket _bucket; + final _resolvedFiles = List.empty(growable: true); + Platform get platform; + + FlutterSymbolResolver(this._bucket, String prefix) + : _prefix = prefix.endsWith('/') + ? prefix.substring(0, prefix.length - 1) + : prefix; + + Future tryResolve(String path) async { + path = '$_prefix/$path'; + final matches = await _bucket + .list(prefix: path) + .where((v) => v.isObject) + .where((v) => v.name == path) // because it's a prefix search + .map((v) => v.name) + .toList(); + if (matches.isNotEmpty) { + _resolvedFiles.add(SymbolArchive(matches.single, platform)); + } + } + + Future> listArchives(); +} + +class IosSymbolResolver extends FlutterSymbolResolver { + IosSymbolResolver(super.bucket, super.prefix); + + @override + final platform = FakePlatform(operatingSystem: Platform.iOS); + + @override + Future> listArchives() async { + await tryResolve('ios-release/Flutter.dSYM.zip'); + return _resolvedFiles; + } +} + +class MacOSSymbolResolver extends FlutterSymbolResolver { + MacOSSymbolResolver(super.bucket, super.prefix); + + @override + final platform = FakePlatform(operatingSystem: Platform.macOS); + + @override + Future> listArchives() async { + // darwin-x64-release directory contains a fat (arm64+x86_64) binary. + await tryResolve('darwin-x64-release/FlutterMacOS.dSYM.zip'); + return _resolvedFiles; + } +} + +class AndroidSymbolResolver extends FlutterSymbolResolver { + final String architecture; + + AndroidSymbolResolver(super.bucket, super.prefix, this.architecture); + + @override + final platform = FakePlatform(operatingSystem: Platform.android); + + @override + Future> listArchives() async { + await tryResolve('android-$architecture-release/symbols.zip'); + return _resolvedFiles; + } +} diff --git a/scripts/flutter_symbol_collector/lib/src/flutter_symbol_source.dart b/scripts/flutter_symbol_collector/lib/src/flutter_symbol_source.dart new file mode 100644 index 0000000000..aca3a1e187 --- /dev/null +++ b/scripts/flutter_symbol_collector/lib/src/flutter_symbol_source.dart @@ -0,0 +1,156 @@ +import 'dart:typed_data'; + +import 'package:archive/archive.dart'; +import 'package:archive/archive_io.dart'; +import 'package:file/file.dart'; +import 'package:github/github.dart' as github; +import 'package:gcloud/storage.dart'; +import 'package:http/http.dart'; +import 'package:logging/logging.dart'; +import 'package:path/path.dart' as path; + +import 'flutter_version.dart'; +import 'flutter_symbol_resolver.dart'; +import 'symbol_archive.dart'; + +class FlutterSymbolSource { + late final Logger _log; + final github.GitHub _github; + late final _flutterRepo = github.RepositorySlug('flutter', 'flutter'); + late final _symbolsBucket = + Storage(Client(), '').bucket('flutter_infra_release'); + + FlutterSymbolSource( + {Logger? logger, + github.Authentication githubAuth = + const github.Authentication.anonymous()}) + : _log = logger ?? Logger.root, + _github = github.GitHub(auth: githubAuth); + + Stream listFlutterVersions() => _github.repositories + .listTags(_flutterRepo, perPage: 30) + .map((t) => FlutterVersion(t.name)); + + /// Returns false as the first record value in case there was any error fetching the symbol archives. + Future> listSymbolArchives(FlutterVersion version) async { + // example: https://console.cloud.google.com/storage/browser/flutter_infra_release/flutter/9064459a8b0dcd32877107f6002cc429a71659d1 + final prefix = 'flutter/${await version.engineVersion}/'; + + late final List resolvers; + if (version.tagName.startsWith('3.')) { + resolvers = [ + IosSymbolResolver(_symbolsBucket, prefix), + MacOSSymbolResolver(_symbolsBucket, prefix), + AndroidSymbolResolver(_symbolsBucket, prefix, 'arm'), + AndroidSymbolResolver(_symbolsBucket, prefix, 'arm64') + ]; + } else { + _log.warning('No symbol resolvers registered for ${version.tagName}'); + return []; + } + + assert(resolvers.isNotEmpty); + final archives = List.empty(growable: true); + for (var resolver in resolvers) { + final files = await resolver.listArchives(); + if (files.isEmpty) { + _log.warning( + 'Flutter ${version.tagName}: no debug symbols found by ${resolver.runtimeType}'); + } else { + _log.fine( + 'Flutter ${version.tagName}: ${resolver.runtimeType} found ${files.length} debug symbols: ${files.map((v) => path.basename(v.path))}'); + archives.addAll(files); + } + } + + return archives; + } + + /// Streams the remote file contents. + Stream> download(String filePath) { + _log.fine('Downloading $filePath'); + return _symbolsBucket.read(filePath); + } + + /// Downloads the remote [filePath] to the given [target] directory. + /// If it's an archive, extracts the content instead. + /// returns `true` if the file was downloaded and extracted successfully. + Future downloadAndExtractTo(Directory target, String filePath) async { + if (path.extension(filePath) == '.zip') { + target = await target + .childDirectory(path.withoutExtension(filePath)) + .create(recursive: true); + try { + final buffer = BytesBuilder(); + await download(filePath).forEach(buffer.add); + final archive = ZipDecoder().decodeBytes(buffer.toBytes()); + buffer.clear(); + _log.fine('Extracting $filePath to $target'); + await _extractZip(target, archive); + } catch (e, trace) { + _log.warning('Failed to download $filePath to $target', e, trace); + // Remove the directory so that we don't leave a partial extraction. + await target.delete(recursive: true); + return false; + } + } else { + _log.fine('Downloading $filePath to $target'); + final file = await target + .childFile(filePath) + .create(recursive: true, exclusive: true); + final sink = file.openWrite(); + try { + await sink.addStream(download(filePath)); + await sink.flush(); + await sink.close(); + } catch (e, trace) { + _log.warning('Failed to download $filePath to $target', e, trace); + await sink.close(); + await file.delete(); + return false; + } + } + return true; + } + + Future _extractZip(Directory target, Archive archive) async { + for (var entry in archive.files) { + // Make sure we don't have any zip-slip issues. + final entryPath = _pathNormalize(entry.name); + if (!_pathNormalize(target.childFile(entryPath).path) + .startsWith(target.path)) { + throw Exception( + 'Invalid ZIP entry path (looks like a zip-slip issue): ${entry.name}'); + } + + if (!entry.isFile) { + // If it's a directory - create it. + await target.childDirectory(entryPath).create(recursive: true); + } else { + // Note: package:archive doesn't support extracting directly to an + // IOSink. See https://github.com/brendan-duncan/archive/issues/12 + final stream = OutputStream(); + entry.writeContent(stream, freeMemory: true); + stream.flush(); + + // If it's an inner ZIP archive - extract it recursively. + if (path.extension(entryPath) == '.zip') { + final innerArchive = ZipDecoder().decodeBytes(stream.getBytes()); + stream.clear(); + final innerTarget = + target.childDirectory(path.withoutExtension(entryPath)); + _log.fine('Extracting inner archive $entryPath to $innerTarget'); + await _extractZip(innerTarget, innerArchive); + } else { + final file = + await target.childFile(entryPath).create(exclusive: true); + _log.finer('Writing $file: ${stream.length} bytes'); + await file.writeAsBytes(stream.getBytes(), flush: true); + } + } + } + } + + String _pathNormalize(String p) => + path.normalize(p).replaceAll(path.separator, '/'); +} diff --git a/scripts/flutter_symbol_collector/lib/src/flutter_version.dart b/scripts/flutter_symbol_collector/lib/src/flutter_version.dart new file mode 100644 index 0000000000..6461a4c1fe --- /dev/null +++ b/scripts/flutter_symbol_collector/lib/src/flutter_version.dart @@ -0,0 +1,16 @@ +import 'package:http/http.dart' as http; +import 'package:meta/meta.dart'; + +@immutable +class FlutterVersion { + final String tagName; + + late final engineVersion = http + .get(Uri.https('raw.githubusercontent.com', + 'flutter/flutter/$tagName/bin/internal/engine.version')) + .then((value) => value.body.trim()); + + FlutterVersion(this.tagName); + + bool get isPreRelease => tagName.endsWith('.pre'); +} diff --git a/scripts/flutter_symbol_collector/lib/src/status_cache.dart b/scripts/flutter_symbol_collector/lib/src/status_cache.dart new file mode 100644 index 0000000000..6c456b73c8 --- /dev/null +++ b/scripts/flutter_symbol_collector/lib/src/status_cache.dart @@ -0,0 +1,61 @@ +import 'package:file/file.dart'; +import 'package:logging/logging.dart'; + +import 'symbol_archive.dart'; + +enum SymbolArchiveStatus { + /// The archive has been successfully processed. + success, + + /// The archive has been processed but there was an error. + error, + + /// The archive hasn't been processed yet + pending, +} + +/// Stores and retrieves information about symbol processing status. +abstract class SymbolArchiveStatusCache { + Future setStatus(SymbolArchive archive, SymbolArchiveStatus status); + Future getStatus(SymbolArchive archive); +} + +/// Stores information about symbol processing status in a local directory. +class DirectoryStatusCache implements SymbolArchiveStatusCache { + final Directory _dir; + + DirectoryStatusCache(this._dir) { + _dir.createSync(recursive: true); + } + + File _statusFile(SymbolArchive archive) => + _dir.childFile('${archive.path.toLowerCase()}.status'); + + @override + Future getStatus(SymbolArchive archive) async { + final file = _statusFile(archive); + if (!await file.exists()) { + return SymbolArchiveStatus.pending; + } + return file.readAsString().then((value) { + switch (value) { + case 'success': + return SymbolArchiveStatus.success; + case 'error': + return SymbolArchiveStatus.error; + default: + Logger.root.warning('Unknown status \'$value\' in $file'); + return SymbolArchiveStatus.error; + } + }); + } + + @override + Future setStatus( + SymbolArchive archive, SymbolArchiveStatus status) async { + final file = _statusFile(archive); + Logger.root.info('Setting ${file.path} status to ${status.name}'); + await file.create(recursive: true); + await file.writeAsString(status.name); + } +} diff --git a/scripts/flutter_symbol_collector/lib/src/symbol_archive.dart b/scripts/flutter_symbol_collector/lib/src/symbol_archive.dart new file mode 100644 index 0000000000..f4681e44be --- /dev/null +++ b/scripts/flutter_symbol_collector/lib/src/symbol_archive.dart @@ -0,0 +1,10 @@ +import 'package:platform/platform.dart'; +import 'package:meta/meta.dart'; + +@immutable +class SymbolArchive { + final String path; + final Platform platform; + + SymbolArchive(this.path, this.platform); +} diff --git a/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart b/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart new file mode 100644 index 0000000000..0f4c97d6a6 --- /dev/null +++ b/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart @@ -0,0 +1,147 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:archive/archive.dart'; +import 'package:archive/archive_io.dart'; +import 'package:file/file.dart'; +import 'package:http/http.dart' as http; +import 'package:logging/logging.dart'; +import 'package:meta/meta.dart'; +import 'package:platform/platform.dart'; +import 'package:posix/posix.dart' as posix; +import 'package:path/path.dart' as path; + +import 'flutter_version.dart'; + +class SymbolCollectorCli { + late final Logger _log = Logger.root; + late bool _isExecutable; + + // https://github.com/getsentry/symbol-collector/releases + @internal + static const version = '1.12.1'; + + @internal + late final String cli; + + @internal + static Platform platform = LocalPlatform(); + + SymbolCollectorCli._(); + + // Downloads the CLI to the given temporary directory and prepares it for use. + static Future setup(Directory tempDir) async { + late final String platformIdentifier; + final executableName = 'symbol-collector'; + + if (platform.isLinux) { + platformIdentifier = 'linux-x64'; + } else if (platform.isMacOS) { + platformIdentifier = 'osx-x64'; + } else { + throw UnsupportedError( + 'Cannot run symbol-collector CLI on this platform - there\'s no binary available at this time.'); + } + + final self = SymbolCollectorCli._(); + + self._log.fine( + 'Downloading symbol-collector CLI v$version for $platformIdentifier'); + final zipData = await http.readBytes(Uri.parse( + 'https://github.com/getsentry/symbol-collector/releases/download/$version/symbolcollector-console-$platformIdentifier.zip')); + self._log.fine( + 'Download successful, received ${zipData.length} bytes; extracting the archive'); + + final archive = ZipDecoder().decodeBytes(zipData); + final stream = OutputStream(); + archive.single.writeContent(stream, freeMemory: true); + stream.flush(); + + await tempDir.create(); + final executableFile = await tempDir.childFile(executableName).create(); + self.cli = executableFile.path; + + await executableFile.writeAsBytes(stream.getBytes(), flush: true); + self._log.fine( + 'Symbol-collector CLI extracted to ${executableFile.path}: ${await executableFile.length()} bytes'); + self._isExecutable = platform.isWindows; + return self; + } + + void _ensureIsExecutable() { + if (!_isExecutable) { + if (LocalPlatform().operatingSystem == platform.operatingSystem) { + if (platform.isLinux || platform.isMacOS) { + _log.fine('Making Symbol-collector CLI executable (chmod +x)'); + + posix.chmod(cli, '0700'); + } + _isExecutable = true; + } else { + _log.warning( + 'Symbol-collector CLI has been run with a platform that is not the current OS platform.' + 'This should only be done in tests because we can\'t execute the downloaded program'); + } + } + } + + Future getVersion() => _execute(['--version', '-h']); + + Future upload( + Directory dir, Platform symbolsPlatform, FlutterVersion flutterVersion, + {bool dryRun = false}) async { + final type = symbolsPlatform.operatingSystem; + try { + await _execute([ + '--upload', + 'directory', + '--path', + dir.path, + '--batch-type', + type, + '--bundle-id', + 'flutter-${flutterVersion.tagName}-$type', + '--server-endpoint', + 'https://symbol-collector.services.sentry.io/', + ]); + } catch (e) { + _log.warning('Failed to upload symbols from ${dir.path}', e); + return false; + } + return true; + } + + Future _execute(List arguments) async { + _ensureIsExecutable(); + + _log.fine('Executing ${path.basename(cli)} ${arguments.join(' ')}'); + final process = await Process.start(cli, arguments); + + final output = StringBuffer(); + handleOutput(Level level, String message) { + message.trimRight().split('\n').forEach((s) => _log.log(level, ' $s')); + output.write(message); + } + + final pipes = [ + process.stdout + .transform(utf8.decoder) + .forEach((s) => handleOutput(Level.FINER, s)), + process.stderr + .transform(utf8.decoder) + .forEach((s) => handleOutput(Level.SEVERE, s)) + ]; + + final exitCode = await process.exitCode; + await Future.wait(pipes); + final strOutput = output.toString().trimRight(); + if (exitCode != 0) { + throw Exception('Symbol-collector CLI failed with exit code $exitCode.'); + } else if (strOutput.contains('Exception:')) { + // see https://github.com/getsentry/symbol-collector/issues/167 + throw Exception('Symbol-collector CLI failed with an exception.'); + } + + return strOutput; + } +} diff --git a/scripts/flutter_symbol_collector/pubspec.yaml b/scripts/flutter_symbol_collector/pubspec.yaml new file mode 100644 index 0000000000..0464e16e0d --- /dev/null +++ b/scripts/flutter_symbol_collector/pubspec.yaml @@ -0,0 +1,24 @@ +name: flutter_symbol_collector +description: Internal tool to collect Flutter debug symbols and upload them to Sentry +publish_to: none + +environment: + sdk: ^3.0.0 + +dependencies: + archive: ^3.4.6 + args: ^2.4.2 + file: ^7.0.0 + gcloud: ^0.8.11 + github: ^9.19.0 + http: ^1.1.0 + logging: ^1.2.0 + meta: ^1.11.0 + path: ^1.8.3 + platform: ^3.1.3 + posix: ^5.0.0 + + +dev_dependencies: + lints: ^2.0.0 + test: ^1.21.0 diff --git a/scripts/flutter_symbol_collector/test/common.dart b/scripts/flutter_symbol_collector/test/common.dart new file mode 100644 index 0000000000..22d1877435 --- /dev/null +++ b/scripts/flutter_symbol_collector/test/common.dart @@ -0,0 +1,9 @@ +import 'package:logging/logging.dart'; + +void setupLogging() { + Logger.root.level = Level.ALL; + Logger.root.onRecord.listen((record) { + print('${record.level.name}: ${record.time}: ${record.message}' + '${record.error == null ? '' : ': ${record.error}'}'); + }); +} diff --git a/scripts/flutter_symbol_collector/test/flutter_symbol_source_test.dart b/scripts/flutter_symbol_collector/test/flutter_symbol_source_test.dart new file mode 100644 index 0000000000..9153ac3128 --- /dev/null +++ b/scripts/flutter_symbol_collector/test/flutter_symbol_source_test.dart @@ -0,0 +1,81 @@ +import 'package:file/file.dart'; +import 'package:file/memory.dart'; +import 'package:flutter_symbol_collector/flutter_symbol_collector.dart'; +import 'package:test/test.dart'; + +import 'common.dart'; + +void main() { + setupLogging(); + late FileSystem fs; + late FlutterSymbolSource sut; + + setUp(() { + fs = MemoryFileSystem.test(); + sut = FlutterSymbolSource(); + }); + + test('listFlutterVersions() returns a stable list', () async { + final versions = await sut.listFlutterVersions().take(3).toList(); + expect(versions.map((v) => v.tagName), + equals(['v1.16.3', 'v1.16.2', 'v1.16.1'])); + }); + + test('listFlutterVersions() fetches items across multiple API page requests', + () async { + // the page size defaults to 30 at the moment, see listFlutterVersions() + final versions = await sut.listFlutterVersions().take(105).toList(); + expect(versions.length, equals(105)); + }); + + test('Engine versions match expected values', () async { + final versions = await sut.listFlutterVersions().take(3).toList(); + final engines = List.empty(growable: true); + for (var v in versions) { + engines.add("${v.tagName} => ${await v.engineVersion}"); + } + expect( + engines, + equals([ + 'v1.16.3 => b2bdeb3f0f1683f3e0562f491b5e316240dfbc2c', + 'v1.16.2 => 2d42c74a348d98d2fd372a91953c104e58f185cd', + 'v1.16.1 => 216c420a2c06e5266a60a768b3fd0b660551cc9c' + ])); + }); + + test('listSymbolArchives() supports expected platforms', () async { + final archives = await sut.listSymbolArchives(FlutterVersion('3.13.4')); + const prefix = 'flutter/9064459a8b0dcd32877107f6002cc429a71659d1'; + expect( + archives.map((v) => '${v.platform.operatingSystem} - ${v.path}'), + equals([ + 'ios - $prefix/ios-release/Flutter.dSYM.zip', + 'macos - $prefix/darwin-x64-release/FlutterMacOS.dSYM.zip', + 'android - flutter/9064459a8b0dcd32877107f6002cc429a71659d1/android-arm-release/symbols.zip', + 'android - flutter/9064459a8b0dcd32877107f6002cc429a71659d1/android-arm64-release/symbols.zip' + ])); + }); + + test('download() downloads the file', () async { + // No need to download a large archive, just some small file to test this. + final content = await sut + .download('test.txt') + .map(String.fromCharCodes) + .reduce((a, b) => '$a$b'); + expect(content, equals('test\n')); + }); + + test('downloadAndExtractTo() downloads a plain file', () async { + await sut.downloadAndExtractTo(fs.currentDirectory, 'test.txt'); + expect(fs.isFileSync('test.txt'), isTrue); + expect(fs.file('test.txt').readAsStringSync(), equals('test\n')); + }); + + test('downloadAndExtractTo() extracts a zip file', () async { + const path = 'flutter/0005149dca9b248663adcde4bdd7c6c915a76584'; + await sut.downloadAndExtractTo(fs.currentDirectory, '$path/sky_engine.zip'); + expect(fs.isDirectorySync('$path/sky_engine/sky_engine'), isTrue); + expect(fs.file('$path/sky_engine/sky_engine/README.md').readAsStringSync(), + startsWith('Flutter Engine')); + }); +} diff --git a/scripts/flutter_symbol_collector/test/flutter_version_test.dart b/scripts/flutter_symbol_collector/test/flutter_version_test.dart new file mode 100644 index 0000000000..5786292dc0 --- /dev/null +++ b/scripts/flutter_symbol_collector/test/flutter_version_test.dart @@ -0,0 +1,11 @@ +import 'package:flutter_symbol_collector/flutter_symbol_collector.dart'; +import 'package:test/test.dart'; + +void main() { + test('$FlutterVersion.isPrerelease()', () async { + expect(FlutterVersion('v1.16.3').isPreRelease, false); + expect(FlutterVersion('v1.16.3.pre').isPreRelease, true); + expect(FlutterVersion('3.16.0-9.0').isPreRelease, false); + expect(FlutterVersion('3.16.0-9.0.pre').isPreRelease, true); + }); +} diff --git a/scripts/flutter_symbol_collector/test/status_cache_test.dart b/scripts/flutter_symbol_collector/test/status_cache_test.dart new file mode 100644 index 0000000000..f8b929db79 --- /dev/null +++ b/scripts/flutter_symbol_collector/test/status_cache_test.dart @@ -0,0 +1,43 @@ +import 'package:file/file.dart'; +import 'package:file/memory.dart'; +import 'package:flutter_symbol_collector/flutter_symbol_collector.dart'; +import 'package:platform/platform.dart'; +import 'package:test/test.dart'; + +import 'common.dart'; + +void main() { + setupLogging(); + + group('DirectoryStatusCache', () { + late FileSystem fs; + late SymbolArchiveStatusCache sut; + final archive = SymbolArchive('path/to/archive.zip', LocalPlatform()); + + setUp(() { + fs = MemoryFileSystem.test(); + sut = DirectoryStatusCache(fs.currentDirectory); + }); + + test('retrieve unprocessed file', () async { + expect(await sut.getStatus(archive), SymbolArchiveStatus.pending); + }); + + test('store and retrieve error', () async { + await sut.setStatus(archive, SymbolArchiveStatus.error); + expect(await sut.getStatus(archive), SymbolArchiveStatus.error); + }); + + test('store and retrieve success', () async { + await sut.setStatus(archive, SymbolArchiveStatus.success); + expect(await sut.getStatus(archive), SymbolArchiveStatus.success); + }); + + test('store, overwrite and retrieve', () async { + await sut.setStatus(archive, SymbolArchiveStatus.error); + expect(await sut.getStatus(archive), SymbolArchiveStatus.error); + await sut.setStatus(archive, SymbolArchiveStatus.success); + expect(await sut.getStatus(archive), SymbolArchiveStatus.success); + }); + }); +} diff --git a/scripts/flutter_symbol_collector/test/symbol_collector_cli_test.dart b/scripts/flutter_symbol_collector/test/symbol_collector_cli_test.dart new file mode 100644 index 0000000000..dbd9a50e12 --- /dev/null +++ b/scripts/flutter_symbol_collector/test/symbol_collector_cli_test.dart @@ -0,0 +1,72 @@ +import 'package:file/file.dart'; +import 'package:file/local.dart'; +import 'package:file/memory.dart'; +import 'package:flutter_symbol_collector/src/flutter_version.dart'; +import 'package:flutter_symbol_collector/src/symbol_collector_cli.dart'; +import 'package:platform/platform.dart'; +import 'package:test/test.dart'; + +import 'common.dart'; + +void main() { + setupLogging(); + + group('setup() downloads CLI on', () { + late FileSystem fs; + + setUp(() { + fs = MemoryFileSystem.test(); + }); + for (final platform in [Platform.macOS, Platform.linux]) { + test(platform, () async { + const path = 'temp/symbol-collector'; + + // make sure the file is overwritten if there's an older version + await fs + .file(path) + .create(recursive: true) + .then((file) => file.writeAsString('foo')); + expect(fs.file(path).lengthSync(), equals(3)); + + final originalPlatform = SymbolCollectorCli.platform; + try { + SymbolCollectorCli.platform = FakePlatform(operatingSystem: platform); + final sut = await SymbolCollectorCli.setup(fs.directory('temp')); + expect(sut.cli, equals(path)); + expect(fs.file(path).existsSync(), isTrue); + expect(fs.file(path).lengthSync(), greaterThan(1000000)); + } finally { + SymbolCollectorCli.platform = originalPlatform; + } + }); + } + }); + + group('execute', () { + final tmpDir = LocalFileSystem() + .systemTempDirectory + .createTempSync('symbol_collector_test'); + late final SymbolCollectorCli sut; + + setUpAll(() async => sut = await SymbolCollectorCli.setup(tmpDir)); + tearDownAll(() => tmpDir.delete(recursive: true)); + + test('getVersion()', () async { + final output = await sut.getVersion(); + expect(output, startsWith('${SymbolCollectorCli.version}+')); + expect(output.split("\n").length, equals(1)); + }); + + test('upload()', () async { + final uploadDir = LocalFileSystem() + .systemTempDirectory + .createTempSync('symbol_collector_upload_test'); + try { + await sut.upload( + uploadDir, LocalPlatform(), FlutterVersion('v0.0.0-test')); + } finally { + uploadDir.deleteSync(); + } + }); + }, skip: LocalPlatform().isWindows); +} diff --git a/scripts/update-symbol-collector.sh b/scripts/update-symbol-collector.sh new file mode 100755 index 0000000000..0df03b9434 --- /dev/null +++ b/scripts/update-symbol-collector.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -euo pipefail + +cd $(dirname "$0")/flutter_symbol_collector +file='lib/src/symbol_collector_cli.dart' +content=$(cat $file) +regex="(static const version = )'([0-9\.]+)'" +if ! [[ $content =~ $regex ]]; then + echo "Failed to find the plugin version in $file" + exit 1 +fi + +case $1 in +get-version) + echo ${BASH_REMATCH[2]} + ;; +get-repo) + echo "https://github.com/getsentry/symbol-collector.git" + ;; +set-version) + newValue="${BASH_REMATCH[1]}'$2'" + echo "${content/${BASH_REMATCH[0]}/$newValue}" >$file + ;; +*) + echo "Unknown argument $1" + exit 1 + ;; +esac From 481e262794b52321677649641e74d4b08f2adf47 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 31 Oct 2023 09:59:05 +0000 Subject: [PATCH 049/166] release: 7.12.0 --- CHANGELOG.md | 2 +- dart/lib/src/version.dart | 2 +- dart/pubspec.yaml | 2 +- dio/lib/src/version.dart | 2 +- dio/pubspec.yaml | 4 ++-- file/lib/src/version.dart | 2 +- file/pubspec.yaml | 4 ++-- flutter/example/pubspec.yaml | 2 +- flutter/lib/src/version.dart | 2 +- flutter/pubspec.yaml | 4 ++-- logging/lib/src/version.dart | 2 +- logging/pubspec.yaml | 4 ++-- sqflite/lib/src/version.dart | 2 +- sqflite/pubspec.yaml | 4 ++-- 14 files changed, 19 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3507770f8..c640f46f6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 7.12.0 ### Enhancements diff --git a/dart/lib/src/version.dart b/dart/lib/src/version.dart index 01770638e4..3f070cc6d9 100644 --- a/dart/lib/src/version.dart +++ b/dart/lib/src/version.dart @@ -9,7 +9,7 @@ library version; /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.11.0'; +const String sdkVersion = '7.12.0'; String sdkName(bool isWeb) => isWeb ? _browserSdkName : _ioSdkName; diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index f77b7868e5..75cb48ec87 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry -version: 7.11.0 +version: 7.12.0 description: > A crash reporting library for Dart that sends crash reports to Sentry.io. This library supports Dart VM and Web. For Flutter consider sentry_flutter instead. diff --git a/dio/lib/src/version.dart b/dio/lib/src/version.dart index 78933e14bd..0446ba1e94 100644 --- a/dio/lib/src/version.dart +++ b/dio/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.11.0'; +const String sdkVersion = '7.12.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_dio'; diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index 8e3ceb4ef7..3970b0bab3 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_dio description: An integration which adds support for performance tracing for the Dio package. -version: 7.11.0 +version: 7.12.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: dio: ^5.0.0 - sentry: 7.11.0 + sentry: 7.12.0 dev_dependencies: meta: ^1.3.0 diff --git a/file/lib/src/version.dart b/file/lib/src/version.dart index bb9a0d32ea..92f094f624 100644 --- a/file/lib/src/version.dart +++ b/file/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.11.0'; +const String sdkVersion = '7.12.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_file'; diff --git a/file/pubspec.yaml b/file/pubspec.yaml index 0e95d56bdc..c5de1b97c6 100644 --- a/file/pubspec.yaml +++ b/file/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_file description: An integration which adds support for performance tracing for dart.io.File. -version: 7.11.0 +version: 7.12.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: sdk: '>=2.19.0 <4.0.0' dependencies: - sentry: 7.11.0 + sentry: 7.12.0 meta: ^1.3.0 dev_dependencies: diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index d2ed7bba04..b375a829d0 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_flutter_example description: Demonstrates how to use the sentry_flutter plugin. -version: 7.11.0 +version: 7.12.0 publish_to: 'none' # Remove this line if you wish to publish to pub.dev diff --git a/flutter/lib/src/version.dart b/flutter/lib/src/version.dart index b9ce8ac76a..5f105e78d2 100644 --- a/flutter/lib/src/version.dart +++ b/flutter/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.11.0'; +const String sdkVersion = '7.12.0'; /// The default SDK name reported to Sentry.io in the submitted events. const String sdkName = 'sentry.dart.flutter'; diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 33a233de90..7264c62e82 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry_flutter -version: 7.11.0 +version: 7.12.0 description: Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supported by Sentry with native SDKs. homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart @@ -15,7 +15,7 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - sentry: 7.11.0 + sentry: 7.12.0 package_info_plus: '>=1.0.0 <5.0.0' meta: ^1.3.0 ffi: ^2.0.0 diff --git a/logging/lib/src/version.dart b/logging/lib/src/version.dart index e1ceffa3c4..0d95c65871 100644 --- a/logging/lib/src/version.dart +++ b/logging/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.11.0'; +const String sdkVersion = '7.12.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_logging'; diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index ddd6b9bca1..e1142ca3b3 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_logging description: An integration which adds support for recording log from the logging package. -version: 7.11.0 +version: 7.12.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: logging: ^1.0.0 - sentry: 7.11.0 + sentry: 7.12.0 dev_dependencies: lints: ^3.0.0 diff --git a/sqflite/lib/src/version.dart b/sqflite/lib/src/version.dart index 7b6a54019e..4199899988 100644 --- a/sqflite/lib/src/version.dart +++ b/sqflite/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.11.0'; +const String sdkVersion = '7.12.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_sqflite'; diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index 9b43b24ccf..154c932d50 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_sqflite description: An integration which adds support for performance tracing for the sqflite package. -version: 7.11.0 +version: 7.12.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' # matching sqflite dependencies: - sentry: 7.11.0 + sentry: 7.12.0 sqflite: ^2.0.0 sqflite_common: ^2.0.0 meta: ^1.3.0 From 3de8b9b92406e56cedb15086ae779e72d5cdfb08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 31 Oct 2023 14:35:48 +0000 Subject: [PATCH 050/166] Add `SentryNavigatorObserver` current route to `event.app.contexts.viewNames` (#1545) --- CHANGELOG.md | 2 + dart/lib/src/protocol/sentry_app.dart | 40 +++++++---- dart/test/protocol/sentry_app_test.dart | 30 ++++++--- .../flutter_enricher_event_processor.dart | 17 +++++ .../navigation/sentry_navigator_observer.dart | 27 ++++++-- ...flutter_enricher_event_processor_test.dart | 23 +++++++ .../test/sentry_navigator_observer_test.dart | 67 +++++++++++++++++++ 7 files changed, 180 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c640f46f6b..41975567fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ ### Features - Initial (alpha) support for profiling on iOS and macOS ([#1611](https://github.com/getsentry/sentry-dart/pull/1611)) +- Add `SentryNavigatorObserver` current route to `event.app.contexts.viewNames` ([#1545](https://github.com/getsentry/sentry-dart/pull/1545)) + - Requires relay version [23.9.0](https://github.com/getsentry/relay/blob/master/CHANGELOG.md#2390) for self-hosted instances ## 7.11.0 diff --git a/dart/lib/src/protocol/sentry_app.dart b/dart/lib/src/protocol/sentry_app.dart index 67accebe1a..b5163e5856 100644 --- a/dart/lib/src/protocol/sentry_app.dart +++ b/dart/lib/src/protocol/sentry_app.dart @@ -18,6 +18,7 @@ class SentryApp { this.deviceAppHash, this.appMemory, this.inForeground, + this.viewNames, }); /// Human readable application name, as it appears on the platform. @@ -48,20 +49,27 @@ class SentryApp { /// An app is in foreground when it's visible to the user. final bool? inForeground; + /// The names of the currently visible views. + final List? viewNames; + /// Deserializes a [SentryApp] from JSON [Map]. - factory SentryApp.fromJson(Map data) => SentryApp( - name: data['app_name'], - version: data['app_version'], - identifier: data['app_identifier'], - build: data['app_build'], - buildType: data['build_type'], - startTime: data['app_start_time'] != null - ? DateTime.tryParse(data['app_start_time']) - : null, - deviceAppHash: data['device_app_hash'], - appMemory: data['app_memory'], - inForeground: data['in_foreground'], - ); + factory SentryApp.fromJson(Map data) { + final viewNamesJson = data['view_names'] as List?; + return SentryApp( + name: data['app_name'], + version: data['app_version'], + identifier: data['app_identifier'], + build: data['app_build'], + buildType: data['build_type'], + startTime: data['app_start_time'] != null + ? DateTime.tryParse(data['app_start_time']) + : null, + deviceAppHash: data['device_app_hash'], + appMemory: data['app_memory'], + inForeground: data['in_foreground'], + viewNames: viewNamesJson?.map((e) => e as String).toList(), + ); + } /// Produces a [Map] that can be serialized to JSON. Map toJson() { @@ -71,10 +79,11 @@ class SentryApp { if (identifier != null) 'app_identifier': identifier!, if (build != null) 'app_build': build!, if (buildType != null) 'build_type': buildType!, + if (startTime != null) 'app_start_time': startTime!.toIso8601String(), if (deviceAppHash != null) 'device_app_hash': deviceAppHash!, if (appMemory != null) 'app_memory': appMemory!, - if (startTime != null) 'app_start_time': startTime!.toIso8601String(), if (inForeground != null) 'in_foreground': inForeground!, + if (viewNames != null && viewNames!.isNotEmpty) 'view_names': viewNames!, }; } @@ -88,6 +97,7 @@ class SentryApp { deviceAppHash: deviceAppHash, appMemory: appMemory, inForeground: inForeground, + viewNames: viewNames, ); SentryApp copyWith({ @@ -100,6 +110,7 @@ class SentryApp { String? deviceAppHash, int? appMemory, bool? inForeground, + List? viewNames, }) => SentryApp( name: name ?? this.name, @@ -111,5 +122,6 @@ class SentryApp { deviceAppHash: deviceAppHash ?? this.deviceAppHash, appMemory: appMemory ?? this.appMemory, inForeground: inForeground ?? this.inForeground, + viewNames: viewNames ?? this.viewNames, ); } diff --git a/dart/test/protocol/sentry_app_test.dart b/dart/test/protocol/sentry_app_test.dart index 6c72e956d3..6fd4236efc 100644 --- a/dart/test/protocol/sentry_app_test.dart +++ b/dart/test/protocol/sentry_app_test.dart @@ -14,6 +14,7 @@ void main() { startTime: testStartTime, deviceAppHash: 'fixture-deviceAppHash', inForeground: true, + viewNames: ['fixture-viewName', 'fixture-viewName2'], ); final sentryAppJson = { @@ -25,25 +26,36 @@ void main() { 'app_start_time': testStartTime.toIso8601String(), 'device_app_hash': 'fixture-deviceAppHash', 'in_foreground': true, + 'view_names': ['fixture-viewName', 'fixture-viewName2'], }; group('json', () { test('toJson', () { final json = sentryApp.toJson(); - expect( - MapEquality().equals(sentryAppJson, json), - true, - ); + expect(json['app_name'], 'fixture-name'); + expect(json['app_version'], 'fixture-version'); + expect(json['app_identifier'], 'fixture-identifier'); + expect(json['app_build'], 'fixture-build'); + expect(json['build_type'], 'fixture-buildType'); + expect(json['app_start_time'], testStartTime.toIso8601String()); + expect(json['device_app_hash'], 'fixture-deviceAppHash'); + expect(json['in_foreground'], true); + expect(json['view_names'], ['fixture-viewName', 'fixture-viewName2']); }); test('fromJson', () { final sentryApp = SentryApp.fromJson(sentryAppJson); final json = sentryApp.toJson(); - expect( - MapEquality().equals(sentryAppJson, json), - true, - ); + expect(json['app_name'], 'fixture-name'); + expect(json['app_version'], 'fixture-version'); + expect(json['app_identifier'], 'fixture-identifier'); + expect(json['app_build'], 'fixture-build'); + expect(json['build_type'], 'fixture-buildType'); + expect(json['app_start_time'], testStartTime.toIso8601String()); + expect(json['device_app_hash'], 'fixture-deviceAppHash'); + expect(json['in_foreground'], true); + expect(json['view_names'], ['fixture-viewName', 'fixture-viewName2']); }); }); @@ -73,6 +85,7 @@ void main() { startTime: startTime, deviceAppHash: 'hash1', inForeground: true, + viewNames: ['screen1'], ); expect('name1', copy.name); @@ -83,6 +96,7 @@ void main() { expect(startTime, copy.startTime); expect('hash1', copy.deviceAppHash); expect(true, copy.inForeground); + expect(['screen1'], copy.viewNames); }); }); } diff --git a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart index f72eb2470b..b0eaa0fe71 100644 --- a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart +++ b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart @@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:sentry/sentry.dart'; +import '../navigation/sentry_navigator_observer.dart'; import '../sentry_flutter_options.dart'; typedef WidgetBindingGetter = WidgetsBinding? Function(); @@ -47,6 +48,11 @@ class FlutterEnricherEventProcessor implements EventProcessor { app: _getApp(event.contexts.app), ); + final app = contexts.app; + if (app != null) { + contexts.app = _appWithCurrentRouteViewName(app); + } + // Flutter has a lot of Accessibility Settings available and exposes them contexts['accessibility'] = _getAccessibilityContext(); @@ -237,4 +243,15 @@ class FlutterEnricherEventProcessor implements EventProcessor { inForeground: inForeground, ); } + + SentryApp _appWithCurrentRouteViewName(SentryApp app) { + final currentRouteName = SentryNavigatorObserver.currentRouteName; + if (currentRouteName != null) { + final viewNames = app.viewNames ?? []; + viewNames.add(currentRouteName); + return app.copyWith(viewNames: viewNames); + } else { + return app; + } + } } diff --git a/flutter/lib/src/navigation/sentry_navigator_observer.dart b/flutter/lib/src/navigation/sentry_navigator_observer.dart index 51c4b0fd07..bfe1c0c6a2 100644 --- a/flutter/lib/src/navigation/sentry_navigator_observer.dart +++ b/flutter/lib/src/navigation/sentry_navigator_observer.dart @@ -1,6 +1,8 @@ import 'package:flutter/widgets.dart'; +import 'package:meta/meta.dart'; import '../../sentry_flutter.dart'; +import '../event_processor/flutter_enricher_event_processor.dart'; import '../native/sentry_native.dart'; /// This key must be used so that the web interface displays the events nicely @@ -22,6 +24,9 @@ typedef AdditionalInfoExtractor = Map? Function( /// The [RouteSettings] is null if a developer has not specified any /// RouteSettings. /// +/// The current route name will also be set to [SentryEvent] +/// `contexts.app.view_names` by [FlutterEnricherEventProcessor]. +/// /// [SentryNavigatorObserver] must be added to the [navigation observer](https://api.flutter.dev/flutter/material/MaterialApp/navigatorObservers.html) of /// your used app. This is an example for [MaterialApp](https://api.flutter.dev/flutter/material/MaterialApp/navigatorObservers.html), /// but the integration for [CupertinoApp](https://api.flutter.dev/flutter/cupertino/CupertinoApp/navigatorObservers.html) @@ -84,11 +89,17 @@ class SentryNavigatorObserver extends RouteObserver> { ISentrySpan? _transaction; + static String? _currentRouteName; + + @internal + static String? get currentRouteName => _currentRouteName; + @override void didPush(Route route, Route? previousRoute) { super.didPush(route, previousRoute); - _setCurrentRoute(route); + _setCurrentRouteName(route); + _setCurrentRouteNameAsTransaction(route); _addBreadcrumb( type: 'didPush', @@ -104,7 +115,9 @@ class SentryNavigatorObserver extends RouteObserver> { void didReplace({Route? newRoute, Route? oldRoute}) { super.didReplace(newRoute: newRoute, oldRoute: oldRoute); - _setCurrentRoute(newRoute); + _setCurrentRouteName(newRoute); + _setCurrentRouteNameAsTransaction(newRoute); + _addBreadcrumb( type: 'didReplace', from: oldRoute?.settings, @@ -116,7 +129,9 @@ class SentryNavigatorObserver extends RouteObserver> { void didPop(Route route, Route? previousRoute) { super.didPop(route, previousRoute); - _setCurrentRoute(previousRoute); + _setCurrentRouteName(previousRoute); + _setCurrentRouteNameAsTransaction(previousRoute); + _addBreadcrumb( type: 'didPop', from: route.settings, @@ -147,7 +162,11 @@ class SentryNavigatorObserver extends RouteObserver> { ?.name; } - Future _setCurrentRoute(Route? route) async { + Future _setCurrentRouteName(Route? route) async { + _currentRouteName = _getRouteName(route); + } + + Future _setCurrentRouteNameAsTransaction(Route? route) async { final name = _getRouteName(route); if (name == null) { return; diff --git a/flutter/test/event_processor/flutter_enricher_event_processor_test.dart b/flutter/test/event_processor/flutter_enricher_event_processor_test.dart index bfccb8c773..4e748b2934 100644 --- a/flutter/test/event_processor/flutter_enricher_event_processor_test.dart +++ b/flutter/test/event_processor/flutter_enricher_event_processor_test.dart @@ -322,6 +322,24 @@ void main() { .length; expect(ioEnricherCount, 1); }); + + testWidgets('adds SentryNavigatorObserver.currentRouteName as app.screen', + (tester) async { + final observer = SentryNavigatorObserver(); + final route = + fixture.route(RouteSettings(name: 'fixture-currentRouteName')); + observer.didPush(route, null); + + final eventWithContextsApp = + SentryEvent(contexts: Contexts(app: SentryApp())); + + final enricher = fixture.getSut( + binding: () => tester.binding, + ); + final event = await enricher.apply(eventWithContextsApp); + + expect(event?.contexts.app?.viewNames, ['fixture-currentRouteName']); + }); }); } @@ -342,6 +360,11 @@ class Fixture { )..reportPackages = reportPackages; return FlutterEnricherEventProcessor(options); } + + PageRoute route(RouteSettings? settings) => PageRouteBuilder( + pageBuilder: (_, __, ___) => Container(), + settings: settings, + ); } void loadTestPackage() { diff --git a/flutter/test/sentry_navigator_observer_test.dart b/flutter/test/sentry_navigator_observer_test.dart index 8ef61b1398..c49588ab85 100644 --- a/flutter/test/sentry_navigator_observer_test.dart +++ b/flutter/test/sentry_navigator_observer_test.dart @@ -367,6 +367,73 @@ void main() { expect(scope.span, span); }); }); + + test('didPush sets current route name', () { + const name = 'Current Route'; + final currentRoute = route(RouteSettings(name: name)); + + const op = 'navigation'; + final hub = _MockHub(); + final span = getMockSentryTracer(name: name); + when(span.context).thenReturn(SentrySpanContext(operation: op)); + _whenAnyStart(hub, span); + + final sut = fixture.getSut( + hub: hub, + autoFinishAfter: Duration(seconds: 5), + ); + + sut.didPush(currentRoute, null); + + expect(SentryNavigatorObserver.currentRouteName, 'Current Route'); + }); + + test('didReplace sets new route name', () { + const oldRouteName = 'Old Route'; + final oldRoute = route(RouteSettings(name: oldRouteName)); + const newRouteName = 'New Route'; + final newRoute = route(RouteSettings(name: newRouteName)); + + const op = 'navigation'; + final hub = _MockHub(); + final span = getMockSentryTracer(name: oldRouteName); + when(span.context).thenReturn(SentrySpanContext(operation: op)); + _whenAnyStart(hub, span); + + final sut = fixture.getSut( + hub: hub, + autoFinishAfter: Duration(seconds: 5), + ); + + sut.didPush(oldRoute, null); + sut.didReplace(newRoute: newRoute, oldRoute: oldRoute); + + expect(SentryNavigatorObserver.currentRouteName, 'New Route'); + }); + + test('popRoute sets previous route name', () { + const oldRouteName = 'Old Route'; + final oldRoute = route(RouteSettings(name: oldRouteName)); + const newRouteName = 'New Route'; + final newRoute = route(RouteSettings(name: newRouteName)); + + const op = 'navigation'; + final hub = _MockHub(); + final span = getMockSentryTracer(name: oldRouteName); + when(span.context).thenReturn(SentrySpanContext(operation: op)); + when(span.status).thenReturn(null); + _whenAnyStart(hub, span); + + final sut = fixture.getSut( + hub: hub, + autoFinishAfter: Duration(seconds: 5), + ); + + sut.didPush(oldRoute, null); + sut.didPop(newRoute, oldRoute); + + expect(SentryNavigatorObserver.currentRouteName, 'Old Route'); + }); }); group('RouteObserverBreadcrumb', () { From 2261c15342b55a1566de274be3688b1e34743749 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Tue, 31 Oct 2023 15:22:51 +0000 Subject: [PATCH 051/166] fix: coverage not ignoring generated binding.dart (#1707) * Remove coverage for binding.dart --- .github/workflows/flutter.yml | 1 + flutter/pubspec.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 8afd04f4b1..f247a4ffce 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -103,6 +103,7 @@ jobs: run: | cd flutter flutter test --coverage --test-randomize-ordering-seed=random + dart run remove_from_coverage -f coverage/lcov.info -r 'binding.dart' - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 7264c62e82..ded2470f09 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -28,6 +28,7 @@ dev_dependencies: yaml: ^3.1.0 # needed for version match (code and pubspec) flutter_lints: ^2.0.0 collection: ^1.16.0 + remove_from_coverage: ^2.0.0 flutter: plugin: From 955541a50762f04c301c83eb25aef0077742c29a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 31 Oct 2023 17:15:16 +0000 Subject: [PATCH 052/166] Breadcrumbs for database operations (#1656) --- .github/workflows/flutter_test.yml | 2 +- CHANGELOG.md | 6 + flutter/example/ios/Podfile | 3 + sqflite/lib/src/sentry_batch.dart | 31 ++ sqflite/lib/src/sentry_database.dart | 36 +- sqflite/lib/src/sentry_database_executor.dart | 165 +++++++ sqflite/lib/src/sentry_sqflite.dart | 17 +- .../src/sentry_sqflite_database_factory.dart | 18 +- .../sentry_database_span_attributes.dart | 9 + sqflite/test/mocks/mocks.mocks.dart | 129 +++-- sqflite/test/sentry_batch_test.dart | 295 +++++++++++ sqflite/test/sentry_database_test.dart | 463 ++++++++++++++++++ ...ry_sqflite_database_factory_dart_test.dart | 16 + sqflite/test/sentry_sqflite_test.dart | 15 + 14 files changed, 1163 insertions(+), 42 deletions(-) diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index d0875a8604..28f3777fc7 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -141,7 +141,7 @@ jobs: run: | case "${{ matrix.target }}" in ios) - device=$(xcrun simctl create sentryPhone com.apple.CoreSimulator.SimDeviceType.iPhone-14 com.apple.CoreSimulator.SimRuntime.iOS-16-4) + device=$(xcrun simctl create sentryPhone com.apple.CoreSimulator.SimDeviceType.iPhone-14 com.apple.CoreSimulator.SimRuntime.iOS-17-0) xcrun simctl boot ${device} echo "platform=iOS Simulator,id=${device}" >> "$GITHUB_OUTPUT" ;; diff --git a/CHANGELOG.md b/CHANGELOG.md index 41975567fa..5f24a7ed7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Features + +- Breadcrumbs for database operations ([#1656](https://github.com/getsentry/sentry-dart/pull/1656)) + ## 7.12.0 ### Enhancements diff --git a/flutter/example/ios/Podfile b/flutter/example/ios/Podfile index 7b1e6a2394..8d38fc9608 100644 --- a/flutter/example/ios/Podfile +++ b/flutter/example/ios/Podfile @@ -43,5 +43,8 @@ end post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) + target.build_configurations.each do |config| + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' + end end end diff --git a/sqflite/lib/src/sentry_batch.dart b/sqflite/lib/src/sentry_batch.dart index 150b1c51da..a510ad186f 100644 --- a/sqflite/lib/src/sentry_batch.dart +++ b/sqflite/lib/src/sentry_batch.dart @@ -56,6 +56,13 @@ class SentryBatch implements Batch { span?.origin = SentryTraceOrigins.autoDbSqfliteBatch; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: _buffer.toString().trim(), + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _batch.apply( noResult: noResult, @@ -64,14 +71,23 @@ class SentryBatch implements Batch { span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; + return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); + rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -94,6 +110,13 @@ class SentryBatch implements Batch { span?.origin = SentryTraceOrigins.autoDbSqfliteBatch; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: _buffer.toString().trim(), + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _batch.commit( exclusive: exclusive, @@ -102,15 +125,23 @@ class SentryBatch implements Batch { ); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); + rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } diff --git a/sqflite/lib/src/sentry_database.dart b/sqflite/lib/src/sentry_database.dart index d148eb7ded..fafcad06d9 100644 --- a/sqflite/lib/src/sentry_database.dart +++ b/sqflite/lib/src/sentry_database.dart @@ -75,24 +75,39 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { Future close() { return Future(() async { final currentSpan = _hub.getSpan(); + final description = 'Close DB: ${_database.path}'; final span = currentSpan?.startChild( dbOp, - description: 'Close DB: ${_database.path}', + description: description, ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabase; + var breadcrumb = Breadcrumb( + message: description, + category: dbOp, + data: {}, + type: 'query', + ); + try { await _database.close(); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -126,14 +141,23 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { }) { return Future(() async { final currentSpan = _hub.getSpan(); + final description = 'Transaction DB: ${_database.path}'; final span = currentSpan?.startChild( _dbSqlOp, - description: 'Transaction DB: ${_database.path}', + description: description, ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteDatabase; setDatabaseAttributeData(span, dbName); + var breadcrumb = Breadcrumb( + message: description, + category: _dbSqlOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, dbName); + Future newAction(Transaction txn) async { final executor = SentryDatabaseExecutor( txn, @@ -152,15 +176,23 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { await _database.transaction(newAction, exclusive: exclusive); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } diff --git a/sqflite/lib/src/sentry_database_executor.dart b/sqflite/lib/src/sentry_database_executor.dart index c232ca9e24..f13b0eb261 100644 --- a/sqflite/lib/src/sentry_database_executor.dart +++ b/sqflite/lib/src/sentry_database_executor.dart @@ -47,20 +47,35 @@ class SentryDatabaseExecutor implements DatabaseExecutor { span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: builder.sql, + category: SentryDatabase.dbSqlExecuteOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _executor.delete(table, where: where, whereArgs: whereArgs); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -78,17 +93,32 @@ class SentryDatabaseExecutor implements DatabaseExecutor { span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: sql, + category: SentryDatabase.dbSqlExecuteOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { await _executor.execute(sql, arguments); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -116,6 +146,14 @@ class SentryDatabaseExecutor implements DatabaseExecutor { span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: builder.sql, + category: SentryDatabase.dbSqlExecuteOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _executor.insert( table, @@ -125,15 +163,22 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -173,6 +218,14 @@ class SentryDatabaseExecutor implements DatabaseExecutor { span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: builder.sql, + category: SentryDatabase.dbSqlQueryOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _executor.query( table, @@ -188,15 +241,22 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -237,6 +297,14 @@ class SentryDatabaseExecutor implements DatabaseExecutor { span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: builder.sql, + category: SentryDatabase.dbSqlQueryOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _executor.queryCursor( table, @@ -253,15 +321,22 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -278,19 +353,34 @@ class SentryDatabaseExecutor implements DatabaseExecutor { span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: sql, + category: SentryDatabase.dbSqlExecuteOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _executor.rawDelete(sql, arguments); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -307,19 +397,34 @@ class SentryDatabaseExecutor implements DatabaseExecutor { span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: sql, + category: SentryDatabase.dbSqlExecuteOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _executor.rawInsert(sql, arguments); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -339,19 +444,34 @@ class SentryDatabaseExecutor implements DatabaseExecutor { span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: sql, + category: SentryDatabase.dbSqlQueryOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _executor.rawQuery(sql, arguments); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -372,6 +492,14 @@ class SentryDatabaseExecutor implements DatabaseExecutor { span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: sql, + category: SentryDatabase.dbSqlQueryOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _executor.rawQueryCursor( sql, @@ -380,15 +508,22 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -405,19 +540,34 @@ class SentryDatabaseExecutor implements DatabaseExecutor { span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: sql, + category: SentryDatabase.dbSqlExecuteOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _executor.rawUpdate(sql, arguments); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } @@ -447,6 +597,14 @@ class SentryDatabaseExecutor implements DatabaseExecutor { span?.origin = SentryTraceOrigins.autoDbSqfliteDatabaseExecutor; setDatabaseAttributeData(span, _dbName); + var breadcrumb = Breadcrumb( + message: builder.sql, + category: SentryDatabase.dbSqlExecuteOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, _dbName); + try { final result = await _executor.update( table, @@ -457,15 +615,22 @@ class SentryDatabaseExecutor implements DatabaseExecutor { ); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } diff --git a/sqflite/lib/src/sentry_sqflite.dart b/sqflite/lib/src/sentry_sqflite.dart index ebd39b547b..b26b767808 100644 --- a/sqflite/lib/src/sentry_sqflite.dart +++ b/sqflite/lib/src/sentry_sqflite.dart @@ -40,13 +40,20 @@ Future openDatabaseWithSentry( final newHub = hub ?? HubAdapter(); final currentSpan = newHub.getSpan(); + final description = 'Open DB: $path'; final span = currentSpan?.startChild( SentryDatabase.dbOp, - description: 'Open DB: $path', + description: description, ); // ignore: invalid_use_of_internal_member span?.origin = SentryTraceOrigins.autoDbSqfliteOpenDatabase; + var breadcrumb = Breadcrumb( + message: description, + category: SentryDatabase.dbOp, + data: {}, + ); + try { final database = await databaseFactory.openDatabase(path, options: dbOptions); @@ -54,14 +61,22 @@ Future openDatabaseWithSentry( final sentryDatabase = SentryDatabase(database, hub: newHub); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; + return sentryDatabase; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await newHub.scope.addBreadcrumb(breadcrumb); } }); } diff --git a/sqflite/lib/src/sentry_sqflite_database_factory.dart b/sqflite/lib/src/sentry_sqflite_database_factory.dart index 4fff7479b1..827e516afa 100644 --- a/sqflite/lib/src/sentry_sqflite_database_factory.dart +++ b/sqflite/lib/src/sentry_sqflite_database_factory.dart @@ -59,15 +59,22 @@ class SentrySqfliteDatabaseFactory with SqfliteDatabaseFactoryMixin { return Future(() async { final currentSpan = _hub.getSpan(); + final description = 'Open DB: $path'; final span = currentSpan?.startChild( SentryDatabase.dbOp, - description: 'Open DB: $path', + description: description, ); span?.origin = // ignore: invalid_use_of_internal_member SentryTraceOrigins.autoDbSqfliteDatabaseFactory; + var breadcrumb = Breadcrumb( + message: description, + category: SentryDatabase.dbOp, + data: {}, + ); + try { final database = await databaseFactory.openDatabase(path, options: options); @@ -75,14 +82,21 @@ class SentrySqfliteDatabaseFactory with SqfliteDatabaseFactoryMixin { final sentryDatabase = SentryDatabase(database, hub: _hub); span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; + return sentryDatabase; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); - + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); rethrow; } finally { await span?.finish(); + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } }); } diff --git a/sqflite/lib/src/utils/sentry_database_span_attributes.dart b/sqflite/lib/src/utils/sentry_database_span_attributes.dart index 119f2dd1b8..347c750ee8 100644 --- a/sqflite/lib/src/utils/sentry_database_span_attributes.dart +++ b/sqflite/lib/src/utils/sentry_database_span_attributes.dart @@ -10,3 +10,12 @@ void setDatabaseAttributeData(ISentrySpan? span, String? dbName) { span?.setData(SentryDatabase.dbNameKey, dbName); } } + +/// Sets the database attributes on the [breadcrumb]. +/// It contains the database system and the database name. +void setDatabaseAttributeOnBreadcrumb(Breadcrumb breadcrumb, String? dbName) { + breadcrumb.data?[SentryDatabase.dbSystemKey] = SentryDatabase.dbSystem; + if (dbName != null) { + breadcrumb.data?[SentryDatabase.dbNameKey] = dbName; + } +} diff --git a/sqflite/test/mocks/mocks.mocks.dart b/sqflite/test/mocks/mocks.mocks.dart index 582663e5f9..6c4c5e362e 100644 --- a/sqflite/test/mocks/mocks.mocks.dart +++ b/sqflite/test/mocks/mocks.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.0 from annotations +// Mocks generated by Mockito 5.4.2 from annotations // in sentry_sqflite/test/mocks/mocks.dart. // Do not manually edit this file. @@ -6,12 +6,13 @@ import 'dart:async' as _i4; import 'package:mockito/mockito.dart' as _i1; +import 'package:mockito/src/dummies.dart' as _i7; import 'package:sentry/sentry.dart' as _i2; import 'package:sentry/src/sentry_tracer.dart' as _i5; import 'package:sqflite_common/sql.dart' as _i6; import 'package:sqflite_common/sqlite_api.dart' as _i3; -import 'mocks.dart' as _i7; +import 'mocks.dart' as _i8; // ignore_for_file: type=lint // ignore_for_file: avoid_redundant_argument_values @@ -76,7 +77,7 @@ class _FakeDatabase_4 extends _i1.SmartFake implements _i3.Database { ); } -class _FakeFuture_5 extends _i1.SmartFake implements _i4.Future { +class _FakeFuture_5 extends _i1.SmartFake implements _i4.Future { _FakeFuture_5( Object parent, Invocation parentInvocation, @@ -126,8 +127,18 @@ class _FakeSentryId_9 extends _i1.SmartFake implements _i2.SentryId { ); } -class _FakeHub_10 extends _i1.SmartFake implements _i2.Hub { - _FakeHub_10( +class _FakeScope_10 extends _i1.SmartFake implements _i2.Scope { + _FakeScope_10( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeHub_11 extends _i1.SmartFake implements _i2.Hub { + _FakeHub_11( Object parent, Invocation parentInvocation, ) : super( @@ -666,14 +677,25 @@ class MockDatabase extends _i1.Mock implements _i3.Database { [action], {#exclusive: exclusive}, ), - returnValue: _FakeFuture_5( - this, - Invocation.method( - #transaction, - [action], - {#exclusive: exclusive}, - ), - ), + returnValue: _i7.ifNotNull( + _i7.dummyValueOrNull( + this, + Invocation.method( + #transaction, + [action], + {#exclusive: exclusive}, + ), + ), + (T v) => _i4.Future.value(v), + ) ?? + _FakeFuture_5( + this, + Invocation.method( + #transaction, + [action], + {#exclusive: exclusive}, + ), + ), ) as _i4.Future); @override _i4.Future devInvokeMethod( @@ -688,16 +710,29 @@ class MockDatabase extends _i1.Mock implements _i3.Database { arguments, ], ), - returnValue: _FakeFuture_5( - this, - Invocation.method( - #devInvokeMethod, - [ - method, - arguments, - ], - ), - ), + returnValue: _i7.ifNotNull( + _i7.dummyValueOrNull( + this, + Invocation.method( + #devInvokeMethod, + [ + method, + arguments, + ], + ), + ), + (T v) => _i4.Future.value(v), + ) ?? + _FakeFuture_5( + this, + Invocation.method( + #devInvokeMethod, + [ + method, + arguments, + ], + ), + ), ) as _i4.Future); @override _i4.Future devInvokeSqlMethod( @@ -714,17 +749,31 @@ class MockDatabase extends _i1.Mock implements _i3.Database { arguments, ], ), - returnValue: _FakeFuture_5( - this, - Invocation.method( - #devInvokeSqlMethod, - [ - method, - sql, - arguments, - ], - ), - ), + returnValue: _i7.ifNotNull( + _i7.dummyValueOrNull( + this, + Invocation.method( + #devInvokeSqlMethod, + [ + method, + sql, + arguments, + ], + ), + ), + (T v) => _i4.Future.value(v), + ) ?? + _FakeFuture_5( + this, + Invocation.method( + #devInvokeSqlMethod, + [ + method, + sql, + arguments, + ], + ), + ), ) as _i4.Future); @override _i4.Future execute( @@ -1300,6 +1349,14 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), ) as _i2.SentryId); @override + _i2.Scope get scope => (super.noSuchMethod( + Invocation.getter(#scope), + returnValue: _FakeScope_10( + this, + Invocation.getter(#scope), + ), + ) as _i2.Scope); + @override _i4.Future<_i2.SentryId> captureEvent( _i2.SentryEvent? event, { dynamic stackTrace, @@ -1433,7 +1490,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { #clone, [], ), - returnValue: _FakeHub_10( + returnValue: _FakeHub_11( this, Invocation.method( #clone, @@ -1487,7 +1544,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { #customSamplingContext: customSamplingContext, }, ), - returnValue: _i7.startTransactionShim( + returnValue: _i8.startTransactionShim( name, operation, description: description, diff --git a/sqflite/test/sentry_batch_test.dart b/sqflite/test/sentry_batch_test.dart index e3b24d811a..b9c53b8762 100644 --- a/sqflite/test/sentry_batch_test.dart +++ b/sqflite/test/sentry_batch_test.dart @@ -22,6 +22,7 @@ void main() { fixture = Fixture(); when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.scope).thenReturn(fixture.scope); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); // using ffi for testing on vm @@ -63,6 +64,9 @@ void main() { // ignore: invalid_use_of_internal_member expect(span.origin, SentryTraceOrigins.autoDbSqfliteBatch); + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect(breadcrumb.data?['status'], 'ok'); + await db.close(); }); @@ -79,6 +83,9 @@ void main() { // ignore: invalid_use_of_internal_member expect(span.origin, SentryTraceOrigins.autoDbSqfliteBatch); + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect(breadcrumb.data?['status'], 'ok'); + await db.close(); }); @@ -102,6 +109,24 @@ void main() { await db.close(); }); + test('creates insert breadcrumb', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.insert('Product', {'title': 'Product 1'}); + + await batch.commit(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.message, + 'INSERT INTO Product (title) VALUES (?)', + ); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates raw insert span', () async { final db = await fixture.getDatabase(); final batch = db.batch(); @@ -122,6 +147,24 @@ void main() { await db.close(); }); + test('creates raw insert breadcrumb', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.rawInsert('INSERT INTO Product (title) VALUES (?)', ['Product 1']); + + await batch.commit(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.message, + 'INSERT INTO Product (title) VALUES (?)', + ); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates update span', () async { final db = await fixture.getDatabase(); final batch = db.batch(); @@ -139,6 +182,24 @@ void main() { await db.close(); }); + test('creates update breadcrumb', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.update('Product', {'title': 'Product 1'}); + + await batch.commit(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.message, + 'UPDATE Product SET title = ?', + ); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates raw update span', () async { final db = await fixture.getDatabase(); final batch = db.batch(); @@ -156,6 +217,24 @@ void main() { await db.close(); }); + test('creates raw update breadcrumb', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.rawUpdate('UPDATE Product SET title = ?', ['Product 1']); + + await batch.commit(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.message, + 'UPDATE Product SET title = ?', + ); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates delete span', () async { final db = await fixture.getDatabase(); final batch = db.batch(); @@ -173,6 +252,24 @@ void main() { await db.close(); }); + test('creates delete breadcrumb', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.delete('Product'); + + await batch.commit(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.message, + 'DELETE FROM Product', + ); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates raw delete span', () async { final db = await fixture.getDatabase(); final batch = db.batch(); @@ -190,6 +287,24 @@ void main() { await db.close(); }); + test('creates raw delete breadcrumb', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.rawDelete('DELETE FROM Product'); + + await batch.commit(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.message, + 'DELETE FROM Product', + ); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates execute span', () async { final db = await fixture.getDatabase(); final batch = db.batch(); @@ -207,6 +322,24 @@ void main() { await db.close(); }); + test('creates execute breadcrumb', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.execute('DELETE FROM Product'); + + await batch.commit(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.message, + 'DELETE FROM Product', + ); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates query span', () async { final db = await fixture.getDatabase(); final batch = db.batch(); @@ -224,6 +357,24 @@ void main() { await db.close(); }); + test('creates query breadcrumb', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.query('Product'); + + await batch.commit(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.message, + 'SELECT * FROM Product', + ); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates raw query span', () async { final db = await fixture.getDatabase(); final batch = db.batch(); @@ -241,6 +392,24 @@ void main() { await db.close(); }); + test('creates raw query breadcrumb', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.rawQuery('SELECT * FROM Product'); + + await batch.commit(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.message, + 'SELECT * FROM Product', + ); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates span with batch description', () async { final db = await fixture.getDatabase(); final batch = db.batch(); @@ -263,6 +432,25 @@ SELECT * FROM Product'''; await db.close(); }); + test('creates breadcrumb with batch description', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.insert('Product', {'title': 'Product 1'}); + batch.query('Product'); + + await batch.commit(); + + final desc = '''INSERT INTO Product (title) VALUES (?) +SELECT * FROM Product'''; + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect(breadcrumb.message, desc); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates span with batch description using apply', () async { final db = await fixture.getDatabase(); final batch = db.batch(); @@ -285,6 +473,25 @@ SELECT * FROM Product'''; await db.close(); }); + test('creates breadcrumb with batch description using apply', () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.insert('Product', {'title': 'Product 1'}); + batch.query('Product'); + + await batch.apply(); + + final desc = '''INSERT INTO Product (title) VALUES (?) +SELECT * FROM Product'''; + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect(breadcrumb.message, desc); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('apply creates db span with dbSystem and dbName attributes', () async { final db = await fixture.getDatabase(); final batch = db.batch(); @@ -300,6 +507,39 @@ SELECT * FROM Product'''; (db as SentryDatabase).dbName, ); + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect( + breadcrumb.data?[SentryDatabase.dbNameKey], + db.dbName, + ); + + await db.close(); + }); + + test('apply creates a breadcrumb with dbSystem and dbName attributes', + () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.insert('Product', {'title': 'Product 1'}); + + await batch.apply(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect( + breadcrumb.data?[SentryDatabase.dbNameKey], + (db as SentryDatabase).dbName, + ); + expect(breadcrumb.type, 'query'); + await db.close(); }); @@ -322,6 +562,29 @@ SELECT * FROM Product'''; await db.close(); }); + test('commit creates breadcrumb with dbSystem and dbName attributes', + () async { + final db = await fixture.getDatabase(); + final batch = db.batch(); + + batch.insert('Product', {'title': 'Product 1'}); + + await batch.commit(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect( + breadcrumb.data?[SentryDatabase.dbNameKey], + (db as SentryDatabase).dbName, + ); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + tearDown(() { databaseFactory = sqfliteDatabaseFactoryDefault; }); @@ -334,6 +597,7 @@ SELECT * FROM Product'''; fixture = Fixture(); when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.scope).thenReturn(fixture.scope); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); }); @@ -353,6 +617,21 @@ SELECT * FROM Product'''; expect(span.origin, SentryTraceOrigins.autoDbSqfliteBatch); }); + test('commit sets batch to internal error if its thrown', () async { + final batch = SentryBatch(fixture.batch, hub: fixture.hub); + + when(fixture.batch.commit()).thenThrow(fixture.exception); + + batch.insert('Product', {'title': 'Product 1'}); + + await expectLater(() async => await batch.commit(), throwsException); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + test('apply sets span to internal error if its thrown', () async { final batch = SentryBatch(fixture.batch, hub: fixture.hub); @@ -368,6 +647,21 @@ SELECT * FROM Product'''; // ignore: invalid_use_of_internal_member expect(span.origin, SentryTraceOrigins.autoDbSqfliteBatch); }); + + test('apply sets breadcrumb to internal error if its thrown', () async { + final batch = SentryBatch(fixture.batch, hub: fixture.hub); + + when(fixture.batch.apply()).thenThrow(fixture.exception); + + batch.insert('Product', {'title': 'Product 1'}); + + await expectLater(() async => await batch.apply(), throwsException); + + final breadcrumb = fixture.hub.scope.breadcrumbs.last; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); }); } @@ -378,6 +672,7 @@ class Fixture { late final tracer = SentryTracer(_context, hub); final batch = MockBatch(); final exception = Exception('error'); + late final scope = Scope(options); Future getDatabase({ double? tracesSampleRate = 1.0, diff --git a/sqflite/test/sentry_database_test.dart b/sqflite/test/sentry_database_test.dart index 5c954426bb..ad1a07b360 100644 --- a/sqflite/test/sentry_database_test.dart +++ b/sqflite/test/sentry_database_test.dart @@ -26,6 +26,7 @@ void main() { fixture = Fixture(); when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.scope).thenReturn(fixture.scope); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); // using ffi for testing on vm @@ -74,6 +75,17 @@ void main() { ); }); + test('creates close breadcrumb', () async { + final db = await fixture.getSut(); + + await db.close(); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.message, 'Close DB: $inMemoryDatabasePath'); + expect(breadcrumb.category, SentryDatabase.dbOp); + expect(breadcrumb.type, 'query'); + }); + test('creates transaction span', () async { final db = await fixture.getSut(); @@ -95,6 +107,27 @@ void main() { await db.close(); }); + test('creates transaction breadcrumb', () async { + final db = await fixture.getSut(); + + await db.transaction((txn) async { + expect(txn is SentrySqfliteTransaction, true); + }); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.message, 'Transaction DB: $inMemoryDatabasePath'); + expect(breadcrumb.category, 'db.sql.transaction'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates transaction children run by the transaction', () async { final db = await fixture.getSut(); @@ -177,6 +210,7 @@ void main() { fixture = Fixture(); when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.scope).thenReturn(fixture.scope); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); when(fixture.database.path).thenReturn('/path/db'); @@ -201,6 +235,19 @@ void main() { ); }); + test('close sets breadcrumb to internal error', () async { + when(fixture.database.close()).thenThrow(fixture.exception); + + final db = await fixture.getSut(database: fixture.database); + + await expectLater(() async => await db.close(), throwsException); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + test('transaction sets span to internal error', () async { // ignore: inference_failure_on_function_invocation when(fixture.database.transaction(any)).thenThrow(fixture.exception); @@ -222,6 +269,23 @@ void main() { SentryTraceOrigins.autoDbSqfliteDatabase, ); }); + + test('transaction sets breadcrumb to internal error', () async { + // ignore: inference_failure_on_function_invocation + when(fixture.database.transaction(any)).thenThrow(fixture.exception); + + final db = await fixture.getSut(database: fixture.database); + + await expectLater( + () async => await db.transaction((txn) async {}), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); }); group('$SentryDatabaseExecutor success', () { @@ -231,6 +295,7 @@ void main() { fixture = Fixture(); when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.scope).thenReturn(fixture.scope); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); // using ffi for testing on vm @@ -259,6 +324,25 @@ void main() { await db.close(); }); + test('creates delete breadcrumb', () async { + final db = await fixture.getSut(); + + await db.delete('Product'); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db.sql.execute'); + expect(breadcrumb.message, 'DELETE FROM Product'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates execute span', () async { final db = await fixture.getSut(); @@ -280,6 +364,25 @@ void main() { await db.close(); }); + test('creates execute breadcrumb', () async { + final db = await fixture.getSut(); + + await db.execute('DELETE FROM Product'); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db.sql.execute'); + expect(breadcrumb.message, 'DELETE FROM Product'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates insert span', () async { final db = await fixture.getSut(); @@ -304,6 +407,28 @@ void main() { await db.close(); }); + test('creates insert breadcrumb', () async { + final db = await fixture.getSut(); + + await db.insert('Product', {'title': 'Product 1'}); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db.sql.execute'); + expect( + breadcrumb.message, + 'INSERT INTO Product (title) VALUES (?)', + ); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates query span', () async { final db = await fixture.getSut(); @@ -325,6 +450,26 @@ void main() { await db.close(); }); + test('creates query breadcrumb', () async { + final db = await fixture.getSut(); + + await db.query('Product'); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db.sql.query'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.message, 'SELECT * FROM Product'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates query cursor span', () async { final db = await fixture.getSut(); @@ -346,6 +491,26 @@ void main() { await db.close(); }); + test('creates query cursor breadcrumb', () async { + final db = await fixture.getSut(); + + await db.queryCursor('Product'); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db.sql.query'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.message, 'SELECT * FROM Product'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates raw delete span', () async { final db = await fixture.getSut(); @@ -367,6 +532,25 @@ void main() { await db.close(); }); + test('creates raw delete breadcrumb', () async { + final db = await fixture.getSut(); + + await db.rawDelete('DELETE FROM Product'); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db.sql.execute'); + expect(breadcrumb.message, 'DELETE FROM Product'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates raw insert span', () async { final db = await fixture.getSut(); @@ -392,6 +576,26 @@ void main() { await db.close(); }); + test('creates raw insert breadcrumb', () async { + final db = await fixture.getSut(); + + await db + .rawInsert('INSERT INTO Product (title) VALUES (?)', ['Product 1']); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db.sql.execute'); + expect(breadcrumb.message, 'INSERT INTO Product (title) VALUES (?)'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates raw query span', () async { final db = await fixture.getSut(); @@ -413,6 +617,26 @@ void main() { await db.close(); }); + test('creates raw query breadcrumb', () async { + final db = await fixture.getSut(); + + await db.rawQuery('SELECT * FROM Product'); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db.sql.query'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.message, 'SELECT * FROM Product'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates raw query cursor span', () async { final db = await fixture.getSut(); @@ -434,6 +658,26 @@ void main() { await db.close(); }); + test('creates raw query cursor breadcrumb', () async { + final db = await fixture.getSut(); + + await db.rawQueryCursor('SELECT * FROM Product', []); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db.sql.query'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.message, 'SELECT * FROM Product'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates raw update span', () async { final db = await fixture.getSut(); @@ -455,6 +699,25 @@ void main() { await db.close(); }); + test('creates raw update breadcrumb', () async { + final db = await fixture.getSut(); + + await db.rawUpdate('UPDATE Product SET title = ?', ['Product 1']); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db.sql.execute'); + expect(breadcrumb.message, 'UPDATE Product SET title = ?'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates update span', () async { final db = await fixture.getSut(); @@ -476,6 +739,25 @@ void main() { await db.close(); }); + test('creates update breadcrumb', () async { + final db = await fixture.getSut(); + + await db.update('Product', {'title': 'Product 1'}); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db.sql.execute'); + expect(breadcrumb.message, 'UPDATE Product SET title = ?'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + tearDown(() { databaseFactory = sqfliteDatabaseFactoryDefault; }); @@ -488,6 +770,7 @@ void main() { fixture = Fixture(); when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.scope).thenReturn(fixture.scope); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); }); @@ -724,6 +1007,185 @@ void main() { SentryTraceOrigins.autoDbSqfliteDatabaseExecutor, ); }); + + test('delete sets breadcrumb to internal error', () async { + when(fixture.executor.delete(any)).thenThrow(fixture.exception); + + final executor = fixture.getExecutorSut(); + + await expectLater( + () async => await executor.delete('Product'), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + + test('execute sets breadcrumb to internal error', () async { + when(fixture.executor.execute(any)).thenThrow(fixture.exception); + + final executor = fixture.getExecutorSut(); + + await expectLater( + () async => await executor.execute('sql'), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + + test('insert sets breadcrumb to internal error', () async { + when(fixture.executor.insert(any, any)).thenThrow(fixture.exception); + + final executor = fixture.getExecutorSut(); + + await expectLater( + () async => await executor + .insert('Product', {'title': 'Product 1'}), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + + test('query sets breadcrumb to internal error', () async { + when(fixture.executor.query(any)).thenThrow(fixture.exception); + + final executor = fixture.getExecutorSut(); + + await expectLater( + () async => await executor.query('sql'), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + + test('query cursor sets breadcrumb to internal error', () async { + when(fixture.executor.queryCursor(any)).thenThrow(fixture.exception); + + final executor = fixture.getExecutorSut(); + + await expectLater( + () async => await executor.queryCursor('sql'), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + + test('raw delete sets breadcrumb to internal error', () async { + when(fixture.executor.rawDelete(any)).thenThrow(fixture.exception); + + final executor = fixture.getExecutorSut(); + + await expectLater( + () async => await executor.rawDelete('sql'), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + + test('raw insert sets breadcrumb to internal error', () async { + when(fixture.executor.rawInsert(any)).thenThrow(fixture.exception); + + final executor = fixture.getExecutorSut(); + + await expectLater( + () async => await executor.rawInsert('sql'), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + + test('raw query sets breadcrumb to internal error', () async { + when(fixture.executor.rawQuery(any)).thenThrow(fixture.exception); + + final executor = fixture.getExecutorSut(); + + await expectLater( + () async => await executor.rawQuery('sql'), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + + test('raw query cursor sets breadcrumb to internal error', () async { + when(fixture.executor.rawQueryCursor(any, any)) + .thenThrow(fixture.exception); + + final executor = fixture.getExecutorSut(); + + await expectLater( + () async => await executor.rawQueryCursor('sql', []), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + + test('raw update sets breadcrumb to internal error', () async { + when(fixture.executor.rawUpdate(any)).thenThrow(fixture.exception); + + final executor = fixture.getExecutorSut(); + + await expectLater( + () async => await executor.rawUpdate('sql'), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); + + test('update sets breadcrumb to internal error', () async { + when(fixture.executor.update(any, any)).thenThrow(fixture.exception); + + final executor = fixture.getExecutorSut(); + + await expectLater( + () async => await executor + .update('Product', {'title': 'Product 1'}), + throwsException, + ); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.data?['status'], 'internal_error'); + expect(breadcrumb.type, 'query'); + expect(breadcrumb.level, SentryLevel.warning); + }); }); } @@ -735,6 +1197,7 @@ class Fixture { final database = MockDatabase(); final exception = Exception('error'); final executor = MockDatabaseExecutor(); + late final scope = Scope(options); Future getSut({ double? tracesSampleRate = 1.0, diff --git a/sqflite/test/sentry_sqflite_database_factory_dart_test.dart b/sqflite/test/sentry_sqflite_database_factory_dart_test.dart index d2ed2e9fb5..9eeac66734 100644 --- a/sqflite/test/sentry_sqflite_database_factory_dart_test.dart +++ b/sqflite/test/sentry_sqflite_database_factory_dart_test.dart @@ -24,6 +24,7 @@ void main() { fixture = Fixture(); when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.scope).thenReturn(fixture.scope); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); // using ffi for testing on vm @@ -70,6 +71,20 @@ void main() { ); await db.close(); }); + + test('starts and finishes a open db breadcrumb when performance enabled', + () async { + final db = await openDatabase(inMemoryDatabasePath); + + expect((db as SentryDatabase).dbName, inMemoryDatabasePath); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, 'db'); + expect(breadcrumb.message, 'Open DB: $inMemoryDatabasePath'); + expect(breadcrumb.data?['status'], 'ok'); + + await db.close(); + }); }); tearDown(() { @@ -82,4 +97,5 @@ class Fixture { final options = SentryOptions(dsn: fakeDsn)..tracesSampleRate = 1.0; final _context = SentryTransactionContext('name', 'operation'); late final tracer = SentryTracer(_context, hub); + late final scope = Scope(options); } diff --git a/sqflite/test/sentry_sqflite_test.dart b/sqflite/test/sentry_sqflite_test.dart index ff75d67e6d..27851881b0 100644 --- a/sqflite/test/sentry_sqflite_test.dart +++ b/sqflite/test/sentry_sqflite_test.dart @@ -24,6 +24,7 @@ void main() { fixture = Fixture(); when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.scope).thenReturn(fixture.scope); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); // using ffi for testing on vm @@ -68,6 +69,7 @@ void main() { fixture = Fixture(); when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.scope).thenReturn(fixture.scope); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); // using ffi for testing on vm @@ -101,6 +103,18 @@ void main() { await db.close(); }); + + test('creates db open breadcrumb', () async { + final db = + await openDatabaseWithSentry(inMemoryDatabasePath, hub: fixture.hub); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.category, SentryDatabase.dbOp); + expect(breadcrumb.message, 'Open DB: $inMemoryDatabasePath'); + expect(breadcrumb.data?['status'], 'ok'); + + await db.close(); + }); }); } @@ -109,4 +123,5 @@ class Fixture { final options = SentryOptions(dsn: fakeDsn)..tracesSampleRate = 1.0; final _context = SentryTransactionContext('name', 'operation'); late final tracer = SentryTracer(_context, hub); + late final scope = Scope(options); } From bd37365fd6e136a94c2538957f6b6e46e0fba5f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Nov 2023 09:11:01 +0000 Subject: [PATCH 053/166] Bump actions/checkout from 3 to 4 (#1683) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/analyze.yml | 4 ++-- .github/workflows/dart.yml | 2 +- .github/workflows/diagrams.yml | 2 +- .github/workflows/dio.yml | 2 +- .github/workflows/e2e_dart.yml | 2 +- .github/workflows/file.yml | 2 +- .github/workflows/flutter-symbols.yml | 4 ++-- .github/workflows/flutter.yml | 10 +++++----- .github/workflows/flutter_test.yml | 4 ++-- .github/workflows/format-and-fix.yml | 2 +- .github/workflows/logging.yml | 2 +- .github/workflows/metrics.yml | 2 +- .github/workflows/min_version_test.yml | 6 +++--- .github/workflows/release.yml | 2 +- .github/workflows/sqflite.yml | 2 +- .github/workflows/web-example-ghpages.yml | 2 +- 16 files changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 411c29e4b2..419d6ff0c4 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -31,7 +31,7 @@ jobs: run: working-directory: ${{ inputs.package }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 if: ${{ inputs.sdk == 'dart' }} - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 @@ -59,7 +59,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 20 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Apply dependency override if: ${{ inputs.package == 'flutter' }} working-directory: ${{ inputs.package }} diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 2980445098..1375725843 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -43,7 +43,7 @@ jobs: - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 with: sdk: ${{ matrix.sdk }} - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Test (VM and browser) run: | diff --git a/.github/workflows/diagrams.yml b/.github/workflows/diagrams.yml index 9e38ca53a7..26753683a0 100644 --- a/.github/workflows/diagrams.yml +++ b/.github/workflows/diagrams.yml @@ -11,7 +11,7 @@ jobs: with: sdk: stable - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: dependencies run: | diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index 421579cb40..2f572d5fcd 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -43,7 +43,7 @@ jobs: - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 with: sdk: ${{ matrix.sdk }} - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Test (VM and browser) run: | diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index 7909dc2fb0..0a4929fbc3 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -41,7 +41,7 @@ jobs: - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 with: sdk: ${{ matrix.sdk }} - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Run if: env.SENTRY_AUTH_TOKEN != null run: | diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 52f77ede51..9d1c226195 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -43,7 +43,7 @@ jobs: - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 with: sdk: ${{ matrix.sdk }} - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Test VM run: | diff --git a/.github/workflows/flutter-symbols.yml b/.github/workflows/flutter-symbols.yml index 057240d94a..7543b075d6 100644 --- a/.github/workflows/flutter-symbols.yml +++ b/.github/workflows/flutter-symbols.yml @@ -19,7 +19,7 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 @@ -31,7 +31,7 @@ jobs: needs: [test] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index f247a4ffce..9ed21fa6f2 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -65,7 +65,7 @@ jobs: sdk: beta steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-java@v3 if: ${{ matrix.target == 'android' }} @@ -161,7 +161,7 @@ jobs: run: working-directory: ./flutter steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # https://github.com/CocoaPods/CocoaPods/issues/5275#issuecomment-315461879 - run: pod lib lint ios/sentry_flutter.podspec --configuration=Debug --skip-import-validation --allow-warnings --verbose @@ -172,7 +172,7 @@ jobs: run: working-directory: ./flutter steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: norio-nomura/action-swiftlint@9f4dcd7fd46b4e75d7935cf2f4df406d5cae3684 # pin@3.2.1 with: args: --strict @@ -184,7 +184,7 @@ jobs: run: working-directory: ./flutter steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: ktlint uses: ScaCap/action-ktlint@2cf245b99bc91f73bc4c96a3d9d57bb5da3533ae # pin@1.7.1 @@ -198,7 +198,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 20 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # To recreate baseline run: detekt -i flutter/android,flutter/example/android -b flutter/config/detekt-bl.xml -cb - uses: natiginfo/action-detekt-all@e01de6ff0eef7c24131e8a133bf598cfac6ceeab # pin@1.21.0 with: diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 28f3777fc7..9002bdc8f5 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -33,7 +33,7 @@ jobs: sdk: ["stable", "beta"] steps: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: @@ -120,7 +120,7 @@ jobs: target: ["ios", "macos"] steps: - name: checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 with: diff --git a/.github/workflows/format-and-fix.yml b/.github/workflows/format-and-fix.yml index 5cdcb6e5f7..685be4f565 100644 --- a/.github/workflows/format-and-fix.yml +++ b/.github/workflows/format-and-fix.yml @@ -29,7 +29,7 @@ jobs: run: working-directory: ${{ matrix.package.name }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 if: ${{ matrix.package.sdk == 'dart' }} - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index bf2bcbb59a..b2a3ccad3f 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -43,7 +43,7 @@ jobs: - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 with: sdk: ${{ matrix.sdk }} - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Test (VM and browser) run: | diff --git a/.github/workflows/metrics.yml b/.github/workflows/metrics.yml index 601c365a39..761bfa7512 100644 --- a/.github/workflows/metrics.yml +++ b/.github/workflows/metrics.yml @@ -41,7 +41,7 @@ jobs: host: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 # Let's stick to an explicit version and update manually because a version change may affect results. # If it would update implicitly it could confuse people to think the change is actually caused by the PR. diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index a3b26d593f..848e8feb43 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -24,7 +24,7 @@ jobs: timeout-minutes: 30 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-java@v3 with: @@ -46,7 +46,7 @@ jobs: timeout-minutes: 30 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 with: @@ -63,7 +63,7 @@ jobs: timeout-minutes: 30 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1209884c7d..1642223bcd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: name: "Release a new version" steps: - name: Check out current commit (${{ github.sha }}) - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: token: ${{ secrets.GH_RELEASE_PAT }} fetch-depth: 0 diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 4d0f62ee10..8fca7e0d5a 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -61,7 +61,7 @@ jobs: sdk: beta steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-java@v3 if: ${{ matrix.target == 'android' }} diff --git a/.github/workflows/web-example-ghpages.yml b/.github/workflows/web-example-ghpages.yml index 1e5adc9456..e30f5cc98c 100644 --- a/.github/workflows/web-example-ghpages.yml +++ b/.github/workflows/web-example-ghpages.yml @@ -13,7 +13,7 @@ jobs: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 - uses: bluefireteam/flutter-gh-pages@57815b17b371455ec1a98f075b71b4c6ba0a938c # pin@v8 with: From bb6945ac6b34338af935d6b5d9cc441f80c69219 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Nov 2023 09:33:24 +0000 Subject: [PATCH 054/166] Bump ScaCap/action-ktlint from 1.7.1 to 1.8.0 (#1681) Bumps [ScaCap/action-ktlint](https://github.com/scacap/action-ktlint) from 1.7.1 to 1.8.0. - [Release notes](https://github.com/scacap/action-ktlint/releases) - [Commits](https://github.com/scacap/action-ktlint/compare/2cf245b99bc91f73bc4c96a3d9d57bb5da3533ae...0ff81efa49425bd0df46caabd8005aafdc8f2cf2) --- updated-dependencies: - dependency-name: ScaCap/action-ktlint dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/flutter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 9ed21fa6f2..dc1b3680c1 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -187,7 +187,7 @@ jobs: - uses: actions/checkout@v4 - name: ktlint - uses: ScaCap/action-ktlint@2cf245b99bc91f73bc4c96a3d9d57bb5da3533ae # pin@1.7.1 + uses: ScaCap/action-ktlint@0ff81efa49425bd0df46caabd8005aafdc8f2cf2 # pin@1.8.0 with: github_token: ${{ secrets.github_token }} reporter: github-pr-review From a775d3f6e29f81d61095ff492a0b623ba3ada57e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Nov 2023 10:00:11 +0000 Subject: [PATCH 055/166] Bump styfle/cancel-workflow-action from 0.11.0 to 0.12.0 (#1682) Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.11.0 to 0.12.0. - [Release notes](https://github.com/styfle/cancel-workflow-action/releases) - [Commits](https://github.com/styfle/cancel-workflow-action/compare/b173b6ec0100793626c2d9e6b90435061f4fc3e5...01ce38bf961b4e243a6342cbade0dbc8ba3f0432) --- updated-dependencies: - dependency-name: styfle/cancel-workflow-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Stefano Co-authored-by: Giancarlo Buenaflor --- .github/workflows/analyze.yml | 2 +- .github/workflows/dart.yml | 2 +- .github/workflows/dio.yml | 2 +- .github/workflows/e2e_dart.yml | 2 +- .github/workflows/file.yml | 2 +- .github/workflows/flutter.yml | 2 +- .github/workflows/flutter_test.yml | 2 +- .github/workflows/format-and-fix.yml | 2 +- .github/workflows/logging.yml | 2 +- .github/workflows/metrics.yml | 2 +- .github/workflows/min_version_test.yml | 2 +- .github/workflows/sqflite.yml | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 419d6ff0c4..714d5a4453 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 1375725843..90765cbb8d 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index 2f572d5fcd..c4ad54d5bd 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index 0a4929fbc3..4d7893fd96 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 9d1c226195..97927743c8 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index dc1b3680c1..574e468fd8 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 9002bdc8f5..2d13e41d87 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} diff --git a/.github/workflows/format-and-fix.yml b/.github/workflows/format-and-fix.yml index 685be4f565..940099eb52 100644 --- a/.github/workflows/format-and-fix.yml +++ b/.github/workflows/format-and-fix.yml @@ -6,7 +6,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index b2a3ccad3f..ec8a2cc747 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} diff --git a/.github/workflows/metrics.yml b/.github/workflows/metrics.yml index 761bfa7512..7596878bd5 100644 --- a/.github/workflows/metrics.yml +++ b/.github/workflows/metrics.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index 848e8feb43..5cf4c47576 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 8fca7e0d5a..2d9121941f 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} From 9aa4e24cd134dd3b33ffaa103bca02604a815873 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Nov 2023 10:00:23 +0000 Subject: [PATCH 056/166] Bump dart-lang/setup-dart from 1.3.0 to 1.6.0 (#1692) Bumps [dart-lang/setup-dart](https://github.com/dart-lang/setup-dart) from 1.3.0 to 1.6.0. - [Release notes](https://github.com/dart-lang/setup-dart/releases) - [Changelog](https://github.com/dart-lang/setup-dart/blob/main/CHANGELOG.md) - [Commits](https://github.com/dart-lang/setup-dart/compare/6a218f2413a3e78e9087f638a238f6b40893203d...b64355ae6ca0b5d484f0106a033dd1388965d06d) --- updated-dependencies: - dependency-name: dart-lang/setup-dart dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/analyze.yml | 2 +- .github/workflows/dart.yml | 2 +- .github/workflows/diagrams.yml | 2 +- .github/workflows/dio.yml | 2 +- .github/workflows/e2e_dart.yml | 2 +- .github/workflows/file.yml | 2 +- .github/workflows/flutter-symbols.yml | 4 ++-- .github/workflows/format-and-fix.yml | 2 +- .github/workflows/logging.yml | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 714d5a4453..486f5bb768 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -32,7 +32,7 @@ jobs: working-directory: ${{ inputs.package }} steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 if: ${{ inputs.sdk == 'dart' }} - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 if: ${{ inputs.sdk == 'flutter' }} diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 90765cbb8d..cca626a0e4 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/diagrams.yml b/.github/workflows/diagrams.yml index 26753683a0..ac026f4cfc 100644 --- a/.github/workflows/diagrams.yml +++ b/.github/workflows/diagrams.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest name: "Create class diagrams of all packages" steps: - - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 with: sdk: stable diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index c4ad54d5bd..05e21b4fad 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index 4d7893fd96..08493f67b3 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -38,7 +38,7 @@ jobs: matrix: sdk: [stable, beta] steps: - - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 97927743c8..b0a6d5b728 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/flutter-symbols.yml b/.github/workflows/flutter-symbols.yml index 7543b075d6..fba63c6cac 100644 --- a/.github/workflows/flutter-symbols.yml +++ b/.github/workflows/flutter-symbols.yml @@ -21,7 +21,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 - run: dart pub get @@ -33,7 +33,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 - run: dart pub get diff --git a/.github/workflows/format-and-fix.yml b/.github/workflows/format-and-fix.yml index 940099eb52..93e0066f1d 100644 --- a/.github/workflows/format-and-fix.yml +++ b/.github/workflows/format-and-fix.yml @@ -30,7 +30,7 @@ jobs: working-directory: ${{ matrix.package.name }} steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 if: ${{ matrix.package.sdk == 'dart' }} - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 if: ${{ matrix.package.sdk == 'flutter' }} diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index ec8a2cc747..8be3df1b95 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 From 2de6d6f1c155ed1e7916887feff8773200929fd0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 10:23:57 +0000 Subject: [PATCH 057/166] chore: update flutter/scripts/update-android.sh to 6.33.0 (#1710) Co-authored-by: GitHub --- CHANGELOG.md | 6 ++++++ flutter/android/build.gradle | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f24a7ed7e..84845a06df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ - Breadcrumbs for database operations ([#1656](https://github.com/getsentry/sentry-dart/pull/1656)) +### Dependencies + +- Bump Android SDK from v6.32.0 to v6.33.0 ([#1710](https://github.com/getsentry/sentry-dart/pull/1710)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6330) + - [diff](https://github.com/getsentry/sentry-java/compare/6.32.0...6.33.0) + ## 7.12.0 ### Enhancements diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index f33a8d465e..844062d0eb 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -60,7 +60,7 @@ android { } dependencies { - api 'io.sentry:sentry-android:6.32.0' + api 'io.sentry:sentry-android:6.33.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // Required -- JUnit 4 framework From 64af39c26c91cb82e402c65852a0e6abdd890f53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Nov 2023 09:43:22 +0000 Subject: [PATCH 058/166] build(deps): bump subosito/flutter-action from 2.10.0 to 2.12.0 (#1711) Bumps [subosito/flutter-action](https://github.com/subosito/flutter-action) from 2.10.0 to 2.12.0. - [Release notes](https://github.com/subosito/flutter-action/releases) - [Commits](https://github.com/subosito/flutter-action/compare/48cafc24713cca54bbe03cdc3a423187d413aafa...2783a3f08e1baf891508463f8c6653c258246225) --- updated-dependencies: - dependency-name: subosito/flutter-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/analyze.yml | 2 +- .github/workflows/flutter.yml | 2 +- .github/workflows/flutter_test.yml | 4 ++-- .github/workflows/format-and-fix.yml | 2 +- .github/workflows/metrics.yml | 2 +- .github/workflows/min_version_test.yml | 6 +++--- .github/workflows/sqflite.yml | 2 +- .github/workflows/web-example-ghpages.yml | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 486f5bb768..6218eaa27a 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -34,7 +34,7 @@ jobs: - uses: actions/checkout@v4 - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 if: ${{ inputs.sdk == 'dart' }} - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 if: ${{ inputs.sdk == 'flutter' }} - run: ${{ inputs.sdk }} pub get diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 574e468fd8..3583869621 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -81,7 +81,7 @@ jobs: sudo apt install -y network-manager upower if: matrix.os == 'ubuntu-latest' && matrix.target == 'linux' - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 with: channel: ${{ matrix.sdk }} diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 2d13e41d87..6a1806189f 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -40,7 +40,7 @@ jobs: distribution: "adopt" java-version: "11" - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 with: channel: ${{ matrix.sdk }} @@ -122,7 +122,7 @@ jobs: - name: checkout uses: actions/checkout@v4 - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 with: channel: ${{ matrix.sdk }} diff --git a/.github/workflows/format-and-fix.yml b/.github/workflows/format-and-fix.yml index 93e0066f1d..89fc66cede 100644 --- a/.github/workflows/format-and-fix.yml +++ b/.github/workflows/format-and-fix.yml @@ -32,7 +32,7 @@ jobs: - uses: actions/checkout@v4 - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 if: ${{ matrix.package.sdk == 'dart' }} - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 if: ${{ matrix.package.sdk == 'flutter' }} - run: ${{ matrix.package.sdk }} pub get diff --git a/.github/workflows/metrics.yml b/.github/workflows/metrics.yml index 7596878bd5..5e461d86eb 100644 --- a/.github/workflows/metrics.yml +++ b/.github/workflows/metrics.yml @@ -53,7 +53,7 @@ jobs: echo "flutter=$version" >> "$GITHUB_OUTPUT" - name: Install Flutter v${{ steps.conf.outputs.flutter }} - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 with: flutter-version: ${{ steps.conf.outputs.flutter }} diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index 5cf4c47576..23078eb1b4 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -31,7 +31,7 @@ jobs: distribution: "adopt" java-version: "11" - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 with: flutter-version: "3.0.0" @@ -48,7 +48,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 with: flutter-version: "3.0.0" @@ -65,7 +65,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 with: flutter-version: "3.0.0" diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 2d9121941f..65e4c3f7a8 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -77,7 +77,7 @@ jobs: sudo apt install -y network-manager upower if: matrix.os == 'ubuntu-latest' && matrix.target == 'linux' - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 with: channel: ${{ matrix.sdk }} diff --git a/.github/workflows/web-example-ghpages.yml b/.github/workflows/web-example-ghpages.yml index e30f5cc98c..106c52615d 100644 --- a/.github/workflows/web-example-ghpages.yml +++ b/.github/workflows/web-example-ghpages.yml @@ -14,7 +14,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 - uses: bluefireteam/flutter-gh-pages@57815b17b371455ec1a98f075b71b4c6ba0a938c # pin@v8 with: workingDir: flutter/example From 9f0564597080b17641f12febbf727661f7d1389f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 7 Nov 2023 12:21:27 +0000 Subject: [PATCH 059/166] Add `attachScreenshotOnlyWhenResumed` to options (#1700) --- CHANGELOG.md | 1 + .../src/event_processor/screenshot_event_processor.dart | 9 +++++++++ flutter/lib/src/sentry_flutter_options.dart | 3 +++ 3 files changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84845a06df..20cc2eeb9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Features - Breadcrumbs for database operations ([#1656](https://github.com/getsentry/sentry-dart/pull/1656)) +- Add `attachScreenshotOnlyWhenResumed` to options ([#1700](https://github.com/getsentry/sentry-dart/pull/1700)) ### Dependencies diff --git a/flutter/lib/src/event_processor/screenshot_event_processor.dart b/flutter/lib/src/event_processor/screenshot_event_processor.dart index b60f4faefa..bb1157c1de 100644 --- a/flutter/lib/src/event_processor/screenshot_event_processor.dart +++ b/flutter/lib/src/event_processor/screenshot_event_processor.dart @@ -8,6 +8,7 @@ import '../screenshot/sentry_screenshot_widget.dart'; import '../sentry_flutter_options.dart'; import 'package:flutter/rendering.dart'; import '../renderer/renderer.dart'; +import 'package:flutter/widgets.dart' as widget; class ScreenshotEventProcessor implements EventProcessor { final SentryFlutterOptions _options; @@ -38,6 +39,14 @@ class ScreenshotEventProcessor implements EventProcessor { return event; } + if (_options.attachScreenshotOnlyWhenResumed && + widget.WidgetsBinding.instance.lifecycleState != + AppLifecycleState.resumed) { + _options.logger(SentryLevel.debug, + 'Only attaching screenshots when application state is resumed.'); + return event; + } + final bytes = await _createScreenshot(); if (bytes != null) { hint?.screenshot = SentryAttachment.fromScreenshotData(bytes); diff --git a/flutter/lib/src/sentry_flutter_options.dart b/flutter/lib/src/sentry_flutter_options.dart index 5f85e85cb0..7a82f3b53f 100644 --- a/flutter/lib/src/sentry_flutter_options.dart +++ b/flutter/lib/src/sentry_flutter_options.dart @@ -167,6 +167,9 @@ class SentryFlutterOptions extends SentryOptions { /// The quality of the attached screenshot SentryScreenshotQuality screenshotQuality = SentryScreenshotQuality.high; + /// Only attach a screenshot when the app is resumed. + bool attachScreenshotOnlyWhenResumed = false; + /// Enable or disable automatic breadcrumbs for User interactions Using [Listener] /// /// Requires adding the [SentryUserInteractionWidget] to the widget tree. From f6f3d259dce294dd8ec4e07f6af020a820c7bb89 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 7 Nov 2023 14:59:06 +0000 Subject: [PATCH 060/166] chore: update flutter/scripts/update-android.sh to 6.33.1 (#1713) Co-authored-by: GitHub --- CHANGELOG.md | 6 +++--- flutter/android/build.gradle | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20cc2eeb9d..1ae99401e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,9 +9,9 @@ ### Dependencies -- Bump Android SDK from v6.32.0 to v6.33.0 ([#1710](https://github.com/getsentry/sentry-dart/pull/1710)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6330) - - [diff](https://github.com/getsentry/sentry-java/compare/6.32.0...6.33.0) +- Bump Android SDK from v6.32.0 to v6.33.1 ([#1710](https://github.com/getsentry/sentry-dart/pull/1710), [#1713](https://github.com/getsentry/sentry-dart/pull/1713)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6331) + - [diff](https://github.com/getsentry/sentry-java/compare/6.32.0...6.33.1) ## 7.12.0 diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index 844062d0eb..a532cb03f8 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -60,7 +60,7 @@ android { } dependencies { - api 'io.sentry:sentry-android:6.33.0' + api 'io.sentry:sentry-android:6.33.1' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // Required -- JUnit 4 framework From 2d4fd8b78e1f6877b10757f1c0ecf0a1fcec29cd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 8 Nov 2023 11:20:51 +0000 Subject: [PATCH 061/166] chore: update flutter/scripts/update-cocoa.sh to 8.15.0 (#1712) Co-authored-by: GitHub --- CHANGELOG.md | 3 + flutter/ios/sentry_flutter.podspec | 2 +- flutter/lib/src/native/cocoa/binding.dart | 443 ++++++---------------- 3 files changed, 126 insertions(+), 322 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ae99401e7..b20cd8430a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ - Bump Android SDK from v6.32.0 to v6.33.1 ([#1710](https://github.com/getsentry/sentry-dart/pull/1710), [#1713](https://github.com/getsentry/sentry-dart/pull/1713)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6331) - [diff](https://github.com/getsentry/sentry-java/compare/6.32.0...6.33.1) +- Bump Cocoa SDK from v8.14.2 to v8.15.0 ([#1712](https://github.com/getsentry/sentry-dart/pull/1712)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8150) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.14.2...8.15.0) ## 7.12.0 diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index b6df0830f7..f32d6a8c34 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.14.2' + s.dependency 'Sentry/HybridSDK', '8.15.0' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' diff --git a/flutter/lib/src/native/cocoa/binding.dart b/flutter/lib/src/native/cocoa/binding.dart index e4ca5c9d03..0bd2e0437e 100644 --- a/flutter/lib/src/native/cocoa/binding.dart +++ b/flutter/lib/src/native/cocoa/binding.dart @@ -29648,78 +29648,15 @@ class SentryCocoa { late final _class_SentryEnvelopeItemHeader1 = _getClass1("SentryEnvelopeItemHeader"); - late final _sel_initWithType_length_1 = - _registerName1("initWithType:length:"); - instancetype _objc_msgSend_1043( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer type, - int length, - ) { - return __objc_msgSend_1043( - obj, - sel, - type, - length, - ); - } - - late final __objc_msgSend_1043Ptr = _lookup< - ffi.NativeFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, ffi.UnsignedLong)>>('objc_msgSend'); - late final __objc_msgSend_1043 = __objc_msgSend_1043Ptr.asFunction< - instancetype Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer, int)>(); - - late final _sel_initWithType_length_filenname_contentType_1 = - _registerName1("initWithType:length:filenname:contentType:"); - instancetype _objc_msgSend_1044( - ffi.Pointer obj, - ffi.Pointer sel, - ffi.Pointer type, - int length, - ffi.Pointer filename, - ffi.Pointer contentType, - ) { - return __objc_msgSend_1044( - obj, - sel, - type, - length, - filename, - contentType, - ); - } - - late final __objc_msgSend_1044Ptr = _lookup< - ffi.NativeFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - ffi.UnsignedLong, - ffi.Pointer, - ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1044 = __objc_msgSend_1044Ptr.asFunction< - instancetype Function( - ffi.Pointer, - ffi.Pointer, - ffi.Pointer, - int, - ffi.Pointer, - ffi.Pointer)>(); - - late final _sel_contentType1 = _registerName1("contentType"); late final _sel_initWithHeader_data_1 = _registerName1("initWithHeader:data:"); - instancetype _objc_msgSend_1045( + instancetype _objc_msgSend_1043( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer header, ffi.Pointer data, ) { - return __objc_msgSend_1045( + return __objc_msgSend_1043( obj, sel, header, @@ -29727,45 +29664,45 @@ class SentryCocoa { ); } - late final __objc_msgSend_1045Ptr = _lookup< + late final __objc_msgSend_1043Ptr = _lookup< ffi.NativeFunction< instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1045 = __objc_msgSend_1045Ptr.asFunction< + late final __objc_msgSend_1043 = __objc_msgSend_1043Ptr.asFunction< instancetype Function(ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); late final _sel_header1 = _registerName1("header"); - ffi.Pointer _objc_msgSend_1046( + ffi.Pointer _objc_msgSend_1044( ffi.Pointer obj, ffi.Pointer sel, ) { - return __objc_msgSend_1046( + return __objc_msgSend_1044( obj, sel, ); } - late final __objc_msgSend_1046Ptr = _lookup< + late final __objc_msgSend_1044Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1046 = __objc_msgSend_1046Ptr.asFunction< + late final __objc_msgSend_1044 = __objc_msgSend_1044Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>(); late final _sel_initWithId_singleItem_1 = _registerName1("initWithId:singleItem:"); - instancetype _objc_msgSend_1047( + instancetype _objc_msgSend_1045( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer id, ffi.Pointer item, ) { - return __objc_msgSend_1047( + return __objc_msgSend_1045( obj, sel, id, @@ -29773,49 +29710,49 @@ class SentryCocoa { ); } - late final __objc_msgSend_1047Ptr = _lookup< + late final __objc_msgSend_1045Ptr = _lookup< ffi.NativeFunction< instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1047 = __objc_msgSend_1047Ptr.asFunction< + late final __objc_msgSend_1045 = __objc_msgSend_1045Ptr.asFunction< instancetype Function(ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); late final _class_SentryEnvelopeHeader1 = _getClass1("SentryEnvelopeHeader"); late final _sel_initWithId_1 = _registerName1("initWithId:"); - instancetype _objc_msgSend_1048( + instancetype _objc_msgSend_1046( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer eventId, ) { - return __objc_msgSend_1048( + return __objc_msgSend_1046( obj, sel, eventId, ); } - late final __objc_msgSend_1048Ptr = _lookup< + late final __objc_msgSend_1046Ptr = _lookup< ffi.NativeFunction< instancetype Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1048 = __objc_msgSend_1048Ptr.asFunction< + late final __objc_msgSend_1046 = __objc_msgSend_1046Ptr.asFunction< instancetype Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); late final _class_SentryTraceContext1 = _getClass1("SentryTraceContext"); late final _sel_initWithId_traceContext_1 = _registerName1("initWithId:traceContext:"); - instancetype _objc_msgSend_1049( + instancetype _objc_msgSend_1047( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer eventId, ffi.Pointer traceContext, ) { - return __objc_msgSend_1049( + return __objc_msgSend_1047( obj, sel, eventId, @@ -29823,28 +29760,28 @@ class SentryCocoa { ); } - late final __objc_msgSend_1049Ptr = _lookup< + late final __objc_msgSend_1047Ptr = _lookup< ffi.NativeFunction< instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1049 = __objc_msgSend_1049Ptr.asFunction< + late final __objc_msgSend_1047 = __objc_msgSend_1047Ptr.asFunction< instancetype Function(ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); late final _class_SentrySdkInfo1 = _getClass1("SentrySdkInfo"); late final _sel_initWithId_sdkInfo_traceContext_1 = _registerName1("initWithId:sdkInfo:traceContext:"); - instancetype _objc_msgSend_1050( + instancetype _objc_msgSend_1048( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer eventId, ffi.Pointer sdkInfo, ffi.Pointer traceContext, ) { - return __objc_msgSend_1050( + return __objc_msgSend_1048( obj, sel, eventId, @@ -29853,7 +29790,7 @@ class SentryCocoa { ); } - late final __objc_msgSend_1050Ptr = _lookup< + late final __objc_msgSend_1048Ptr = _lookup< ffi.NativeFunction< instancetype Function( ffi.Pointer, @@ -29861,7 +29798,7 @@ class SentryCocoa { ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1050 = __objc_msgSend_1050Ptr.asFunction< + late final __objc_msgSend_1048 = __objc_msgSend_1048Ptr.asFunction< instancetype Function( ffi.Pointer, ffi.Pointer, @@ -29871,40 +29808,40 @@ class SentryCocoa { late final _sel_eventId1 = _registerName1("eventId"); late final _sel_sdkInfo1 = _registerName1("sdkInfo"); - ffi.Pointer _objc_msgSend_1051( + ffi.Pointer _objc_msgSend_1049( ffi.Pointer obj, ffi.Pointer sel, ) { - return __objc_msgSend_1051( + return __objc_msgSend_1049( obj, sel, ); } - late final __objc_msgSend_1051Ptr = _lookup< + late final __objc_msgSend_1049Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1051 = __objc_msgSend_1051Ptr.asFunction< + late final __objc_msgSend_1049 = __objc_msgSend_1049Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>(); late final _sel_traceContext1 = _registerName1("traceContext"); - ffi.Pointer _objc_msgSend_1052( + ffi.Pointer _objc_msgSend_1050( ffi.Pointer obj, ffi.Pointer sel, ) { - return __objc_msgSend_1052( + return __objc_msgSend_1050( obj, sel, ); } - late final __objc_msgSend_1052Ptr = _lookup< + late final __objc_msgSend_1050Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1052 = __objc_msgSend_1052Ptr.asFunction< + late final __objc_msgSend_1050 = __objc_msgSend_1050Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>(); @@ -29912,13 +29849,13 @@ class SentryCocoa { late final _sel_setSentAt_1 = _registerName1("setSentAt:"); late final _sel_initWithHeader_singleItem_1 = _registerName1("initWithHeader:singleItem:"); - instancetype _objc_msgSend_1053( + instancetype _objc_msgSend_1051( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer header, ffi.Pointer item, ) { - return __objc_msgSend_1053( + return __objc_msgSend_1051( obj, sel, header, @@ -29926,25 +29863,25 @@ class SentryCocoa { ); } - late final __objc_msgSend_1053Ptr = _lookup< + late final __objc_msgSend_1051Ptr = _lookup< ffi.NativeFunction< instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1053 = __objc_msgSend_1053Ptr.asFunction< + late final __objc_msgSend_1051 = __objc_msgSend_1051Ptr.asFunction< instancetype Function(ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); late final _sel_initWithId_items_1 = _registerName1("initWithId:items:"); - instancetype _objc_msgSend_1054( + instancetype _objc_msgSend_1052( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer id, ffi.Pointer items, ) { - return __objc_msgSend_1054( + return __objc_msgSend_1052( obj, sel, id, @@ -29952,27 +29889,27 @@ class SentryCocoa { ); } - late final __objc_msgSend_1054Ptr = _lookup< + late final __objc_msgSend_1052Ptr = _lookup< ffi.NativeFunction< instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1054 = __objc_msgSend_1054Ptr.asFunction< + late final __objc_msgSend_1052 = __objc_msgSend_1052Ptr.asFunction< instancetype Function(ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); late final _sel_initWithSessions_1 = _registerName1("initWithSessions:"); late final _sel_initWithHeader_items_1 = _registerName1("initWithHeader:items:"); - instancetype _objc_msgSend_1055( + instancetype _objc_msgSend_1053( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer header, ffi.Pointer items, ) { - return __objc_msgSend_1055( + return __objc_msgSend_1053( obj, sel, header, @@ -29980,99 +29917,99 @@ class SentryCocoa { ); } - late final __objc_msgSend_1055Ptr = _lookup< + late final __objc_msgSend_1053Ptr = _lookup< ffi.NativeFunction< instancetype Function( ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1055 = __objc_msgSend_1055Ptr.asFunction< + late final __objc_msgSend_1053 = __objc_msgSend_1053Ptr.asFunction< instancetype Function(ffi.Pointer, ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); - ffi.Pointer _objc_msgSend_1056( + ffi.Pointer _objc_msgSend_1054( ffi.Pointer obj, ffi.Pointer sel, ) { - return __objc_msgSend_1056( + return __objc_msgSend_1054( obj, sel, ); } - late final __objc_msgSend_1056Ptr = _lookup< + late final __objc_msgSend_1054Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1056 = __objc_msgSend_1056Ptr.asFunction< + late final __objc_msgSend_1054 = __objc_msgSend_1054Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>(); late final _sel_items1 = _registerName1("items"); late final _sel_storeEnvelope_1 = _registerName1("storeEnvelope:"); - void _objc_msgSend_1057( + void _objc_msgSend_1055( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer envelope, ) { - return __objc_msgSend_1057( + return __objc_msgSend_1055( obj, sel, envelope, ); } - late final __objc_msgSend_1057Ptr = _lookup< + late final __objc_msgSend_1055Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1057 = __objc_msgSend_1057Ptr.asFunction< + late final __objc_msgSend_1055 = __objc_msgSend_1055Ptr.asFunction< void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); late final _sel_captureEnvelope_1 = _registerName1("captureEnvelope:"); late final _sel_envelopeWithData_1 = _registerName1("envelopeWithData:"); - ffi.Pointer _objc_msgSend_1058( + ffi.Pointer _objc_msgSend_1056( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer data, ) { - return __objc_msgSend_1058( + return __objc_msgSend_1056( obj, sel, data, ); } - late final __objc_msgSend_1058Ptr = _lookup< + late final __objc_msgSend_1056Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1058 = __objc_msgSend_1058Ptr.asFunction< + late final __objc_msgSend_1056 = __objc_msgSend_1056Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); late final _sel_getDebugImages1 = _registerName1("getDebugImages"); late final _sel_getDebugImagesCrashed_1 = _registerName1("getDebugImagesCrashed:"); - ffi.Pointer _objc_msgSend_1059( + ffi.Pointer _objc_msgSend_1057( ffi.Pointer obj, ffi.Pointer sel, bool isCrash, ) { - return __objc_msgSend_1059( + return __objc_msgSend_1057( obj, sel, isCrash, ); } - late final __objc_msgSend_1059Ptr = _lookup< + late final __objc_msgSend_1057Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function(ffi.Pointer, ffi.Pointer, ffi.Bool)>>('objc_msgSend'); - late final __objc_msgSend_1059 = __objc_msgSend_1059Ptr.asFunction< + late final __objc_msgSend_1057 = __objc_msgSend_1057Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer, bool)>(); @@ -30084,36 +30021,36 @@ class SentryCocoa { late final _sel_getExtraContext1 = _registerName1("getExtraContext"); late final _sel_startProfilerForTrace_1 = _registerName1("startProfilerForTrace:"); - int _objc_msgSend_1060( + int _objc_msgSend_1058( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer traceId, ) { - return __objc_msgSend_1060( + return __objc_msgSend_1058( obj, sel, traceId, ); } - late final __objc_msgSend_1060Ptr = _lookup< + late final __objc_msgSend_1058Ptr = _lookup< ffi.NativeFunction< ffi.Uint64 Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1060 = __objc_msgSend_1060Ptr.asFunction< + late final __objc_msgSend_1058 = __objc_msgSend_1058Ptr.asFunction< int Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); late final _sel_collectProfileBetween_and_forTrace_1 = _registerName1("collectProfileBetween:and:forTrace:"); - ffi.Pointer _objc_msgSend_1061( + ffi.Pointer _objc_msgSend_1059( ffi.Pointer obj, ffi.Pointer sel, int startSystemTime, int endSystemTime, ffi.Pointer traceId, ) { - return __objc_msgSend_1061( + return __objc_msgSend_1059( obj, sel, startSystemTime, @@ -30122,7 +30059,7 @@ class SentryCocoa { ); } - late final __objc_msgSend_1061Ptr = _lookup< + late final __objc_msgSend_1059Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( ffi.Pointer, @@ -30130,29 +30067,29 @@ class SentryCocoa { ffi.Uint64, ffi.Uint64, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1061 = __objc_msgSend_1061Ptr.asFunction< + late final __objc_msgSend_1059 = __objc_msgSend_1059Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, ffi.Pointer, int, int, ffi.Pointer)>(); late final _sel_discardProfilerForTrace_1 = _registerName1("discardProfilerForTrace:"); - void _objc_msgSend_1062( + void _objc_msgSend_1060( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer traceId, ) { - return __objc_msgSend_1062( + return __objc_msgSend_1060( obj, sel, traceId, ); } - late final __objc_msgSend_1062Ptr = _lookup< + late final __objc_msgSend_1060Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1062 = __objc_msgSend_1062Ptr.asFunction< + late final __objc_msgSend_1060 = __objc_msgSend_1060Ptr.asFunction< void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); @@ -30160,82 +30097,82 @@ class SentryCocoa { _getClass1("SentryAppStartMeasurement"); late final _sel_onAppStartMeasurementAvailable1 = _registerName1("onAppStartMeasurementAvailable"); - ffi.Pointer<_ObjCBlock> _objc_msgSend_1063( + ffi.Pointer<_ObjCBlock> _objc_msgSend_1061( ffi.Pointer obj, ffi.Pointer sel, ) { - return __objc_msgSend_1063( + return __objc_msgSend_1061( obj, sel, ); } - late final __objc_msgSend_1063Ptr = _lookup< + late final __objc_msgSend_1061Ptr = _lookup< ffi.NativeFunction< ffi.Pointer<_ObjCBlock> Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1063 = __objc_msgSend_1063Ptr.asFunction< + late final __objc_msgSend_1061 = __objc_msgSend_1061Ptr.asFunction< ffi.Pointer<_ObjCBlock> Function( ffi.Pointer, ffi.Pointer)>(); late final _sel_setOnAppStartMeasurementAvailable_1 = _registerName1("setOnAppStartMeasurementAvailable:"); - void _objc_msgSend_1064( + void _objc_msgSend_1062( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer<_ObjCBlock> value, ) { - return __objc_msgSend_1064( + return __objc_msgSend_1062( obj, sel, value, ); } - late final __objc_msgSend_1064Ptr = _lookup< + late final __objc_msgSend_1062Ptr = _lookup< ffi.NativeFunction< ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer<_ObjCBlock>)>>('objc_msgSend'); - late final __objc_msgSend_1064 = __objc_msgSend_1064Ptr.asFunction< + late final __objc_msgSend_1062 = __objc_msgSend_1062Ptr.asFunction< void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer<_ObjCBlock>)>(); late final _sel_appStartMeasurement1 = _registerName1("appStartMeasurement"); - ffi.Pointer _objc_msgSend_1065( + ffi.Pointer _objc_msgSend_1063( ffi.Pointer obj, ffi.Pointer sel, ) { - return __objc_msgSend_1065( + return __objc_msgSend_1063( obj, sel, ); } - late final __objc_msgSend_1065Ptr = _lookup< + late final __objc_msgSend_1063Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1065 = __objc_msgSend_1065Ptr.asFunction< + late final __objc_msgSend_1063 = __objc_msgSend_1063Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>(); late final _sel_installationID1 = _registerName1("installationID"); late final _class_SentryOptions1 = _getClass1("SentryOptions"); - ffi.Pointer _objc_msgSend_1066( + ffi.Pointer _objc_msgSend_1064( ffi.Pointer obj, ffi.Pointer sel, ) { - return __objc_msgSend_1066( + return __objc_msgSend_1064( obj, sel, ); } - late final __objc_msgSend_1066Ptr = _lookup< + late final __objc_msgSend_1064Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1066 = __objc_msgSend_1066Ptr.asFunction< + late final __objc_msgSend_1064 = __objc_msgSend_1064Ptr.asFunction< ffi.Pointer Function( ffi.Pointer, ffi.Pointer)>(); @@ -30245,46 +30182,46 @@ class SentryCocoa { _registerName1("setAppStartMeasurementHybridSDKMode:"); late final _class_SentryUser1 = _getClass1("SentryUser"); late final _sel_userWithDictionary_1 = _registerName1("userWithDictionary:"); - ffi.Pointer _objc_msgSend_1067( + ffi.Pointer _objc_msgSend_1065( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer dictionary, ) { - return __objc_msgSend_1067( + return __objc_msgSend_1065( obj, sel, dictionary, ); } - late final __objc_msgSend_1067Ptr = _lookup< + late final __objc_msgSend_1065Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1067 = __objc_msgSend_1067Ptr.asFunction< + late final __objc_msgSend_1065 = __objc_msgSend_1065Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); late final _class_SentryBreadcrumb1 = _getClass1("SentryBreadcrumb"); late final _sel_breadcrumbWithDictionary_1 = _registerName1("breadcrumbWithDictionary:"); - ffi.Pointer _objc_msgSend_1068( + ffi.Pointer _objc_msgSend_1066( ffi.Pointer obj, ffi.Pointer sel, ffi.Pointer dictionary, ) { - return __objc_msgSend_1068( + return __objc_msgSend_1066( obj, sel, dictionary, ); } - late final __objc_msgSend_1068Ptr = _lookup< + late final __objc_msgSend_1066Ptr = _lookup< ffi.NativeFunction< ffi.Pointer Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>>('objc_msgSend'); - late final __objc_msgSend_1068 = __objc_msgSend_1068Ptr.asFunction< + late final __objc_msgSend_1066 = __objc_msgSend_1066Ptr.asFunction< ffi.Pointer Function(ffi.Pointer, ffi.Pointer, ffi.Pointer)>(); } @@ -70477,18 +70414,18 @@ class PrivateSentrySDKOnly extends NSObject { /// For storing an envelope synchronously to disk. static void storeEnvelope_(SentryCocoa _lib, SentryEnvelope? envelope) { - _lib._objc_msgSend_1057(_lib._class_PrivateSentrySDKOnly1, + _lib._objc_msgSend_1055(_lib._class_PrivateSentrySDKOnly1, _lib._sel_storeEnvelope_1, envelope?._id ?? ffi.nullptr); } static void captureEnvelope_(SentryCocoa _lib, SentryEnvelope? envelope) { - _lib._objc_msgSend_1057(_lib._class_PrivateSentrySDKOnly1, + _lib._objc_msgSend_1055(_lib._class_PrivateSentrySDKOnly1, _lib._sel_captureEnvelope_1, envelope?._id ?? ffi.nullptr); } /// Create an envelope from @c NSData. Needed for example by Flutter. static SentryEnvelope envelopeWithData_(SentryCocoa _lib, NSData? data) { - final _ret = _lib._objc_msgSend_1058(_lib._class_PrivateSentrySDKOnly1, + final _ret = _lib._objc_msgSend_1056(_lib._class_PrivateSentrySDKOnly1, _lib._sel_envelopeWithData_1, data?._id ?? ffi.nullptr); return SentryEnvelope._(_ret, _lib, retain: true, release: true); } @@ -70510,7 +70447,7 @@ class PrivateSentrySDKOnly extends NSObject { /// gathering them for other backtrace information, like a performance transaction. If this is for a /// crash, each image's data section crash info is also included. static NSArray getDebugImagesCrashed_(SentryCocoa _lib, bool isCrash) { - final _ret = _lib._objc_msgSend_1059(_lib._class_PrivateSentrySDKOnly1, + final _ret = _lib._objc_msgSend_1057(_lib._class_PrivateSentrySDKOnly1, _lib._sel_getDebugImagesCrashed_1, isCrash); return NSArray._(_ret, _lib, retain: true, release: true); } @@ -70555,7 +70492,7 @@ class PrivateSentrySDKOnly extends NSObject { /// Start a profiler session associated with the given @c SentryId. /// @return The system time when the profiler session started. static int startProfilerForTrace_(SentryCocoa _lib, SentryId? traceId) { - return _lib._objc_msgSend_1060(_lib._class_PrivateSentrySDKOnly1, + return _lib._objc_msgSend_1058(_lib._class_PrivateSentrySDKOnly1, _lib._sel_startProfilerForTrace_1, traceId?._id ?? ffi.nullptr); } @@ -70563,7 +70500,7 @@ class PrivateSentrySDKOnly extends NSObject { /// This also discards the profiler. static NSDictionary collectProfileBetween_and_forTrace_(SentryCocoa _lib, int startSystemTime, int endSystemTime, SentryId? traceId) { - final _ret = _lib._objc_msgSend_1061( + final _ret = _lib._objc_msgSend_1059( _lib._class_PrivateSentrySDKOnly1, _lib._sel_collectProfileBetween_and_forTrace_1, startSystemTime, @@ -70575,25 +70512,25 @@ class PrivateSentrySDKOnly extends NSObject { /// Discard profiler session data associated with the given @c SentryId. /// This only needs to be called in case you haven't collected the profile (and don't intend to). static void discardProfilerForTrace_(SentryCocoa _lib, SentryId? traceId) { - _lib._objc_msgSend_1062(_lib._class_PrivateSentrySDKOnly1, + _lib._objc_msgSend_1060(_lib._class_PrivateSentrySDKOnly1, _lib._sel_discardProfilerForTrace_1, traceId?._id ?? ffi.nullptr); } static ObjCBlock_ffiVoid_SentryAppStartMeasurement getOnAppStartMeasurementAvailable(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_1063(_lib._class_PrivateSentrySDKOnly1, + final _ret = _lib._objc_msgSend_1061(_lib._class_PrivateSentrySDKOnly1, _lib._sel_onAppStartMeasurementAvailable1); return ObjCBlock_ffiVoid_SentryAppStartMeasurement._(_ret, _lib); } static void setOnAppStartMeasurementAvailable( SentryCocoa _lib, ObjCBlock_ffiVoid_SentryAppStartMeasurement value) { - return _lib._objc_msgSend_1064(_lib._class_PrivateSentrySDKOnly1, + return _lib._objc_msgSend_1062(_lib._class_PrivateSentrySDKOnly1, _lib._sel_setOnAppStartMeasurementAvailable_1, value._id); } static SentryAppStartMeasurement? getAppStartMeasurement(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_1065( + final _ret = _lib._objc_msgSend_1063( _lib._class_PrivateSentrySDKOnly1, _lib._sel_appStartMeasurement1); return _ret.address == 0 ? null @@ -70609,7 +70546,7 @@ class PrivateSentrySDKOnly extends NSObject { } static SentryOptions? getOptions(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_1066( + final _ret = _lib._objc_msgSend_1064( _lib._class_PrivateSentrySDKOnly1, _lib._sel_options1); return _ret.address == 0 ? null @@ -70643,14 +70580,14 @@ class PrivateSentrySDKOnly extends NSObject { static SentryUser userWithDictionary_( SentryCocoa _lib, NSDictionary? dictionary) { - final _ret = _lib._objc_msgSend_1067(_lib._class_PrivateSentrySDKOnly1, + final _ret = _lib._objc_msgSend_1065(_lib._class_PrivateSentrySDKOnly1, _lib._sel_userWithDictionary_1, dictionary?._id ?? ffi.nullptr); return SentryUser._(_ret, _lib, retain: true, release: true); } static SentryBreadcrumb breadcrumbWithDictionary_( SentryCocoa _lib, NSDictionary? dictionary) { - final _ret = _lib._objc_msgSend_1068(_lib._class_PrivateSentrySDKOnly1, + final _ret = _lib._objc_msgSend_1066(_lib._class_PrivateSentrySDKOnly1, _lib._sel_breadcrumbWithDictionary_1, dictionary?._id ?? ffi.nullptr); return SentryBreadcrumb._(_ret, _lib, retain: true, release: true); } @@ -70785,14 +70722,14 @@ class SentryEnvelope extends NSObject { SentryEnvelope initWithId_singleItem_( SentryId? id, SentryEnvelopeItem? item) { - final _ret = _lib._objc_msgSend_1047(_id, _lib._sel_initWithId_singleItem_1, + final _ret = _lib._objc_msgSend_1045(_id, _lib._sel_initWithId_singleItem_1, id?._id ?? ffi.nullptr, item?._id ?? ffi.nullptr); return SentryEnvelope._(_ret, _lib, retain: true, release: true); } SentryEnvelope initWithHeader_singleItem_( SentryEnvelopeHeader? header, SentryEnvelopeItem? item) { - final _ret = _lib._objc_msgSend_1053( + final _ret = _lib._objc_msgSend_1051( _id, _lib._sel_initWithHeader_singleItem_1, header?._id ?? ffi.nullptr, @@ -70801,7 +70738,7 @@ class SentryEnvelope extends NSObject { } SentryEnvelope initWithId_items_(SentryId? id, NSArray? items) { - final _ret = _lib._objc_msgSend_1054(_id, _lib._sel_initWithId_items_1, + final _ret = _lib._objc_msgSend_1052(_id, _lib._sel_initWithId_items_1, id?._id ?? ffi.nullptr, items?._id ?? ffi.nullptr); return SentryEnvelope._(_ret, _lib, retain: true, release: true); } @@ -70825,7 +70762,7 @@ class SentryEnvelope extends NSObject { SentryEnvelope initWithHeader_items_( SentryEnvelopeHeader? header, NSArray? items) { - final _ret = _lib._objc_msgSend_1055(_id, _lib._sel_initWithHeader_items_1, + final _ret = _lib._objc_msgSend_1053(_id, _lib._sel_initWithHeader_items_1, header?._id ?? ffi.nullptr, items?._id ?? ffi.nullptr); return SentryEnvelope._(_ret, _lib, retain: true, release: true); } @@ -70845,7 +70782,7 @@ class SentryEnvelope extends NSObject { /// The envelope header. SentryEnvelopeHeader? get header { - final _ret = _lib._objc_msgSend_1056(_id, _lib._sel_header1); + final _ret = _lib._objc_msgSend_1054(_id, _lib._sel_header1); return _ret.address == 0 ? null : SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); @@ -71300,14 +71237,14 @@ class SentryEnvelopeItem extends NSObject { SentryEnvelopeItem initWithHeader_data_( SentryEnvelopeItemHeader? header, NSData? data) { - final _ret = _lib._objc_msgSend_1045(_id, _lib._sel_initWithHeader_data_1, + final _ret = _lib._objc_msgSend_1043(_id, _lib._sel_initWithHeader_data_1, header?._id ?? ffi.nullptr, data?._id ?? ffi.nullptr); return SentryEnvelopeItem._(_ret, _lib, retain: true, release: true); } /// The envelope item header. SentryEnvelopeItemHeader? get header { - final _ret = _lib._objc_msgSend_1046(_id, _lib._sel_header1); + final _ret = _lib._objc_msgSend_1044(_id, _lib._sel_header1); return _ret.address == 0 ? null : SentryEnvelopeItemHeader._(_ret, _lib, retain: true, release: true); @@ -71500,7 +71437,7 @@ class SentryAttachment extends _ObjCWrapper { } } -class SentryEnvelopeItemHeader extends NSObject { +class SentryEnvelopeItemHeader extends _ObjCWrapper { SentryEnvelopeItemHeader._(ffi.Pointer id, SentryCocoa lib, {bool retain = false, bool release = false}) : super._(id, lib, retain: retain, release: release); @@ -71524,142 +71461,6 @@ class SentryEnvelopeItemHeader extends NSObject { return obj._lib._objc_msgSend_0(obj._id, obj._lib._sel_isKindOfClass_1, obj._lib._class_SentryEnvelopeItemHeader1); } - - @override - SentryEnvelopeItemHeader init() { - final _ret = _lib._objc_msgSend_2(_id, _lib._sel_init1); - return SentryEnvelopeItemHeader._(_ret, _lib, retain: true, release: true); - } - - static SentryEnvelopeItemHeader new1(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_SentryEnvelopeItemHeader1, _lib._sel_new1); - return SentryEnvelopeItemHeader._(_ret, _lib, retain: false, release: true); - } - - SentryEnvelopeItemHeader initWithType_length_(NSString? type, int length) { - final _ret = _lib._objc_msgSend_1043( - _id, _lib._sel_initWithType_length_1, type?._id ?? ffi.nullptr, length); - return SentryEnvelopeItemHeader._(_ret, _lib, retain: true, release: true); - } - - SentryEnvelopeItemHeader initWithType_length_filenname_contentType_( - NSString? type, int length, NSString? filename, NSString? contentType) { - final _ret = _lib._objc_msgSend_1044( - _id, - _lib._sel_initWithType_length_filenname_contentType_1, - type?._id ?? ffi.nullptr, - length, - filename?._id ?? ffi.nullptr, - contentType?._id ?? ffi.nullptr); - return SentryEnvelopeItemHeader._(_ret, _lib, retain: true, release: true); - } - - /// The type of the envelope item. - NSString? get type { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_type1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - int get length { - return _lib._objc_msgSend_10(_id, _lib._sel_length1); - } - - NSString? get filename { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_filename1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - NSString? get contentType { - final _ret = _lib._objc_msgSend_20(_id, _lib._sel_contentType1); - return _ret.address == 0 - ? null - : NSString._(_ret, _lib, retain: true, release: true); - } - - static SentryEnvelopeItemHeader allocWithZone_( - SentryCocoa _lib, ffi.Pointer<_NSZone> zone) { - final _ret = _lib._objc_msgSend_3( - _lib._class_SentryEnvelopeItemHeader1, _lib._sel_allocWithZone_1, zone); - return SentryEnvelopeItemHeader._(_ret, _lib, retain: false, release: true); - } - - static SentryEnvelopeItemHeader alloc(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2( - _lib._class_SentryEnvelopeItemHeader1, _lib._sel_alloc1); - return SentryEnvelopeItemHeader._(_ret, _lib, retain: false, release: true); - } - - static void cancelPreviousPerformRequestsWithTarget_selector_object_( - SentryCocoa _lib, - NSObject aTarget, - ffi.Pointer aSelector, - NSObject anArgument) { - _lib._objc_msgSend_14( - _lib._class_SentryEnvelopeItemHeader1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_selector_object_1, - aTarget._id, - aSelector, - anArgument._id); - } - - static void cancelPreviousPerformRequestsWithTarget_( - SentryCocoa _lib, NSObject aTarget) { - _lib._objc_msgSend_15(_lib._class_SentryEnvelopeItemHeader1, - _lib._sel_cancelPreviousPerformRequestsWithTarget_1, aTarget._id); - } - - static bool getAccessInstanceVariablesDirectly(SentryCocoa _lib) { - return _lib._objc_msgSend_12(_lib._class_SentryEnvelopeItemHeader1, - _lib._sel_accessInstanceVariablesDirectly1); - } - - static bool useStoredAccessor(SentryCocoa _lib) { - return _lib._objc_msgSend_12( - _lib._class_SentryEnvelopeItemHeader1, _lib._sel_useStoredAccessor1); - } - - static NSSet keyPathsForValuesAffectingValueForKey_( - SentryCocoa _lib, NSString? key) { - final _ret = _lib._objc_msgSend_58( - _lib._class_SentryEnvelopeItemHeader1, - _lib._sel_keyPathsForValuesAffectingValueForKey_1, - key?._id ?? ffi.nullptr); - return NSSet._(_ret, _lib, retain: true, release: true); - } - - static bool automaticallyNotifiesObserversForKey_( - SentryCocoa _lib, NSString? key) { - return _lib._objc_msgSend_59( - _lib._class_SentryEnvelopeItemHeader1, - _lib._sel_automaticallyNotifiesObserversForKey_1, - key?._id ?? ffi.nullptr); - } - - static void setKeys_triggerChangeNotificationsForDependentKey_( - SentryCocoa _lib, NSArray? keys, NSString? dependentKey) { - _lib._objc_msgSend_82( - _lib._class_SentryEnvelopeItemHeader1, - _lib._sel_setKeys_triggerChangeNotificationsForDependentKey_1, - keys?._id ?? ffi.nullptr, - dependentKey?._id ?? ffi.nullptr); - } - - static NSArray classFallbacksForKeyedArchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_79(_lib._class_SentryEnvelopeItemHeader1, - _lib._sel_classFallbacksForKeyedArchiver1); - return NSArray._(_ret, _lib, retain: true, release: true); - } - - static NSObject classForKeyedUnarchiver(SentryCocoa _lib) { - final _ret = _lib._objc_msgSend_2(_lib._class_SentryEnvelopeItemHeader1, - _lib._sel_classForKeyedUnarchiver1); - return NSObject._(_ret, _lib, retain: true, release: true); - } } class SentryEnvelopeHeader extends NSObject { @@ -71703,7 +71504,7 @@ class SentryEnvelopeHeader extends NSObject { /// @param eventId The identifier of the event. Can be nil if no event in the envelope or attachment /// related to event. SentryEnvelopeHeader initWithId_(SentryId? eventId) { - final _ret = _lib._objc_msgSend_1048( + final _ret = _lib._objc_msgSend_1046( _id, _lib._sel_initWithId_1, eventId?._id ?? ffi.nullptr); return SentryEnvelopeHeader._(_ret, _lib, retain: true, release: true); } @@ -71714,7 +71515,7 @@ class SentryEnvelopeHeader extends NSObject { /// @param traceContext Current trace state. SentryEnvelopeHeader initWithId_traceContext_( SentryId? eventId, SentryTraceContext? traceContext) { - final _ret = _lib._objc_msgSend_1049( + final _ret = _lib._objc_msgSend_1047( _id, _lib._sel_initWithId_traceContext_1, eventId?._id ?? ffi.nullptr, @@ -71732,7 +71533,7 @@ class SentryEnvelopeHeader extends NSObject { /// @param traceContext Current trace state. SentryEnvelopeHeader initWithId_sdkInfo_traceContext_(SentryId? eventId, SentrySdkInfo? sdkInfo, SentryTraceContext? traceContext) { - final _ret = _lib._objc_msgSend_1050( + final _ret = _lib._objc_msgSend_1048( _id, _lib._sel_initWithId_sdkInfo_traceContext_1, eventId?._id ?? ffi.nullptr, @@ -71752,14 +71553,14 @@ class SentryEnvelopeHeader extends NSObject { } SentrySdkInfo? get sdkInfo { - final _ret = _lib._objc_msgSend_1051(_id, _lib._sel_sdkInfo1); + final _ret = _lib._objc_msgSend_1049(_id, _lib._sel_sdkInfo1); return _ret.address == 0 ? null : SentrySdkInfo._(_ret, _lib, retain: true, release: true); } SentryTraceContext? get traceContext { - final _ret = _lib._objc_msgSend_1052(_id, _lib._sel_traceContext1); + final _ret = _lib._objc_msgSend_1050(_id, _lib._sel_traceContext1); return _ret.address == 0 ? null : SentryTraceContext._(_ret, _lib, retain: true, release: true); From 8a10ab719072f65d029985c211471d779ab2a3cb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 8 Nov 2023 12:41:38 +0100 Subject: [PATCH 062/166] chore: update flutter/scripts/update-cocoa.sh to 8.15.1 (#1714) Co-authored-by: GitHub --- CHANGELOG.md | 6 +++--- flutter/ios/sentry_flutter.podspec | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b20cd8430a..793549aa0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,9 +12,9 @@ - Bump Android SDK from v6.32.0 to v6.33.1 ([#1710](https://github.com/getsentry/sentry-dart/pull/1710), [#1713](https://github.com/getsentry/sentry-dart/pull/1713)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6331) - [diff](https://github.com/getsentry/sentry-java/compare/6.32.0...6.33.1) -- Bump Cocoa SDK from v8.14.2 to v8.15.0 ([#1712](https://github.com/getsentry/sentry-dart/pull/1712)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8150) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.14.2...8.15.0) +- Bump Cocoa SDK from v8.14.2 to v8.15.1 ([#1712](https://github.com/getsentry/sentry-dart/pull/1712), [#1714](https://github.com/getsentry/sentry-dart/pull/1714)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8151) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.14.2...8.15.1) ## 7.12.0 diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index f32d6a8c34..140ac1ea01 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.15.0' + s.dependency 'Sentry/HybridSDK', '8.15.1' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' From 212d6c7b8070c9999404017f21fdf7afdd840f7b Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Fri, 10 Nov 2023 14:00:01 +0000 Subject: [PATCH 063/166] fix: unsupported types with expando (#1690) * Support string, int, double and bool as throwable for expando * Rename the test file and move it to utils folder{ * Remvoe ffi import * Update changelog * Try other url for dio pubspec doc url * Change doc url of logging pubspec * Remove unnecessary code * Update naming * Rename --- CHANGELOG.md | 4 + dart/lib/src/hub.dart | 36 +++++++++ dart/test/hub_test.dart | 4 +- dart/test/unsupported_throwables_test.dart | 92 ++++++++++++++++++++++ 4 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 dart/test/unsupported_throwables_test.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index 793549aa0c..523aed749b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Fixes + +- Unsupported types with Expando ([#1690](https://github.com/getsentry/sentry-dart/pull/1690)) + ### Features - Breadcrumbs for database operations ([#1656](https://github.com/getsentry/sentry-dart/pull/1656)) diff --git a/dart/lib/src/hub.dart b/dart/lib/src/hub.dart index 4c09f1722f..42291d1c87 100644 --- a/dart/lib/src/hub.dart +++ b/dart/lib/src/hub.dart @@ -605,6 +605,8 @@ class _WeakMap { final SentryOptions _options; + final throwableHandler = UnsupportedThrowablesHandler(); + _WeakMap(this._options); void add( @@ -615,6 +617,7 @@ class _WeakMap { if (throwable == null) { return; } + throwable = throwableHandler.wrapIfUnsupportedType(throwable); try { if (_expando[throwable] == null) { _expando[throwable] = MapEntry(span, transaction); @@ -633,6 +636,7 @@ class _WeakMap { if (throwable == null) { return null; } + throwable = throwableHandler.wrapIfUnsupportedType(throwable); try { return _expando[throwable] as MapEntry?; } catch (exception, stackTrace) { @@ -646,3 +650,35 @@ class _WeakMap { return null; } } + +/// A handler for unsupported throwables used for Expando. +@visibleForTesting +class UnsupportedThrowablesHandler { + final _unsupportedTypes = {String, int, double, bool}; + final _unsupportedThrowables = {}; + + dynamic wrapIfUnsupportedType(dynamic throwable) { + if (_unsupportedTypes.contains(throwable.runtimeType)) { + throwable = _UnsupportedExceptionWrapper(Exception(throwable)); + _unsupportedThrowables.add(throwable); + } + return _unsupportedThrowables.lookup(throwable) ?? throwable; + } +} + +class _UnsupportedExceptionWrapper { + _UnsupportedExceptionWrapper(this.exception); + + final Exception exception; + + @override + bool operator ==(Object other) { + if (other is _UnsupportedExceptionWrapper) { + return other.exception.toString() == exception.toString(); + } + return false; + } + + @override + int get hashCode => exception.toString().hashCode; +} diff --git a/dart/test/hub_test.dart b/dart/test/hub_test.dart index 37122d43b6..31698329d6 100644 --- a/dart/test/hub_test.dart +++ b/dart/test/hub_test.dart @@ -150,8 +150,8 @@ void main() { final capturedEvent = fixture.client.captureEventCalls.first; - expect(capturedEvent.event.transaction, isNull); - expect(capturedEvent.event.contexts.trace, isNull); + expect(capturedEvent.event.transaction, 'test'); + expect(capturedEvent.event.contexts.trace, isNotNull); }); }); diff --git a/dart/test/unsupported_throwables_test.dart b/dart/test/unsupported_throwables_test.dart new file mode 100644 index 0000000000..9cac063a34 --- /dev/null +++ b/dart/test/unsupported_throwables_test.dart @@ -0,0 +1,92 @@ +import 'package:sentry/src/hub.dart'; +import 'package:test/expect.dart'; +import 'package:test/scaffolding.dart'; + +void main() { + late Fixture fixture; + + setUp(() { + fixture = Fixture(); + }); + + group('unsupported throwable types', () { + test('wrapped string throwable does not throw when expanding', () async { + final throwableHandler = fixture.sut; + final unsupportedThrowable = 'test throwable'; + final wrappedThrowable = + throwableHandler.wrapIfUnsupportedType(unsupportedThrowable); + + expect(() { + fixture.expando[wrappedThrowable]; + }, returnsNormally); + }); + + test('wrapped int throwable does not throw when expanding', () async { + final throwableHandler = fixture.sut; + final unsupportedThrowable = 1; + final wrappedThrowable = + throwableHandler.wrapIfUnsupportedType(unsupportedThrowable); + + expect(() { + fixture.expando[wrappedThrowable]; + }, returnsNormally); + }); + + test('wrapped double throwable does not throw when expanding', () async { + final throwableHandler = fixture.sut; + final unsupportedThrowable = 1.0; + final wrappedThrowable = + throwableHandler.wrapIfUnsupportedType(unsupportedThrowable); + + expect(() { + fixture.expando[wrappedThrowable]; + }, returnsNormally); + }); + + test('wrapped bool throwable does not throw when expanding', () async { + final throwableHandler = fixture.sut; + final unsupportedThrowable = true; + final wrappedThrowable = + throwableHandler.wrapIfUnsupportedType(unsupportedThrowable); + + expect(() { + fixture.expando[wrappedThrowable]; + }, returnsNormally); + }); + + test( + 'creating multiple instances of string wrapped exceptions accesses the same expando value', + () async { + final unsupportedThrowable = 'test throwable'; + final throwableHandler = fixture.sut; + + final first = + throwableHandler.wrapIfUnsupportedType(unsupportedThrowable); + fixture.expando[first] = 1; + + final second = + throwableHandler.wrapIfUnsupportedType(unsupportedThrowable); + expect(fixture.expando[second], 1); + fixture.expando[second] = 2.0; + + final third = + throwableHandler.wrapIfUnsupportedType(unsupportedThrowable); + expect(fixture.expando[third], 2.0); + }); + }); + + group('supported throwable type', () { + test('does not wrap exception if it is a supported type', () async { + final supportedThrowable = Exception('test throwable'); + final result = fixture.sut.wrapIfUnsupportedType(supportedThrowable); + + expect(result, supportedThrowable); + }); + }); +} + +class Fixture { + final expando = Expando(); + + UnsupportedThrowablesHandler get sut => UnsupportedThrowablesHandler(); +} From 452c92a7d70cc951364f8e08f1c985eca80f342a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 09:38:33 +0000 Subject: [PATCH 064/166] chore: update flutter/scripts/update-cocoa.sh to 8.15.2 (#1717) Co-authored-by: GitHub --- CHANGELOG.md | 6 +++--- flutter/ios/sentry_flutter.podspec | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 523aed749b..d7ddc11675 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,9 +16,9 @@ - Bump Android SDK from v6.32.0 to v6.33.1 ([#1710](https://github.com/getsentry/sentry-dart/pull/1710), [#1713](https://github.com/getsentry/sentry-dart/pull/1713)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6331) - [diff](https://github.com/getsentry/sentry-java/compare/6.32.0...6.33.1) -- Bump Cocoa SDK from v8.14.2 to v8.15.1 ([#1712](https://github.com/getsentry/sentry-dart/pull/1712), [#1714](https://github.com/getsentry/sentry-dart/pull/1714)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8151) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.14.2...8.15.1) +- Bump Cocoa SDK from v8.14.2 to v8.15.2 ([#1712](https://github.com/getsentry/sentry-dart/pull/1712), [#1714](https://github.com/getsentry/sentry-dart/pull/1714), [#1717](https://github.com/getsentry/sentry-dart/pull/1717)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8152) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.14.2...8.15.2) ## 7.12.0 diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 140ac1ea01..a309f686b6 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.15.1' + s.dependency 'Sentry/HybridSDK', '8.15.2' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' From bdc7f934e8dc9da106dd84cc5c5a1b6844609e76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Uek=C3=B6tter?= Date: Mon, 13 Nov 2023 13:03:14 +0100 Subject: [PATCH 065/166] Parse message field in `PlatformException.message` (#1716) * Parse message field * changelog * Update CHANGELOG.md --- CHANGELOG.md | 1 + ...id_platform_exception_event_processor.dart | 135 +++++++----------- ...atform_exception_event_processor_test.dart | 43 +++--- 3 files changed, 81 insertions(+), 98 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7ddc11675..28b309dbdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ ### Features +- StackTraces in `PlatformException.message` will get nicely formatted too when present ([#1716](https://github.com/getsentry/sentry-dart/pull/1716)) - Breadcrumbs for database operations ([#1656](https://github.com/getsentry/sentry-dart/pull/1656)) - Add `attachScreenshotOnlyWhenResumed` to options ([#1700](https://github.com/getsentry/sentry-dart/pull/1700)) diff --git a/flutter/lib/src/event_processor/android_platform_exception_event_processor.dart b/flutter/lib/src/event_processor/android_platform_exception_event_processor.dart index 377af31d25..c784f5b221 100644 --- a/flutter/lib/src/event_processor/android_platform_exception_event_processor.dart +++ b/flutter/lib/src/event_processor/android_platform_exception_event_processor.dart @@ -15,9 +15,6 @@ class AndroidPlatformExceptionEventProcessor implements EventProcessor { final SentryFlutterOptions _options; - // Because of obfuscation, we need to dynamically get the name - static final _platformExceptionType = (PlatformException).toString(); - @override Future apply(SentryEvent event, {Hint? hint}) async { if (event is SentryTransaction) { @@ -29,19 +26,23 @@ class AndroidPlatformExceptionEventProcessor implements EventProcessor { return event; } - final nativeStackTrace = plaformException.stacktrace; - if (nativeStackTrace == null) { - return event; - } - try { // PackageInfo has an internal cache, so no need to do it ourselves. final packageInfo = await PackageInfo.fromPlatform(); + + final nativeStackTrace = + _tryParse(plaformException.stacktrace, packageInfo.packageName); + final messageStackTrace = + _tryParse(plaformException.message, packageInfo.packageName); + + if (nativeStackTrace == null && messageStackTrace == null) { + return event; + } + return _processPlatformException( event, - plaformException, nativeStackTrace, - packageInfo.packageName, + messageStackTrace, ); } catch (e, stackTrace) { _options.logger( @@ -55,25 +56,35 @@ class AndroidPlatformExceptionEventProcessor implements EventProcessor { } } - SentryEvent _processPlatformException( - SentryEvent event, - PlatformException exception, - String nativeStackTrace, + List>? _tryParse( + String? potentialStackTrace, String packageName, ) { - final jvmException = - _JvmExceptionFactory(packageName).fromJvmStackTrace(nativeStackTrace); + if (potentialStackTrace == null) { + return null; + } - final exceptions = _removePlatformExceptionStackTraceFromValue( - event.exceptions, - exception, - ); + return _JvmExceptionFactory(packageName) + .fromJvmStackTrace(potentialStackTrace); + } + SentryEvent _processPlatformException( + SentryEvent event, + List>? nativeStackTrace, + List>? messageStackTrace, + ) { final threads = _markDartThreadsAsNonCrashed(event.threads); - final jvmExceptions = jvmException.map((e) => e.key); + final jvmExceptions = [ + ...?nativeStackTrace?.map((e) => e.key), + ...?messageStackTrace?.map((e) => e.key) + ]; + + var jvmThreads = [ + ...?nativeStackTrace?.map((e) => e.value), + ...?messageStackTrace?.map((e) => e.value), + ]; - var jvmThreads = jvmException.map((e) => e.value).toList(growable: false); if (jvmThreads.isNotEmpty) { // filter potential duplicated threads final first = jvmThreads.first; @@ -84,13 +95,16 @@ class AndroidPlatformExceptionEventProcessor implements EventProcessor { jvmThreads.add(first); } - return event.copyWith(exceptions: [ - ...?exceptions, - ...jvmExceptions, - ], threads: [ - ...?threads, - if (_options.attachThreads) ...jvmThreads, - ]); + return event.copyWith( + exceptions: [ + ...?event.exceptions, + ...jvmExceptions, + ], + threads: [ + ...?threads, + if (_options.attachThreads) ...jvmThreads, + ], + ); } /// If the crash originated on Android, the Dart side didn't crash. @@ -99,60 +113,16 @@ class AndroidPlatformExceptionEventProcessor implements EventProcessor { List? threads, ) { return threads - ?.map((e) => e.copyWith( - crashed: false, - // Isolate is safe to use directly, - // because Android is only run in the dart:io context. - current: e.name == Isolate.current.debugName, - )) + ?.map( + (e) => e.copyWith( + crashed: false, + // Isolate is safe to use directly, + // because Android is only run in the dart:io context. + current: e.name == Isolate.current.debugName, + ), + ) .toList(growable: false); } - - /// Remove the StackTrace from [PlatformException] so the message on Sentry - /// looks much better. - List? _removePlatformExceptionStackTraceFromValue( - List? exceptions, - PlatformException platformException, - ) { - if (exceptions == null || exceptions.isEmpty) { - return null; - } - final exceptionCopy = List.from(exceptions); - - final sentryExceptions = exceptionCopy - .where((element) => element.type == _platformExceptionType); - if (sentryExceptions.isEmpty) { - return null; - } - var sentryException = sentryExceptions.first; - - final exceptionIndex = exceptionCopy.indexOf(sentryException); - exceptionCopy.remove(sentryException); - - // Remove stacktrace, so that the PlatformException value doesn't - // include the chained exception. - // PlatformException.stackTrace is an empty string so that - // PlatformException.toString() results in - // `PlatformException(error, Exception Message, null, )` - // instead of - // `PlatformException(error, Exception Message, null, null)`. - // While `null` for `PlatformException.stackTrace` is technically correct - // it's semantically wrong. - platformException = PlatformException( - code: platformException.code, - details: platformException.details, - message: platformException.message, - stacktrace: '', - ); - - sentryException = sentryException.copyWith( - value: platformException.toString(), - ); - - exceptionCopy.insert(exceptionIndex, sentryException); - - return exceptionCopy; - } } class _JvmExceptionFactory { @@ -161,7 +131,8 @@ class _JvmExceptionFactory { final String nativePackageName; List> fromJvmStackTrace( - String exceptionAsString) { + String exceptionAsString, + ) { final jvmException = JvmException.parse(exceptionAsString); final jvmExceptions = [ jvmException, diff --git a/flutter/test/android_platform_exception_event_processor_test.dart b/flutter/test/android_platform_exception_event_processor_test.dart index bfd8e2b4ce..f98bedbe26 100644 --- a/flutter/test/android_platform_exception_event_processor_test.dart +++ b/flutter/test/android_platform_exception_event_processor_test.dart @@ -30,7 +30,7 @@ void main() { await fixture.processor.apply(fixture.eventWithPlatformStackTrace); final exceptions = platformExceptionEvent!.exceptions!; - expect(exceptions.length, 2); + expect(exceptions.length, 3); final platformException = exceptions[1]; @@ -40,6 +40,15 @@ void main() { "Unsupported value: '[Ljava.lang.StackTraceElement;@ba6feed' of type 'class [Ljava.lang.StackTraceElement;'", ); expect(platformException.stackTrace!.frames.length, 18); + + final platformException_2 = exceptions[2]; + + expect(platformException_2.type, 'IllegalArgumentException'); + expect( + platformException_2.value, + "Unsupported value: '[Ljava.lang.StackTraceElement;@ba6feed' of type 'class [Ljava.lang.StackTraceElement;'", + ); + expect(platformException_2.stackTrace!.frames.length, 18); }); test( @@ -49,7 +58,7 @@ void main() { await fixture.processor.apply(fixture.eventWithPlatformStackTrace); final exceptions = platformExceptionEvent!.exceptions!; - expect(exceptions.length, 2); + expect(exceptions.length, 3); expect(platformExceptionEvent.threads?.first.current, true); expect(platformExceptionEvent.threads?.first.crashed, false); @@ -60,7 +69,7 @@ void main() { await fixture.processor.apply(fixture.eventWithPlatformStackTrace); final exceptions = platformExceptionEvent!.exceptions!; - expect(exceptions.length, 2); + expect(exceptions.length, 3); final platformException = exceptions[1]; final platformThread = platformExceptionEvent.threads?[1]; @@ -80,7 +89,7 @@ void main() { await fixture.processor.apply(fixture.eventWithPlatformStackTrace); final exceptions = platformExceptionEvent!.exceptions!; - expect(exceptions.length, 2); + expect(exceptions.length, 3); expect(platformExceptionEvent.threads?.length, threadCount); }); @@ -144,12 +153,23 @@ class Fixture { } final testPlatformException = PlatformException( + code: 'error', + details: + "Unsupported value: '[Ljava.lang.StackTraceElement;@fa902f1' of type 'class [Ljava.lang.StackTraceElement;'", + message: _jvmStackTrace, + stacktrace: _jvmStackTrace, +); + +final emptyPlatformException = PlatformException( code: 'error', details: "Unsupported value: '[Ljava.lang.StackTraceElement;@fa902f1' of type 'class [Ljava.lang.StackTraceElement;'", message: null, - stacktrace: - """java.lang.IllegalArgumentException: Unsupported value: '[Ljava.lang.StackTraceElement;@ba6feed' of type 'class [Ljava.lang.StackTraceElement;' + stacktrace: null, +); + +const _jvmStackTrace = + """java.lang.IllegalArgumentException: Unsupported value: '[Ljava.lang.StackTraceElement;@ba6feed' of type 'class [Ljava.lang.StackTraceElement;' at io.flutter.plugin.common.StandardMessageCodec.writeValue(StandardMessageCodec.java:292) at io.flutter.plugin.common.StandardMethodCodec.encodeSuccessEnvelope(StandardMethodCodec.java:59) at io.flutter.plugin.common.MethodChannel\$IncomingMethodCallHandler\$1.success(MethodChannel.java:267) @@ -167,13 +187,4 @@ final testPlatformException = PlatformException( at android.app.ActivityThread.main(ActivityThread.java:8138) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit\$MethodAndArgsCaller.run(RuntimeInit.java:556) - at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1037)""", -); - -final emptyPlatformException = PlatformException( - code: 'error', - details: - "Unsupported value: '[Ljava.lang.StackTraceElement;@fa902f1' of type 'class [Ljava.lang.StackTraceElement;'", - message: null, - stacktrace: null, -); + at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1037)"""; From 655559ea6d8b7cb02f1c5bc552a0c848b8986a76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 13:50:11 +0000 Subject: [PATCH 066/166] Bump natiginfo/action-detekt-all from 1.21.0 to 1.23.1 (#1684) * Bump natiginfo/action-detekt-all from 1.21.0 to 1.23.1 Bumps [natiginfo/action-detekt-all](https://github.com/natiginfo/action-detekt-all) from 1.21.0 to 1.23.1. - [Release notes](https://github.com/natiginfo/action-detekt-all/releases) - [Commits](https://github.com/natiginfo/action-detekt-all/compare/e01de6ff0eef7c24131e8a133bf598cfac6ceeab...be3c18799c7c392b2f41a674beed9ced7ae2f21b) --- updated-dependencies: - dependency-name: natiginfo/action-detekt-all dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * fix braces * Add missing trailing comma --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/flutter.yml | 2 +- .../io/sentry/samples/flutter/MainActivity.kt | 38 +++++++++---------- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 3583869621..bb49a82db1 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -200,6 +200,6 @@ jobs: steps: - uses: actions/checkout@v4 # To recreate baseline run: detekt -i flutter/android,flutter/example/android -b flutter/config/detekt-bl.xml -cb - - uses: natiginfo/action-detekt-all@e01de6ff0eef7c24131e8a133bf598cfac6ceeab # pin@1.21.0 + - uses: natiginfo/action-detekt-all@be3c18799c7c392b2f41a674beed9ced7ae2f21b # pin@1.23.1 with: args: -i flutter/android,flutter/example/android --baseline flutter/config/detekt-bl.xml --jvm-target 1.8 --build-upon-default-config --all-rules diff --git a/flutter/example/android/app/src/main/kotlin/io/sentry/samples/flutter/MainActivity.kt b/flutter/example/android/app/src/main/kotlin/io/sentry/samples/flutter/MainActivity.kt index 14f222d254..7966a33655 100644 --- a/flutter/example/android/app/src/main/kotlin/io/sentry/samples/flutter/MainActivity.kt +++ b/flutter/example/android/app/src/main/kotlin/io/sentry/samples/flutter/MainActivity.kt @@ -11,37 +11,33 @@ class MainActivity : FlutterActivity() { override fun configureFlutterEngine(flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) - MethodChannel(flutterEngine.dartExecutor.binaryMessenger, _channel).setMethodCallHandler { - call, result -> + MethodChannel( + flutterEngine.dartExecutor.binaryMessenger, + _channel, + ).setMethodCallHandler { call, result -> // Note: this method is invoked on the main thread. when (call.method) { - "throw" -> { + "throw" -> thread(isDaemon = true) { throw Exception("Catch this java exception thrown from Kotlin thread!") } - } - "anr" -> { - Thread.sleep(6_000) - } - "capture" -> { + + "anr" -> Thread.sleep(6_000) + + "capture" -> try { throw RuntimeException("Catch this java exception!") } catch (e: Exception) { Sentry.captureException(e) } - } - "crash" -> { - crash() - } - "cpp_capture_message" -> { - message() - } - "platform_exception" -> { - throw RuntimeException("Catch this platform exception!") - } - else -> { - result.notImplemented() - } + + "crash" -> crash() + + "cpp_capture_message" -> message() + + "platform_exception" -> throw RuntimeException("Catch this platform exception!") + + else -> result.notImplemented() } result.success("") } From a97ee7c35e2e6769a2b40d0481777746122c46a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 16:41:22 +0000 Subject: [PATCH 067/166] build(deps): bump natiginfo/action-detekt-all from 1.23.1 to 1.23.3 (#1722) Bumps [natiginfo/action-detekt-all](https://github.com/natiginfo/action-detekt-all) from 1.23.1 to 1.23.3. - [Release notes](https://github.com/natiginfo/action-detekt-all/releases) - [Commits](https://github.com/natiginfo/action-detekt-all/compare/be3c18799c7c392b2f41a674beed9ced7ae2f21b...68eb02dd9f2c2686d5026f5957756064424261a9) --- updated-dependencies: - dependency-name: natiginfo/action-detekt-all dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/flutter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index bb49a82db1..834ce13a1f 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -200,6 +200,6 @@ jobs: steps: - uses: actions/checkout@v4 # To recreate baseline run: detekt -i flutter/android,flutter/example/android -b flutter/config/detekt-bl.xml -cb - - uses: natiginfo/action-detekt-all@be3c18799c7c392b2f41a674beed9ced7ae2f21b # pin@1.23.1 + - uses: natiginfo/action-detekt-all@68eb02dd9f2c2686d5026f5957756064424261a9 # pin@1.23.3 with: args: -i flutter/android,flutter/example/android --baseline flutter/config/detekt-bl.xml --jvm-target 1.8 --build-upon-default-config --all-rules From 48adddf2bb6654c3490f6b14b745c01e3f6c95e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Uek=C3=B6tter?= Date: Tue, 14 Nov 2023 10:56:47 +0100 Subject: [PATCH 068/166] Remove renderer on Dart:io platforms (#1723) * Remove renderer on dart:io platforms * Tests + changelog * Update CHANGELOG.md * Fix tests * fix more tests --- CHANGELOG.md | 1 + .../flutter_enricher_event_processor.dart | 4 +- .../screenshot_event_processor.dart | 9 ++-- flutter/lib/src/renderer/html_renderer.dart | 2 +- flutter/lib/src/renderer/io_renderer.dart | 4 +- flutter/lib/src/renderer/renderer.dart | 10 ++++- flutter/lib/src/sentry_flutter.dart | 3 +- ...flutter_enricher_event_processor_test.dart | 33 ++++++++++++++- .../screenshot_event_processor_test.dart | 41 ++++++++++--------- flutter/test/mocks.dart | 4 +- flutter/test/sentry_flutter_test.dart | 34 ++++----------- 11 files changed, 85 insertions(+), 60 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28b309dbdb..51543538ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Fixes +- Flutter renderer information was removed on dart:io platforms since it didn't add the correct value ([#1723](https://github.com/getsentry/sentry-dart/pull/1723)) - Unsupported types with Expando ([#1690](https://github.com/getsentry/sentry-dart/pull/1690)) ### Features diff --git a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart index b0eaa0fe71..f8003248ec 100644 --- a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart +++ b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart @@ -132,6 +132,8 @@ class FlutterEnricherEventProcessor implements EventProcessor { // ignore: deprecated_member_use final hasRenderView = _widgetsBinding?.renderViewElement != null; + final renderer = _options.rendererWrapper.getRenderer()?.name; + return { 'has_render_view': hasRenderView.toString(), if (tempDebugBrightnessOverride != null) @@ -149,7 +151,7 @@ class FlutterEnricherEventProcessor implements EventProcessor { // Also always fails in tests. // See https://github.com/flutter/flutter/issues/83919 // 'window_is_visible': _window.viewConfiguration.visible, - 'renderer': _options.rendererWrapper.getRenderer().name, + if (renderer != null) 'renderer': renderer, }; } diff --git a/flutter/lib/src/event_processor/screenshot_event_processor.dart b/flutter/lib/src/event_processor/screenshot_event_processor.dart index bb1157c1de..263722fdad 100644 --- a/flutter/lib/src/event_processor/screenshot_event_processor.dart +++ b/flutter/lib/src/event_processor/screenshot_event_processor.dart @@ -32,10 +32,13 @@ class ScreenshotEventProcessor implements EventProcessor { } final renderer = _options.rendererWrapper.getRenderer(); - if (renderer != FlutterRenderer.skia && + + if (_options.platformChecker.isWeb && renderer != FlutterRenderer.canvasKit) { - _options.logger(SentryLevel.debug, - 'Cannot take screenshot with ${_options.rendererWrapper.getRenderer().name} renderer.'); + _options.logger( + SentryLevel.debug, + 'Cannot take screenshot with ${renderer?.name} renderer.', + ); return event; } diff --git a/flutter/lib/src/renderer/html_renderer.dart b/flutter/lib/src/renderer/html_renderer.dart index b768a14c09..de41f5e77a 100644 --- a/flutter/lib/src/renderer/html_renderer.dart +++ b/flutter/lib/src/renderer/html_renderer.dart @@ -2,7 +2,7 @@ import 'dart:js' as js; import 'renderer.dart'; -FlutterRenderer getRenderer() { +FlutterRenderer? getRenderer() { return isCanvasKitRenderer ? FlutterRenderer.canvasKit : FlutterRenderer.html; } diff --git a/flutter/lib/src/renderer/io_renderer.dart b/flutter/lib/src/renderer/io_renderer.dart index 961feb7a1f..77322a4e08 100644 --- a/flutter/lib/src/renderer/io_renderer.dart +++ b/flutter/lib/src/renderer/io_renderer.dart @@ -1,5 +1,3 @@ import 'renderer.dart'; -FlutterRenderer getRenderer() { - return FlutterRenderer.skia; -} +FlutterRenderer? getRenderer() => null; diff --git a/flutter/lib/src/renderer/renderer.dart b/flutter/lib/src/renderer/renderer.dart index b1b9c2dd69..3e41eced70 100644 --- a/flutter/lib/src/renderer/renderer.dart +++ b/flutter/lib/src/renderer/renderer.dart @@ -6,14 +6,22 @@ import 'unknown_renderer.dart' @internal class RendererWrapper { - FlutterRenderer getRenderer() { + FlutterRenderer? getRenderer() { return implementation.getRenderer(); } } enum FlutterRenderer { + /// https://skia.org/ skia, + + /// https://docs.flutter.dev/perf/impeller + impeller, + + /// https://docs.flutter.dev/platform-integration/web/renderers canvasKit, + + /// https://docs.flutter.dev/platform-integration/web/renderers html, unknown, } diff --git a/flutter/lib/src/sentry_flutter.dart b/flutter/lib/src/sentry_flutter.dart index d1fd8ef1c2..cef52ee564 100644 --- a/flutter/lib/src/sentry_flutter.dart +++ b/flutter/lib/src/sentry_flutter.dart @@ -167,8 +167,7 @@ mixin SentryFlutter { integrations.add(LoadImageListIntegration(channel)); } final renderer = options.rendererWrapper.getRenderer(); - if (renderer == FlutterRenderer.skia || - renderer == FlutterRenderer.canvasKit) { + if (!platformChecker.isWeb || renderer == FlutterRenderer.canvasKit) { integrations.add(ScreenshotIntegration()); } diff --git a/flutter/test/event_processor/flutter_enricher_event_processor_test.dart b/flutter/test/event_processor/flutter_enricher_event_processor_test.dart index 4e748b2934..6b95793ad7 100644 --- a/flutter/test/event_processor/flutter_enricher_event_processor_test.dart +++ b/flutter/test/event_processor/flutter_enricher_event_processor_test.dart @@ -22,7 +22,38 @@ void main() { fixture = Fixture(); }); - testWidgets('flutter context', (WidgetTester tester) async { + testWidgets('flutter context on dart:io', (WidgetTester tester) async { + if (kIsWeb) { + // widget tests don't support onPlatform config + // https://pub.dev/packages/test#platform-specific-configuration + return; + } + // These two values need to be changed inside the test, + // otherwise the Flutter test framework complains that these + // values are changed outside of a test. + debugBrightnessOverride = Brightness.dark; + debugDefaultTargetPlatformOverride = TargetPlatform.android; + final enricher = fixture.getSut( + binding: () => tester.binding, + ); + + final event = await enricher.apply(SentryEvent()); + + debugBrightnessOverride = null; + debugDefaultTargetPlatformOverride = null; + + final flutterContext = event?.contexts['flutter_context']; + expect(flutterContext, isNotNull); + expect(flutterContext, isA>()); + }, skip: !kIsWeb); + + testWidgets('flutter context on web', (WidgetTester tester) async { + if (!kIsWeb) { + // widget tests don't support onPlatform config + // https://pub.dev/packages/test#platform-specific-configuration + return; + } + // These two values need to be changed inside the test, // otherwise the Flutter test framework complains that these // values are changed outside of a test. diff --git a/flutter/test/event_processor/screenshot_event_processor_test.dart b/flutter/test/event_processor/screenshot_event_processor_test.dart index da063e776c..e0ed2eb182 100644 --- a/flutter/test/event_processor/screenshot_event_processor_test.dart +++ b/flutter/test/event_processor/screenshot_event_processor_test.dart @@ -19,11 +19,15 @@ void main() { }); Future _addScreenshotAttachment( - WidgetTester tester, FlutterRenderer renderer, bool added, - {int? expectedMaxWidthOrHeight}) async { + WidgetTester tester, + FlutterRenderer? renderer, { + required bool isWeb, + required bool added, + int? expectedMaxWidthOrHeight, + }) async { // Run with real async https://stackoverflow.com/a/54021863 await tester.runAsync(() async { - final sut = fixture.getSut(renderer); + final sut = fixture.getSut(renderer, isWeb); await tester.pumpWidget(SentryScreenshotWidget( child: Text('Catching Pokémon is a snap!', @@ -48,55 +52,54 @@ void main() { }); } - testWidgets('adds screenshot attachment with skia renderer', (tester) async { - await _addScreenshotAttachment(tester, FlutterRenderer.skia, true); + testWidgets('adds screenshot attachment dart:io', (tester) async { + await _addScreenshotAttachment(tester, null, added: true, isWeb: false); }); testWidgets('adds screenshot attachment with canvasKit renderer', (tester) async { - await _addScreenshotAttachment(tester, FlutterRenderer.canvasKit, true); + await _addScreenshotAttachment(tester, FlutterRenderer.canvasKit, + added: true, isWeb: true); }); testWidgets('does not add screenshot attachment with html renderer', (tester) async { - await _addScreenshotAttachment(tester, FlutterRenderer.html, false); - }); - - testWidgets('does not add screenshot attachment with unknown renderer', - (tester) async { - await _addScreenshotAttachment(tester, FlutterRenderer.unknown, false); + await _addScreenshotAttachment(tester, FlutterRenderer.html, + added: false, isWeb: true); }); testWidgets('does add screenshot in correct resolution for low', (tester) async { final height = SentryScreenshotQuality.low.targetResolution()!; fixture.options.screenshotQuality = SentryScreenshotQuality.low; - await _addScreenshotAttachment(tester, FlutterRenderer.skia, true, - expectedMaxWidthOrHeight: height); + await _addScreenshotAttachment(tester, null, + added: true, isWeb: false, expectedMaxWidthOrHeight: height); }); testWidgets('does add screenshot in correct resolution for medium', (tester) async { final height = SentryScreenshotQuality.medium.targetResolution()!; fixture.options.screenshotQuality = SentryScreenshotQuality.medium; - await _addScreenshotAttachment(tester, FlutterRenderer.skia, true, - expectedMaxWidthOrHeight: height); + await _addScreenshotAttachment(tester, null, + added: true, isWeb: false, expectedMaxWidthOrHeight: height); }); testWidgets('does add screenshot in correct resolution for high', (tester) async { final widthOrHeight = SentryScreenshotQuality.high.targetResolution()!; fixture.options.screenshotQuality = SentryScreenshotQuality.high; - await _addScreenshotAttachment(tester, FlutterRenderer.skia, true, - expectedMaxWidthOrHeight: widthOrHeight); + await _addScreenshotAttachment(tester, null, + added: true, isWeb: false, expectedMaxWidthOrHeight: widthOrHeight); }); } class Fixture { SentryFlutterOptions options = SentryFlutterOptions(dsn: fakeDsn); - ScreenshotEventProcessor getSut(FlutterRenderer flutterRenderer) { + ScreenshotEventProcessor getSut( + FlutterRenderer? flutterRenderer, bool isWeb) { options.rendererWrapper = MockRendererWrapper(flutterRenderer); + options.platformChecker = MockPlatformChecker(isWebValue: isWeb); return ScreenshotEventProcessor(options); } } diff --git a/flutter/test/mocks.dart b/flutter/test/mocks.dart index fe032c9271..b2e01788c1 100644 --- a/flutter/test/mocks.dart +++ b/flutter/test/mocks.dart @@ -396,10 +396,10 @@ class MockNativeChannel implements SentryNativeBinding { class MockRendererWrapper implements RendererWrapper { MockRendererWrapper(this._renderer); - final FlutterRenderer _renderer; + final FlutterRenderer? _renderer; @override - FlutterRenderer getRenderer() { + FlutterRenderer? getRenderer() { return _renderer; } } diff --git a/flutter/test/sentry_flutter_test.dart b/flutter/test/sentry_flutter_test.dart index ef8c848348..87e4f46e84 100644 --- a/flutter/test/sentry_flutter_test.dart +++ b/flutter/test/sentry_flutter_test.dart @@ -495,7 +495,7 @@ void main() { await Sentry.close(); }); - test('installed with skia renderer', () async { + test('installed on io platforms', () async { List integrations = []; await SentryFlutter.init( @@ -505,7 +505,8 @@ void main() { integrations = options.integrations; }, appRunner: appRunner, - platformChecker: getPlatformChecker(platform: MockPlatform.iOs()), + platformChecker: + getPlatformChecker(platform: MockPlatform.iOs(), isWeb: false), rendererWrapper: MockRendererWrapper(FlutterRenderer.skia), ); @@ -528,7 +529,8 @@ void main() { integrations = options.integrations; }, appRunner: appRunner, - platformChecker: getPlatformChecker(platform: MockPlatform.iOs()), + platformChecker: + getPlatformChecker(platform: MockPlatform.iOs(), isWeb: true), rendererWrapper: MockRendererWrapper(FlutterRenderer.canvasKit), ); @@ -551,7 +553,8 @@ void main() { integrations = options.integrations; }, appRunner: appRunner, - platformChecker: getPlatformChecker(platform: MockPlatform.iOs()), + platformChecker: + getPlatformChecker(platform: MockPlatform.iOs(), isWeb: true), rendererWrapper: MockRendererWrapper(FlutterRenderer.html), ); @@ -563,29 +566,6 @@ void main() { await Sentry.close(); }, testOn: 'vm'); - - test('not installed with unknown renderer', () async { - List integrations = []; - - await SentryFlutter.init( - (options) async { - options.dsn = fakeDsn; - options.automatedTestMode = true; - integrations = options.integrations; - }, - appRunner: appRunner, - platformChecker: getPlatformChecker(platform: MockPlatform.iOs()), - rendererWrapper: MockRendererWrapper(FlutterRenderer.unknown), - ); - - expect( - integrations - .map((e) => e.runtimeType) - .contains(ScreenshotIntegration), - false); - - await Sentry.close(); - }, testOn: 'vm'); }); group('initial values', () { From 051e97a45b67f5c431e8c540585c1786c42670f9 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 15 Nov 2023 10:25:20 +0000 Subject: [PATCH 069/166] feat: drift apm (#1709) * draft impl * improve code * Add open span * Refactor to extend lazy database * Update * SentryTransactionExecutor * Implement tracing batch and transactions * Update tests * update changelog * Formatting * Update workflows * Update deps * Fix analyze issues * Format * Add example * Update descriptions * Fix deps * Update run commands * Update workflow * Update example * Update workflow * Format * Fix dart analyze * Try changing deps * Add to craft * Change to flutter test * Revert flutter test mock * change dir manually * download and extract sqlite.dll for windows * Try downloading sqlite3 * set up dart * fix path to file * use pub get * Use flutter pub get * fix * skip windows test * fix analyze * fix drift.yml * format * Remove redundant test * Remove debug print * update trace origin * Improvements * Improvements * Add to flutter example --- .craft.yml | 3 + .github/workflows/dart.yml | 1 + .github/workflows/dio.yml | 1 + .github/workflows/drift.yml | 114 ++ .github/workflows/e2e_dart.yml | 1 + .github/workflows/file.yml | 1 + .github/workflows/flutter.yml | 1 + .github/workflows/logging.yml | 1 + .github/workflows/min_version_test.yml | 1 + .github/workflows/sqflite.yml | 1 + .gitignore | 1 + CHANGELOG.md | 1 + dart/lib/src/sentry_trace_origins.dart | 3 + drift/.gitignore | 14 + drift/CHANGELOG.md | 1596 +++++++++++++++++ drift/LICENSE | 21 + drift/README.md | 73 + drift/analysis_options.yaml | 34 + drift/dartdoc_options.yaml | 3 + drift/example/database.dart | 21 + drift/example/database.g.dart | 269 +++ drift/example/example.dart | 44 + drift/lib/sentry_drift.dart | 3 + drift/lib/src/sentry_query_executor.dart | 179 ++ drift/lib/src/sentry_span_helper.dart | 155 ++ .../lib/src/sentry_transaction_executor.dart | 155 ++ drift/pubspec.yaml | 28 + drift/pubspec_overrides.yaml | 3 + drift/test/mocks/mocks.dart | 10 + drift/test/mocks/mocks.mocks.dart | 769 ++++++++ drift/test/sentry_database_test.dart | 645 +++++++ drift/test/sqlite3.dll | Bin 0 -> 3123712 bytes drift/test/test_database.dart | 18 + drift/test/test_database.g.dart | 269 +++ drift/test/utils/windows_helper.dart | 8 + .../lib/drift/connection/connection.dart | 1 + .../example/lib/drift/connection/native.dart | 7 + .../lib/drift/connection/unsupported.dart | 17 + flutter/example/lib/drift/database.dart | 18 + flutter/example/lib/drift/database.g.dart | 269 +++ flutter/example/lib/main.dart | 38 + flutter/example/pubspec.yaml | 3 + flutter/example/pubspec_overrides.yaml | 2 + flutter/test/mocks.mocks.dart | 159 +- 44 files changed, 4925 insertions(+), 36 deletions(-) create mode 100644 .github/workflows/drift.yml create mode 100644 drift/.gitignore create mode 100644 drift/CHANGELOG.md create mode 100644 drift/LICENSE create mode 100644 drift/README.md create mode 100644 drift/analysis_options.yaml create mode 100644 drift/dartdoc_options.yaml create mode 100644 drift/example/database.dart create mode 100644 drift/example/database.g.dart create mode 100644 drift/example/example.dart create mode 100644 drift/lib/sentry_drift.dart create mode 100644 drift/lib/src/sentry_query_executor.dart create mode 100644 drift/lib/src/sentry_span_helper.dart create mode 100644 drift/lib/src/sentry_transaction_executor.dart create mode 100644 drift/pubspec.yaml create mode 100644 drift/pubspec_overrides.yaml create mode 100644 drift/test/mocks/mocks.dart create mode 100644 drift/test/mocks/mocks.mocks.dart create mode 100644 drift/test/sentry_database_test.dart create mode 100644 drift/test/sqlite3.dll create mode 100644 drift/test/test_database.dart create mode 100644 drift/test/test_database.g.dart create mode 100644 drift/test/utils/windows_helper.dart create mode 100644 flutter/example/lib/drift/connection/connection.dart create mode 100644 flutter/example/lib/drift/connection/native.dart create mode 100644 flutter/example/lib/drift/connection/unsupported.dart create mode 100644 flutter/example/lib/drift/database.dart create mode 100644 flutter/example/lib/drift/database.g.dart diff --git a/.craft.yml b/.craft.yml index 94d538b336..b456b09aab 100644 --- a/.craft.yml +++ b/.craft.yml @@ -11,6 +11,7 @@ targets: dio: file: sqflite: + drift: - name: github - name: registry sdks: @@ -20,3 +21,5 @@ targets: pub:sentry_dio: pub:sentry_file: pub:sentry_sqflite: + # This needs to be published on pub.dev first before uncommenting + # pub:sentry_drift: diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index cca626a0e4..20d028f0d9 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -11,6 +11,7 @@ on: - "dio/**" - "file/**" - "sqflite/**" + - "drift/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index 05e21b4fad..801138c407 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -11,6 +11,7 @@ on: - "flutter/**" - "file/**" - "sqflite/**" + - "drift/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/drift.yml b/.github/workflows/drift.yml new file mode 100644 index 0000000000..3f2285bb7c --- /dev/null +++ b/.github/workflows/drift.yml @@ -0,0 +1,114 @@ +name: sentry-drift +on: + push: + branches: + - main + - release/** + pull_request: + paths-ignore: + - "**/*.md" + - "logging/**" + - "flutter/**" + - "dio/**" + - "file/**" + - "sqflite/**" + +jobs: + cancel-previous-workflow: + runs-on: ubuntu-latest + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + with: + access_token: ${{ github.token }} + + build: + name: ${{ matrix.target }} | ${{ matrix.os }} | ${{ matrix.sdk }} + runs-on: ${{ matrix.os }} + timeout-minutes: 30 + defaults: + run: + shell: bash + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + target: ["ios", "android", "macos", "linux", "windows"] + sdk: ["stable", "beta"] + exclude: + - os: ubuntu-latest + target: ios + - os: ubuntu-latest + target: macos + - os: ubuntu-latest + target: windows + - os: windows-latest + target: ios + - os: windows-latest + target: android + - os: windows-latest + target: macos + - os: windows-latest + target: linux + # macos-latest is taking hours due to limited resources + - os: macos-latest + target: android + - os: macos-latest + target: linux + - os: macos-latest + target: windows + # Bad CPU type in executable + - os: macos-latest + sdk: beta + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-java@v3 + if: ${{ matrix.target == 'android' }} + with: + java-version: "11" + distribution: "adopt" + + # Install required dependencies for Flutter on Linux on Ubuntu + - name: "Setup Linux" + run: | + sudo apt update + sudo apt install -y cmake dbus libblkid-dev libgtk-3-dev liblzma-dev ninja-build pkg-config xvfb + sudo apt install -y network-manager upower + if: matrix.os == 'ubuntu-latest' && matrix.target == 'linux' + + - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + with: + channel: ${{ matrix.sdk }} + + - run: flutter upgrade + + - name: Pub Get + run: | + cd drift + flutter pub get + + - name: Test VM with coverage + run: | + cd drift + flutter test --coverage --test-randomize-ordering-seed=random + + - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 + if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' + with: + name: sentry_drift + file: ./drift/coverage/lcov.info + functionalities: "search" # remove after https://github.com/codecov/codecov-action/issues/600 + + - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 + if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' + with: + path: "./drift/coverage/lcov.info" + min_coverage: 80 + + analyze: + uses: ./.github/workflows/analyze.yml + with: + package: drift + sdk: flutter \ No newline at end of file diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index 08493f67b3..62827e69c3 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -12,6 +12,7 @@ on: - "flutter/**" - "file/**" - "sqflite/**" + - "drift/**" env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index b0a6d5b728..a4e17af787 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -11,6 +11,7 @@ on: - "flutter/**" - "dio/**" - "sqflite/**" + - "drift/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 834ce13a1f..d81896825e 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -11,6 +11,7 @@ on: - "dio/**" - "file/**" - "sqflite/**" + - "drift/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index 8be3df1b95..3696428cd8 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -11,6 +11,7 @@ on: - "flutter/**" - "file/**" - "sqflite/**" + - "drift/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index 23078eb1b4..8499838d41 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -9,6 +9,7 @@ on: - "**/*.md" - "file/**" - "sqflite/**" + - "drift/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 65e4c3f7a8..b1a1858756 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -11,6 +11,7 @@ on: - "flutter/**" - "dio/**" - "file/**" + - "drift/**" jobs: cancel-previous-workflow: diff --git a/.gitignore b/.gitignore index 558e422972..55f9d96c39 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ dio/coverage/* file/coverage/* flutter/coverage/* sqflite/coverage/* +drift/coverage/* pubspec.lock Podfile.lock diff --git a/CHANGELOG.md b/CHANGELOG.md index 51543538ed..7fe44ecf20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ ### Features +- Add APM integration for Drift ([#1709](https://github.com/getsentry/sentry-dart/pull/1709)) - StackTraces in `PlatformException.message` will get nicely formatted too when present ([#1716](https://github.com/getsentry/sentry-dart/pull/1716)) - Breadcrumbs for database operations ([#1656](https://github.com/getsentry/sentry-dart/pull/1656)) - Add `attachScreenshotOnlyWhenResumed` to options ([#1700](https://github.com/getsentry/sentry-dart/pull/1700)) diff --git a/dart/lib/src/sentry_trace_origins.dart b/dart/lib/src/sentry_trace_origins.dart index e3fd4dbafc..8910292b74 100644 --- a/dart/lib/src/sentry_trace_origins.dart +++ b/dart/lib/src/sentry_trace_origins.dart @@ -18,4 +18,7 @@ class SentryTraceOrigins { 'auto.db.sqflite.database_executor'; static const autoDbSqfliteDatabaseFactory = 'auto.db.sqflite.database_factory'; + static const autoDbDriftQueryExecutor = 'auto.db.drift.query.executor'; + static const autoDbDriftTransactionExecutor = + 'auto.db.drift.transaction.executor'; } diff --git a/drift/.gitignore b/drift/.gitignore new file mode 100644 index 0000000000..ba521d5a39 --- /dev/null +++ b/drift/.gitignore @@ -0,0 +1,14 @@ +# Omit committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ diff --git a/drift/CHANGELOG.md b/drift/CHANGELOG.md new file mode 100644 index 0000000000..c640f46f6b --- /dev/null +++ b/drift/CHANGELOG.md @@ -0,0 +1,1596 @@ +# Changelog + +## 7.12.0 + +### Enhancements + +- Log warning if both tracesSampleRate and tracesSampler are set ([#1701](https://github.com/getsentry/sentry-dart/pull/1701)) +- Better Flutter framework stack traces - we now collect Flutter framework debug symbols for iOS, macOS and Android automatically on the Sentry server ([#1673](https://github.com/getsentry/sentry-dart/pull/1673)) + +### Features + +- Initial (alpha) support for profiling on iOS and macOS ([#1611](https://github.com/getsentry/sentry-dart/pull/1611)) + +## 7.11.0 + +### Fixes + +- Session: missing mechanism.handled is considered crash ([#3353](https://github.com/getsentry/sentry-cocoa/pull/3353)) + +### Features + +- Breadcrumbs for file I/O operations ([#1649](https://github.com/getsentry/sentry-dart/pull/1649)) + +### Dependencies + +- Enable compatibility with uuid v4 ([#1647](https://github.com/getsentry/sentry-dart/pull/1647)) +- Bump Android SDK from v6.29.0 to v6.32.0 ([#1660](https://github.com/getsentry/sentry-dart/pull/1660), [#1676](https://github.com/getsentry/sentry-dart/pull/1676), [#1688](https://github.com/getsentry/sentry-dart/pull/1688)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6320) + - [diff](https://github.com/getsentry/sentry-java/compare/6.29.0...6.32.0) +- Bump Cocoa SDK from v8.11.0 to v8.14.2 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650), [#1655](https://github.com/getsentry/sentry-dart/pull/1655), [#1677](https://github.com/getsentry/sentry-dart/pull/1677), [#1691](https://github.com/getsentry/sentry-dart/pull/1691)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8142) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.14.2) + +## 7.10.1 + +### Enhancements + +- Add Sampling Decision to Trace Envelope Header ([#1639](https://github.com/getsentry/sentry-dart/pull/1639)) +- Add http.request.method attribute to http spans data ([#1633](https://github.com/getsentry/sentry-dart/pull/1633)) +- Add db.system and db.name attributes to db spans data ([#1629](https://github.com/getsentry/sentry-dart/pull/1629)) +- Log SDK errors to the console if the log level is `fatal` even if `debug` is disabled ([#1635](https://github.com/getsentry/sentry-dart/pull/1635)) + +### Features + +- Tracing without performance ([#1621](https://github.com/getsentry/sentry-dart/pull/1621)) + +### Fixes + +- Normalize data properties of `SentryUser` and `Breadcrumb` before sending over method channel ([#1591](https://github.com/getsentry/sentry-dart/pull/1591)) +- Fixing memory leak issue in SentryFlutterPlugin (Android Plugin) ([#1588](https://github.com/getsentry/sentry-dart/pull/1588)) +- Discard empty stack frames ([#1625](https://github.com/getsentry/sentry-dart/pull/1625)) +- Disable scope sync for cloned scopes ([#1628](https://github.com/getsentry/sentry-dart/pull/1628)) + +### Dependencies + +- Bump Android SDK from v6.25.2 to v6.29.0 ([#1586](https://github.com/getsentry/sentry-dart/pull/1586), [#1630](https://github.com/getsentry/sentry-dart/pull/1630)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6290) + - [diff](https://github.com/getsentry/sentry-java/compare/6.25.2...6.29.0) +- Bump Cocoa SDK from v8.9.1 to v8.11.0 ([#1584](https://github.com/getsentry/sentry-dart/pull/1584), [#1606](https://github.com/getsentry/sentry-dart/pull/1606), [#1626](https://github.com/getsentry/sentry-dart/pull/1626)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8110) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.9.1...8.11.0) + +## 7.9.0 + +### Features + +- Send trace origin ([#1534](https://github.com/getsentry/sentry-dart/pull/1534)) + +[Trace origin](https://develop.sentry.dev/sdk/performance/trace-origin/) indicates what created a trace or a span. Not all transactions and spans contain enough information to tell whether the user or what precisely in the SDK created it. Origin solves this problem. The SDK now sends origin for transactions and spans. + +- Add `appHangTimeoutInterval` to `SentryFlutterOptions` ([#1568](https://github.com/getsentry/sentry-dart/pull/1568)) +- DioEventProcessor: Append http response body ([#1557](https://github.com/getsentry/sentry-dart/pull/1557)) + - This is opt-in and depends on `maxResponseBodySize` + - Only for `dio` package + +### Dependencies + +- Bump Cocoa SDK from v8.8.0 to v8.9.1 ([#1553](https://github.com/getsentry/sentry-dart/pull/1553)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#891) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.8.0...8.9.1) +- Bump Android SDK from v6.23.0 to v6.25.2 ([#1554](https://github.com/getsentry/sentry-dart/pull/1554)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6252) + - [diff](https://github.com/getsentry/sentry-java/compare/6.23.0...6.25.2) + +## 7.8.0 + +### Enhancements + +- Add `apiTarget` field to `SentryRequest` and `data` field to `SentryResponse` ([#1517](https://github.com/getsentry/sentry-dart/pull/1517)) + +### Dependencies + +- Bump Android SDK from v6.21.0 to v6.23.0 ([#1512](https://github.com/getsentry/sentry-dart/pull/1512), [#1520](https://github.com/getsentry/sentry-dart/pull/1520)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6230) + - [diff](https://github.com/getsentry/sentry-java/compare/6.21.0...6.23.0) +- Bump Cocoa SDK from v8.7.3 to v8.8.0 ([#1521](https://github.com/getsentry/sentry-dart/pull/1521)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#880) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.7.3...8.8.0) + +## 7.7.0 + +### Fixes + +- Enums use its name instead of non exhaustive switches ([##1506](https://github.com/getsentry/sentry-dart/pull/#1506)) + +### Enhancements + +- Add http fields to `span.data` ([#1497](https://github.com/getsentry/sentry-dart/pull/1497)) + - Set `http.response.status_code` + - Set `http.response_content_length` +- Improve `SentryException#value`, remove stringified stack trace ([##1470](https://github.com/getsentry/sentry-dart/pull/#1470)) + +### Dependencies + +- Bump Android SDK from v6.20.0 to v6.21.0 ([#1500](https://github.com/getsentry/sentry-dart/pull/1500)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6210) + - [diff](https://github.com/getsentry/sentry-java/compare/6.20.0...6.21.0) + +## 7.6.3 + +### Fixes + +- Check if the Native SDKs are enabled when using `autoInitializeNativeSdk=false` ([#1489](https://github.com/getsentry/sentry-dart/pull/1489)) +- Align http method to span convention ([#1477](https://github.com/getsentry/sentry-dart/pull/1477)) +- Wrapped methods return a `Future` instead of executing right away ([#1476](https://github.com/getsentry/sentry-dart/pull/1476)) + - Relates to ([#1462](https://github.com/getsentry/sentry-dart/pull/1462)) +- Fix readTimeoutMillis wrongly configures connectionTimeoutMillis instead of the correct field ([#1485](https://github.com/getsentry/sentry-dart/pull/1485)) + +### Dependencies + +- Bump Android SDK from v6.19.0 to v6.20.0 ([#1466](https://github.com/getsentry/sentry-dart/pull/1466), [#1491](https://github.com/getsentry/sentry-dart/pull/1491)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6200) + - [diff](https://github.com/getsentry/sentry-java/compare/6.19.0...6.20.0) +- Bump Cocoa SDK from v8.7.2 to v8.7.3 ([#1487](https://github.com/getsentry/sentry-dart/pull/1487)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#873) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.7.2...8.7.3) + +## 7.6.2 + +### Enhancements + +- `SentryAssetBundle` returns Future by default ([#1462](https://github.com/getsentry/sentry-dart/pull/1462)) + +### Features + +- Support `http` >= 1.0.0 ([#1475](https://github.com/getsentry/sentry-dart/pull/1475)) + +### Dependencies + +- Bump Android SDK from v6.18.1 to v6.19.0 ([#1455](https://github.com/getsentry/sentry-dart/pull/1455)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6190) + - [diff](https://github.com/getsentry/sentry-java/compare/6.18.1...6.19.0) +- Bump Cocoa SDK from v8.7.1 to v8.7.2 ([#1458](https://github.com/getsentry/sentry-dart/pull/1458)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#872) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.7.1...8.7.2) + +## 7.6.1 + +### Features + +- Add `sent_at` to envelope header ([#1428](https://github.com/getsentry/sentry-dart/pull/1428)) + +### Fixes + +- Fix battery level conversion for iOS 16.4 ([#1433](https://github.com/getsentry/sentry-dart/pull/1433)) +- Adds a namespace for compatibility with AGP 8.0. ([#1427](https://github.com/getsentry/sentry-dart/pull/1427)) +- Avoid dependency conflict with package_info_plus v4 ([#1440](https://github.com/getsentry/sentry-dart/pull/1440)) + +### Breaking Changes + +- Android `minSdkVersion` is now 19 (Flutter already defines 19-20 as best effort) +- Deprecate `extra` in favor of `contexts` ([#1435](https://github.com/getsentry/sentry-dart/pull/1435)) + +### Dependencies + +- Bump Cocoa SDK from v8.5.0 to v8.7.1 ([#1449](https://github.com/getsentry/sentry-dart/pull/1449)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#871) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.5.0...8.7.1) + +## 7.5.2 + +### Fixes + +- Fix `event.origin` and `event.environment` on unhandled exceptions ([#1419](https://github.com/getsentry/sentry-dart/pull/1419)) +- Fix authority redaction ([#1424](https://github.com/getsentry/sentry-dart/pull/1424)) + +### Dependencies + +- Bump Android SDK from v6.17.0 to v6.18.1 ([#1415](https://github.com/getsentry/sentry-dart/pull/1415)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6181) + - [diff](https://github.com/getsentry/sentry-java/compare/6.17.0...6.18.1) + +## 7.5.1 + +### Fixes + +- Fallback Uri parsing to `unknown` if its invalid ([#1414](https://github.com/getsentry/sentry-dart/pull/1414)) + +## 7.5.0 + +### Features + +- Add `SentryIOOverridesIntegration` that automatically wraps `File` into `SentryFile` ([#1362](https://github.com/getsentry/sentry-dart/pull/1362)) + +```dart +import 'package:sentry_file/sentry_file.dart'; + +// SDK init. options +options.addIntegration(SentryIOOverridesIntegration()); +``` + +- Add `enableTracing` option ([#1395](https://github.com/getsentry/sentry-dart/pull/1395)) + - This change is backwards compatible. The default is `null` meaning existing behaviour remains unchanged (setting either `tracesSampleRate` or `tracesSampler` enables performance). + - If set to `true`, performance is enabled, even if no `tracesSampleRate` or `tracesSampler` have been configured. + - If set to `true`, sampler will use default sample rate of 1.0, if no `tracesSampleRate` is set. + - If set to `false` performance is disabled, regardless of `tracesSampleRate` and `tracesSampler` options. + +```dart +// SDK init. options +options.enableTracing = true; +``` + +- Sync `connectionTimeout` and `readTimeout` to Android ([#1397](https://github.com/getsentry/sentry-dart/pull/1397)) + +```dart +// SDK init. options +options.connectionTimeout = Duration(seconds: 10); +options.readTimeout = Duration(seconds: 10); +``` + +- Set User `name` and `geo` in native plugins ([#1393](https://github.com/getsentry/sentry-dart/pull/1393)) + +```dart +Sentry.configureScope( + (scope) => scope.setUser(SentryUser( + id: '1234', + name: 'Jane Doe', + email: 'jane.doe@example.com', + geo: SentryGeo( + city: 'Vienna', + countryCode: 'AT', + region: 'Austria', + ))), +); +``` + +- Add processor count to device info ([#1402](https://github.com/getsentry/sentry-dart/pull/1402)) +- Add attachments to `Hint` ([#1404](https://github.com/getsentry/sentry-dart/pull/1404)) + +```dart +import 'dart:convert'; + +options.beforeSend = (event, {hint}) { + final text = 'This event should not be sent happen in prod. Investigate.'; + final textAttachment = SentryAttachment.fromIntList( + utf8.encode(text), + 'event_info.txt', + contentType: 'text/plain', + ); + hint?.attachments.add(textAttachment); + return event; +}; +``` + +### Fixes + +- Screenshots and View Hierarchy should only be added to errors ([#1385](https://github.com/getsentry/sentry-dart/pull/1385)) + - View Hierarchy is removed from Web errors since we don't symbolicate minified View Hierarchy yet. +- More improvements related to not awaiting `FutureOr` if it's not a future ([#1385](https://github.com/getsentry/sentry-dart/pull/1385)) +- Do not report only async gap frames for logging calls ([#1398](https://github.com/getsentry/sentry-dart/pull/1398)) + +### Dependencies + +- Bump Cocoa SDK from v8.4.0 to v8.5.0 ([#1394](https://github.com/getsentry/sentry-dart/pull/1394)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#850) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.4.0...8.5.0) + +## 7.4.2 + +### Fixes + +- Fix breadcrumbs not being sent on Android web ([#1378](https://github.com/getsentry/sentry-dart/pull/1378)) + +## 7.4.1 + +### Fixes + +- Fix Dart web builds breaking due to `dart:io` imports when using `SentryIsolate` or `SentryIsolateExtension` ([#1371](https://github.com/getsentry/sentry-dart/pull/1371)) + - When using `SentryIsolate` or `SentryIsolateExtension`, import `sentry_io.dart`. +- Export `SentryBaggage` ([#1377](https://github.com/getsentry/sentry-dart/pull/1377)) +- Remove breadcrumbs from transaction to avoid duplication ([#1366](https://github.com/getsentry/sentry-dart/pull/1366)) + +### Dependencies + +- Bump Cocoa SDK from v8.3.3 to v8.4.0 ([#1379](https://github.com/getsentry/sentry-dart/pull/1379)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#840) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.3.3...8.4.0) +- Bump Android SDK from v6.16.0 to v6.17.0 ([#1374](https://github.com/getsentry/sentry-dart/pull/1374)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6170) + - [diff](https://github.com/getsentry/sentry-java/compare/6.16.0...6.17.0) + +## 7.4.0 + +### Features + +- SentryUserInteractionWidget: add support for PopupMenuButton and PopupMenuItem ([#1361](https://github.com/getsentry/sentry-dart/pull/1361)) + +### Fixes + +- Fix `SentryUserInteractionWidget` throwing when Sentry is not enabled ([#1363](https://github.com/getsentry/sentry-dart/pull/1363)) +- Fix enableAutoNativeBreadcrumbs and enableNativeCrashHandling sync flags ([#1367](https://github.com/getsentry/sentry-dart/pull/1367)) + +## 7.3.0 + +### Features + +- Sanitize sensitive data from URLs (span desc, span data, crumbs, client errors) ([#1327](https://github.com/getsentry/sentry-dart/pull/1327)) + +### Dependencies + +- Bump Cocoa SDK from v8.3.1 to v8.3.3 ([#1350](https://github.com/getsentry/sentry-dart/pull/1350), [#1355](https://github.com/getsentry/sentry-dart/pull/1355)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#833) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.3.1...8.3.3) + +### Fixes + +- Sync missing properties to the Native SDKs ([#1354](https://github.com/getsentry/sentry-dart/pull/1354)) + +## 7.2.0 + +### Features + +- sqflite Support for Flutter ([#1306](https://github.com/getsentry/sentry-dart/pull/1306)) + +### Fixes + +- `DioErrorExtractor` no longer extracts `DioError.stackTrace` which is done via `DioStackTraceExtractor` instead ([#1344](https://github.com/getsentry/sentry-dart/pull/1344)) +- LoadImageListIntegration won't throw bad state if there is no exceptions in the event ([#1347](https://github.com/getsentry/sentry-dart/pull/1347)) + +### Dependencies + +- Bump Android SDK from v6.15.0 to v6.16.0 ([#1342](https://github.com/getsentry/sentry-dart/pull/1342)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6160) + - [diff](https://github.com/getsentry/sentry-java/compare/6.15.0...6.16.0) + +## 7.1.0 + +### Features + +- Exception StackTrace Extractor ([#1335](https://github.com/getsentry/sentry-dart/pull/1335)) + +### Dependencies + +- Bump Cocoa SDK from v8.0.0 to v8.3.1 ([#1331](https://github.com/getsentry/sentry-dart/pull/1331)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#831) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.0.0...8.3.1) + +### Fixes + +- SentryUserInteractionWidget checks if the Elements are mounted before comparing them ([#1339](https://github.com/getsentry/sentry-dart/pull/1339)) + +## 7.0.0 + +### Features + +- Platform Exception Event Processor ([#1297](https://github.com/getsentry/sentry-dart/pull/1297)) +- Support failedRequestTargets for HTTP Client errors ([#1285](https://github.com/getsentry/sentry-dart/pull/1285)) + - Captures errors for the default range `500-599` if `captureFailedRequests` is enabled +- Sentry Isolate Extension ([#1266](https://github.com/getsentry/sentry-dart/pull/1266)) +- Allow sentry user to control resolution of captured Flutter screenshots ([#1288](https://github.com/getsentry/sentry-dart/pull/1288)) +- Support beforeSendTransaction ([#1238](https://github.com/getsentry/sentry-dart/pull/1238)) +- Add In Foreground to App context ([#1260](https://github.com/getsentry/sentry-dart/pull/1260)) +- Error Cause Extractor ([#1198](https://github.com/getsentry/sentry-dart/pull/1198), [#1236](https://github.com/getsentry/sentry-dart/pull/1236)) + - Add `throwable` to `SentryException` +- Dart 3 Support ([#1220](https://github.com/getsentry/sentry-dart/pull/1220)) +- Introduce `Hint` data bag ([#1136](https://github.com/getsentry/sentry-dart/pull/1136)) +- Use `Hint` for screenshots ([#1165](https://github.com/getsentry/sentry-dart/pull/1165)) +- Support custom units for custom measurements ([#1181](https://github.com/getsentry/sentry-dart/pull/1181)) + +### Enhancements + +- Replace `toImage` with `toImageSync` for Flutter >= 3.7 ([1268](https://github.com/getsentry/sentry-dart/pull/1268)) +- Don't await `FutureOr` if it's not a future. This should marginally improve the performance ([#1310](https://github.com/getsentry/sentry-dart/pull/1310)) +- Replace `StackTrace.empty` with `StackTrace.current` ([#1183](https://github.com/getsentry/sentry-dart/pull/1183)) + +### Breaking Changes + +[Dart Migration guide](https://docs.sentry.io/platforms/dart/migration/#migrating-from-sentry-618x-to-sentry-700). + +[Flutter Migration guide](https://docs.sentry.io/platforms/flutter/migration/#migrating-from-sentry_flutter-618x-to-sentry-700). + +- Enable enableNdkScopeSync by default ([#1276](https://github.com/getsentry/sentry-dart/pull/1276)) +- Update `sentry_dio` to dio v5 ([#1282](https://github.com/getsentry/sentry-dart/pull/1282)) +- Remove deprecated fields ([#1227](https://github.com/getsentry/sentry-dart/pull/1227)) + - Remove deprecated fields from the `Scope` class. + - `user(SentryUser? user)`, using the `setUser(SentryUser? user)` instead. + - `attachements`, using the `attachments` instead. + - Remove deprecated field from the `SentryFlutterOptions` class. + - `anrTimeoutIntervalMillis`, using the `anrTimeoutInterval` instead. + - `autoSessionTrackingIntervalMillis`, using the `autoSessionTrackingInterval` instead. +- Rename APM tracking feature flags to tracing ([#1222](https://github.com/getsentry/sentry-dart/pull/1222)) + - Rename + - enableAutoPerformanceTracking to enableAutoPerformanceTracing + - enableOutOfMemoryTracking to enableWatchdogTerminationTracking +- Enable APM features by default ([#1217](https://github.com/getsentry/sentry-dart/pull/1217)) + - Enable by default + - captureFailedRequests + - enableStructuredDataTracing + - enableUserInteractionTracing +- Mark transaction as internal_error in case of unhandled errors ([#1218](https://github.com/getsentry/sentry-dart/pull/1218)) +- Removed various deprecated fields ([#1036](https://github.com/getsentry/sentry-dart/pull/1036)): + - Removed the following fields from the `device` context + - language + - timezone + - screenResolution + - theme + - Removed isolate name from Dart context. It's now reported via the threads interface. It can be enabled via `options.attachThreads` +- Use `sentryClientName` instead of `sdk.identifier` ([#1135](https://github.com/getsentry/sentry-dart/pull/1135)) +- Refactor `BindingUtils` to `BindingWrapper` to enable the use of custom bindings ([#1184](https://github.com/getsentry/sentry-dart/pull/1184)) +- Bump Flutter min to 3.0.0 and Dart to 2.17.0 ([#1180](https://github.com/getsentry/sentry-dart/pull/1180)) + +### Dependencies + +- Bump Cocoa SDK from 7.31.5 to 8.0.0 + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#800) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.31.5...8.0.0) + +### Fixes + +- View hierarchy reads size from RenderBox only ([#1258](https://github.com/getsentry/sentry-dart/pull/1258)) +- Try to avoid ConcurrentModificationError by not using a Future.forEach ([#1259](https://github.com/getsentry/sentry-dart/pull/1259)) +- isWeb check for WASM ([#1249](https://github.com/getsentry/sentry-dart/pull/1249)) +- Don't suppress error logs ([#1228](https://github.com/getsentry/sentry-dart/pull/1228)) +- Fix: Remove `SentryOptions` related parameters from classes which also take `Hub` as a parameter (#816) + +## 7.0.0-rc.2 + +### Features + +- Platform Exception Event Processor ([#1297](https://github.com/getsentry/sentry-dart/pull/1297)) +- Support failedRequestTargets for HTTP Client errors ([#1285](https://github.com/getsentry/sentry-dart/pull/1285)) + - Captures errors for the default range `500-599` if `captureFailedRequests` is enabled +- Sentry Isolate Extension ([#1266](https://github.com/getsentry/sentry-dart/pull/1266)) +- Allow sentry user to control resolution of captured Flutter screenshots ([#1288](https://github.com/getsentry/sentry-dart/pull/1288)) + +### Enhancements + +- Replace `toImage` with `toImageSync` for Flutter >= 3.7 ([1268](https://github.com/getsentry/sentry-dart/pull/1268)) +- Don't await `FutureOr` if it's not a future. This should marginally improve the performance ([#1310](https://github.com/getsentry/sentry-dart/pull/1310)) + +## 6.22.0 + +### Features + +- Add proguard_uui property to SentryFlutterOptions to set proguard information at runtime ([#1312](https://github.com/getsentry/sentry-dart/pull/1312)) + +### Fixes + +- Change podspec `EXCLUDED_ARCHS` value to allow podfiles to add more excluded architetures ([#1303](https://github.com/getsentry/sentry-dart/pull/1303)) + +### Dependencies + +- Bump Android SDK from v6.13.1 to v6.15.0 ([#1287](https://github.com/getsentry/sentry-dart/pull/1287), [#1311](https://github.com/getsentry/sentry-dart/pull/1311)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6150) + - [diff](https://github.com/getsentry/sentry-java/compare/6.13.1...6.15.0) + +## 7.0.0-rc.1 + +### Breaking Changes + +- Enable enableNdkScopeSync by default ([#1276](https://github.com/getsentry/sentry-dart/pull/1276)) +- Update `sentry_dio` to dio v5 ([#1282](https://github.com/getsentry/sentry-dart/pull/1282)) + +### Dependencies + +- Bump Android SDK from v6.13.1 to v6.14.0 ([#1287](https://github.com/getsentry/sentry-dart/pull/1287)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6140) + - [diff](https://github.com/getsentry/sentry-java/compare/6.13.1...6.14.0) + +## 6.21.0 + +### Features + +- Implement `loadStructuredBinaryData` from updated AssetBundle ([#1272](https://github.com/getsentry/sentry-dart/pull/1272)) + +### Dependencies + +- Bump Android SDK from v6.13.0 to v6.13.1 ([#1273](https://github.com/getsentry/sentry-dart/pull/1273)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6131) + - [diff](https://github.com/getsentry/sentry-java/compare/6.13.0...6.13.1) + +### Fixes + +- Pass processed Breadcrumb to scope observer ([#1298](https://github.com/getsentry/sentry-dart/pull/1298)) +- Remove duplicated breadcrumbs when syncing with iOS/macOS ([#1283](https://github.com/getsentry/sentry-dart/pull/1283)) + +## 6.20.1 + +### Fixes + +- Set client name with version in Android SDK ([#1274](https://github.com/getsentry/sentry-dart/pull/1274)) + +## 7.0.0-beta.4 + +### Features + +- Support beforeSendTransaction ([#1238](https://github.com/getsentry/sentry-dart/pull/1238)) +- Add In Foreground to App context ([#1260](https://github.com/getsentry/sentry-dart/pull/1260)) + +### Fixes + +- View hierarchy reads size from RenderBox only ([#1258](https://github.com/getsentry/sentry-dart/pull/1258)) +- Try to avoid ConcurrentModificationError by not using a Future.forEach ([#1259](https://github.com/getsentry/sentry-dart/pull/1259)) + +### Dependencies + +- Bump Android SDK from v6.12.1 to v6.13.0 ([#1250](https://github.com/getsentry/sentry-dart/pull/1250)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6130) + - [diff](https://github.com/getsentry/sentry-java/compare/6.12.1...6.13.0) + +## 7.0.0-beta.1 + +### Fixes + +- isWeb check for WASM ([#1249](https://github.com/getsentry/sentry-dart/pull/1249)) + +## 7.0.0-alpha.5 + +### Features + +- Error Cause Extractor ([#1198](https://github.com/getsentry/sentry-dart/pull/1198), [#1236](https://github.com/getsentry/sentry-dart/pull/1236)) + - Add `throwable` to `SentryException` + +### Fixes + +- Don't suppress error logs ([#1228](https://github.com/getsentry/sentry-dart/pull/1228)) +- Fix export for `BindingWrapper` ([#1234](https://github.com/getsentry/sentry-dart/pull/1234)) + +## 7.0.0-alpha.4 + +### Breaking Changes + +- Remove deprecated fields ([#1227](https://github.com/getsentry/sentry-dart/pull/1227)) + - Remove deprecated fields from the `Scope` class. + - `user(SentryUser? user)`, using the `setUser(SentryUser? user)` instead. + - `attachements`, using the `attachments` instead. + - Remove deprecated field from the `SentryFlutterOptions` class. + - `anrTimeoutIntervalMillis`, using the `anrTimeoutInterval` instead. + - `autoSessionTrackingIntervalMillis`, using the `autoSessionTrackingInterval` instead. + +### Dependencies + +- Bump Cocoa SDK from 8.0.0-rc.1 to 8.0.0 + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#800) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.0.0-rc.1...8.0.0) + +## 7.0.0-alpha.3 + +### Breaking Changes + +- Rename APM tracking feature flags to tracing ([#1222](https://github.com/getsentry/sentry-dart/pull/1222)) + - Rename + - enableAutoPerformanceTracking to enableAutoPerformanceTracing + - enableOutOfMemoryTracking to enableWatchdogTerminationTracking + +### Enhancements + +- Migrate to sentry cocoa v8 ([#1197](https://github.com/getsentry/sentry-dart/pull/1197)) + +## 7.0.0-alpha.2 + +### Features + +- Dart 3 Support ([#1220](https://github.com/getsentry/sentry-dart/pull/1220)) + +### Breaking Changes + +- Enable APM features by default ([#1217](https://github.com/getsentry/sentry-dart/pull/1217)) + - Enable by default + - captureFailedRequests + - enableStructuredDataTracing + - enableUserInteractionTracing +- Mark transaction as internal_error in case of unhandled errors ([#1218](https://github.com/getsentry/sentry-dart/pull/1218)) + +## 7.0.0-alpha.1 + +### Features + +- Feat: Introduce `Hint` data bag ([#1136](https://github.com/getsentry/sentry-dart/pull/1136)) +- Feat: Use `Hint` for screenshots ([#1165](https://github.com/getsentry/sentry-dart/pull/1165)) +- Feat: Support custom units for custom measurements ([#1181](https://github.com/getsentry/sentry-dart/pull/1181)) + +### Fixes + +- Fix: Remove `SentryOptions` related parameters from classes which also take `Hub` as a parameter (#816) + +### Enhancements + +- Enha: Replace `StackTrace.empty` with `StackTrace.current` ([#1183](https://github.com/getsentry/sentry-dart/pull/1183)) + +### Breaking Changes + +- Removed various deprecated fields ([#1036](https://github.com/getsentry/sentry-dart/pull/1036)): + - Removed the following fields from the `device` context + - language + - timezone + - screenResolution + - theme + - Removed isolate name from Dart context. It's now reported via the threads interface. It can be enabled via `options.attachThreads` +- Use `sentryClientName` instead of `sdk.identifier` ([#1135](https://github.com/getsentry/sentry-dart/pull/1135)) +- Refactor `BindingUtils` to `BindingWrapper` to enable the use of custom bindings ([#1184](https://github.com/getsentry/sentry-dart/pull/1184)) +- Bump Flutter min to 3.0.0 and Dart to 2.17.0 ([#1180](https://github.com/getsentry/sentry-dart/pull/1180)) + +## 6.19.0 + +### Fixes + +- intl is now more version permissive (>=0.17.0 <1.0.0) ([#1247](https://github.com/getsentry/sentry-dart/pull/1247)) + +### Breaking Changes: + +- sentry_file now requires Dart >= 2.19 ([#1240](https://github.com/getsentry/sentry-dart/pull/1240)) + +## 6.18.3 + +### Fixes + +- Fix Pod target for iOS ([#1237](https://github.com/getsentry/sentry-dart/pull/1237)) + +### Dependencies + +- Bump Android SDK from v6.11.0 to v6.12.1 ([#1225](https://github.com/getsentry/sentry-dart/pull/1225), [#1230](https://github.com/getsentry/sentry-dart/pull/1230)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6121) + - [diff](https://github.com/getsentry/sentry-java/compare/6.11.0...6.12.1) + +## 6.18.2 + +### Fixes + +- enableUserInteractionTracing sometimes finds the wrong widget ([#1212](https://github.com/getsentry/sentry-dart/pull/1212)) +- Only call method channels on native platforms ([#1196](https://github.com/getsentry/sentry-dart/pull/1196)) + +### Dependencies + +- Bump Android SDK from v6.9.2 to v6.11.0 ([#1194](https://github.com/getsentry/sentry-dart/pull/1194), [#1209](https://github.com/getsentry/sentry-dart/pull/1209)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6110) + - [diff](https://github.com/getsentry/sentry-java/compare/6.9.2...6.11.0) +- Bump Cocoa SDK from v7.31.3 to v7.31.5 ([#1190](https://github.com/getsentry/sentry-dart/pull/1190), [#1207](https://github.com/getsentry/sentry-dart/pull/1207)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/8.0.0/CHANGELOG.md#7315) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.31.3...7.31.5) + +## 6.18.1 + +### Fixes + +- Missing slow and frozen frames for Auto transactions ([#1172](https://github.com/getsentry/sentry-dart/pull/1172)) + +### Dependencies + +- Bump Android SDK from v6.9.1 to v6.9.2 ([#1167](https://github.com/getsentry/sentry-dart/pull/1167)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#692) + - [diff](https://github.com/getsentry/sentry-java/compare/6.9.1...6.9.2) + +## 6.18.0 + +### Features + +- Tracing for File IO integration ([#1160](https://github.com/getsentry/sentry-dart/pull/1160)) + +### Dependencies + +- Bump Cocoa SDK from v7.31.2 to v7.31.3 ([#1157](https://github.com/getsentry/sentry-dart/pull/1157)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7313) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.31.2...7.31.3) +- Bump Android SDK from v6.8.0 to v6.9.1 ([#1159](https://github.com/getsentry/sentry-dart/pull/1159)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#691) + - [diff](https://github.com/getsentry/sentry-java/compare/6.8.0...6.9.1) + +## 6.17.0 + +### Fixes + +- Capture Future errors for Flutter Web automatically ([#1152](https://github.com/getsentry/sentry-dart/pull/1152)) + +### Features + +- User Interaction transactions and breadcrumbs ([#1137](https://github.com/getsentry/sentry-dart/pull/1137)) + +## 6.16.1 + +### Fixes + +- Do not attach headers if Span is NoOp ([#1143](https://github.com/getsentry/sentry-dart/pull/1143)) + +### Dependencies + +- Bump Cocoa SDK from v7.31.1 to v7.31.2 ([#1146](https://github.com/getsentry/sentry-dart/pull/1146)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7312) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.31.1...7.31.2) +- Bump Android SDK from v6.7.1 to v6.8.0 ([#1147](https://github.com/getsentry/sentry-dart/pull/1147)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#680) + - [diff](https://github.com/getsentry/sentry-java/compare/6.7.1...6.8.0) + +## 6.16.0 + +### Features + +- Add request context to `HttpException`, `SocketException` and `NetworkImageLoadException` ([#1118](https://github.com/getsentry/sentry-dart/pull/1118)) +- `SocketException` and `FileSystemException` with `OSError`s report the `OSError` as root exception ([#1118](https://github.com/getsentry/sentry-dart/pull/1118)) + +### Fixes + +- VendorId should be a String ([#1112](https://github.com/getsentry/sentry-dart/pull/1112)) +- Disable `enableUserInteractionBreadcrumbs` on Android when `enableAutoNativeBreadcrumbs` is disabled ([#1131](https://github.com/getsentry/sentry-dart/pull/1131)) +- Transaction name is reset after the transaction finishes ([#1125](https://github.com/getsentry/sentry-dart/pull/1125)) + +### Dependencies + +- Bump Cocoa SDK from v7.30.2 to v7.31.1 ([#1132](https://github.com/getsentry/sentry-dart/pull/1132), [#1139](https://github.com/getsentry/sentry-dart/pull/1139)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7311) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.30.2...7.31.1) +- Bump Android SDK from v6.7.0 to v6.7.1 ([#1112](https://github.com/getsentry/sentry-dart/pull/1112)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#671) + - [diff](https://github.com/getsentry/sentry-java/compare/6.7.0...6.7.1) + +## 6.15.1 + +### Dependencies + +- Bump Cocoa SDK from v7.30.1 to v7.30.2 ([#1113](https://github.com/getsentry/sentry-dart/pull/1113)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7302) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.30.1...7.30.2) + +## 6.15.0 + +### Features + +- Feat: Screenshot Attachment ([#1088](https://github.com/getsentry/sentry-dart/pull/1088)) + +### Fixes + +- Merging of integrations and packages ([#1111](https://github.com/getsentry/sentry-dart/pull/1111)) +- Add missing `fragment` for HTTP Client Errors ([#1102](https://github.com/getsentry/sentry-dart/pull/1102)) +- Sync user name and geo for Android ([#1102](https://github.com/getsentry/sentry-dart/pull/1102)) +- Add mechanism to Dio Http Client error ([#1114](https://github.com/getsentry/sentry-dart/pull/1114)) + +### Dependencies + +- Bump Android SDK from v6.6.0 to v6.7.0 ([#1105](https://github.com/getsentry/sentry-dart/pull/1105)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#670) + - [diff](https://github.com/getsentry/sentry-java/compare/6.6.0...6.7.0) +- Bump Cocoa SDK from v7.30.0 to v7.30.1 ([#1104](https://github.com/getsentry/sentry-dart/pull/1104)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7301) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.30.0...7.30.1) + +## 6.14.0 + +### Features + +- Capture response information in `SentryHttpClient` ([#1095](https://github.com/getsentry/sentry-dart/pull/1095)) + +### Changes + +- Remove experimental `SentryResponse` fields: `url`, `body`, `redirected`, `status` ([#1095](https://github.com/getsentry/sentry-dart/pull/1095)) +- `SentryHttpClient` request body capture checks default PII capture setting, same as the DIO integration ([#1095](https://github.com/getsentry/sentry-dart/pull/1095)) + +### Dependencies + +- Bump Android SDK from v6.5.0 to v6.6.0 ([#1090](https://github.com/getsentry/sentry-dart/pull/1090)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#660) + - [diff](https://github.com/getsentry/sentry-java/compare/6.5.0...6.6.0) +- Bump Cocoa SDK from v7.28.0 to v7.30.0 ([#1089](https://github.com/getsentry/sentry-dart/pull/1089), [#1101](https://github.com/getsentry/sentry-dart/pull/1101)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7300) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.28.0...7.30.0) + +## 6.13.1 + +### Fixes + +- Avoid dependency conflict with package_info_plus v3 ([#1084](https://github.com/getsentry/sentry-dart/pull/1084)) + +## 6.13.0 + +### Features + +- Use PlatformDispatcher.onError in Flutter 3.3 ([#1039](https://github.com/getsentry/sentry-dart/pull/1039)) + +### Fixes + +- Bring protocol up to date with latest Sentry protocol ([#1038](https://github.com/getsentry/sentry-dart/pull/1038)) + +### Dependencies + +- Bump Cocoa SDK from v7.27.1 to v7.28.0 ([#1080](https://github.com/getsentry/sentry-dart/pull/1080)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7280) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.27.1...7.28.0) + +## 6.12.2 + +### Fixes + +- Avoid dependency conflict with package_info_plus v2 ([#1068](https://github.com/getsentry/sentry-dart/pull/1068)) + +## 6.12.1 + +### Dependencies + +- Bump Android SDK from v6.4.3 to v6.5.0 ([#1062](https://github.com/getsentry/sentry-dart/pull/1062), [#1064](https://github.com/getsentry/sentry-dart/pull/1064)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#650) + - [diff](https://github.com/getsentry/sentry-java/compare/6.4.3...6.5.0) + +## 6.12.0 + +### Fixes + +- Handle traces sampler exception ([#1040](https://github.com/getsentry/sentry-dart/pull/1040)) +- tracePropagationTargets ignores invalid Regex ([#1043](https://github.com/getsentry/sentry-dart/pull/1043)) +- SentryDevice cast error ([#1059](https://github.com/getsentry/sentry-dart/pull/1059)) + +### Features + +- Added [Flutter renderer](https://docs.flutter.dev/development/platform-integration/web/renderers) information to events ([#1035](https://github.com/getsentry/sentry-dart/pull/1035)) +- Added missing DSN field into the SentryEnvelopeHeader ([#1050](https://github.com/getsentry/sentry-dart/pull/1050)) + +### Dependencies + +- Bump Android SDK from v6.4.2 to v6.4.3 ([#1048](https://github.com/getsentry/sentry-dart/pull/1048)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#643) + - [diff](https://github.com/getsentry/sentry-java/compare/6.4.2...6.4.3) +- Bump Cocoa SDK from v7.27.0 to v7.27.1 ([#1049](https://github.com/getsentry/sentry-dart/pull/1049)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7271) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.27.0...7.27.1) + +## 6.11.2 + +### Fixes + +- Tracer does not allow setting measurement if finished ([#1026](https://github.com/getsentry/sentry-dart/pull/1026)) +- Add missing measurements units ([#1033](https://github.com/getsentry/sentry-dart/pull/1033)) + +### Features + +- Bump Cocoa SDK from v7.26.0 to v7.27.0 ([#1030](https://github.com/getsentry/sentry-dart/pull/1030)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7270) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.26.0...7.27.0) + +## 6.11.1 + +### Fixes + +- Align span spec for serialize ops ([#1024](https://github.com/getsentry/sentry-dart/pull/1024)) +- Pin sentry version ([#1020](https://github.com/getsentry/sentry-dart/pull/1020)) + +### Features + +- Bump Cocoa SDK from v7.25.1 to v7.26.0 ([#1023](https://github.com/getsentry/sentry-dart/pull/1023)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7260) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.25.1...7.26.0) + +## 6.11.0 + +### Fixes + +- Scope cloning method was not setting the user ([#1013](https://github.com/getsentry/sentry-dart/pull/1013)) + +### Features + +- Dynamic sampling ([#1004](https://github.com/getsentry/sentry-dart/pull/1004)) +- Set custom measurements on transactions ([#1011](https://github.com/getsentry/sentry-dart/pull/1011)) + +## 6.10.0 + +### Fixes + +- Capture Callback Exceptions ([#990](https://github.com/getsentry/sentry-dart/pull/990)) +- Allow routeNameExtractor to set transaction names ([#1005](https://github.com/getsentry/sentry-dart/pull/1005)) + +### Features + +- Prepare future support for iOS and macOS obfuscated app symbolication using dSYM (requires Flutter `master` channel) ([#823](https://github.com/getsentry/sentry-dart/pull/823)) +- Bump Android SDK from v6.3.1 to v6.4.2 ([#989](https://github.com/getsentry/sentry-dart/pull/989), [#1009](https://github.com/getsentry/sentry-dart/pull/1009)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#642) + - [diff](https://github.com/getsentry/sentry-java/compare/6.3.1...6.4.2) +- Bump Cocoa SDK from v7.23.0 to v7.25.1 ([#993](https://github.com/getsentry/sentry-dart/pull/993), [#996](https://github.com/getsentry/sentry-dart/pull/996), [#1000](https://github.com/getsentry/sentry-dart/pull/1000), [#1007](https://github.com/getsentry/sentry-dart/pull/1007)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7251) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.23.0...7.25.1) + +## 6.9.1 + +### Fixes + +* Scope.clone incorrectly accesses tags ([#978](https://github.com/getsentry/sentry-dart/pull/978)) +* beforeBreadcrumb was not adding the mutated breadcrumb ([#982](https://github.com/getsentry/sentry-dart/pull/982)) + +### Features + +- Bump Cocoa SDK to v7.23.0 ([#968](https://github.com/getsentry/sentry-dart/pull/968)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7230) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.22.0...7.23.0) +- Bump Android SDK from v6.3.0 to v6.3.1 ([#976](https://github.com/getsentry/sentry-dart/pull/976)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#631) + - [diff](https://github.com/getsentry/sentry-java/compare/6.3.0...6.3.1) + +## 6.9.0 + +### Features + +* Bump Flutter's min. supported version from 1.17.0 to 2.0.0 ([#966](https://github.com/getsentry/sentry-dart/pull/966)) + +This should not break anything since the Dart's min. version is already 2.12.0 and Flutter 2.0.0 uses Dart 2.12.0 + +### Fixes + +* Back compatibility of Object.hash for Dart 2.12.0 ([#966](https://github.com/getsentry/sentry-dart/pull/966)) +* Fix back compatibility for OnErrorIntegration integration ([#965](https://github.com/getsentry/sentry-dart/pull/965)) + +## 6.8.1 + +### Fixes + +* `Scope#setContexts` pasing a List value would't not work ([#932](https://github.com/getsentry/sentry-dart/pull/932)) + +### Features + +* Add integration for `PlatformDispatcher.onError` ([#915](https://github.com/getsentry/sentry-dart/pull/915)) +- Bump Cocoa SDK to v7.22.0 ([#960](https://github.com/getsentry/sentry-dart/pull/960)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7220) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.21.0...7.22.0) + +## 6.8.0 + +### Fixes + +* Missing OS context for iOS events ([#958](https://github.com/getsentry/sentry-dart/pull/958)) +* Fix: `Scope#clone` calls the Native bridges again via the `scopeObserver` ([#959](https://github.com/getsentry/sentry-dart/pull/959)) + +### Features + +* Dio Integration adds response data ([#934](https://github.com/getsentry/sentry-dart/pull/934)) + +## 6.7.0 + +### Fixes + +* Maps with Key Object, Object would fail during serialization if not String, Object ([#935](https://github.com/getsentry/sentry-dart/pull/935)) +* Breadcrumbs "Concurrent Modification" ([#948](https://github.com/getsentry/sentry-dart/pull/948)) +* Duplicative Screen size changed breadcrumbs ([#888](https://github.com/getsentry/sentry-dart/pull/888)) +* Duplicated Android Breadcrumbs with no Mechanism ([#954](https://github.com/getsentry/sentry-dart/pull/954)) +* Fix windows native method need default result ([#943](https://github.com/getsentry/sentry-dart/pull/943)) +* Add request instead of response data to `SentryRequest` in `DioEventProcessor` [#933](https://github.com/getsentry/sentry-dart/pull/933) + +### Features + +- Bump Android SDK to v6.3.0 ([#945](https://github.com/getsentry/sentry-dart/pull/945), [#950](https://github.com/getsentry/sentry-dart/pull/950)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#630) + - [diff](https://github.com/getsentry/sentry-java/compare/6.1.4...6.3.0) +- Bump Cocoa SDK to v7.21.0 ([#947](https://github.com/getsentry/sentry-dart/pull/947)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7210) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.19.0...7.21.0) + +## 6.6.3 + +### Fixes + +* Context Escape with ScopeCallback ([#925](https://github.com/getsentry/sentry-dart/pull/925)) + +## 6.6.2 + +### Features + +- Bump Android SDK to v6.1.4 ([#900](https://github.com/getsentry/sentry-dart/pull/900)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#614) + - [diff](https://github.com/getsentry/sentry-java/compare/6.1.2...6.1.4) +- Bump Cocoa SDK to v7.19.0 ([#901](https://github.com/getsentry/sentry-dart/pull/901), [#928](https://github.com/getsentry/sentry-dart/pull/928)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7190) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.18.0...7.19.0) + +### Fixes + +* Send DidBecomeActiveNotification when OOM enabled (#905) +* `dio.addSentry` hangs if `dsn` is empty and SDK NoOp ([#920](https://github.com/getsentry/sentry-dart/pull/920)) +* addBreadcrumb throws on Android API < 24 because of NewApi usage ([#923](https://github.com/getsentry/sentry-dart/pull/923)) +* [`sentry_dio`](https://pub.dev/packages/sentry_dio) is promoted to GA and not experimental anymore ([#914](https://github.com/getsentry/sentry-dart/pull/914)) + +## 6.6.1 + +### Fixes + +* Filter out app starts with more than 60s (#895) + +## 6.6.0 + +### Fixes + +* Bump: Sentry-Cocoa to 7.18.0 and Sentry-Android to 6.1.2 (#892) +* Fix: Add missing iOS contexts (#761) +* Fix serialization of threads (#844) +* Fix: `SentryAssetBundle` on Flutter >= 3.1 (#877) + +### Features + +* Feat: Client Reports (#829) +* Feat: Allow manual init of the Native SDK (#765) +* Feat: Attach Isolate name to thread context (#847) +* Feat: Add Android thread to platform stacktraces (#853) +* Feat: Sync Scope to Native (#858) + +### Sentry Self-hosted Compatibility + +* Starting with version `6.6.0` of `sentry`, [Sentry's version >= v21.9.0](https://github.com/getsentry/self-hosted/releases) is required or you have to manually disable sending client reports via the `sendClientReports` option. This only applies to self-hosted Sentry. If you are using [sentry.io](https://sentry.io), no action is needed. + +## 6.6.0-beta.4 + +* Bump: Sentry-Cocoa to 7.17.0 and Sentry-Android to 6.1.1 (#891) + +## 6.6.0-beta.3 + +* Bump: Sentry-Cocoa to 7.16.1 (#886) + +## 6.6.0-beta.2 + +* Fix: Add user setter back in the scope (#883) +* Fix: clear method sets all properties synchronously (#882) + +## 6.6.0-beta.1 + +* Feat: Sync Scope to Native (#858) + +## 6.6.0-alpha.3 + +* Feat: Attach Isolate name to thread context (#847) +* Fix: `SentryAssetBundle` on Flutter >= 3.1 (#877) +* Feat: Add Android thread to platform stacktraces (#853) +* Fix: Rename auto initialize property (#857) +* Bump: Sentry-Android to 6.0.0 (#879) + +## 6.6.0-alpha.2 + +* Fix serialization of threads (#844) +* Feat: Allow manual init of the Native SDK (#765) + +## 6.6.0-alpha.1 + +* Feat: Client Reports (#829) +* Fix: Add missing iOS contexts (#761) + +### Sentry Self-hosted Compatibility + +* Starting with version `6.6.0` of `sentry`, [Sentry's version >= v21.9.0](https://github.com/getsentry/self-hosted/releases) is required or you have to manually disable sending client reports via the `sendClientReports` option. This only applies to self-hosted Sentry. If you are using [sentry.io](https://sentry.io), no action is needed. + +## 6.5.1 + +* Update event contexts (#838) + +## 6.5.0 + +* No documented changes. + +## 6.5.0-beta.2 + +* Fix: Do not set the transaction to scope if no op (#828) + +## 6.5.0-beta.1 + +* No documented changes. + +## 6.5.0-alpha.3 + +* Feat: Support for platform stacktraces on Android (#788) + +## 6.5.0-alpha.2 + +* Bump: Sentry-Android to 5.7.0 and Sentry-Cocoa to 7.11.0 (#796) +* Fix: Dio event processor safelly bails if no DioError in the exception list (#795) + +## 6.5.0-alpha.1 + +* Feat: Mobile Vitals - Native App Start (#749) +* Feat: Mobile Vitals - Native Frames (#772) + +## 6.4.0 + +### Various fixes & improvements + +* Fix: Missing userId on iOS when userId is not set (#782) by @marandaneto +* Allow to set startTimestamp & endTimestamp manually to SentrySpan (#676) by @fatihergin + +## 6.4.0-beta.3 + +* Feat: Allow to set startTimestamp & endTimestamp manually to SentrySpan (#676) +* Bump: Sentry-Cocoa to 7.10.0 (#777) +* Feat: Additional Dart/Flutter context information (#778) +* Bump: Kotlin plugin to 1.5.31 (#763) +* Fix: Missing userId on iOS when userId is not set (#782) + +## 6.4.0-beta.2 + +* No documented changes. + +## 6.4.0-beta.1 + +* Fix: Disable log by default in debug mode (#753) +* [Dio] Ref: Replace FailedRequestAdapter with FailedRequestInterceptor (#728) +* Fix: Add missing return values - dart analyzer (#742) +* Feat: Add `DioEventProcessor` which improves DioError crash reports (#718) +* Fix: Do not report duplicated packages and integrations (#760) +* Feat: Allow manual init of the Native SDK or no Native SDK at all (#765) + +## 6.3.0 + +* Feat: Support maxSpan for performance API and expose SentryOptions through Hub (#716) +* Fix: await ZonedGuard integration to run (#732) +* Fix: `sentry_logging` incorrectly setting SDK name (#725) +* Bump: Sentry-Android to 5.6.1 and Sentry-Cocoa to 7.9.0 (#736) +* Feat: Support Attachment.addToTransactions (#709) +* Fix: captureTransaction should return emptyId when transaction is discarded (#713) +* Add `SentryAssetBundle` for automatic spans for asset loading (#685) +* Fix: `maxRequestBodySize` should be `never` by default when using the FailedRequestClientAdapter directly (#701) +* Feat: Add support for [Dio](https://pub.dev/packages/dio) (#688) +* Fix: Use correct data/extras type in tracer (#693) +* Fix: Do not throw when Throwable type is not supported for associating errors to a transaction (#692) +* Feat: Automatically create transactions when navigating between screens (#643) + +## 6.3.0-beta.4 + +* Feat: Support Attachment.addToTransactions (#709) +* Fix: captureTransaction should return emptyId when transaction is discarded (#713) + +## 6.3.0-beta.3 + +* Feat: Auto transactions duration trimming (#702) +* Add `SentryAssetBundle` for automatic spans for asset loading (#685) +* Feat: Configure idle transaction duration (#705) +* Fix: `maxRequestBodySize` should be `never` by default when using the FailedRequestClientAdapter directly (#701) + +## 6.3.0-beta.2 + +* Feat: Improve configuration options of `SentryNavigatorObserver` (#684) +* Feat: Add support for [Dio](https://pub.dev/packages/dio) (#688) +* Bump: Sentry-Android to 5.5.2 and Sentry-Cocoa to 7.8.0 (#696) + +## 6.3.0-beta.1 + +* Enha: Replace flutter default root name '/' with 'root' (#678) +* Fix: Use 'navigation' instead of 'ui.load' for auto transaction operation (#675) +* Fix: Use correct data/extras type in tracer (#693) +* Fix: Do not throw when Throwable type is not supported for associating errors to a transaction (#692) + +## 6.3.0-alpha.1 + +* Feat: Automatically create transactions when navigating between screens (#643) + +## 6.2.2 + +* Fix: ConcurrentModificationError in when finishing span (#664) +* Feat: Add enableNdkScopeSync Android support (#665) + +## 6.2.1 + +* Fix: `sentry_logging` works now on web (#660) +* Fix: `sentry_logging` timestamps are in UTC (#660) +* Fix: `sentry_logging` Level.Off is never recorded (#660) +* Fix: Rate limiting fallback to retryAfterHeader (#658) + +## 6.2.0 + +* Feat: Integration for `logging` (#631) +* Feat: Add logger name to `SentryLogger` and send errors in integrations to the registered logger (#641) + +## 6.1.2 + +* Fix: Remove is Enum check to support older Dart versions (#635) + +## 6.1.1 + +* Fix: Transaction serialization if not encodable (#633) + +## 6.1.0 + +* Bump: Sentry-Android to 5.3.0 and Sentry-Cocoa to 7.5.1 (#629) +* Fix: event.origin tag for macOS and other Apple platforms (#622) +* Feat: Add current route as transaction (#615) +* Feat: Add Breadcrumbs for Flutters `debugPrint` (#618) +* Feat: Enrich Dart context with isolate name (#600) +* Feat: Sentry Performance for HTTP client (#603) +* Performance API for Dart/Flutter (#530) + +### Breaking Changes: + +* `SentryEvent` inherits from the `SentryEventLike` mixin +* `Scope#transaction` sets and reads from the `Scope#span` object if bound to the Scope + +## 6.1.0-beta.1 + +* Feat: Add current route as transaction (#615) +* Feat: Add Breadcrumbs for Flutters `debugPrint` (#618) + +## 6.1.0-alpha.2 + +* Bump Sentry Android SDK to [5.2.0](https://github.com/getsentry/sentry-dart/pull/594) (#594) + - [changelog](https://github.com/getsentry/sentry-java/blob/5.2.0/CHANGELOG.md) + - [diff](https://github.com/getsentry/sentry-java/compare/5.1.2...5.2.0) +* Feat: Enrich Dart context with isolate name (#600) +* Feat: Sentry Performance for HTTP client (#603) + +## 6.1.0-alpha.1 + +* Performance API for Dart/Flutter (#530) + +### Breaking Changes: + +* `SentryEvent` inherits from the `SentryEventLike` mixin +* `Scope#transaction` sets and reads from the `Scope#span` object if bound to the Scope + +## 6.0.1 + +* Fix: Set custom SentryHttpClientError when HTTP error is captured without an exception (#580) +* Bump: Android AGP 4.1 (#586) +* Bump: Sentry Cocoa to 7.3.0 (#589) + +## 6.0.0 + +* Fix: Update `SentryUser` according to docs (#561) +* Feat: Enable or disable reporting of packages (#563) +* Bump: Sentry-Cocoa to 7.2.7 (#578) +* Bump: Sentry-Android to 5.1.2 (#578) +* Fix: Read Sentry config from environment variables as fallback (#567) + +## 6.0.0-beta.4 + +### Breaking Changes: + +* Feat: Lists of exceptions and threads (#524) +* Feat: Collect more information for exceptions collected via `FlutterError.onError` (#538) +* Feat: Add maxAttachmentSize option (#553) +* Feat: HTTP breadcrumbs have the request & response size if available (#552) + +## 6.0.0-beta.3 + +* Fix: Re-initialization of Flutter SDK (#526) +* Enhancement: Call `toString()` on all non-serializable fields (#528) +* Fix: Always call `Flutter.onError` in order to not swallow messages (#533) +* Bump: Android SDK to 5.1.0-beta.6 (#535) + +## 6.0.0-beta.2 + +* Fix: Serialization of Flutter Context (#520) +* Feat: Add support for attachments (#505) +* Feat: Add support for User Feedback (#506) + +## 6.0.0-beta.1 + +* Feat: Browser detection (#502) +* Feat: Enrich events with more context (#452) +* Feat: Add Culture Context (#491) +* Feat: Add DeduplicationEventProcessor (#498) +* Feat: Capture failed requests as event (#473) +* Feat: `beforeSend` callback accepts async code (#494) + +### Breaking Changes: + +* Ref: EventProcessor changed to an interface (#489) +* Feat: Support envelope based transport for events (#391) + * The method signature of `Transport` changed from `Future send(SentryEvent event)` to `Future send(SentryEnvelope envelope)` +* Remove `Sentry.currentHub` (#490) +* Ref: Rename `cacheDirSize` to `maxCacheItems` and add `maxCacheItems` for iOS (#495) +* Ref: Add error and stacktrace parameter to logger (#503) +* Feat: Change timespans to Durations in SentryOptions (#504) +* Feat: `beforeSend` callback accepts async code (#494) + +### Sentry Self Hosted Compatibility + +* Since version `6.0.0` of the `sentry`, [Sentry's version >= v20.6.0](https://github.com/getsentry/self-hosted/releases) is required. This only applies to on-premise Sentry, if you are using sentry.io no action is needed. + +## 5.1.0 + +* Fix: Merge user from event and scope (#467) +* Feature: Allow setting of default values for in-app-frames via `SentryOptions.considerInAppFramesByDefault` (#482) +* Bump: sentry-android to v5.0.1 (#486) +* Bump: Sentry-Cocoa to 7.1.3 for iOS and macOS (#488) + +## 5.1.0-beta.1 + +* Fix: `Sentry.close()` closes native SDK integrations (#388) +* Feat: Support for macOS (#389) +* Feat: Support for Linux (#402) +* Feat: Support for Windows (#407) +* Fix: Mark `Sentry.currentHub` as deprecated (#406) +* Fix: Set console logger as default logger in debug mode (#413) +* Fix: Use name from pubspec.yaml for release if package id is not available (#411) +* Feat: `SentryHttpClient` tracks the duration which a request takes and logs failed requests (#414) +* Bump: sentry-cocoa to v7.0.0 (#424) +* Feat: Support for Out-of-Memory-Tracking on macOS/iOS (#424) +* Fix: Trim `\u0000` from Windows package info (#420) +* Feature: Log calls to `print()` as Breadcrumbs (#439) +* Fix: `dist` was read from `SENTRY_DSN`, now it's read from `SENTRY_DIST` (#442) +* Bump: sentry-cocoa to v7.0.3 (#445) +* Fix: Fix adding integrations on web (#450) +* Fix: Use `log()` instead of `print()` for SDK logging (#453) +* Bump: sentry-android to v5.0.0-beta.2 (#457) +* Feature: Add `withScope` callback to capture methods (#463) +* Fix: Add missing properties `language`, `screenHeightPixels` and `screenWidthPixels` to `SentryDevice` (#465) + +### Sentry Self Hosted Compatibility + +* This version of the `sentry` Dart package requires [Sentry server >= v20.6.0](https://github.com/getsentry/self-hosted/releases). This only applies to on-premise Sentry, if you are using sentry.io no action is needed. + +## 5.0.0 + +* Sound null safety +* Fix: event.origin and event.environment tags have wrong value for iOS (#365) and (#369) +* Fix: Fix deprecated `registrar.messenger` call in `SentryFlutterWeb` (#364) +* Fix: Enable breadcrumb recording mechanism based on platform (#366) +* Feat: Send default PII options (#360) +* Bump: sentry-cocoa to v6.2.1 (#360) +* Feat: Migration from `package_info` to `package_info_plus` plugin (#370) +* Fix: Set `SentryOptions.debug` in `sentry` (#376) +* Fix: Read all environment variables in `sentry` (#375) + +### Breaking Changes: + +* Return type of `Sentry.close()` changed from `void` to `Future` and `Integration.close()` changed from `void` to `FutureOr` (#395) +* Remove deprecated member `enableLifecycleBreadcrumbs`. Use `enableAppLifecycleBreadcrumbs` instead. (#366) + +## 4.1.0-nullsafety.1 + +* Bump: sentry-android to v4.3.0 (#343) +* Fix: Multiple FlutterError.onError calls in FlutterErrorIntegration (#345) +* Fix: Pass hint to EventProcessors (#356) +* Fix: EventProcessors were not dropping events when returning null (#353) + +### Breaking Changes: + +* Fix: Plugin Registrant class moved to barrel file (#358) + * This changed the import from `import 'package:sentry_flutter/src/sentry_flutter_web.dart';` + to `import 'package:sentry_flutter/sentry_flutter_web.dart';` + * This could lead to breaking changes. Typically it shouldn't because the referencing file is auto-generated. +* Fix: Prefix classes with Sentry (#357) + * A couple of classes were often conflicting with user's code. + Thus this change renames the following classes: + * `App` -> `SentryApp` + * `Browser` -> `SentryBrowser` + * `Device` -> `SentryDevice` + * `Gpu` -> `SentryGpu` + * `Integration` -> `SentryIntegration` + * `Message` -> `SentryMessage` + * `OperatingSystem` -> `SentryOperatingSystem` + * `Request` -> `SentryRequest` + * `User` -> `SentryUser` + * `Orientation` -> `SentryOrientation` + +## 4.1.0-nullsafety.0 + +* Fix: Do not append stack trace to the exception if there are no frames +* Fix: Empty DSN disables the SDK and runs the App +* Feat: sentry and sentry_flutter null-safety thanks to @ueman and @fzyzcjy + +## 4.0.6 + +* Fix: captureMessage defaults SentryLevel to info +* Fix: SentryEvent.throwable returns the unwrapped throwable instead of the throwableMechanism +* Feat: Support enableNativeCrashHandling on iOS + +## 4.0.5 + +* Bump: sentry-android to v4.0.0 +* Fix: Pana Flutter upper bound deprecation +* Fix: sentry_flutter static analysis (pana) using stable version + +## 4.0.4 + +* Fix: Call WidgetsFlutterBinding.ensureInitialized() within runZoneGuarded + +## 4.0.3 + +* Fix: Auto session tracking start on iOS #274 +* Bump: Sentry-cocoa to 6.1.4 + +## 4.0.2 + +* Fix: Mark session as `errored` in iOS #270 +* Fix: Pass auto session tracking interval to iOS +* Fix: Deprecated binaryMessenger (MethodChannel member) for Flutter Web +* Ref: Make `WidgetsFlutterBinding.ensureInitialized();` the first thing the Sentry SDK calls. +* Bump: Sentry-cocoa to 6.0.12 +* Feat: Respect FlutterError silent flag #248 +* Bump: Android SDK to v3.2.1 #273 + +## 4.0.1 + +* Ref: Changed category of Flutter lifecycle tracking [#240](https://github.com/getsentry/sentry-dart/issues/240) +* Fix: Envelope length should be based on the UTF8 array instead of String length + +## 4.0.0 + +Release of Sentry's new SDK for Dart/Flutter. + +New features not offered by <= v4.0.0: + +### Dart SDK + +* Sentry's [Unified API](https://develop.sentry.dev/sdk/unified-api/). +* Complete Sentry's [Protocol](https://develop.sentry.dev/sdk/event-payloads/) available. +* [Dart SDK](https://docs.sentry.io/platforms/dart/) docs. +* Automatic [HTTP Breadcrumbs](https://docs.sentry.io/platforms/dart/usage/advanced-usage/#automatic-breadcrumbs) for [http.Client](https://pub.dev/documentation/http/latest/http/Client-class.html) +* No boilerplate for `runZonedGuarded` and `Isolate.current.addErrorListener` +* All events are enriched with [Scope's Contexts](https://develop.sentry.dev/sdk/event-payloads/#scope-interfaces), this includes Breadcrumbs, tags, User, etc... + +### Flutter SDK + +* The Flutter SDK is built on top of the Dart SDK, so it includes all the available features, plus +* [Flutter SDK](https://docs.sentry.io/platforms/flutter/) docs. +* Automatic [NavigatorObserver Breadcrumbs](https://docs.sentry.io/platforms/flutter/usage/advanced-usage/#automatic-breadcrumbs) +* Automatic [Device's Breadcrumbs](https://docs.sentry.io/platforms/flutter/usage/advanced-usage/#automatic-breadcrumbs) through the Android and iOS SDKs or via Sentry's `WidgetsBindingObserver` wrapper +* No boilerplate for `FlutterError.onError` +* All events are enriched with [Contexts's data](https://develop.sentry.dev/sdk/event-payloads/contexts/), this includes Device's, OS, App info, etc... +* Offline caching +* [Release health](https://docs.sentry.io/product/releases/health/) +* Captures not only Dart and Flutter errors, but also errors caused on the native platforms, Like Kotlin, Java, C and C++ for Android and Swift, ObjC, C, C++ for iOS +* Supports Fatal crashes, Event is going to be sent on App's restart +* Supports `split-debug-info` for Android only +* Flutter Android, iOS and limited support for Flutter Web + +Improvements: + +* Feat: Added a copyWith method to all the protocol classes + +Packages were released on [sentry pubdev](https://pub.dev/packages/sentry) and [sentry_flutter pubdev](https://pub.dev/packages/sentry_flutter) + +### Sentry Self Hosted Compatibility + +* Since version `4.0.0` of the `sentry_flutter`, [Sentry's version >= v20.6.0](https://github.com/getsentry/self-hosted/releases) is required. This only applies to on-premise Sentry, if you are using sentry.io no action is needed. + +## 4.0.0-beta.2 + +* Ref: Remove duplicated attachStackTrace field +* Fix: Flutter Configurations should be able to mutate the SentryFlutterOptions +* Enhancement: Add SentryWidgetsBindingObserver, an Integration that captures certain window and device events. +* Enhancement: Set `options.environment` on SDK init based on the flags (kReleaseMode, kDebugMode, kProfileMode or SENTRY_ENVIRONMENT). +* Feature: SentryHttpClient to capture HTTP requests as breadcrumbs +* Ref: Only assign non-null option values in Android native integration in order preserve default values +* Enhancement: Add 'attachThreads' in options. When enabled, threads are attached to all logged events for Android +* Ref: Rename typedef `Logger` to `SentryLogger` to prevent name clashes with logging packages +* Fix: Scope Event processors should be awaited +* Fix: Package usage as git dependency + +### Breaking changes + +* `Logger` typedef is renamed to `SentryLogger` +* `attachStackTrace` is renamed to `attachStacktrace` + +## 4.0.0-beta.1 + +* Fix: StackTrace frames with 'package' uri.scheme are inApp by default #185 +* Fix: Missing App's StackTrace frames for Flutter errors +* Enhancement: Add isolateErrorIntegration and runZonedGuardedIntegration to default integrations in sentry-dart +* Fix: Breadcrumb list is a plain list instead of a values list #201 +* Ref: Remove deprecated classes (Flutter Plugin for Android) and cleaning up #186 +* Fix: Handle immutable event lists and maps +* Fix: NDK integration was being disabled by a typo +* Fix: Missing toList for debug meta #192 +* Enhancement: NavigationObserver to record Breadcrumbs for navigation events #197 +* Fix: Integrations should be closeable +* Feat: Support split-debug-info for Android #191 +* Fix: the event payload must never serialize null or empty fields +* Ref: Make hints optional + +### Breaking changes + +* `Sentry.init` and `SentryFlutter.init` have an optional callback argument which runs the host App after Sentry initialization. +* `Integration` is an `Interface` instead of a pure Function +* `Hints` are optional arguments +* Sentry Dart SDK adds an `IsolateError` handler by default + +## 4.0.0-alpha.2 + +* Enhancement: `Contexts` were added to the `Scope` #154 +* Fix: App. would hang if `debug` mode was enabled and refactoring ##157 +* Enhancement: Sentry Protocol v7 +* Enhancement: Added missing Protocol fields, `Request`, `SentryStackTrace`...) #155 +* Feat: Added `attachStackTrace` options to attach stack traces on `captureMessage` calls +* Feat: Flutter SDK has the Native SDKs embedded (Android and Apple) #158 + +### Breaking changes + +* `Sentry.init` returns a `Future`. +* Dart min. SDK is `2.8.0` +* Flutter min. SDK is `1.17.0` +* Timestamp has millis precision. +* For better groupping, add your own package to the `addInAppInclude` list, e.g. `options.addInAppInclude('sentry_flutter_example');` +* A few classes of the `Protocol` were renamed. + +### Sentry Self Hosted Compatibility + +* Since version `4.0.0` of the `sentry_flutter`, `Sentry` version >= `v20.6.0` is required. This only applies to on-premise Sentry, if you are using sentry.io no action is needed. + +## 4.0.0-alpha.1 + +First Release of Sentry's new SDK for Dart/Flutter. + +New features not offered by <= v4.0.0: + +* Sentry's [Unified API](https://develop.sentry.dev/sdk/unified-api/). +* Complete Sentry [Protocol](https://develop.sentry.dev/sdk/event-payloads/) available. +* Docs and Migration is under review on this [PR](https://github.com/getsentry/sentry-docs/pull/2599) +* For all the breaking changes follow this [PR](https://github.com/getsentry/sentry-dart/pull/117), they'll be soon available on the Migration page. + +Packages were released on [pubdev](https://pub.dev/packages/sentry) + +We'd love to get feedback and we'll work in getting the GA 4.0.0 out soon. +Until then, the stable SDK offered by Sentry is at version [3.0.1](https://github.com/getsentry/sentry-dart/releases/tag/3.0.1) + +## 3.0.1 + +* Add support for Contexts in Sentry events + +## 3.0.0+1 + +* `pubspec.yaml` and example code clean-up. + +## 3.0.0 + +* Support Web + * `SentryClient` from `package:sentry/sentry.dart` with conditional import + * `SentryBrowserClient` for web from `package:sentry/browser_client.dart` + * `SentryIOClient` for VM and Flutter from `package:sentry/io_client.dart` + +## 2.3.1 + +* Support non-standard port numbers and paths in DSN URL. + +## 2.3.0 + +* Add [breadcrumb](https://docs.sentry.io/development/sdk-dev/event-payloads/breadcrumbs/) support. + +## 2.2.0 + +* Add a `stackFrameFilter` argument to `SentryClient`'s `capture` method (96be842). +* Clean-up code using pre-Dart 2 API (91c7706, b01ebf8). + +## 2.1.1 + +* Defensively copy internal maps event attributes to + avoid shared mutable state (https://github.com/flutter/sentry/commit/044e4c1f43c2d199ed206e5529e2a630c90e4434) + +## 2.1.0 + +* Support DNS format without secret key. +* Remove dependency on `package:quiver`. +* The `clock` argument to `SentryClient` constructor _should_ now be + `ClockProvider` (but still accepts `Clock` for backwards compatibility). + +## 2.0.2 + +* Add support for user context in Sentry events. + +## 2.0.1 + +* Invert stack frames to be compatible with Sentry's default culprit detection. + +## 2.0.0 + +* Fixed deprecation warnings for Dart 2 +* Refactored tests to work with Dart 2 + +## 1.0.0 + +* first and last Dart 1-compatible release (we may fix bugs on a separate branch if there's demand) +* fix code for Dart 2 + +## 0.0.6 + +* use UTC in the `timestamp` field + +## 0.0.5 + +* remove sub-seconds from the timestamp + +## 0.0.4 + +* parse and report async gaps in stack traces + +## 0.0.3 + +* environment attributes +* auto-generate event_id and timestamp for events + +## 0.0.2 + +* parse and report stack traces +* use x-sentry-error HTTP response header +* gzip outgoing payloads by default + +## 0.0.1 + +* basic ability to send exception reports to Sentry.io diff --git a/drift/LICENSE b/drift/LICENSE new file mode 100644 index 0000000000..2a6964d84d --- /dev/null +++ b/drift/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Sentry + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/drift/README.md b/drift/README.md new file mode 100644 index 0000000000..4255e1bb76 --- /dev/null +++ b/drift/README.md @@ -0,0 +1,73 @@ +

+ + + +
+

+ +Sentry integration for `drift` package +=========== + +- Sign up for a Sentry.io account and get a DSN at https://sentry.io. + +- Follow the installing instructions on [pub.dev](https://pub.dev/packages/sentry/install). + +- Initialize the Sentry SDK using the DSN issued by Sentry.io. + +- Call... + +```dart +import 'package:drift/drift.dart'; +import 'package:drift/native.dart'; +import 'package:sentry/sentry.dart'; +import 'package:sentry_drift/sentry_drift.dart'; + +import '../test/test_database.dart'; + +Future main() async { + // ATTENTION: Change the DSN below with your own to see the events in Sentry. Get one at sentry.io + const dsn = + 'https://e85b375ffb9f43cf8bdf9787768149e0@o447951.ingest.sentry.io/5428562'; + + await Sentry.init( + (options) { + options.dsn = dsn; + options.tracesSampleRate = 1.0; + options.debug = true; + }, + appRunner: runApp, // Init your App. + ); +} + +Future runApp() async { + final tr = + Sentry.startTransaction('drift', 'op', bindToScope: true); + final executor = SentryQueryExecutor( + () => NativeDatabase.memory(), + databaseName: 'my_db_name', + ); + final db = AppDatabase(executor); + + await db.into(db.todoItems).insert( + TodoItemsCompanion.insert( + title: 'This is a test thing', + content: 'test', + ), + ); + + final items = await db.select(db.todoItems).get(); + print(items); + + await db.close(); + + await tr.finish(status: const SpanStatus.ok()); +} +``` + +#### Resources + +* [![Documentation](https://img.shields.io/badge/documentation-sentry.io-green.svg)](https://docs.sentry.io/platforms/dart/) +* [![Forum](https://img.shields.io/badge/forum-sentry-green.svg)](https://forum.sentry.io/c/sdks) +* [![Discord](https://img.shields.io/discord/621778831602221064)](https://discord.gg/Ww9hbqr) +* [![Stack Overflow](https://img.shields.io/badge/stack%20overflow-sentry-green.svg)](https://stackoverflow.com/questions/tagged/sentry) +* [![Twitter Follow](https://img.shields.io/twitter/follow/getsentry?label=getsentry&style=social)](https://twitter.com/intent/follow?screen_name=getsentry) diff --git a/drift/analysis_options.yaml b/drift/analysis_options.yaml new file mode 100644 index 0000000000..28ddbe2636 --- /dev/null +++ b/drift/analysis_options.yaml @@ -0,0 +1,34 @@ +include: package:lints/recommended.yaml + +analyzer: + language: + strict-casts: true + strict-inference: true + strict-raw-types: true + errors: + # treat missing required parameters as a warning (not a hint) + missing_required_param: error + # treat missing returns as a warning (not a hint) + missing_return: error + # allow having TODOs in the code + todo: ignore + # allow self-reference to deprecated members (we do this because otherwise we have + # to annotate every member in every test, assert, etc, when we deprecate something) + deprecated_member_use_from_same_package: warning + # ignore sentry/path on pubspec as we change it on deployment + invalid_dependency: ignore + unnecessary_import: ignore + exclude: + - example/** + - test/mocks/mocks.mocks.dart + +linter: + rules: + - prefer_final_locals + - public_member_api_docs + - prefer_single_quotes + - prefer_relative_imports + - unnecessary_brace_in_string_interps + - implementation_imports + - require_trailing_commas + - unawaited_futures diff --git a/drift/dartdoc_options.yaml b/drift/dartdoc_options.yaml new file mode 100644 index 0000000000..20edf7f942 --- /dev/null +++ b/drift/dartdoc_options.yaml @@ -0,0 +1,3 @@ +dartdoc: + errors: + - unresolved-doc-reference diff --git a/drift/example/database.dart b/drift/example/database.dart new file mode 100644 index 0000000000..71a467b984 --- /dev/null +++ b/drift/example/database.dart @@ -0,0 +1,21 @@ +import 'dart:io'; + +import 'package:drift/drift.dart'; +import 'package:drift/native.dart'; + +part 'database.g.dart'; + +class TodoItems extends Table { + IntColumn get id => integer().autoIncrement()(); + TextColumn get title => text().withLength(min: 6, max: 32)(); + TextColumn get content => text().named('body')(); + IntColumn get category => integer().nullable()(); +} + +@DriftDatabase(tables: [TodoItems]) +class AppDatabase extends _$AppDatabase { + AppDatabase(super.e); + + @override + int get schemaVersion => 1; +} diff --git a/drift/example/database.g.dart b/drift/example/database.g.dart new file mode 100644 index 0000000000..1f9d234456 --- /dev/null +++ b/drift/example/database.g.dart @@ -0,0 +1,269 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'database.dart'; + +// ignore_for_file: type=lint +class $TodoItemsTable extends TodoItems + with TableInfo<$TodoItemsTable, TodoItem> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $TodoItemsTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + static const VerificationMeta _titleMeta = const VerificationMeta('title'); + @override + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 6, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + static const VerificationMeta _contentMeta = + const VerificationMeta('content'); + @override + late final GeneratedColumn content = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + static const VerificationMeta _categoryMeta = + const VerificationMeta('category'); + @override + late final GeneratedColumn category = GeneratedColumn( + 'category', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + @override + List get $columns => [id, title, content, category]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'todo_items'; + @override + VerificationContext validateIntegrity(Insertable instance, + {bool isInserting = false}) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } + if (data.containsKey('title')) { + context.handle( + _titleMeta, title.isAcceptableOrUnknown(data['title']!, _titleMeta)); + } else if (isInserting) { + context.missing(_titleMeta); + } + if (data.containsKey('body')) { + context.handle(_contentMeta, + content.isAcceptableOrUnknown(data['body']!, _contentMeta)); + } else if (isInserting) { + context.missing(_contentMeta); + } + if (data.containsKey('category')) { + context.handle(_categoryMeta, + category.isAcceptableOrUnknown(data['category']!, _categoryMeta)); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + TodoItem map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return TodoItem( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + content: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + category: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}category']), + ); + } + + @override + $TodoItemsTable createAlias(String alias) { + return $TodoItemsTable(attachedDatabase, alias); + } +} + +class TodoItem extends DataClass implements Insertable { + final int id; + final String title; + final String content; + final int? category; + const TodoItem( + {required this.id, + required this.title, + required this.content, + this.category}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(content); + if (!nullToAbsent || category != null) { + map['category'] = Variable(category); + } + return map; + } + + TodoItemsCompanion toCompanion(bool nullToAbsent) { + return TodoItemsCompanion( + id: Value(id), + title: Value(title), + content: Value(content), + category: category == null && nullToAbsent + ? const Value.absent() + : Value(category), + ); + } + + factory TodoItem.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return TodoItem( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + content: serializer.fromJson(json['content']), + category: serializer.fromJson(json['category']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'content': serializer.toJson(content), + 'category': serializer.toJson(category), + }; + } + + TodoItem copyWith( + {int? id, + String? title, + String? content, + Value category = const Value.absent()}) => + TodoItem( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + category: category.present ? category.value : this.category, + ); + @override + String toString() { + return (StringBuffer('TodoItem(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('category: $category') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, title, content, category); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is TodoItem && + other.id == this.id && + other.title == this.title && + other.content == this.content && + other.category == this.category); +} + +class TodoItemsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value content; + final Value category; + const TodoItemsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.content = const Value.absent(), + this.category = const Value.absent(), + }); + TodoItemsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String content, + this.category = const Value.absent(), + }) : title = Value(title), + content = Value(content); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? content, + Expression? category, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (content != null) 'body': content, + if (category != null) 'category': category, + }); + } + + TodoItemsCompanion copyWith( + {Value? id, + Value? title, + Value? content, + Value? category}) { + return TodoItemsCompanion( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + category: category ?? this.category, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (content.present) { + map['body'] = Variable(content.value); + } + if (category.present) { + map['category'] = Variable(category.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('TodoItemsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('category: $category') + ..write(')')) + .toString(); + } +} + +abstract class _$AppDatabase extends GeneratedDatabase { + _$AppDatabase(QueryExecutor e) : super(e); + late final $TodoItemsTable todoItems = $TodoItemsTable(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [todoItems]; +} diff --git a/drift/example/example.dart b/drift/example/example.dart new file mode 100644 index 0000000000..bfe8b6d8e6 --- /dev/null +++ b/drift/example/example.dart @@ -0,0 +1,44 @@ +import 'package:drift/drift.dart'; +import 'package:drift/native.dart'; +import 'package:sentry/sentry.dart'; +import 'package:sentry_drift/sentry_drift.dart'; + +import 'database.dart'; + +Future main() async { + // ATTENTION: Change the DSN below with your own to see the events in Sentry. Get one at sentry.io + const dsn = + 'https://e85b375ffb9f43cf8bdf9787768149e0@o447951.ingest.sentry.io/5428562'; + + await Sentry.init( + (options) { + options.dsn = dsn; + options.tracesSampleRate = 1.0; + options.debug = true; + }, + appRunner: runApp, // Init your App. + ); +} + +Future runApp() async { + final tr = Sentry.startTransaction('drift', 'op', bindToScope: true); + final executor = SentryQueryExecutor( + () => NativeDatabase.memory(), + databaseName: 'your_db_name', + ); + final db = AppDatabase(executor); + + await db.into(db.todoItems).insert( + TodoItemsCompanion.insert( + title: 'This is a test thing', + content: 'test', + ), + ); + + final items = await db.select(db.todoItems).get(); + print(items); + + await db.close(); + + await tr.finish(status: const SpanStatus.ok()); +} diff --git a/drift/lib/sentry_drift.dart b/drift/lib/sentry_drift.dart new file mode 100644 index 0000000000..ba84220b42 --- /dev/null +++ b/drift/lib/sentry_drift.dart @@ -0,0 +1,3 @@ +library sentry_drift; + +export 'src/sentry_query_executor.dart'; diff --git a/drift/lib/src/sentry_query_executor.dart b/drift/lib/src/sentry_query_executor.dart new file mode 100644 index 0000000000..29697e3c92 --- /dev/null +++ b/drift/lib/src/sentry_query_executor.dart @@ -0,0 +1,179 @@ +import 'dart:async'; + +import 'package:drift/backends.dart'; +import 'package:drift/drift.dart'; +import 'package:meta/meta.dart'; +import 'package:sentry/sentry.dart'; +import 'sentry_span_helper.dart'; +import 'sentry_transaction_executor.dart'; + +/// Signature of a function that opens a database connection when instructed to. +typedef DatabaseOpener = FutureOr Function(); + +/// The Sentry Query Executor. +/// +/// If the constructor parameter queryExecutor is null, [LazyDatabase] will be +/// used as a default. +@experimental +class SentryQueryExecutor extends QueryExecutor { + Hub _hub; + + final _spanHelper = SentrySpanHelper( + // ignore: invalid_use_of_internal_member + SentryTraceOrigins.autoDbDriftQueryExecutor, + ); + + final QueryExecutor _executor; + + final String _dbName; + + @internal + // ignore: public_member_api_docs + static const dbNameKey = 'db.name'; + + @internal + // ignore: public_member_api_docs + static const dbOp = 'db'; + + @internal + // ignore: public_member_api_docs + static const dbSystemKey = 'db.system'; + + @internal + // ignore: public_member_api_docs + static const dbSystem = 'sqlite'; + + bool _isOpen = false; + + /// Declares a [SentryQueryExecutor] that will run [opener] when the database is + /// first requested to be opened. You must specify the same [dialect] as the + /// underlying database has + SentryQueryExecutor( + DatabaseOpener opener, { + @internal Hub? hub, + @internal QueryExecutor? queryExecutor, + required String databaseName, + }) : _hub = hub ?? HubAdapter(), + _dbName = databaseName, + _executor = queryExecutor ?? LazyDatabase(opener) { + _spanHelper.setHub(_hub); + } + + /// @nodoc + @internal + void setHub(Hub hub) { + _hub = hub; + _spanHelper.setHub(hub); + } + + @override + TransactionExecutor beginTransaction() { + final transactionExecutor = _executor.beginTransaction(); + final sentryTransactionExecutor = SentryTransactionExecutor( + transactionExecutor, + _hub, + dbName: _dbName, + ); + sentryTransactionExecutor.beginTransaction(); + return sentryTransactionExecutor; + } + + @override + Future runBatched(BatchedStatements statements) { + return _spanHelper.asyncWrapInSpan( + statements.toString(), + () async { + return await _executor.runBatched(statements); + }, + dbName: _dbName, + ); + } + + @override + Future ensureOpen(QueryExecutorUser user) { + if (_isOpen) { + return Future.value(true); + } + return _spanHelper.asyncWrapInSpan( + 'Open DB: $_dbName', + () async { + final res = await _executor.ensureOpen(user); + _isOpen = true; + return res; + }, + dbName: _dbName, + ); + } + + @override + Future runCustom(String statement, [List? args]) { + return _spanHelper.asyncWrapInSpan( + statement, + () async { + return await _executor.runCustom(statement, args); + }, + dbName: _dbName, + ); + } + + @override + Future runDelete(String statement, List args) { + return _spanHelper.asyncWrapInSpan( + statement, + () async { + return await _executor.runDelete(statement, args); + }, + dbName: _dbName, + ); + } + + @override + Future runInsert(String statement, List args) { + return _spanHelper.asyncWrapInSpan( + statement, + () async { + return await _executor.runInsert(statement, args); + }, + dbName: _dbName, + ); + } + + @override + Future>> runSelect( + String statement, + List args, + ) { + return _spanHelper.asyncWrapInSpan( + statement, + () async { + return await _executor.runSelect(statement, args); + }, + dbName: _dbName, + ); + } + + @override + Future runUpdate(String statement, List args) { + return _spanHelper.asyncWrapInSpan( + statement, + () async { + return await _executor.runUpdate(statement, args); + }, + dbName: _dbName, + ); + } + + @override + Future close() { + return _spanHelper.asyncWrapInSpan( + 'Close DB: $_dbName', + () async { + return await _executor.close(); + }, + dbName: _dbName, + ); + } + + @override + SqlDialect get dialect => _executor.dialect; +} diff --git a/drift/lib/src/sentry_span_helper.dart b/drift/lib/src/sentry_span_helper.dart new file mode 100644 index 0000000000..762bd24d08 --- /dev/null +++ b/drift/lib/src/sentry_span_helper.dart @@ -0,0 +1,155 @@ +import 'package:meta/meta.dart'; + +import 'package:sentry/sentry.dart'; + +import 'sentry_query_executor.dart'; + +/// @nodoc +@internal +class SentrySpanHelper { + /// @nodoc + Hub _hub = HubAdapter(); + + /// @nodoc + final String _origin; + + /// @nodoc + SentrySpanHelper(this._origin); + + /// @nodoc + void setHub(Hub hub) { + _hub = hub; + } + + /// @nodoc + @internal + Future asyncWrapInSpan( + String description, + Future Function() execute, { + String? dbName, + bool useTransactionSpan = false, + }) async { + ISentrySpan? currentSpan = _hub.getSpan(); + if (useTransactionSpan) { + currentSpan = transactionSpan; + } + final span = currentSpan?.startChild( + SentryQueryExecutor.dbOp, + description: description, + ); + + // ignore: invalid_use_of_internal_member + span?.origin = _origin; + + span?.setData( + SentryQueryExecutor.dbSystemKey, + SentryQueryExecutor.dbSystem, + ); + + if (dbName != null) { + span?.setData(SentryQueryExecutor.dbNameKey, dbName); + } + + try { + final result = await execute(); + span?.status = SpanStatus.ok(); + + return result; + } catch (exception) { + span?.throwable = exception; + span?.status = SpanStatus.internalError(); + + rethrow; + } finally { + await span?.finish(); + } + } + + /// This span is used for the database transaction. + @internal + ISentrySpan? transactionSpan; + + /// @nodoc + @internal + T beginTransaction( + String description, + T Function() execute, { + String? dbName, + }) { + final currentSpan = _hub.getSpan(); + final span = currentSpan?.startChild( + SentryQueryExecutor.dbOp, + description: description, + ); + + // ignore: invalid_use_of_internal_member + span?.origin = _origin; + + span?.setData( + SentryQueryExecutor.dbSystemKey, + SentryQueryExecutor.dbSystem, + ); + + if (dbName != null) { + span?.setData(SentryQueryExecutor.dbNameKey, dbName); + } + + try { + final result = execute(); + span?.status = SpanStatus.unknown(); + + return result; + } catch (exception) { + span?.throwable = exception; + span?.status = SpanStatus.internalError(); + + rethrow; + } finally { + transactionSpan = span; + } + } + + /// @nodoc + @internal + Future finishTransaction( + Future Function() execute, { + String? dbName, + }) async { + try { + final result = await execute(); + transactionSpan?.status = SpanStatus.ok(); + + return result; + } catch (exception) { + transactionSpan?.throwable = exception; + transactionSpan?.status = SpanStatus.internalError(); + + rethrow; + } finally { + await transactionSpan?.finish(); + transactionSpan = null; + } + } + + /// @nodoc + @internal + Future abortTransaction( + Future Function() execute, { + String? dbName, + }) async { + try { + final result = await execute(); + transactionSpan?.status = SpanStatus.aborted(); + + return result; + } catch (exception) { + transactionSpan?.throwable = exception; + transactionSpan?.status = SpanStatus.internalError(); + + rethrow; + } finally { + await transactionSpan?.finish(); + transactionSpan = null; + } + } +} diff --git a/drift/lib/src/sentry_transaction_executor.dart b/drift/lib/src/sentry_transaction_executor.dart new file mode 100644 index 0000000000..afd7625524 --- /dev/null +++ b/drift/lib/src/sentry_transaction_executor.dart @@ -0,0 +1,155 @@ +import 'package:drift/backends.dart'; +import 'package:meta/meta.dart'; +import 'package:sentry/sentry.dart'; +import 'sentry_span_helper.dart'; + +/// @nodoc +@internal +class SentryTransactionExecutor extends TransactionExecutor { + final TransactionExecutor _executor; + + final Hub _hub; + + final _spanHelper = SentrySpanHelper( + // ignore: invalid_use_of_internal_member + SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + + final String? _dbName; + + bool _isOpen = false; + + final _withinTransactionDescription = 'Within transaction: '; + + /// @nodoc + SentryTransactionExecutor(this._executor, Hub hub, {@internal String? dbName}) + : _hub = hub, + _dbName = dbName { + _spanHelper.setHub(_hub); + } + + @override + TransactionExecutor beginTransaction() { + return _spanHelper.beginTransaction( + 'transaction', + () { + return _executor.beginTransaction(); + }, + dbName: _dbName, + ); + } + + @override + Future rollback() { + return _spanHelper.abortTransaction(() async { + return await _executor.rollback(); + }); + } + + @override + Future send() { + return _spanHelper.finishTransaction(() async { + return await _executor.send(); + }); + } + + @override + SqlDialect get dialect => _executor.dialect; + + @override + Future ensureOpen(QueryExecutorUser user) { + if (_isOpen) { + return Future.value(true); + } + return _spanHelper.asyncWrapInSpan( + 'Open transaction', + () async { + final res = await _executor.ensureOpen(user); + _isOpen = true; + return res; + }, + dbName: _dbName, + ); + } + + @override + Future runBatched(BatchedStatements statements) { + return _spanHelper.asyncWrapInSpan( + 'batch', + () async { + return await _executor.runBatched(statements); + }, + dbName: _dbName, + ); + } + + @override + Future runCustom(String statement, [List? args]) { + return _spanHelper.asyncWrapInSpan( + _spanDescriptionForOperations(statement), + () async { + return _executor.runCustom(statement, args); + }, + dbName: _dbName, + useTransactionSpan: true, + ); + } + + @override + Future runDelete(String statement, List args) { + return _spanHelper.asyncWrapInSpan( + _spanDescriptionForOperations(statement), + () async { + return _executor.runDelete(statement, args); + }, + dbName: _dbName, + useTransactionSpan: true, + ); + } + + @override + Future runInsert(String statement, List args) { + return _spanHelper.asyncWrapInSpan( + _spanDescriptionForOperations(statement), + () async { + return _executor.runInsert(statement, args); + }, + dbName: _dbName, + useTransactionSpan: true, + ); + } + + @override + Future>> runSelect( + String statement, + List args, + ) { + return _spanHelper.asyncWrapInSpan( + _spanDescriptionForOperations(statement), + () async { + return _executor.runSelect(statement, args); + }, + dbName: _dbName, + useTransactionSpan: true, + ); + } + + @override + Future runUpdate(String statement, List args) { + return _spanHelper.asyncWrapInSpan( + _spanDescriptionForOperations(statement), + () async { + return _executor.runUpdate(statement, args); + }, + dbName: _dbName, + useTransactionSpan: true, + ); + } + + @override + bool get supportsNestedTransactions => _executor.supportsNestedTransactions; + + String _spanDescriptionForOperations(String operation) { + return '$_withinTransactionDescription$operation'; + } +} diff --git a/drift/pubspec.yaml b/drift/pubspec.yaml new file mode 100644 index 0000000000..abcecf2ca1 --- /dev/null +++ b/drift/pubspec.yaml @@ -0,0 +1,28 @@ +name: sentry_drift +description: An integration which adds support for performance tracing for the drift package. +version: 7.12.0 +homepage: https://docs.sentry.io/platforms/flutter/ +repository: https://github.com/getsentry/sentry-dart +issue_tracker: https://github.com/getsentry/sentry-dart/issues + +environment: + sdk: '>=2.17.0 <4.0.0' + flutter: '>=3.3.0' + +dependencies: + sentry: 7.12.0 + meta: ^1.3.0 + drift: ^2.13.0 + +dev_dependencies: + lints: ^3.0.0 + flutter_test: + sdk: flutter + coverage: ^1.3.0 + mockito: ^5.1.0 + build_runner: ^2.4.6 + drift_dev: ^2.13.0 + yaml: ^3.1.0 # needed for version match (code and pubspec) + sqlite3_flutter_libs: ^0.5.0 + sqlite3: ^2.1.0 + archive: ^3.1.2 \ No newline at end of file diff --git a/drift/pubspec_overrides.yaml b/drift/pubspec_overrides.yaml new file mode 100644 index 0000000000..16e71d16f0 --- /dev/null +++ b/drift/pubspec_overrides.yaml @@ -0,0 +1,3 @@ +dependency_overrides: + sentry: + path: ../dart diff --git a/drift/test/mocks/mocks.dart b/drift/test/mocks/mocks.dart new file mode 100644 index 0000000000..4842f97455 --- /dev/null +++ b/drift/test/mocks/mocks.dart @@ -0,0 +1,10 @@ +import 'package:drift/drift.dart'; +import 'package:mockito/annotations.dart'; +import 'package:sentry/sentry.dart'; + +@GenerateMocks([ + Hub, + LazyDatabase, + TransactionExecutor, +]) +void main() {} diff --git a/drift/test/mocks/mocks.mocks.dart b/drift/test/mocks/mocks.mocks.dart new file mode 100644 index 0000000000..f6a88c359a --- /dev/null +++ b/drift/test/mocks/mocks.mocks.dart @@ -0,0 +1,769 @@ +// Mocks generated by Mockito 5.4.2 from annotations +// in sentry_drift/test/mocks/mocks.dart. +// Do not manually edit this file. + +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i5; + +import 'package:drift/backends.dart' as _i3; +import 'package:drift/drift.dart' as _i6; +import 'package:mockito/mockito.dart' as _i1; +import 'package:sentry/sentry.dart' as _i2; +import 'package:sentry/src/profiling.dart' as _i4; + +// ignore_for_file: type=lint +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: avoid_setters_without_getters +// ignore_for_file: comment_references +// ignore_for_file: implementation_imports +// ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: prefer_const_constructors +// ignore_for_file: unnecessary_parenthesis +// ignore_for_file: camel_case_types +// ignore_for_file: subtype_of_sealed_class + +class _FakeSentryOptions_0 extends _i1.SmartFake implements _i2.SentryOptions { + _FakeSentryOptions_0( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeSentryId_1 extends _i1.SmartFake implements _i2.SentryId { + _FakeSentryId_1( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeScope_2 extends _i1.SmartFake implements _i2.Scope { + _FakeScope_2( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeHub_3 extends _i1.SmartFake implements _i2.Hub { + _FakeHub_3( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeISentrySpan_4 extends _i1.SmartFake implements _i2.ISentrySpan { + _FakeISentrySpan_4( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeQueryExecutor_5 extends _i1.SmartFake implements _i3.QueryExecutor { + _FakeQueryExecutor_5( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeTransactionExecutor_6 extends _i1.SmartFake + implements _i3.TransactionExecutor { + _FakeTransactionExecutor_6( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +/// A class which mocks [Hub]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockHub extends _i1.Mock implements _i2.Hub { + MockHub() { + _i1.throwOnMissingStub(this); + } + + @override + _i2.SentryOptions get options => (super.noSuchMethod( + Invocation.getter(#options), + returnValue: _FakeSentryOptions_0( + this, + Invocation.getter(#options), + ), + ) as _i2.SentryOptions); + + @override + bool get isEnabled => (super.noSuchMethod( + Invocation.getter(#isEnabled), + returnValue: false, + ) as bool); + + @override + _i2.SentryId get lastEventId => (super.noSuchMethod( + Invocation.getter(#lastEventId), + returnValue: _FakeSentryId_1( + this, + Invocation.getter(#lastEventId), + ), + ) as _i2.SentryId); + + @override + _i2.Scope get scope => (super.noSuchMethod( + Invocation.getter(#scope), + returnValue: _FakeScope_2( + this, + Invocation.getter(#scope), + ), + ) as _i2.Scope); + + @override + set profilerFactory(_i4.SentryProfilerFactory? value) => super.noSuchMethod( + Invocation.setter( + #profilerFactory, + value, + ), + returnValueForMissingStub: null, + ); + + @override + _i5.Future<_i2.SentryId> captureEvent( + _i2.SentryEvent? event, { + dynamic stackTrace, + _i2.Hint? hint, + _i2.ScopeCallback? withScope, + }) => + (super.noSuchMethod( + Invocation.method( + #captureEvent, + [event], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + returnValue: _i5.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureEvent, + [event], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + )), + ) as _i5.Future<_i2.SentryId>); + + @override + _i5.Future<_i2.SentryId> captureException( + dynamic throwable, { + dynamic stackTrace, + _i2.Hint? hint, + _i2.ScopeCallback? withScope, + }) => + (super.noSuchMethod( + Invocation.method( + #captureException, + [throwable], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + returnValue: _i5.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureException, + [throwable], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + )), + ) as _i5.Future<_i2.SentryId>); + + @override + _i5.Future<_i2.SentryId> captureMessage( + String? message, { + _i2.SentryLevel? level, + String? template, + List? params, + _i2.Hint? hint, + _i2.ScopeCallback? withScope, + }) => + (super.noSuchMethod( + Invocation.method( + #captureMessage, + [message], + { + #level: level, + #template: template, + #params: params, + #hint: hint, + #withScope: withScope, + }, + ), + returnValue: _i5.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureMessage, + [message], + { + #level: level, + #template: template, + #params: params, + #hint: hint, + #withScope: withScope, + }, + ), + )), + ) as _i5.Future<_i2.SentryId>); + + @override + _i5.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => + (super.noSuchMethod( + Invocation.method( + #captureUserFeedback, + [userFeedback], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future addBreadcrumb( + _i2.Breadcrumb? crumb, { + _i2.Hint? hint, + }) => + (super.noSuchMethod( + Invocation.method( + #addBreadcrumb, + [crumb], + {#hint: hint}, + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + void bindClient(_i2.SentryClient? client) => super.noSuchMethod( + Invocation.method( + #bindClient, + [client], + ), + returnValueForMissingStub: null, + ); + + @override + _i2.Hub clone() => (super.noSuchMethod( + Invocation.method( + #clone, + [], + ), + returnValue: _FakeHub_3( + this, + Invocation.method( + #clone, + [], + ), + ), + ) as _i2.Hub); + + @override + _i5.Future close() => (super.noSuchMethod( + Invocation.method( + #close, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.FutureOr configureScope(_i2.ScopeCallback? callback) => + (super.noSuchMethod(Invocation.method( + #configureScope, + [callback], + )) as _i5.FutureOr); + + @override + _i2.ISentrySpan startTransaction( + String? name, + String? operation, { + String? description, + DateTime? startTimestamp, + bool? bindToScope, + bool? waitForChildren, + Duration? autoFinishAfter, + bool? trimEnd, + _i2.OnTransactionFinish? onFinish, + Map? customSamplingContext, + }) => + (super.noSuchMethod( + Invocation.method( + #startTransaction, + [ + name, + operation, + ], + { + #description: description, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + #customSamplingContext: customSamplingContext, + }, + ), + returnValue: _FakeISentrySpan_4( + this, + Invocation.method( + #startTransaction, + [ + name, + operation, + ], + { + #description: description, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + #customSamplingContext: customSamplingContext, + }, + ), + ), + ) as _i2.ISentrySpan); + + @override + _i2.ISentrySpan startTransactionWithContext( + _i2.SentryTransactionContext? transactionContext, { + Map? customSamplingContext, + DateTime? startTimestamp, + bool? bindToScope, + bool? waitForChildren, + Duration? autoFinishAfter, + bool? trimEnd, + _i2.OnTransactionFinish? onFinish, + }) => + (super.noSuchMethod( + Invocation.method( + #startTransactionWithContext, + [transactionContext], + { + #customSamplingContext: customSamplingContext, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + }, + ), + returnValue: _FakeISentrySpan_4( + this, + Invocation.method( + #startTransactionWithContext, + [transactionContext], + { + #customSamplingContext: customSamplingContext, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + }, + ), + ), + ) as _i2.ISentrySpan); + + @override + _i5.Future<_i2.SentryId> captureTransaction( + _i2.SentryTransaction? transaction, { + _i2.SentryTraceContextHeader? traceContext, + }) => + (super.noSuchMethod( + Invocation.method( + #captureTransaction, + [transaction], + {#traceContext: traceContext}, + ), + returnValue: _i5.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureTransaction, + [transaction], + {#traceContext: traceContext}, + ), + )), + ) as _i5.Future<_i2.SentryId>); + + @override + void setSpanContext( + dynamic throwable, + _i2.ISentrySpan? span, + String? transaction, + ) => + super.noSuchMethod( + Invocation.method( + #setSpanContext, + [ + throwable, + span, + transaction, + ], + ), + returnValueForMissingStub: null, + ); +} + +/// A class which mocks [LazyDatabase]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockLazyDatabase extends _i1.Mock implements _i6.LazyDatabase { + MockLazyDatabase() { + _i1.throwOnMissingStub(this); + } + + @override + _i6.DatabaseOpener get opener => (super.noSuchMethod( + Invocation.getter(#opener), + returnValue: () => + _i5.Future<_i3.QueryExecutor>.value(_FakeQueryExecutor_5( + this, + Invocation.getter(#opener), + )), + ) as _i6.DatabaseOpener); + + @override + _i3.SqlDialect get dialect => (super.noSuchMethod( + Invocation.getter(#dialect), + returnValue: _i3.SqlDialect.sqlite, + ) as _i3.SqlDialect); + + @override + _i3.TransactionExecutor beginTransaction() => (super.noSuchMethod( + Invocation.method( + #beginTransaction, + [], + ), + returnValue: _FakeTransactionExecutor_6( + this, + Invocation.method( + #beginTransaction, + [], + ), + ), + ) as _i3.TransactionExecutor); + + @override + _i5.Future ensureOpen(_i3.QueryExecutorUser? user) => + (super.noSuchMethod( + Invocation.method( + #ensureOpen, + [user], + ), + returnValue: _i5.Future.value(false), + ) as _i5.Future); + + @override + _i5.Future runBatched(_i3.BatchedStatements? statements) => + (super.noSuchMethod( + Invocation.method( + #runBatched, + [statements], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future runCustom( + String? statement, [ + List? args, + ]) => + (super.noSuchMethod( + Invocation.method( + #runCustom, + [ + statement, + args, + ], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future runDelete( + String? statement, + List? args, + ) => + (super.noSuchMethod( + Invocation.method( + #runDelete, + [ + statement, + args, + ], + ), + returnValue: _i5.Future.value(0), + ) as _i5.Future); + + @override + _i5.Future runInsert( + String? statement, + List? args, + ) => + (super.noSuchMethod( + Invocation.method( + #runInsert, + [ + statement, + args, + ], + ), + returnValue: _i5.Future.value(0), + ) as _i5.Future); + + @override + _i5.Future>> runSelect( + String? statement, + List? args, + ) => + (super.noSuchMethod( + Invocation.method( + #runSelect, + [ + statement, + args, + ], + ), + returnValue: _i5.Future>>.value( + >[]), + ) as _i5.Future>>); + + @override + _i5.Future runUpdate( + String? statement, + List? args, + ) => + (super.noSuchMethod( + Invocation.method( + #runUpdate, + [ + statement, + args, + ], + ), + returnValue: _i5.Future.value(0), + ) as _i5.Future); + + @override + _i5.Future close() => (super.noSuchMethod( + Invocation.method( + #close, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); +} + +/// A class which mocks [TransactionExecutor]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockTransactionExecutor extends _i1.Mock + implements _i3.TransactionExecutor { + MockTransactionExecutor() { + _i1.throwOnMissingStub(this); + } + + @override + bool get supportsNestedTransactions => (super.noSuchMethod( + Invocation.getter(#supportsNestedTransactions), + returnValue: false, + ) as bool); + + @override + _i3.SqlDialect get dialect => (super.noSuchMethod( + Invocation.getter(#dialect), + returnValue: _i3.SqlDialect.sqlite, + ) as _i3.SqlDialect); + + @override + _i5.Future send() => (super.noSuchMethod( + Invocation.method( + #send, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future rollback() => (super.noSuchMethod( + Invocation.method( + #rollback, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future ensureOpen(_i3.QueryExecutorUser? user) => + (super.noSuchMethod( + Invocation.method( + #ensureOpen, + [user], + ), + returnValue: _i5.Future.value(false), + ) as _i5.Future); + + @override + _i5.Future>> runSelect( + String? statement, + List? args, + ) => + (super.noSuchMethod( + Invocation.method( + #runSelect, + [ + statement, + args, + ], + ), + returnValue: _i5.Future>>.value( + >[]), + ) as _i5.Future>>); + + @override + _i5.Future runInsert( + String? statement, + List? args, + ) => + (super.noSuchMethod( + Invocation.method( + #runInsert, + [ + statement, + args, + ], + ), + returnValue: _i5.Future.value(0), + ) as _i5.Future); + + @override + _i5.Future runUpdate( + String? statement, + List? args, + ) => + (super.noSuchMethod( + Invocation.method( + #runUpdate, + [ + statement, + args, + ], + ), + returnValue: _i5.Future.value(0), + ) as _i5.Future); + + @override + _i5.Future runDelete( + String? statement, + List? args, + ) => + (super.noSuchMethod( + Invocation.method( + #runDelete, + [ + statement, + args, + ], + ), + returnValue: _i5.Future.value(0), + ) as _i5.Future); + + @override + _i5.Future runCustom( + String? statement, [ + List? args, + ]) => + (super.noSuchMethod( + Invocation.method( + #runCustom, + [ + statement, + args, + ], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future runBatched(_i3.BatchedStatements? statements) => + (super.noSuchMethod( + Invocation.method( + #runBatched, + [statements], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i3.TransactionExecutor beginTransaction() => (super.noSuchMethod( + Invocation.method( + #beginTransaction, + [], + ), + returnValue: _FakeTransactionExecutor_6( + this, + Invocation.method( + #beginTransaction, + [], + ), + ), + ) as _i3.TransactionExecutor); + + @override + _i5.Future close() => (super.noSuchMethod( + Invocation.method( + #close, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); +} diff --git a/drift/test/sentry_database_test.dart b/drift/test/sentry_database_test.dart new file mode 100644 index 0000000000..2b3dd96536 --- /dev/null +++ b/drift/test/sentry_database_test.dart @@ -0,0 +1,645 @@ +// ignore_for_file: invalid_use_of_internal_member + +@TestOn('vm') + +import 'package:drift/drift.dart'; +import 'package:drift/native.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mockito/mockito.dart'; +import 'package:sentry/sentry.dart'; +import 'package:sentry/src/sentry_tracer.dart'; +import 'package:sentry_drift/src/sentry_query_executor.dart'; +import 'package:sentry_drift/src/sentry_transaction_executor.dart'; +import 'package:sqlite3/open.dart'; + +import 'mocks/mocks.mocks.dart'; +import 'test_database.dart'; +import 'utils/windows_helper.dart'; + +void main() { + open.overrideFor(OperatingSystem.windows, openOnWindows); + + final expectedInsertStatement = + 'INSERT INTO "todo_items" ("title", "body") VALUES (?, ?)'; + final expectedUpdateStatement = + 'UPDATE "todo_items" SET "title" = ?, "body" = ? WHERE "title" = ?;'; + final expectedSelectStatement = 'SELECT * FROM todo_items'; + final expectedDeleteStatement = 'DELETE FROM "todo_items";'; + final expectedCloseStatement = 'Close DB: ${Fixture.dbName}'; + final expectedOpenStatement = 'Open DB: ${Fixture.dbName}'; + final expectedTransactionStatement = 'transaction'; + final withinTransactionDescription = 'Within transaction: '; + + void verifySpan( + String description, + SentrySpan? span, { + String origin = SentryTraceOrigins.autoDbDriftQueryExecutor, + SpanStatus? status, + }) { + status ??= SpanStatus.ok(); + expect(span?.context.operation, SentryQueryExecutor.dbOp); + expect(span?.context.description, description); + expect(span?.status, status); + expect(span?.origin, origin); + expect( + span?.data[SentryQueryExecutor.dbSystemKey], + SentryQueryExecutor.dbSystem, + ); + expect( + span?.data[SentryQueryExecutor.dbNameKey], + Fixture.dbName, + ); + } + + void verifyErrorSpan( + String description, + Exception exception, + SentrySpan? span, { + String origin = SentryTraceOrigins.autoDbDriftQueryExecutor, + }) { + expect(span?.context.operation, SentryQueryExecutor.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.internalError()); + expect(span?.origin, origin); + expect( + span?.data[SentryQueryExecutor.dbSystemKey], + SentryQueryExecutor.dbSystem, + ); + expect( + span?.data[SentryQueryExecutor.dbNameKey], + Fixture.dbName, + ); + + expect(span?.throwable, exception); + } + + Future insertRow(AppDatabase sut, {bool withError = false}) { + if (withError) { + return sut.into(sut.todoItems).insert( + TodoItemsCompanion.insert( + title: '', + content: '', + ), + ); + } else { + return sut.into(sut.todoItems).insert( + TodoItemsCompanion.insert( + title: 'todo: finish drift setup', + content: 'We can now write queries and define our own tables.', + ), + ); + } + } + + Future updateRow(AppDatabase sut, {bool withError = false}) { + if (withError) { + return (sut.update(sut.todoItems) + ..where((tbl) => tbl.title.equals('doesnt exist'))) + .write( + TodoItemsCompanion( + title: Value('after update'), + content: Value('We can now write queries and define our own tables.'), + ), + ); + } else { + return (sut.update(sut.todoItems) + ..where((tbl) => tbl.title.equals('todo: finish drift setup'))) + .write( + TodoItemsCompanion( + title: Value('after update'), + content: Value('We can now write queries and define our own tables.'), + ), + ); + } + } + + group('adds span', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('open span is only added once', () async { + final sut = fixture.sut; + + await insertRow(sut); + await insertRow(sut); + await insertRow(sut); + + final openSpansCount = fixture.tracer.children + .where( + (element) => element.context.description == expectedOpenStatement, + ) + .length; + + expect(openSpansCount, 1); + }); + + test('insert adds span', () async { + final sut = fixture.sut; + + await insertRow(sut); + + verifySpan( + expectedInsertStatement, + fixture.getCreatedSpan(), + ); + }); + + test('update adds span', () async { + final sut = fixture.sut; + + await insertRow(sut); + await updateRow(sut); + + verifySpan( + expectedUpdateStatement, + fixture.getCreatedSpan(), + ); + }); + + test('custom adds span', () async { + final sut = fixture.sut; + + await sut.customStatement('SELECT * FROM todo_items'); + + verifySpan( + expectedSelectStatement, + fixture.getCreatedSpan(), + ); + }); + + test('delete adds span', () async { + final sut = fixture.sut; + + await insertRow(sut); + await fixture.sut.delete(fixture.sut.todoItems).go(); + + verifySpan( + expectedDeleteStatement, + fixture.getCreatedSpan(), + ); + }); + + test('transaction adds insert spans', () async { + final sut = fixture.sut; + + await sut.transaction(() async { + await insertRow(sut); + await insertRow(sut); + }); + + final insertSpanCount = fixture.tracer.children + .where( + (element) => + element.context.description == + '$withinTransactionDescription$expectedInsertStatement', + ) + .length; + expect(insertSpanCount, 2); + + verifySpan( + '$withinTransactionDescription$expectedInsertStatement', + fixture.getCreatedSpan(), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + + verifySpan( + expectedTransactionStatement, + fixture.getCreatedSpanByDescription(expectedTransactionStatement), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + }); + + test('transaction adds update spans', () async { + final sut = fixture.sut; + + await sut.transaction(() async { + await insertRow(sut); + await updateRow(sut); + }); + + final updateSpanCount = fixture.tracer.children + .where( + (element) => + element.context.description == + '$withinTransactionDescription$expectedUpdateStatement', + ) + .length; + expect(updateSpanCount, 1); + + verifySpan( + '$withinTransactionDescription$expectedUpdateStatement', + fixture.getCreatedSpan(), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + + verifySpan( + expectedTransactionStatement, + fixture.getCreatedSpanByDescription(expectedTransactionStatement), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + }); + + test('transaction adds delete spans', () async { + final sut = fixture.sut; + + await sut.transaction(() async { + await insertRow(sut); + await fixture.sut.delete(fixture.sut.todoItems).go(); + }); + + final deleteSpanCount = fixture.tracer.children + .where( + (element) => + element.context.description == + '$withinTransactionDescription$expectedDeleteStatement', + ) + .length; + expect(deleteSpanCount, 1); + + verifySpan( + '$withinTransactionDescription$expectedDeleteStatement', + fixture.getCreatedSpan(), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + + verifySpan( + expectedTransactionStatement, + fixture.getCreatedSpanByDescription(expectedTransactionStatement), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + }); + + test('transaction adds custom spans', () async { + final sut = fixture.sut; + + await sut.transaction(() async { + await insertRow(sut); + await sut.customStatement('SELECT * FROM todo_items'); + }); + + final customSpanCount = fixture.tracer.children + .where( + (element) => + element.context.description == + '$withinTransactionDescription$expectedSelectStatement', + ) + .length; + expect(customSpanCount, 1); + + verifySpan( + '$withinTransactionDescription$expectedSelectStatement', + fixture.getCreatedSpan(), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + + verifySpan( + expectedTransactionStatement, + fixture.getCreatedSpanByDescription(expectedTransactionStatement), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + }); + + test('transaction rollback adds span', () async { + final sut = fixture.sut; + + await insertRow(sut); + await insertRow(sut); + + try { + await sut.transaction(() async { + await insertRow(sut, withError: true); + }); + } catch (_) {} + + verifySpan( + expectedTransactionStatement, + fixture.getCreatedSpan(), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + status: SpanStatus.aborted(), + ); + }); + + test('batch adds span', () async { + final sut = fixture.sut; + + await sut.batch((batch) async { + await insertRow(sut); + await insertRow(sut); + }); + + verifySpan( + 'batch', + fixture.getCreatedSpan(), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + }); + + test('close adds span', () async { + final sut = fixture.sut; + + await sut.close(); + + verifySpan( + 'Close DB: ${Fixture.dbName}', + fixture.getCreatedSpan(), + ); + }); + + test('open adds span', () async { + final sut = fixture.sut; + + // SentryDriftDatabase is by default lazily opened by default so it won't + // create a span until it is actually used. + await sut.select(sut.todoItems).get(); + + verifySpan( + expectedOpenStatement, + fixture.getCreatedSpanByDescription(expectedOpenStatement), + ); + }); + }); + + group('does not add span', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('does not add open span if db is not used', () async { + fixture.sut; + + expect(fixture.tracer.children.isEmpty, true); + }); + + test('batch does not add span for failed operations', () async { + final sut = fixture.sut; + + try { + await sut.batch((batch) async { + await insertRow(sut, withError: true); + await insertRow(sut); + }); + } catch (_) {} + + expect(fixture.tracer.children.isEmpty, true); + }); + }); + + group('adds error span', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(injectMock: true); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.mockLazyDatabase.ensureOpen(any)) + .thenAnswer((_) => Future.value(true)); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('throwing runInsert throws error span', () async { + when(fixture.mockLazyDatabase.runInsert(any, any)) + .thenThrow(fixture.exception); + + try { + await insertRow(fixture.sut); + } catch (exception) { + expect(exception, fixture.exception); + } + + verifyErrorSpan( + expectedInsertStatement, + fixture.exception, + fixture.getCreatedSpan(), + ); + }); + + test('throwing runUpdate throws error span', () async { + when(fixture.mockLazyDatabase.runUpdate(any, any)) + .thenThrow(fixture.exception); + + try { + await updateRow(fixture.sut); + } catch (exception) { + expect(exception, fixture.exception); + } + + verifyErrorSpan( + expectedUpdateStatement, + fixture.exception, + fixture.getCreatedSpan(), + ); + }); + + test('throwing runCustom throws error span', () async { + when(fixture.mockLazyDatabase.runCustom(any, any)) + .thenThrow(fixture.exception); + + try { + await fixture.sut.customStatement('SELECT * FROM todo_items'); + } catch (exception) { + expect(exception, fixture.exception); + } + + verifyErrorSpan( + expectedSelectStatement, + fixture.exception, + fixture.getCreatedSpan(), + ); + }); + + test('throwing transaction throws error span', () async { + final mockTransactionExecutor = MockTransactionExecutor(); + when(mockTransactionExecutor.beginTransaction()) + .thenThrow(fixture.exception); + + try { + // We need to move it inside the try/catch becaue SentryTransactionExecutor + // starts beginTransaction() directly after init + final SentryTransactionExecutor transactionExecutor = + SentryTransactionExecutor( + mockTransactionExecutor, + fixture.hub, + dbName: Fixture.dbName, + ); + + when(fixture.mockLazyDatabase.beginTransaction()) + .thenReturn(transactionExecutor); + + await fixture.sut.transaction(() async { + await insertRow(fixture.sut); + }); + } catch (exception) { + expect(exception, fixture.exception); + } + + verifyErrorSpan( + expectedTransactionStatement, + fixture.exception, + fixture.getCreatedSpan(), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + }); + + test('throwing batch throws error span', () async { + final mockTransactionExecutor = MockTransactionExecutor(); + when(mockTransactionExecutor.beginTransaction()) + .thenThrow(fixture.exception); + + // We need to move it inside the try/catch becaue SentryTransactionExecutor + // starts beginTransaction() directly after init + final SentryTransactionExecutor transactionExecutor = + SentryTransactionExecutor( + mockTransactionExecutor, + fixture.hub, + dbName: Fixture.dbName, + ); + + when(fixture.mockLazyDatabase.beginTransaction()) + .thenReturn(transactionExecutor); + + when(fixture.mockLazyDatabase.runInsert(any, any)) + .thenAnswer((realInvocation) => Future.value(1)); + + try { + await fixture.sut.batch((batch) async { + await insertRow(fixture.sut); + }); + } catch (exception) { + expect(exception, fixture.exception); + } + + verifyErrorSpan( + expectedTransactionStatement, + fixture.exception, + fixture.getCreatedSpan(), + origin: SentryTraceOrigins.autoDbDriftTransactionExecutor, + ); + }); + + test('throwing close throws error span', () async { + when(fixture.mockLazyDatabase.close()).thenThrow(fixture.exception); + when(fixture.mockLazyDatabase.runInsert(any, any)) + .thenAnswer((_) => Future.value(1)); + + try { + await insertRow(fixture.sut); + await fixture.sut.close(); + } catch (exception) { + expect(exception, fixture.exception); + } + + verifyErrorSpan( + expectedCloseStatement, + fixture.exception, + fixture.getCreatedSpan(), + ); + + when(fixture.mockLazyDatabase.close()).thenAnswer((_) => Future.value()); + }); + + test('throwing ensureOpen throws error span', () async { + when(fixture.mockLazyDatabase.ensureOpen(any)) + .thenThrow(fixture.exception); + + try { + await fixture.sut.select(fixture.sut.todoItems).get(); + } catch (exception) { + expect(exception, fixture.exception); + } + + verifyErrorSpan( + expectedOpenStatement, + fixture.exception, + fixture.getCreatedSpanByDescription(expectedOpenStatement), + ); + }); + + test('throwing runDelete throws error span', () async { + when(fixture.mockLazyDatabase.runDelete(any, any)) + .thenThrow(fixture.exception); + + try { + await fixture.sut.delete(fixture.sut.todoItems).go(); + } catch (exception) { + expect(exception, fixture.exception); + } + + verifyErrorSpan( + expectedDeleteStatement, + fixture.exception, + fixture.getCreatedSpan(), + ); + }); + }); +} + +class Fixture { + final options = SentryOptions(); + final hub = MockHub(); + static final dbName = 'people-drift-impl'; + final exception = Exception('fixture-exception'); + final _context = SentryTransactionContext('name', 'operation'); + late final tracer = SentryTracer(_context, hub); + late AppDatabase sut; + final mockLazyDatabase = MockLazyDatabase(); + + Future setUp({bool injectMock = false}) async { + sut = AppDatabase(openConnection(injectMock: injectMock)); + } + + Future tearDown() async { + await sut.close(); + } + + SentrySpan? getCreatedSpan() { + return tracer.children.last; + } + + SentrySpan? getCreatedSpanByDescription(String description) { + return tracer.children + .firstWhere((element) => element.context.description == description); + } + + SentryQueryExecutor openConnection({bool injectMock = false}) { + if (injectMock) { + final executor = + SentryQueryExecutor(() => mockLazyDatabase, databaseName: dbName); + executor.setHub(hub); + return executor; + } else { + return SentryQueryExecutor( + () { + return NativeDatabase.memory(); + }, + hub: hub, + databaseName: dbName, + ); + } + } +} diff --git a/drift/test/sqlite3.dll b/drift/test/sqlite3.dll new file mode 100644 index 0000000000000000000000000000000000000000..1239c35203c895f202e5ee6be32b214dab4898df GIT binary patch literal 3123712 zcmeFa2UwIx*EfE{0s?{y3W^0qMa7Q60>Q!x=)Jlq_Fhrc*k#ue8@i&dw-`7|9fHXXfUK z=sH(W2!ddT|IB7V*n?mG3z5@*PTXt+p-8#CMTDJB$II`r(Ht+|e&C=OpAn;m4;a;F zs83X%VZ(-NefswI8KoQMGiaDkSnGB^Lx=b4U(40i+1JXtvruO zQ10@&L;D%>Z~OKE@^72=?lNAR4vXX4Mvs6~*tv zn!@^#a*M1*xwha{0zU!Ogg{G8zUhcBstF+ypN}B)t~IJ(A8j8&m~s@%dIRSeep})9gMT5IPPHs(!jY{2_}3JK+4wDm-w*zU z2ts155f;Qliy$oeDlEqD+P~q2)EZ>LQ=;$ei{ORd#`yi6%y z9q~83rl|ct`tKP3=quzbzh73!DOae1kkirNBjnhOuPo%0Sz2Dmc~KK} z75tDq`vJ-PmlcJa7=Hl1E{DWki(-hqjgT`SqLPp^ClF*2D}X0PA-AXvk{|CVgq)F8 z0ezYUigi=bf&IFH=ywLrPl2Tj&*g5=k}NaijAAmf<={WuS@ z1w@HF1uiSuWGN9)_c37bbQkzlDT-XFK;*`eBIHXzD>g>5^c;%!N%r(P>nP-|onZAt zClu%Zg51GM;FsD6v6qwxDj& zRpj2WzxO8rFrf=ry{Hc^sU3ivGYWOnhN13iL-goz3s96C4QSvIKv$mxplcS|2(kg7 zdmo@Is*k!8rIEDpMZ0B;5V!Rja2ZvMcvFx|e+lH)JHe&GIZ)WQ0;_2^fw$!q#JC~= z<+tfTK2{mf!PN6Y>gDh)*7X4L?xH}+?v6HoevGM6loyq zo17v5uNF`YbpY^UlQ#+2#laiLqRT?G5&9ar?Te+4c-`JxS%(x45#59qfy0Py|}w0q(}7CIWaFNw0^I#^As zjP*8nJ;+L#Q0JbAx^(uu_E6wCC~Yv;PC%d;VL5HgQ)10kwy!RduOk8I6Ay~zTxByHpqv&i$dzo0 zI*|siL>iJ=O4Qlx1=FX!L1w-i=7G35~YwEMOn(ze66D3gE@=0 zuR`6(nn1aC42ix6lE=@$rArUA;W!W|>u50_I|ENw1jTEG?S!0mZ@{J5Gib6TyD+=5 z4dzP`;I;KZGSm&oUPXWx90qA4k#dPjCsXh1M1ZfYyB# z>c%RO1SEq?(MN)iQ|}xo%5Wv$sf>2-{tm#lpOBn>0j8^80C4vtDBd0f)Arwh%SKu$ z=TRsoRX}lewgP&-0E#)Be2!1O_*IqqzAYw3}1~WT%@0Fy=Xs<$16`0MpKD)KzpsZqi-g zMLYwUrXf%UsF8e6WAxi$aM?KqNybYQ8#DQ-43f?}6zFd@0AF!8=zk3qzW$iZ;=)04nVUUTkS3-O7S<+2H`FS)4f=$p9M5 zX6)(`HvV!0pjC>1!NpY2Rvm`orpLfrRtfCymIlginNXc?XNWQUHHv=_x?ly8t-j#W zybkK74+6C6KqPf($4k?r7}f|-cN*2+jZt@L0Qfo6*>Rc!z_BwZP9Be>@@mu_xd;gc z)(0!abwI0;eIxE~PyJE1`Y+TuBtq~bv@dfz01&pO{|z7P@xpa#&O|j`XkqzbzgF1 ze*PX5FMZJNWGdnYO^__hvDv8WMGf7Z3xOVW05r0U4eUXGfc@Nsz`Lpe zbWRQAdTfA@F6`w^Zt53lrE<6n&E^CtL^sNT7S5jT%v^45ixwdFwF!Va9GQMu=!fzc zl0RaBr{ki#w;WJqLlk>*mK<-1+{^n&cC&9c7J#f0?ZzR_*uUn3cJDpN_v#Q5w|M}V zynwfzVyxi8KFtL-crm(Fi-vYVD4^}>Nnc$I!1Vq=iKowXdJx*pbO3|YM9`L}bu?0p z5--tE(_^G<4qD&aAZvF6#cK4f$KfcNH@ME=a8I@1|Vk;>IPm%vB?AEDp1Jl zGr{!tiO8KB2MIdTg8XKNRQC=7*XyJLb0ZP_$~%Fg zVNK-L5qZvOBy}bO>RT0f4Whwx?KU*zdIEJbZ&1FWK#o3)y5n5z{?tLcpCM4HKk6=I zAlXTCz3w0+Si2of8o1%Ep*y{iqAm3Vv=7a--yzghzYL0DOHmv&2a0$TkD{5LLSKsZ zQ$^%@Bczj4otzIWLU9StDd*23r_4a#j(!b1cV{I1DCxm^NXk0ez-Rpn(76);n9L(` z_DXPh6a{g88za|iEAXBd1zvf3K=*T?R`T5VfE(KJtLU#lzhqGZw3dAZfN|-l>r783 zhR3v}>`^7UQS*BNrJWj_o6(a#IZFUP3RGwxa!Z|o+{P0fwA+j(H$DR1Qu@1f*um2q zfl`dt;shO*A2{{GxQi>Ormi$@5!_f#Q?O~8g_MGdjNV~0Lstoppna2$@N?O3F?l}P)wtTT=5T(HA?}-&~hjq zDu!fyS)eR@0OTG`P#n@5xqVvXu5d$3x(TS}G?KwfP`9fL>JoSoNgRNNmN6;CzSS8C z6r;iieQO7lZ|#9nuQ33(WPg%tzh^NNFK+{v?(>jHO`zDR^vuuP18uAsb<4QG4)B1L za9bhdXt#sa3;MS2#sII!4RFcg@md;;x@vkbQ2hoxM-RvxdIu;i7J$JSnySu|0Eik5 zR&5^x*}Dr^E#|WShQXCqcHr_X8AAFc0l7JK?>rIw;)((9=?T;gNC55kEx~V4Thxu^ zf>7*4agqmURgaN`(K=>ukxZoyI_NU-2FEmyfJHjs}~puhDn#6e;w*$El z4)Qr}EG_759Q^M`u9#c z)P-~aUIPgXM)4dqlqP(H9RN|BDzDc=G<|j0?h{w6c^^uH=2HC1jAS*=k-}EN< z9XBG^k70syrGV1)0UG)>9*KArtkQZR=@<@xCr?0ixgT{aiQH?l@4-mNTzjCb<9W4I zC*WP@mMZ=Mrl&>#WkWEU^z;Cr%uWX*pW+;?eE9QGlM{BDp}TJdj4~8@4g)E|MM!$num2?Iulu?7&&q=NbTS zxD_3w#k?UQSLrCo&fC~wjNTwumSKz}I)0_K;swwBf~|Vif(gWcn{ZZv~1EXNmp*m|mQV%q)9q=^*2}0;TpvoxKuuzTA(-d<_O&pCM^;8C>Qw zDcl{!3I~C#dyT}8r@&%60BFS~>u{>9;;xp-xXk=+co>D;T?w?s8A!?b8M!@6 zL2-~WXAcG5eI@D|9zfj=o(=Yn1;rFD@$MNwDV++k*Hr8o6_PzAkSMRB)06hH?lD?( z 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 av?>m291LcTF1={ZKU16c#ItIq=U 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

X+`x~9cU+RWUJ!i<+;c)OuBV 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ϯ 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%0A8;;mI3 ztsy#ZZMOBg;)676{0~*WHS|Gw;@08?*{d|Ij_S_a|-6Kx;me`$z|xeWT~OQ_g&{$uaz9ryU3|D zFkMhYrIeARudH4 z5=>4b9?Mlf6Fqo_ABog2t#S9@HkSR{+{S}~jFz7(?9qb`d*t5a-VxXp(t@8L>}p&f zbJNvdx-Y}f7WdN@SG$xkz8+W;(=dpOHWSpbuDFn#m_Hi~?S%yw9&AGAKdzp!+j6KNyUqhsh1 zCG1WSpl!Y#?v28#=t&f{wq2(BrV{Y6mSv8}Gta6Dv}>(PfONsYMM14q#$nd|Otv*k z&H`f3r+WUVV3DzV&9mzAL)9{~hr+=e3i){eW-1IgW3|_|{JOmV393p;vUE z#7+VY8t$4!)-VnLdwiBcFrh_ch21L=0yp+jyESzJeoEvA>zS20vUzs4{7?fz)?7Es zYT*k2HO@twSu-yfz_0tuAuaL>uCYQTZv@?M=dlf%vk26kw-{D2>- zHwBUUraQv*8$rtD*17HU#=ToX4HBONO3|ftB8LvxS;&U22~30<+(@b zB`?#6;jW!Qc{Z0+`Src{5paKO)W4|Oc#gCnmmG&cEe75DbaNk+?j4TSw+;2JLTqz|)0)S0pm2MIa z7*mpgg2~M1Y7#L)6xJ$0csMaROWf{jEqj>&$q@m8k^>|{Y>zI^e9i9wz8Nz`UUt*g zb=Zn$%oM|pnc_m4A=_rU$#$4-vTddt&ZnE{7B1&ci`|Ope*3o>kiYFaT_FElzN*kx zuDqnZVH+c}a4LcAPNl3v-#$rZk3kGn&DA_;UGWpeb?ajB3*iym z2~p3TtTITdQ&`bUVY(kL7DE%{qd{Aad$Hhbj~Fgy81Joj9>91{Wm5{5FoCC%@<0V3 zDHcERzr5zz<eoSS)O#RBq}Pij2CuvNo8F^&>3-G=~db-RUdOxOoZRayX!|(RfHbVTE{`Vplf?v z9L^)*lnA9F;;dU2st6(5Kb>rjg#+F;aXPe?2V@&3Li_D`Z@S=6)h8;_l8FK@W7&5W zcNGw4u0_oGp!M_biVdC!I05kwDgh_r2?U(?KPXD|mZtO}AONlE(%g7I2GM_?&x>wO9DM z(yo2>7HR4N=#S+k?cH)pW`&dTCih0KR7JeQol30m5>f=*k~x;w9%Hy){aj;x`XgoA zS7UYnYPSFeWhLs?)l@VI$bDHrZcIR~acmdJ4HjjDoc$t1W6glvt7yqK?z>#wepW4o zE=^a>OiV_8uJph>R#~~i~oU;SyYtDm3^|+dI*+O zm>w}e?+MW>mUTn)i}r`;H9&MR^Aj`lL#FqD=ykojA$ot_brGsQ1J9+45#derIgCuT zhY{$oUmeT-bRha*@V^KKbqeB%*Br=a@tPfWTbPtP3Awt%np~NMQK|1b~92skVM#OrU zA|YuRA*(Ltylbu2A2?RIcyau@vMTKBYV7bLUFA`BT3Z`46N!vef6T z@sEn*EG?MKJ4#MCvL2E1RL#E@nP2SE`8tu2DBjC@a+!kooU8$ISV=YO9uJyTRo18CIA9e!@7M63|`OcPZeSM^UMGc&X&0qG_)lS4qN$P^n zS)(&Z|7S|o!-eA!slhGPvPQF{XO85cY(p?P!sXuX-W-_xVstX%19)Qa>|~;IJ--6{!%Do@BJBL2F$mXw1wnLaeq#+$^E#SDsIP z^?-=gWU)l9ri)ySu%&qtP_L(8O^MO>7pz_Js0h}AMU^R^ju!_d0qqj4HT^uZzoJ9C z_E#r~ilw+yUeexe#hDX)i@XW5akVPqJ=3Yg{#r(g!)%<*tKC;!A(vPnQXhI;7dIpQ ztj(AR@YHcH$9b`ywtrf=b5*kS($5&D>g^$RWqZ0}kB8geJkF@E%8R(SXEyC{0p!ey zNF<}&-f+|qYVtmZ-IbZV(`8<467>NR)fAmCFKO?+$7d$* z9C?$;J5?3&W;>ObyqigJCNG~?yRWfn%oB6O#96=ki`Wk7X-~s>ip;OWM2X zTbZ$ZU*2Ram#8A%)0|3-<#AG+u^5th(=st?=?X+O<@~Shs_oZgk@HP6-^{=_Gw{s} zd@}>z%)mD@@XZW-wHe?Fgw{V>>pudIub!;A_{+s#I7EBBjyW^FF)_`}?i>gO)YIs^ z$0x)-+^76O8uha=;NMKmLPPX|vvKiQf$P2w-A8rEtuC*PwksY?s}@x#^KdDSJwmDB z8tKs%Yb~p0kJlDYIEaNRmO`WciGk{nuEs~uI9?@69Zt&ey8LWsV&q`1-MKpw#J)?+ zp_A?#JormJu#-K;_*GuTqimt_4r@CqEmfYic1W*g2#dE9WrOXpJk~cksuxz;rQ*F) z%x;)T%x~J1Kf|@wz(ok#hTnB7bgj85imi_Khl9H)+e3aRlr1(6e<2^rcHa>h%Juk908FcTiK|gZ144RxDOOENi)TwlIy5JpBQtWCnXUl6p`M7-9NR*}ZVsjLh z9P|`RnN!ROc^Jf)ZDJnKWv?vO56SaArjeI!4?L@lc{VYDfVP$^_NH@Z0k^J9>DO>m z!Jbi>Pjp52y0QiGL&wx73Rb~A@&BAXUBzNuPB8JtUX--wIRm0~Dd z6*NDVCO9>-O1q5uq>WQm8%FX5!Wo2K6ElRsyyC{!v8d{ z=1U-C;u9{mYfHSG*+*;v_YJ^Y~$NM#b_Qvf5 z<4_a(Ip}K*fHzXV0k{3ArrIT*5Rpkddh%>nQCnp*YK~`VENDJm6IjytcXP>7{lKsv zwtqRoiW2oDVrCnUWqnJ0B+9^FQvNoyC$lR3v-+xd!nqRM^<8ySq$c6k6XQHJ+LIna zi8X0AH&V%&yy3IX+nEN}wP;!Q_s%jG+`Q&K1o`fDYU0w{aC)!ffd%0a#<`#}+~YHk zcz~94tP2jBE-pA9bijxozY+reJvpy}G@q@(vcXnC$#9GEV+5kLR?4_1Gy zx0FoQy0pdFmB+;VMEWVujvlF(td}{l%QL}Uv(wTRC0Ndq)OujdHI+jEs83s`%+C`m zCpCL4{3@$oa~^hYF+5im)H`MR?q9}m)$mRG>(&;Wv0H!io8DRX^Y^P?_s)8pztOyx@plA&_58W{ zo5SBm@>2Zm;XNzwpZ(`j1+v{axrg-XS=Q6@$LGBF{+x7`+$XPZ_qqQ6>s#|4|E$A| zN4ube_N$fGA7VqO{o)2?#_!MrT)N}BZ`XCZ_&Ze*^K#J4647JqN!+d+y6F{lK5d~2 zl#&cV+_ot9ZprgpJ@zNIFLHaY)YJ=+=(h|4>Y&#a;l9|=;M?0@_HNkRhf-5(`9!vr z3ZgKJ*eo+63ZDG!R|;uXe)7 zu8MEV4)$FId<6pHLO+}MZdlgft5UOV=S3cDZRd&>r*9_Ci4AjJVRJ)1S7}n>=ciTS z%Xgz!DLw(y#W2nmgMn#;JgMPJragXfR3^5bcnrmTk~1lpY0v{q&Vo<57c9kuBJHRW zl0yIhp7WY{0}xbo3wkGmnCyZH{0D8$EXe=zQ{o%2%;$2M(k~dn%>CZS(6nV37_}4$ zV!^V)7fEva*{m><*Rjgu<^CtPy;)Q!MCD3H=CmBtJa-Cf3$a@zvFub1Mx`UIjs>FV zj`mV1;(KqkRrhPTIm9AF%&lTs(I2_GFoO`7wl}PAb={=A!4wXLjMSl+i%S%D{n0jN z&zejIW+%N90q*dpMNyu3plBLhF5^nb14V_rg`c3H{Ku8^zp0Sjdc|D!teEhr%iZDR z1+Y)%&Mx{pY@S98rw=9myD}p3pg@3I6F+?HKDT;6q9;b~HWH()#JKI&Pj6R1*&QL; zi|Lli<~WSpR~zPNOUhZZy9;zw3;q-5or&uS!?VJJGlWt-FwfU`vm%EHa2tk%@^$O~ zbTsdT8Mm)C%CQlxne>|Oy(#9$2UawVy_GzcbF|MKKu;k-M>CF*9_#rZsX_DuQrQ1NSdH|lh92um!Gf^mV}427 zkEn~le8AAgTGC1A!Ek(;8c;B>TU$`iIgwlQ{&4aJ?8b=lD)eI+8)5D+>A&B$pP&bf zWaM^{21Iis0XH%9;3f+0$ipLYwU3!%h61}Ax%oG~sIVppw=0LfYy<6_5ENCvrzTld zO3XILx%P+<9u$|o9KlO~xGoSsm$KQ!f17N-iir#X z@dDI%hnhQsUROl|Tjl0K;HC_x`E73(r+FWV%GCT^Uf?tr<%x!Rjjf?Riy!HN6D7y= ze##F4jVO-3M~ZXtMB`N`@CEjXCEVbQ8#y#LEt4Znpw$b6<^Nv>B>zX6SMm~dpL~LH z%ra2|HWA&-tf(;?{O~^w@rDbsqGO1)Q;2;?GVIqAToGr=Ptk@1Ws%SJHH$aqfy8|( zG%B)V{o*(JvgUeplEaeP7Te9!Y%JM1AVir6O(NhPSyxaLZ`fD@ZU5frsTa z$x8vM;_F0=M%CqiJuu6sCFTB3*c@CGpHt}4Zuz4$9iLN<@xgt(hB4pc^)6nU=N!%3 zZR*n_OM~W2j%_VS_jZMJ5~F=whS6GnL%umWUpN1O+42o%x2}4$iWDsb>AE`{*mu2_ z;h%_^9oTmrmw~SESp9Amz#VHsL?kvdGk;3h2Tlf9(P?~6KD*QQYR!9*nTvUHe!PYmczXXh8n+wf)ly(1r}(C9xV~On)zL}D!oGBh}dL( zC`YcB!UyRUj?V$*6h^7-WdeaOaK*$LNL0wA#ZJRWAUcFwKUNVg36;Z#);0ywwEq&i zTP=o4RwU4VDT**x1^$z^^5@cHX0~`eNL(il3<;nTLh+rv!37f5TKgR#hf>{S&+CQZ#Hd0MzZAsxx}ts9f)&?;kCmZEl1t<14QVE zRXTKIsQh#`OR(=sb>5*LtILOF$94%W6bq6b^y5R51Zirmo9PQQq;mmsUSY6&X1*5u zhaw~;{yN?q8wDej>*?j;cn5^!3<${)X(`GxIkcKg;Y=2ZybFVV7d-ZSws)E!x&&lR$QTD}MmNMW;6?3z^= z>xvtT=Mqx+yo~%SVh+&bH|Au;z7sY_6ov!Kq7p(UdOUac3bSIpAlRCYNaYG)m>)5p zAzV$^+<-Z;5b8y7o{7)s!{gk`xvyiEaf1$x$sWT*cndDK~PtdsJDW$P7Q@2m<7&H;yh1HV$P-- zB>xpt2|Bu-LlFe+64^Ek&Blt>B(C3@yn@SjA0X`Wl~2qkfQ|_wY>RrsffvlB+FfnI zz{=<$Ff#Zy&Y^2}nu3~0o zRwvpdHIqC|F3!*MDb37SxpZNFp^Xq9U0_ksf|8hXB>}a7L-<^xcxA?N+&Lx5{<>fNCPW9pkpsSbT>4|k4C|%JkUl?{> z<`=Xo@i8ZKg~w!S&f}Q8ubd`bTvS{3ZWsTngvE)g!TTS<=})Y#E%zI7tW>7_O1 zC%1-8w&tipz2d6ESRSDV8c#8w(H6C*;59eRJC^sm+M$&X7dvg6#8RYVdV)Zg5G>rp zifeMP#}vP-%ZJtV!NLs04zodz-9&nvj{=;Td(DwKiBJy2OCrQP2#FOc zl<&!`th0{f_^UlFLTqM(4vAaAe|>{H<83VRiQ-j4ub#zN_r!O*=1zxGupKV`cGqg><5}um&P8rbSSF9E+BO81w8aFVA`T_D|VbvD^y76LZ7g+wq)X z?jI7WR3MyBj)(Wk?=S8=b}J;d{xmnaYTL z-J~j%yxtY$q!Gu&2|!#iu{;_fR7BEHI(E*)=??#>`+|ay2%f4CQXXeG@B#=aU_}u_ zz7HYag^wh@MV0V3#i?E>GnvRzG5Y@pRPsZd$qF6P`6B@n@Ku~v77yW^QYUwv=ZM)K znOub2(on@k1i8MB@-@jD{SLneBUzY5pbMHqr3K~AE)tw6!ceD=tD^KV99Zx4F=8$W znQOcH7zwPfr9z09pu|CI(K-o05G=nUKX#H~y17mQ*|B|IuhbA8O^kaqV3|Q~wBCD9 z`mS`w!NiP8L5ob(--NxqpAH4h%@Q*Ax}44koi0Oy+o9|g3>v>o&0v2)3wiWdX0Scb z**$~s=0Kc{iUs+Dz%QnzG<9xRg+_2A!HS;MJcl6$>9)iZlpgj59iJ+FJh4X~NAKT9 zc3^`V+I0*~HAjV%rOL1GX5z0H$ptFrwdCHTM!FQ~Vxe{Dd-TK3VkUB! zST0cQ3?{A@ET>puBtw%$Hbiji{b1Jr}9YOs%(YdR5 ziq#RgK(DCs3F;r=IjA;d%^HDczMlH$-lBib$>^Ui`WN)i5mSe(H8<)N6Mb`!4kwMC z{!7IkDjD{qmk#^(s|@gh*MC+*!BWk*xK#bxZiqZMpSw8ZiJ6)AbfFsLL%IBy5RTnlJ4O-_Hmbd znDxVtn_Xdcp>?CGu+Dn_1o-*nXus9Dwl7zIUcVyK+s)D?ySHOhSLp4h2jgUk#tC=9O5d_rbB1m^iHwtHZ!+$8$Gl&N+KdP>d!*}|2L&V)E198 zTEti_Ma>Fyy)Af*x$Knv*&y4uoR`x1!J=V_>wNe{ntP(vaGjD$BHdX{)Q()Mw`uE= z${hzreIA8Q&gzW9%GcC~3JC~7fDB!Y2k@U`4?F+*a@A(|EYqGLxm zIk_}kvK-9)3cl<%39z0SNzSk$$%d^2ZQ6#ej|;`Yq8TmM2aTHG`x&J zT`TWbxG?1~@aZwhyb?ZEh?~7&p-=t+rAic4H?W_Jc8UDKRyHxPTajSr92Ir1$Z|E8 z<1(poh}ODKEeeiZiLe)6D%1(!GO%4+Ao>}RvewGxEe|L0Imp-%vYx8{jXI3dl4-h; zR}_C4c`;b9{?pOPVW$gD9Rr8nq#MaOdouoRL>DIdG?ZcR1lCovm7b}W6j{;B)qEzR zYdiX{;N-?<1-}PY%!M)EUQ@!wx=>+yx%4t%HU5`9H{$$Fglf%=MZ<8xsP9_A53Y?} zt9n@H!~0f#e2Er#_J(jzA@?SDxWK0CF*1Fb=XJZe1n#j;o+&#CF}j)(L=0=K1#u($qRzVqZI?OnN}M+dLxN4lWS?%=na4vqw`kdoqlJ=My2?HsFiB^y##-Ud4DXpsCy zP}x~YrYh>S+j&hIWm-G@0eZaPY?W=FdL!AQAWkH(J32|+6^xG$|HCDMGcwT`kERX4 zM7m%-$#i#+bXNi6j_pp)ZzKo*Uy>sT34BOO#{UGGcbcFAh@vHjv|T+N(O@@5S&CA4}-MT zR$J@E-qzYxZ7qUgO<0m3vWN>&s^ZFtBMK@IQJnwxdC!?7P`uaH-rjqEfBAgEyyxB5 z=Y8I16*y=y`v0H8wf;BYi2`y9(-<9)_aCz$@5VkFJ839g<1u&F+6^k;il;c7dG zqiNoVR}@ZX%R>?=>teYnM5+9yf!bp0;j!2F(852$z(RznYR-h3a0`f}8>5p)a7DNU zNt!lo3CA31ZY6(W-3O^gpwtt<+QPmHjW2mg=`4a@%RPlr#Cnn}E2dCK< zeI_|jyte0I^bQ`HH~@f0z17TDPy;D5z`|77(QB2sfaj)xwY^mNcHyrJEdxBGyG?HO zglB|c1YW`I|Jg`E7e35exW#7^#deD<=JB1lun1wkK>z*|A?8Y!{rr@Rn#)pcR1C~>=!-Gey<;?d!FZ%D++Q4q&g() zY(m#;7IbfPBTr6b6m3Uk;!wbapq{&-dtB06{Qhjp}`m}hYgTD2; zhZ!)&=7kejRN-icozGnu_YcXH|N4#Kzk%Vz@Z7L-&8T?pkjnVDAvxwxW~vMRh{|UF zkUm_P$c88uw#=nX=+_#Qe+W!1!)JxaBcfCB4CGsK+Qo*t?`egw1_&zo5mWFF-HV4wI( zLPDD!Qxc|$ll8=)$3Go}jZQB%aYp8Zxt9k7_q}p#BNd++HZCqASM*&u&O%K_{=e$| zu(3K^ynfmeB6AGi!KrRs@S+PL2Cn;_@w@6Y-PIGM3#f+AiM4L> z9>!W$@MPbLM&A8`?D720I<-+{qk#F$V2AlIx!W_G0(!-6z9KYnoAgs1U2lHz9gP9U zI{Ii0V$6Gq(VS|Ib)2mwYWeaTb4wVO`Qtl}bg0L1!-Fz)2E5@;gZ=9-W$3Y|ln|1b zRR$7nGMoS0L*~OA{XABPb~eXaD3%eQF+`8gD2va4I5%SqgxZp6EwMGE;Jc&pG@5gG z%Wk|HN-msGP+O{*@~GGv>TGHzO@aATXE(>zk{d@=>&=SJ{@43hM584x}ruj~6oaXa1Msw@t9Gwy6wwjZZJPQ1|N<8oO`eTOKzO65v z@6e4O$|le`Ky$ea7H_Nhmy1xydr6P~Nvf56b&p^Mts`DJ1PRtYr8|`%m>&PFB**7s zaBXGbQkAoF(QcfGZST~TTEnRfPkSQPNV1+-q&BOu88M}5@N1`8eUaD-{e_AS#_y;j zmmiwYQhwpJYYlA#Km^LKuGSWdsdlgew&5T53~~s3a*F1V{lfilg6wNUN=nSJcAKye z@*4J5=gLJsqoYiBewKv$-}^~qq8u&0G4f+pdV4X*1Ndj|H%)tTyK7dz6{$C%dY;&{ z!r|q&chj^uPK~gCK6Xgm9Oe9YOEeSjBw6P4KkQF2D+hOF7F`J%YA~Q5@rolvycnUl zYHg9u!pnG<(yor1b=ix-_`fgYr~MuNV{j|_Bl^JU0-RXs0GIYwmER+)Ih5nF;9Bc^ z%?>~|Tk+(it|PT|W%@|nL&zLYhIBpcF;z+D9$k6KVUEKSf3%Ln1(;l9(;B0 zZa$;#4@wP8-9&%PB~t`hwECAk135B|z!jMOQpwxRo4O}!7-2JLI=#*!M1gacHOV=G zBzQsVxdANje_<#w=+7St`1gYh1OMe!!#b^_d-W}do0`DQ{QXM-v zn7${TM(7xGL`S)fgTip$9G@^# zdiuiGx-h=Y^xrxI>b*Mwhh(V5f-(T@q7Wx9@+PP7f0LbOb4 z7y8PN6LFqBaw$(tB3Ejqr#OF)TVy&Wbz%@)S&9jZYN`NOmw5$pq+xIpi57zXMEX@e znYZQ@yrJajNQ-SyvO#91i$4jizEUORVj^t(Qoqq+_^$99zZTd>7QeCJQ9=~*$A2%O zc!K~(^JQr9bWv-#Or%B zWPgo`-}5jX`DJw+QFFk^7c{+!x=$c83}Ep)!3!o z-Q+h+!83j3*;<2$ju~xu+y*s&UrQXwq%Fu%W8_6w7K~sAPublnGmAQUqfUxQ6~?vw zPACe|lGxMId)fj2thy3gWBv@Sp;2Nyzn2cwjtNHA)>WXiJ;Gva&`sW-?1<;gbvd-F z#)LerYWfzMw)1NZ*Ye@R!$4}S5b3Eu-XJwHOR)8E?nq-^N7RiSf458-%PNC~nk zQQ0w}oMc;kmr>SS%1&nwmt4v4RA9d2kf-h4SI2^Yet3!KI z#`G6v*p>S%>-9+q8Nac^X5Q1h)J`ol)dt1-d?e;H|bFsM{=};$gdX*M+YoA`VvxAXl28IZi6vpLG z0W14{?Xl_fzA9ZMl1-&so70n!V~E=`VTM^d+PoK*m5ix9PGmT;)-u8Bgf7HwjNSb? z2ie?zhD?sbdYChwwOskUIsX}kq4KmU4|7FgDdV<1y)lMZWSQ^iV7$ie=Rf4=mF;ap zKmR8bus5w%pWwrI9X~cbA$Q;hbmi=m=qqwao6JRz^;Ufap!ZR0;rxiI)ILl`BtluH zXEi>T)xi3`Y@3Dslc(qlK3B^R*=e=yOW|#{)xt}=*8TheN|bXwbT)JJa5?WtgfO$hp+HDL zmRM9Y{UQpc@E!PYksZF`y#W2^~**oaDJVp6#*8JnqxpINfXWyk0vh%^$>HC2*pfq5hM*8|v@h-B5q7 zRAX-YMCxe7oTz8x{7mDOf+B`vW*kRjfm z>M{CCCUu3#@y1f%lIW2Zg3evt+lq^pY4v|aFGc9}6FDu@g)OWD7NjTUZTsj37b?{) z7R3!Dwg);8*9DqRm7O*0$8x&42)Tl}Jh3-`Krk}8P@nO9 zS;ChQbY4<~lbFKzc`d^fr5?#?WgC~>iQCa(+|R>dh#)79d#o}7CBc+v@(qWgfNvfF zSOfnf!y%TJcPgkgO-OFB<d{}waxrH@lBDI#dM+yXtwbJhwLsFNj!j~8?wlgJm^v^jz!clHvi7#+e zHQ5-$?B9!ZTp+cDP@p*{_)Z#8#|C5jJHO3v{DUafx5d7lfv=na^}guF^n#6vICfAd zeTrZ7N+)x%p3Tjjm}>Nuod*7=C*TaqwijfDM>E;W5GyGWyb*-0$YSRtd|tDBr64dI ztMVBY(W&0D8~Q~rjrE`*FI+J>KUddhF`YK!k60RB7^A()A#_t)To5XWHGp$U7|@Dptk zV$l|80$}%$-F`+SH$^HxB!QIcp6AuK#l-RQk;*?oWpRBXDHJM5KfRJH~ut4(C@MoqtI}*ZH(X_g5^H^Mc(u;}mV5{UQxSLuIkK?yP99(skvd3bCb;%(9HV z7y-0FYg&sq%tKlkSG2b|#V53_c|{N;$DJ(%KWp2qt23vc&e^z)kbwTJ*=x~t6rLh*e*>!LTjCKaG7el!fM)O7Xr%t zfEarYjFND(x5SSs=ZZS_R4tE@Ghuw(^?17wC3yH+6U`ppc^Fx`}dM! z!PLU8)*iDGZ&StQPM0>2ox1s;Hr`cvXya}Pq+G92ZRdySBBczvZ!^;qzr9iqNzFS!-)?4Xz*(gdvqbT>>fBW9#@)Y{DrL zl9cmR7MErh5}{}Jyyf{IWdwRZn}ihP>%qs7zTQnZ%p0Ic8JOyljFJb1 zb<3X}#>B=ImY9EfM+gxiWK?Z~q&{Qa^X=r$h--dKxc!5ByQ}|nT$Uej5!RmY^^0x4 zz`8^d=M=pPGi6zBN$fLcG+*eY>&^Uo_T#~|QgTU(I-If3GDI77eOFi7FFHXEuADm1 zP?q<s@E z5E)1z<%FD#GVfhMXIC(jy0YXm=)~95c0`MtFvfO7S1{WS9^9jYPr27JLsArqjO-T{ zrt1EHoUr57kcPQo=*x_IMP^>nfkiu73+#%OXGBk~hq}F)qu88T>VT|#D|SHY8wGqt zR;O0uXw%UyBD=!`o+6AJQh8CuP$_0HD>P$O(kS7mpMF;*9kC_qj(n(L3x?>CMA z-0>*|vN^o$j3Q-Kr7;~kcuxPBUo!h{1niXPA$^m%M0+75R--V5SW^h?&_vIXg^Id_ z7k)!9-Uq5e(iBz^dg?-YNNz*Vp(L27Muqm}vh3)wAr$tx9z(@%K*99)7L^|{;#ZbY z^^rvME%B9Qo;N#>s*v2u5sxO}_*uz&s7*Is3!}d*(Gqo=h(|Fi^h0KisRJDOCjaB2 zM9P$~VglLvj{+;pN_U1Mhz*{?yA*RH9DDNWNQRJgOk)ki>|SZG4a zSESyKa(bq!C+60z{|QLz#(`!2!~%n(onbnk$GWjFS`bYrvWlSdC$sp4mZ5wLl+lS@r;(u2$z_C3SmgSlVN=s{a)7* zPIwz1OE7apcro_5yT*(SoqDcZc9(M5O<2wCWMP@l5viU>b0v^+ty#s7y6kS2kUX3& zQdwLl*o816{3~LRHj1Cg{w{+GW$Eat%!QIUekQ5ila$8GK{5Z#Gw}D+3%-K=8W#4Y3qzvSw z)yJpl#UrTCi7(ujq&|OXYoJtF_?ojrTlQ=^y0nSCSGsE7CvqBc4%0}tMpb(P1EGU* zvgJg(Ejzu&9HcMWL&i;RXUfbx-`egavY{ggEe=!zlB?~`OS<-bACfx_*F9aaH-(kj zNo@EAIvX}#m;G!UC7j*s(&IrFIv97_L>_-aKT-%hbu~Ro9ML^YC0nKXWZ@g8^E03R zUM0g4{We$=u!=d=G5#{=J)yxi?c1jtnJ)+9Jwow*FI#Oz?@z4`##ZNeCiSaXAcWK_ z@qa! z?FU!So$Rl~AnS-DMs_f9S=Qzhz$75POyHDPAePRC#Zd6yY=Lg8^Un{e^;Y;_tQ=NK zlZC}ZM*zR8hBY+K>3%=}o+Q^GvSOcPz^9oW|mRDHgnlYlUGc^&&i2KGEL9}_R2OCb0sVx$h zVV-vFt`dG3LypIcW+FQ_&KNb(x}dzeB{VG7#&qQ9a#-z*)z8&=ULV55vu&9-&RQNw_shlWV5OL{N&kP(U z{)!LbhyS}wL!@#XqJ;3GA@PTtqY8K=50%Qx0?ctfEu{Cew4@X!7_VyTSZV4VZWn1s zW)`WPPm@FG9TLycbEFbr@>iGN_6FsDA?3TeD)XTjyY!h8>hR3K`_+Te-*wRnyXMoS z<|2FS2lXf}HC}vhjdn%WI9m=HXSq}~M8@elTx}kyEwkJBFtz)sKR$O{@+kSAG4kHv zB{l0L)VFteW@JW3VOx#aq!qlcHQBRywzP7(YK1$_S66|f+r6}B&*Dq3)5-(fx(Cg| z+;JjbF8pP-m{&OWvR}u@v7D$5Ba%t~;`8`TPq|NK#^E<2bEP;2Hil@%ILQAMuys zPZM~1h6r6+;+AU>w_MvLZt2TO_7QPQG$2+dvyr!)^T)oxVex%wHBHqmQpIUsS;eI} zNli4KL|W5BX?);?65%%xU)hA$+N~`CC6l5YR&GjN!qV4nMUq48SjrH!dO_+qc~=Pe zBr#t4yh8!=9fSZ0h;`J$eZFcRJ;_d8;uQzDvTMUT%%@La*S3LJxsk7U123fm@zIO) z#8%pWMwOHqzoZCfthL8DsxBa>2R7>_+0AF$tI{1LjK{x*E9b9l=I6OhWm0Wt7CjRa zvy&JmtUXST1dfu%ID{c*cq;&hN+VL?P&poHGjC~o7v12^R_gxUHtLQZTz8h#eLUMl zPwx-ka@i%y4B{rU{Ei%El!ie~;bUBLy4YuuT+mUvmalAw%!%gMaOCaUiuv~px zcWE^rsr<`S7FV%d2zuC~#Mtz(p#(*9LAD;4a4+!-yve*l307Jg^Pt`OO;6GPp7NN< zsA%7MQf`{r+I3&+u{qP3)6b&k=mtXIt`oS3JN-TW={#}x$8Mc4ooP288X;FPLh)VK zF*5(%Kfh|kUJEyvBaS2Yhm2RE-@_t9n&W+m^adGxHUVHy?wE zmfF7ZEv^KjIm8lE^Pw-*B)`}rJq)?yxo_&vK%p*pwy^Be>Bf2LeTWLqZb7BJ#=}BZ zm6I|#Hh-XF-b9%}U3@oGME#1OVSG}4-T8$zXDbdq=5EA@8$xmYPM67{hSX}~1-VCw zTLN6dFf*+Cc@>VTRz)U|3Dkq}3l6%&{%f*P=klxlB^|N+p9tFZS@}&B(Q3W?u{ydQ zJ>S}Gi?~pgXVGApz0-ay$+FqX1IP`Ir~vuuYh9@95JW}fLY>0<@Gi+`j_UkvNJ)ddyN07a|q~-(N z^V+OqJN4Nzsx)nxlczRR&%Gqw{DH5$>Y2>wDM)Z2n6-x4MdSs{ZFSH&+8r)lgM)SR z=Hnqa;HGwsFJpKSg|yhO$)_!wB^^cItq0k?^?S9rm=e&Ijp8Z4zJ6V`X6#mYqV9a9 z{bEue#^gbbJq8-9k|-lt2xO96Y9)I!Aj$S_rR<>CTk{vZIlu8ZN7Gx`y`Nv4t(njpdOzpOJ34}2pV>F+{#Mjkkr&?q9nFc9)S(~uUU%XkHutl4& zPMh$K<-Q{Q{(#i*Wf12rJhX-CAc9juo|(~9_Q^19o_|2ev|-xO{(_Qe+KX*gOpz5+ z6pSnKeG1^n=!3;jggScE3=Pg`Le9L9Q}>3P6U#Vz=p?jfM0ZGKN2wo!@9qmXOm-kUc-pV4xqexJVYa}SGK(;MV<9)9h2AR26$$I0`fJGy8rds=`8 zons{hnz+I@ZWW=FnE)n~8mV1)gr!*r9K>A^)38TkthD#|`LzC3-|`4n{}@ zna!Ko`g1EpTu-DzevHMRLm=)~bqjn^t9P>Xm5nKZudLo~kjbMS0b`83k3{C;+XRvb z=7Gw+T&lWJfk`5Te133(AfIVY@01g5tn)|-q+ApJ&<*SC!AC0p9STtUpCtuU6~6L$ zPzG$!j-RyEwlb9br|5HatUK+5&*@A*;W%^ylg z$eTA?l~&p}=)Xdxp-F_5?b&p=V!fM&g0Yxqn}Bv%+? zm?<~cRNqP=Q7hFzAd*b-7&h-+NKA3597F$67{iZti%2*5E|4ccn=SRTea|MI_EEZIlEMtmU;BDlGD?5ZWthmkLqAnz(uAc|xxRw4o1Jk<@%G zBf9%|_m`h^-*NT=E%~iA*SzPl-1ag&P9h6*;5YoJ1^TUoWDV|=6vK77U5EwRPK>=k z*Aw*p1w{`I@=8Tm&`x<=DY$B3GyN%}CF3_Fkq!S=2B)A}%AW#U^K;eK4z^{6@!8~mzs;X^D zpY;!H+9gIyszvFu{**7Insrzktrw=%Sp{iQbA>=Nfl=w&_6}yOwm7^fwZ6m*n7eNk zExrxroFC;mnj2aun$Z$a@`%t1hD>W|5LB%PzFDp+YY8ZQR^nN&tH#vLMbj^nRaAPd z>&-i&qSV*f+P$=fI%Rfq!&+*9b+f^|>Vxz!>d)f>ZGVk~ps_fu){42WFOui}*Ltn} z6rn{j3#laUL0hp^S>61B5QA*(){SO;YfrRW=h4r91N5S`1yS-GTe+vM<~SZEiOVyh zd-TLuR9rWjS3N6&DVB;WMi^k*Z52M)wxea+V&lMgiClX8QE9`xw@QY~jx^fhfgwrQ z4uqc)a&jpCOUV(RG{mwe(zTxTgAjxI997r5j+P|~@Yku8I*~NpXjn=~IT}Y#^ZdDy z@GKYV;N19w%qIsqFve+w9S3QoJ|=3pi9yejD$6CPO%OTR1$VsJ<=ij{KkdJ!pjxJQ+(gzPtN z%1eId;k>Fm(Ut8bpR)@5&a;w7Jq)2Nz*@-qZT?|j;06z>u;Va2KKrmeuK3#?_dmGD z{gw;LKh4vi=1{sl^Dy16$`qYutJ{TD*lV-YwvyLAoKxlJBxg+1&g_`ouhYLyo$L<5 zj*~hm&62`CmVfg*Q_lEU*G?lBkA>t35BIG)8WIR*h&1!uA}5X6<&o(BRDj!`L{Kx*yN*%AFI#=o#B~FqacTasmlWfJq41ErY-(5q8=zY9&2P<~(BquZa^E*f1 zr`zZmx}Lm14V`Ff&y9w@_Qyqe%i7C zZ_%)lN@?|M)Dl0Z9?vIQLbQyuWdmVYXP!~NtvXvhMw8vto8F$U9-vKcXZLC8ko;K~Shq73fNG<&5ox!FZc;0*$5t)#)LrSg4 zls?y6ONIb}G0}^aM=viOt^Psk2*=OB{;0c~l;LN`NYAjOEzBuwA|=O$67_|3EFDIS zhaj3D(6jz`V!Ht7`(2p}NrV{w!{Z?$HS7!(1IU;97S6LV7Mzdg5 zPlvy3+SSpXa?|*X1Ib*ebfbCW4N_^huFRt=!T4ZNINeDToqe4FTsG31az3s@dqT-o{&y@9&nHkH`>PS+dGpbl)Nca{*c?r61r@2K4+ci zbR;haVVZuljWA95IW1WW`yz47Ln=Qe0py<_m@!>ofogBQSi_+SW7HAC$g?=8|-*Wa6SXgVLx&OEA~P}!vx8%=89>S z{OSCdMVWNy^Y&_)Y(osbb&mP_`N9K;7SOwe{YduII<&i_&oJ?$uBX_yj`-v;?eci! z&IOL?IdyaTVDvua>sL3YuOpgee%TCWk;uBG3~VIf@|N?1WaCA8>@PDZ<)|6~UPr<8 zX7r>U7|aOd_?Gu1K4@G5#MlU9rigy?AgwIXjlOB^5*Z7V8YoeNGJk{j1ORbf*w|!@ z&qTu-Wxl8;oD*ttn91Yz<2TLxMIl?a?Vx`4j$P9at9<6KukH&flNrU1|3>o)54E)f zKw#DAl90b94`G<_bOzCFLGVC*TZWI5D}H#g?mbp+QLsfV5j^@ zQt_Wdk9Bfli1 zQtBneaE-SMaj0J<#`aTpH9>*asns@s761&b#6hnowqJ}6r9?bUM0u!C*Xl1IBsc9C z$nud%;C6^zti}S83`f)xHyIt~QyzJhZD zKXD_-c$-l>5O;tl`QhqHWxUDczL59-M8D@FE%7O*OXUwo_TXqS6lgb*FN|M^uZ~oLyX_OSh z^?kb#Yj`w;Y{2{S4i+iu>v60*8XnJ&Z5SYYHszoW~rb z!SmjdF7Vtz(Jt_;8`m=v7JOc_rz z&r3_c5JTdqw|K_&jQWg3p92s#J-^otKCe9I8^P!BzQe=kd#*YJKL6rK z3qE6k0Qj86mqV+^6@zTdj{Df3)^5I@1O;~n5@0u9B}r;GA4N!|eC$%Yd39GIoxB(w zH{SDun#u7`Z(M=RLhGC;FK}I;v;wT_X!fh%W>q(sIfa(!<@c>#Ufk7S3kj+(v!yR7 z*E9E~dwD$}l@hXgImj+_X)6Ec#3V0LiDwdQAIXJhT@Q!5Cm=a`olS41?}^gA?Z=T{ zT@&qnRY@+g9l2;O)(%7i`Vhb;FmF*GC8}W|RUzZUP$U&{ejck9sQ0Ksk}b^GhI(jB zgL;D99)ugeMhk))iyz>F(Bp+nia$OzjUHe1psaTqJ(fh!l&Yg`^mxrd=<$7fITqc} z%G%p_<|qP zl(lgmCsKjohy+ru-~EUmwQ(<#kO1g%mBrP|E(939ix?XW4^)YrU^uEiH<-`v-y`^O z8vG*S1w-3f(qQa-M^rsLTSXE#LoAV`b|tm&bmgYe{wY)BmB*T$0%0mR$;T7bAl z0B&SQ5Nd3pd0nwUVuazj3nK?X;%#pbqh)YYp5g=Z(`|yA` zcj_T$=-8eDh^ywshSufCKE4(Je9PTzQEMN6KqR*MQu#k6z&?KGhv|L%141h0CP^_| z!@3H!5F-Hi!!+Qv;H`}rgGC53mK?51my$OLt`~6lnlm%0Q38IfSx89eAKd_7I2WUX zzqN4V2h(+jg>1fDj=vPeTql2H6zOF%KH76@hbqZhv|_R#L2r@w`XsmUte&uZya%1F z=JZEIyUnstrF&Mx@+33QV9)CA(Es1E)5m&i9&_$I|NUg<}h+YWHZeOy4Y7+Sy2UvUsW6vHwhyHXOpDUCR%|zDw z*KsCcL%PZL5MkjzM97y!tk=T-Y(__7XoPY?5Ate77L!9OvX~yqNWgsp^^L*c(9yH0 z>jb;aW2nnAFQ{7Kxm<0vLZ0suGWUK;V^?vo z*rtB(FWk;=G!sXxNDn_=*ebCL)|mXjV8f--KdyfBRczvK1iIje>A4~P5uAzYnS@mJJK@MK z{QQcZ8+JE?#_O^?Q^SdQD7EiE{01B-n8-a>$3md!O!NvEcrt~#nauK&ai+qu(QP3- z4pEJT5}0UsuZRcSrH$xgV16jDR3fVgJj!1qf1CN+&fhNn9ERBZrbgsIt48_6+;^l+ z4Bm+pE;QIo-T6A?(lY$irdsuTEqmEmZjz4qjcjuiVk*!Jv1BkN)ff*vjLb-0dxul- zv6sycw|$v1Mh`^uCbdqQ@OzN*dX;CU&szF(wT4xE#m>*r7GJ=O7{dqB2<^vKJEd*& zG`KJHD+@W)q+*1u94PNq;rm8m@NJt1c_*OcgHS})>UXiJa7k;d7OMt`bMz3RCo?*UxHiYUD^_YvDs&_f6$~G~RyU{$B4%$*^4Np=FY4C&QVQjErDW5G~)muG2 z1z#-?r{(00G{&8oDL%}=Z7-#hxGPl_@D#%A_e>k8EmGUqc=};-hm7A#MX4iwE#k=q z8I%ix#y)X01U{@zb42!5Wb#1sL&h)1SIK!N#%6+NivuHb#L>1BwX-B=VpI=NByz6P z`ee4IyaV-kcDqpBl#M~@)7=?DF`tszK9<8IRu2Or#Nq05`-zTuRZJ1gCX{WqiL%WX zpPj%PG%fFVVFN($Q>dB>6DwTUQOt;B~( z#8Rou3C^Ym)+~t)y<4?&iT#SprU)yX%3mf0Qm#}zwJBoF?+K}tMOIal>~>B{<-et3 zx=*QYoZJ35VzH{g<%dnaMD%98ZZ`rwJS&oH+h$5S&ZEXmF- zZ#Q*^G=*r`A!j$_{8Elk0J&W!K&7^hV=f2Tyze(iL(z^t<1;ZrsXOQ9;E-7z=#~-6 z45dH*oz(CGJvJ{-*g=`Vuraew3JO=i&;e-|<^>}oDBcP)RpLS!+led?5CA;Gd38p# z51r`&pU^8iw0!u$Dj?ZaUOmCpB#I=!0xzeMim76Q-(m${iF=EL&n@uJZ5CcHI~{;e zx>ys)yhc>sw1)2^c15cbgNa+Fb~ljc+$C~2)x(UHW%3vt&96NBJX|hXLnFOtNX;7n zw{{_m3o|GbX)#A9_o&nH5UJQM9vAyd9VHyVl~}EpOL6ZJ2&(_3UgEU+c0Sa6M+YNh zH2`L+z(}~M^v`U$FT(*tb({=V?z5@rHgz}OrwZ~;EmQB)cx{o^@Gulxf!)UVR_FNT zo+S$@S|b)zmr8}hf0Y64B+yY?zF&;qTy5u+A zbiSSecH1Lw(;D{3+|Zl)w+P_K0|9K=1|_xtDAx&K1a~HW2p71AOL$XeU7iag-hqmC zA(zV9r9~R6TreGHmIpr2?y5m_MBRDNz~+M#RO!Y(&*!uK4cnG`DWwHg%XQ*;W7d(j z{crIv`Nqv1=9UAp`l3FB>fT0kNFVD2o&k#y^=o!hU?Jw4*?N+?`a|d}P#mh!$>dre zM{g&#KPMI@RHO|M?8Npzk&p%w$*DGEeCtzzj3Qq1N}UDkkop|G#|DrGNCj{Wmm~$a zKAlfUK<5jRg8y5)5ag#*C}ac3WhAO8j!wg@8~s(jcTE40A{wX#41DaZQA(0bh2u$X zT8FtiN2QsOmt;tqS@wzi9%no4SugW#W^e7wVH06_XE(9M$I^{ia4#{rNAxn!q)%(c zqioq>-u8u>Pp=+<(U0@6x3bLb8gr`d>MHEejQ`YFU;M0Crh$5gUs$eaXDjA;vdkf$ z(}j3#M|{$!UBFE?EY^INuwm_Ow}kG;=9Y0XZzqH~HH`X?*Y(7O8RoQ~Dx<>^rc#ME z#}Z{Y(W>$rm1VwIBOV7UD`umZI2J=M;R-W0L3E%nj~N-otzKEu4CG5ymW3kD&MY&> z3th36CdP_NyDD}CaV?cfPg#%8Wy{tU0rOH$Lm4sm$0G&&WhQ$o!3XO=0ubT-3ObvZ zn-?kuf>$)`HKGq!IgMG{8yY2+Ws=%`xVq*>F!zn?4TZj0qU6(*Pb~ad^G=NF$rfUz z`Bbyjb}-h$9WghjrBcCgHED5mLjnAk;B*@Hk-!wSW$S89=xp_k(Vp}xR2&WnxTEe7RnF7-wU-^1ev>8>6R> znv-E#Fz3f90i{i5qf7QjD^Q^-m-F^06~-s6O!nco^Z2j_v3`GVb7qdTCm7~(8%}GB z$4e*DJ%}8p2feVzZ~K!~?Z5t+Y9C1?*`ubnt9`I_)xLf&J&?vyf#vN2veF%CXCCNm zx-XLaGBL*DI{w#|-CoZRTF%Q8xw;AO?t8FAV)4 z`BYq4q-P8-(IcfoT1G^aH;lOSY}$TOFx6^amdi_YlpEyoqy&INaG%X+k}0R3)U!%T zU zWuh|Xe4ZYg>yHrV9WDXpsF^?Irh-#$!Jf!>{N*P`k!lWl%~?pgE1-(nNvj5hTgr6PpYMjmn6k-JtQft zAh%y}R~ySoOdI+g_pDsT82U}-OQ6%x?+n$VT)W@1>)_hms%oX-+a-{4ZKAEt!QHAF zzCvYjo!-^(ABnLCcL71Lbj#2$ueGmd={MlH8dJY><$;m7&~0wHP%JR6{~$g2tE3Z* zk^Y@a{pu0&9;x*2Op^GvtP{L?i%iT)Nx}c2U5Lr=tNN#k{kxSoQxc6y3k3tgBIs1r zRC@AXP;D3AuyyGYM#$)o3>;779NKAmVi~PV3c-#1m zkwVjJ^1_cBAyy}t5E(t-YV2Y~eEAF{iMjY8k&+VAQ>Fg`hl9)bCjLJyR=x;AZL9iJeZ zD5wiDkntDlPQmm12XrW#mAFGrOzo$pdpY+)Kd3r3FG3Wcf_zjuy8w%S0 zOcSvK8PWcp4ak>Aph7kxP~1`!t9CZa-28l|yfQH+{EGyQ%YT-9{vIQ1n41kaE2+lO*-zULYY!nX0n5 z&aw+}?=2%n?mZGK2`cQ1l@t`rEjZo8pn*&rbbG~@fYV_077|A~_&t+j)$3uNY^dF2Si~F4$wi6fi5!9^WIeZEj5VOmyYkCiN4&BkIiSU-2;YVe zBv_Q6V{5!vUx8|~6Z`LP%R)g%a6Nrv=R%$Rjw}>N+MA@ZP^U_gTBx=gWT8lTLQ=5* z-c`s&A*1r3CM4rxG9DcL4^GE(^q-N)$*>R`9Rf>yVu4sW8z+w5m7N`L$~OeV8P(`T zLrAK|GT2*sWSARsmHx#1l<@{a?m3Xc77Im#2e63BH)58^XJi(_AQPTlZzih zC(f76h(qw&Hbp|a4rmvE1m+GK8!b-9IS}%ASz~l47pHlnauzg6@euTz$n#X0u4Hhw zRI=WjorO;B$t8%&tm6@Ma+y#6Nkxz!F9oft1@!pOpzFJZf%r9`@}HM%HtJak*tY>#h4TGulrby^v?~>|V<`6%OV3 zO}viw@-_Q1GTM&;cR)R&pU+r*U-7EvJ3JjVIanQ4O00&KBLhmoY-fDV*elXgPd_k z^i4{_jb7k0R{0lRS?KGLj0R&BO^&L;*gyN*`l=?7y3P?r$5ZOU z#h28DEq1ePA*^WVF=h$1S)n4TvqJ8LKBpBbU}#o|R#Ehq5;+Wx+m@RJ+({ObOBwW# z#rz+Bf7<)2M!MAB-dJsVWWR5@Y%Dardi&37WluF8yr(++#%A`E0*?YXpA7hR*CWP=xnvNVHT@ua<}!B&6mM{eSn|PAveo+ zk8WYu?kYa$c|ofe84aT;wT|0K?c0xqyGq$P7gBrl_nq@DT~I4et4&p= z!oR<6dy+4+TR*b8g)!OR*;n>Sx_?#YT7A>%g*$#o|3=9Uq<>9X!yHl%>Z6)5MWB}* zlJ_s&A%3|l#rKybA7UGEPa_UGIF&M9Jk0I;i<{Yp;%U^$H5xN>?%TIgStRj!nla_1 zg+4?%PHwgU7yl7~#0_sI1HM>CMid>6o&m$en?e?odPLJ(d7_`VStht?dw~jMJ2yAI z)x+m`*{@yrvEQ?2Uhm5!cp*d&Hs2yJ$u;2>&>#y z#fgYKd+qe*t zS&Gr-Fx3D~?6--a#|HC-{nCiwJNOr;SkKNz~Ev>b1pFP{5vL-6?up-Rk33X{M zTg=LPQZ+vZ7m*pV`(b&F)EY$U!H-FShe-;GN8b9vr37{3ZY8WO7lEaj%rd#nQx$4u zD>uo_{))=$>U$MJ@~K1b_s`q9-|siPB9}M!`ydIVT+^;psDyR-_TeLy{|N=S-`7YA zbTp8PAbD-1;$|GJ?z4vJf7)jnz2 zB4u8u+GYlhl|agMrRtO|0;2Je%HO?J&A=+V5a`DU^4c@-q9k?>{bzhxP2AnpL{HTO z<6N%tx-uk5&A=nyvu9wj)x?ypCf*^&#&B*@iS>m-%533Jc0zq&qx@Q*_@E_1lKpWw zes)^Cgg1=d4ITQQHT3t7K4|{QE%95B5m5q(_JO4gb9WJ#eVk=@m$o zNN$L24?N@ol>N?DL9|c{1cM^l?_B2-+>MBUv$Z`&8CY~}P;s_s_4lhUh3rTb+A@OT z0H>Ad3sM3sNa~Qubgtv0Kq9+GxDSmeIy9ohj!+f6UnXB6=d&Vqc!Hmq7I-Od)h2!4 zo}dwWi4Sw-r*PL8Jzke^V}SGFMJd1uli&tR#nDQD5gfyciN!UrItWzq3VP{<^f`WR zN++oBy=Zeic99CGC?~0t>+#NH0Ts=XVz_>67Xnlaq>$+1@W}tQO0+fv8kF{yQ0pil z-g<0X`$IN{fbzEhazex@Q{tiCG}mI%|J|c3^wCRngiKc;WC{s@>B<@tWR6RrQv~oG zu-j~VRjzWa;YmcA68aePnos1W6_HA<{vqOkdYlzr_Kz2qP=Q!jFH^t2E9@X1>jok8 z@plmn#it`cIlY9xGXA{$>7n>cH@c$z-sT|1M_}D1tN%MHm_u;%Jg%Df2<)eJYDSLQ z!m78d0Y?){7=03AQ0`M5zvN}7l|=U~c#rrC#6p0mobhapHJxQHN4UF|mZ})}KI#HIct|5z0tC*9&rxbarbtYWov>hJiNnidvHTCB z;*Y(_VW*{{SbRccDDpX`)MgaLX5?i=VaHdxnP72wII1AEnWiMqrnx;GfwCK}j^+f6 z1MNScRXJW8&F>WL$6K|sPf$ywZcJfVt_QD>qXIp*f!?L*BdTI!7QJZ{!!M)qq;l76 zvSP~c#?8<<(zJ%R_)xgW_a%^Wy?Qy-scUkfgak{uT4iySsfH9T@-#8_O+3;{JXR77 z>|5@Q#^_j?>XASyTfWMu1pLh^N%sf;j`Zg}TA)8~Z0gpZi&cHJnjwLdYh-7CIxe&O zvz7dmeppg0-01YK{yb?V8mjYFe`unndlMh2EP#dwB#?6Lkc!oi?@>*VQf1W=u$us) zJWGrWnZyYMyKU7+`3#7)gSo6V`)6qdvH|hyAK_sAN>5CBf~e~^%Bi^i8KRzGO^GS3 zRhh8KA3#6M-2%A0fEs zaut*=KRHzu1djchBhqb^_HQ@=VV0qvFc#)7m|8QU?6mJh_xTpQ zBcQ~GH+O*{RUdY~VH6CxI};cpY7ROu1Su8HgBYpIFk71y0I5F;t9!5(($FIgEd}Px zJctaKuDrp`Us20&3viSz?gAXTr`ZA=r8Mxh0LPtE{%gSTqg!mif%U1^lDQVt*nOgC zCU=_&2QvY@XlP|vGIe8Q{uj&U!+HV$@)vi=))Y&d%8r=?%P$lbYi)Y|q`m4J; z7X@Yp-qjKGWjjEQ1u1{u5Bk!7i-o>?2$)Ogy7`;;yU-U=Es>oixE=yJq4aYArI&1B zxBYR)+y$In-S zHIH5`5}u86X-+_eE0j1X)P#>t_#mFi1+}oVhEuO=Vei45XR7!qRiw*?HUD!XjZ6k1 z#EK28dgE#m2{UByq`K%c>FEgJp@x%dR!h!4AtgobnJ!>L0CknkX8$IP zRSZ3)^#m}lHYK_|c${?;Bct>~q5%@A{9y#RTaB^lyS1EAT$h&J*lsM?1s~M0>c-8vqRp7%w6*bB z%EiZJ#`{GswW88(Vq|AC39$1y3PVCdSKsZqIY&#}E|$r->#CP1UnW|^=REy`#wnr5 z#*lLZulJr9^vqTyPOG14txg#_U|)*onJ& zriH{r=337yTEpAGD4Hq|i=Ne&TQ;xf~o*KWxH(zc&U%MCmI#@n_o z##%kn5%hcknbw)&7cGp?a~3cM9Tnjf=*dX6w7sKnv-b4@Fa_VfjXKMRKDe6K!(`6L zy%%;KEY}*FX0Vb(4px>VDGdKlqixNvA4rPfidcm#9YO5u6U$EM+ychC?MVip2nkdF zHfvYN{jE<#%7_RqZEg*7UwjR%_CV;gLU-2eHmZs=N))SK5IL8djpxX7~wYq0l&2Y2& zU74S(2UTT_^UkpoPN#ud6{mzqd(ePbzi6cCLq?h*qhU4OTw$sFIdst?=U1JHG(swW zriyUgM6-^TkH>=nQ}=S=%g!lTNS4}p(w~V zgM>ppkX-_&U-&OYVG*HV#;i-(obc2hyoboHNiPmNX%**%EneoWPaS5DBLUA&b2RP9 z?!7;4b$7>+y*G)~U1Pt!$H}A)9hp9}_V^gtUdJoUv8)@-azwxovq%THRX_G{!oSv@=TAI!H}t&_&1i)E9WpDT~!w%)wvP3ySHrO0bO zdPDi3?>2JOL>}k#5R1%h%7y=P;*`LX+WH~BIB)lilC9aQpW><{q*6|h6vOq2q#(s# z{~{gbolR`}I)dylXg8_+&z~V;xkN1Z+&WgGKBxBIE|Q?)pfsGnlOX5I@7bO{R+>6i zcN5RC+N~;d-C?yQz5Id%o{b!UaV^W0SA=IgZse9Gt0=-8kp_Bc<=@V>QM+ z{w;N^Mykph=UreQt8*F5$tq4w!*6LoO+$KHvpynnA{U7dR}7c(E(f_r4QIe(x13%Kh!#PzdGFH{Mvx@bRcAD4rwM_=?wJrW(yu%hv|ym&o+_4T$yApRjJ+B}4q4 zw{IDMch>eF$@aG4Q@UJoVZ*k7@kKY)y&$T4qA$ZQ*To(_G~ z?Zwn4n|E6IpgB*odB-qwGllMHZQgf@QzV_cC6IExrjw-htsx;H_FSv7xI9)Nt^Tjf zAaeG^wm&bEDS3v=*J}AnZ`x()Bo9flX?Laa%Oq&}J-f8}AFJK^-b%GwYt#mJy&^4I z-5O0!Yq!=Asdnou0th@6Zxjs}v5LoreMI$f==KrP>D_v9v+n887HuKXyzULPY41^W z!h?8PO4u15Q>9(ks5G^CKcpk+Ik%SC-m&sh5;6fG348;f%u<#4JU8WNi}vr8Jq0eL zbV_p7fby*YDU%Y0E2pc0S`ri#IE?`F9Hq;ATZpckk5qmSNike6$Y2CMG|_A-e;l#x zkEjky>o2M4e&Z?0DwJvaW_npgxV8?LgVUToI0aHw+|@*^IygD!Xv8X zr4F$MM$mAe&F~y!c#(1-_%*#rN_%+%r3zs4#Xg{+SMi9cNA9dsZC&gZH{p6BvsXCc z%ME%O=OLzjVF5%b-o1^`s{L_no){xa%pd+z`cqkLOn}CVjO_?_`$DP+8-0X$>)fKG zV02?bNx*0unHbVXkKpiWn5YY6h7!4V!fIkD6BvRP^1M7Nkmg5$4EKUZA8Y#3?`$%1 ze4f@?ME)BygPx`;xB9Nx741u|R^O@Xsk*MI$3k(CN+mb5v_fM;`lfg@G`XDk1n^Vt zA-Rye&^7)U&ghl@*b?>-z5gs^T*OjfX=o%3jdX`1x5+GqoJ~O{FXU;Qe`eUo;In0f zy_6Rg_zi2OV@(x7gGmzV`1D2GkO=yVH&JV@!w4m^P+q&BdGasR;xjlRWoX8TBG{l- zp|9Rthe?rY3+$DbF?>w_5l%H!&*MHd4*Z~^J#xD}79`KrSo-SDUV3~Kd?e`uvpIQn zOQjl@rNoS$e38h83iY40(+#ZfGQ2YM=1&v7d34beW8LPc0;M-!Om0Y$uIUbk(`qSE z>6V)fs+M!CvOUy8EC7A+JD5iXNmwqCb!0KAzgr&;GseFsO08r(qjUU+9^O@sw5MXL z))rqLOKc186U7-S3PpmsA!koEWk!ADoQwGlX7G@6#kS9H+MeATD_3iZRtuE}L;pwm zdp8E4^@z(+--7MRov5PrAQd6mg(cdPyN**SUvE?jo+uy3>`(Is zaE-Lk|DALjzZtQP%$lR{Yd0Sfts?u07!rzIt0yxMx!GF)UunL|3*cQjXi!j_44k%<01$t(7>C6&gZmc{W+RNKv?62`fYPA zgY+l#0vEJ3pRvv&zm=&ygg>CwbmM5_Rn-wPtWbmrh;MDle6@khdnPK%8@osO0!nR^ zx}CdK?Km>jZWFSE*04bKge8v#KJ3}-*D5yyz5|FRlnEzI-q(KP^+56K0b`>jZ)r4D zCi?XrrY*}Y8&;NkLbSK2bEPorw(91${el7qoV)zx7TL&>ee!!&&%&Y7B2^p2i4x{B z_ecu6wL6q3rN@#>)ncgob7^l1JD(#a;G*5m8nDR7bXg?!R?=m9T+x_*L>p=MN9Ig zHm0dbyR16fw~~i>)an;AMSz9E*h(c%#TwQ#83GS=p08Ec$A+%>gPh;XIlqsd*Li+V zdc;1zFOtgn9VAJHEk@Z|E>DTyNQ&W_YZp2(mG6*3Edd4a+W*WRvuIiM>KM;gHQ%H{CmY%>^kp7mPd*96%C>UbjqXnbh?LN<|{sa>2O83kQL8{u5t z)2iKZE7@b8XK1(GL?Dqn7}$(7O&*I)rJ1@jJY6^LwohY=8GUF^Dx-Gh$VA1-EIHW&GyTrheovrkHWPVp zUFNntRngH>5ieD%uC3--Qpcp348iTO0O8G8Ru1H$9F=NH&XOZKFr3I72t2e&n3oZ! zNSK=N9~hX;e;7tQE^OdZGznC)w)(T=5%xr@1sDg5xow#xfsLPyW$G5G&orl^&F9<@ z4~uOQ5D?3hbbOMI?EyEUe|p553o)|hB;^uG?UYUCmGN%d>ZdY!Mo#&}+t$NHH=NK5 zeDRsN*v<^bXBGtGIllN9L@;OO1!Il5X2uFw`eNEm{(0#UHUeiA@L1rvI_m#p?@ZvM zD$j+VWD*!4!wCW!5G86qk+&$Jlfss1+#$eEx4mXZM>h^S9NcA z+e^dVT)feN!Grq8-NfbdVBH4h*!n!*Z$ z6OHO%;<_@$+wmG*0RwH@_k+d(%iykHUqHlwNs~u;jVtqwRzc7~?cw@%Xe(~xqv&Aq z&Y}Y-{hyY`zxD7YdF3i~#}>14vbsVYJKV3-zsXB8#&1;Mm36J(T`}U;yg=egW9uJ&y!zLfwW|IF`7&|HUC+Gc?{l-s`sQ6JSj_vZCVU5!HA^!arpx5! z1rrmq^~B=rpz(sw-Dg>$*XZvx1{H0Lo)bUGD?)}H*+9o=OlHgfYqH&rdISS0=!*jo zgNR?V7M9W<>^#X`DlVS+nKvKX#WQ`X><3E$Eb-IA+QYmqx4pdz$Q8o>y(a_aiR5;3 zBd}B`Yznyt4Kh7syeC@sc<%N={UHX+6@DyN1X+!6Tk$iZVOGZ%v>mK3%YP6$fSKh# zEOmt%1MR!|n7{hT-jrAyO+*_5#yWiBA!^x&byn`2=}1{+dvZRqZ5%&+^<7kh|Af* z@1n!pFi6NJOY<@!m*@$2$8fSDry=7Cy39er~fNo~o*q^APW zk~!u}*GT0HP!`z_&9Fq^+fnjgwMbabQ(*Z6%zMy1)vONh-*A3d;5<+nhj5)#!; z)wNg-8A}(CQQ#UqJb6SgQ87yA$OjXX3%Fx+qk&nSJlY#)w9K2Isly)#3x!?d$Ott0MQqGnS$%U{+g7{8U;E)2>VVV6^|QP>;^ zbkuQmh}BN10@tW?IuL8XvSZV01dVBhW#x(NC%uVWpL@F&s{;sXe#Yhr0+{Up9B0j3 z3ZLy>xU3&rtifh#kTVL6Sc#KtGUIE6MYg}|Q~{<$Qst0fF=+UWGa_LBd5IZNTe&_5nffdhxfD>@Wd3J4ZF3MEc*NoQRd#^)9vQ4f2$-nK(8+nr5Sy z$qfl5>l#iSxNQh>b@2vug|PHoCLkW>!|V=unL=zL&h_XJo5=ja&qY%2N{;a}bzig( z^v(zaS*z?pB3Y^S3KsnA^NbacozXY3+ky_sg>r=!a2v>GsAr;)ccTW|3XMZ3-i4RU*UdV(L%_FkTuH_xtD@E-ZccoDi{W_Ok`tPQ?7*Ywn>TH5r56e z-}NQgXwVbKC(3w-G3MIA9b$g*zP%}*gY%QV2oMWtI71Ilb6qi0qJzGmFZr@92~i;cVTyBuUC-x4~f`w*`oQgNNXB7v0a@lhlx z66rh%3HyJ7%Hqnm3!Rc0`dt;%^AsdUtBj|9G@5scOv-Hhz$DrXRtbgPF;}%hJ6V$w zH|;=^vQ^QM`}udIlK~FzgVMewFmQ^h7;5d)q|(Wus%thKsO@Z_1O2C@7_NnOAy~@$ ziLsSz*y%V1DHhmpq~hOgmSBKFPkecuQ$Rnbv$dSF^XYzRh0K` z-u_y}cAYP|l>Xy4WUeih1n|<)={xV*YyN3%9eFHXF{h4~2`fWa@#C6tI@^qcCCZzk z&QM-}#oSSHc6wAui^&rkckaFN2&Gj>@8?TR)MN>yT;DjY*LEGxM`~!H%HrB9DLh%I zF)Sg*etr5{i91xWR|G(h=>lNNNoi#7ioPR!WjeznXm!TYAN?UEV&m?=r*~&gP?d3Z z+KHw!{Z*~@*?FWuI`a)lFfP+aA5)IwYHfKgy~8#4Gc2O_2Ln z@%Zxuq{>&ftoKR?jFn=mF8orkW~We@0whe@65`86>?|f;t=8}K$vww_nHWFjmv%59*1y$f1B40-7;wGOb(<;_vMv#RJIlwQO8DGCZDw*%BKwQ%WUuyESquNoY{7z5N3dqUnjZwIYfK4+ z97pl$T9^eF?cG3Zc`dJ*l6;LVtIde^HD2j@kW7B#;cfgND{Ler;B$9rp?1*PFJObO zlZb$Em;8t!^X<)OU3EffnHK~Tt@b6Vc=UNCVAmF@!qF+JLF|CtrS_X~kNRh%ru*V&H|Nie0A?N|91|sI=@OjdUBNRCy#BBbE7_7Co+mX;oHP zXb6|owV!%PNq@LX`W|G8xJr- zHr@!?c=fXJ)&^_#sNSI%V{JUKd%J!@7Jek&l?@J!uR%6nvl^RhzHH-Aa*5A)$l7^d zRX=Wo)kEvpc%YT`##@=*cvUfb<9WQsN|n24b99Wf!B$)Ok*$`Ertuj)yXkR(3E5Ka z3M{s5l)ZF_y>uD!a_kqiL3Ft_D&^Lwl1p9yh)elML zNIX4S(^+f{``w2@!a5YcQ(EKER*HOvEZAs0aaFC{9G+FmAHan71oce&11MQ3&#WMx z7Yw)FG6aaePozR^r%E8@`pz(U_H0?^34Gv}MrCmwloadfUrvm?wxG_rR^snev2K3= zn-kJh8ocnRJY?QYG;NghZsQO6(#ASTFK@z;s^Or@;yR_L;r}GY9^3^4p>kXP08;Bd zn>zsa0=xk%Q=lgcVI4W4pFO_2Kd{a(S1>b*zZD75*&j%cEE2$Q)e``Y4P>FSCrFZ_ zQ?#8V-6rLJNkRV0E;KX^d+b*6WN47U|2-h&&usXf`%RwgpwX^9R+*iCt{pEz8IuQnr+7yEVIE+R23V;yu({70(!*!`R4B`Fi>mifElo$z9fSFs6bu@_6P zDvOphzq9yM<4gH^=~wb2ns?tiPqd$E!?7bdq8N3w*)l<=nSv-{DrgTq zZJzK92Ifk~6l%@luMjp;TvWRP_$?G$Q))r*Kq>0$jnWG&u#3YNZm;S<>7x9|7gV1? z-zQZ2#YLPlO4pI0@-CZIZ!Y67@(14W=SQ&oprK;tRLU_mL9TMU-oz~*jmvU6^ zZfjhwXS7VfUVc-lI-l_gm65_;8LgI1V9S#~(m(d=(p@x?flDYR>>Zp|(W}AYla_8+ zZ91V&Cf&-R(8Y+1+n)Bet5$iEthrCkC`n>?Y^(W}jLjCQu?_mkxt%AMYpuN0b)4TG zRR5y~>?7yxpZ(L8e+QHTRKeve?uH)c++raCd-hqC+n1|LHDcol1F=`Cta50Xa? zpGQyJXR7@8nf3l!&KeHSoU!G(84VM0KZfqXRPJNVd=_g6BEQ83!wDNE959*}FGobI zqH3-$UY(60g+adfTwiRGGt0bnzNqIXUFJhoDv<4KsUEVg+{y8$nMgmN)$sK!`mlh} zhw#}m=}cm1?QHH#B*1ilG5E<`^YkwezeEA)!gPd^!1!dLb#AE0oY=UT%>r=9i#l~s z_lw#|qykbFNg(BF%S*qg3nV1qOGssLooW{nPaI2Kh_w@$!3jIyC#B1;RFIJ?l(%N{Tm`Zzyz*}kOS*mYvd5!@iyxZnSFn9S$$t6}ig>PUoZkEXoEWP= zN8O*^7XOfmM$Q!W5!60Wv%+nbt>lsNlA&I+f8jiT;DIX@!tU+JCo_YunZ94}E1;xmHk zjF$Z`BrMT~!pZdOOo5=KRkHsrvWPMmQzDOiul)~bSjCl9Evv*$u|<1q9xvDtISayz zM2_l()ZHUx)q?JP~?E|M+b+$KLd!u9G_thTdsx3aQ?5Q@cT` zq>f>=yooL4@*WP8CFORk^ja=q>~dXPyKE*-(I)d9%xkiK{e8m0Xc8@Mivl70Ozt(o zGDky;_}sKY75pvdJx>uCu#}2DYOjI}t*JHdg#r!zh>pS}F@#+LfHKv(3; zNTYpq_ts@!fc@#-+Hgh?=?J@8HCx3!)#j^eBmZMT+iGwA)eyE|5f%!uMiziscS>Kn z@8_QMXH9m}kDfi{W%A z9Ee15Z_-g-CLx)&0`|qIwF)&E^@)A|=vd@i8n;NpmJ(8UEK-ST<=fqho%JVnWU&WX z|Cw@O*wU7w_lBWB1Qm3L(|qYniyPE|DQ+O!(RwEISjnl%eA+^yrkTwM+M^?5OK_WN z<2~qZ^03l)ASs>!V1{GD1Xz?r+23!}jHGTVLP#7?RX$pq{C$0JHm|qCm0$ zPBlpdS2Ko9Oj^O!U03~kZja8G+#&XSq)A)FDX$XL)Qv9WOCmWwV{8(q$>=Nrewa%j zY*MYffgS!lM9?ylvjgE*0D$zwkncMAHaqWwQE6xr5?r40$e3-DFc5W`jZiR|B% z$cYGVGtY=Z00k=HdCjLtqFh2c)E z9HTNfsfgm80z_2_IkHkRJxC^jt#o->V#@%Gnz!drQ7x248ft!okA&_qGruEdYfaVo ze-H=7h+Ux#LiWOghj$OQ=scs%qA3n&8d}q4I)fFB(wp+Nl@kev64B9O&(gSt?kfS2 zRZ9ex6;jq6eY)4;Fp+A;ew_G%0v1R4em+t|Z&O)ZSJ;K1p}jzi%@vzXFo5|t z7HJUN!hG{5NjdJD%ri!gvC>&Ma~)we1_D&-Q@yvu17(wd$DF-;AP6Wi56P~{mcU#sOSJb8#%sjJ8j#?S3! zO1-IyA^7#pXK@)Jf>Aid=BCUXRk|!ATB&!eRX1&Ft*4~y)aZwh%*|78Q}PZ)Toq?? zE0_;|Q%N?mqawrf@J@hC@z#Wj&fr`2rq*Y>S=8cGhd)DZA+eB$=Xsx0UT8kosA?LL z(5uZFYO%~IYt46%(=L$SeAQqQviYp_w)dab6rtO(ak+J@s@8-FSy`l%qkCl|B&dCO zh6GZs`I5v98y3lillVvtJ+Mfv>_)4Q)^s|RVE=;r%FB%s8$RZ2a6UZzAyVhbF7IbPxR{xM z+9?;gx*>QcUKx$>kacppiAN|#-bWV5iFp{iPhb5o-?SAu2p0-ut_vp!d2!wcd5BBo zIf(GAZ#CC09Uzj~v8SqG35l|Upa{QTBrSLJiaq|T_pjK0mKhLuu>h3R;(`JqLP&!N z3q@fM#CNQlXw4^coQ*66Eh^$nY=6JVSk(F>7Z>j={n99H8@? z$Y$qZ=Mqu&-&^^TF9#S(WI*xGKpb=T@nOlaobkv7ULymqVfX2YvSxvFfq~7R+$dXo zhrCfIh%s*=#&nvu+_*QD%#z}>oa)Hf;Hx4*SZJ++UH|S(c3B4GVZe7~Eo`GI##M9* zTlYNKlr?G@1K=gJltBDaxkx+;1V>3I)$p>s z*Qu{{zt>xid9TAa?8QZuda)n>%XYeFs+dd`FnE+mQ33;$hKyYdic9D{fj*1n@eo4D zZ!#L8X}CAbV9_0chUL{JgTbUC4ZIJCkYBfNO=e`K9)1V?pbO0%GZFm-^%GcB-2Ma; z{tGRCOU;W&NlYG%1180Gnd~&bS3^{I0wByT5pFI)7yx)C9TAU|2XWQ6e& zT&_A}Bes-%#xp+SCG1~{rEVe)Ccbi14{xBsQW}gDmo3nmMIshAWe#nnKuq35?UB_r z3m9d1{akl$35waouD+hlGB#L}mAuv)JLqWehr;{3iK$1hE#ZA~&K$rSzq|g@Bhm9( z;Q(ZK$NDZ!MNd;?+^yz~U{rL0yCt}|yT5GMqW-G~1%_m4-)q06EK$zyW%$TH4rp z9h^qh(vwEc2fypxDU+|3%;cFC=WpgoGU&+3*4LJN_2q)im|D9&yJU`ZMUjK)hD{}A zHzLy0Sms`AS?e7;OqI#z_Nq~WzA~5haL&6wOs&_))h96D)S6hxxYn~H=S0u7=Kng? zmFNiTYwd}u+C1y)V%4!|mhpS+GBljsU3h-A zG5GEi=aA6;<)mY%0bi!GyfdLf>>?j}zE*}_(Z`&-54uxXq9;zIHzpd7ud9`AK*VT&yeR%o_Ep!uFl4OSWZ z1>&c|YavM1zbDm^ZV^aPs0b>}lJQmgJi5Gk8Gq3%704vh}x-`vF*^;vd z8XLE2o}fs=%e+IzU=8#zk*dc(kpT3cKk=gm`kxY#vD~JzxUR4ZDd`}g#cfX)t(Jfg z=suksr|88_!KuQ}1dSJeHOQNXu4cnH@!i(QWMznI_U4)nEbEnsF6*g#%)>pAzjJ-`Nc@onU+d;XLR%M&lco0K9lJ<5{>p zUMs~LW?Rp@6pdCHIbZ!)v0IN@>^$qOR>e*;awdGN*d-q=_Q|9D^pu|cBk*K_&E!FY z>V54AwS~%t#oF#i?wnl|+do*lqn}W|6GJ~J2ExBj;LXv-irYs$gTSa`W9rq|p}q~5 zGk}_#6H^bkCme`|S{Ga=kjI20(ebT7I~ijqq@v;vNGx}4Rnk0K)6am>jGS4&Jtbpq ze8K^NdkD5nIFu+q-1Tpy#SZn+RvH8nQxE=%x)->wJ*YJ=A)@s<1wl<s@5m zTSZj-+Jo`)yC$o`hk^~=lRPJWYS-X& z_Uo+dT5~2bc1te1$h+C92w9}aF1}P#FA!h@&ABBp^)M}I&FhJ55iLMe}dIz9wDKvYv|Kc11U+ii)OnS9Cf-yP_az9M#n| zveV@P=pYabzpu7v$noA>ue(q5V(-|=SkwlH1 zl&v+NNT8=bBkf8uh&6IbRev1x=R)aEx%B6aEPx%*7i#X?5M=4Ei`WOj*IIM4eGnKX zf+TjwHX)8CbM#Y68aXx3sMV7*P)*Q211m|B>GIeo>yUfGp=g=Za*16_vt7$vRm)(j zmP6FiU)6Giu1!*v$o?llMK^bE$_t6G>ltU)bE>Lm)AsJYw1%L)moijEISm)H<~0jh zN$Jg~R%B_^;g;)PX8ipRt${tu!@=Sox^8~gT7pambEB;kQ88Jtnp@{AV8Ohta~6WS zJ@bh zP85lp$FFRvU728lM$XT>EBmjW%1$ClDv+JAz|G6xBtmseYd%6hrE^;Ip9t99X;8u_CdQ^Or&uJ zJNjHVKUpu?nY)^Z9NhC&_EC2B#g>fEHAc>+ZQX}<4MBBi&rkZfPT5Ldu9?qma?m~D zV6?b3!o|QPeKeY`WQm-N2d`e*pI_wQlAfBKX5uN?nC zGhowGyM-o{v_%;B;-C#*jOh(u4AbuTik#rY(7THSzR(_R%F2DdKjsB*-}BpU5Q95x z61iGy!q?50_ppM8bu1C-{r@NH;yGJRYe&W5nsEGruHk&BCwY(r)*fEHV9vsYkTv9z z(3%f(vM4QHST~rZcKJ7njF0Tv#ZUUgK1VnJR4q+M+!cqS{afb{1=JfUu;XhaUTgj_ z(XH~@lBP9(hk)I?o$p({Q-`^u;!sUESugN(J>WRkmfQ$y=Sr`lH>?(TY5drrGpp+= z2>tQ`Tp3$?NFIS(QMexO&h8iWs}77G>+6@@HO9_#pX~I!892U{xhvW5sRX zfgu`jY)HKdo(5J>PbOwqF3j;qyJqr5`NM+QX)A>}4jF5;0D|t^e68s+J3@d-BD&6# z?5diJ3AN6-#ja*(cl;?5UlX?DkFZ^Ps?Q`%RsZGrR`t6`UR`5-b#1ru9uag>TlrhQ ztge97LH(n)Zx_>iddy0+oYvA06x-))_fHirJ=4%trCugd6WSB1O%dl>PfYN zlg0+~v!Y`BHJE?6v1?)DflTcVVTj3TRMM0`K@?WH(1%E3!kyTHcWkmq1m;RRv5Vo+ zzt{M&CU*y+)i-mR=DH^yRc?i>NokWDipC6}L7%Pe%3)ot;1_z+C5E*nk5ytNUr>KJ zbW&ONu;>8mK>3DcMdq~Dq+@SThdmjRLJhN26VklhM0C<>0c>Qj$@5i~u{_@3(*xAU zc?!vtLbRkBIk~%$sG@joGN-ciAkrp=E)skOy3?b`jIr52J|*9^67pV+I^85hj!0hRF-w?Y})i2+q}lM5Gqi9;rr&{oAF7Z_^qOUxx*mr2*EK& z`(DQ_{e}GJ75X2(mbWEy#7i24)%J?SkShZ2P4!!ZrGUx#*ZO)J59W9g?)DmOS0kAE zS*WK^KOGF?baFc+(+j|Y75TIRR!^QcQF(vk!6A$KK!SYsmJ=bNH}qk`7Domk6^bv7 z`WKI<{Ck|e(IYQuxz?4XfTJ_s16?0aTOnq>4^B`}@S{xq9dpOT) z999ft9qC)4{vh@^8xoLrW`MnmTAN4iYI#QGjcfigv;(j40e3&e5KdrHC&F?xH^N6fOe00%M09&Y!U~NlZruKvcYN^*PIiH!tawKJ&6aWgBMp zCPMu%Bk10G>)7U0tA|1wKF`DZ#jfCf<(!gVY(YMJmEuY-QMU3#mO;D8;z!R5V$n9d zIp9EI_>dTM#DAu2iIHhW(WyV`D*~s1#Ff!D< z-mI&6#e}WQ>vjIp>b!=l@vcx3NazJ3i*a!<;VIA))|^>WDwmlV#3PoPQG}gjI@ROD zyh$TTY-D?w+Idc+R?(nK;#Q{Q;DGVAJ;@(Pm!u@}AU9Sd%Fg$>Q@2j;JmkCXHQbAF4)Kyw)}udaPmwhT6OA#ubmK&kyw{o=$(f!9y>w!J^cEc}q{gjzEbR3a zi7_nfhqsPDW+J@wkD2JPrh3zrY7#E$o`lUc)+7`hGYN<{$vnUw_|gPf%y*N0tg)xZ z5=db$6GbI$MNo}Ky}vo%x)iY8SW)-@JrxB}6qVH;F8NVkmR_7|3Qxh7>X;|5Xe}>c z9WwFoegF4V^p0~Y|Gyh0LSh&702z9CBI?u#QlN77QXq^1{WiGq=0ZQ-3$Oyw15}wzN$*|Z0j~6>?W?OI_vTNH#bk+ zSD3?guU~dvTD}%=p#&r*f}@4S14SP^)s|Z8D=93g-;1Q4yw&ULclt`_=0!#Yje*8m z9O?$bFNhCKRI0-PCmsXLIX>CPR$`_X**-ixXUg>zK9pLkzTResR+gMY%-YHe#6l~HHiXtV!6>|aZv4Sd+IOEdUhPl8dSzcico6AN zAv_3FiDAR{MB?9M@2B@m5X+|y@gRm*h58`A4CXj3c)>!UPlxv)8_Vh>Tx)VtkyyNT{8EZT0IFMPMhpBL*9GTCn^Ym~Y zI!g_3KHIXDJgBcUA00GnqhmCwes_{vb8S)ikXT!m$W>$aTXvBHfw;fiboEHUK@9k_ zq`vsoLvUNP;s_hU60v4MJ+iclg#3ANdq2KvvMj(Vm^xEPNMmV+2zDO8kfEHAbwwa`W9=mS-C;CV#CcZX$3fN_3wEsp~Z?Yz>9C=ixq#wdq zsdiCz-X190CbAT79v30S*BwT;H`EmYfeRcsB51(9!MdA{{camT1o~(rO>C^=B{4qe zxE0xb(z$mt#5=31t$^wgowaMkYWrVYqi#GEjC(*e^n$7Om0zV~abLtKSfUc-0kos8 z(|jT%w}yzPGVr)NF`+LrStS?4)%YtIsH2|ivCiP?+gMJ8zI&C3Di3^QxmUQX^x1zX26W8=>7pKhy14Bw7)j3sPy7m>=~&ZQDa zx$fA;j}o@ISVCfoXNbz;`lEbP2z`Vbh!OP&59pi1`udad{08q^+JgDv^F z?WVIuiNhFtI@-N1*pkb4#Vj^tD+QKsK4} zv*2Nfg#{>>lb|`QQ=}8~M_0>1lZf@o@`!n_9bs-e-AXaP@7bG*mzQ-v6rlUUaOA4| ziyw-h@p33WsX)2dn1N%BMzzwJeq$GwGH|tGcxHM#1lUrRmq2tMAgDDj5FwEG)#!KK zxGNA}i2s_U+d}b$ovZxrIZo}aVo46)1pc@+5Pk{+J!k5Ic>UJ=%{78PTT=4_$%GeM zJyDk{?l?R=`uY6nneBgYIxx}UqE$WI*XyouM#MSS2-NIyGw>Z4;zKzP?2m6i%X8pZ zq5@g%xDMQeN3Ro%mu`DioEX~aFD8e}YXw-m!Mxf8VpG5pO^W+K5v-zlQDbcuyd2MS zGRDjf3->3O9XZLDn8dODZO|qNh^?acXCF<)#ua(e_ulDGTUQuro8KT3C@&A-C(Udo8^W} zWlKDr8aj*so8`+S38DpXdCpK5ALxHmjzVpAp)*rM{p3xaA|~o}OX(yJjM4VIPE}7( zz&2+UqSsg?)#1}F*R|#?j6Y!Dcg?l&ygH1FzWvg??- z8O?8o4Igm7fplz>=mLor7f^d=+d>JX zTsL*{qfW@l5)v`ogJo*ao8;R%A(iB{)v$j@qGcGX7Gp}?cjt|)8Q&Nj6OFKR2d!%~ z|8kXP-g%1kd#zi3M_Tl1w2kS#dH%=~U@ApN2v`q!OWMs#4c$RwNwqn}Awg{1C45^F z)aTosV;R3kq&mD;5MV^#?%+p_C_qT1jFJ??bwEIH z%JYgwbK6smOtwXw`6Ote=bigk=$($#+(AWz#xP~q-!EY9D!RF>?jORm|Z;SaKH*ni^LV9f$ zK`7h?#UtxR?JKW@J^e!>fC+f#i_IT#nSrkAa!8Rn@;H;&(kS<^U-MuLF_dK_n+&|0o>x?_(fZt%t=w zLuV8QVz{mVbwWzei2G-%vN7LUOp<0?R3?{<0F>6>%*F6`#f{vx5fA? zhTG5t#O=t~lJw!f@G0vYbNGKqBx*gWq0=Rha{c>S^=;kZ0X|Ygi&PfZVM*ceqdsvP zF}5D~Kr8VTRctBuPAW1jHg4-B(p1{|>v)xiHr^weHpcdDk7Ytsajxs(mi| z=lHAh`Jd@-c-|KEHXxD$sVY{i+v99Fsl#h|8CArHG(853J|gL@8@I4l`()6177Kmqu4$|73lU7tD0>wqz`sg7$=xuubWyYWsb=v zru{>4HlXMDpygm$+&SGl4U|&Xjh_}aG7{8W^>`H|(^~f9`w(?@1>^H}1mm^af)IE> zlLO%$YPshy;SVCTH%l%1<@pH82jh3EI=ri4q(T{QYi_GMMbYQj5JT{nmAjevjNnUVOH|^AY&I zmys*_GS8k^Pl-KM=IzKXl#0dkUEe^W0{pN~Eac1#CT@bw@w9leYhIzcIlHiWpI_`( zLTM6S6x9Fua-izFpAEQCTGJLDOe9RcI)tCNU#Nk)cjhcKcW=)3C6-?3FWPOM0~|+h zhFZPw0`w^yLb{WT0niTz3NwE&RnQK>J0q}JUcgae9t?(1c%A7ycW-KS9)0G;@D|~A ziwA5)VWSMfvEDr8!=ovfw4=ICReZHTK6<|5{nWhsz)|R5K{Vpoo@GH}aejyiOIxME zC?sP!r1%{jjb)dj506j%%aRK6k+s&lOO#&%z*gIP|WDYblkcHZZ3pG%rZF+oq0q#^GZ2N7s*!Wa^x2Ez=k|f+V;w2;PORpLHR48TZHR*d)mE74 z-Hv1RW{GOC9M;Q?hI{OMs_fp9UH$C=0zx%eYD1d`avOJ>Xbp95@X!CD`zNhYz0V51 z6Rta+l3`A0O&>DRV$jlhg%e-Fd(|sMDJTQyQYa>3GEDx%hQlBauOOC@n{P2EjKiz!kr_ zDEn@~yhFCR>gm2PnjJJhUJBUMvhz{v;+i?_RFNF{nSqi`rH$9eOhSZ z$H5A}yIo7jnMV@K+lVzst@*2b;b7Q?Fvzg%G!l`%QfD61Lec_!W~e%V7* zJefj(R48C2IjOc6}i64CMR+) zQwY93fEaRGnc6Hq zqoV!7t>0i?ivo?0<*V`v_gAcMJN5(a2f`J(x??wH<(Ef&?r`n$n?-~A2I&j7yK9*? zTtZJSGxP3*bd1aO@KWZ@Bhwqd(Wl36EC30|TkQ#Qy2Vy2X1q-w&vNqo09DB5sWPXb zFW^Ah=2=cZS)>!0WIIK&i5EV>xn<5P1#?#CNla7zos{N#?Mt;jLVo{<)4>AcO9jR6 zIKI`$t`bPpn3xwrsKhuZLXSS<9gP3DuL5~^nsoP^aDf^2 zJlSnuVz=Qg;Z!?L?ZD^JVq*Fo+~&Xwdgg>Wv^@0q1a`x<+@`oYdq_ytLIa*gVBZ91 zrq;BSJ2N)!@lhaJxcO5TsOzEsvG694t<%pD}MZI;u6lCj1l47{( ztU_8-0hM59Ph#UY=XD8rTrd5C*8C=eGR8Z_2k2g0!K5C{j9w8y944RR#~=Lu_{4k# z{iOlFX@SJeKzx5%rKi^WO3ppM8{T{QZLDP)Q}PoPnF8z97HvViF6h`B>$(ur{CVOA z`c$#^kUdElBV;IkNA*Pn`Xod0wP2izC**-3SUy_hYCKQF)x7h zC*bI2bE*N^A~B;5%A}Ed(|7bh`Gn#^deG% zMxS8#RC$l5sM`~r6he?%+K^6yE6+3nSGs^05kV-3@+RA^Y0Y*i(pzauG z&Ol+!QIQ*;pm#Nq;w!z?+0al9M`!euMDFOOo$2E)dJl@RqrtdQr`_W2jFW4io4a#T zFYb;y;gab^OUi@cZZPY%C>BqhaCaEC*Rei+ZIH&jzmb7kU3FiRyWAxk?GS_QYEFY` zatymJRA-T$wCF5*XN)99E{=Kjbe)Bov)2Z|e?XlAwd&y+U@}wkjF%MTdWFxJ5bS|o z?~s9KbllO%|I!Pud)u<>ZOAox4H&Y@kSWo?(wTaAqk6xxQ)`l*_`_04C~_MGC+=sx zO!Lw>@jUZGmH|*yI@tX%sg_#ql4cd8I{~qVROBjq^^@E)iwblDzAwVYY))A|#FghE zId!@oCrKS&V}P9C`>0+>**NfsPbmQDp_TT+%bbW>fbgH!DP*tv z@$Vh%ejkB_y8R7yzmq=W%ba=ya+XvhCgn4h07Sm%eL^;npsTUhv!avCZ%$MW1kSbO zZ*2bo%X|3`FcpyxuyT`mlgcap0~(b70A3_)J8d%eqRN2(fXP->AM+pZXmz&-f+DMi zMu2 z4A6)5Ab!rQkB`j1O-Wvor=Tn3a+Lu%=zHa-^Xw?AIb;8uOTnV=Jxrt``(7h~llI)$t*p$(e2pW@we4n3cj}rjw7?`H^0b}GP&u~w6E)VEo zuyE#Ov*nd(o4IcRuLJ2)pg1TXU}9>}2WY|DRI2CJ_f?iRlDtuzTBrHKrv4e3<$BUd z-9qZ1)5p^2|2o+2cxOX_5=t^jL3*Rp5Z(z;FO>U%_n=utN(Fdw*X7ppv?=TMQEp*n z!@qeCn>$##6cN)mBotp-_atu&zPTS-X}{ISy37I)qv(eVU*fH?r)T#jU|SGy5hWnf(zg z=PAqWKr*2W^RA5oKa%X&j}u70NKY&8Ei_^d#w$VB_f$`>JO)lsd=#Sw`Vi2}wye3qT>{cq1}L1{sVq44_T{1>`3; zJ}IbUz__IBQUL%u(vWJ1{!ER@`wvZ**ZumA{s3{X6$RvFE);q0Sf>ipP=ZbJyxDvX zU+K6jM%reg0zY9_TO0lf;?#z}NdhU?qd!*P)`q{1kJQj|mBls0F2siaCNcJgKZ_ts z3Zp75xGH2n!OE0_ArVeH-lqBoij(`o5|vbF82qM*mB<=?Ss`W?PhfPyn~IOGB&JFa z2V2k&n#i(kHQ(DKAYESrnmXuiq>saBl-&?Uh-wx9)L8g}Q1r&k->_gHut zRaiHp9M-Py_s#fBdWSvwO;g1le2@3Dc@QM!dNU?gbJxkS9VPUxHt7Uv8*hZ2m?hd4R*c5 z0W)qP?h5`UvWcf5?qOUQ6z!gxHK`oUogA__{XxR4N|BEM64rM)SgDmKub!q(0~A_*P*Ax)|KICj9yjxO8pQD#t=Vu z6%-^)w1q^r>4?H>4!Ua*SW+rj3=7h)NRg=Fh1cWq(=>2?%QdSt{gHUYl^z%H&EV(- zalfuRF=*xVX%BB?YC6dPpsEAtGZk}vjtxQ0-!>NsXf?aK=G$Sc*L>C-cTe@sNOf%7 zA5T8reqCPv5huzzY?qIa!vz?cA%T=DAW6X9VG#`Z;D>V9o~IlL&5!It9JX`GD~F9@ zt4UN{5m&CBAovT@j^%$Qi}CAxBgpzHluYS3m|dx_u%Og+qf~ua>dNJ3m z>R?uT&!N`zeJ*g3R}fY(x&m6$IsyUXi$c(5fZ5#xJVeLs0oJPCBkwd)0x8!#N#ed% z101XdxOcc3;Cj0d1Dr%&n?1IJMAb1?t&Qfq@etPM`h*N8%WxroUW@hRbwmB=2jnZz zeeyC|P`s`U=9D#Z-hzdr1Q%T&h(mhzI!nE|^%(k1=9n4R;{djA_ntuC>RnplG|p3? zhy~;R!{1nc+vSOTU?4upIaL6oDn+$B2xTA?5AQ&bEEKMu|_GT#NIlcaRY@IW2X_3GP~@BYf7#EXu#wflNHhiZ+M1%@X4in7ibpiZM1@ zvE#&J5^hro$q1?*N;4p&v^_Go8m?xwm9~cl^=CCF-4^{Xmjjsvk!V0CRHTzEsX${5 znM5_9T`37bnt-<7LK(m%)7>V(Lnp^VVuVh#-E_1&cBp;|he6RXEM7psvDF+veq+%z z*+Dzf%oQPM_}p*QBQ|k!RcyV}Y%Wj|aO0HyUV-AW%s&*nI0xwTf_YWN7fmz3%u{HX zPN^Cn&psy*TbIqoth31?UF+2G3KrJFj^^ga)}rj&TA>)gIpd*_ceF&F41i{=#QEaa zE01UL(0a7yr=;J4RUU()-tws^s+NdRGL5D#IR;HdoUa>A&9hl6kN^*uqK^bpt|^kl^RF((gAd5f|1#yc`5&?iaWP&*UK`AMQW9-Y zKh_{z!lNvKg&&5e=DMfi>sUlR6XR2QY9rhYc`w7rkiTj@>RZgA#e(qdR}Y_9{eulq z3Kw929xlfaRqnDPQ6uJ@xIvAC!48uE@{f|F1n2T3B-5~)Vhpy;F2rE{O63d+VV z?{*A~yq+nM>jv#jDG@g8>&f?hdj|<8`UI5p(o&hwd&du!O=0!x3EJZWRC24~$wrhJ zsTA>X{(<7%nI{S49b1Yb&Z!h=Brnubfr{$9!fo5ibQhSnR|`!KR{c!$qoXs7scaKu zT{dRM39)hfu|Hqg+8tZ@0%q z>pwE#ZQppt54j@emmr*?Ked*32`21QSgv6vZo>JBOhG{N!GWDv@-cMqIP@A1+O7fP zMW1oItgLRl<&CwmcJKKeUZ)UXZ$-hRoo)N9`EW!;8notbk`IMHN3$vr?gSHZ3;>xB zX%=u4*NmqGrCFP-VaExY1kT4z##8Gn^~{Wp*TW}4FlaazqZqhX&i3Ky0htY@3#(KF z<@k=Knrf;^7Ffnh(s4nFQ~C~)k**$6TlQCIK|M15Uy@mTrn8>Whl>kGP zvE7-dkk(BL;+rdkFseeypU61NqPovrHA#CS*U@;OV3DS4-`ldVpEtEZ2|&H6&~2Z4 zYh+mCf%C=u^4KU`?oBx1c*cA|s8hza6lYuUtI_2BB!2ftM-vNF9%E)%-Rg=+CiriG zZMhm%g%=gSL?qlCCvsH^aqoDIs8Z^Ekmo@#U*~iow^=0P#QehdP~vG*O9dW!fFm{W zy(1~h1FcvdF?RTj%9(f#K;9we{`Zfhbj{yRuDj>SarD1J?Baz4iCtYM)x`a8wrT`4 z|DM(Y_1hkg-j5h?-2b86M}fqYGV_f-_*aTODen;na6f4;M9&l@nOT2;nk5|NK>QAY zr=urIY{z_n%J?0UT_r}ci`$a0Jyc8zcvA(arGpcxH4PDFw&0Wl2tZ#B#(%2t%%E}8 zB9Uy0N1yb?=WNvm`5zXJjxdgNBXqr<@IQ(B?+$;W0_p(rf+1tG;lJ6(mMB3=Y_t&J zh#sY^rmW8#Ej`P_)`2_8arEB?_|bMBqo0zWaL_p9;srNfX%eWlBR%kCA7Cvk0Un!lHr zRAqK75InV5aA`=g}L$?f=fS3Dp1r2NlN3=9rp^z_+OG@xR%(3 zkU&lmBTy8@R#=I%R52`6&=eBLA!2(ZklR!qGT$tLl&h6$yW0q>HvCpKC)#ZQsePLm zyNyug8osP|!*AUq zgL_(14A*z?Ul3jk~zJm*@8M@;_7;09Pv|kaB&KjsXl4Q;9wM zmhH+8pVGM2+P&V^5<0~OX75TU<70cc1^3^Z&Hl^f@sceZDievrjhBm5opQtc$`WNe zu6ZeY%-&ytWA`$9Rs6#T94{DOs)g+|&x@aU@dbT`9`@fXp1dxT{mJPP2$9;)Ir4#$ zJRC(dha@jUYuZQOLZz2zcZsKi*s{kmw3V9)acBFD_x+{Q5!QN~Z~FMc+*K-F={Fe9 zd$ot3$8`oTuP>2%qFBRlzq0HyA$hgGn#~)IF^H|=Rtan~0Q`>nM9|$)|4wp*HY)V6 zV4RLNua=jM1&Beptg-)LUwrywUibEBna}XEeA6F>L(dfH?QdiU91zU6q^7?qPYKPO z2ouz)lHo{nTKi+!i^(#z=`PdEI2eGxh5W6#@?;1zF?hoi_{V!GL*;?}-_~Yc#7AoA zRVs_?3w9yylZT11H*=Yl=#oSOOD2F3+$Tr+^uAAORUXJYxmcr75k)q zix1AF%Hj(3H2e%P_Ta81*nOX*)_=C^#Or1?R@AfpJT3+1pXSL$@^(&o?*AZtu&%o* zs+UJ&XkY0>%2i2{9887&A6g~d`yJ&N(|_BAxJZgs_f)YqNeoYaOl|;9bG|ttCF_l} zIB%$1&aa3+$DM}%F>rtNKXPRL$3SwR1WbRJqiw!-^n;W_nf=LVWgP$_IWix2@1xRCZ=nyaf=0sZgWvAFYE3s4(jaf{S1%^nIwXt!hk(v>iVz(t7P=(4RkaDf)-PR?ltzlMm zZ%K-^@HeZNP>1=&xpK)adm;G+RmX0JR7U)%>39&$WkBCV4Ui~nuisBLi${HLPn`o) zoouGZrIM7(AxVn7^7EBaD=Di~^{(seLTsith_UzjLP@;ssWw?}TO#f1S!wLyqtNcZ zzW+4?|5!7iP^}&&Xg57g2UU6yRH=&VP z|8=2GFf{|Z=y!$J$U_1aQYq?j{#D>Sd$>LcKEU74_><^u{OvOL?*BlZI48CoDKO33 znw2F-e?v4UV601y(H^^e2-ZyIde3OXdqo>A>lUAw8HHko!KjnOb)m}U`bDN`-j0O4 zT^hZR^D_32plh4K`JlOk?xPJwuN9>1ygyfKp42M2`cmoFsgwtz!+*ETLr--NP+h+C zQZg1xbym}#)YW4uy;LfNVNS*HQn3ellhb_n!w*ud7*kLUp^ho_Yk}RV8KbdS8K2c? z4)3effpUdx<14I9RP{}kHSb*B`}fF_EZ5G_9LcF9y%Cw%lA7T$(6vGy zljQ+7V*&E`D=0-E2}cD?Jk-r;P!KE8tm@}=cWBM`5eZC)d+0n?m7srAhd*C}5E)gK zRia<3HUE^10HnNSIp+)2%a{(|JOuiSc%5vc8KbOxO{zj);p}wzYAb#|@$|^@ALXvc z`(DCDlnx!K9&)DCAqFew=|;0)*mMNcc1x-f2*6j0@CwG**?`cN>V5n-+w0z^-6iB! z>6=B<^*0KA1^$w`I$LPLgrxTQx{;6?{pcnekK9K{8uJ7YAtQCBe3URP)%=bI$wr<) z%m}>&zsl|>~J!=Enzi=Y!eta?^!E0Y9+ z#`J>X4LatsZNm!1 zOz1T;n|DUXdEL)7$TZDnyv!6A4EErfWdeN0YpIT|F9^b^CcvKLREJPC1{0keWhErv zwtlU7OP*kT{Yu!|b{W~3v@uOLej_Ue&g*j@&{j-A&Xqo#$A0@6bbGeOgFQPldLj}4 zRZ#>uRIhLd$T48g>9J)Gg8e+k9;0jt2Le1ruB28uW6N3zp<~6(7Ud4Ti7UjvLmeM* zo&mT@Z8hiZK7wkw%peGgGu4SaZgf@Le>Xl=J=9nxf~l7TI@;95k!mY%gvA-%$GO-8 zxVP!SQxG}WYJROBRIz3n^zZThT3Dc7&G#~PFjY9V?70kW#ZQSf{7;ugpVJZ#5N6t% zf6cGn;eSr*7DGjD|F&hzM2TG;5Pxehkx;k25aVRv?D0^WIxBSla>L(Qs+J}SHOSwJ z$b_9EvyM zR9_P_=nrFOqxgTuMexXa!CIz2$il2*E_*J5*fKLCav3?@=)^sMWwOXc_Dos$9EdRU zg?3wdzP|kou&S}wG~@sKEnRjrQM*>8FYjm^cA&HzlXZDCQ(LW z-!4AEZe-QR>UT^1*;2neRdQ$ikTO`7HjMv2lm@ zpT>b`5)MCL_UYwoBR@; zkI5D~?PFVrebePv6ODE(zp|xxvF)DP=1e&A*3*636@4?hd@39LSZcKvRQ(VRi-lOY zWdPke`Twmlk$aW|@c$m8*9y3vCLtM5u~kpD-D@z4I59RxaiW#@rpi2vXKtrp$uE4^ zyN!t|4>cVinl{E;HCx!=JGaZsY?Tzl^?;->odED>_O$T}m1qGVAA?N(v4FLI_2!>` z26O`>byW!Y=>_Zvv$LBo=hax`jXYqM})zb>g#FSGTH$x&S zU>(5sn4rVt$AhXEbV!f!J7a(8%)&Bl<>~1|UIj;ItLezd@RXFU&&;F} zZvD}ke_f`pa14qv`u`{nypTv8R$Ymkm9>J@TDNp_#cVDU>E;7;7v&pj?IaX5nhLk^ z%dI>no{6wrq(m6!Z4$M<2nfXM5dWUvELyXDf6*SXpN7|O$41@V+0e&d^lBjd9Nb4O z@Rm0Y2x7?tAo?47sqBB6BwIT_QZ>T3H;t)dJSB^-k2;Y)&o(*`3;eIZ0j%$h zIkv6;d0*Q49i(z?_oxg{VPXgXpeb^#CBcQSeBO=9ckYCylky0 zVwovVtQ;whbxcI9|LX(u+HL1R$a++cI*3 zn`&}oOSn!0!VMa0LPhPt#3^sL&@tfDw7xm=i-XXV%XYfAMa9$Zh(M}6`PO*Uw(|LJ z$nc`=p#Ma@!1laY9Tk7+5>Ip(V|*1z4f>uLe-(scozFPZ6{JBKqggS00QcvSF1PAI z&h7=$gH55L&Q-LRC+%hSwAc3W_S$;2=PkX#YHz#U-mvcWUPh){wYTpAtG!J`AnbA1 zJ0m`+y#fHvPiRkTK2Kd76GjCLES!K_>P8g~t(O)=`|$sm$jJZ0-kE?$Rh^B0LIMns zaDyfoY?Pp}MuRpQwTTHb6K2RAm_Ss7)HNCmASwtm5M&EZqM2SsvD$vNwHDj@mA1B@ ztrl5a61E8-i@2dwMQ!ViqXLR-D)axn=ibTYZfpPjzNbEhd*_^U&-$M8uIGJaH+=Zh zqsWElmU23Xp7AL*hbKHYhg%2d_={HyGZf5~a%gW9V==B&8%# zL?#C%!nI0?GnR)Xi!((%I8#zhqmm(oRmGyhJl4KYh5H}C2~9ZEB|1`bBE=BXY7J4? zD7SGCWp6G929feyjMULKd5VhyA4r>8;}0mI*SxDIzk@ysj(tzAcKZU-{E@{9h_IlQ zUJGJEQ6!j?7B-u|Al8T2C*-J}M^$`F=6d0OC)QTk|8-yA&zlCw#&q8jel0Fy4n1rpNcyspD1xEqkZnJIacc~ z6S+X;Cd)M-?AZ5Mp?8-F84%Yz#ly8b#KIA(`1^Ho=VW4To!5AiSY0u6UI)1A~Z7<|UJo9Q*B<*bK6|@3H|0pR!(W9aESecn* zV$RFyo9-!@ls#_=;X-8MI156<4#sFvEOYDH8HsDvXUO6+tNn74mTm|%Xm$Y&sZVY7O zS>HM_2FbydmERidDM>FNb0n(5HuHN+`Z{7rLQuNBi?KE&U=2UA65B~UMZ&bsyk2GL zo?`2$4%ji3LhD@atGLUGO*1E_L~^&v*Ch3ms;!HusO%4}IgC z8a4(7@rD6)N>&ju^iqAwq@i)g!dK&)aFBgGnOrMco+732M3OOxi{V=1j}(B7$$=25 zxp2B3o={~Q)`_1*MViobkKhc|bkCpd#$z%e+af3YSG^Dw^?WTClpM6*9QYP~PPFB? zYHII6Go7FZFRLD8NI{`85{1}p#|xOtbp_hD4EoyJRYOdB^gc8r?4`ebAbVJ@n1)9t zLX))@{nx@_XiiSgV4uR~Vt20g!{)WhsX%7}PVuXi=@;7ubogHr1G9*WvxrM^(;?p2 z@UMBXv51U!nnwp(V)9djkOJ|bJm6TkH&>=sou~p{E_LoIt3*Lg1?F?{{aoohV6!Zl zXC29QL@F}OcVUw-qc1KDW;{I!R90 z)BTWjimZra{(bZb_DA>gQQI1!5{!Hw*GC0KzyhWHU62O%yB|)&mw)Kc0Il(N;LQ&I z>&6Cdbsaiei`+r7F||MnHw{dKvXCH9jStWvu@vFFv};`bH!w}{>J?-x04a#cwfQL5 z=j6lTS7>0k0~40JnijWMthC#)b-vFT2JAl(oA0aU>b(OVYfX?hR=vBqc%E;qUk{Fyf08R z-Q^njp^aT1I71=K-e}K8(4;>F^fKpA@_XVu6a^i4C)F?2L(=^Cc~cZ&tNHVn1qz6*@H=Tj3RagKj-$&P zLFn@XF)m0SP|?i%;fJLF^s0iWPK#Oj*CCEj90ppXv|ZWHQ^@)XtnRH(DOUIA97)0j zEz1qytF|~cewi~+@}8F7hrgbqV5n-f@3hQH^*u>@@?U-I98%I8zdgYrsm#6nw=j0% zdwy-`;n;D@jtQjui|054ea&&)<3_UV^>ZdUgoTkffw;mouQ~ry*ytPH zU>vaaPPg$&n?aLZf$svz4k_U4fWBf((gZA8F4Y`1=-Hqq5ZDfG0*c|OLle+gzfg6j zS-SH|EY*U&t;MX!&Q8$x^6Nk!YJ?MkEo97ELnbdim}93NQkoS<5TbUA8C-!gc#OpK zaHEiUmZK}l_=}q{gq0#r8Id(^R)bOrac1cE!bylht9+)ei2s%sx8cp^#K1EnH^BYj zU**=5s5RZjzuXMVBi5Y{8@7t%4}^l_62r)kD2f8K&ZkfPu*kCZwev)lulY(4Hb+{$J*7^CPd4)_n1&e4%#{T2B>gwF+{;UL!93?U-UTk#U>G(GQvpyA~dajmX-1yijMG1Y{K5mFb;U4w!H z-G)u~N`VStq$*(rxNamIIOjUTBA?~ZK#)=%P7x$6CjmF+uEYHthAFsYFSJntSw<#j z3aUi;xnFRkjupaz`@w5${dACF|M#;U0N7JoI%CL|_f+DeB(7i=I#kR-4%t&|)JQ!! z;K#n+6Zn=&HhPcma;IBVZ@(-P(JmwH zTk9$LWiwyT_=I@$q74dXOr4v+8Ct_D6x5C4wlk=<69Tp_qkR+`_610Ij%}EdC@;1t z{%S$QhZsk9T)gHsr^8)8pHq80f|MYxOZUeLmXy`c8=gd95D@TwpN)W*g#`hNax$P* zC{q>o)fNrHy^t9wx0bLM;AO0wL-h2=QD&hymnAh$YaUB@3lJ0y$uzcBHhHzKn z0yfBVP}eqYe7o&VHT7b`ix-hd<^y}w-uUSzhPZOo72sZbH+*pzSjxA zy|e36fYrthcY#8gh^iH?+zhXSU9P#vadwoLnkt3=P zcR1zAgXj1og z{oKv!;&TPenIu}T2BlpzUR6Q^iP331jh5)~9-t}lozW<9j)n0Q)n#Nt50jHGfqxeC zk|P(^nzN3*i7?8XwGV!APlCIACI)voHq%_PfvtYBUR;7$Et1(ts>NN_k!}sQhY{t3 z6#jDVPdf3Jn}&7pm$&k6edgw~wwF2QyYiR6e?j)_fBusQb@Q(hBWZ8}Ky6Rc!A`ghzYBX}-~9r_HpLms zP!^X`SlG*1-xI9HIoXxH+*1!q6ZW!NZ+s^R3-+e)m)r>zTP2Yuit2gZnedmh6n{Bh z@s}HKak2`#ZT=G1eIjpYHHU8#^!9>3tPq%>HwU9dWIy7ZnD&HNOzGj(3b)NXrxR`P z;d9UiM<)_&NlJ*N*&viOa@(w9o}!fLz9eh$k|--by5egtiDJ37nwJd~9BenHHQWp6 z$1`hbu{l?vjm{EH}ZhOlBM1j7Pr~64@3QUKm8f@vrc28!GS=1xvuA7mKs~$$; zDXGiS?zl?Pp02#IqIr233)G2XL&iFj8oF}QyPjpN#$8gshyhO09t}0~?kPDme;~5n zx&gkLs6Mq7e@&YtPSBp%NRW9KJ@RRf3;D5CU_^{uPhMYJvcAI__Y<&j=>!`#ge2&u zYQ7-S1Rh?$oY*KA}^e2S}e&JNhjC5xREw=Ev;rA_wRZ=%=iPdm1<4du~~J zpnt8lYIk3L&CEh&m_P%Ju`T)`=j~>8|w+NYTy>2?aTd%bSkz5iF;~AD!xO(Lw z=zU&B8>uNGvr*fs^s}cdyL~$yL))j0AJ7g2Y%8_SQj?NpbQ!}C#*j+)Ya7=Dx{u)M zQ8EJK1>nb{_8(`kIN4lm*?vSace824bQ}*WTih#vB?l}^j%Y|I<({q^zRB^*bZkOA zFb4@pp$jr_7I~E&%?M9s}M)h`+UVWARrSPdLl^TL80g5??Z7I zgG7E%$rw0V9=umIyF>B5+HGthF#({*Nlc)CwQ*8%5RU1tiIeaLA)Af=y^WKZ3^x+n(>H->SSJU-p zgZ^w8Pqi|i+6v2Q-uZ;ok2o$isThytk)9_pZYhZMN%DqlCjVlmpW7d*BJ)%}jFngg zKV~f$NIE3sOY6mGV}w)JyxXmUM|V;1m_&nC+FPWF-2;4S-^YdMXlv#l{Ak#*1VtfY z+3X01itLmN3&?HauDTVARKb3%Ll0bswVL<8DI8^g!;BNKY}lHohS-5w~z6Q)yM*yH}a+iIYYhA__QlngchBzDDrILsEnYxxZacEsNI4=0Nyq zUjnLK^1;>p9P)SkHT@jt+J8N2`Z*rrU7j!6Pm?nL%Z`Pw-Q8~drP9nAkhzDIsT5uc zUqs3NZH)2}dbglSQSnZvDA{bD>Pdt`ni4U-hL+! znJ&0B_mhr#c(D>LW1C)W%wfMV-D$W}mFkFI^u+4lo$4{BI6aYSj8?}Z|9r{^;p{cm z2}EuO}J-9eAbR$R))H!M=#r zS?&3`bMkqaF5B4%#%%@64{|!?)fc!%00Y_7ypBweYajZb+tHX3Jsh z(3Dm&i2}0yE%hmW!!3tZ;z^3s$--9L|GI3%-c;xb%+`&CD1_ej7ynuWn_|DU%}oBe zm=P(bBA((&r9t?WZRU-6jM;K5q7peiZJ#2#aff^>JSK)ZQ_{_6PDe~J8&~=3SHT-# zBQ}XE9-Gb6XjcfCagcjnV~kVXfvyn8Q=64s+k9G%)yNq-Cny6>aNSq@1+IH^rg{9M z9Em51P8Wv)nHs4U``m+cx24ow$HL}WB5QT@A+nxurp;#a&9S_j&nyR1JS&(62&(fN zCB6=Y==rU3plvo!`caxgG2Hi14q$3v6bvb$&lMjJwmx^oq11%<;Aa%+D!z_IMW6f2 zF8bUzPfk)zOdGB_JWan7l+>^0blK+0Z-s%rAQZj%1q6Nd_9}yw)k7|+}Z4c8!fAPr*n9Inv zfcac0&;iW-?83LI;dJIp@1S;1k%AwsL9*Q|e?qkhu&>VV0Q+p-&A&V>o4(&FF@wM= zTUkTw`n@bf=URQ#>Ni4%q&fCWd$;c6Yxm0gXn-x1LVc#2E#gX5yMvD`1VrIV_}W!u;y^TcZhIB;Ds%}GBDR&fee?``-}kw^53m!}$IQ!#kTkz=3Z4VnVS zSxAHihK}?Ih{}pf$gu$)V-oN0#JH6`4I8q(&tV{j$7}nce;wsQ0a@toIt|Ac-ZY?)bip&${ zW0_ckIyP{ly5O7Wt?DbnWQ@0N&g|zPv`L+GIS9{#gThq8XRX(hTYWX_=-EbpG8YEx z(jp_cbKN>t`j^~NxPu-JwEJhL(LcT9xp{B<>7T8jiLaFl2_h?*+nrMia z*Af?qrB5L!%;YRR>ds;zIJ4IKT6UxU+h$%9#k-2En0V*^&C57wQ^90loPs)Wv~lrZJ7NL zY}6W3Y&L2vuWnc(C@5w^#XGbH%#?V;H;N~_A|XQ8sv8v6>p!xoKj&NJ>OmA#YvIT4epYd*$-b(4V51GiWSmgXC+L3DDdJCaiAQ$PWCBCJe%_oCU4XWslP{04* z-4W`c$2%j`HBTqHTOr+52(?YFE7z9H{S>TOLUkeof4H8W);8Xl5$svKASd7yTkbtq zD0F#a1|ta9bzsZm+zso$7+qdXw-Ph^@pg+gS@pZlGy6ZJT66Ua(uE}HKC>U6)G@Ow zdACXjDBbqaCuVl{W1l&*e@=YM%-+Pic@|Z4pV@*3y3g!=)Yw6)Om6S)`@iivv!70o z?EY2PsrAd$DpF)jk$KnU*4zpy(s^#b6eZG&es!n}mu|Br_X>K|0k#*BYE73{dfRz& zl_jdcE3o_1Ass~A1m4Z#DBZS$!>y~PFtl3En9b(Yu+6sogd*76B=m!~^3!8TaQ4k+ z@3-3-mY=It>a2`9Un=URA3X24BvttnXMat}x3WFmYHl6SML+oJDv^7~yBOU3uE}Ou z%7kUvPWS#{?O@fgPt^`SJ+Yg1FdiFjYX>{zfuEuu{7tRs2NA(3`_p#);9wz-jpwpv}6-JraDNwA&EBxRTTTah8W#Irs#nRI)EEioUB>;y#LYUz?vG zF;)EPSzoj^!b^5m+&bZ2QjAwE=4GpS7Tp!&%y#vyi`I+}IeYsnREu*S!(BvBV?lqq zh(l~TONa`=OhQyt3BkQ~MTUS?;@9V(lmBG>f1Uy5@7EPN9}s#e_#GBFy>N%96u2+! z7kbghqW6&mE^hW59<($BIpzbW9F2#G0kh8a1+0~_*APZgky<(G`ex@aIXQ}kAZp6@ zvI-9rz9V*NHFa6$BS_SN&Z{HiU4h`l1ix!yS&<$eGtZj`D*bGiGnfq}DfGnbd@z={O+_#h!kv*?R_(GE-7|xh<D2u|5%i}u{oR;jInWhc) z&}i~5e#|&zzW2Bq0oz$MIqqp|2ss|(4H^rm<`+4RLXRFr(6Ef)2l950oeszLOl zS32F69SaPTn6ljW;>TQ=pIaIoL2O?-Yx#tYJ~G6nS)XvV)2xMm=BSYycdwHR&6+P+ z##Za1-t)udqTUM0G19{JN6@VO`N+Pg_fwU5xtO4GQb^2I`Xx3&IsaUN=|6e@2)riZ zPaQ!zZcfD~a;U@+yhMN)VY37=;BI5hjoGI5m|Eg|-1Vf$)QI=^>$h3!jCiu5hq&@d z-lz>oX^p$M2;Mu^E1Il?SIh^1p{lw(akc2n4MZuy;I7lHi_psaNrd{-l||=1kK&Sq zqZYphr%DK4t~p(pnOMv2to9%7WYWCh^hI-0;#??MjZD@NOk3^bfwf1T zz$78*{mC0JC_@qnLE>!yTPt9VU57AGPqJbM1HiK5+%0bsJNR&H6j?4}2fs<|;Ap4V z!4gS<*uhfhkQF-^iu`V+*70FslXIzre|t>*CW7!m2`;KyCI0DVwu`pB*wxYgCGD|H z?bfNc-;vk_GG$J#ESR8+3P7hzpn<@U}k4x@V78qJ&A?avE zaH%WN(FR;5frN?u!-BJb1+InziM1Y=SZgixcRO(G-+TAl7b{f@-SYST{Wh@7_H6H? zObgk2ttD2D6j0{1nl3slq=UBVfGn-V{Q0i7SOO9n8?bbox*Jc(2ZDL#qYRqEKSP*z z|I?zR6gjchcsV6Sli16x%&qc|`ohzk-28utNm14j*HZvtkvlv)h3z0hkPpa`X=s<< z`=-8KMZMTi%|Q)1LOrM1^^Fp_AGR6|@)XPnyV)Txz=X5@<$kB>%A5 zF2kEr>~+qY;>Oq|zRpwfuC{nE$A4n~CU1qoKzp>TsQZs-SyI<78(*|s4jD)OQR)$)R5j9*-V~PJS#yeP(8JM4rD1QntgZ?W7q7tU zElYaG^L!2NNjv`}eDxL2&t4GFBf&i6W5$Wl&LWA~_xmB8?wwEkgWxK>JRK`9_`fO^ zbY}ae?adGTU-1D|u96(oSll}wPFX=`eD;);`7j(wX9@Bb%+CgH1`vHYpcMTnJA&pzX?X*M(0iZDftnF+QrGEt~kw3kJU z&?lwX7f5pnr0GJYUHP^2*;f1z6>cMpOi%5kbaO*0Z&BrGf;55KoX_AJlzj0LI0UB9 zrKS)n>~utoTBE3f*!)S_?Z*i0GoRD-nk%v`!Cq)>4~sU#i@S_kh&AON$o%auB{-|F z>srI(G_I}`D~sM6ehG5DBpZu?&6omZ`Xc3dOY|`K%9T!XyrpE*yuBVHM&1IlZ;`t=J2&`k^T;37(xuC~-LXlKmoy!m3a($^bVpNi z)trYHV3rvVOqN5g8kCO=ST`~X%$I(F5Fx%^4j50#4cYUS3ST{$Q_qeo?hg-_RYDNn znSw;mFTzc@F%E|-)>5CGzK^qBU@7afR#Cm%=lV$OkSam z$%(2JpRJ{RfnUm#`mIttp0q5&7n0ustmAI$mObvGJE)?j1!n@jP;(Erv5WS{)QsDJ>WC{Q*N{sH8>ep(owI`h9AoA;IevC54ZNOG!lXer+Jpm(UIVV{=l70p3~f9VZ>iO$ z4NICPCLC+>TYMZnHGB0)S)g`Ft#+ecMDClsxLQMNojmDfi#)5A=#lzn8mZN;*~#zv zRMwXFr+IG@$Nsh2^)K#oES(q$_j)UXRr7+o3W<_&5COczlc?w8s zG`L40sp)XjFwEkoJDE5#xPu;%qleLf3PR)LEXQlD-BfU*bOSRBC*eqlzn7$?`}6p~ zm#(FI@^Z8R?i_B|`|}F)&^tx%kzNolPl@;EzIBooKA)Asmav}6gwPTsC9%aeq$lP_ z&(;=yz+$WWbRy(bTSsuCoVvOo$STg-YH?fhwQ%G=a-RIVeXASmI($)b#_4*^dpd3k zVU4XYF#8Dkr!`Ihp#0&lDs8TfIyc(V7SVuhwDs#xO%s*=3@o4p=d6CLALvn z5BtM)txG}+1s=uT*XXU_@sQTEi(eH}58Cipp5iwAy`1iRe=i`iRf}vP+wujlRz4dE zX;s?+ke8x9=>(9EJ>Cf*M|J_oS66-(KwjyL^^STKJW4|zkofc<*FK@lFlj3TC<_2e zp8f&_mArWhEU;9G1wf(=mm^c+nvXCuTKH_>(u$cV_&=JirfKm<3J}5gLZMX)NU~ql zWlzo;iwZ!K|F2Wy+w@&%rR*Cv(2Kz#=FV9-XP7I_8A7sEaJPbvX@q2l70D-g0f|zl z$i7bA-c;`A5Q6}_*h306ts7^p>T9(qz6o_+9p<*jKeie+4rz_|sUuByifd9`Pv!~# zXdfs^VRyPQ!HF4&x%zFQl8q<@1O{`n#8rH&bUENG{!xQG@wl?p%uB`Ibwp`s*dKmA z#1@P`kZ(~tT-G>#sZAnnBp2f47|BvL(aopxCdAXvCC5mcZhr)i_W>z3iF6CEG9y|; zAL%iRiGCZ;7joG$ED;31Y7APvmxA+EIBmnzsYn2 zM%mQcAXN{;Y?W`~X#-SKHjVh$Y0}hvR&CSlrkJ(;q*xFj+^d?UIo*<2Re=S`|MxlN z;$5N(;@?WVc#D;hiYyq1ZGRCiMY|(e){;dkV8L$6)^5K;mQc7oMRWNhH?e`!u3~b0 z?UZ-r&pI#QT7Ic%nISLnwAFbEm@LY>mLKs} zx&+3GVwiKMy+SVjukWQ{5kD6MM%ruYRbK->`^lsAVbZz+>e#8$4{|n1j*<3L$pL&a z)xOo^ryQU7^fyxAvpKu3x2E71JzSYC4B?`;WvdDejbAav5uU<{01hz=cj@8jJ0)=8 zbll@l-i=PlP~PHLEZ>Xfq+iLAuQhU`(qSo-HawaNA81_&k;OFDx|^;{ZaI|YiCmfD zZt7*MZ8?_qde@$vZME>a~a)*o>y=dHqZsK&&P zA^tI!k}dyfx39zIhnv(Q7FSY9;l`^v-KR;2og-uV_>=J}`k0C=>8lxDvSrr!jqfNm z8Xlk9wP?t>Z3WsNVTC!R(Mc*9$g#^U#mZm<_qwo9Th)xAKO59Ve|BDbZ@;t(?eHb2 z(C`DjFojNjVYiO&+O2ti{-(Nhjp|k*Y$2Dstb1SX;_?*j_Cc6Xwac^pQx8E9Sn@(O z$8}C?a!WsDa{D45O-%1a_jj4zM;`g6#_iU$m!>&tAPU0nR@w5x}GW8FI0>Q>FdoG-V&WnDY=t3Q5I^Ywk=g{t|=`!e(O zyPtKLue5KhTkjKnQ+2E0%gxs@T{{+d=$o3aOI62YKZu@Bgrjipa-Bx$hOAUi$&?f{ ziAUhW(XnBS*cxwV#>}C)mce7EdDiImlC;Ym2gp$69&Ru?$R17APIa3*mZ7- z@-J4aH0Luia`i~s``nWC8)fObago!!T*S2$6q00T5bGQ!eWdI#pJwpCbX-ZjMLKTa8JQC(2dKOs>OWIlO` zr~Tl>1gYkdHzCyqt0HN8o2@SiDbVpzUB&BZmlfgYsB9e3Lq2;T1+Mkg;^4p?LTB2eXVD;fFX~EfOv&2iV z{EcT66E7j9D1VK_OOW^l&B2o?*DvDU?mB<{?Bm?^bBUsrUf5iJxInwR*%w;V1A{0u z=)T+K9Jq*cz;%54A@^qz6*oLlUgBxLACx%cE|WJAvYfAqr1i5uI-WSIq@bsZ!jj;< zaF8mML7JU{g>_G6udrF9Xu61TU2^_ccAd+AF?7lKJVnV8Lc@kfmktT_-CjhX-DNZA03lm&gYXJ&(tLM%W>u|Vr$49ZMf}v zW)a^LKS-v|Lbz}bEMCnc_Wk@8-8Q_jTu%@I=taTHJNd?!yibH4!~xXdeX!nfw;4$4=rXdYI8V=iIbf>Sn3-!)a9<etk_w56uh%ZHeI%^Xz!nkJ>{+j5%5<&J6+;U*Q0 zj^(*qOyX(I%k@)ZZ;Fg^*PH2-8D0O{@cNc|O8TUJU1psLqrzsoH{%fmoo3%btBafx|RkW-%IZ4xK?v8vCT zn1S}hj7@Sk@&AQMzEDe#*eRbjJLTl}aW}c8SPzOpzxh!#L3Ng|E}h2d8RsG)d_+MOw5GCllLOSG{N;K z#CCJfG+ez?^kAX{6Jvn^u7~^vq1+x*M=T+TwA(M^T=5vwACnW9DwU5lc!Hv z-^7MTw=06_YE-816>QHW$qOx*j`dK~#k(A1Bden>AtD@YZ=hw>Yxw{6rTp~Q{P(YT zpd&to`>F5*E`A|%^@~Z`(^z3Bv|w&{Mw~?eC6<+v*6=fG@sw1jVt9z+R&3SUzC)6s zJBcj(pu!>UlC876Y=wj+{RU)!ddZ73EeYU@n9%>v?TYu!QWC%|=73*VEGA0t_x*<1 zStoonW#-84RfRrGnb}v#yLg*%(7amJrZxUl1|TxUE#{N=s~WY2+eou&1(02j%SwnFT|IjX9doQ9of4<$+IIF3^=~gq?|ND}+DEt4Dy2vkw zCluYWaQoXiU-B+M0UnA8=x0r@Zv3H@P8-Xm>u|;L;3%FJDedJhIXbJN`zWGvhoMi0 zeDG}5f35LJzO%=$WT`z}zaxzmU?_IQs0uJHlMxxunFAMKRuzTcmL`>c3tMPC`8&q! zRCoSJc(?OuFhE>$l&WWc{)tR@lSP_36{bs$jIy>XhQal-1DKb}wHd)OxJjmPrr zPA2BFZL*y8;Bq~Y!sTfxuJ%q)(;i*#Zn`14w#7v9@9kkPdv{Q^mc65^Jycf{u>(|h ztAB3Km)t8!tULGd>=i28kdlXPdLr&w=;2c70Jqhz*BWnTySR(^Ejy-Fv-1^3n1Vot-9axQ#<>D2F)cBS1Qghd;R6L$huv5g zl%p-y8V54tzRy!A~fW@P7jJvJ5xwYDQUdB<_MNC#+YMy@0r%B14RXw>pS2zn{ zqJ%xI3=JDfvNf=iI|g=-Dogjv;zRL?Opk8t^G_=?14E{<|E4E z8piA#NOqe-MwBdYX^WR16xrxwx%Ko!e6tB1A%QEF@RT0jqn?&kzxW1Urhea>+su<7 z8-be8uo(-a=NB@&Q|wLvwXcu};*DoUc%kRd_Yv`)Z6CjgAMwl@$uZK-u|FCFSM?CJ zy01X6_dkixFOWisjQ@!A{&$hU|Eqe-jo1S2eqy3SNH6%oP+d+^u#aBs45ozi${ezs zWChL70z&MUaB(6gOt`KS@*ZMdkFJFR!3DL4-4tJ2UwXVFc#sRA%ICo0MqhD zFYy4sfxO^f7kyaI2Q!X0)^-xUq#A46WiMr`Mf8F-*biS6zc{Uk2pfu*@{PM>z1AR} z>?4K)jyQDqtl8%(qlHBu=3wcWonTM`U z7F~m{5T`!ta5d8S*993u-(ZFR#O%HpbaJqj9GbV6J8{H)t!ai#!Z}P2+_~HuA+}si zt1pszyZI4n48lmd!`V+TCzV699WqC^yeV>vu$nVVT3B5XepD7hgg>k~Ya{fd2w?NL zkaLCH$APeV9-@jv%A7*^BYIp2i7HZ3Bf30tFz%l;F@_K&z!e>V2_iig-?N_S&aZ-09GC7s4E@>mv z*1R8U4gDzO=cZmH?SG26j~*GevwVNNqU726Rb!2m7v$cn&u?t3$Zu8f&@JBXNlIR= zEni&Z+IT9`ox9JMrxoS5Irg-K&l+u9{(_U*FQj%6Q^$VkD#{Oh&*HC=d#sK0q({_ksNy`-4Dtdypyp;`9f4EQJ7{U^=nMM%Wa4o5&Il;dZ z+VJ-tB#V*EyEY5nd(N#r+Sh0a?H-I2YH@*7t3BG%V)k?=1H!G?Ze+6z zoA`fPbflg#^GxYz;>T)N)0xJ{wmhKZZ7t$t#wrXAIlk7gfrY3*SQ|Ov{*gFeJ-Evs zxoh{{JV!M(&95PQx#(F-4HTg?~{@%`4zu#KnvktGjV%@O+LN2Ddzw=b8S zQ;tbQKRro8ok~3D#iz+|QGYb#sd3v;P`5R16#a2skoa=Vc6(0MUTh2=6Vl)fDw5aI zL?KOpKNwFRD#>t`Y*Nuxfk!Lev{kY9ZkGSirvKZR^~7= zL&MJFM~7+aZ&VgK;VOBFr`<1AD>{CxYJ{9Kt*_(q8*-Q4H;^KcrO6y1uRYZfq8mhX z<2VzS1d0ihlTHk)ec>R($0Cv=T|BzVVfgQGeE*;81Iwc|c-Z(#=OqXR@(R__N(+Y7 zm9+29NWk!!N38_~hJQ(-(&$|zFY&aWeyo0505*~z@yt9`B<--|SWvKl6ag^Qh5f9| zzo^ev%b{ssfZKReXJ9K;#V8*mnP$%E+{~*VNi!{yW2F6{qnYD6n)#KL86-0_>_(|t zAg#mD_Ae@*t!T&#@vo`U0_I!fO*ZM(RuyO4^|u?^{xR{XOJ2U5I`1EbAE5}G$^zeG zQKp5vJjM>Z5u@o@Fw!koGK?R~+Ifu4b?4PCK}q2JasHa84>2gWkzsgBb_9-(=y5!b zx5S(Ig|CAakJ0KWX`cT~tmkSV0Xf7bGq6n&hza_z5Ykuf%QDKVzS2gtI!PDl-UW8o z@IyxrxF~l4Ge7L^m9)-(u8?rH(!I}ZU*?DV z_&DT9xa}WrQCh|#i)n82*F2WHlxn!%=Qr-J=dB|7ux*WmAMQ}|5s!WIh$-_L@B5N* zM9sB*Xo4q)WLu66j)l6y0WbK&SHc~E6n<*UwT6va_+9GLmJc?f?tGznsaF=mqUUE^ zV$t#-mF#2rFmPfm`c&;x$aw-f#lHkO-&2wEZX+Tr3SI?@xLsIb{7_o-vizsfzs~dP zF3J8uz!xcFa$6&1NgY$mowXRmQvH^8rr@-t)B#V>sA1^nv9D(_1CQr01BJWVdcu-C zE{hS1merS@<_J0&Y}+32pw2Ch0wRleY_Xj;e_zD?Wa*&U$@MKc6l&@Zw_@yZ=eMb; z`#$yS#9+Pk4JyO9!W=cr;-r2p8Ija)nJ?Ym5At$1#3wf}N%R>%tf#D88_p;6$W!Q3 z%)&`RL;OtAZ6RIgh9NfIz4#}yTy(gZLNhMw1{t{tdh4G6AC^FQ?T6y4l?ug&5#A@veE(h=4w!bs2mirU7g;>5%jS8gPHg~jr8nw4HAXMjk@OLhUvPzwV&>6{R9;gioj7gTZ{DEadp>k@R}U_ z6G54N@OC;t-%5#xx|R4U%aE||aa(Ar8Uvp{zRIa&8Tg>oZOCl~qVSC-URzpu<))2j zDzFCV`NC5E*29+-$u3WK>rhk6Bxg(g1a)+Y3$5CKJ{ zNx_49=uk@VgcX5nZe8xc-x0>BVjyv7VovyS?$B9d#l}$?QVf&P5 z+(hGeC0fw)aS;Le(Zz|gnnu+ntR?iw7?&O%iFL$ts9AEtBVjni5~&7Z%Sh&FOxCCf z<|g5hIp)hsYcPhsJnyfGnp>@(S^DZBRK|bc@uZ_(t4}%3bNN0$tyH zS(oJ+Bu_Uk%uz1S4tt8O$p{>S4`=`bQgWSaG|oN<$g(P-&RoV-+#%=sr1q$uqEBg& z^VaeiVk}M<05={<-_9exm7U6UrKAeY^AY~HPvw4jk+GrVecWSd6+l9>dGGfG3hH_V z`<1*hzjw4;HA!TP$+F@>FOT?HgX6aR`qu z)#m0K6kwqzK@GdrJY$iiwseQDqNeg{y=LrWKTDQ8wwi93tFPQ2PntcMQ3@N&Zlx_@ zTMM?qs2-k=YrBo%`E^RZGCxO2yRXWE ztTO9gweKBADzbtjxqe+`E%A%8#9}pWj4PQgK?YCfSSyjG#wlM`eNh2N3oOUJTiH2L zPswyLRL+L-3?kf=XBEbcs?u;>DV|S<=$MH#38v;tV`p)3@HoueDfBbp>| z2jW#0xhx1r>Nn`Ue<$7+7qEzFVexn9N6uGd>N>%%J^t$j=mL0Z zwDDMuio=eppnV9$EcJ>d&qLJeDjGT{crY?I$-MG9i`IXDB@=(2KjW#_Y%|}yC1E*@ zQbMIcT0O5E1+|*xm+gccCoA3fC}rp~rbM;+iJ80)La1v-JyKlRn7r!0?OTut^zt}YeqQjJ>{ zT>U8b__+F!WffspmCxwyHpb++jqzE=3OT1DDSeaIbK)Te%iY-dXbMyf@jq=Xi~gTpwQREg6|TE1hr#=|Y~IzP68O#*XvV z;KBmV3#2^JC`any?S0xel%2YT28j))G8YO}GiW z{`Fn!-?Zja>R)f>sQPcrlHDynpv46GpE}c4W!>?O_=ZThRWe@UFbv+z?Qf4UD$kQV zDogNifv2QNCVE~^b6S7VNcbEQb@pP=5^lFfr%Mc3Ouev=1p2BYS7$dUWq2>&4GCm_mWY0>I0r?_hO3i)EeH>)wk4V*PM(63t zqjO}(evO;$%d+C}q!D@4C4@mG7M~+h)xGeFn)R-tsiU-pKd~O6xy~f5;XdBH#z)0d zivnjA?(hP2-zFX+GU2WM{H@57AZy)4DSd+J_?AT7h1FgD246|@yf;0On`Oa-Xllhp zFD@%e-Nk2Wjo;+}3{Rbm1LOcJKll1s$9j?WM=pkb+G_S^h_W{r;ADwzmpmHXc+{MD z$^N(}Y3^jAFNQ}J7Kg?<{~SyjXgt=RdFb3;I`-GQjE{ly#ze z=;Jn&5>`e&RFudI<}V%xUTRR+yiifIjpI2?v$54Ysr}p0MNsvO zm3}{O)~Ro6fTGb=K&{W=*f2s*l94l=td?y4DgoqbdnYSF!dHaiZ(!qp$to@XH1#+8 z*o-d)zGo{KZmtR~%yKL!WsU{-`!LDbvj*UHjFp{`ZXRSAm}U)XI|~9ZeM3r;BVL{r z9|2u03JQ+2%htxry8lwiU(m1a^opEUKBLWz+T4I#dC}|#*QlK5L`IheOQYqJWkoU6 z%`cgK{VYyy4x9%?Q`n1No$nqIi064vU z$*&sfz%3q~r7cFH#!8Gx_tiYV!I9*vA*5#w-pWRE`VvRA<+WZcLJmQhICgPiH&{>J zZXTZZaoigj*#nMQ4r2))C{&|{+sZx+L1N7D ziCN3i;fUm8qoUOyf~NvA5hT|StO7F{(x-i<$g>GgyyC=0)0UsPIZi&k3B1w zl8m4;mTb)2Eo=>k1hZ(_@wkyMnX{6Kk@K)z39XZWXtJaKT_l4ZSV5?G3)xi`5<#OGkOScr-#kvc zU1vA~Y174wN!=j>G=V)~dx1Sy?Gk|uuQ73OmVjYHoY4zo_7YE@;Ta6r0dNT@tJ$L` zb0v+4V7{7^!FtQz05{V{jrYqJp#|XlGkgZl+td2>?PRhVn7AK%$Yw|^99eHQC*5=u zBVSNz@CM?9>M-b*X{aCCSQd(_ZxW?cx6Ee~CZgtnDWWwPqnne?vtLR$jD5x|-8R16 z>JE=AHTx7L3`Bc%x<>u*CD6wWx%Kpu-HDVdEQ98s6j^?Cxn!hfCAL)2hO=#~CAtlclOu z)L8pbNYDezNXu|jpljY2oZ=nX_IaM*zq^v2Cli@HWkFA~H~Sxq8gC8v5-Mi_Ud1p( z*=7zFaE^>FFvlSxCJK(-^P)InOSo>Y^n^H;hKXe z5s#M49XIcF-MFkuxOlG9_qccnoS0mvKm1BNCw3!=ilI6|UgBxBl4aP29|QOi&wT$P zNlII1e>B*}A`+Vb{3h4wixZW!s-gmHuKGq8w2rN!-ekWhHXui?6)TyQETt0N%IXq!m>9%a z3sPm}lyXq3Fjb`EYdHVqw38KNt>LFCjQvaWueV+g1g!O%WUtpGYrSMvTyn9O+KIAT zDZtM^mV-}`GF*P;T2J_zN(2*s?KZG4`BTO(_xUXo3hmKR5SWa+EFD9?7U4UY0~uVU zyUEqV+oUJg-#p3@C>H`Y06j9JDzpH?^-K?(zD2vh>f40t_;mAvhZDq$@cJVy!gZt& zuKvi(yx3K8w7UF}8F|KadFtA~-?%0R5Qh*hLvpa*Q&N^a3j-7A;Lw_MbI+e3H24r& z_;^?(Xf!0xqhVm4HQhRt=F}|7mHBa5cj#-56+uGH2z0awitcqT3T`*gMbTM!z#TqM zrnWLX6US;JQxv~Bzz6dTC6#V2qBUB|)N3xzGI~C_^IL54(dprozM&CWDRCH*nW^y+ ze&JD)U`;Mp=C-WKH|uoOKHn4aMFGAXixEexAQv@-YTswvBaF7Vsx3?5FN42a{?6gg z!{0dmCWgxbo^TH?_avDIxtR_bpA#*2a+Endkr5di%10%k8iL@TE=gwKk9}0S@FS9L z){ww0%_@gPXBUEGRgX>t$s3?M2ogOqzDg_{pP!5*T<8%zzL%#XE_X&QO!C)=ib6E;DSnd5~ug5&>YxKy2xzj~Pwdn073M2G9xCY!Mn#;y|YBr8Uy*zvN zHeQT+8;W|5=#7dz>TRm&-GsN+#dr7K%wvh!`w)-2Q=Jz$quzV!ocHm#cc=4R9!vB3 zjO`Qk{%TpD6+D(b+b6eg)cfG|eIMlU&?|k9?-%txGN#}6d8}C0Zv~IXp6%yMi+Y>u z)28>2de_zWU&5nxY5(Oso;uXONQ-*6>sl3$XD4g*Ja#VAT6z3sr`9(;>fL>M`Y0ZM zy)OOxJj~ywxAJ&1ESvjmky}oaj0p)Jv=^2$vQ79>UGp*HStK|kG&b`@tquz9V@0C0H@^2<9z~npGkKIAdav*MQLk(0`&aVt-246}9{OAF_un7& z`t|*n@~EuaznI6khxV`FQPsS^mB;0MKREM)sJHsY4}QyI;!__ScteJtJl*^ty=jLfVbAne-k!No3gV&^d-qdM(uH!j$(v7cO&9mUz zDeAj(f-?h?`CWANwR@&{A{pW_nD_*EVcIiCgk_t0^X_ptuD*t+{>H?Ke_IJlB{7lw z*Z!?`61GmfR!*KgrH$vfsn@@KJ`gtKtSv7~3N`Nu9qK*1NWaHe+?d*i3MqL@ z{59PeFbC=O7j{lBIqXpT6vv5id3voCG{oI+8;{;vwtu6v_Ow!?%R*y2Z#A- zBT?FgMX%JAM_KYmv!5gJ_ZaW;7q$O(@ccS6u*T8#Gi~`AdtB$zr3C}Q84T~1N7V2( z#b5Io&bGRWzQBpI?I+(AI@H;AkI(wOl<0EUc{r9(IPrH6@A9|Q{#(ZL^ZJQ#BE)eo z+AY(bSnOEQCYLnU;PK@iK)1oM)I7DTJ*Hf(IC9dg6bh~7%ETHJUmG*`$1$1NL^03(eOa!-hSAgu6M_GLnS!HzOyI7(x$Qa<{gHB~7=mmyFC8w!*-nlsHPtG$x6NaJDkY`d*;0-|ZTVe3 z|CW{PY|BvPr#Z!r?L)sYZD;Y7>009>oI%_e)f%3V!w6d&D9U&I;b}V=l7k_&y^Q$J z{e-9?-NsgLaZnuk7!`T(7LUC5HoST9*5uZR8_sDvgcHP5#&aSSH~%y&5%-0-k>LW7 zCWfnWgkA-{Hhqi|vpn70^04f~=SVfz@akT)Fja0UEhuoWkSAMU?Lli--o?13*aPPX z<@KSskC6SW5<=9xKjrGe(@m7lYNEU;Sfn3;|yC`HhGq|ISE&rkx^(q>#u-&Nt7K@5>y?ck z$76_3KBeJBlvNEIyvRhS(q(^m;m)?XOztWdspi7=x&xO)9SlK0Na{V0da*z8g-3!M zwwnL-Cwtbmnu~dLFIv!j)*=V2S-Zk5Q?u2aRw%RfzD(fxoE9=`XRA|#*d)_-wjE+J z;J23nM*@xJx7Ex7aN+W0ZM$Tq4E1AY+g7WjK%6RhISnYN`?FQbiLr=?RFU%KP{tj( zu#c&$1GU`QcIRi8$)yZE*eQ@MRqr%^A^i+rwX^Lq`zw(_^$pc!IRYsgTtl#XPwWuq z2)hsBU>X&}L!y5RrqSnRE5~@<7nL{z$NG)2%YdeH_gM4dbxCuxcZx5>8UC6HhYEKQ zc_nbwf@>(a*LbE~J~2{zBBd`jz1vIs%swfS{ZpLGq zRe7;dT6(!t8&JMC=0bGB`6Gvea7SCszOr^4Be8EMa;$UYJvEyxv*BFwI}W#TJ+Ybj&e@wp;^4>k(7%tn}~uI8cq|mVBLsgKIAYzO%8L+ zw=ZJ*6G_RBtUNrRsfVYj40By>^w`$0wM)jw`Z;R&>-}y&$D=&!_`8okdEd(4>bLtj z&UvSw<1PNA%5~%k+Q*FU;-5pR0HIKHnP>-)YlEa?o4o; zUHhl_Pg`vDJ&yCtnXzo_PuU!Yy>j>4*lf<>)MQ`qE~3%U=NmVL4#W2M{L#)M2m~^R zKlf2w*F0-FHT^~To%?gCON_q|{~j00PYPl=GdewfG2KwI=J((1t+vz`^au)~iVk^Y z1EK}g<>1Vdcv6v`SF1F*COzWEAiY_#upQ%IHEVll2q)H6b?Uf1ZPb@nfBu8Pfd|XL z_l~3h$KXZu)0bynxI(i+K;(7$jA~0R%+r3DVEFyUUql&%ylm0iOR2zb+=S1_3d8h; zFRu3xOHHoE_`)NWxQV)OdkJm$!c%wp!ZWu=rYHHrb6cNuU=d#tu4%4_R6Bj)%XW+3 zUVmh?LVMJPXJ)jC*)YQW zEWs*HOJN%8xze%eCnb6`DrRyC`?Y9&>38rCAbx&I4lOuejZanDS1R>WX)Hx*OjH)o zjrwXqSyVhZ?kb47vW}sx*yVa;cG9XGX_oshW1la+IA{I4xl)5V?rsGJ5m~&rRPjVqlW$%M-K(j_*}pCo^-DADw4L zX4f4_87maLgf{&2skwC*Q?r($YHC*Tk{HdWP7M}wpF1hvrMj+@GOg33)O4DZ37<15 z7lyuQQiej+eEOuc&&RPAq}-Z-6ag&eodAd zji&=%Fe=$>W>dGSHrA)T_QYI&9mpAa%NI>jZ`2l_m?YJ<>Y6=M!6KkW&64|%NPF*A zo6VgZ)$j2|n`Jvl{5uiRA>?|%Z1INbxZka*}r!>l)9pT|NQDS1A>3h=X~P6V@|?b=_V)2eNz{J5|U&t`}OdrhG<9ZZxHJ068?(n&J4|e%n6Biw7yF8b<$G@g>!w+)^p}ToG!*N zFFP>DY0p(F=R+jbC8MdI*O~-Q%4iK7>t2Z>0no>;c6ajW z&L{dJB|dFtt%2J0F+eLKz^ZcTh_P9L4L(dLZ#CrJh0Sftfmt^f4^zF?8az>P7_xG?7HaFOH9SKdT!_^gMp-X`T8O#8 z@g8GL`l@kMBr_oMzwy>IN83uuc#ZN@wnA`_%oCh(&Ks70+;Dj+x;(VHKqUeVW1BHP z)%<0ZQ$9#pm8$x*+3X?J%%B==dHG7UXj~&mz~AXobmD^V_H#6JBmA%W_oW}#o9aX!?sV>-rmTNb5OEsD0TFX38mL+ z0>3Y9C@Oa|WqE_1ZAx>nkxsRHIJlz=v19EukWXbDzBNJC0o?>E7swRIYo)$b!}v#L z;_U`z0%fTC;B$ssPj-9eq$yZ=#@sP9#S!BmyRg#Q;~2x1g;Q>^H;4_&C&~f$5Oqo1 zpN-NtDveZ*Fg=q1hcoS}=POiogn!NU8vDSV2)0+?onNrn zZq~6vEWj}gM;rY;j);BKP-(b1DswL{Z1xzYw%qFgLkesf-V~C7fHDjKo1Na`$;fMZ z{&XIdkzUP7KAU&HHnx@M;P+k(Ma2o1K^)))b^KXJt%%itqjVcik5m0t+ijDI%V_>` zA^>`3Cjd|3 zg7tJpt~SqQnp`khkx0}fn(fagtpZ*Uhd01QTU|T z4GkNES?+jBuG<)zOM(|_$L0!S{-YbwM3C4ta&V_~r;wc${%vIdzU^X|KS1*+6$p#!E6aF82=K>#9c_#ds%p@5g;S3lw2+D}D z1OpNUYr;gClT6?YOd#L|R8(v9HEs?D975q+w1uYXDKgS{F2U~eK4Qo$ zcS%=Ds6pX)=r;B2DLX$`w?ewu0x83`Tr!59(a;`Hp@U0{6D`g&%(;R*$gnJ<8muFZq(WDUZZd^@53IVLp_30U z!Gl+i7VOz2BxB6x` zl|!TiG6gxR^CVpDf@;?*;kw5Zy(VV|3#V7AlegoM@4Zzep=78~soVAPv+IeLsVDK& zpA7kQt-4)UIug$MH+r%fIY);;!3B^9O+S_i5zVz=avTh)4~Qn5jVFadqDyESa_YH! zvk`uyV{N{sr_n*uWYni25(jN%)~}|x7(+1R0Ss9-(b>n3m4Qk&{MmQ7ZNPMM&mNM2 z>FFJYL{Wd=r#gjk+ww-CB%3KC3KG5^JGBRs5RtJC=4=#z?WSk&3#uj+tXsWD2!&b zI9Ga_#$rbXX^lx9^!P_q9_K0OuP-JnsXQg>ixanu>y)o2m=Zx%W$hLE-*4fQX02Pg zRG{cGxWPWG?gwXa*t=>;YspFc$b3G@nvX zvuB7pxVCKUms_k+CA)%2cd>K>yqcw6$;@!56x=$4#r(8&mOSb>+v~itXPu?q9JcE6 zOZ+XXLB51I1z5z$F55`9&$g>@efI#$^ek}j1mjeB)qDv!?Abw`b(EmaGkfZkZCSio za8EhL)NNf`(VgzB`1Fdu_HoZbWGa>w@pcXry?%SUs}2L*wyEvj)8XNC_|xXW-tP)% zLhSVRmikmbWn#|~h!*a_`Pl$;wQW8-l6z4deC8;1j=Y^nc}1f@Cf5uQ6|2$XOrNs z6+{c&c_lC0kV9qL zLjw&=*qFi5siS(otW~?7FG4@i)cj9iLSOfR32_a83FX>Ykia9s64U|7>6%*PjQH)H z94@+K^I0;Bay>BD>a18F!>UN#e1Zv=tf}(8qGLW$v{j0pdxD~pmF~h6>TvUW2_{0^ zTl~qB!v<}OU~_tAmWM0g!Kqca-FDzdm35<3e4WoFVhpQHGNPh9N9Ch`qy&A&Z_aoT;YdJg|>V( z-4RZFS8)O{VuI7#jM_(i`_!y}Gn{x#ao=f8h#_nE^@q{9nYw^V!)CpqBW$GZT63z0 zA7S5w6Ek7i&Rl>3GhfjCzYg7h_)6#NCQg;68C{M*^dyXdvG0pFFAVuRR$>6sLcq7W zR-^=imX(KvGLx~TFg9$hHgA~(e(9uVlVTU$6+H!iJ=DbvXb-f+Te8#5l9Cz}0%1I~ zXT;Wci$_mSEyGB^tO;K^awE(aN6HK24^|Xm>^p3-7?!mle;KNHI5>&i!o8%_J(tQ= zyj77>eZ0*+8m5<)5=d#^#*oGIPHV`5Ch75Fi@E*_R^?ZmV6<+iMfkjm6RXFYvog%` z5kijQJ@7duOt6+@?NVz9jYDmmC$tlt=w*@jHNTXu%UuPo2aYCm6mw4pAmbDfH_nJ} zw7J%|h_lQaej}JBSwFEDC#Y$1_EPKli{%RKNKJt8 zAJY5U=p{q#3Rm{Sb5&FEnQmV&F|)u(+`{d9w3q(rn&$RsjTb9jxM{U*xpyB5xE($$ zw-B~=BeIRY88&agdLw(oO(Px3z=yRD(W!ZsvvM$!5)_TG$B+&20Tf^e4y+2j@fgT_ zxK5Gx!SW{+?;k{ZtvYeZT37|o$-rd3j?9q}bt|s8oJR(>S}3y2mhm3`?Q%_a_kS1_YJJv?9KH=9)u=Cn~2b z-I`ga)7YgRv>*_MLY`FaBTKV4YssrkhCg*^b{=K(F>z4w7ybH?*ysj zW;s#sgsm>Ulj*QmPH{y92kc|8gX9aJ@YZ2AgT04Oi2DT?>}!Bg$?WJtv9@~wWy9L! zrA}-8MVX_-h~y~!+e%_5ByOlZw!^1D3aW*h*qpp{fGpe7v*@nkBODKD45kuoBi1cL ztYtQHe@Vbhc7SxW165ete#*QID_#3`l)dgj(Zo7(GP*$^?X}@VJ*oDcin6Z6I6mf5 z?&FAt>Ry2(ntGHgJbZ&1sC9pq$B}yIf03g9oq=O#KkDIo<(7JKLEWyl!YD*IIL?6Le2L zqR$r`g^}wPk5Tgb=)?G|-zZvP;wR<2`o^k)h*F&zvcc98x~YI;r?*cn0-0qjp+YOS zMh3OhniT<}M5II%LvEkCq|x_VFOE33*C%c&u)ZSC$?R3%5@E^;@E5#BWEWBl^{G

>IL-m0m`Lv>f7}KCvfT5))QfAz1I*G1Ih)WRoF|&{{)o(L46;1JT*3#+2#9e2o8>p7@h-O*GzQUGD1 z(sxiB^5sHR@QN3;xmyotLxvvEE^noR7qsF@MF+I`9V|Sr&yqCV6RHbve|3n(e8}Yy z^giGv!P%~R=qrme8_y6Y%rcxTas^5jX1(ygI@!JYn&R6+TfZkh8O8B!Ve|DMUL_mg z@Hw=xOiwRU|1YZG4Jx6ADvCOW<3KbazGMwX3ESmc zc#TJXF6Yk2&2!WIqGI|8c4Ofi1~_4RC#wA`xUvxaSQG4ID?Qi7h5?&(yV(3Z7Zg>? zP7G?^VGq56mvYG1_z}0ZRyg@;O_4}`WVBfLe{Lx-(#_gfTnSN5FxOTa<=T(<6Z+jjYS!~u#^-q*&c9pTYCY%a-MlRKlJe_=+PuqUqUP@>_k6wJpmuo& z|9&Y8S-g|f5X(Goc_HUQ{OkZ2FW)VHI5?NTK#|Ma>HoZK@~1<)qD3XC7hStT!06?z z>dnB-zt$-J;euK*{nv^aidw(0fA<{~p=7`tD%m|f>E0D|ZKHFBj37Wa=R0T~ud9fi zrEAADp~OBCRCoYlAGPL9dGZr%QX>k;-+2ZT&{vMu3ySF0Jm$Yx*5ZUJ$j4rIf95ws z?62mr=@)UGEknCnF|eDi<+(WMR;4rh~sb@twNrc5I6Z zByzzh+*$O(4>E>60u*XjY^B~Sn(MU*ElYFjgG_yDhz%m!_|~!1U9Vm70l5eCWp3%q zytOBDdvE5$>>!U?wC`X?6mjW^QPAvKqZ4pxxiOA}c%7ZBMOOEMRe!d4ZP_C#$QQBA zKmg>gEas3!UiHXU9kQs9Kg&j{3<86e6}3Acj2(m`rcQS!_c>b3U6Cu}7ZwdZ0~#5! zK7YhNVDoMJnY@>ew3Z$=MIO@mP2c7R5#reVFUpgo3{zS1e=YA6!b#~(d=Vo|61(%y zz$B_GavnOUn*>3qZ!{Ec&|&@l|Je6)-~{(`XAmpt#k_Y_%e~Ta0!3X3?`VdiB@~itgxQ#EF4$kFKW+#`)xy>z4v)BnkR_CP# z3A-dmmTm|l@hx%|VHyAyZTsCN*zd0J)tF0)tF_{)UHqBREQdCLS+D+AfSP~iL)Wi5 zu`fWPSX9WwgL%OYgKnB2Ydb~|Lw0M{;(Q}fiz*n(BXbIwsf57`9)m*Y+V76O%pXIm z-e!Lmy_-0W+55F{?Bgf!W!rDMPrP^}FTDEuBfw4PAQJ5|i4D;m-#5iDJ8|$|=GGeT zV*7TrW<>_YR-EjNW}8dAsp76yZ)9-2w)vfbye=8;nwT1fe|N3%3i3XI-t%^=Bo2Jo zA3r)$TU#yrpHD|e2yQH=DS9&co?3%#$F{@zZuh}-X9Kyk^|el{Ujtb|^9aA_owfW1 zXM)}K&*4~^Q@i^&Oc>C13b=WroHF$K{T*7P5c8%uQ}STbYX87w&D-JQyLIuQgQ%N| zu_2z2Wyje&UUlN{$siQKDCvaAHN|0B5@2t>6ik#^Uia_PF~2ji1ZJA>+Uh6n7DxpS z6n+(QV14k_L3&d#^Egm%3iB>$1LP}z!mnbM!+V~}tI1dUaj>LmDlK2W@+bT%K|WeT z{#`2{)?-WYrfzqYK7m}frEbtR%qWncYExuoT+!*9vw*AOf91^9dVgy)Pc0D6wyHcS zt*gZu9ceFxF9~uF2*W4>KWrUV43T!~RH^(Vdmb{!usxS05Yra$l7Luq!|~%h_8{$l z)8{QGWGE;(z_SRr&|Uuz8ykyewuTfW16 zDq1KugB{jCXzcu?*}>O#yi_vFkXIoC*qOkaWy1EysyiXH&VuA}wY60hWkGqBfo>VD zcAfxumwBuPrx>bVh9xe1-5F(8bsg_!_H$ns^|~2>gu7hZko_cY^@(7)+bX8} zFwczS`PX>Q5HlHn((qY7DefVBBPB`++iVnuW-5E5*zjP%j0j@_j-kAXX$9gZs-8b1 zQ!a_sogDUs`=zO!*5CsN({z5U(;13?ij)7>Rye*VG1 zG_xM^{|^6O$@8~s%tmrpndnTYU`{E}Bc=(UvYgHbw(G(czLq|5)G|m$&|7yX~ zle(szrp#1#T2m(pNxMJA;k}K-@#}Lkm)Q^RqjvkY9i1yz7Ll=DB$3PPR7p~oS;yaH zQXY{MGk;m85V!5ee38qHVqcR)ag=|C>JZ9xJFE-R0$*&CPqUk&cB*{6xlrI8*4+7b zdJ#w+!VDab({yVTRj51mghgSz!kl^n~R)w~aYiuuz^O;uy0V{eTIR?^LAeT`Dgex*i^1L_>8 zL0k7Ng7GP17%5rTfe_hacv@o&6YVji#tT<9MpH(jP(q8c)5SU8q8^e)+%u}UEh=1H zyvm?wcc}SVvMAVe6OP=wB2~fio90C?3@2`)*e$-Wxs>~@hRbcM#2i||cx?Z9*8U&m z^4OblD=EV4Z2KKs#GJ9r`k8t#r90M-?PuA-*7xjZnGx&T_Omb^t)%_@uspA^pV!HA z)P8)OETj0(t-`socm7u%N^GzW_E94=a|LoV*yX`CdtGuL# z%~o0RM`sEV-0u;-WR`D|otRA`EgW^x!nDjx+^UjrL++CY;(trkYG<6H8X={N{A}2E zd1v}gCjK{h&GybOiIR=DFn^gGywBlXIV10^;ptcu;eX%$j59#Isb7hH4yKaxzz{a;^Rhu7Io4>bK47Bf>hk&HUP1_eiw7}0hvoECA zU6POlB_xuuK`7${2e?B>I{k5?usl{205#yg4<{CSttszgHT*d3AS8I+I+wRl9iFJF z%{M~kNH9-A2z;N7E_h9k{T-*0)408+?j=-^2oPTlr}KvCX7Jfs!6dGdyDcEzX;nyu zbMYs`SHWEINI1bMnCo{2>QgcJgERgr{dCT>QDAK|x3#?l7&|26*B zmEW%RZ=aqBlO{YhElez^EeOf>81erE!>ogPuMywxZ%CIGprxt&S0ib78THk0QL)`M ztck&<`}*XPK3y(D!q=qglg>+r-KV|Mr@dg)TR^{zgrtB02_Ci%?w(jCk6>u7dhMLn z+lNFoo`)555TuJq@TCT;A2MkTt5{Q|%36PKZ+@6u0#HKc?{)KIt$3H$gR9D?bNlZn zwrVkxU2OPUBe^V0^nGkdSRb&}+TxT;c{Ld#OCuB6_%y&NSax&KnUQmZnR*7%iSy)r zbo7kmO|H~P^&H9l8GGE38Z7FUKNC_Q<0vn(5?PmhoKmN%YzeaU`p|$^v(B=RAssyd}A+)i{&;ah|!^yLzeFHLdZnJXNEl$N1t5p7! zPA!|{i;U>UU(AG`mhaJnM5q=~&;sRCRe4ISxKeBU6*~f)q_|(!2wL0?d{!uulb9;K z<)y$(0m*n-<2&(aq=Q6W2h%}3oOD-vDJ9oA;^>xlT*!XMS^wwPf~11=dj#0>sVsif zxq3*_y-Ic#Rh1zQXi8;41OSEQ>?CMAF?mY^= zk7S?kNDtdd4vs>hB&nm&b{9{Q@;ym0^OxF%w1%lvk{))5ubqBXU%$Q%QRlpWe`Ee} zL=ID^2Xn`mpjSDO!#}xxDj|9x=D$j7e1RE>r{O$5#{(dznwTO}=$Cd*FxjnrO>}eY z03?#;maiXaU;DQDYTMVT8MB+}2~XZzzazR>wCi!2l()k}87uG`!5(d*?HRh7%$t(H zTRQxeS8&9f1-$ZD1t5OrYi)QVH``l|cw4%;V|O%NoZVEF6KGnIYh9ZJ#9UH9rlVhG~L`AJ2F1%*4EE< z>ap(eI;_I`n`1{xgXS*X+#MZ)@0{Qe=eW{}0oq;dti-*P!rxF=L-B%bV;t`2S15H( zbaZUx!1Q>n;d|r&d(avmHjpQv|dOI1a~WGeT@GA{bw7`-97KKN<$^z5 zd;@?ymEz{e+Wl~jgL@hv2PeB3wrGyw9JNt81mI|v-BBhdJn$!nV)>IU3)V}yDJZ5N z;F&gmau$N3p7@8585h#+O2lXLbwO5IZXXy0_3&o#LHL*89Plr>^o4&}toWC_2>%kC zad-6TKK>=2#f&xnY}x0(BZYrTBiU=890~5TXE80$JMHUF!|Tu{oHmV*i$~Ir)2>p< zTdW-{g*G?)vS#=d!Y9>=w}UQi*NR`{=OzA~wq>(aBuJEe%8u~L@30E>JAV(={~WQE zD*SmSRQd18U%GY#I9`jk-U}caC=jsc{(-X-NkshwHZtc)LWSW` zrdh$@>}PHUT-)Tt<9y-Ls*`IoXugTn<30bz%JsE}?_wLDCqOH{P8}wYzdE!b|chCbn1^#%Azh&k31x=Hw5;Sex`!H>i4;IN}B5pv` zu*8R4;jhEyRO=~AxyxS4-+j4vDWyLXVJE$AzQuWCL9~WemQrrnKKWRb!I))*Ipipm@kOuVz@n+&14oDm30EUSHCVgDBh_1>4 z`{%(TOD2BJvoimGoh3i!NOQMAk-3_j{LN~bjU(3C&L-X2G&}3WFwm%5^IPdK zj+wL{wS>UdT>RZ?wCo$m(1lK=1uyk5Tu1Epv+28*u7SqY> zU(Xf2A0*=Xro?b33B!KMmrYQp4(qG?4yHHClPwGYf1L*ugu#a?D0d=??d*>9y61 z)JxdFkGw!Q;ah4-wgaMrU?G|EPKs-kK1E>weH9#E{#Rf8tnxw|e@c1$9}4z?jtc8h zYTf&fn1+LY#JjUFBiE*F#{}Fi`Cpi@%VHsC7WQ_fVKX7z4sAo|vXH4S z&^8npA#*FPlk`*TTef+$4ZDpqiTysiHkAJ77#TmY!IkSCWh5fD3_iGR=(dRDxHJ^s z(v3X9d>WBNAH3AoU*RO$aAj63h4RY!EdI@LABs(~HNOVjH=^I_}kQL~d z@G96yR06m3xR`ueqd0%p&6aEaD?EX4osN*>#bCK})wyznrki<~v|v7uBY%_(Q83H~ z7jtewzfd$Ilz!osbwjnrGe2b7=k~a%J8qTwUi<1_?ZUhLaZPmI`_jQ{4R*=JY3pY+*IC)T{Vd%9lUJ}wYM<=h(f9!uQuECO|rgxU&lYM^>XeY zWs#%!o{0yGBvGKX;*CL0EHvL2qY9J+&U)`h0<;7ifurN@dYHpG(vh4w%=+2hgXz?n zM)|}jD9x}Z96+*RRAYUQ?-|6}Yy*@O>zkSvIDs|S;kqK3eRxhLBZdB*XDdqn&L=rX z!cs(qxg^vlg!sj8ee`R)^(=mDke7E4(Hj2=2-u5nna`!4i+7)=5rVgB5~*qv~!msqu*`~zHYFiEiO>o8B8oGO)QyI-yVOK z*DQhsEh%fS8b>P*;y3bE8z{T&hNzqI4U}tgr*%eEHy2)SJLl038l=l|+u}lKD{K0r zn|emkAa>22Qgz5ouA^3ZM`%~`XzGF!2Yt^|LEmBHE%&4f&;f|3%mWGZ{{34-7}sr> z-&jX=!jD8Re1|pqo4F3XEP6xqVi?a+v_9TXmDb-|Sr)m#S(9AqjQ*bJR8Gk_;9Da0 zu>@n$YH(GRkzTL<)j>|rYewQxsa7%uD!CiF6IGK^ni4k|iJwSPV#Oqp$%*)f-SW&2 zMWMW=P-Im`X3EE;d~h7D(;8ou4w|lh0cSpX*T)z0VM$^!I90>kfojRS9I__}l6f}XoM)|Ft$Uy5{+%qtbw#?NWWL`WeP6iJwlFj|_$0HocS;MRc_Ary1Hec0u1iEH%q>{rn z@FN)_WJpdMrtVWw^yg;f1j=!YsT$GfmAEJYE{jE|+Tu(j?8X-FOr92Yj*3BfL!$QlsLe()RtOf2hX*e=mSvy`*h3<2xjHsQrjI& zhJL4;dvsKWH?E1rVnOqD{ZOawda>n5E(#Gk&Ij~(b7#=is>hDxM{~&kM#>j&`JKv5 zh`B?ZnY`QdmQM1vkawG2vPVzO_{a_q?)mni!&nv7#AsH9sjPo7D%Anq_Ip$m2OOhhuF^nzup5q2q_=lTnR{w{6pzp5iQw_8c_w_AH& zKZvHH*0`3>vDI15E?>kJ9e9$={DW9-#{};dpfT$c6jV< zUSp&4BBIoY7?Mahi*IE#&x~d?@piA_|5#f)naX1R(Y9umZ2?N~OoVEy3Usq0Rxx~Z zgozTA%J6Sn`JY0pEfbf&YZb&U*+t{7U5O#p{ZbwN6 zH`(<%l7x7>C+L4uTYDM(Q&Z71JJlt>5%4Z^LhMHYD#a3S01TVq*VMI#UCq{yJzz9W zP!|cF$Az#+?uXLj_P5NhZl+511PNGQ?K+(L$4`KS|4|gnOfN(tW4CWGk_PKJvJPKE%APZg>nq0~!dt!oit@>Nm{Ap;krYm4o= zMLcEHJ%>mczD$gNuQam{tQT`X$|z524TET&buZOjIC6f|dZklNU?g|qUZuV%2nI@q z+pVj!201#v%sB!2%_%>B!rMrHCL>S!!dKvO+34t*G=Y(lO>VyVJwc`*^g1{_ZHp{;kemQAPa1 z@ADCH*j8TX$%E2}-IE~{H2kMk@?}-7kvOfK2XlvBvXf&7Lm_*)>d$FExJf$r0dczx z|DKf-tjR7>oXf6L6*aFqJ(F-Ul}}OM6juK%t>Uxk7KPlThh566Ep>vQ3EN~?SbfN^ zp>n+hFTn)HH2nGZNLz{g3;2;P<*$-=Gyga8L#NU2xtVgQ!I@gqZ)IxT8(qK}h@$zE ze6n@Sp2!qJ20lhL#$3KC1=9JWRJDl3b{S)bZG!`u9`=~3D*uj5AynV8q$OMR?dvM> zLxod{y1a_94Zt<(BJAGgDs4!^1#)?Cn@m(Mf`-pXG+ZF?F02fDcgaoJ3U1vY=?->`%0ce2S4XnU zRzXM8ZIV&iCZudJwFXqwcJuupfNE0bi^{)_eGt;MJ`4ooA6~CDo~?F&Td3|o={~!E zyr?=^0he@UW z%HI0-FH{P1$a^Kl%zrpji2Bb`^{Zk}sKf^4jnJ?eg!Wx{IxEd0hmtb`7$oKhTWiZa zo^b8TAD{dwl|Pa?wO0NtkUxv~b61Q>3MKB6`$X>A$JOghpWdF6&7&FcCG<++LOC(9nW|ln3Y`#r7 zM*Bpj5Tm_-yqVd2mPBG0v--`!a=mudcw4QzmwpGH51eNt=fGj7yPzp`!GUFlYfsRx z*RFgA1{$O3Uvzexc9vMZ)Wqiu&fq@ z&9QLDC+-C^6IMA9erkZgH5Ncx(6N)uEr1xu=*U1qm9rZVDuA(8FAOJZ_6b6sxN0AJ z791&2iXR!QkFR$mssnoZ5*k&SwqGRozHp*gk5?2qR~DO>2GD5TCmE1oi?%IPw*BrS z=K|DfJMU5u_WFHjjA@PHAUSM)1w_4iPv(lRd6}0$;;LQYB;gr_dv7E!-JiG$ry9>E zt|DQNp1!m=!*4p7@rqj%<|ko2K> zR_ktrFLl)cfAzdO3Q({=8zh!$+5^`~jp^!uS@W`@Pnh!&$=T#>CD-_o!x!tXXI>UC=|%GcP@} zoH`Sb>e1ur>#@rw8rCssFsEu*is5p;1$61?-N&C@(5KY(w|m6VKNS(V(3t@&AcV#Q zmq9u_r&LhRc^F2B<7cS0{7!wOgoLbRfDUU8Douha)+!m>4wUJwGv38x9LQ%BO{!UA z#1C8TO)pM_iO?KOO!L9nhBVibCZ!W|eVsyppe18{71YpH9B+Jkgu^=W9~fOEa#A-C zk*SPEe{~fUJe~4c`$!?~5(~mMQ4K!cX*U=tkcz(0TTulSrG~Fr?GsVn9fbsHlA7M3 zrY8sS#rme*hF~Q=;Y+do)Tm_&SmiIpFZ|xCKCTkRmjB?FdasfpuleXP7iTl6T$}?W zNnIryu9d5Vly6FknSVp35USh1`lHD$nBnU;g4?QPCUy!5I2AD9hBCow|7t zr^@EL;`_k-5LV$C*iNu0L38$`3mSpSZOR0$)chF(|P(7}q zTFh+|ceiwArCSbtfNv?7J0*P34;>(5x&uqA`&;9!S*{oTFGU9P-E1Z)-R$3kSN1Ik zJW@Z<{Z|KW!_9NJXc59`w$cL73o9=t%QiVUDYmj`fjjCehj5JI{PM%(vg`3)o47+E zQ_)ajQjvuH?mD|1C3?((S zmL*DDwrKNplqNn=II+}dnmQnH3!)R!J`9>f>)4sPQ+CIkunEf26+q8$N)0-xdiraE z%7)B46(X4k_(JA%qb8wVb+eWT>;X@DTS)uSeF_gS2k7a)6Fescm%GCndHo<*%hv-_ zM1yCc0vx`-A;6Il0h@ZM%?*?NgdDb4U+Y+=*RQH&Up-r6?&q3WCN9_x$B#I*yS~e@ zi!C4KjG$`u9PVK6=iM+9#qtAIda5knGHbzo5?dwWsY!gHvy>zt$TFd2u}LL2Osc8) zm%LleBD*(?gfmI@GIT`Y652VFs>ao=VS$4#{&)(oJbg247BewP@^ z`Za@QZs}ipSg5N0^@kFtW7hjLWcUw|_CJaFmA0x8Z>YrM)YQ7=yFA#GL7yYUD?N|@ybX89B5M;!h zgUD%j^j(0Fy3OuL)tm^r{EvV45TkBQ%K=}cz3qe_?T*crlD^XC}_Tt z9`^Ju)jNgQ5LJv$2HSB0*l;K5A#;%j*LZ4R@rxW$O}1Ny_2|!?^ml&>!8ER8#VcU! z*9027fY|KCj)=Fqp({El9q*)$V!PJY+u93L9n3G7>Lv%6wzP@~6GcM;+4)#os_4`*2rbUfJX^_kp>_Jq@YP78vDTBu3>%A$mR%H4uROTkFO5M7}(zUB5)w-AoudFP}LwMUTmO z_F*R_s4A-OXcL|P@`K1Ewe^;|V=8;~FHYrphgTWkmI_$=ZXbwz0>z`w=cTiP+J@R& zrST9^G-DM*9MLX)%{#nL!M6R1J4V2PLuVK9Qo}^Y+hZKMzg25oPSI)drF$P=uoQN+ zN3dbsDd9`U*WXJYys+PQN6zGF0POR%=LWWpaa5MAJx_j#I*S5lx&_wzE9s8L=4Gdo z%_-SRC7BoDy*H>Ae+wEt?9r;&QxiQj?_64v-V);f_=g^CZ9Ux#XzQPod&&@80qhhn zi877iv~-J6r=mQUO3BpEKXYFH)C{7f`t*RLzN;eZHa9<8YRnEqb(gmxs!N`>>bf53 z!&dZ@2BH#BpxAEGwE~gPDdnboh8=P;D=b3_sx<$l?IRpDB^@HqB1!2-iGGt^USQd= z<&|>Ot4QuX#~}LjQ&vGG9HajN<`EU0l@seL3{v_E$mn&?7St7@uRh`IOxJinE5NC` ze=_kip$Ac97hXG1f;ra{%H0_@mz=oo2}{1vVSg6(~Ga6WUrKhv3ob))y>1o_+1wX`s>zQ zYUbGHsJ?9g z_skGiy@C`*=0jD;Z;|2umRD*S!GqMY`Shof* zbB>KSAQ{&WS?qxqkC?59{9U_}dG`f@L|38IvVbfzlkVq=)zof{<}UEcS(!SNT^zSR30hXvk>u~g}@8| zMP1^3O_#Okkh|kYNj>*--WSKuiI5jV59w})kK+b{6{?kE|2`c+(V#a9YhNiGjh-%W zs7L=^dqzTcWD(EJ&jD%Ny_%w1)Hylv3LOuX6@mU(8!UfUQ;5+{?yB9A)G2rBNN1|gY zAd&-RONK;Irk!DA9AnT>8EbMrPDHYa3|@6I_QKUlg3Mn=MLp4c1!$xL z*G2`i%${twgI5=_rgzz{RLm+R%cP^K27Qy$BO~0Q&~xT#fxN?|REVB8-aR;a8L|P! z;XvbT2EC&=<3zVJ(8Pe4j_RaNPrVloWFwkKwd!t}-C(w+{aQ3LQ1Fg)y4-)*5-NsG;CSo{SA5z|2 z8ei^ntp2irLY-?PebyGcXwPd{UOyj-*mrn&V!q~ye4C?@UCZ`>U=mdiaiJ98l?xOd1=&@_ z2es8g1cSy6G&pQN>(;x`H~TCPYv`|DrmnMPvB~4GO@n(zFdH@^VVMhQ^Rc$W>6*k% z`zF4J-s;14z@nPOialX-d2xMp;-;s_w~o+#Wh6JVO+(2U-{SFG*1@|5JL+L}1+@lo zfMHH`pT&>wLi+5}8otc4QGQFA4Fu$BLg)2f8BhBbL1>M{Q$_1|6&=+@XfeM1D>Q7( zGVJZ)wv~+=iGP~p{YAp4!sOrPS3SSxmxB3Po4-1c%OBkpxFTBhE6~aDR>S(~EvPGI z{G9Hg7;`92{%Y~RH4!IV)6klkhStn9^a!Q}+H${B-#+a;iTDvc-E2?|Y;t&FzQ*Rn zG|y(9ym+7*Fw319Mc_sh7G`DnCHK2y}DUQ!fBp1w+mDGuVOjgu6c7p=G;=v zJ4*B3;MKfe^=aPQN>P!V8=wQ4cP7ox;`>zT0%FF$dqVZtCcWrK);k>Q0Y;7DAl-2Vr9XJFQ2lwEf@MNn>T`W*kgXoHE<3MwuH^?J@^V)n!DWIoM;X$Uqb*u*i}Mm zrQ4;=x4Ya!+|g12hC)rm(^)G|7T#+>9DZ%L9{Oj#tt1WYoVxZv*|*Rx@I&rdqc}2qhQ4{?snfudUV&iDeaVv*&jLddUhk?l#99p9wAKLod zc=Ib4-X)KBUk8MR+qrTr!021dVuK?uicXxlHnu-P+yPfd`fYRCxbmvv=;g388#a-9p;1?ca191$V|o?z^*m1xJPDbu8VrGjITK?+I5S=jN1oIFV)RTH)aNwr zT|TApz18ak<%iOdqg^a}xy)vUif(neFn=a1y=*{3>Sw~#YQ^*kr!cRrd??kTc5$lt zPn*x!jQe$^t9)m_#<1LF^$g9bUQkais2!8D>GNz>LyRQZKCGvQ`}q#aq1AFJB={QGB)65yiO=p?TVzAZ)#L z=i3{oCS}fF(7Yiajg>YD9Rtk^IlB`OemPo|R{2u{-+nS=cK&nU0HdFmi#1FHLs)n!`MH^G75AE)&I7|{x zv5cz?%%pcJMQ^!S4xd%RD_<+?U4uDrk&|bTobSz6fTe$Bo8whPUk`e#UvuwpLCf11`CDFZ#OYEyzWDn*O)JY zy^B>X{?j&8^)smj##aprxh`I)tsm&`xGe`0k5Kv@G4^O^URD@?dv(j(xvmZ=G?-+V zbFEpVZ>*#0KRi_dft4(x?tup#uG>9bd#0eazH#?50+YJ$J+uoRB=e4^dtsCTsY5OA zWTU+EToTz4tTa*I5RRHnyobz7vakVGT;YIF_BeIp90~;0Z20|;w++VJjxcNND$k~m z(^y`f*+MW~?SU<#j!A`fYoB|ir00a93~SH0Yq?>UAyk-MNJyyw;l@2CQN`l>G)P1M zV;avhpPUQA0gGw62;BlW`-gXi3pUfSr5z9?U=C@+F?}IFo>8!ZikxfI&35BjMo)y$ zqzZXfW+yz{cp)?74MS4YxSA`?OIkb$FNV_I>887ROIm8@rU?`qiR0_-X`~l_;8wz` zXP+-ZByC-l*SV_&mpGs`HYi9&EC&NU2x7!RLTU|PzQgBnL{8T>?>lJ;1}#-S!<^?4SFBfpFYk@M(di*; z%>PKV2Iq3)qSLeu7nia_v?ejOVarXu8pWACwZp_4;em}`nU%-p1?6UZbJY0e2t5#e186;QtM$u|a=D`- zGu437&tYmq;Dk1x-_q8KKOhM;J&(E7)9s=7v%YG7xwiIkbUti6ivuJwXW->R_HUoQ zkj66L=!Z$X8hL8WX19Hb_umMoiMpEP@zBv)Qew!K`b%+pWWY)n$u9&HX!S zBJAkZc{S#?8Y#@QJ{T1bpmU#G78moqPV5-x?tJzJgspBFezD`<<|?euYZ+iq$i84y=U2m_y5EPZT;K< z624E{Fm0%|VHSGRwiz`De`Iua%db7eG6&~I0?L=*=$t|OgZ}rI%9W2c?=<6S2s}sm zqOwR(-}F@`0AyTWBubhbNprhGeWAz~<46Oh#|(a~K}h}0EuEuPXQmncMP;iz`liK{ zO|@2+tt`lj=E{#VGMDg|S^l=$W(hhcd{U8O;(xk|R+v$O$8}eid{mA7;nx$SZi-Wd z_3(sThq)&;2rXVIA}mV&-Asc&2J(pZU@5iguIK!1t18X81sfru93@h5y!9x$t+RGn zKb&}2>A*&^JB5p@$}slu=xloia63P!BfVAI@Ikt*?|w$*@Nj|(+Veg$+Xpkn#Z&O_33Gam9e1D?TikP_sXL|pG#IH zw(JbdpMFN2f@hYs+w;dO5EORB&h+2Mc-A%$5Zez)rN!^#6_vGlVgCn9hJ}*ulhJx# znz!jIsFGVX=YXG;$_+eIf1J>yvjFq63@)nDkBrR9XoMz^6LsI4$fxYaSfM~F(4$Sw zr4Si{v4?7YyYqeD;Rpl_UqxTk3v;XETdi|Z4SStA8dK3Mdy^bLIC zZ%Cu^vrgzAm;Pzzxu)(g=7S+oiag8?l0&>|Bp7)pPy8)4>3K5~!L7yhm5ED2BRj9? zIowCjun+f)V-I&BhkIx+@l%E5_dndaK|okJE1&m#UwiW>&i8$qI^Q?(W0ibMo$u$> z(fP#rj@air!uh^3bG|Q@^DU%@czWP~kDt9)^zq$A4|*~oF0q04_Xcg%4Pa-0K8X3J4F z{GCgN!H_t+-%-BvY>x5-Im%P}9cA;9Vs(vt@pE;O)f6{JVaxmvI*CGCaF+w2 za>C|xPs#;ekZukqDm{rT5v!b4lR&RquIhmLmD|Pxc2Of3c$h!xLGW_i`YH6B4DPVx zZVz~5StL_G1mrkyAm<&fP^8GKm`_Ga)p5Q^yZwE>>ghZ|TiBz1tEUWw{qPDWyM+{no2TnFc7A>{~f>ft%BUn^$6?iVwm(tV{wATf!j zT4ho>VF`rW1~2?tNGtg;2#^pn^Mgy*B&7rFvYZ{!p{Im>Hnql3jmSWdV+P#Sf$Iap7- zrk|gnCVLP)`kBK~)U#JEehqe-DnRK%OqKI_6!pK zp+YOcx1M}ggiIZlKbf16GpLl$nkw0!zKs4G-4zi`yew0vY0L@Pp24HdRkDSR?L zy-RFjOVNDi3oN6KbnP;PxL_UPTC@B{Tx;UxrdjZVQlsQbe!sk<{J8lBh zeB+g)l7K6FjCl9Qw`HYK6CT724)_krkUw@JEE-A!q4s9Tx-^@z$R`b2Lw}#|*eEHo zoj;Yq6s~K9WH|+yyG`H5Dm)Hx=+GSUH?KUPSm&@C`nE$ae8B%FBz)Lp4rCE@rCx@R zGg4b)ZbzHs8&9DjkUanS$x34r(Om~py%CT)SsB+6(ZRNcCR~oyZ`f`lmg#nSK`FmZ z!~muKZISWBErl-D78mh1Z%H15w_XK@XT#%NMNTAZozdXC26fRbOwC2liF(3z>&>r0 zMM;i~B&#>uakKpSUl}y!XIT|LjSR0yMn}PwK_>N6;z%WjtvQ5!+0C?QHzt}dYQO(M z1(?iyp3vR}bZTggiHv%`n&VC!TEbnjC@G=v<5L_iC>hZHI9*OXs#;OV^bc{ z8XsWUQ346XmLWWAyjwPbd4(sO9RKlG4-$K4Yfatjc>1Vu?VV-b|Au4d7)Q7y!(X6H z(UHx=e_%^=JZlrZNc5H8@Q_Jw!o8M_L5rd~wkqQ3ttL@Xq&${@quoDNw2mpTwpbp- z(V&QAetzEJh3U0qHet{Cm5UZsCuZ5O_``3rowvu!*(>Ee=q(ua+@+!|B& zh3bShUUkOA-67&vX5dZ8^vJY&g#nC`2&%a&e;YDej)6IUXq<8$@dX6iIEvyBpbp>2 z$zkvR{8WebbkO?{@}rgIq@x@m7l(42jqb!K?deNMJd$-sj=80z6%XD|SPg&Aamawi`J&``GalfH z))eD2WAF77bv=0A)V2G-8=TNUOfe~G64Lf0xq75VVBFfJG1hqofKiSws~~_e`;&R1|_zl*bzN1w&H9|ea#v0U}m6(^t!pin_P1v7xRV7%CRMy z$}Z7{xU?ZvsFPLs+N#cR##Wqz2FZ0)XlzV>yx1G~H;B%1mv;AT#h~q+#m_Uqd&j0- zxx$}*3uXG)im{I9PlFht%Vg?^vo?-uOwA5zvs!SNmWL8{(A=%J9Kp_3^ss}jT^oOB z?p-Jub#2zxbjyufXFuw89O|@-nK)fLoQK^luGfODt$MQQW_ldFvE_&NKnowTq?RMu z7;-gS_FUiN+1Rb$u?a_tgi4S&Ng##W32=RQem zc!`O)v1+8`L}vyi|F$Yp&<8Dfk@U`=lKh8H@Bh411&@?J+G8280Rm-*%+8S695xSY zjdK7m<`v$x(y4v5{U zu$iaG5?l2p*nr=#bJAA&NtmeM7WbBX^o9iSx!E}?iEI3Mgh8^P1o{)+&c-TiWt8Ug)T3cc4Q zE)ndEoioU%?hrdn#DhgKYCq=o`0v(n|6@*h?|t4Quf(nbc^teJtELW2?}JKhLq#nl z6Uflzo|(x>uP|DKl)H^O31Iuicod=Za(^@++YPrJ0VJinW}12DDixt;3WR_P@09|JY;>+wf+a*2yS8{W0U}$;(+DoYX%=R19KdSxH@f+joUw-e@OR8oi70}63EQqF@Ga|S zC!tj&skeW6_9S2DMdswDrY-27>u6YE)L+ zvsX)}>(Gnwx19;jztpyjUsxH8DnU8ftaqe z;z6xZ1kb`|C^G}420-x??atR|M|)-(DqHu|k_wG7DVSVFh$dv(|4C6qE5=QGaO3pt z7;k}wB?VgJYdqonrv`o2{N!a9h?mEEr@#>%xT%a3>;9h%q?P>wrN)9WK(7;@MWEaZ zxVQpynCipLL}`8dRGb-v6Sovv2VWC|x;J%mryN&9+i+O{_~gex2!%_E7a>>l+)Z}m z-d53CfZ)rEtrGk(Y}R`OqjN^{C2}wE$A@|8+&(H}%~%mN0cy1#rgNzDPVz}SSo6-2 z40q+p+GcB1LOru#QfExuOTpCZ+M^wPAM+|$x*rLWYuc}I;RS8t0_5SZ0R>yd zMR~*5_$bbBCU1$1)h9m}DVl8Wg~$le3T_EZel9vNhRQ>>dgb1M4%m%Lh}A}lOc+2l=Ch*zR<=3HOQO_T5eH%u zCs78fcJde0dN1-+wz6ud#SRrQ1ggV*o*`Nk{+1euV*|ScMC>5$=Nd_3 z1~moJA^$5YvB$z03@+ZJ4n1~<1u_|bU6$iG8a@YV zXVomjyx$(2jN1CeujGQ-8#!yE9l*V+Aes|j;d9t(#xIl#B8`S2wv6vg&b9e@^ZE(D z#0QN%SFAi9R!ScxJG4hz66$Nu zVxX3+HHZL}GwO*gW2siNHKvYYl?UqLJHWi9EH&h42TJLB)6`MA`Pf|+xr54cn-Dth zZD2TNPHfo?Vx5=Fj-E!O)8VFa1c%qYZ^2Iv80KAaAtH|G2qu>0v7)D{Mk+i@hUf{q zM*Zm2Q7JT4f5TSQpCLC)k_Xy9eWJcMp>Lu@9}vlC=ZpUzqN6?6&R^}9_$4qiWABDy z_=WjqKgMOI2ZsOeltrkBBFQZNC2t z-&5Hlo0*8sK6~t+`2eVu{9&!S*)R#>HtZ?hY&rDwrF|U2GMhvA2jWfj;v?9%N@yez zUG#=4^o7kYVa{|wKNKtyc;SrR9;)j$ZaTCO@vM-dhUOi2aCMX?;WbL8+|ZDyg4O?QxX*MYY#)VRB73g@Z08L zg=`*HW&HM1XS9NB0Y~)w3`5HiEfKFvdaP_+^o&q>ZJ9VykqAJuJ%@-j0a(NQ=}^GU z^f)6YR2%Q@fvhh}+spqIraBy>3{!m*^gW{mZ4j9PwpRE+nEX9qtdC!Umu}l%IsTcq z!qYkpfd}5dxoV2b++&5ij!GrYzqhX5O9p1HUB_qbUbW73^u{u>mrqsN?xei=mWlWfx9A})6L z=6Pd#V$ZxLSjiVS82|9F$bq(7OTHv~EV7GF4^gXpT3~(ORQ zm$VY>x21DZ>cqSXHs%5mY7I9Nf}MoK|97+TZR614a7pX*q}zGi7C(N&i@DhDxP=#w*lN=4utJtJ@rc+W3|rL zX*70tg4QTKLbaD@Qg%7E@wvi^tr!>?Tah0*tKyxgMm;f6A#%Fs!LcVYqn>8M(yipp zPQ9v1i?bCE{a8bFxcs<7dP&!u52IIVw~)HA=i5I-BdXi6)NGn%FvLx)h(!z3Q`Wdx z#e~}~4r%|oWl2ryyoxo^X=EOd^-!v)r+h3rDN}w(&!;D&XQ)rlM2E*)U3RVR0Zh6* z<9Ds&;x}8j+*`IT&oPC6|G~e*{L5o<%lQ}P-!lHG|8hU^pX1ms&SPKy7T&V{a3@^u z?0y+?{?bS8&ssm{uQ2S_y;^)U%Oi{+y{Q1@U%jwTCfdJ2bzdvdsJ33@qRKmg)pe5C z#v|o0s|fs3MI9B?Q3W0?(#t<28qVDR8GQ^N7U2?9L;PeMwjQ=?Jq5WH1osxhCFVb` zTED&n6GP`UnaY8e83V%p-Rymq`ZKH!xq7%5l+PCFdPPZOOvU)Dpb%lTg##s(048iNg=2Xans?i@-8m2rOg1;pRJH$+mA2N z#)-of#6yzmn&E-;*pU5AUg{Hwv({%Pd2G^ijCfTcT)2K}AKWT7c|*K zIOpTzSCPAODz?0BEF&>$)kMg$=RLv5wp*k7=P#92pO_XA^dXisIoB!fukc0L23F8L z0-1lT?40OO|Eox|OgqlGWMx)x3T70B zlPd~K4yiqy8O)`U7yDSXg-b(e__42U@~TD;AtnpE4uq&QSuk8!otX;om_8WS2=mn0Ry7g?pHC?e1&&Y9k)* zho4Z0M?;KXR2I{3_ijV&i7_&Y?;K$}r~>xljgf(L3Y$&kOmeJcQ=F=A%%N^T#QSLl zBCIE*U@`g3?7i}-2QKX9Mc{%!gPhLXzKYzcqEmFGhD}93%v5wE6)`}XZ+AQAM@s?V zRfR|gE-r+?g4V0dQU!aR`=b86PlaQvvIZur(^~a&h88?vTB*s>CmKj`a_C@B=T17N zbAK;2dynr{rli)`&B+%4=aXGtD;_N7sjeyrt&nm76GNVmUB+crtY33w=kK}&0;}U? zZ#Db-mJ-(Wtsmz(e*8Fg*!=G0w}{^l_;-YVAUmIq;Pm1du73E$pZ@61?T?rI>Ggb` zlK*dEJtu}Wf67;7uT$DpDb~b?!?5Xt=5%+o4sD>URabH0z#>(kDtUhEun~?fcWG7x zrEjieTd5~`InjDw3j24j8ewh|yD#n%x07r+c)%A9aEO>qDL;I0iXc@>WAW07SsKt! zgcyW+4oM869}sB{dA)Ux&M8A3?laxW^$rycsL1q-1vOF-mOIXduv}a2a&^wp76Si} z1i=55oin=n?uz*l!NlYa>PbE^(%9QtMxP|3-}t(+aRT`|wyF6Ul(BQ)@B5niU`bC? zJ;^6-O3Vp`sq+O8TMzRe^rpvMx$Z3ld;Zzp#ko(6>zqujIOOn-J0X%wS+0D5NzQSDXX#F`n^XGV6E}-9`FiikcAgtWn4V-#5%he zY!VOxluF|vTfj}?;=)G6Hdj&z-8DUQFfINtr*P|3#-5t6sC^8K7HsLOJb|W)tWKdq z1F`gIt>Hz0DNpmYhIadDjD!QqWD`ybyXdJ2^PV4r>;*Sv|H2n=4OkzB>p8>KD$Ba` z6wzMaUIKxcYhCbv*?SZCsH(H^e@>Rd7dcO;Q02v`@W z*hs4_2s13QWN;GA^fK1ATJ7?__U)!!t+g-PYb60m0?4LT!KI3A^^Q|3Y8wJ7^Z!2Q z&SU}H-rD|uzyH5{K4k7a_w466&w0+XW_mB?fHvk+i0xW+hN_cLy+;mvS42{u{K$g{ z+8|UvW8?rZ+AKFcX)53O>vBg6he76>9(xT}XA?yZ+;mRnTS`$w+l-1%s9;yNlgIXS z(q(;vt2}p%i~BU#uY=4HGm;+&hK!1>w(> zU8B$VKhID(b3e-JU)lUoA%X!+1eMQgtFIi4eQz$vMajJ&MLn@39z_-cE$RVREB1rP z89+(dPJC|)HY_0;G*r;sqa9K+@kW07fRwQky~ytV&hBQ$!R3^5zLKB z+oHK8wrFm?CpA=*n{sQ-{V64%+iJBR(BKa4!(4jsLpk9AxXwfVgQ8LDRFs>JQOZrc z%^&RYrAi)hMv6qLx78~7tA@wEH4dP=p}A%-zE+kDy-aJ`LO&s?l{wUQYk-j7n@Gy4 zez|&7zf?3|S4QtU}uIHfSJqv9o@KqJC=0ryJWF-I=jX z9Ng8`Z*XN@ZT9H)7Ru;`FuH+VZ9T&~?@bwA??}#r1j}5}4rftI6!AVt`2V2C%>54j zup9~i_0=WfY5V}5cLqC_7L9t!`c6vR9`9BL&I+d@E5si94h5Rx48)hY1mJRWt99*L zkb2p>`*ng3u*5$FUfMA@uvj2h^9MfvZaQ^K08WKrtJQ!mJb*uPu~VZ+0+Db$n83NV zxDrLUET^pXt!=sJUU{7uXdpoMN;NT(jP%6P)G67mLx*tu%vD2n!9#zSU9iKtRs=#r-lM!aJzr#WuNZA{+P8>taf!tmfMk;6b)zC`j^4sxU6K};NO(7HEl*S zr}_2Cv;QhEGfo&CWkz}&Xj|@B@(D(PUN5VIm;K#>cB;&=_XBL!cjU5Y29fUL?0JVA z{Z)0Y%?KKI3-DFKs_e{*$k(oOLuw^8t-GKclGbp zgU}csGtLkDtng)qzF4eojdq;2W9NA}Oi?N-E@w?*OasXS#g9-@fzCy zXlmuiQ7C%S%LcId8Ixd7h}(4F?JqW9i=RK#C9yt@HlBjmS}6s?*NHYt->1nH2u}|a zN+Sc5WJ1;wrjM*6wTSlzvczYUST(XB=}DzkGrZb88D|b3&8j=Hv!qDPr5SkJV`8pd zLsZhv`FTcSv?G;|@0&uywNGs;D4jbS?+aBQlR^MlZ!db+*7{V3eB$x~ zEBbYGLZDC2H4?L#*($_y;nQF*0;Stz(^@ZnQF)S&-|S&?a>Jirk}OdN&ZxB_-S@XF zIR)W(L$d+yM~U5%=hxI)b8L&O)Wu_y-H=kk=6@5W2*AFwXu@Ogxne zSjLH-!&8U>E;k9ECB#d_-5$}aZWid_@d$jeshjD z1AkwAkFMJAmnKoc->>8$UA+IGdbi>42fU<*G^s4bS7izTf6tSWfxnyNW1{9%ltaB- zKxkT7sSqWjl$J5zswufqer1nll&gdpsJ8b}SM#5rXtuR==ao58Xt;T2{)jEny$C$o z`kYP3w{y@oDd4|oo#^D;!0**A2;*I?*`l5KytZav10#0bOiJukO;Yu?SKTApa3j+8 ziU&1dlG?Hv$u(jZ30qqaJ?R~~T7*7hlbVq8a5}8Ym%CtzCtM;!R8Jowr?>Opk?9uag*~tpEsC2BdQT44SRhu>kz2 z&0KHpX~QT^KK8A#|8o!itrT+75HQ5C7f$ZwdMS6SW7(k5i^{@;+niEnh+5}3BzQ)G z%=TIP1}CW4{TnK~NYD<|pmJ3F)i*IeI$;UdK+YqyON9uypRXLh9TOC#+Sf!(=vbvc z)@dalFUH^Qpj*6bz$qL61>Ni#djl>f5vn0QA~ z`UsKGSKmV2C-e@HW3pOFge1x)OW5mZB85!nsI*Ua&l4LWIN>OXSoaQu&^^v*d&Od8)?>NnH&v zVtZ@z^wyTD)z`Qv%dTlk**A+=L?PfSO_#66J#VmG6^lS^`PO@Ixl^$2?b>RjZ}~m7 zxuQ!(IU>iK$KsPOjo*Y@B!HRX!iQ<%BXm6eX#})7Kb2A{+krKyE%WqOZ1+YNk3t6l z^9D4#_iD}m!(^WNVC9>On9Zu8}sLR%-W4^Lb2tpm5t*% z;9KHe@Bov62c?l9F?#{DCNIwc^BNp>y&&qov+b$G3_UpmB&B9BV7^JXaHgit^;W?3 zGV6N}&dQUbhC22df>JVhsE*dj*3-M()o#%;2%pUy5=^9ZLc$#-I(foxjZe5S?p@^` z(dDjkNB)HU*F4YI>ogUMS&tq#O=~Wvrl=30;8v~qR%*Xn&H>%GYhhJ({qaiM+7)PX zx{21PASmKOw;?*VO~xB&bE9mZtEe`PR^P4#JDA536bfx%!zo(GqeQ|P5K29O_Gix7 zirEu)iy%dm@3UY zU?|>ijGfV{{CWB4aQCk0E*ar3rNUf!I#<>GR32u%cwu?mU6X4Y;0{ zyrb~S&9ZAv^{^W3gJZ7HV13j|Hws^Bkto{|>fT+Z`_OlrHx$Gsy20Q`obl&aryxBr zyHn-T|Bx$CCaBHh=8%NL2RN@2feSTS&*3468@0D@ zO?i&^T>L1^1x!yYOVp?uYSC?tQik~H=I<#eMvSiKtTl*J?15odqBWl-M=kX4X^6T3 zZb2Pjv1rIy5?_p60Ud>b?Ajcy?Gz^YhU9zjfd7om=EyX5JOwV5BtxuO3JW!6@ z@=1wAV3pZjJ`?C{&^z24P&w@gY~Uuuhj78(XJcaFMlEHuJJq9qo4!jL`0 z?RIGyyyxYalgn@&kaKiV^iogwcri-qE@yv;h(cuEy@kYiArydLoj}5@uM*ZiE)by# zXm+k%J=?9_@jG@`AN@P?C1o36<8TZUXSr+5n?1gTZY`$pDb$1_V>-YU&hRB58K*g! zJYpW{cZY`rd>b&^d@40r%$sVlL^F4#e2L4%99^YjQ{0p8mD1shKuH*bct8QwHExv& zOILVPFxb;=)`D9&pPmxpd_w@wAq4bs*Sb0|y_udm6V&K4+!1cO^)#=FSmVhrcj`Ww znb-Vz1>&YJ)|vx$7kuK{Cu6$(Z1%R2-S*9{t*Uo+Z77P|mIyj+6w(nzwX`6*#jUs0 zJ5x6>*Ru)ghwD9ayXz2gsWEE%NL(PT>09hs`xFkjFtTUdXGuio?bdm0Vvzg10(f(7 z&YV=9ZKDnuFQ2ajd&w#;3b~f63BUay{Y+d(7liJ4IqHM!{W?jynWy{4yXPHe6NZ#k zWag`s$HmHUyT{`_c(4=v8E1BJU8kF4m_2-9WlImKBY2GYLCv$}^5+qZAh4tF>RGyP z4$F5rl5L1@A=MNwYNoIt6)V6mCyrO`ik>ZjJ@D^8dN=;x|20~jKQ9j>&-8~xArg8V zGW;X>(S^T1DnB~LDk{;Gtx~iM63g1LyALyZ+0mHMgC>3~GkVy1EN zvi9*8IGbNs?q=Uj6gFYCv?H9#9o9huxHt*TTMmf{Zst=hVe6&_)Z!g7p$}TtxS}cci#Xfs=PfJN4?guv; zp0+nU97(1VPuP0A@JPnh;p?BFHN56|i2HTdJ|+9#_`O{?M^z|aXQ7agopc<>qybdH2;F<;4CL9W{fIu!DU zZrsWeEiE$=V}pgjvUNS8GA=(Vx`{p5--Ttc-9qkjX=bp0o9;z2OPn#dJhM83LjEM( zSUAea!GPCs@TUr7ESZLTbP4-+;S-MT$ZTr;l)T4e@9!}W3U_G`CqJSpgokg^zPOA% zB?}oG+?YMWs>IPqiTmhMb4XK@^|7snwBO6H#!aE-}S8Z`f&t@Ib$HJBUw0zx$FYW4!uwfjtSmsXZT#anX@m@ z3xeVDnyOh{5O>mV9j8dn_6g@Z;*)BHt7uz18x>@l1es4K1!~Y|9(?xtNZm&6?nR&0hW{e|sd8Uv$%jwz(GMquB z{)jhIv>iR2Y|)|?c+;w+Gd0+(snvb0^NRpDnFG~xmG*?Ljei111OZHpV;{J+m0f^k z@=Uc8nf!HP8lkOrByRirLxZ$?+ZwbV?$o}~+SG{`f<*4HIc&M=@s*K$^JSnQmB%05 zd`V9%a9Y2+PBthJ-k~muw*^Z)&@TMzSX;d{Zh=@-%T~oGn|W4#SRC3wKi1TKFaIm~ z?`Pidh8FBL;;FRJH3@6VGMu~4D{Wrq#AN(zC1s@PnX>zEf|tk@b7F;qkiRB3 zlXI=gen~{;V7H*FVDI<^&f>24eCX^uR1e}crJ=a$j2>$&BbK%fdtM>RL~aW3&DNZn zN8mYeEs&q?j8CXa&61JcM$@s2ADv8tO1}KFm%Ul>!tg0PihOxHUlA`1l}}2%u;~w( zFF%qmW^p7_2>ISYQZn+rJ9(51(`TogR()%BrkvqH%oLuWGdm?@Zc0Jce-WO`rqqRs z<%t)L!^9A^e}mFeBG8bj$uN7Q5aYfoQV7wA67G~lZ@f;wcE|y>KnecTjCj2FFBBGW)(Lw4`_r{Rb@o`kdEt z9Y8{qW9^?VSS)-ZbiC|ZJ8H4e41LZ~*=cicWjBjv1t@v2qA6_P?Kx~=j|^@=0y==bz7fSu0=6;;&{3^+fJ0u#2iT2;}(<$)?)-B%N0CDWInO*?Q5R zDi`Gu(E36p?=Vc45uZTX#FF%6Pwe6Ws`H`;lhfPzg{o(C{tS6Y7tgV~Z0jKm<0U=h z{mWJ7x5*bq44%4@yn?4F_OkjoLkzDYcNyjk4_dGE;QHzd{(~+Kk@T{zOWqwOi$5d?A$B46hNtFw@c~QdLVMdRuxxRYM0amxpxm zeN;||?QxA$EtRP(#ebJC_PA~%CDT&Ae2g#j`l}X>4iCf(t;AY+6Q^-}VTr$G;b`%v zD1{2F1$HWkT41sFYV%1}@UzX6frlP@Yi#LzZUYiT2|eRIC*mSo4B)uQUby1GTLAUK z8CiT|%xY6AyY+7?JC$Y+zaiJQ^xlkoNPK-1U5I+}S##UZba1~V+&Sd&c5D6tqA7<+A`R>v?XI`;fXWSpM3Jcp7fcx1D9!e@(mNAK&&qT|u~Dz?F{p4Z56u@4ZN ze2y^$;`0N^D|nFFjahFPiRGwJe<1QOx7H(|i*>)JHOp1Qyg7jDFmo%Hg$GHuV}srGBfiMGju|^L92mPS{1s}d zvgc>AJpNq!yHt=Tjz{v3N(F4oE<1&ymT{ZK5+f~0E+pp9T^6t12fl_MfbkqmwBGxm*=@GkYc(?Lj~=)#d_6N~ z;}$|34R;)YZ)7%yO2!N9D4PSQG1mQlq{dtlz=V(Wdd}L9CNzG6euz8i$OWX+Y37tz z>lZljEKT1kwxu_ZqffmPhs-oJRPv*09Y}HXr^BxJl0XkXpk5eiGX=HJRz#4v{1EyW zKFtNr-}qBG=RbuuY+?=~>FxUe=Qq~<>GXYg_)zqmq z={!UaT#JaF2LO*K03k*8dxoVYqhJ31px>g`WwLvMEr(8MTE- zF$i8_oAU(!3=${CTdkMTp`|y;3W{a{yv5U&^t2exEW?oRX;-p<9Gq*3A=g&HI%i3h zk)%~{g?-eUGRdtAU2iP02_3E(EI5zX5Z>3T)_b z<~ZV4a7-BcKUsCPn9^S6Z+)>(fS%1ar2JQNe+ODfl zyT_9w1IgF175c80TWfk3gk^sXp5LWEnhTishv&=`papapr%?0&nm=3QY>d8_t2HfQ zhf;_G=Be|a5~4s=;s(eXS4ohCAReP#?QD_~k|MKlUH#BQFGuQ#@6op#p0H24keGu9 z7crE&*7QZ*F!-(+E6P?;QU&)r(pykII$gP=aVla-e1VUvYEsU@BSjeL;rX37 zSWl<7z{)z6B9hH^87}2}%0P28%Xw(JekaR}xK@T39ed%~kx{<3c|&RX#wRfB`8^oS zB>;T#8?aNS*au~Ch);$KD_y@E$*ChHMUJOP+=skCDFWN4S~5u?CH6#%@)ka33d!ZE zAr52S0P+&kxRyQ}$zR9Jq*I@RHt5=jb<5r80;ae147a!Iy~951-#{zMxB1C$gR${d4&2e zm|W3hP|S`&VqI-7N9K&JTz0mow|yTLSR#1H*P-2hFOPDNWxfPe4}7OQKGKsKqJ}{7_gJ`$#ii%DTJt->Y}{ub%h{?p&SERvV|0amI5sUbwnqD zmMcJvIs{lqu+zJ=AcrEzF`axZ^TGtDlY25RbT*xQGV{W|Pbb&&f-3wPeiULGTHP0+ zu0j6EMr(c%8a}&3*%<_(ZW7X7(fs`os?!=`_xlE^{0M}KE@}@#^^-$GC(%8XV?e-xIB>9W|jAnzl;#eE$N{2q)spMpw~8Dy|5)Uh&;P|% zk>ghW`%*=YC8Yl+zcu`C;kn}VBF9(w-S`If>ikaR_Yai$JkR&>>lm2%=XB=eII}Ok zzs`X!d2#bUH!t7QW5J%EU(lQB=ud?M2V_4KWgd#v?=kk9Hn1f7{U7l~9MP3p_(r8l|9-N_Sq)>BZLGpg@_ECB zL8Nb7$-HCjt7ge&xmHHzi%+MyN@6Y{;T9R@{8Ga;-_x94elGlGc(LVZ^(kYPOjK6< zBR9~_SkY6o&a8s{hO4M{cO~~^EafwSjYOZ1>!sg7DPI(>osP(U<9@M(M?A%y)0pw0 zL5_|XRd0f*G9iz^f08XEztycY(Xb5l?O%G8a0@FH1(c=djae^?KAquu2}gt2kB7C` zfqV%!y48Aw<2>b#PIS6OOD`YgwjN#Zbcd_kcWC*B4FB^Mkr~KPU}Jv@-n;bLKY5z+ zyFl<{CxWcq=;0vr4u_(Pv1O=fxVsKVxw<*c2vu}*KDMRZw!(2|^6VK@sIx`*dQzL5NuddECDq30?$8aV6` z8lQ3lGv%C8Za(?U+(TyxQKTGst;+p7FD)GCxX#HF4Dy}QmO{@60mXA!SpSJ9R)3}L^kfF)1WIU`@@R;?mmJ~PNs!sD+^Mf9LQ6&)IvO>e8x|NcJdc?!l8Rr6Ecuh$zBvEBT z*0$Apm8)0s#%xvg5?>=9;>7LgnV4&2i9?BLW3u)dliaZb&Uv>fC1!#DzuOYV{axcR zZ^(^a&5@lG%ZhoXRQYMW64u!Zy5w~R+wV~m(!@7k@BkFAQ z64~+Ndw0Ccl1})N3+@62N(g)wZ5-o}q;QGZ2!Sd)uF+$A7V8B-Wum|KVFtPcXvhGd zveHj}NhM@pqUbkEq*GrbXV1u&WJexrbUU@%TY&(jifv!uviK|U6}J1I!C!B61+x=? z*+2Du%mkb!ZS_om`K(L<>Rrr%fyu)cxXY+o>~*41JnZ3Z=`XN!C+sT%}N&!nmKoWwBGQH?M~)Y-s+j z6e-D|Cff%G-n>N2KV5LN;%h2It2#@c$W}Hy$i<{O-LXNAIcf z@27v&49IyXIs|@o5WbBV9Osxs-LhPJl)UY(DiE5sda^iyaqJj|6Bs$&W)e+H92U-n zMPR#wX$G+I`l92J5F6OP6In!n3jtQ_^iJjOKnb zf5l#=8yWF;E~IFvn%f*_*5-6V^$Zm`se-d6GFVRKvKdzy&k z$%Le?%QVD!hKb9OZ4K#d3-ZWe<xI>*A+nb=e@| z-%|9P{QC9(E4un$wg3Ooc6#+~qKmx%#~yKU5%O41j7N{*Gti^A+A$_#}2+FN9fDsuc0MTisSG2azXoDCZlpUZAs zd%4F}L|kldiCsL~`t3`34qr!OP-4@}#wo4K*uSUF%(Hu^H~RZR-NdKbe}G$&)f}@9f2KVz(uw7<)?Dt>7LvZTt=)pwp!0^v6U{D3|7&ZXB%rN z%0Erv*w$>n_B9&KZRr0Rr{SV+1K}N-IwOk-Ea^h4d@ymQdPcrcjOXQiU*vD<2%`>w z?U~&-^E!7@?DrnZi5%ZQnTu2`m6QA~9|Ptx?qpvky6q&Vbx0ja5_laxe6MSFjHe1QlAIg*-6>u*aqd3y{0`=$h%mh($`;Gyv`RRa1Og(x z!C|DWnsP2u8u9A#d>_Xw+)K{Q$-W0h?7>%yO44J0)O0u!y)IpLOS&_gHIvVo`Cb%o zsqgN?zGH}IS0UeiwV1g6M}Uff595DQz2xx1 z*w^zSV@LS2;qcC7-<2a98J-*WG~7P2gLdtdL{~OjX3VbanC;JbhkeddpItl64Vliq zh`!cXeZ?Qskc{R=J+{%m;#GNOdJEGVu~v_DVE(wZEjcKq~+;&A~A-H!}NE?~#$3H=XaFH*`4o3z_+loSy%a@z%hI%_Qh}G8(a~^;LJEa7(htuBn*tcas2xvkJ9l zCrRdkK5c0kVF0R_pUI-VWXXE8|C|r^Lo{a*G`| z@c&-^PtGfLyvG0k2Gh&`k3B^Go#9_L1OBTfPn~8YZYgUsR{RC*0WFd{^E*&xqnftJzGcVyutkJmjMsEVwKT!mXdoX}k*Z>z)b^6+;X zc~A;VqSXmUOp54Sy3(5^kCf!RgAP1R>J&OKU9=u-_194wd?NPz^zAeo)FJ>U)QA z#^J+o$}rMu7}5#5|MRo`hmM`;gD70F48~HrQ98I_jG|zn80#LeYWOH5Y)x5)gdH|a zNZ0`x5>`0~w$2GdzJd&c4`&ghVP5rskQDAELdFiTZizz1E?eUiCy&?Nm!V@_y_U7t zZs-dy187chJH_eU71ImV>q@ik zOk>oORtRNHW5p8!&oi#S=DJU=ZvQXacb~K&SS`vw8q)Xh1cJaTCqcE`S#)ujc8o-n zx|30cxI?9m!P`6z)NYd(z+ZWDc*^?oh#rSQxLkdEp+;NPjV(bgh_oWbugKIqYIEk{lMe5Qd_DKWO1Zx!iUWkJ zvi|#Qxt|XJ<}%O-*s#?AxSc(l3ez&{Yqw&0jN$T)*gu`@#VF!R>xkp1$HfES!nY{xS$ z`f%FEb15TpwBx()X!R1IT>TRty|_l&fEAgsPV`^WX_ynf4GRao6VgVsLZ#zBSrFT#)Lv4j}DcsppgkmAj(VFd9CoT+xjvt5<9iDLY#dB?0 z3D4^9^j*A9DJ$h2e^UGC5%-Yk*Pw^o8>+m`4H=zs8`pD^HvOBHUSpfWtFv&8LawRNJ zioWP4=!b&$UZJRPEHKj2RuR7R?A8<)#KK@Wzhas91gcq~ka>Fx zj~(t#$sE776JG0-PVC~Rbe7opKLM2WW=V$A@AQRBH6Da6d&I5!!#HJbkw~vz70UsP9VY0G5-G26!m~aPde`qQ{maa>ia(_k`l(>qGI&=Z50f z8?fe;b1c1me8G+QMk1`q0CU=jK~wi?TLN6MW)mdAgKepA!nI+S3b;ksuJsHVnh;-P z!qg_j#ErOpHYDux-s9!UUm4J94hF?rR|{Q(DEQqlDd5XZY$fntbD>Iv|Ln_cQV9q6 z8f_euvmm!2HnH3pZ9FzdyYo*ZMlSBEDfdP$6voL+xPdcC<51mfJ=R$0P*yh0zaxb> zoHHZE!j|~ci#d*D6ZMPb_3VZfjYIri)wtFyOB`(+>eZUR$`hNWL|e6RVB2e+0sHuq z7@ux#kIY|jh**`5g*Wp{B@1S0tL6+2n6CvY{_LASI$SADte^?$W)AdKAU>-qK7X|J z(vQVXeE>0>MkA@U{%{8*wp0-GbuXAAEK6o*#aGuaJ4(?^Ji_hjhoB zFk0&b8t!dvsX4`*;O}`kHDFGzTC*Y=jp`<9?|Cbd4leck_wuGv1CpA%A{nJhy)Bu) ze{TapM27O`jnmrR$Y0Y)%MGzNhH}+yYrq98LCGhMXoyc98PF!Q@-q1xUSNLIoL(EB zUmA!n@rw{gzyowqDR+3ZJp^Px7Jd;dmdkzJ%Vw$nr?5PGH`l-5$+icT-KF-dFKp^RlMGpT@ot|LHY@gk^}4=wW^GU)A3NZ-pQ)<;J0v`A(wq8!%t3)q>r~#>}sM zkB@bU)!*lbfTqh~$mIp9y^&lzk%ceif)#5m)qR_nrsNc>hnJybPt!S^Lgs~Sd+Ev2 zvY8?ClG<5q;tSytTzraJMEQn1M`~$wk;f4!4K}?QIrjX`Erv(Bn{`2W-Nr|pMhvk!uVQWtJr0#kJk%3nbvQ+ zPx(s{24js7ie>)O_aT&gwx`q1VEbEzoQfpi%*W&`=k&k z`${|r>v2_u#HmL!E3g&+FJ)Wfw`_F>T5j3uN&WJ$Rr%+=a!G~d{*#kVaI76d_mbbv z>92G~SZ0~a`5tZc3YoEuYocW9g&MGfgFoXw} z7&3pw3x3XVg6NuPx<&NvCSI|sNc|>TSbU{!48=BhYkhxMM%?ouL2{&;Y6apL5Yh8$ zaapmCW_*8$T+R0j&PFm_u|?T4jHf$=IO>R;2}oWjATxbb7XhSAKL=`ksbQ9={uuFl zR7X>%8;O(t{4>=di7>1}@8-e`NIhy7v$JuBmUsudM{y4vH7BP18`wlW>pf(czL8YG2Meawhl5S+eXFC28mbXn7~ry=)N`< zxHVGUoL*#*8XWr&esEu+s)sz0In30d6myMiIrrN?mAM>@d1LWiJj#?7;CDAyR`}Nv zg^!iph_jYIEd2)Czfu4_fT9Fq_nV zP;!}CigQA(EPI8{1hmygr8U)iAT4#Poqr(~T9`Izr}4X%slsj%kR` zuGC|fpXk@S#-A9Cj7%}%Y$T~Fy-6mK9caUyEQEl$?i*RAt(?l`MEVZL+x{#xRP#w3 z({f%Kqq^7zWi#ot+Rx(I{I5Vjt!cwUog^H`Qe`W}2T=I5x@w9Ljg*W+7#|zGXavzn zc?(osi9d-SC=j}iBjjnpmzN-$udCR4H$uW5_%DW-68mkywn)0-*MOW}AtBZ049 zk15@irZG}Iqke@xMAwXFggNuhlis3|7X7{qm=?UUbb{RQYU97#sP=>huvJUtJb5R@ zkp~50!@N-S*S$Uf(B&=+*3;I9%f@J{EWuF%^8r~Vf7Q*$M5fi6t~zrIcuL^62R}^$ zKh2btx$9Y3IoX+NKm3HZkXdJh%%`le&lLzs-XiWgC@WAN!Bv>u1ArHU58t7s-%bkP zWAXmWpWq=5U@zrQ(ea?O7X`|{%9c1QI0{cV^r#L&r488PZhGW^1L+WG42)>VpV_Ip zEFgXuFvm}ly#NTOPU>IRD}@ITE#OqQqj#S$E45{#wbdQKbfxcr5cO3VZHopi(3YKR z)Eq0bs3|;HP!WDfy~eB#!P&7|&xwASOqtQq8K~_C-dR9}2)Rw)PfJ22MCRz?5%eV) zwY{B`r%=0=)U=)ovxNx>MjM&xRZ~4*Mr8MqYBiJPhziu+R2wYasy0|CwrRH7r5RL= z$Iz8aFd&nSCRh{vU3#XdFxjW6K;ju@O+b$a0mvF}C?528)r>XpjJ=``$nXNZ1}9~0 z*-Y8aU2JEGSg%tPQ1$gc@;AIx@Ke3M-(PM+ zn-~PL2>Ch`kh`{ z^G_w6jr)j{2~U#dF0M1TLNBr>`ZjS4O`I(B1D$fDW>D7)KkQc*=QH&@$%hSmpt?r8 zx*8Du&eMrrZ*B!&*HWu(KiQ{pt$7W#GAqrU{OWOu#BAdN!+c21SmLBFQ>nmqy-W|& z8aAY_HJsBWAieNKv@)-6D}C{s*1RZF{|bIX<~YA$&Mue1P!Y?4Z?doRAP%w5_~QVF zwtm?d0F-llrVs-W59_pBEiO*d6wIRFUlpwS+%a0SXh931V?N1zWl@MnFy_h93r>{_^rjh177+qiPt=ru6Rjt6GR~3pi%?tJdu0P0H7^`?EVmH@{r&Z+cUUzt5QE zL}`9k4L(v5G@mms5v=#BB*6b_`(tibVAP2m^w*9m(VAD=1tJSV<`c&L-6uSi{0~xC z@tyzG4-~ZKE9ICI4i3NIyDYV&HGeJh;d*}YKyn`i1uK>dRy+%==m9Gxf6GTj)s@Oj ze3Q527XIJ{Bzz$=U7NUI2IbffP&R$(%MzQu+!?unWAGNW-zCt9!FJTs8v?%Pw3TO2 zb9N%?%rBRM{1yr7t7n3>rqh@%K^{VBaGGbgzd|_*Zz!TNIjAe0mJU}+*Uzum6}d-x zy@aZnX4Xt=j;ne9QHB&}{T_dinGyuZhZP9lLmcyvxYt6&2>Zq0ESz|4J|GAWw+^&e z(vv)zWPL@g6pT9LQ)x(B4$p25=eQ z2cLE2cy)Yp;xe_gLDzzv&}VJ66+0rYhh`~D$*#cmLEi8&+Ul#S8gvLw-St$;&0uz_ zUGccwrnU7LO8QG&hM|LsMml5S&?T%C5upGGg@@jANJ{KDb^ z(miJ&xt_EjZk5Vo?|GLFRKf_oAiA4O$sh3vO_h$PU&*G31BQP2UX*-G`{q+A;zl5g zEz~+^*F7T2R6rS@RrA0>vWm=1_9&0PYm+lFrpxax2@?o?Be$x2uZS$|gU-70uXzqT z`rV2r?w9$^y2ub0a{K*m;Mfs9QCs)tW9Apu`s}M_xX7;Pwc#f?QvVGp7CrFmh+A7_ zz&`mwTC=mdBJ zn4tU)Ymn3Bh^|*ergr-oAO~1-85$Gnns?=osJ5Dw>!B}`hrq|R@v3AOzY1yofJzPX zF||v~8SbVR7T+R}IGz2liBEDK-%}P0*|!kM~wI+KdheQkAUm_8*y3gjts~3 zl*jVts*_;QfZgr+Ka0*RE+d;@GiX7r=|YllI<8k^Of5%Kc8c&9Ugp-;y)tzE z0BzmAp*mM6cWTs8(9^g%#?8|G#|CMI__rrNiQ>UVNOuk4! zr>ap%Y+8{qX#;h9Q0n-g)VXl!{&wes=(C)k<_=dbLoml-&^)psel=B%^R5Vi1HD|T zb$@799)VAEoa8M#7DkJT;Hg=gZ^>s|`%-6UCAqmPp%)-gwUXjO9`*Qf;}D)zdiYyg zS&AE)N)IH%rGMp9ySwZcA;#^g2{-duSrpcy06sPafSxH9=s4CK^0@kRW0}_~lXMO6B=xtX zTE~)*#ah`_;=m1=CG0pC&OeRO&6^uf7EC8spEsoGD3hhP`%iMF{bfm0+3?$m@yn+4 zq|YZ^L5A`4D@M9AH6(V>zXrLaL#x}V(#KwZOqo3@;isV1GrWE*h zXiaZRgPeY4(Sr}NJrCAt&3_@r{4eRE@agyJ z=4O&2Z$m1ze2=VD6)C7S*9+N~8XKCG!-;W$4$zE5&KF9ItHr2B?N47xc%V>eiWxdP zD9EGr+SU+Tn3>t5m;im71}Ns<^UwbLShv-jTzTqyo|{KbFQ z{O=j~_YC}d2L4Z-0nzW^XomH5S=BK72i0khdxA}{!YesnYjA3I`~%SgIm-$ZuB>QF z6@;Mvt>dm!Mj(m>yiH|yl0Bq7F3u=xOI49$nl^`ZWM&2-eC& z($mNvKE7k+cGZPFWqvlQRr+;LE26IQjrL(JPsmy2=byROz3cUzG5yvn&K!N{dNo|r zf4%1dU$|v#d2NEGNHP3{6dlxhuUb0ch>g_fW?`SQ1FM&oO41qUlrdY_+LW zgN{Qx0`7`;-RDUae#`(wrKw8pTT~K{NnX(kGR#;Dk7xx+zCb+C=@zXZf;AOE>Z2J1 zm&7ktpZ{pomCSg1{5j7;QRtxfSpMeUMc?ow_X;nf(|yZvVsTP;lxMS8mn5_W<{K5; zjq2hrk-8K^`{Gkb@5nuuzfK3E;0jWj9`Ze@#w^aY%ZMh!Z7L<#rBYha)~;wbs&mVv zmQ#$5e2P*)UF&*cvUKF`;j{cBjOvg*f0HVeh3Mtn`O-sPQ3*r#HqtM&JzcvD-w>(K zh!5FDn)H3hV0kxlbL9uMYhUg}l_B?UnGCr;_0C1Nf771;q&`&^W7dY+n>!H?>fZ73 zfCuUC72eRS*4mp}kz}n7ln8$-Fp%}tz2goA9LF7wjJer^#&>Fu6SZu!Z%g?2*ug`h zn}&c2R%vVOmAs8jn-{szXCpqP9nWkn_gR$upHl2Dg02xdB=(9cfCw}%)|O+oZPZWO z*|i}joRcQp^5N|rKDexY3c-~*9?>o+;ifjfDx+pFkB+bK!rO?IM@5a|nvHx=8XIs@ zV)8*-9TznOr&0&uv$-Wb#QUx+s41U`Wul55-fYji;8z&sq2r7MY`}o2(<0i?!bB4I zuwMMJ=&AGeAt%|9C#7{xwR);A6s1RXuJ%~ zD`d#eHR^Ih!zsrg!`ESGmv^ImV(l*;AmW%v$(lkuoY^48Fp1=hp#f)&1hY|aXD7BvJIB(1n9A27PE~C#qfOl8MSO5Q+P(}gr8+Ni zu3=u!d`wj1DohUvNx$T^dWqlA0*5k1$EoCwY!GEbG0kPh#Gdryz_4bf~oX{YSwlQ9sojFG3-v{q6vPo6c9_}1IJ@@{*{KarR8kVAi!EX6zI3xL8oGKIVuFZp}zkH1mH zUKYi(@1!oJpX{)3p6a4UhFK{(>-D-eFkcOt2NX3)pUKlCue_22^(}ew*CxJK7NzSF z_Tn0E$h^5cWX?xRb4gXm{G;M5U;CMX)W?C`M}B8Iw5B`h>0~gOS9AoSCMub$A1;;| zCtSq0-#l!-3)Flu-)s0H@ejz^GvB{hB=dcjd@+k>$QOIQ|3peQ{(=2*oGNC|x9G_U zf;>|H@FP3V#~ylvt)f)nWf-;Q=e#Nc{M*9wZrZ`{^cceO=1n~9A1CJ*FKgsQpUE?t zL_g;RS_~DaAy>bMluk5#PI|amO9ey$S6#3Cu~b?#;t9hRNE_U6@{{LDyV$a>0h0LUlCDsLEZ4@B2Pn=9pH1d zOfN;9z9V&P|N2@}>&|cOAuRkdd4`RsK6{wznctrH93>Jj??6Lr$zaFQB0`j{!-*;6 z6OsVpNed!BM|~457Y4M$+V|o+Smi}Zdu+;42c7S=g@-4v6zu(JD5Ok(dYr=b(N3+0 zkg*j~4+6(nsk$Sd2i?}2POX!uwdd(;eZ#RBOys`!OJo!SWWf`;gRc;Mw*VrR#1N|< zKK4U<-bt^KkEuLuTl_2{3MEkFWEZo0Z)W$-_h)yoa-U9M#7Kel+PC+MZPPPI|7Mk9 zs3o!~m_2>t#$XrpIXU9D!IP9BI zT83^b3lKuvKYuR84Q=(5vhg@^GL0%+aMc?`JO83N?tQH@;OmZDPN;y+__+6jzQ1YB zlaOChXKv&sZPnxg!!@}ch}JrFUq|FB2J!`5r8GG!~Y8EyB7biH@%euj^m-W=wUW&+y6+V9wE1VcIfFEn?bMHvZARtaQOy!J? z(a$>%u=mgs*T-`PvO-fubJUN!!->;rVInQ4o0Ac5+A5bRXvK+;X%oGNYNk-CW@>Fh zeYYMZCYsqT+92O2TdiFR9rZ<}&UwdB=qjS{5a9Pe_$U{>E9*@ETtwcZz2QrdJe2F{ zuinomtT!H#pSYhx<1(Wzu3mMs9*L#jlim{29{xtBs=q)_e_cA1g4@$+{eBT@$M}o; z`QejLXHUY}m#az0IZ`)Yl%v|bKvpsmzhrB>FU?w|l;?!~MDs(kh`!m~WmvP!oKGvIq za~NRFl(ENZiPI<$o#i}`S*M2h&Er|O+M0f=t8F>z`o?dbYQ6BcLy(}IvaqstwdOZv zmRQ)^?1imiVaKts!jlt~9v1dW7IvJyu;WY^+FMxUs&sNtn@30XC^cnQzDT&L{EdsXp zJS`nH;;O%B<7-W7$D*GM_;YCVzv9Fz!W8O&R2*uq+BvQ~ZJlnx5gvk@;yzZU6Ft z;Wha;{)pQo*Svva-4PGA;mN%uS*L8w%^atRN2MH860YXtY_%HRvJca+r`_dD+IPS_ zf6L8NM10aR@hZbS&R;bm{1u5-%^6W`Mx~8=+MuaF2eN+~EI(CY`sy#0F39({RG1y9 zx&Epzc_Qb=Zo}NLXzeRtRO{hcC^1aeR$Yb%fpPWb6c`caR&5LUt$Xl6Z+54A>tzUZ zf(p<8%l)q(5}RV}GxnjndwehL_zRvD4z_OEkwKM5g~-nsd_Hw`wa`Xfm1@g8IP&Nr zp7H0g2L^*MT6L`iz`3;~IOD6~B&h}6^+W{K&u3JE=7&unqQZ#k0GIza0atdRc5U2t>Ft#OE4`Z8x!r8vDv*b6& zw9r&goC?PuQ(DqGdP9ZtQOUe%=BUk3>LK&x^$c9#ClqU(>xkf~tEOHqU{hTOgfSdj zG}jSM;h$n5lOm;y=VSKOq2y_z80MAz`8#TWZ7Ss=Z%~gx+6K~a+=o7V2>zE23oa?) zLogh9>DgfpR8@eemq!YnvjavHLdV?S^M;!eAz-D*p`2m|j2@1NtiA?}$tvlr!KGn3 zEPi2Bs&|T%bK|0vI>dtzcUHQ|1x@m&NO41a2}J8PXl=d_`5j7u3(f6j(2S2OGJ{`> zk1I)f>6KhVrf0hPlgA)>;$N7Pd{*=;W6SFuk+bRDG@;m)AvXTnqL^L%%|Wvpg3r{Dhp4 zIc=sW$QFv8mSGJ%FCT~rHiqI8l>Ys-xk3;|0@Rt_PD=r^9phi7BVax2?S=^5o|sk^ z6qTy&R^(hdj`_y$rq)QIo(>{PT2_@BcnIb9R=p)STsI$Uwpb`2ixTSuJ4>-kC>BUu zj!(0)a*`ZD*4)WR*NMiS@J}RD==>to!@|c=f8Frt0nhv*J^oliYSRw|heL&Obp%ur z%f;`LaEoX`#te%~;9Pj;UNYm4=XRGvlD1o8rWDhax<={CnS7G8-<(tAuw7)8@>M`V zI>Q%$;5O?XzV-nRQf?DBknmbj6Vinz*c4j&KN z@B|Ver|4j=`+lb5aXJD#yo#ko&t|wPEor?QC`i*>OeW=IV8RB6sW}QZtcBeLOu?j? z+Ung3FccGRE*lGW1=?|t>a%#+ue(u}bcAz}CZr~5s|K!kQ5=i+kq1le)yXI8B)a$7k_VL%_8Gl~A{M zGUCI+x5%h17}}%nF69f2T}eq^_)ctZJ_%M~L(t_8HR!(G%fGDJCAKW>5;AV}GpVT! zu?@6{Aidi&@7>LO9BGS@fVYk{2+)5KH+FLsLL#4~}}fLLm>Vi*^8Zf|A0;N8qPX zFSG|=cdnVvTmX|PL1gjk-U4;J&M&N(XXDrHHxgrQ?6s`XD#EQ&555|R1WS++_n!kT zq4*5gP&2?%6K0}naj3N=__|ehXBIuB&gg@l+TRy&48ER0Ppff_)E7C8YSp8c-XSna zWk%#!ZS~X~1+CUge=iU<^9-&M+rErO|90z!k@>{erWZ4#OUtG^m6h}aDDfXNw5stp zY0aVsc{u)B4*pseu#P)X;V;?#W#p2L_UH)NX#Z)S8*K(LR;&pS9H&c#ak?}9!A#A$Wd^_0u zr{%L1Qx;AjkyJtZPz6tgQNeGQ)_)2Plk;m>igS&WXlO8-sp9tVA8rEqpn22*cph=_GElAXY-wo>a2)S9g#tC z4Q6$b#1Iw<F*f=V2L(#fYDze^Q0d-%vRz3e6xE9iZJ$h=$Z0_W{fs@ok?zM|CxQr+4 z1cblwt39bfQc)HPp0*Bb+MlLf;Xc>|B%Z<)rJOMk_`lm>*r&ch{JX&apJpJ#pXkx& zF%O1j?Z&NJypObqS-Zts?Zr=deu1 zcFw@DWR#-fU{a7}?W~G`n1T6Q9xL-x)E`aXN!S-IEoQgB>MNXZhe*XTWA5j0=YTY% zWXM#W#9RaJF-M|(e5?ymm#<3u+D;P8ZNcU@m!E?F9j{HVXsdI49pM3@{=dPi`?f9p ztIE%l*8EKhH2A*t7(WZntp1hgQAP%&?|72mE0clckqq)`XGq=1*H`*~mDkKyBqDe1?(@}7rUpq&m8b8J z5z1l?y;4Mgf?c(y&jSn0QSH^(R+bF8Kz^pRVmWi9*$l4iSP0$I?)}m#1DfM7WQz|@=Qan!0pukGCc6xe~TKHe3@TDfd{~w~>pYe$ zYMuLL>A%>=XBV3|#M`Yi>sfDzvPF;-^i69L`_w>ugdY3Ax%4z6F%h$wO#rwXe+#QQ zWv_In5vPZ|$SFfH%NcpYK3o-b`lNOB2{JcLYFd(iVv>ajGr7^i>VRc4ojGE?)2*%! z`iG4q$%nCu5V^K8jb1oL>i$?i!E(Fc6^%G5ugHK|G=Vu*3Xr#S7O^g!C3cTQ2)o@{ z^OR6}T;df#3-{6dp!yf8Bida*lGop=7u>6QQEU=72Xlp`HoexwkBLS1rDS+GOa?`B zJ!!4NrbZcOi5=NofymQSF2meJG%%1r)v}=z%_)^oe@|LVhX`JzE<0yDM_djBiJ!K? z6N_m7|HaCjY&3t?V` zs^`=rslVG_RV5Ubzn=Q4XV*vGiXCt*KQ7kx0gJOMNur>7xHpk5p;nomaTsN{8u2fI zKJO`u(wbm)CTlt>OR$gFiAi5}2yxwDGT7we)ku)TZ^lXA+Xu zbOwB_jkq6xxCL)KDUd-JRBKm94xL?TFCD-&SGl|J`l^<;rA`)~*>uy(O?YoI+w4s| zSr^f)GLdAK`V3`5zoE#$`V2+xL;=$i@Wo}XFF%37m_4=bky`)sXr3dvoR4a;CF~YT zU!r@L8JM`wx&i&0PcpFX_D?o2Pfr)_vgpF+=|aG?kIBqd{K_%i*jmovR`)txV`=XJ!Pt-Vr%oO``T2X)pKgh|A4+Zo~LgP8OUbhsm6oIya54_rXpEpg-54hefqe~ zUYE-@ZY34Mykda$^amnxN#UYFG1R#fHtO+jNnsX5q;fKCZdSv?%GfKSb_K2a`?QMg zqGiyqps(q*347uMv5gwRMXNuDAKKCG7G0qmYM&;q2v`PPNu7rsvg)#Uw>%2FKR}lR zMg)6%6bcWS<4gT5vvDjjzBE3&oI9*;ssSJ|yh&YohhD{%caW$UDx=EGK;513dH`3o z!NMvGD&efF?@$wUD!mgp_X^O$oE84$0P9EZA4+F3r_N=pfj(6R?fz!wO#w1}l=;h? zHAI+W+6EqnEXkZvq?m}ZA($puFCINUr^s>>-&m$kU?sCT-!6xz7;ohJjH1J4a+vDd zVbkcOi>Y&@Zy&ZJjy{LkRTCBl9H-~l_n`47#h$nxbkJvtGsr`*0sWt;R0q)yE|=M| zHr&MwF)IACDm3E0ZLD*lFHB72VjsqQ!Pav&H$|K)3?E9D#@D=OJ!b zsj5%ti^e*&JND4S&@9DPQa%Q&|5GjEX#sZf>~)0#$I?Ou+^m-fXn>nJ&id2^%+!sn z;x!<+48&#jf~+7PXY)&Z%ucDK4^~ne3^urt-C1QssZn>2btq@6<^*a4x~;F!9E};N zstm|9iqOLbm%feNqsnL6lUn+;*H1{+OZfuj9D?{HryLJTw+C*Z^an*+||%a%c6uX2|(xH?nk zk&{Drxo~VZr%ofk{RZniH6&0W*-s!lh6!jzVv^w643lwEPMwXNf*F)_wJegqXOU)R zXRYdhoEY7yIp+85c@fSJKp8y{k36P&jtWpeNsD|9nC}S$B*pTH*`7I3Fxt_l8$S8b z*S6nW14I4R)y7@fPJXkSY4?2;(o$gbsaF;Q^z6!3N)r`F-ONJM%F5#Br_a)6uzwaX zAxMupzq|J<)Gr%grr`a5WRf`X?Rnv}SMV=z&j76XG?E(qQS-wP6sUj9!4Dp`mjOCd zPjAlDuRvduHb&8g0TwvwJf*i}XG#{lXIEu$)Yv;CgLG4^y7@8(cYX38lR7pY8LXS? zd@x_e&mPz!DTGl5&*&K(gCAQ;WHx<&;8-BafxFrD_L=rkSf>6H?D~(Gf+AY_f7p8$ z_^7IDfqTLvBtXImNFX3eRMbE~qo7U<=p1H3&cFnNilCyVjYSZ(NM?A*D>#W{dKkrP zZMC-5K5k2^_u8uErPU-r5{N>;qM)s!ZS9GpmWPs{!hHX=&rC=F>+9a{yZ3(jGt4<> z@3YT-tiASnudg%(aboYD`0!=$!5b60cuwk*qR*dx#McCu-P~!m%j-Iwg$n3D6L)sm zU#HrK7zy}njAz45p?u;(L6@CA(M9o}0Gi`rzf0r)V#@Yl;rErM>?9P%AN)`l1B`N; zjOa8E1_E|PW*pxu|4`$kAmfo?86Lyu1_ETKA<{?##Y@~Pc>@GDNOIf-nEHz z>V{MI>XE6jww((zR8ojntXGMn6UFVvR~p|oM)}Tg^8LPYMULqOKTv1#AfZ6P4(wxv z;U-^eO`=C;OY~eO&W?(!HeG@w1wmZPcI-^?^%hPtfOJuW5%7OgVYsb_X2U3Ai@C5z zoB(9k%aJ8Pr4-HQcHP#5SOQH&mS5h~*B?NDAy_IyM^}LmCEgr_%=z z1j)U~Z(=C@H(V!A6S!`LGPH~4pL7_E!mbQC4WA%{VF!z2c2~6OFr#3#s9k~;5+y}w za2eZ-kRv7*?FJf{7VGI-8RS)8Xpp2swp+2)GBVDy-Ha2F(y`VPLv4>!!UQns+iA*X zG3&prErtj}ccq$1~(&E6%L38IZ>>us;v@U$?4 zETR&~CbH%@Nb;4x3M3g&0+qC4n2Qj#5YBxfqB9XJh#WMo{yA_96BJkf9D2P&{d2C5 zK?~Cs*Z$Ag1wReNO}4-WK}ut49PDKYe}^O{HW zg4-QS$CpHcIX?56_Ks@L@}AGc9kSV4bt7Xjui4j8_U6sq2_e^r;3&VSaEW7agGh+f z$z|@67ha&8ZYuer8q|%K^yWda2x|hPl)j(Dv1$~9fjhSm#&o4LF$lwDgeUMf(-nUu zxYHUWav*b#QAB zZbnkNe3Pg!x&$2iBD#=o>U=W;-^{=_Gw{s}d@}=|H3OnB%Dif-J_Qf*(0hhq-esul z9kD>NIRsz#*U<@&i}XVo)nvrwnYJp-dTMPC=nqTjZ8GJICgB0BZw?-{_a0I7(-T80 z`SnF`HTu2$Mg zH%x(q)YUgED3J7c80+%oe-xgem(lCr+`u{RIo=1m06oSjG6FOuWEmO1hFcjK(bl$W0rS zS$f8p)o9KmDf-btFgpqB^h>ylTc=Avhq6DVI}-Nj@Nyld=;q5R#S>LjmM3M3jx9a( z*P*Va==Gy&$uIS_d`Ip0A)$pb(mnIiP)&wZm=GKG?qpRL1ClC}(b7`u^m8TRXmAOU zHXr#G12ngZJO3KbMK$>H6Weo*=i-{;J~JAN`zB#3;u$^MMc zr#L%On!!&le=h!@4~wT^lWAQrxeo$S&lxj9M+m$>p*qb0s1h$fv}77rpVB#> z9kIx7&dV{-V+l^Kl*e$#ah~UUPr$PjuCe(nE^Iyv$%f5mb@zqWC_YPa-%@PzSrprR zmJ};KYpyT!yfW<+M(Y)k3ET-@h+ZEWyZZ4VU~A#D9=#+-F--(>>Bm2!j z{dO`v4_)R65j+QFj1^7y zhs)9$-TlB6Tmpq)1F~YZ1vEKauD{hue@5mC?SGK$crNkNvbm?#?@;_jrnx6+(V;gS)d!@2Vz7UX%! zxga06lfQ0td(*tmTC*r8WFw{_c*-rMIwgvuR8EC}dKrA(1LH zUdiFwVcq=np;$DUi;IphX5b8EnMqh>OGsv z>(T242Pfmulu3Ya8=Jpn*5%cA!Q)E7uvxkSp*O5ne#6B;*mLSSI#4YuQe1F)uUN@+ zwvhGa4+%yNwPY*Qjj+okU=b)=Os52gOU6HUXXM`X)cNM_f9eb*;>TT!%<}cXwZ~bsg70EmojYi)hMV>@y~f?G(IYY7g>3l} zVU&*9cMGKq+SJdbr_x8+F8lrEbbMTPi8;MnvQKL+2@jMS_7FVTzEEvCVYYk`JqOh@2Czd3{1GnhW{*4icLLG(}Q!caD^GbmCuZ zF0V;UDiWazVXL?8CDvkRWa!PS#ijx^4FvY`TAK8Q^&EdVESD#5owhKVwwp7z2&vp< zEO||+N1EhyQ33RsvC3ayC_0&r!&vM;q0wXTqk-rDB&Sir zUBHes{CS}a)vO-ZKcoCwmIGFJzoq|1=$t@bSjLWqW$zG0F)}gN+E^!4k4PT^1^)8! zIiq$0?YW3atdD*TE}%-IN6vfD%S6CxV{H6%BV3r+gB(3hc!uL!{uc}V8ASrWezhU% zm{7kB#Y|xd$+a|`&WvQz6QqlYn#*_gyo-I2QnDNpQ6%AyY4&6rCae7?cG%4SgtN(E z;Kjb@Z+g798ym-|Nj_n5Ptqr`FK0@~{D7myIJR+1>%%E*`$mVH_#J7lJKjv-XTreN zLuiI4Vgfg@AAf`S8_M5^@I;cSokA!jZ2d_K=;|35g1bZ}8z;%?eSfM0Cev&Vd(stN zYxOhZjUMr1RS*jA(rg!u;tAdWUkdrrOSeQpfQJMs^vqF*yr#g%9x^M-DDez_T_R!D z;---4FZZQ;&B@5NZi7?+S;FrH2#LVew4%bTi+dU23t&83570MVC6XzMERftcT2(cD z^O-vgXCH0Nh3=|D3vXu`l0xq+t9vW8*EX`L^q!k)?g#FpQ;BHNZTVZV%N^ut@7=48 zU;|lmdzkyyLBum5TWYx#Ezcel=3Xqhj{s5DOWu>lk#M<5vN|tV_Mx?gLTynsTfT$+aX9j zk>n)SQZGEH-M5Jzdh=TJ!jHB4)^RPw{qOjVjJTw5_Ryt6{bohB^~k@=E)A9$<;d{1 zSx43p=Zcjn4bKL6JZwDvxSwZ~UzN_#%xwlEH5;wvKY%BknC{#jo}I(M{RQQj!O2GX z7Q@+#SR@R8AV8LH{Unl#e5*a$TYpaIPu4GbQP`7jUX@N*Ki&DN7fL&CYxpX9+_bpA zQNES;0oq(WlAcMkQa?or3xt5g{vUvlL(LGun$VLu`t%!5$f?}1IsOM+B=+aEOylc; z?}Wzw_7UMxOJL-Gc5V)Ht@Nz@e=JlIAs;tW3Xj@bir9Hj2g9<~pCch3ACVF><(G2e6} zbXOXQiW+s5HyBpQrUAh(y{rwurnwK80(U67Zy_6&s3i7HI*zNMvH$)fnS^T@&yN{g zd=mQDBZ+0zQpzOskRl}lS$npcj#$jLhY%&nTjn zEynzuP`zIWdgA9Fso4mMne8(V6VZi3z~hAcysDdC_coky3*q~jn)B4*jRQsJcq6{@ zrU~ZN1EHCS6!>yrP^`AdS*I7)FMh|Ck=e8y%`+y*x^Su-r*iv+dMEKaJ3={vg;feW zPUqGFQgT=AWiizu!dxlh}DZBiAHZEr=mp5Lx)|*s=qF&74Y7fT zhp@3rawNShjTD0^5HcXvx61xQNcm=K=R)-xp5M>-EM5AB>G3R|v@ z3{gVwsr^DeD4Ud0cVBSms+v(gIfq<+PP2ZasgH2#xrz~}M>dW-U{B*=qwVl|$JQSq z?yEDjD^3houC3Mk%?Rxssa4JWOIz&3#WDL3jUy<{kE#uQoJ{`GP;IwP)s(ziDdFs( zO9ahUnz#kT2GGrR-TXkQ$%@RQ^6T=4FSJ(w)E2-!orZykYvk!a0PffU=&S-mXZqPM z(~2T@AfX|?X!KMLZmmLHX6oig+-1&1p>ff>58^ts;U9e~x@#NS`b5(UMh^KQ<};*B z`)8l!|M-XFP)tOpW$W`f*zvKGW7pcTCPDGy#hFS>gPr<1DHobI=_kU0{*_d}m(wMa z)`Kimvp>uc9l8g(wt1*EpLcZgrC8Q(iq+xFwuA(3w!RgwfkhLoK`z^Sw3d2}o?O|X z1bnO?+7@f@+<7|ybJhiDox+c=12L}$TgM34__X+0u8UEXVGWeI$_0aMR$E#dS0|=~ zgmjFAgz)0qIcRvor(>YrN5zf9Bh*xPrub7(7U8aD;;nSfTQmDR)LPARzVeLp#Z1{| zkHC$P?v#gQFrgL-*6poK-fQ&m%i>H(Y^9$N8@ZYw5Zj5~1XyWBwboNhy34b`)uFNdAK*CFs_Nu(*nbVl zNgT;bDL_?>{TCM;$@5Onk$amiIfEPQzof*>_!BpAu)9`0IY`d$m!}|SJ_e6&3OE|? z9J4{I8Vf}`W}a4ck^J7SRgL5qpPgMlCi5OdW+W@bm9=QOgx>5^i~k*LKn@lD+@7fL zBd)CLsPKYJb;I~OH?$6+5!Ky0{%we(bpeo#ASj1D2_MzV7phC65$2MkbXSL<_WIwZ zaJ&U_#`eU(H<+S4zwvw{KpAIMiXzH5-Qrs}D|CpoTGz*>FKD$0e>*cX5~z*b-$RlV*1Upcm9)esgkc~mSq zcsJ_|ke3jG=A$9g}Xq8}1Gz zR-f9jS58x1<3le}$_C4lqQnNP9V8p<=Tc&3RK#CGIn~aSxN@qRODs?cf}m9=0i{Ke zU{-vwCbC$?ES86kEqyq#SR=TyhAvf$HTudQC5mY zaq@yzJ)8$Dm|CsVxsDEA$GHO$_*bgzCEmB$Vs9U7`+V_$&1kuoN!;l*Q#NuTv(p$& z=C|XV%2p%fHjLg;;;0qL8yl(qF?*az+c`!`YuNJOn;) zWKC9QSUi7Y<&qd9FNy{GS1vi~2xe9;IYQ7yBeeO`$|Wo(0XMAZ>%4{a_}J|cSz#!t zjD~?7D_p3?%&Gk@rL6EMDZ;5;v374{%L>;@iJ5VK{H4LMtp2=&b9-ph0%bFD0~m`I z9->~Cr(cFp`=;(UGjNg_a8EfFrF8jw>)09K!G9(JqoX#7PWdsOfLt;4zzD=|?)Q-` zSk8G6@;+t%6l?Ih##|6=lkf#?>;|uE@o;=UZchq+WL@@v5&@?X525t}RM$o%@*~;V zaf;Y*ZnK_yT!>;YF2qZBs<2nXKUUe3^>q(XSHyovdz!2_?-!hvv66tXM)*FrG!wac zs9PmVvWD{^<$MRO`yK%^rKoJZo4#A4d5=aT{-I@7&$|!A!o@DpzW-3le)?~!eRJ5MxRVEldD_-2CI>F-BBhTJwUKJvpI4{&`ZawJ<0U8M zwGdq_RtJUtKCC~7$@Q7M6l@WStB0adE~GhSVMYVt6(Z`!L|+ylw9MrQF2dUirabbf zOoALe_@$4>3;rf#3_`+Lju7(^+h{o7AP}7t%F?C;8@fo=eGkZSwcQF4 z&=56lu0&CE3r5^-t@_U-M~JWB3jmpDKU>T*^9t7=`Km-taf5lQMRzXsGl#1(k=jF) z3R15AAw^~;GNS4{u9O@gl9ih)WFPhAlW_~jcG|gY6YNP!9f3SEHAIH+EH=Wk!%uaDzw5GwL94N@?x;pc$6(LK zRA^v0Eu!%OM#R+5r1{iX6R*v`k^p^y5?LfMVxxcet&(qHv3Z|-!t}Tb^bvs(6gC#S zM83^|yqM3hI7{S5^S1EeySTKTe$f7^{SlXZM3d07)vsyxI{PEb+$fw-Gi2R47c)1T zJ(Jibvi#)Sqk;HVyd8ff*`ZgI>g#Ixs`X)n#zV`p<@=xZQ{T^61{B-hA5JI+Ym|In zX^*t(<-7wC_q-xPh`Gq8r-h%C;14C{Kg08(p06miyhITcKO?b^sk#o%-)ElAhSaJL z^O`b}p{E*@ED)6vr13~f7U9hG^&4(bCNnp`C*%=qA=PrYrrH|;F{@fOt+f};*<+oG zsa$gj;_(!iv(VV*tAQwUpCbC6?qh=owqCjS2uvWMe3f!wDo2VGOl`~LN=p7iO3aL< z@t1%pCoc(1QMigi@u)dPu_ad^4f^ghpScU6&^BgEK7Y@X>|Qkm=00Y*#5^K659dF| z#bjJ^D;qQP0)2#1K7+2qQxv;9I9g#Dv!3qDG|vUE!dUXHwY*!fRwh-e`U@bY+R^Ti z4So}=N_3(Zq_9XV^Ii}3p@EMd8svyf%Cgp0AV@sJUoc9*HtPwVt`~;QdX(pQ_K5Zb zqHPot{>x&S@Y*sp;RgvxlbG-)xwc=rm6zm;t$zbx{U*^gN)pnJomFa9tqoTaD|lb1 zy^mJ?D3zdNNxBj`e4!Q*Xg6m==s}soqCFqvWY z6!u`7)&KQFG}eKO&gFyE?=MJg2yLeFQTfb=lM|z;x|C&Z{SyT~Ga|g4patPtkZncB zYHKI=gMWk3A*SpM{j6F-3)BYFD;M@B#HwM=N{bFSRG$<`)X#V-$$GfE#(*taAjZ7V z!lD-hF~4MK=i$#*xdf*58X;*fG8!BBcC2#od8~6}9!I)?Xjp1~biQPx-zU;VO&v^v zMw_hJi-o&;6`_r^D-}n)hGEjau!mUGv1niZiEqH_?5kY{V|TKll97bh z+Q5DY;x(k8$q~SSrmb}jyGMZ~c(QfdVX?Neaid^&EF&3FiFt|8M^8S+sDw!Q!?!h% zjG&JcwIksg-&I9xD)~{C#cYinyYw z^#;+IFPR~rAQ)m(4i3cKXEct-azL7UzOS@Po3|TgB^Xj&e=FwBCy8P7T3#bL=+Ybp zBrl)K%kpZsGe>RFHXIycgeT=6;x>%&WB87=hVlK`#NDxTx;dCyb4`D9e>C59O@ACM z_v0GQ`@epbXupguFwkfACWP{xrB?Dx0@BKjb=@nn7kIyuHfY8&`$W1Q?H;mopQ%|d z-y~A&A#B1>`^|xI)?>&LKsl<}vjvVIae4{Uu+4f=b_^RWlJRy88)&K=|7;-p0P}~} z$~hG^Bo!L;I&Fh%!YkyVm42sspp;PI6+%2)hv)EieErm->Y}rBgjdw^FDX?I$zgaX zu(nqR!Cs(gsLBPGsNv+EG3TzCMI`CNcdjYx>?^N^S)F6B3pr}vn~~I&xEW9_^ALkBkz+NdJ1ZFn#$aE_uJ7>q##AA` zTHls3#1uvdNrP7HR8^shwCZ-s;aNCNvleqoMlu>sgGxe&G0hsZQWOdEGu4jgAfQR1 zi&`_(ne9d90r{om$hp48O#+XEc~&HuzP^%*aa;9WKkVU(D< zyd+c(g})P2+7sFNPY51_L5}w+Wf|~+` zixL#Z1?o+I9 zMO{3_jn`b1FOYEP2_Y{Oe#nr$+J(FrCJh}=UJTuBA6QQuOeffN{K!(KI}=^uiEbl2 zvD6zb&+j<7;-{8tQWv`7`JG+pitUReTWhQfVeyDB(ful2R(})#-a$kClo#aqt$suG zy7PHeLD3gGulA7j1(-aLEr?z3w|b~nWhuzIp!E`(?MlT!F0_3v6~i%*pkh>gp<-S> zB0Swb`hPqX<2yS+#gr+JD4+Sy=%opJt#Or$$?RSdxp`<3_JW8B6ghLwxpY}^s)5WB z7-Xy+VX~X7M<6$KF2j$@(INEA^c`_}rgbwE@o~gV>+gBCIxSF0M&cg)rL56U#Z>J4 zx_Rk_!a_7s8NG-n8MnDlb;wiMf&8~DI^=+%jo2T}Ufq|3zM+L_jzCZAg?j`=?Td?6 zPIlV8)N+#3Zudf2s;QzS{%F34(Nmru2(u_^FF4U#FHCa46R;6Rk2%$0ZznOLdPJ?! zD4DW+c9JuqHpAgtL<6IkAZdWMu6t7os4~Cwx-KfI`3sT)?9o#OUEGV~!Jnaq*K@}w%ITzG>7G=Wz zuKHdAHT~*tx^wCZ#gn;xBvMRPJZL2AHx=MW27dnwvZa*;5lGdv>~fG!i6X<)3h6yDUW zhgD1JTb*(^uiM(2j&^i^{d_jLh<$>mbshQMLH5WOb3`$6HP>Z^EXQ{1Z?#E;LkS)3 z7MK(w@#n>gKM$NKyrY%fhH+V~M9{q=%|5%VDTsq?QAFJC=a?w@i`6a@1Mv7*n&Sp!n!8Zn=6MtMpa|fi&lyp?8`UF0iB5CaN`Y~ECEg;-2CRz zH#6|f416;K-^@VA47iC^a5bsugndHOlVWj{iKa&)NTV9vryd_R%pPJ`1q_qwY(6vqwXT( z`|wN=>pi2eItmLvB@fZesP`oR)GDsfnv-DwvH#mCe&+!{sv=>bg+wQP4SeC%Lya!> zlji7DUnrKZg(ma065&c;Y4DE7cUTv8OBE(L=rxF%u8{)BE{>$!Nf&&kHx;30RtZW6 zzq!p8G}8SWegWUJLP98oy-$=$Lz%7Jc++dn$@PWQCdVZ9kWA- zqxD{TAhq2jh!OP*YAO4LNY>lxuqCB>h=3CmX1RawYL%BVB2 z4Tx-wb43A6Zr!0(%M7bIY@zk*X7tebYhmIV! zS2w*Y@wjB1;t45WChmxjsb3o){m>Z#UIL|agvfXdauy=vcRa%}{rZhoKZN`po9F-F z1xCR@;pAyT2^RDWE~{MFBiU=FoN+sv(C+xW3<`AD@mm)t?jsQ#`gGI!j3X`OI3hKS z%jeHc^n>7FWrm3#m%je=9MR_BbELa1H~irVxO-gb#$8Ii^Mz+Rbohc`azt<02oE0YzRtm3;c_IGm8{{$P+hZf6`Aq! z-jkDxZgQO{gHbdn2(|VUneL%8LQA^=rsH$wA+sIlGSgyP=>F1N!@Nck1@!NXf3z36 z;rEkWSf@>@Gn;&pec?Ug_|6DV>ZULE<)Q-+Z2_E%w_s_$cJD4aCF*bKoIm_a8@ENy zp7C=r7`451{gIJtFDCmTh@@21Ddu=SO!VO~pth+w)+csMIkd?;0|a8Z5+u}Yy~D${ zVnjTSB#|?V@cCx23JP3oDMgQLmKx0a6|^g;&Ly%U=37j&Xa*N1KU;Fg`56w`)eSj? zcjPZ#VKW+W7h=C@_f-gU>HG5X+*s@gg0@Z5^qX!ZfP=pLTgN^5!b|w2Du%`;-G;CU zP!oP5<;ZN#FL)295!O`BT# zFs>Q6*e7>(?X&H>m6#U4r5V+Fzd(w0ZZDCqdZ>wG8guY3{6S@=l}i(n*MMY(WzO|$ z#1!9ePR4er9jAahdzc3>gg5lajY(oWaEdw0MQZl(+8XaEN#4AzII!xyYW2dpWd*C` zVP-e4xtogqOs6=vdVAHGE#AC_g^T1_-y~I*oJmQqy26d~uI0t0O_7pM`N<~@IUFyb z;KE8m<ajkm8858HA4cEgyTSEJ^a0*NnGS=NK4xJ{OVlUjv1Q6}Td-+PSl0#XOwh?7LN zFFV9Ysc6b1)y5uw`A)ytil1>0@n8$pv$ELGd(COA*EU=UdzLug@Hrc7fugg;PiZbL zS=bz7s)AoYiRAfZ|CJQBXc3Vrm?--^nG?+PcB62scK6FX@)b5~AyI!(lC9@$BY@L> za~tW{M=U@YqdPyqo^YuvAhy*$l)&TVMkv;EF_r~yNdB0sf6T~U;w#=C&zV6iajRfICd^ot6u!CmEkCQD%h&`8 zkZc~6aIPpj1J4d)?r-$SER5?PqzE8psi%qlGbTp=_S;-6Cz8AFDK+o~a# z&(|v#5OvnnvjMO%Wx-VLyEy`b64vM9J=|g&%yfhTrhTaRJ68@aZ#i4VLgp(a2GX`8!Y3u>diIbt6=O)y@W zAi$YoGm3!+6P{S1|4PXDYHb-1OeD1>_(*_^@Q%;|SCV$$+P)pGG{>Dk3HO*B!+cn# zv;>PjZ1%)s8&|*A184Zc1Hn5vMtHdtkJ=*W$!PTCa0BU(7WHUre=pQAk!wn=SV)Zb zgxL#>#R{NQRHRMTMYp1q3!jb)cPVO%Ob*J?Iau?0T*Ai?^c6-5ElGHGT5N@4{c59U zQ(Zz_BR~YNY&Ntff7nD_zu7~NsdPok!1(x+h;!GDsP@%n&VK9Id2kJLV>>D@gy7l_ z-iIn6Hvo!&@0MA~10W7UlSZfc&6mt;@@6nLknj zF}*^@qS{G{l}g!lQWmd&pA_1y;h>PLH6#D^J7419aNCvPHB|$#;?ZpGG$X0FjPKKe z+j3u;;!xMy&E3{n^AE*(LH$7339yQ@TMpsoZag{J`-P`W&5!a=gZzPo%cr}nd04E} ztQSs$o-|Flmf_@EZ=8}rGCzjcy@0BL39(R>s_vO1Fmj59Kax9Jfr05pj8Gc{X_z@Y zK)L(v4|^abKh+_or4tPV+X78Vu~o9g1*vp6cYfi%OT{?+C-N&oZ1oq7(H?i@(d4<^ z`8Oqat=qM*55`GQU>k&lmamq&)G+!tc>3dU9Y6hq3uacuy>udzEOPolmI&K}DdsD& zQg`K|{waZEcTGiqZOz2Ynu(bBacauz9dCZAzN`L+-plpVGoSsr8$vGUVo=ikk4Z~h2{mqYwmXK0;I3;+d%hN})J1S@errB_s0BJBK6iW^Qsf+sCpsk?# zq>~ljKM5ydn}4}F?qr$cFaLd|0sth2z6D14YsT!CT{wbRe^?-1PVSfW9uJ}vBNH}$fx=TlR^IqWo-3vh=$$>Ap}rEaVNu~%rL z%STUF-VB8Sp_$pKv6CKBadt_aRQmMK*<2@GfiL&410M1#(IJEA@W^lf7>6Cf$``_H zPDB6`l0o~;P(DBSu7S%4x`22NQDBRVlS}ZU1e8I6C2oJ-ft~SOVUG4ryIvar%m(~ zNyDg}u~J)e$6sWpuAP$&YC{pK5F^>o%LoL3kUB70ul;R{tFzGv{Wjon;NYOZHPcL(-}u(znig%77!&!<+UpBn7U!2s3eM3YKcXQcVsl`Pc8U>c+aFn}7$UWQONh~`w#OhR z{j)`j%-j3Hk!EO}yzlhPWRdX84`OjD&?Zr2ZQ#RGRzV#YeAFS1r;&vpRougumkd40 zs$d?_Yy}77XxX6F1#9UiY@s@48nfd~nni;#1trSGlT8NMKy0c(_))WmoR7VX$dsX$ zW1wIhGdP$}UKk&5Va1q=bD$?W0fG_ve!PKZ>&U4c-`ypyHA{4fAQ3o~10?hL%Vd}s z=(^5JVY;qQGeRFE1wROlJ@*<;bY+x(`rG#T%%T1O50zieI4(HU&9~IOeW+i|O)M*0 zO3aK_Zlu$gtKGqqsO`@4$rMZ=V?k$0_#C15emt~Nz8>17qCTrIxBtJeRzQ{ky}Cn> z)d+9rGb>liG_Wgu;TpNr%`5YLreVak`m`rk395t3D>28x^8ZXI{o^sLlA7A_F?89y ze`crCnqts^SDOzh9w6KJUbT(etsZ|-+gPi5RDD_mS4c}-Ha)=-1=Q9?q{Y@=qTJ6E z2itjTcYjlD?PW)C+L42kt=$~^fxWext#%c#b-dzfhKMp?#^>(unhsWgo(MmHV$bFz zxKzjL7mBua{Op`~FZexM@v*`Z7$R8Sqg5YbCP0e=t2j(oJGJU}xIZ**bedNEXRcz) zlLcutj?3W&m|ZV8oJB)>AoQL~^qt$RZ{OWptb8CRw^`$>dfO8-Mo4`**A#BP2}Muz zTxmGiy>eleGnlEOzF2K5Q+=Ydw5vEu1T69<@TTSqdiXkRExXkv~ zWra_iY@XQkPUS+;dhZFI!U12ZtdSKHnG5LjgZzfsziOs1j6$Utv9f%1aZ+M1em*Do zRp5M7%zAaToFykfY1y9@lWgle{zuDBThmcq6Ql^ir{ z@FvCkTUYj!Mcrl>5}1I(9?23CNVi!5CCkiL07m4){t8mfh53!TqNm7spXErleu7db zyp)q1sHnLy&g~=`t)$VDF6zH{sMhBgza<16GJTt*J4M(ng6kfW1T5+z36PW$VUUZ}UglaG2`D@HqM zL=fzm*XQ`O;(EW?VuZ8Bl0(G{HKHks-b%X9!Pi5J@{@!V_2kA=D`BOmZHd)Mn8R!y zr-coo{(6W$OJF`Ah7i!t8?6CEOjab)xtI;kaRlha6$&oX zai2{yi4*sSKZv#G^*Pd^x5ec|DV;>$6#5*7<6o@R$%+K4>9VPNYGz(34#2w4q=4^=7 z6`AdY^+@c6@g}L3M)9_???~r>mLJ7a=&h2{K`oiOKyd+djTVUM;nj7;P^uk7M#n z=?g1bhQ4>1OkN;&gOXCyDt-SgSXp!#f7YsR5;X*%YzLaCyk+1ggg#NK1VIJ1#_DTJ zXio;^|9#KQ<+5H(H=#ORBjwt7h+WP!E;Wp?Tex3*K^OZ7@)3KTb!3swbTJ!V=N4n+ zDi+KbEAKAbD=!jIODgS<;FY?w9;se^SETnZhNHA>*l-9UoMxCHt&h#3WM{2WzFYW` z8)nOSvyZQ6RRf?-z(%5+bqj0MWSNu2xIM{DcM?p$Ul!<91Fw!Lx&CroqIUb8hj_bM zB25{Xm%)4pWOFjXv8!AY)fY)oc~P2d@>0U8!r%xg%NInYq-uw1Qwf}DZM#)iX&H1d zEix^&^$;^5ex&w(OH?+uiF(iQM`kATMe*zvDy$^3pj(OaNUSu|{^}H&#rP{e^T@cG z!MTasaW&I(AvT^<-*#yCD)MhgrF=(tM7dBzn>|jK-JUqI6;!E0tx7E5j+>d1PBUY_ zA=+xm)G31{!MNDMk8Oh%*)7gt?5hl(#7O;aCxj4Z>z_%pt|0+<+A77v;iOoS*Vu`E z*4AWV#gOjE+ad82Y9Uc1e!^`cBuz%%mSr^70!HYEYb(d3;zTErP%jrPx3e9)abMnM zqtKpmZDk*+7w?H$t~A5$2||Z_=^vz-%}J`scq!IG(j+oAg~oO_l!*zGE-F7mv5E&@ zwz)o$|58jQb>zQXi2PTIlxI_Ku2jkU#e$kLo{zr-tLUMwu!_9aLZPS@OX;2H$-(_h zR+lb@#@4{S!vtr5 zFbu1rJ29;YAYj9`R)q^a%t*%cjhM0_Lm6VjdP(>)rJCD(S_x^xvdgLPP|p$ z=eP23QlQA~nx7U>a{f!TH8*8;bfAij_9B%GQ$yZc3}7iSs#djDJ^bNbet`9Tt#XP& zZ}q?nn6@$lDN3zlchDwF9&M2-wLuA$AkLtmzpS3y1`2h+=SVy?7$s#CZ^`bR2NNt| zAiaX9zpf~ifrPeZ+G9{OAY1SCrFl{&5>U4)$yX))jRMHNrJ5=e`iF5dJIrGlkKERr z!N(>Q5#0>Fa!Rns_D{L_?=gvEd`aT8x7B5*Z#WoZ?qSgr^0yghlwyo(D<2OsGg$EG znNd_uib$|-Z^r(2YEI&I+pBVXJSwXt8x^|x^?=LkTI3G+`S)_>#hjQXXGxMbGNFez zGL9b4S^f*bo-t?^Z_OegV9{cJJ<&mQ`7%Uem(qU0)ZBS}MN0Tmx=0==8A=JCy~3a^ zK?i-nNqF}3M=K}64AO(dNx%WB(Nzr7E~3PEx1>iCT%OAV719-bJ+e)Q_QLEjHJ;09 zi52=JGQ~-!h(>!k^V2s{;#8~r^4=aH>1MQhgXi+3rw9t)ShX{Fp7emrI75@|D((~P zp;#=%)hrYJW5rlDsv`vNi8Mn`#HA5m?J6Z~m8&HeU(1X>003 z?IN^j?-?uzPtI@95nAlTg)fqF#vKSKY=tWXP31x*ym)SoQpjde<|7K@vGULOx?AC> z%7p`1@WWd5-&wNI!W@To&+A;V4F#X!%ZL0{k4#RA-7kc?oX){XLZ|0jD`B|RJ(Mk# zMDuW-4;t5I?6^9{*vSoyo&3ZZJM{`#*^}uSA_C}uSMl^96=Vxwdq3e2Y1lT z&JS&o&F68;pD}5j9xHsGuzJY{6N2vjga|VC=q3n5s}@~@oCl>MX`E&hDB+h@y^rZd z;LuI05{}FCWpFdZlJ53CtF{WvBrwc8^Lu_#uxTBM_HM5B_+vcu%AKFzby6BP1 zhY;ejuFclo5xK`xx~_YgeDs06d=6vlOoxNo^c)riOF?gw^{khf6qzNssab+u5aXf@ z1Vld;&9rWxlc`DrNUA2fte`tQyDfl$LN&lRBT( zn)<*#VBmZiKjCgT$Bs3o6k`&0+no;4-OU$jZs)19Ng(8Bd@;W zC8CrT<@yUeWx)~V6c=5vmVy1_V`qBIA{Spr%~hb3h81z;p>BRC`miO`pntH{fiYdp zbOv`mFHh80CG2&cY9YF;`Jt^5QcfK*d6BEiq$l5jB~nnBj*KMMP#Dae`(QL9)czgP z2FVnJJ!PLclh#a2O<`3nM<}o8=BHXwdo=;xZqE;%VS6L6^e|V=*6qmeNiWcAY)?KI z{fkr)g`+yG(K;f9seVQvr3)CuVSrdR$=1qu6L27>A@61#Z5q>Uo(FJA9L4<^S7d4y zCo$)6qBFrVuH3Fgy@LHXTA|e@ip&i<0{F{ivOo@ECE(OF_sWSGj47t)a=zm7bv#;S@Q9U@}{qTb4#N0$9k}cs$Nj_0$pp4Gw{KF z@nC=@A7EsUZFcqK_-FdrpGoP9>7c@rV<`w7O$zoWYk_xYzZnIgr|4iHbw*fS5W}|M zaiM?7WwQTo@HK-Y@ipE%Q3P~uqDmuR}|hVDuel=4U3rusw! z>&OxwdpdSm0pq?1I~18?Z)8%e1obc-7ZXYZsTH~NoZ*UG-kc-C(Qzf_Cd7B7`{BWygb@+wC-?Rv~Iq4}=jZ>%@&+w&omBFyyf3 zaua6gxWsfl=>C`7#g^O5h0dJAg{(Re|A$51I%;R@Q)od?92EI}IL2ADJ+@Da%}Hog zo0zG@x@-5Wk$FR?g)`*UlHv#Y#b5rkfB}3)zWEBCRN9jqt?-9XGMMBcXyzyk+_4l4 zs}M7sVRS0a2RvOiMd&v}$)_Hd-7gH;OV)pmmDTLP;u!)U?hPq?Lo6LBz%^1_Gl7O( zC3)Kv=FS%42e};|70?sgYC38AGO)O$no)GAT%0)cuk=Ld)6BTt@g4-&ZtHs)cAR3; zX;iqaPd~z4CvIZPCP=j=9!PgY7rR{*X)-Sz!#gEbT1GOXUKKr=cw{=%pqPv2NSA5>_cC5VHvvN^Zcd@PNpMrsFRzU@- z3zNB|Bbh;WR|4YHPV&4H;U_^q%w;28SW9CAqG*7Hiq0qRSdAx(CQm(?5wJXmt-7mR zsefNCI~ogD?AMkF^_a0WDe__MohAJ28h86E-^GC!d^_zuqEG=bw83oVEfuL230~0I{Jd$*lnD^Gw zp2v8ko;n*Ywbd_gB$%Z8>^BsXR3=Q)X}=RDsSM_%EQddsq%xSKvXe1MWiUx)?&uZB zv?}0|-Ycp)#95>jjSOB0mo)mBf6XOPTZDdC_$V&v!ArVuN#$@!knc6+bfkQyRb1YM zOKR^STvEAP>Lj=%&YvKXRO`nt$Wb^Et`Prj^NxITmo=-m9N}dAojp|IaBZ_5+HRA5 zfsClmq$USalqZ4wlk6?{MJ1E66dSB-!L%k1p6nulzBi2qvzV8??l3;ZH?9ABT>qx)YHPHXpZ%S zfZ;?e3O%QE+Sm~p5gGStY&S~pRggP@O}2Pjmk8}3LblAJ)w1! z3uG(Hn44NFMxNYz_r(|e=AV7x>(j(|)%M$VYiouZk-G@vwa*vvG+_(j3wzcPsk|gI zF~?nbWMoMM4<@bXW8s%B!UYVeYw_hGgd4l>$bR@s%%PUiV{%LMgdf({q>ejOz~*kAf|W5m8!EZ`}3MR z^W$JYN%EQ8ha}s<>%{kdHr$DoQr?4(Y1NN05}&Oiv+dn{vD$H!W1NoQAxxZsjLQ|z zBY`TQ`8Ry@7ft;a0lbTh4VrtyifFlpOzV#Ohn`5|LFT zW9?{}%S87&?2EeeFJJnnOaH#}ZRuYi&@lddzAOTk<7c3?Zz$Pu(yy`t_0eDZBPpeP z(x10cTXTxcKz3n^1ThUfhOcTg+VLhARhLS~=`U|?jJBvRtz*})#>Xc7>x2G(OACsg zQ2WVTh<4zcV=6E8Ktr}j*Jw;z-$v+)w;Kxma7=& z3uYUeC{MP)8n4JCba*duuQYySSfz26v7_vB$8?N-i2KXY^2cJ~pTquIcA>z;9-*{n zYE!pZZx$Y9gF!@83eE~`Od;sp>zf9WhNH3&Bk<*XTd{4tS}LzbCMH>rt9OVbt_X+F zMrUQ=dBGd;TSyvrDEWfqz*PWi*7F}wJGPO_)2{mGAP2u^&*oS5@ALQ{Q*doFe=pC_ z?x@w)I1g&?@Y6&C`N;>gX-x;T=`RL%9nfyv8ch}i&jy`IRhYtXaX)TyW`yVGHWcS2 zg^RQ0UEZlXp!F%vp)F}7DL@Pe;gb|klf(zr)8K*de6oc0swDnI>L1xAv1rfA!+F61 z#R1DCsp$J+##%%ME;ZceE>%+${MKym(4k|PqwY?Or?e+Ghl>YCdq?zNt$s6*T(u=S zf{%23J^PrwDYRy%?>7{WOme$MxwQuy5F}<4(47ZsYl=rGW>xI~mO4&7h+OyU`v-n5 zzx!zB37G$_(JXk{1V924e5X8wjSMYU>*FZ4&UJnj2q+ORpu2li;g7OVs6yxK7L zYMc!CH6GH5FNYw8&EH=(f2ej>sNJuvxVImG_Yml!s@tCj_eOuZ^6uyO^*Oi3-U6cx zCkGgX4!5@E70^kL+_75qJv1a44X)%}e2bT9_ZeL2uF1nNFLzDO4bDHn$?VIKFphr! z>gL`C{G}8Ek`n51?u`ImM#=j~=E8T1WtmIV^ z%#=>k`|tOai@Y5qZvuR@HS<~AMsRrRHQeeA`Y?1phg#S17QJ7U)1~*9(EA`V5v}?m z%I%)t%a!z5tE#fEhG|uIaYZXdHFpkcy@P8(oyUJaxbE1uqmS^d^z&tVxjWBRzI;!Y z@8!}8mJQaj>FN}!%2xM(k|XB1*}V}??Q2c>tPj1==|exqdz_=CNg`dx_ZO>^6knZy zTAk|n>WC+b>nesL`_LZj&+ueqDaiOWl`VU1Mw84mGyXf`^|Lfh+TF|S8Y%y2KdIC1 zxm`V(mN9}5^Q4`V1yhS-gq^J=l$~sHwCY8&8rqsUNi2;oR;N~nNjf-E4yZr9kIjOwC~ z=^@bcLJKIH`>}VmGCD7ix1R#J$e77^VUlx$F8&>^RsEisK`Bg*T@ou_pBY&`ivf*Y zPyp7t=ckmZcs@?8kB4|Zk~^&8JR;sAs>YhA<2g%WFqoru8XWYlN4q<@Z%@ zP4G>A8?D!73DcrgpF@vbMQ>`=?UMQlm4S;35oFVis*BkN0)(xqSPWEb7Y|-0Vz2;86?qhOWD8K~EAKo4 zMwAd#9Ux0Wcm)?V6(a>L{;W5VMbiLmaL8@LCB$0eDt0M$rd3-4X9*@@TUObq&Q+y0 zV=&#`!PPsL?TT$Bk?EQ7YBomXMx80@9b!CHU&bdS3mwL2TcZ7q#yY?gW3;-;F&f5b zDm(b)Uii$&lqX>{NFlk+x@)Tt+1kBMUS&2)o@5L*Hrk(|o}^U1V;>#bJ#VTfBMvjA zjRIyfwDan;?``3!R=tsb1)~m{C1GQmtqZ>`d2fc3>u&^qx#$!Wiz@rQ;>7*_puOMy zk*o4LO<;rPyd*!4mg`phdDM~M>e=NDp5YF?p_{`O2|K>GKGkSzHOjZc%=zltG5@JG z>a5HC&RS#L*}i`pD*yZ1EMo^edcBkw&K6^KeX2jN)?ZlXi?|Q_v`Mu_UXwAa&N2O* z6d%5fVW%wAhgiL=7d*x`uUs^Y!F`Kq^hSsQ;>pDc^JurkHm}nolhXAz>-ep%wzX7b zuWyUh&DtV+y{*-LjV)Yvn7zJ*ZH&RG9;uPN?wwU9o1MmvZS)-{+2}Gw_GZ^BFFgj_ z+Vqr~zsq@YZHj~SN^Ebc{#e9C01b>8+VEq{gBdq_dMkI8d38R1^7)x5T$hYhUT z&sD&hIA4L++Q8Xn)8|3#%L1`lji{dDfZ74I#~{71$qwzzo=E017`OWKws)oyy7r(Vl1z7ocBPtW55kGp8(1;bg)-Zq~;?O12(BYJ!K#31#^(HTK$e_ zGV3~yg1jaGO5UkUR6Z+SIZuAQoCTaQXUC8zbU9n(V3AXbL&~hntM5RWeC6kF%hyIU z@hslxwJG=7&uYDSO<0T*0&D}D-w`_8+e<(dt)xD$iEPM+yM-sFYd@_``TqNy2hQ5~ zj70l(MUu?Yc_jF)$Rh*`bS(1{59dN)mR#;cxOEGF2!LF5b_akY=r3(eSNOQ~3&02I zK{GNtnmWFPp`YJEFf*~r0wP;M=|Eh=(Bp}#46$Q)??XYrjnRK}z^owoE(F$#LSR+V zinO+vUv13<&>oo&-r->Qc8Phk^6;gBsoI*l@m0@cis&aeL3p@}2rQa{?_VTq65ozy zaN9j7e6B~j5-GaHK<{XMJmM%S)`q|Un3SJJ_X}O$@=kG#B-ZU7i~co^`nv};X!%qPCT9|&BPi* zOMa2AMXu*2wB*qtT4XX;vIBj8OzbTZRc$*yU|zplD6WnUtTrm zSA6!~i&J1X)_s*-w>iG!wy=%2fYV>%zV5$jx5?@J{p;E=SV<7yOCFUInrJg4gMGYt zMZeJ7-t^{`+~N%{c{G~lbr$`?>nyoNj~KCakN@_!!;zXTOXluFPG7Tm$HxiG5lQaD z9*-nnS+}>FH?P(k_M}^br?(MOttKH0nOaE~bN~m{l)hGxFNi1UikjH)V#;lm?OtTYoAo5>g~`c8>IAO)8r> zM+O?`r{uZC!a^sW1^*eR*%J7zgLX4_EPop!XWPzo79-VQ7(PCtlrqnDOjr%l~> zP`gfO)s}fZwCn1)sGr|okJS^CjljPjch^>4#*DS*z@X}(caycM+3bE|*lE>&0YwSs zU{`&tRl5^7Be%;5&U6CKP@GBDjHzw0q(x~$_O?FAyBz2Wg?#wG5QVIhqnaZ-ep-9A zl6_czpF zad4cLS#{16>{kwvtf_ktTwPboWj*ZvCZYIijU-`tY{V?A8uXk*u&iY%h+s)9gbKIM zTx954ZUv5%xr_D|X}O*j{+WmzrX#B54I9B_DgAmodZqPtY~k;s9=#or%-)Wl^1C;q zw_`a{O-HJO+^HS^rGByhk`mRrr8@1)06e1MZN=LU+h>6k>M`A1= zq3~P!#g&f5rz&s)?8pjuEll$I}Wt9!U@EgUhH)Ztw<@I(QGy| z&NRkpm7k_~UaYi28wqfqQU0reN+1#rX5(^C{3~0b<7MGE4z;E)&rB2T?bm#o3IW|m>Z~@uLB{+ z^zE|J*~&6NH(RlGv7>&74KyB}JuK(^?m*4%=s2Ui8$Rd-6Oxx?;sJ^}$7%}NMdu<~ zNPZCDs@t1_x~K=2;htI_Z)Td-$Df&v4}2!V5tN_r2UD?>E{z4q@0D7)ZnHcL_V*Jl zERr?xHWX#%c_&dKztf`G;UkMKJ7Z_#1fkwD= z8n)}p4Z8)?T}rFL-BC;odM;BCHBzLsjzbcx%ie`V6>QWvs}RZ zrd-YiO#@wjyj3{7lzRCg=81$Qie%MtCsQ)*V2Y!yyF>U?=7M~<%&Mv4V-X1bl)^oD zyhgH`R3~fUKG2fS(PXUE~UO zBTt-EA3*hZwK){aTM{Qcykr_C4Pz>`keIx(Oh)*I($%p+P1wci+IMM?~BWWg`2-`NlK&?h$p`>JX`oSS!AFhsyuu{U?{@C9K0C@t5?f;wXkh&&%%9bFKgp>)1hc@z3`yA*Ue8f z?`~DI!2T>y^ea8$Nou_r2G(2niLIG7%o~7QnWZH#??uy?<)EYW*9iZ4x70dvMPedv zC?$zQ;cl#|DP!)Ofr}BNmb@w=je6c{7O`fUQXspkdMM65OJDv;CF7|`U;eTDYIk2D z?-u?!nBgmI52T4|ek@N^hg-$_gn0j5mor0+U_QN&PMW)sW1!hwuU~)ZAe3ai3bE$P`0( zy6^No5c9f5BO*=D)~b3V-cZt-WBL*~grpDV%c=|8tw%mpT?pQZ2uw9`W~U~CE$VC0 ztBG}4s^T$eYr5Opslf;bOQSOXrB+*s%zv;{K>SB6SmDOtt9(R#0kgpE*2VTm0(H@z zi~)}_@=G;$17UD^holwb}8?UaYI>g&=eooDyZG<_B# z)pFnd+39XdmJCnv#Q)P1=<5j%a(DuRtkwNf=`U3b@OT3K(OSDY%TqEST^!H^hI?ER z0cstV+8&1HzYObIH2V`D3<~TkeRlkA3{KZag0|>F$SyB~j2CjYCFdM7r})b=ecqf^ zSb{}sd^I=f4sU?}aX1y2nCcBo%nBjH$0J){u!pyF)XA+}(ud)ag?})Zuz!d7`WdT2 z?LSe2Bc93OwUoITKH`SBL>F&Ih`SD-lnYC*bPN zFaMnKjGzo3Vu6X>!=BznnkU1hIa6Hwr{)p5griOBCXYsp5%HoE6gvZFIxqgOiO~me zTD!ttyp4~_kaki9$^!tG6H|`?9&tBj)jx-K;j1-lHM=QZNeTuQ2|85q-A5b=V zO@Hu}k{Gy_<#a7eQgm^dI>j>or>&RPuSc;0qc3eGpu{f2>CqBccPvzQPH_qf#6VKm zm>sQ)zIzF@F-6WZf&X~U)!l&)tf*iZq4@SZKone-RRcRuH~u62Cd)a{JOPH6M!|? zBF=wC?vRvezs()oeOjk{I%?Afq{a_O$*tz{eJ&O?61l2PZoTsGBgzGCybNF8Md<%7 zb?s&Auj)&)8`Y*zt=8`_bC*YbQO&(p4CpPnHf4O%(-2idua zneruU>ocF9Ks??CZ71^uS|8}tiicd==K(kZTcTvsY+vyLqYy|u$b)K9bh88~xPR^H zkSfJiFr4<*_X;n(CfQ03NRyCxt7_8rgnT@`-@03*N^+YW`i>%H{Yv<2@fFe5#nL6C zuXU<65Yb$D2-~WqD4K+)+x)5$QbwpOwytKOv`C*GjTFt62kGcBx9!iK7Q>4|b055V7*R zAHh#te}CkrCLE+3}w48J_%JS@;3wC)0}y9~7M z!G%^;^XtQyk3yzadslO%WD_qBRo!XOX)uSP(-4^4D!H34Wo8hXMCf&uL9e|+uLnDz zwr7ub$ujXqmxQ+KOPy}%2 z49}Z>4qTg)0DzliO=c`KVdhQWzYkgr-^tDhB;#9gt;n!G9Jk3>26KEdB?%$tLsBgdcEgUcBS%)x3Gc7jpMl>DK<`#>_KK$k>|w7%f+6Uu19D zzZX6sWYy|7?{Wuk3}et7bAHzbIsrp4uLkgn+fv^&cg~cQ>n{rrf$b7@5%+Tjdvog1 z*c&lahPCksOXzh9~9NeU9{9e#H%KVK5<6>z|e5%9;k_FK{aRD^NrQ#y%4}7;b%rVAZE-YSt_I9C57@=iI5L>MSjA~(^Ly`98AZ^6f zDFV&ma&eRaU!OB5YZ`2z^mLHX({|ERMiLh~kvZVIhwqghO{}T?8$1F07;vXVFwh}^ zFfy!Z#HcK+QaRDCk2inG-oVzhGSHN&-nRgS#Vt4UXV zLj}7Q7>yY-)2X?cQSLwjDIun<>9o|SX~A7c2&BIb=Rj6(*%xvChoFQKp;Q4pd%Zpu z4NwAz%Z&VoIH=}ULBlt8Lb@zyJP>N)LlPXu1xVLU|LWX$Uq?z{VX)HPJ!J2`b5>h_ zGHHt<&c5_v26sf8U&bE`Q&fHkrR4-7tZiSU95=^AZ2h ztQ_+$8ZbN2;QSaZm`|y5{j3(^nx5Pr+V81?b>Q1av(EJQ;!C|zdU_JiRX3c%-wo64 z*=v>Dl$RPj*T11&j(3ubjHvN12iLi?lsv*9C8n#DtE^av<8B4v&;cT)3e|zlQFllk zU7lcXb>*c*zh&G9w)1KivS&AVwA8c17t9zRi1(DOflqy-MYygaJa4 zVb6$>+_*PKzB%!IcL7^?A*+=w>>qD#VR3j<@~&4qC;?@=b1x$SV%cNw1P7p>*v>xx zr4$73%TJ_O#g@6}z-O^n2aXqem*f+IuGjNA+>lsWl@V$abUl>U!9IV!WM5!K_u3n- zaUt8xeRIy6ERVp`Ml7Ac3z?IR|aOHyWU|B@?KwQ%rSxq`GOROLabm^FfHKZd;p%{8#i%vR90x8p^aa zyYQuyIZu`G*z-SNYP`Ac*~`x&7XW?xQW*`F9w7ENp7r&$`g;P*LJNf}ku?MOFPB^v z=`Zo?6+BxAJnMI>Rgm_8s$m0Q1-MHl^^N!cj@AvZl5NT5vGW--ANAs*pPQX4D35-z zS$-DfyEQ7$Y?hJ})|B-SQ$BRP*Z$gBF4Je&8Zr4S|EE!<>y^ETE_R~1dg2X}yWs=5 zg*{kCQaLC37x*m-PK6~|h%GWo zb7#seBF5)mbyJfNzb5`F`)dP48RMHvPR5w{A+(EEzAWA%PO#6vm`ieOinZIypB^Tr z#OuQ!(q~tkv@bf>Gay9v*KSLZPNMXAV@sE|8jH48-k`UIUN}Upnu_6MqO(#);(Oum z66w>9J;ss}c2JG{5}|3qv;vxDJ(Z_Qm3b|0Oen7mok5!{FkjDRnv%h^&_65^M@ea| zDJ<($+@U*5zq$cPw6Nb2FYT)u?B)A8X2;f&=oinU~+4Lhs5nlfySI^Auy@eFB8 zd>)AvQOe{S>rM8ju|4y#eNyLD zs!oANQBdH`ED6AO*UvU8+Vt!e_8Y_g0}OhjQFCmV6^X5eK}3*%P{K;NPPy3k6a&4CwT#r)Wc_`Q$eIo> zZCs&{-$(~lg(YT%>&b2)kp_Ae+rOuc>ZUYQcfF8Pu`-CMQjyaXv&xx~D&Z%Nz(-?@ z`npqJ!}6MJF4r6r1*zp)^`$Z7-+4HF+CkeMs%(IF1U)o@_b{`{6_hZyb2IRMz^HFA z^+n-bBKYN;LgLi*~vQo*_@fI~y*-Q}t_fv&VQSvTn+9@c7D6q>8`)s;DWAc zoW~KHN0^Ae>S|GCsFfNcpA>o=dwvi;6bdG;+@`>YdNkvpM%Z)v{0zYziWB`I!ikpV zPO?{66;6Ru>uio}zsxqr)%ve^D9ydnUeSRprL$XHYp>X@Ks_M7=Vgn(w^xXk7))M* z{;}#G=Iut&g!<=I(d$EtN^?s>_p3^_%BR^aF1J_Q%@e9tQpx_%^3q(Ny`s$c)FSUP z3{mmpBne8g{Qu3z=8h4gOE=Q1U#cWX#f%5Sl_~Z-uC}&>rbEU%1Hq^NUxeY*L5ER9 z+3XC6UD_?YdF}3h+FwJ`wM>{{5CNwPq?orxOCyWxb0iHnac!>0#Zj8X~}OF z1$)0OI-KWv_rG(>TJE1xXC}CVqr(+zgTv$8cJG$_+&AaGF4qPrJjta2k$Hy@iPo3d z9mni)sgUj(t87=2T*yd6_-e1lc@O77D}H$r;!Kx4uj0Z=x$L=1`Dqo?{v5Fn=&{a! zt0dL^JFBh%9!fO=aXz;uR(;Ewy^ znQ;xxyrt?Of4Mw_Z5yaL+RO~q%*85;tw%#MOZZ|o(@zou(=yCU9JvVM{^n;{EH#F9 z1N_u_a>@M@+n`DUj%KllXqB~JB<5V-MT3xXrQup$N}?I;M%$~q_gD>^iY_Af|MTZ? zN(A5t+Lr9-V9~pNvN!AvByo*fjYw6vTjk|bg>WL`1w(QEh^r{oaYKIxd9 zq`WC9=x~~aI)>9ur;uiPxi=b;d{2?D(bvXsJ=&Ym|I(QqY2+QBHKHDcT8(ty;mO@J zwg%>|K&J#BfzO9?vA;#!JGar-&rKxsNT=^H8W@0&D$xkxyR_U$ZR=>=KjOPuKjzk( z*&VE1HV=F}9AmYht2QrTI`JQS`Q0Av{1kQBTc^)f^Iu>sby$2U%JRop(`q@Rr;?&S zu{P0?*WZVp%kXrw&_D{gwE}jT*zh$JsP9F>5q&z=2kEb=`mMRF5*b*cYVM^s{*uzZ zj~n5bG*`#6nv9D63HFM|RLe3ulQOeV6qiZT4#}Sm@DOdva@i?eXWHe zZC^SdYdo42zOERgm90#1VWu&fet>fI`bEClm!r=*o9RfoXdn#UI_=+ENsltwW~qXuc2vvkSNEV90yK*SvzA{BiOR-Ns5^`<(7`+wOC^onRT9e`CFAl_!qcEaH(_q7;&$ zSMA>)&H-@t@~(0QSKr;JrBKO4p?kzzzz9@@V3Tj-gj6fN5X@<@D%KzVlaOgCA)ry( zE$EhPmNtO;Bv0;rB8QkZh=&6-aD7K&+wYNauG5rQ$SJ1!i)xqa>!G!xODrb&$?HfQ;d!qRa zAc(v&lJ#mT@H(3y!;3acQQ%$ys!JQ*I1oD}B7xXl%b&qUr#?V75i+EYZH20YdJh6Jo@`m(hEBoz{*Z0(z8P@Mn|Rh2a=X1u5@k1e8fntwr~9~i zBtLWdk6X-G0MpQTf8$tdK=x7g+QzHEepgk{#UePS0Z6m!Pf+|JHwA7?4g zt!ri}uP$57D0FivkCUbRR?JfNwG6bZmu)X0Qpch4m?EUN?ef|5PJd=dq9xEW^{T@!OChaK4P_EB&AmC&Bkgi#-!VM)YV#}AHv%T~pognychW}6s;O$EbGu^oyFQ+*@+6ALLx$jQH^W{ zwe_w=Y92D|OVN^YEs1w)LlQjN5RXE7+KBWY?CW&#FD#pHoB(8^?7%575ye045TN=m zx?1THqGW{Y0%gi%=yw&Cypp+x{uZ&aC4lxe?={sE2~y||+?J{Hop5HjvsWi#&gslF zc0AC;{rwXx8I~5fgy#jKUTm+J!V|Hb<2*UDitXitdBfW+9`nTBIi>Ww`M#E=-`(o6 z=ht|0W=yeHxX6GhSFv!fA3&Q~rMn{cubMx@rM**ju4V4op5R=#pp(Q6`33EhpyEh= zIbsAx5nLw6lWwm#$X3EizpOeVxAUC07=uTfOr^X0%Z0@4WC&0`HIlL$$FXDOBC0gE zr@wc@{RWni=|$Q`ulAN(=#8|sRxV69?#CY>ukQm-z^IDAmR=PUMcb{vl$E4RLJ=yn z&BQ>q+I3SAH|Lf(*Xw+1@Tce1k~8U;;%nd3&v;2VxIKj&l^D$B;^m<1@`N97?E5s{ zJ+=NEDbb+8&44>6Yi?$d_5u2$h4HYh)hk3~q8~m51s}2%1xIIu-^fj$vy4Jg za*=j^I#CV%e^dQ(X#)$r+6Ly|$v-!z0Jrc_S7air$j^|eMS77h6X9#8pubES@ABJ@pa)P)oLq&wW7^@J(~=%TGWB@(tkc8{pM0aO&|Z6VZCkcZOUz+mP1m z<>$!6DK9f4 zeA}#3k}TRGLMSddF7f$am_hWv8_xF7`L(P-=CZpHCs$z0yn(M|(wOaH@Z1Q37c#qS zJWlk&nHSue3{qqLfPY54fmMV0{ZY_R{yr4`86Jy(q*q#tLZp8$UCk`uvHPNw{cmNj zE&DXit!25jdab{ewX=xX)ymZ*=La*-aI>Zy?)XPDYxpi9e)H%w(Pw<9wC(M&2X7c! zfg?C2&K1AP6)1o)bS9ISfXoTkl};Ry-pf`Sg3um)S}_Kpumj|YM{W)=`7H{ zqj_d)kJA)11{Xlc^;K{ElQGK> zIdyi>?ovGbz+l2T?)cSiB2jWRHocy3sRnr17`ML&J}u;ZiPWoYMAK5mKbD-6HsB3d z8|jepbT2E|KQ4ZxfL1mRMk=nrNJozXYy4_HRZ5e){6v{8NM1qo1k17+>I);YyEo}m zPsA&P0RU|zz%=Th(%vQTG5PToF9TO*rVAnQy81~6_PYFVSV6syMpiKrAcoKlnN-lfF2b{$`+Eo~N(YH!! zj5olDO^DmRG(X9s6{YLl)`_UfsJByL&SE*h`3uYPEn)vaGH{f8OD~v;n8o2KF{duo zXzu(&ZpWleXp5z8@}1yXen1I=SIao7xd=oo6Sz8MP5-z9v{hsU_R^$4X_1Vr2Wa&q z^qlom){5YUJ`1_RO2ri%)>bnbVgVT)cB7FDG+1~xVD1VJb+2emC9+Uul@+AA!Ub3$ z7Z7`VXsR2RPx=LE;(vx|`y=_JORG}xd14&*Sh%TV?C923t67!guH**_+MTjEBQQ?< zd?+wZ@su#7Q6MMOL}r>H1&XZ_vV5pj|K_vACKa3jAN)5ekUYkqLuYtOi~*Uo$#RDg zs)?kxHG60-1ySlOf_j>Z%&kpG4h~B&7uTt3lQ9N?3quGN=jrzShp?uqEYiLT^;XNP zvSGIs2A`632dR=Bm&apZQe?xqWqrA87^&LMW(yse5e0SS7Q2>-$=-MZpJ#WsSQg4w2d}UzRp916C!;Sca^}(is!fHBRCsMXbcO-jdZZ z>yU*dbSH+)|5q$peiYgJHIoSe_z#v!Vz1tay2KRB%|S{Ir}7^nt13^$Cf^MUhFLvT zUs!Q0#ZSxR(gm)TJSUgR+X7co%yVMQb3)8Bs=LwrEuzn*>!>PjLAzzGXiboAil}uI zz61rpSJ4}SfrH7J%B&`$KStT2lFdfbn2Rj{-Fq=2+v5MMG&6IaSKER+g&71CZpfdU z>cQ{|Tb3fQ_RQVF9YtFD=tZ-oUv4>+&TI#%_gcjmF;L2|;C=SFx;y=6;(26-IzD)E ztiCom#a4fk+u=<1L-w30p-)|<2U_@BFOwqUU9DW*mx)T-@okvY`BBOHz4!w_c7Dx2 zPtpr+0Gx1E#3bcLA((IgFdpC;iATb6jOM%Z&WT|Fg5881-sRaTM_FYge#`@`abLn+ zNwv#C2VtCSImL*hwyXt|QcGE5R{(`2H;ogLfw|&+-u+y6{-IdC21fA{=D4%@KqHSI zGM;piFB+o7jI!mTFxti?hq8ak6-_4^7XEPADTOCb09yh4Kh^M}dv;#QKB;cy* zcA!kk240qWg9FpK4)6vC?)2Q}*?%xxnN#NB^R%RZ`t@j<d`<_#VOdpm3=v-Y^HWHNt?1s&hi?Boev}&$DwaKuO2l9jC(=ZUZcs7L?gw0i*?~p6e`d$bNJi+qJ zQeNb8gB7F>Wybp)xxe_Qx4K$R{p!x2Gd``*iS6mPJI>}oX#mjO?v*oPh+V$^T zf~zC5RSvpRQ}!-*PM@_)&1>+=0nw|7KFj1Pg8S)DNaQM_mn5l+(e3@^Qi7BflA__N z#wf%!cnXEg`{}=s=nD896~rgJkd2~!%juqI;lZ>!YdgTGuGfqIwl^I5O<_*9|3tp# zn_v6#bs2MO3ANBxGmKsUr{63Qo>sCJ5T4%FNx;kYq>zVasVb2|_50NsC%e!z4D@P4 zxaL<^`d6ur*6PD5T5|;~#)uUgXu-IT(l!#U>)_e;p!n+|5*1RqTK)6SiMFka)W5x2 zoVgxtXr#7Nq_(n`6^)wPM#L4IqE0*k(vnAR*}*oTs=TkqzQg^-2{IE!)(n-nri-Gld#CqrYc|RY{{?KH>2g6veo21EG^tt z9vMWrOC2x__1c)>-b$&m@D+xltVct=5<7nb5@SgMFD#-m`O<29?o*XKUytCU&58~@ zRlADiM_=<`qF~k?!|_48)Rnq8(_a25-*Jmo-|GAt|XLV~tBl&HVfW?z{8G@hlkFLVaNw;6)5VB&KqW+Scw zG#f+$sb4&qlU^X-0YYJOWZWP|p$Z>}5Lm3`AEcKaEmvTNh&1hsYGcFgcm$)o(xH!CE$4B;Vg6UaVP8}kI83fwMv015F_d?T>sM!zzZ{7^W=+_CL-}S1T5#{~MDb_(qxw1bI9nCYmCSlU-bYD z6^J*?N5U6$@VAl&Fc=hF#*v}lJyDRV?m|Z-%#k*+^Vc0LW%C@C<`V+5F4_|S@7eZrpjlrSyx_?RxhxWw@0tJy-1=IeYfpPq)uNt8>VKD;>^U}OAg$T^E1AkRxAGOb`sp$JovLZz2JjZJj3Q1`dA+A z_uP#}DxD>j<~$?}n(${FrZ(!+TM5ys(+_7Rvq1N)nXec$ci@KJg@GF!`~u<|imMB< zgqDx5o^Nt#1&T{^TpGiqZPZ&Q2sMi~cM8oB;tD2hzR9H3>7UPvjHf)03hTGf7q1p< z;FWeAmsh$f$}8g%aqqlTgG z>l|awQ1;7yn1u`BmNw{Lj7nr04hVLz7X}ByEs1u3J`QB-(%vo%yeH$W zw2~KLJ?)KH&%t*o*7FLlu%5?cC#PCNslrYsg6b8Frko)#+Cz=n$li{NCJ-QW3r>}^ zHE>!ZTEJ-)z-e(PjP`1*^ok=&`3KT3xyiJp=D`V7ESCe?m`tmwLD?oau_ewI>XlDl z_A57}5&Rvi_p0`-R0E&xUd=&_BZTia^7d!8qN)G-0z0#-)Gs@eN<$bop+HmC&-G+y z(=D3goaj0189uUr!)asWA#8iBPvjgnT%IK5Y?Z|pZx-Slwtz2k4kIy*M;DvX;d(Vq z#u)6in|KIpbbI+CHRj(let#df>KkxZvQ?Me+rTEWi9!7xQq(3U&p+(|=N`$R9SU6) zvk8)<4`r`M4@GLz#U&Y=F7O-S6zeoyuWJLRD2#nO7Au_MMlh59?sKq&9c2-2)cs&YjnT`0r3&xCHSbIWJmNe@aNSF<7{GYyo>*LGuUJQ> zLM_+Za7IghLMEtI|7LpRTvoA!)gL{tMDf=`zM99&1@A=B*Wc)Z@ahc}zPwmK+2nlr zQi8#BpPOOeFXMno&{6Q$H1O9n@Yl5B>H#MHYJAFcJ8pV})9=*&BnV8S6Ce2ed^z#S5n{9~ zM|Q;SP#=#W-6)-d$6Jq__rCS0^Io0aeT1C%bQ6Qgd5pJd@4yX=jYDLSPm#DlvVOGErs~KBFjSY z^>KFxOQ>_xL-o`2T;Q9@iXsz&z0S zfH~xOSr;5IIZ?$NFk|rEm_y$ldBU9VH>MmE@Q(27jYimyl$a5wDp^cqgh?JGZlRN! zj_bbLQKOLS%*cRFKXO1{MF;e%&?f#fPt1Db0p0kV3`my&ebxMcv>%!o(A|$ow_`;e zKJ_Ik>Nsf`%tv&pS}|2Z#Eu-xhG3JioE18c$>|cAoEswZ@|rP<$T0Ra9>z=0$}slG zFgP$o5B@Rpvg-S0hEexu(_uWLzC?%7aT#keI*hgqV<+$aj!Zvx{Y`{8agnhclZqmg ziBQqQii-ZOn<iMpkYUrGK6hJdrswL)l z{?ufwO{(EG*p&L#IFhE$)TIVy-~0#2N3hR_SH^IzS*@f!L$>&()!2dD9* zXG^QGqL{}XVP!O>3X2XOVwKhE-A|5)Vy;a%LKO3rKJ%#tQB2W6!TpG0bp3MqY=~mM zGGHaP`m!xV5+kJCf0|svLUNJBz(VL-pO28-FP?(rj$LAsTxLuiRf35RLN~qIh)k<_ zrsN!`&Xf=RNlF@X1V{0Y-wW`_R;X<-7ej`AGmtbs1`{u&9uAUgf~ zIQ5F!`Xbfcrw#S>n^slwiVN@m(%JFXW`Bji|8)o``H9EcM48Xy30~#oaEfgZVvr0m z$pqEy=_fdLhY0m#AB*HDFiP2l1t#8`uYIon^(pXVV4y=gz}?ujUhUEp5#rrTUXdMU zWO~(7j$oAZA*-s@Px?m$dG#V*q5gG=O&n?inHJ#@K>qrSD1Y#tW#l57j=2HV2Od&Z`2}}SI9=HMLMxo zay2?Hy!U{Rc=WHXj-D6(0n^xUUWnXB1^B961HG)(M{S6n7apc}jn4}j6&B|FRq%E6 zI%@s_gD}`rxsF;JxsDplb<|)-V6c;)qn#BTLmM3xI)B~hsBk82RqSeXAN9jkk#VT| zC{xrCb5z)+eftxR3X)rn3XgR*jtaY)9u+zcOe8ATgbDsj#2n^4^N`S>Z{c=aaV`Rn z*yF;%f@Y5k*WK0hxRCWP^SBVQH@O%RLF*zQ93eq5$Awewj~o}6u*N*-o z>E33z%&X`Y_l2g_pdqS52zbt7W3#bt%TL6#Ae6_p`t%uNX+N?+u}jb4$S`^p8)s=? zmtGAU`DT$X)LKRx>{CHzwO1Zuz~+UNNE$9O>l{Mf#$3=pj9SPunJ2xMWYFFZO^i9M zK5*ZW%l+POjpd%vF2V#8!l@wcDpZbUrG;mg|)ARQzK1kc9kCv~nL4pnP zbH;Pg@Hl2TsG^@rK3CvUhyMPP5zO)RBlKz_X7z$LjLfshd<0?=e580+uI$;s20k)S z(=s_X=%+nzpeB3yBMLUP`iy8Jw@V}OW+Ps0hlz}SkHbV)*<1&ApL3o5Q)L2WerQH9 zN}xS40iDWKxL`~L_d3*?47l4XE|KS8+WRnW!hvqNr77&Q533aN>^(#Wo+U%}E}&n3 zHzkce7}pS94XcY_TDEZc21l>1H&7TaWh{mTxEibOM24f{>SYMX?|vcz#-|^qf#1+m z0b`N&c?dr6QN?)*yeqax(6GG%!`JX@mW&wu=+btpu?@2_9ue1^NMBl-qxzwuDFV(R zTVn(~`W^!T54bXdxGJ7v=N=(%R`}OY2iR5}#lOaM#mZ~iNPSH?^Q5nh6?uExe-i=! zWmh8v{P(+$kk!n-A~KG0C(x=Fd)8k-R+HJ`D6*RSokz-Q93~p(KCT&Y&CLGI;@{o3 z%kF+VMqIPx%P9W!1YVYth(f~%Y9e@7t%Vrm`{170 z;Mq8OfCmf?ILhP)6uTH1dt(x@;V$WA*&=$S#98BW6?vGJMDztm2;q2Ry^J%AeioSh z{BfPTsJYHvLBnR};884euFVmh%Q{BqrX1P1Kg>};eDW*KlyF$d1BBaQocgVSmDn3#7dnw#K3K7^)3bD@g zmgQv{XteS%Zu#<&==3h)k3*h_147Ji7dO;~tlU*yo@w0n z$v1W1*Hm8KL2rbEe@E-c%UekUtLfZfY4qDmjlq@o6de4v>hr(N1TQ+lWP-gI`N*0! zul>+B%Z(u6i-iq7HvT=B*DU_ME}-zQm(!QjE%Nd+KmQi)0qYKtm#6YaVA5M|{fbQ8 zjHU><)56X~l>Wq@8o|)8e)*i9>PKMy(q!5`yra2k+a5Bet)ykLB|2x(`B9Tcbe6~@ zsdBfBqJ>fbqdew0qJ&1JF6_~EH6Cd732;%H;{h#(L z`QSHjU$Qrzy^#$a>{B%?X4R*BE34j+53c{l$QK}A{T0*^)69X}+4@acg0H_YSc2I} z5hk^2PisSOsy%leZ6)Yro%X(7dk_3*XSva+(;xa&ajDt6;8UNM?@2r!(%z?I-KAr~ z4*Gu!ugYD6!K+Q!t98tTeNuX1Tj0WEq}6kpvVz@> zv9Y&5Lk~s&8yP~xlpGwnVNYj#P4{1|-kt%V~ned2p<_(ZGPZdhd%0|$iS|>hdzCLzZw{d zB%WXGJ^ruDoPHhuuMqgL5O9h&qf()zTH-Q^V`~^4O~L1rCpaQAW4SPN`mNl*h*g}Z zKYZ~!#26%HEq6-NU3YLWR$;2L^s8ZcIBbigPk4xkAW`49P|P`eEwi`Ri@jxOzpECY z+u_0deG#wzr0nh5_o0rO-gYsiFn4-Pf;?{gL=15Tom? z!X8yhPwJ(1IM7Ro>#@n-lJGT9z+LE3Q;~8<=*N#hSl-arzg|@vxiX=az%428T@afX7TcsLVg)tuCJ^pTt4c}xPkM7v;wKg4NFu30a_&D(1iAHk*?H2bJ%Ghto+$m) zCSyU1?wY6%L^a5Q^8sEk?KG&i2U@lI38 zxAV0N4@l*qy~Jv()ek!Mg-d6*qXKb#mg3R+`r4LVlNx8F_IOuZ8mKy=t#+eT<*`Ai zba-S|S-FzEf0x5o1@kV=2`kKBrHbocYFB>@->*a zV$IihT^P{aUeQ8LleR>blVNc1Sw&}yt_Ka{rUiU=B#z~ivW8M71CdSeqI`|r1TUx$ zHk-gGw^q1^!70S0Ka_&q=b2Lb?@+Q&v4}T2oU!G;;Y()kD0dTVf!&^*i&P-K0hA#* zx(BXRwW2;$)^AHWGp3?YuBA@1zvrrSoM`PLmB~6sl9buYC&)HfEa9{_Bt^5`Wfnr+ zssn{Y-HOD&sYJ13t5%zf5yJ_}6#m3%_|e%#ftlMD({Bq?hYuodNqV_!)8Xz`imQ~J z^WfxRaoyS%McOvE{k7!o82irXs`LYK{p5_p>n6EeRi7v2#~+MjnE8pS3VwH#%-1-j zaqTMouC={lAQPS6V_R@`*cJc17l#UN$2s=$EWRqIr`(p@-h~(9B7*89oW1ro^-IIF z+r1G!v%l1z7!)f>uKGAB{v9LF%zBEp=Oy{R{?3+!9;sS z6%Y282E}2&M)?ot6>96~dcx`W;+xSWdcKq#MtarGBz!wXvdsL<-D6$2&J};KB0M*- zv~N$pFI?vdULWU<|2jW+{|)1V$?2}#4f8IQXkF_)@gp*e-P#*kNOuS~+^tdGzPUT* z;qQTM`nE8>Aw88mp7?Kjd|w#L6mY4mtREOBTc2e=& zysW1xCPV>zB>+#&A#vuXf*w=yd%WY0JGn4`W-j`b$KMt#gjR*YG(XL{w9Oa(N zRz8@|I`JlIFIVcGkPmkA8>*I5ogjrbT%~y(ETT_4K!~=z{1(~dq98%gQAMFVuU>z- zf9zG0r;K$4XITg5^lUve*s-Qe;PLIEBp7 z*?$Y)IF(tZc=i!GOSDoM;UO8Jyl9xL%{al2$)YV@hr;DJ2mDht#+5+zn1;ze8e=!kxUz}AQnlaA zIXEct9<%{Z4zT;d@ZIKn1yiWuT)243{~`VVK$8;|A+;gjMv`AYoNdxT?@zV zbrXABHi1jScp;#OIDU5wI)2(*WM12ej-WkQBQq#P8-;R z8=IIIcs097e2Vp1Ffj-PlTt_-st z2?12LDoYWrF%n#J4%KlrDRfcV^oWLco!;@ScuR=T!S-bqbh*Y?xKeRjJijCUagxSY zyYMtf677i0QNo?-b3_mPk40y^oi0+H94@R%jMV52tPBi)lW6sgZc5Bx$`q>rWFzJeml>e~lD9TOQ=&Q7HU>cCFZ78Wsl|RJGF@zmn$` z_Lscz>P7xE!*nQoD=~62j&Qn&=ScC}|A-vNy@9j5T78k0ij%)Rh1z#`87R`;!*8Fx zTucUvv~{LGM7(?!;nBB8Wg$k4_ex3enU(@Ok!P3NMZhc&w(eq&t>s?&jc}vEoz(pYTkdC=>Zglty^>^nf*+~27XVc?> z1d$!wK_7E3C<|>~DPbH4{jDQT5khSXg9AFiWTEU|I+yN<4*OQ5C|-OafWVyP;?Y2` zjnfnCbnA5@6WHU*nT$?HOLj1B&QcmU4ws{6TmSytb$Ch$+V-^p;n5L=-sW@06*md> z!o(1$7NFlQfQaau%3*5X%aRrP=Ea}2Tl?5sl8hUggq*w?{;qryLB=1c6XMjpP+Lvs z(0f(}pBeg-XTU7w=sF28VkpW&uQSf zfW4>$&tMa;6T+5|3D3ZEa?d7SwuB9KmCf@c(#0n+`YF;1L_d3Xdzdi0`%QHTg6^(9 z27+UV1N^P2!0HZ8X-Py}tq5l~`7})M(~(wv@k8Q*|1v+@ACjuh+!w?dD2a#*>-esA z`b>EU+g4g4IADrA2@V*lve+`rLY%oDA8z97^yO+JY+{ep&4CGbBRs|RN9aN! zcjL&wi#~O@1Z2JfhZbP4I^A-m$e0muhJEqMg0)WXdAXQgH}Llxaap5Z8m-zVRo5eP z_TcD9@=5I;!=f4{Y$B222 z*qYE8!ge?7R>WluwNrMWlC34&_C&bth%BBN$uSL*XTWTW5Nn+N7&OQrF81<+2>g`| zwlVb$b8f~mk!crSJ7BvhnmOg&*<&L*ahL)J7>j#ypDt><&072_^!wwOK4QFWDCtUO@pSX{Ub#fj z8!Iz!(1&(FjlwD#rgfvN&~dAy`gEo~vvP%_^yywPOlg9Bc4P_D5xv?dyw=pH+o&c6%oMej{tZbn zwt;vLI*K;kf(ubN3ECcRBZ^FhQDC9=o6xXW&pL&edST*NH9gt;iW;bR);Uu=>$K=C zo^`yh$cdBx=7l=^tI*!_!%%xX>$LUcOtt!~`h~M3*yBz^8PDmMI>Gd*BbMG*uWCjk z%0F2&Kb|(VXfXF(tA-bKlC!#$?J_h?UokqO454g~*a@e+DJ)akds~bQ_mLqqGDg{> z4K+7it}WLZ%k_>=uj}xjhF-mp7s)o@-5hExm>o@BfVYr6D zJ5AjWWDIQg86R<)5>ERQ4`90w_VJ?_qT6^%Me0&1JiW2*{5;@3e4VV z*bioh2{E*d_hsJdRkH4RT%zsZ@8W!|il0UNyO%&K3njo%QQ#Wr`@?b#h3JR_>9iWR zwx2dq^v^!thhkfSLwtt#CwaB8DPl;pSa5)n=mgW|(6D0o*sq2ryQE~`G*_Ql2H6*% zdfiCV>t;pB{-@VN7cag6Cu8&ofh%T2Qlnu;Bu_4Ui->X40(n;c7sMT2H)LCyD6uPD z%yM`-(ZX_#1h4$Ylas3y+Rrh+_TX!TN@GyugEdV&qeqNN+Kn5*PVg)lz%GYpscPSa zLI}RCe+xh~rq*L8${wrL3(kRB8~#@ACzH}6IMtvxQGW%qNQltuf8HCV*AEKJwCot) z53Qxr9ObaUq}Lnuq*bQ=`;I8Rb_Ytbpgb|edUljp&jxt2A=YzajE^?z55FeFI_hZU zxd}%S>$!a*11TTC@~9Vm%os;25bNDPg;?)a#QO9vnkCkcv=d@|;{^W*yQ}PhfahS#UxufsT4uIXt#0fqwl}p#V653)z)#6;tb7+&Y-Htud7Ox$ztd z)hfcr3Jcq1ziW-GqL$kJ`uo+a^pK8;)z1Ez#!C2d1Zx$a{@rE8i03!x*+8+H-wa_(yVnv5B0gxn%=HdqZ(^m}I zwn6{?TC3U!vh;hxtio^E%e(O4)owUq7oLmpv$+d5Hra(=&tn&EV-KJSyixbE?F{C7 zEMgvg>ogJB6gXXhv5xvRh@RwuO$KRFo7~)NCz){B%1NwYv#p(BK;bpM#%?xzPxh+n z7PHw>Y6WzY)Mi^Rjq)7q$^QCVr7;m_y!UVHFW1YB_SgBeV>mJ@Q)hHuFe%xfU$WvS?6Bezcwg~f^sd@YvAl0rk{a{AFIST3 zNK2C22Gg~m?J-LO@9WXd3SAh>`xc{7X7IiZ4oE`1h4)Q5U3ryka4ykVyh`p3odoZj z;>nq5#i``Q*O|U0fMALC? zQ%3c2JzLl~wPjr@NDoQW4iY)Fb(bV{YI|EZQ(lx5&321f2pLry3Yjvhdr1^>U-3dR zFgl%UbaB7+TX2tf=5q4VFTd-_7G)jh(!PY5v6t78)sxc$*PFq#tf_)+>h!LK@Yu@X z;3}Drm&wxDrgOgPMXi2akEj&tNt3UQ(%Tq&PV4Paa{CCQZ!CVwrLLy-^uJ$jps?4s zM#-%yeuArQU}*~jB@vdE?@nHel@W4`hvyB?HxfX7Fy;t*&ZmAC8AGi6DQZiEv%7D8 zJjs>JLUJ$M(G1D0)9aEF4P*Log8HfY%Om7Z&DhgFVU1E>Q~m_YSEHYLL1W@ur|*1D zaJph|O~+e*6>dx%Z<(SCH^1^J#$2p+v?+j^NJyK;CUuKQiXp-$;6(7Rm6V>wO<-6!=I#)WS52q!l;(zY8a-sUfZY5Sv2_S5ZaAwOztHKJ6!AZy?;a-<#D6+Bu5r4! z1UGrsbVF*Zc1`^-Ik`->){jOk;8LeRw`psqKD+tc7&?C*^)sQf7t3w6D1I7rPTqbD z=p6ccGm~zmhbDBypP%o-s7zb*`5NF;$ALHspAx87Gw@jpiwPjo>vNNuflqpUCZ8L_ zXV%C@@cB{uHYFT$?^8f%4eDZ-G&RrU+0b8>kAW`j_VPUVs^!k8rR`-f9Y|( zclq(g^~KZ8jO*JA(EiZ3eiU6ah?1##x-4;Aper|cf`2kjqCC! zn;F;S;c6W^>%W9QY&@?1B>mKN_#k%Jzbu`dGxm7ny7h@>#`UN3)wn$MXizp8*VQD& zjO)i!)2hDa;C>pt_+slZ=*5P`&2)a-uqeGiwz|(Z^eFV=p^Fr~_^qO++1E$uMY|Y! zdfy;K5^awlq$#e~<=R^ac83V_Szq=w))?GxL0D8OjN)c=1;mYGvG{a!suRfu(hV;< z{;BY5_g`TgN*12iR5-F%d3VH!B<&wO>DQ5={!S?zOncBQG@5U;a*en}k3_UtLFR~5 zak^23o-Jj4@JlfljgJ%`c`$kKY2#pWT1`YCJLx&o^HBnTw23gbP9OES1P$CNkCQLL zalCMFhL!^G5V6V>(cztuZ_ht0q7)@pkz=hpFoP>eVjPGL%T23F`Q*C9HRjScVBKI# z#116(>%wo|YHRuI?Y5SLZEY=?@3gi2z`w2UwzWLHy{)DEy|$Jy@3*z|{-CYpXCK~w zE%+-0eucpQDhN0)6l0d|=!2p8g+jlf{bk6PHVuX{q3P-YLtZi7z=FkKDG`^A(p%tc zy)bw~1|pvYH-l|N@}w0gn_lH!4C4dCrnkiDm=>|=oo3qfcE#udGljXTC4XW?1#Jw4$O!_#$BcB;#edH zWj1>`S8EZW+4qA;38vk3CF23%=1FAe${9oHy~HFIgXBoRbDQb+WV~BP?U4I>6FkL*i;a73yZS21hJ13$g-f)|g+?cLLzbkI_tdCP zUein`M~Y>%PYk9@XSXMGl>ns%C(u6yxT=bn0c?Aq(E#4@iV)0RF0ryvWrqTd5_-f+ zkflK&&aqfP8!P5PvI5-SoBiHV{gZ&3V)k1Zc^?J1d5!zlPZ|{98f(X1J{qE|01cEy z7+IuB1mQUg#K&fUJF=*cAk{x|s;(eg;dqr8lVFLvm=K~Ip zjMMW_}bnO5{mW`l~Fq6U;(*3%HjrvCT`aj*Y(^f8a;Sq3l&m zd&HS3%Jk_DxiT>OYm?5D%}$rF8QT0xNeB$UUi=|>4D}%7OO1S!IKFFr?Zh4sYcsMs z#|iBI{PG(^!o2A`u zf!0qlRZ{R5qG`lS6+6)HxUb5&$l-VDw{tNb$?5J!$^qR{OSh9L{z(lW5xDo(Az zK39meEZDEz&U7KaePj=5#2;4l*DZX5x*ijg=Je9pCs_PwmS&5c>iyg3pDchKVsz^* zo6FK3VmNqBtGq;7uhl2g#J^FgglG%ep8t?DVn?LE#_Q9(Vh^gf=8I^yLR-o&hNKjU zjngnumkACj*3alBcO^WuI9s$thm6t>p2dSCWuxbxy+s~f%Vc@$mwHte7O;NLEeTT0 z%HwT3y0n1~##TKL$vgE`4@{9?f$=yYY1bplD$;Hj?;q~qfPoZ5NpA#d^UkLZBgt3( zZpuAM-X#aaV4nvP0EBQELkh(~2tmn!0tRyFukzQ~BRr2hqn1p?_ZPRFyqiH~39+>_Zs)AjUqB zu|G}5$iPNPq2e=T?Cuo}V}BO6jFBvpdDeSL7ByG(AIJ_9{*7zqDJJgygR`?`U%|Cj zA7&r-SjZrbfU)cidadDm4gjmtdDkh9txiwEvugIPoa?&J9g)4Sk^c?FQfp(9(uGL( zG~EXI8vJKqQIb+R>pbNQr%rzmeLjzN3VHpXg;!&GmXUj1_cZ2fPs>SKt zU~70&S-;A2g&>Qm*wS^(uR)M|QXzXjoVJ}*2y&(*Vb@l&$#Z&I-CAz*(w>zR&33a{ zh&%9>6p}k|iru9WBfapK((g3|QyR}rM$C?QiUb`VT#VrLVeb$-_lzM;RVGI-L@#a z>W?eJI33cjxFu_FM$3BfG8<6|7nb6vnl?mN-KbBv09{nfmn6#iM*UT|Aww7SO*hqh zqpPwkwss{G7SyFg=NSfzr7N-uR`c-8_Z2{;1l`#yHVH6#pIB z``G{X@}A`O=Jd|=w}`LJZ(#cVz^~T0Ks_mCT2gHfQftIMO zY*W5{UjRX2=dnhG?0iVD6`P%DSg+rCbtI;`;nBAvdc0AOqHA)fsfkD5TD|g5hDTA) zvuy}t(cl~wbLie){y1Fxamv%N9r`*3$LN*U>fVJSzKFJcF>MpSv#~$luF)Zt_u?>L zzm@d?GLA&R`#I6hx4bM;j{{A7`EJw)eGEsYq9TqFCMrR~oktxG;ZOZk34b?Qg})oF z!kwS~X#y2R?7s$Z;`pcN-#i2-sJ-QlC=akO$K8Sc%{JxGH+165BC+@4NOv*6@}CQS zueZ{@3SO5QGpmCfDBygL7VJ<;D9i8$6R^&tc?o&Ei1MG_ux>M}`cbP+HrCVqN$B|0{9Z#NwlH|ggs zzn6Yu)ZWnb67{K}>m7_xYOdUJqyG{UZYKi?p<2?U`^!#M-QT=bx*rL0_p>#KqS4|1 zFu=I#Ymp6lYJPkV2Adz>-_Ah*vOQvP!kwAD{9zOZ+`-v#P}7v6lKd1*0TuQe*-x<3 z+kihuRCb?q%lX1IzLnJo9)xv>as%}{gkOpp$H)mB8AcF;zAp1PXDox*Cv z${m*_Fr8Ck*vw1Wlbmf40!Lx4ZUf z!EFCVfSwyQ!DUgo?(H)Ydu>yace$xkn$RvvAWvoaL*{;x$@p+nw4{^~>!Dpga8?k3qno)HLLLzl30CQ!5zy*NRkxqAZ5+?qdfwxU}cg!7%A zlDahsadDxvvhZPlqwPN`2Pn!>z+V0t3V4Rjf3QzIF22lz(*Jx0 zrA*C#<6xeOJ8^9TIo=fa+jo*qXqe|IY}T0evQcs-DWSwjGdGJT@yJE@W=g7aKD7jS zhQ%06?xy$LE6!?W!@L+YHcY=KA{X6dcbeYQQ&?-sA{VRE@92xOsFRIL?~(mnrhjn`T&I#l#rQecKZ3dJxs0!z`**=yu5iB3P)`;Rx;11mwfK4u z4P*%GVD=cof>S9O>~pWw8yV^6cQ=gmuRN3OGO~s2QOq0cGl2pPng*`28$AjB1XsAo zr}(i4)Ix?w;-rnyUs_kAu~Vp}@x07Y)srKa2mSlbv@#)vxtW~R9Ah=%HiNO+O{gPy zGsI4P{%E>tPZ2qe_@b}XT?EeonlKl&dfI$}rdTrfkgo~Z+X)UNFgemR!`}tJ?Etn` zFtWbL6#?u^$Y%5&=Nf=jdIne<8M+0gnMcH)!*BIg=R1Lb*!s#Lz;(&5C%6Bp1K6+a z{C^DrWl#P8*n1D~D60K^eA6I6)`?0WfJo4&5k#T^O$=ZbHZThth=pQZP(6d|CpzxO?7W=j&=z25)#KKBpLLw4qz zGpC5EE#u0)v=Rv_&vK)0s1_$lVf}Mii-g2aLx@Bk=u4 zD**>i=eHVfF35u`WoLkz5?)w%wcnWJG%oxF^Zj*xB=emo$lI-`cUVua-_*yNN|Nfj?+d{np!XKsX6DoZ-+?r+7-Ncs4@J> z(T#3!L)m&)J3PU&U3_MC{CVyqxSxen-|}tq_69e=(Qj*+**X)ykaj0!=5BDSa7%V7 z>T+oBI=UV)s{>f-7zZH*qFc>^+S$ zEhj4gjR^T<+}YAw8kayVhG#f9a`U!ctQHU9BWAk?Znt~BU72bL4oF6fBDh;p${vUR zW+!wLps~{XsX#l+JG{*jS2VZc!J&0B@wK}bu>KZ(LfbIDh5`v@d($Fj0AFi(&<7zu zfGgmTFyieD;_Fq^z7vs+1oB;0Ms!`P=Pe<+t_8YYaI1l?<1tAsC5oOlPoQZ1*7Inm z_JrIX;1RFJF#um^%YhGj_fQ9ZQeA`LT?~a@5Tg&)Jo^)59NHS??h1QuoeSQY59Q++ zLicYd4s5~|Z()OApYTV?ufS0ohey5W0-|#0r%=!(Yof3Rr$Qv| zH~7(QxX_K(K3|KhM*L{&5I-uVYn`%!0eIGljtSV_DtOYY)#OQkQ&s!M5Fal?$L2lF zd8==dC_~|Ss9OJ)cin_I{ya){aFZ7n z@0Fb%nm?ZRQt4m(SomfScgxf&J1F1B)Edd5uQ&4nE|+@QA|h2gHc# zqDS=6xg1d)M+BwLCPw6+*~Ewrc5XPLZ6YN!qSR%v=!Cgq-0xG|9Uwv~XgH)U=8%4K zufqkKA+y>qEMPBxf_q(WvcuU;b+{k8=LGR8jxey|xsax2XsuuAtHsav#=nA{p3&Fa zx|9xD25Rw@s@D2|>Wx3Z6EM)*x&pEDpc2OQ5CKP5_4WbzAdk zgizz81r%yX?IYYwKbA{0U@udu7 zGaGd$zBk1g(!s=wtQcNnQzqg;KZo^~M94QE?u1>`5P97{OCqn%_nNYyaq}C?hNfqP zWkUmQFl9s6FjdHg_8ZLYx8tN=WLszFG{xelj1iA4;20Asqn*oI!q^mdK{)T26 zlJBu;SSJWA7GlgHhpoqj7ys29_3_UAFV6t^pX7*`R;4(Z`r4K}(TjLW^=0yzVn+Q1 z`FtOrmx$+w$%zRt=HY`7PJpAQQ+|CeO2Gerdz06g{}h0eEs_${LM-A~RnVpFR9fqZv54egqleW==Aj zsbu+}wPj>8Z#=;<-YaVwZ!`mbYClqpW^NLh0I*b(UQjBgcLA3KZ(I%hh{^XZ;Cgub z&-5->B9q0)y$eLopiTRq3$FDC4u+|3yi>pP7vh0d`nW`Hu0e_VNb#^yzaNw*bzv*m zdmuL|0Q)N-$#1H9?pLU{PGnFMml@Q=*uNh^Foz1vy7bw+dhpBv&FV`igTf%t=HHX? zqu41AdzC7LE6!wR1kc?{^~O=vWs&GcL9$bLXx{=oM!k7oI%uzGi{;hog$CRkkIS6_ z|Lk2-xmUmd??gV<`7~w;zIp3oM$XI3(X6G$M_A_sd}Q#=cOnxTxIKK!C91y55+Nqq zj;^tJeUS}vhx+P%PD~MMfP8N=+h2vdg%ZDUACKj#WSdN>-gAZQg^pTbDtp+;GBfc*p%P;J`Jiim%s^-oo`Q_EmDkjzDr@htQ9N?th7j$+mk-lJQ^VMhFK+yZZm`I!K&PX%A6+RQ0u+iL{>%w)#+d?>b+PlVbUt~rWOWzG{AnV#I z&(AYW*OO3up`Htp((FDPzT2Wt>_+c&`>@bw@U=3X)e+ooKLxcrMeVnx*NJi2a19|; zTp`i!R(z6i4{_zg@(2R7)*=mTMlfYAAA;8EhwvjntD8^Exm*;no?(21qw^e6cyy3? zAs)pj%MvXX3LOvaY{%c8@9by?>+Lb=sTi0e~U4P(0sp;h{R>^quk8O9=S*3*IBNZLl2<1hRieOb2zF6vi`XmbD(G z>AvgUyC}Ss6Y zh?|eBLk-->`zw&zP(E{OeLRr+8IQl1iji+JWodM|)j*b}Hj<^Os{n!ckFqp4zHA^% zD>}vSjiGAC8VYg{`XND|T+)Q(=_ZAX7AZ>`AyUj`{KK-eR}RyPCN!eILOQspgCQMs z{>q3R8r#H(o;ji6h!%*H(1=cvx{bM>3T(gWCm5QI?o$|GU~t3r`sk1`tlyBQIjI9C zLmIFS?#Z}2Xefg{87%=6>+sc>CVKt7mA(EJ8cIs}2?8ucuE|=F8yZ0>Sj zVMWY;cV8v8|DAo+wyE))h8{a1?-`*&F;#^I7H<>ldH&V* zh+k{}CBUq}O=*DUDN$2RUW+YYO?|aUW#>}iCf4_pqNs~=vsh0DD9PK zaUB*{lfIt)@tLZfQxoV%PaXo>_`03=2+?-WF3j`H6kNfghw!ZA>(FG2=$|leI;RG8 zrKwtv8aW7`bv?i5Se)8s4j@gR)1HRCQ!vbZ?6sJ-I%3gSNk_DqZ;FDio?wWA zTLD8hXE;iKz;KIWE23K*9h8(l>?8``R|-d~AgJgeh_VNG#QBC-={&~yjElB}a0>!` z$XxDBq%gz*w#j=pdLrdM$B?K(ML6X}J_N0Y?!u2C=$_ycb3CGm^>X7Q5Oh0{LV^yN zC3xhjqW<&oDC<8vT>ryJ6wxvY@PPX73Ds}MlgK%pIhyq#bI>W&e8TEr8eM)4)j#RM2p5Bu} zjf@F5vQrcSx4MuILF>DyT29hDK2a}cq$pzT9&Y4yq!B)?F^-o#J_G+H zGZ3ktILy#Zr2JO1Av`+5xy*V7k_njY32qY}ei5E!hr`zosj%vY{`mvA?)T2xDmidO zf2jdH5ITWI1Q>yG5tT(~1nPS_8hSx0is?O|Oe2}`fmWc5RVVVI4ocjxiH4aR;rl}L zgm-m|@k_v7%J=ze*+Cxsk=LwoYW<4}v`y55oGC;&RQD=EV5Tad`WV^j!n=q#>I}U~ zn4SM)T|3J%UTs2iN+}-=CfcS23lNM0ccUqfwZWBUjb3yB2<$XR&KwKFr>9&lQwJhd zaFBsGbd#uDqFqXChy@>l&u-Hu{0cnl?f8MXMb*CZ9|aCC(A)soA)CC}v4qo`^)Xw) z=I(f#HXTA~Xd`+@`Hxl|toGEOulU~Jn6*i;&D*RWJ|Bfe_=$4>5*^w#n52+OS{Kw< zkn=Y2;oMfZ^W;pQIg%P_FcG}5mBm(7UX8q%eDByym?HKlu~nC^MM5lAdrmf@sCU=QRzB-b&QSNU(2Cz6lHxtx`;7FjQ9b3BJ9;Z zhVm5dz0vnj$g=B^hj`r? zU8j`m_<*J`O8Fkv16GLCP@(@@ycsruqEBdnKD2{@?qu*o6@=|*pnoHIC>A0QwaP=j z9!6Mye}*-KIz<4)EqeCz@o>wH_z1!v5LJE`xB&jzg}m9G4THdFd%$)tM)LC^&Bxo1 z)CCdb+xsHxX0?|Lm*#-^J^ahSw+n;70`J?*wt27V;eQ5+lsmL^XotDc3j+%J*g^DB zh}hTent|gSbY9v|q5r3v`kS@Q zssG?YG{qq75-C<9P3nYRQ4M|>-h#bwc;EUbUIS9ivsYS3opz&C^AyHHkC8ltr$XaX z8pLgejuMRE;6OfKI}ABzo=w{eNuJ$~c*HwUp*_2gQq~pc!?u#-0!KWaGBXv?(H+Y> zqXhotIg10%xNo7WI>%zqJ)npvE)MNkPMWTW{ww7j(GsXeG?TA54myetF%C~M#e<7F zvA4SL%1PKzb}JQ^<{z^_#G!b0@P%aGyki~F)h(dYaW9BxP&D@3eM;E}XvNbz11Zow zeG4xjygJ;l-| zfTL@bnp-!!qrObcVZtZOEw7lHBr_CWSM&!nCc5BO0*YC!PgZM(9{^QoMByOO2|O1B zv!;~2iv=;4F}w;Md%8Ut>{Fg?{#vnEWNRE=u?%9(@=Ajl?$fX%Pp0ZGeXY&s5~*Wq4pjofx}fN}Su2#+ zf}r{B{?lO%=jpxaD9)DP;?^t(ovZAhxc6}`zd|k;luTv`E^bdbo|yACb2RHB<0Eic zC*vc7i(7)s(59wzS!|)V1j8+LCY`>~_5L@-g|Qw1`p9?IVA2GFw|n1Qf@fAl&=^QI zpF}Q@0tgJH>;Ys6gbfCpp}&3x<%6B`y-q$pA@=Qd7NK*cZR9RXlPosqiu@w*^uCm4 z_|dCSHZURr31_4K4v)b2VU(XWOrrc1Q>lc$8A|9eS4SwJTcr~E{z8&Q^`sGE0bQ0i?(=gMn*nhBlr+^$==f4iNbY2_u%&Vh`u>TTT_INjr&p^W&AYq;=BytFP zEiPQ4N~vm8&B(CNe|)J<(2kQ zEYvp~lvCL+GY$)qe!upz#Xt8DB$&{y7p*_u*_50)|csR;j`2 z-08`){~2K+1T6(^5Evu09bA9763`~-PGJkal)0!x+yZabJG{gz99+LsfX6HL%zrDg zs<4PKI@91xT1dV8${L z$`;gDk|nnm!vqGZP;*z$-X8!_G8ogfS~_ddT314B#rev>=<;sC=qRw%`@G0|dANz$ zoI5hv6(6h)Ea6y-9CTnQB8V{{JOs5fG4MPg`}sF@3*he-!{uGP3U-%Hx54cm$+;0* z;{qUU4Ss2=S7RlD2EK&xlP$YfvKzGS)#+1mx4ODi+pYi?`oaLK zb1!JSs?=dYobQG0Ea(L8Evhk@P-=#dnpYJ^o(Ce%=`{w|5WbXeP$ z$M^ytf|X2a#>;ZZwQ*yPI`nt&DHt4d)Oi8K(`!`Ex_F1DD$y9X}nf=8G z#9(1F5HZl`w}waZFMa1ErV3RG;b_sHwau;#P;I`vpfHkB%09uoY6GA>Wj#By;4g8Fn(imhSBaH{DbSLkABAE8Oep}#lukp^T2K|wXM zxVrJOh)rTmQA@07E(x3*n@78yL+$P@Ku>~IxucS2uYzyaz`YnVMHiD7K-!NJ7i!GE z|JlFTv#o%qL&c#PN_eVW0m=XttbS-Ll)p-HTHBys_#tM-t)B7`=UB;~DUkC=xQ$NO) zqrdT;{17S~;8t;senJ3OlbiL=#nB_sJ$f`14*gNT1Gc5AcXFZsWHbSHiaP*^QLl8p z>>W_3S2MvoUG;J~OG$OV*0HB4%MW!rga_|* z_za#7Imv`f`@-Tj4z0QJX5koj^M#kS(RK$ivoC9dV6nRcXYuQ=2ec9+bG1V>a_v3u z6@~hM9lVmpi~dl5$}I4Ggiz<%?>Yi`iMhdCai7rm5?4cs`UzXPvNO;tv9uTIAMI~? zX&XkH^7q7k)34kkztJxd54HMj+o4AhQU-Ap7<5}~*9W2I5e6ek$^ z@${U;WT7?&iLn#!;yWMjcUd1X>Q_6!gg$5#+@igQn_m5KYz$Q!2KCs45zX7tavL^3 zX{ZW&U58K4cKVh3xR*qU3s6FaNVf|D%jZbdbCFGN9OF^Lmmbo0D`nH#77A2&*(JV) zhzshKAj|aRCqqqs(M&YS;iZYj_V29=dPmKKD^1MKd9+m*75J>XP&Ir8=%bIaH-jOx zzn5zT3v#Egf1WqB%S;Q~*5jw%!G;aL#_>b8!CjhQ5q1n4Y(dEDt zSbwLl_YAhIIcgjI)$r$0x5=*(eq?xtjL6(qbJc~$?5ikE(Rhcr6r;W zE|ydH5VVd&t-w99i58-X0Lo(oE183xSJoS~!2TQM{paHmrGqKeDC1AZn>GaEF-Z}+ z6wi@3cQdim&jrGOZK2l{P4@(g}JIJ1yD z+}C>>Tvn^zyVFbYnllW10~tv*XE<0&QZtZF+qEBah9}P*t7^L!15_bE#5r-U(*(8W zvv!Tce$tY5NHWi7ojx18;q^lh@xVQ^)y=o3@Wuv9SuqLEgqON-6IQrRfGiQ@r#*K@ z^6V!A0w`if!$E*x9y^1W1eLlz7KME&7ojSS;G;(f0A+1XZ9mW2Ol&))T-f*LOh&(- z4EK97Szv8HROQonGj9~*2L-^+`bou}gr5M7ieEW=&QOw~?07vxy+q3^z|9#d( z)J>NszLc9#5BuL9{byWX)<(i!`;owYiRf~zUHbym^+5F4kWgH!v$>Ff4StV{t} zKD)(|J0Mx{9mUt&9;)v)6}iRAU|b1*Dye{f4RXnqNrcak96qW|)sY)zuwRl(E{ z+8rYhWvae*M;&zJ)Od`4iui6wAy#sZ*j&Rvx>sX1U>z(lKR`6Db@lti5CkHhgc=1a zW8z&msxx{uwI?Lh*dnU0PZ@c5DMee z=NOIAcIXPDGSp&Vaa5^~l@-Y_u{XwUjF>Hsl40-C~=d=%Kum#`bp zzP>>LZ!nYsCI2hWQ7~h}k}>v5r*E*aCCoEdAl3(j7v?;M1H^tPMK7Hib|7XLdvyfs zF67Ls9DW{Ovmh9~RWH)Gd;WG#D6bcJNaFr(u>>#aBPbZ#M4k*0URbv|Z}2g7hj+(PwsAsrh4 zm;|Z@%0|Qb*rZ@Er(35_d9koh+*h1@eF#4$!X)=CX<+ z);)X&O2mCdF;WbLs=7~5E$CkXwRyFKN#wpN(7pl~!ntUp=D-5TXT62H%y-6O{wVfO znChOG^Pr^2dT@vEEZVgSV+Sh}%wZwIhDPFS+&02(P-8|Dm@uLp9J4nb$Xn0&&EX|h^V7BdWK-Qy<{%Dl3xS84Uq8i1VGe;&<*G% z7zz+zB$Tk%p&tn_2ZBlLH;jn;%>Xi3C2=|yLK+aBdccEwxuNvCT8X29+0-8s@`KI# z1L9X63*BeDh{C0Kq3Xg+k%)7sUymo!ZDdI(?y3;Kl5J7(z7_9==3n+c^G>S!#LyZ) zfkdIgcNreA#t%*~*LWbFM9$gF(X2fOwAA}OcPM|i2rXSvca9{Zy zw%L4_#>Ndx)(=CjDDWHULR``SzYP!Jx96sjIsjcqQYZIo;*&?5)Knnhf4#_Us~8Dqvx9ib8C&_jRY_>EwQ z7?+HLIJAjSeI3DHLY$kZEo~eJu@xAY8{bPK*F*~ zqp!Oj(NQuBKqeZ+HXFsxKr!jB*4O)N3Wa>#zWfLL_fbF6_I3g~p_C(Rin$0g_^8cI zw)xyY+o~5V`{^wD?=@UB#;TyK-^)rp* zt3lyQOQoh!$~8EEKgBAy%|sIIZ6$+d6P#rc^};;wa28_bVbMfrD6SQxR)f=2-`#?l zvn}h7DbhRG!a<@s;X|t33bqkG0Kg9I_4C@IiQrJ$C#fM#*9-Bicdw#Jhzt$|?g(qX zxOZ3?)`@352}QsiC9i{}2E@)Bi4HS9i6bzZo8?E%hQR6H7&A)?-aJV(#^f)@-BztMYIJT{#% z0|OBvsy{+R^~LbKC}`^X_T)$1)^P@8h$uM&i+Y7;U?86LmMD@{;eST}jnF}z@nOe5 z8X4-F`DSFOfs71=J`YF(M9IW;(jSNiwaDEHU;Ju3C{zLABf>0227tOU{LNV4OAX%R6?%RA6>;c7lT&H{)y#BJg^TsV)y!m z+zr7H|g%BMIq#K4r&xAW*2gSeA1Z(=28eJYe!M``3iFo z|H=3Wyj632WFVirMW)%6i1<&to1>=`zZ#+tZ~sIIjffm<)y>#hrMz0gq(nTzY8Nm` zD0(Yp*W+Xv2hlu#A|%ce;;iNS?CJgWJ9>vtVz=m%sFZ!m>Sc(wVc3J0Vh;|+^d{^f zY)pA`Hv}EH&q&dqT`i8-Tlet7frk-=65+d2pm&s9n}ZBdavn-TeCesgVboB2^kMw` zJ$V@I+2h8!ue9fkDC)Q*YX-L2o*h2T&B^3A|;PJb^H{ zgVzdGcd=P2kJPzVR(0cdP5$Ew@ zyaZD^iz3$VnInn88AvhCW4y>Tdl5d5mw(he)YGA&r{QzywW~#s5)UomR^rbH&~|VDY$Ioro<8U z)5ZYAOB$YSkY`j^;N}Qd_!ZenvF>_D?z(9?%Sx`BI5s!dow@8Hl)b2LJZy!10~3@t zFHI=hhG2lfO6ASf%9|(ly4cmMY@7SLKs^4&@kRwVVZMZEHKbFZW7aVP?X&kd#$SAm zM8#f@|2yV;Tww12*&h)s<}?n+pbTJ?1B3_q!lpc2p|5R4 zSi6zuL7!Fu(LKn8&*jK%+Q@9)+FJnQ&^&Gs6F#&7UO*sLh=7v_h@quQWc*LV|4jVPQ@#BP7c#EzpzNx+Si5&typo(S zaRQ8$PmEFCOqhnJg$x^fS+*FI>uel=x5vU9s8e3p--+@j8n_hY;}aM54T^&90KYMI z7mvy^9~L}!jZ*#%JDK}PB04;MFdphLv}tfYdrKW20Pj^Vh>=J5qTdZ|X+OB&Ac|Q~ zUKHCGS&T3GBo^C)OAXbtDh+7H;sW^&TY*}A%?_GA*Xn~xBdM>IH|1N5cD zd_llpt3Rs>26bvv4C>WQFsM7>3i|gM)b?mPSXlUL4C?2nM2QlW#^mXW&`aUl9U~Z~lpD??ScFVu^w^5i&y9 zH*`!w^M8??@RR(;azfv84djF$uO{*F9?-@;n>Zj|7@Km!B+!AzEU1vt*de3I18F}R z1*UJ(u$ziC>8d}0XVB$C2edO}EE zxDtv4p@8v|pO26jzJ$#XOu4!eDt(XR5i#sTq2m9Tyl`=aDKEUm8KO6TMxvl9pXWo+ zdT@}SGNrum5xfLb=8GcMOO1~}Z*E75L2r%`nPykQ@`=~ilZh0Eg{KF1S#Z5XlLFqd zQ>#Th{vQL2|AXe?W?|taF(s9H;=&k`QW{?4D)rQbG1}@%J$a!`{3b56#Wqc7i9q92 zzJP*)UE4sz6F@Xi{aB?u8v+GtTj|^#&?YCNOf^2LaEMT8ucz;0QqI&=m_}*yc{LP( zp~8IXmuc!b4&P8*LzVN6RNnvbR)ud!%tR3w{w~2=OZ;aJ??{o8A#-?T0o3OCPz3GS6$k^3{WLM^L9J&Hc56 z@=$u;CkjG)T4>ieWc-VKM1rB@#_+F7<-3h~`yI`N^AT4X-=@@>vZn>r0Bt{QBnh1l zs(BA(CmRKxuzltgKTzofFM@b3j!J@KmVe zyns$|UhclNg>>Y?NaT_7n{|jyMt?4hs&3bcGgSzb7SF*;2j?;#w zO2=utvs!U)8xe`^-swGH#{)0S)AR6K2$@M{NwsG!nu-lp_Y;m??AbFS9J zLrCW56%fIde?GH$m1iA3gWt}LdW~0(rR-wJJ7^NR4>^&8uEs~0cDqpMlM5k43O5*o zVeqXMeD`_&_0cX_H|cZ6(k1KcbcF96N{WU-kh}LSoqcf(96QX5aUXQ}h9fx3CVk8}q9Pge zxWG36t`=|@YV?m@!#Jp(_PhiXoAiI2D7+P7QT#h0V!>~9KL`|g3}0gz{~95V2~GH{ zMW z8r%a^%|kRP83ib3qD$*(7iTHuM=D@_Ot5e~S_EQgFDM+|Aqz^U^3ybJ<~gWGjXSD( zR}d|t&}@(BkHu9&BTmQ$JQ~CaO&RoFVSy+SicTx&YZ8*>o zyge0^ZwvIsA9;Q3?7FRFF@k%>!ahI#Bs(I;wK^Dhp%BrK-YF$|L z5o^e@<)b-FF*ib{fR~td+D(hV75^U!`9wUDOv$hBbi;5(P@{k7m_bzoBw^Gs%R5Jn zTTRyDsx^|^xT;rWG3?sk*<2eC8X`EHKsZusd@FY1_cH;nJ@?$$GHT z4%XG1f6n8dGdxFPV2ACqwpKwU_s%T_50aVA2S2H(fZDSaIJ+#t<-_`tj(4J-ccj3TI2aC&JA0) zZSHnz@q)Fe#dldyjaiT>4%im`R*c1-b3?Yfo3tVaT{#0ujjDmT+w)U1S1N2ShBuin zE2kOi6!mOby>A%eI}4h7ihgqruWew6&YC%{>oIE5xuxh5>0I8f@`UzBdV%)k^59-F zE|$C~dNcPWuBhT`Cwku>3;GThY+!NH5}v@Eg|uq};nM=DAWMcomNH5J(U3>Jk6$4@ zd;1c6LkhQpvh0jlHvC+NiAOIoKTfNGN={#0Vrx}VV)G7YjZV;WnW7DcySl04Om}s36R#$Mq#Dp8x?`7#jx8uf zXY#Xq#JgL8ikot-J3hEBa8hs`W>I=R`~s^?`&Jm^1lQ6EeP%>o2qAU>LU0x>*i702 zGId6LUHAFgJ(5%sTRga0&%7I(R;0lfOAykvjrsyvJu85&4VQ)7MILbT>1z$CkKX1H zY+ql(nbWC~Qvn19YS-O{vNSMgD0v>9g?vc==3!91o3K(&tt$f+8a%~_e{u~r>Unbw zo`PmMhJKW0@)HY?X7Ur;_mQ8dXRjW`fTH<{mZ;5{^BTG0xvh*Vxn@a{-duE6D~rKP zRQJmSwI3u)5n>_8TbOKw$zn8MCmw7T#ZJ8Va$|Pl#yJK%k%#*IThI@2^g zxbSx(E+AN>>6r0b;h6Ev^GV(7(bWBB{gEr^n9)7XJ(3>&ppNuqpm!*=V;LI8lx4fR z!@nU&{U4ze4N`xze&bctOxg!v=2D>W3{qc2cKq&XlKR`7-p8L2UEZw!GeMC0ffEeU z-XQcNR_>*jxN^A>{MBtpX*l}}Tgur_KJ#CmeJk`8zyh3#9x>iZn4dcb?a`7Rr?Zv5 zW)*g#P!!p@6wLbIl@hMnscnit0C6}aG>y)rflDa{84VZ1NaOg^f6WY#XiOan7e*!y zPqS;Ef}!vnjfFb~u3<4;FyiOz`9xq&?b&^J)4YUi0M0KuXwP_vRA-@(?E`{=v|L1$ zDoKBNeuhc_1@VwU5T#n&=XzEUOvcg?k*5?-HsQXeEh4Q5THpiy1}G4D>R~Ip5Y?#K z3MLc2&y5D*rO!v<7H1f@*nnGl1GlIX>cBM|2*6v<&+*coEJm;c)%k%Pp&|ZrtoxD3 zUbycFuJiL`H$+BH+(m^ixK!zHAfMK65nq;^Uip^5n5`;Hy!{0dI#(j024R2K#x#M0 zYM<+9@ePe}YE|^G_q9HAg<#PLcPC=xn#Ngnz)_E1x$QM63@~R=DR0gacX1|ZK*@;i zuGX-fRLbe6R_F^U<)4X>i1~w4B2M9T(NowPJ%~Wh0Gzi};G5jKIp-jbPKH`sWuj*q z{LZ^K)dD`KHA?80EaTztm*-zC+K5KoH{1!aNElJ4G@7dh7+Xx1;b4{+`yNXZv-Rk+ zP|diDQv&Q9Tuo3rV7Ztu&n%b;_GZE_UWzC;>)QZqiNIXx@S5m~mrj$n=&_h!3BXcc z0|4_am1FSE0_`qj?cBzonTi0p(#$LS|EYMcJnyjoaiu2^&p1N35B z6orIvAYxSi8IbMNHc%wl0s{k|{r8GBG%0smy&sLss;RZ4EgOAn`Zt(1vGj!0sluOOS{4Md5Fj1Mxrm{w*VAVS7qc21 zFn!h`e)a5jrvGN;r8;D{jp3<6Lm}*02uu6Y(%dsGCDJDMw2qgn*j>(i) z4zOq2iByo^h=0Kc#J}i{EOAdUk59}QDT-LT8z13{@O7jZSA;e^(#sLCr*gK8ucDm2 zGQAY<&?csEJVW$p&ML@t$&4W~cS?t4sTSXm6n)2?SdetV+^RVjidb+pAl`g~TI+8k zOIu@JTXYAHvAQIJ$2hTNn8(=M!sIa);v@gc6G#elkDyc!KF&eb>K{)vowt|M4ZvbV zA*u2l!F|P@c!O^yz=>LY#`~fBil;FMRqF(Sq{*#3$C^B=$X^HsLtGj?8T=XRQmc3C zAnz+~sYY&$-8%#K6*F*OF$4D%GYYE*2%e*)`WBKbxUv{vTv<$yxU$%&XCFO?%0dk~ z&>%wn;L73_{m4^T3J>ZKoL(hZjLQUz(PoG+elS>!(BZr7 zAL2H_>0QNoS!KbIgHT2U^NTYOI0=7*?=q)%DGPWvF9$WKqb=}@$EO>imMKv^-e%9MuSt|K`H(#WyC`Jb=XwP30&}R z9%C2ALKpCvbh_bd7wC;(P@O};ppdjD(1kIeZouP5GDh5vKq`ViohXApwbXmPMBZmd z0Q&BGA_%VtT4G@R!N%PG&_{9iw~Jm1@?WmDP%7ltg$8@%kke4e7_#kcq9FpvWDNY} z3cO5j#=w7##TGYt#qjUyBZqGe&5ogEL=WveF|;Igg`5pD3SNT|Uisqhjd1+oCPp}Y z2{kTHNykbo%%oQT*hgR%qdx!`&a1aX`W?>`{!fNh>rZW<=@9OPNqTO^4K-k2wcR(9 zO8ly?_w(1{DnUCaq(}i^d}q$-?lyoi^FTyN$-}fo+agP2pe!G{kb0U>U|s}WIh*w&B$;xW#96btM{P0pOh2_QlOi1MEZA2#aN zwvAcf;z$8RaaaIR446@j02MG$iU$^JDOunShX@=(*K6mXu?7((k08dV9D#^W;jcwU zB47g~5C?x(0uc(Y$HEK^@kD0<6&gw)IyxwU7%LFfZ>dX0T>u0 zGYw}&jS2{N^dT;+wgeyWe00S5SW$tO=_ex?9KnqH3=DD=EpG!b#cUNN<11Jo4ogWc z56dO3MJW+Uqq-!w+O!B`2#%1zMoyPI&6qAmBeZ9a4$1r0f_oTo5a*#E^g*Y!Z_O4(FAl=hjTl#geMFml^;4sN^G;Wiw!$s?deV7pUe zQYU(Cm8p$aPI`>w3*uO#PC+3Yc^PDYnxemXD=381)SN!zOh1oQd8QvmdiYGcdV@ZA zY-9v|aDd*c3>oB$c$Qy{$5(`^f^4#o4)@0v z)q~Bt9|C@ZQdgwv0SriL^ig*SVnOx3V-gE#2L!RuAMn5+6P^-e!bk*q2?>)sJYbLr zZG|2}vxp;BcRyEk(Go5ZAOT5)rz-G565)iXV?PYG_draOFO0^K1A!yEhj1hiBR=N8 z(m-Y-RCy|6LGB2&1u>B9%o&~NYN=;F6~dGsqeX34BgoLF4(F^tAVXxg9irR$OSxmc zsgfcf`15~+zrb?uzF?k++it;>2@$;Ta}GKD{$oZS$~}u`{W=s;HSiU%3!pk`7YHJZ zqX}jrd^CGNjYBHRmS4$cz-!ojQxX=#fJ~s-Ljad*PL>;Pm{L+h9cYEx1&0?xw0lu5 z8qxmkKCZ$>{n8Q>O_e_`&Q>X>GDMHd^EDmkYoq>EO$gn}^OYNc0o$X#hUm7G+L|urU|t6(ceK)1(ii7!DLDz3U{qU7TC&` zz(j2LQHT;Nu}S+f93Njomk|+o=fpUjjF{{JOSpppe2Y(HiNSPc+ zW?S-&?ETnB%#fw@(j{1IBa|r_Gzd%+oZ5wfIJj3N`#B5Uv3X{vL)>@D0rwQ$3Mnzc!9=0m=r1%_}1|5HNK|BUGGc&*20;P?#u#WN6gZ6-)G zA>;;)V}nPk0}c&hwt9-Y$I~ueDf=8S)2=Lav|cX!LMcltDgDl)T1oEeF!xE~+;*rE z_n0r?12F4{Pn5(twQBx>B-Jw~)#C2pITi!K6pZfm2SBG$3^JFQ+Ivunk$xTE-y>MT z*dU1i;;E0nVf3;wqg|tOZH~Yc9cu@Rua!kE4XQvwa8NG65gyN;G?v*(Q@zPe8 z_DUT^9}t(tsBv3MFS5AW+g^#G%6}TZg$fUmHmz%yd=-nqBUpm0U5o)#486rEiIfjY0a;AoG7$f{ApTq6e?rHh?O=o7z4C@6 zRS1GHuF?SIW!CpDYiD6KJOBdABX&(BJ)d)e26fZAB+5>GM{%! znbl&9$iq2YoA$dJi+^G>qo`A}r8>0InV3bjt1S)ckq)nT!-bvq5=e&@mNEw{5%H2QGecr%mllD>-Eea%LLpD6%i4uYEFCvk`w$L!M}c?3*8Hsf zxXG#k1VcRK3ecFNI)EHj&Yu1ZXjFzbwV+wN&$^F5AWzH$9*WF|Li1sS`Jjpi5U5i~ zNF%c5RcU(ZeUuDe4^8QM)z@>G6JCpb%Rr6r*pR({l2+j&p^f@!?g1-Ei zKrEt{0oWIy2&idCSa`e_4U)L79%gc|<4M+C5<6LX*E=KxUC*~{f)TIP)6eH!7#zYtn;-H@ z+SQy7K67#D>^{5<3+vm}>MeRuz9mg-q`sYych4&&{~b21snzrLnEdz2Lf)-bd&rmZ zA7tKS)5KN|-B(4dvj7V>Yy(-Ssc+mIC8N-;9-P(0~Sj)mMZ zT98~YnVfm=5@cfkhSA}9fj&Tor(-+D0O{4wFd6c9LTFDgL(~EOgrMn^>#4xcbStF#`|#lIfF&ttIG#CBG8O~5 zq_u4si7JZ5ZKp#;7wQX1jH->$85;C2jXkhm?185fxd-$n`>cK3M4#^|=bT6O*(Fj! zw-9ZGvWMAcN=CTSfwm3%yLpn)Uy}~`m!%@1MR@KGDHe%^{6Gl%8!W=|T}=#VU6~My zlsfy?HO%Fm= zl7gG@h#-6vs=??JF;`%;?d=rw4Kar!h|Ni;K)dv@&~A^y3^&stzrit-oW zndN_&T8HX>p#er-pp#j#e1){-J0P^L@==FqM==CErr<}w_oeIrL?O_gz(q&OllRDq zA3(*@&QLT7iSJLk$U&L6@TA|!0@`j9r37w>keu$jxd~9cYmWrg#YbDBL7L`0`*{oD z`pTUOK-W5J7tW9VhSnT99}*x1PLq~;^LG+F*J?ZTdn0pU&6u@|GwkjHdCr+AVe_7< zr$X0U;@ERY72frQeF2fMCvLXBh!4od!s#4m6>Adm{IP4%USWP`v`fc_)E zt=KAf5KuN3lX2TmxHcqjUM27lK0ir(Uc+UYhwu26inDZK9)J)9EDv*XBxF7x#arDW zkCJ6#L&!Y(GZQj*!jryt0?sYeokOY|m&|G6WH@)qlkxsR6CAhSYk=bu0gkQUy#Pb> zGZr+r1Wu7~_{e(#4%;lLpa& zjOh!30k;e(5)z%fbl~L!1s$fnb=b~YMuX>$+QEqch==RDgxMY8>CXYzcRx1|LBgp> z1QZFTr12qWy^dJ|61L?Na}Ld75o@*a5kiJIQP$8i+$l4k6NMQdTDEmRlEcB)W=11-$a<~~H}Vxyj7D5CGv8=rgwaS3B!?S$S`AT^%L8%r6@}2q0VJc5i$aa)3C2jO znWI_nGaBg_Oz9{-;trKzPp(=c=JjDwFf#eiNg0lpK0X7-XW)Nv21o=ahvS714<<$i z4VeO+T!%E4E`otHi>o3a_9yw;x7715>jvW7sr3cJWgVADx0&ziAK>oT0bU0Jv-*7B zT-c}gOoW4SQsO5%Xp0Q@(-fBa<3Wzo4m(qYwx>$eYRKn=TOJ7K97f1!ZF9a>rO#Vz zkmNvNoAnQbD$7>18<+?DRm4V7LtX&4&~!(&A7Z*WZi6Cs#YjL5!0Jbupu6wmL(uw( z#f09s^NAGs^`eONV&fx->DD5}pvW)5qZoy^M>^$mJ)_9-eqLhvTHP`R=)JQOA~|ZJ z{D7BNNlW+(2!=WUsWj!TLcaf3_X|ez9 zR8xx`m=-qKpvW&IMSg?uhBHj)uMbNL(c@4_>yOI|L5^<%O&39qZ`K!WFvxMpnoi8x zFQs9f`rg_O%T+}%jGF} zxu_vQoxDTjps_960RR@EKmg(4Lj<*jJ!-hIf7&cJw#RQ0)a&1iB&bOoYsd8WZvy4q zQ4-Y8)EESHz5X_nn>n;&^cUgjm2OeWzrr;G#T8|Hc;7(Mx>vfM19cTiTMwCquC1Mi zSNP=cFJ~EF!p#hd>+3e-Iv#f1i#oM+2r{^gHh+U=akA=|43L_z*n=Xl%0?V$ej^I| z68KE7O{cOj>>lwUvqqpE;edsZQ^Va*z5eq})MC<^n`g_pIvs&o+X#R?gaG?g)C22I z0d1*$e+v3(0&c9%Wm$kstAy+ep!)##jiB=r93kza@29avq%P2Ogs z+~f~``ENn*m)Au>?~3aiL+{&q{Q>CRgAxEKX zLWUmXnSjl%&H^q&FH&DJ#{@lZy3wz$HyNOZu2V)B0Z#`^ARkWYMW4gyrG!1NArVR| z!IW$90NC^VA^Zr~a|ND6PBwEiYYXEe@cfIAVgx+xATz%~VTQJckYwNAB4rAfAs;fP zU`i|t2Caia^&k1s$k~ApQ2(>ckursIjr#G~3YmGE$lUL`+|#=>s{S8D{^nrHV|)l& z1E^K@|9(Dc$eAgta2WLic5XomVJ9-L!Xq8WPjPS)9rqpozsL+8AJcz)2B2R9bMawN zt+@}N6r`_H`-B&16tdcLrh+`14*eX2^da##?q{mpT$Kz;?eoJz`$h*34)vRTP`?qX zH&D2#0VyiTJCsa?9!{D*%pFC=`C#Xf@4G&Q>~{nWR|GPUS78-sS@Pgv>P_nCnM^p& zzaBq7l7PDs_Y#u4oiYVb^b40sz=7j`P}B%(^OzEYf~!9u0Ty`gNk|hE+$nqrTE{X= zK+%)=MELjpSUy4C5)2V&YqNkUGpV73?DNZhkopL4lM zwMoynO8HuriZc8BShTiLUz=spG38H!4g+yfhIs)uZQ6(5j#O=eV5Udh6ViWq5=9#5 zzo0^A&I$_4L)M?SR7$+2>~6^={}pexhDWN9H!9N;RRa%H?N>$-WnIx8yvaoRv#meh z97|bm-f=ZB4*yrQV4nPnBuHIDUiwsp<|uQqU>f_Mfm zM7+bsHlPltpxLgCku;kqB`hi?(+Z6H70i0vdT<%mjBcd-l9oS8{$1h!?3I;ExlADUr%0ZKH?SPOvJba!JTe^jKp% z(d!3^q1|E$lcT5q&Zz$J#czyi?psZa%6qLCl~VSJI4lf(*yjg8jhClHfGNNx;jf$L zhES;nzrPQauAgl{B@lR<^|jMYsPxeU)IWsvlkY8n015ilD@CQA-s4A`C>}NB4Y3iJ; z#f&x`9N5t}$0%2jbeeV!UUmpt+&y z@d8sR5J8cU<^S^Ug#{NM;3)4+>f-dk?_e;kj6Q(gxcZr;P*(pl^_aKmiUd(ox3YYq;PcC!d{!PbLT= zZmB@k)03fnm&$qa^_=@tTkw^R297>e8YugEjz%Wz+QLeZ?E<|Zb&c`|vO91##H_*} z$lgGN32;dJ?wr3-wz>ly>epAN?P~QRZj7?C#9hxfy^>?FOpgFeaV<;K!QOW>xgks|Ali({W z13(rRB1#4zF6Hfuu}=gXr2-3K8uZGjz%tNi{9;rZty;K5Hit4J@uZ*1R-wQWf=i39 zYyuQ&Z%R;j^0t;}r55^xSF8kfnFaU}R$$qvk0~~>3;Z9wLU6Z{3M>UoPRQCN6j(q4 zVRUeVOMB9V=(QWdo&Cf$8}p$7nys&aN{z%dJB!i5!Q%~FL#9L!7WDG9GQAX^Qr0yS zN)qJ4Y$I(~uW@Kqk+1)8M(}t8$7kU93^bYn)1D01ush&;&?a>I=`KDqSeQ&E0kAhy zS?>i`)1)nx7NgX7BVsEx&~K2D3ACvhRAcsoK+R;d+C>?XOmel;hGsf(tCgv{TDL+J z2c`Tmzz3)rXF~gNkWtX?yA;aY3&^3slLl=BhcQMmD9O)a&afP_SSmkDjzj0$*?ogj z3zU~PIACF6&s}3zhODs#FH6>H0$uD{L8epIVGFK@LmVho3{6Dg8WCtBxpzyTajizN zZ}iN`jB$4alhU$8nVj&@sZgeekR?A+NzO}EPFz4Rs8v$oAzP@EQ>p&1^zje(j>?;k zn96;Lah0?fqa~kG6Sf^Q=9lq43{%QH75)!5fX|@+Lrf(sD~o7q@OpYF`dXkJv1{9e ztzZRw$9pBeHxv2Q>iz2BBWl;9YTOacBhurlRqw1KM{b33`z)+bK77_UQ*&pHcbyNc z0|D9P=^2OyZd;a!isig<$z-^6;@#YYzkl2oSF|w6LH?jZr*BANct@qlPw1v!DW}yU zbVSooBuS~Ud4Ww41cVMloFY$Y!&lW7NM9hHx!SX8i*;3ADG`~?FRS9;w#w&cM8%q$=uSlyz zB$BbBPdIz@rLcSu@$A*G-az-J;3VeJ7wunVQrZY6{Fwyq$5e3#j<^qu6`6{jdoQg;~+&yi&1wo0*YU{7j`#~H3O=4nf4BRtAY z1BGI3t5Tc$i{jx8uJ~O0&f&AwskypxJMVGHt-8&+`m(Nrjq2jA72l#Y9Pnl=kZI@g zqd1hy5yn2;uz*+CR+-r1ukPd)Zxi~QG)^;T*UgALf!zt{7XIu27BOqTcGymJsyz@i zP4fg3r%lqfE5o;WKCOp;Quz0&EK#nHPqkspB}!3+%~P3JqKvL6QKs!nEm4jlYzcCi z6Pa3L&)qO>ZHaPh1Ar7Nn7#ua9jh^4P!nI~*4X2AXdl?Mb@tpX(+e>qtxmaU`D5Sp2P^H`yZOE(hv3JRcal=OzN@_BOpQU{7S&S`>+pOX{Pj`}m+UjNKa z{Aps<)!e%UTMc3BfR$x&RP`jYY-+I*rN)ffN&*gF&WsH%JMPnZcAmT(6l5*2mSpg~Zg zK}{UcnPeupLuNF{Vq8#sQN*HxFvC)ogicbKUWW2o+iKg_+Sm3;TU(d52v{W{kc34x zHz=(Ix867^h#KNL|L^bInIu?kYnS(b|M#yS!@YCPxo7>I-}&vQU0ds{e{W87Wa*rN z(J@?S@z~c-PPgegcSR9d9{o7cjzfjn{Od35+kD75pxtQkdA4a4%|?6BzQsRk zkCfN(l?ceiwY$x_3UO7sM{$qF_F$r{T07l~4ydS3OSRxe2dq2v*n54KypCT~6Z0KT z{F~cn->KKO=(UgxA4%WwY3K|lCU6!GTrR(h!ij>-VPjx{46%gy4;ohiFlG6=G4!bR z*uXiuXL5l)_e|aM?7UN1z`=gDhi8j+cS05vj8YvOwS}k+Nj!`kgF{Ah(9=9WJLuUn zcR_FzSm+O4ZSCRUsNeg}eM4{l!0B6Yx^KnotYECIPtcRnzVriC%Pw;)#*c)})cM~N zDX3XmCe9QPJhBhjdfv>q1EodUSFb@{6=bj>p%yT#bar@1@vUz@FUyv!@vU!_XSFzd zO&1q2p}SzZn|REK`|?|T18p+IA zoZyc3_rYK!E13lOD(3ziwO=+*N{?Z4c zZZKn^Q8wCF>hnj3%!qxl$hKslZfrBJBh-JepRbzE#5NcHNrk=WSGlyz*tF3rYu&T-BN-y*+)Caa6&Q1o z`eZT4P#Jt2);X4xUCFD@NF_?~a9vP7L%q;nUQ)S}B#WABck3hbK7RUCF6ceTcQo)w z`Xdw%7gIK^cxX|XIJwSqrSe+kM{QT}UcLD+1K8;|+JX!v?lBLF)_@=y0emLo*WnaN zco`8M3+iI(&%5~$R0Q}(;zjOpBF_p;V-Hg$w${}QO+ z@+_^v!SA540B|H|>oFFe^MQ+lB2&3FWO~@xO-z6$Ew+b@ka2_4*eCEX!-r$3wsMSu zjSp4$qwl@F0G0!O#p8U)@_k!;jOdTL>WeDqD524l}fW9*Pi zeO%(_B!W`Mt9%&b3XoV!pOEKiZRJ{icSLFWzZ29xwJqRps!yaKMfG3293hLz{R4oZ z)^M=`I3*jNYe5K#90h{a7PKWscz-XDce~t;`G!E_%ryLP%z!x=#n9r}xp;dhNdEmz{q5LE`wN z=R4r}P)qz4$k5hSo+C&0Sjt{Gf-UCL9^#hO-9h`5eCmaC-82wMkvj2v;U}XH``w8& z#P^O5W=;wwu2R3d0-ok22Lp(<V_sa9r{ntxpIU`&Pcb!}G9d9L1 z)D2=&>@xilo0kZd_EZJ#P{l^2n{id16Ehw6`Hpqz#?*X%Phd_aFeitYldXPFyO#JC z)d#ePnsx0dpV2Oe#=cFD-^S>h2l`7YN6bH0@$oZy?1^Oj4jKQ44BSB*BjAHTyh~m| z3JBXhF{`a&CmFUGGqk(hMK-#G2BAqW2{F#UNd^-fZ(oj`w~LR+^NRELcBdrc^*<7UpZZ2CANW_Ow(mUu%j7Ypk%f)0@qh5-t8Yej@G)=8O;kC zH9H z70Dga)9ZUlkzVuJ2wubS*$V@4)#pHb_BbKKEfD&@0YCx=iue^WN5a)f00>!qFH!s< zw3fiH)Nazb^HZp=B4p8e>`AwsLJ^OixTY|+xXTuSl^P;M4f}4Vd9ums$6AP?RK8F5 zw9Vz1k`EQx$-0OzzK|=Y&`IWio3L5Pl2X^Gx z{)Fr5Y4#u4)Et`Xsrl32GWw<99NoC4&>YVv+^^>rQYW^MAejiowzFdH>pK4JHBJP1 z`!l`Yv4itqVgO6=I|MBK@XdVn4zk;zt27ou*vTKF^c;2UxuPW)ZqI;kEkJ! zcO`-_caO}-8-$!dBYgu1){nen1rv#+j{f!&ihrR*52`0EfM?zLU(d0@08E$DaS&rj z1TZl`LGF()cC7h8)FkEAhD+N9td@zl*7N}Cl80fY{D_r-uP5)|EFb^@sJ~I@wj_Ml zcGLOQKG;P`oxdi{TmKQfgJt;CSI(1}NEhS~YEP|p(WaEMq(>o92rP1W7C0hj!O6g@ zRl;@?bySaEIcNRN)Ws!8y5?_=FL11=1VLOm#~l4AWEiK>E||O=a~YMVw#Vn}na9P6c>HKt% z_@|}{7ICJvj(s4nbYlWoFh=@VAw@c*EC^j^G zgmF&wi;e%!l2g;dg!?vwldVH$P^m)Csk|r11zq=*tlD;cWbUt8(m7w393%JU^hX>r z9i*hu^?Y7qm5!9fV(mWGm!g8q*am;2c1MlBM}94e!2RBm@g0|(YKuC!p=$Vg6rG$R ze$}lb>C>q_l~+zes%mEG;+b_}$kunZ&}~nP?9cK!dOZ7OekY;fnz;Ejp|d%>h&Edy zIiy72#1=-CLVQp~1P>)=Nz&p*p{wK|w~o{!B&qR<%B1^tz|RK`>G9oOkl*W`aoB`Q ziHTWjS{E0Jzt7aLabvz>M8D_^Xlp0QCH3Wyk}pC^?v4}y$-#4qxxb#nXMz#Rcj($y z-Lorl3dA8Y7m<^{;)hAC**HM9Tq=4_vOf`bIxXHekO&iB7uQljxnh7wNHKG7%e#aM z(&cjB?dC1tfzBhO)>kNEU7TFcn~;u)YG%ohU*@URA|tZiClBj+A90boS8tLkezg=A zKHYp%iIlAO5ms@P-Z@qkFHj`rcJo?-{)OTax3hevBCadkkje3RGf~Yj?~02OXJBB= z60iPKH8M){FLK9xM3b&=+&wd7To6Q*^@g%JMw*3Nh5*;u;5xNxy9K|TepV-JU_-(E z3?EUSU}rfPlXji3T+k41U&)=fYK@>z#V2!)-su*GxsXdfwT4?rCUo%LCn3nd3ez=L z?ppPZ=b2!3Jy^SSb;$TAXiRY{@%}x^MoTApo99lqY{?2&$XMv+;!^K8pV6ThkjnuF z3C<%Yb0{(PDIUOpR}UHk`-VzKYKTJAtq4oA z#hZ?1Lr4H3zMg3ER8DX60PV}@z=7!LnRZuxU$y(h6JlGrkM@4Zo3v+__9kW8ds=n! za%pdmYHtYbL+euJo)It96JB?!+0%c? z+hOC5>QJo(XPGeujji2K)wrEAQ4Ts?jywo_081nl)kLsjOU<+>3C_dbzdj#|`yX98 zjeikxPSFz&7R-Sq!naD|U~p*Mx&{OPc+@=WQn~=P}TEWcZP` zfJ;Ae1COEi9{DMc{B1`}9>cqiINxduxKDelhDX87w-)j!T=~{I9;4ge`Yn&558pcf zXj@?HokxGlqh#ArlgGHOqy67*3wTGreFG2wci-N|Lx1h_u z++$bpSh(WY_l^-X#&%QfEd(KO+;->eC{O32MK{&*9C-6Bx7^CpHS@MF%;Gup_B&_K z<(WS(5|whp7cBbXY@Y7uO}ELjAo}hhDPK5i_Tew^9DVDZhi>9objxk(yRp%Ek(vB1 zx#^a}v;B#o3af(23dS8?guFSnEr)l%&34nj@zh_s`Q}&FF9pE(5xV7-8MmT8;kA0^ z%-cG6PM&r9>$mf)x#P~mb9i1q_vqYtJg2`MiN4G8=J^X2EaW+J(HCb%c;3EX(M^YV z&N+1GmRER2Ub$`dVV(;QACA5|gO?@mF6xmdVf)bUKEz&Ku;g47;Ga?t-b9P<)5`X6 zj3ug5ytQa$+d{Sbe4edKcY*Z#mX(YfzGQeA#i!MCkMhBs<_^2P-Lt>WiSTmx@YqXr zLO~~F(}>__`#ET;6W=Y6U4`o}NNaI^(0J*8stWWUim$@3Hx1ZOsUw@C1{v^F^fw&W zOhHF6ULHr%yk2REw(3a=Dz!{FQ8S$D=LfY8v-vvhT+dVWj>RQmw4pVK=vx#obs^)~ zu+bbIwWnJ?2wCVVM~vJDRRWiUMurDdP080-mVqVwGxX9?d$?7Nr022Q@CFm#ykB9u zK0>Qpp!9d8&WNTbs`FKpT}2F^BqtN%1g=Vr_ZQobxSpR9?V3H+hK9oJxlCJmwGt(X zK8aI=Z?6|YBbqhe4gX;C7;SBzkTJ1vTsS&G+gMiQ^OOzL8t;>7Gtfqqxq_wjV)~~w zHu7(9d6SHfOBsZSpD*JR#ZgTt;iHd1@#l%YS=`hz?t$nvncAXP9xHS3tvy-+JLL_Q zmbs$ir1InHI#=p(eX<^y*8E_c_JqsI_od35!FYe_|2rT`!4H;qz)uErFi<0+mROje zd{JV8(tK@|+|nsvJ5L|6_fAPQPQZZ;`xtqZ`S^q4-~uB`XejNmE06mUmrN@__>Iow z349pk8xh9et-jfp@hw2$Gv&;DTRmq2)+Ap$L%c+g*|nn6+$|;-%20>PfCVH9#Y6&u zM&8%2#pvY8U=GkXi0e{<)`cv-wu%CPhaT;g^T*BnLWJ%!ql@v?V@1$pXc+mK-*_4! zq|kmc-7|%o{ckeM6nU!JaBfGWzh$x|@=o)eVVD{=L4kh4#WpkJs0h&;O z6OmnyP7Kk(Z?UK=-YYHj_Z#m^x$5Nb^sSY_R9kt;(9-BJ-|{~)_m|7gL?J4X%Q;E= z%jNWx*QI=`EKV@hO8Fuw|Eg6!BBVKBf|7r-NSW0KB`Dj_)8~t7m9Qh62_MLohP6uM z{kq2T+IgfB*(97Q-@r48e{3M9<7bGX)0g!q`$)9S-jcC}+}BfkopXe=h&UvrYY*+0 zp_XtzlhLq-cmBY^+9^Nyq_t~EB%ALWI| zL8UcZNVBo==bwElsJUUd^ufqI<58$oCTY@^1W=xcX;mjXOw6 zwRDK>jz67+VJ8c^(>(7qaTv~NbrdnhoskLJ+ClZ>PO>fa)xUS$x@l6?9?id7ZBk?! z)_#Jpz-Dk@(WTp>1Arv~-9g&gZJ>PLihd*{U+}eN;baC)k=IUuXc<2;?31PnQrlTS zE(;}a_N}Mp+sYFIFV?AErokOFo;5!>SKPbbK=gr+=mD-aux^V7BFpN>jj}~Mm%k+7 z>NgfR{iA+W&_w@e#cv@goYtX)f=>GVOV&#Zw<)|Ec zyI$K2kQbG;I^4FPTrBV`h5SZ~dDf{Sy%N18LCqHJw9{8>*;(Rm!@LXM&#qLKi0o&8 zp&JH7N|u9=KuirqoCPjUTghkeZxFfkD@(+TT-jefW9HLtW#}9 zi!_7@kFp#TrKt$@{|;*6|G!Vwd9UQ>SP$V46cXdv_W;Ium7JGvPR_yQGAh71L>J)P zWgZ|&PQuR+TBqrUj6F5iU1I+)?mM!-v(1DqKJee1E(Dv1W%SrarTmNbjg^f~i^bpj z<-0(~_hzax2O^8q0hXbskaBXQe_3T3lay?Sy@|d)Dz2-Os-;$y@WazYoHWVZov?Si z-PT!tvrDdMo8;|Iew<`w#=pyaSiNQ%j^0Bj=A=7uUH#${Y|$xvSt6~S{hEA~(NXR) z=c_L#K}M%rzr{*`f=(wCSp9R$*Xv&Gn`v^qDmS&~!_g|iVmtU2w&Ggw+b(mcN`G2p zd#{6wtQ7$GO8|cNjUB(f?=P$7{vp6E>x)=dAO^Jm8iaOG?n3KA?O;y77tp{$!j-5% zL2y0T0o{<8@@|k|w8T*yGf}WwYbcR7Wu2S@u=vo&s5Tq8WrnvbSTKjHti&-mIuHyQ zOf@&|t^0in_1eO#(%D1BoXIBqn#;2-G7jW8=ta@}dABItUw~kiN@E4Yp2WMQ`+Fug zqx1mohF;gA3F zAnE4xTb=6S4nacIk(_lh%H(J$i9%vP2#DLFr|~ARYUARl*y93CwrKzLRdm+8@CO!2 zS<|XoK|g9u)<0yKKC_bgOQX@M&N4@RB%nyeVBztM+n7&f+=P&XIZ1PG=o^K5^TC|- z`%B#0C-FgSk&88dOx?n`KT>4=hTE^vBDs*Q?BdWgo-@A^?Prsl6aoDz7fF)iL+E1O zMaC!K{x9Qt@03Xy?*lz?d%=E$mrX2!ZmgHZz&1K$j3n$`Jp4zzbFhvM9999N?wHMc zIAy%BUJNWH9X8TJPD8{^BR3OOpYQJYMX<^89{D;h2gN7 z`Y!}G?GECcu6XaYl`h|khJqKRA5x)M3P$?QD82ULxTEk!xf@zWXNufmGk5bo;?M?)0OA3k@ZKD=b0~+_1!dQuI*?GG0F{rcvdUJA#>f8WYmS(@RO`5H6<604Go9QW9 z^84aWU;WZsnd_y8BmEW0-Z6qXmx(-;Cw(lGWgMc`X!upKMxwLNl65ieEK<6uH<<<_ z%sHBU%IN}qQ~v1Zl#K^AEhacmckt&;>9cz{*Bd0GvK4s7*ztG1=FI;&on`Bt5p{cF5Is7BX+aE354@ zap}J@cEAnn70PZ5NWx#*ZyDT*kG!%e3ArS-M`|hOl^*Z&`J|1X zIIq&87o-Xy%$byZ$+d-%JWCLxsNilItVL+EA&GLVP}25k7H!rN;8NDoAgBF`E`YBQ1T%way!k1O{Iah;t5&)|>GF_F}V;`%{#Z^5=!-*7}w zo8mS5*k4Oag==`r{IRYWiIeef5Q%}Cu;t`leyQZ{H18%?I$bSXUXAp7x(GOhvBL%6 zbM;<${xd>}xIl;aS@QFQP$?#bp^Tt_LrP@Yg0i`TSOi>HtMpewd$A7c72Dv`W=B37 zm9{qmfvc6aDD=4-Ek?qk&_9bog6JyV%7wBDdg z_KH0$BnL_c1RjjzD0Yv|KTm;q(WWSW1h;NnVEH1bb5c`rjF@0$6mmmL8qgzJM#h*< z4;d5OB7V`8BrQ<J{;Pwa@s_UwR8>!#`3fa=CJ1T6HgZkyXD@ z)h=tx^!-Ww$I83Jtt?~=h@K$5oxqhDVqoy^1Pe=!$Lh^jI(XSdVcfu#eX*)9C@PSq z$k5fFQlD(HCYR4Mc*$O_g^sn%^ej!EcLK9sfm9?M%7)Hn7UJMygucA#Y zGVn6_cvSbtXQ=t_`ToeWpZp&3!S!bv-1sRUOjW~GUA~`es54eJZA$!A5{T`g$iTCT z50vIFJ5>zkCg;G)?lhOH5t5szo0)3yhsbNM@@=694FhJvS!lLS?Z|Ik9Wm^xLsJG~BXR7WofnQt!r1&*JJQjc5& zJr554+0P|qyZOU!2oCNNwBjHx`moYjMN#aeWB00>5z59Nw_bmx?2bfEKiyY){<8VO z#Qgjo{X)oC=2RZ1*Nf-rR@~Z^%V{D1A}&|&x~ynkD1o}gvZgc7*(m%2zwxfCUr6Mt zOVxhbVZQl{EEql{+sz@DIkC^zW3A{k&tGz{)G<^qReeITDpKRP)mPjq#4t+KWYZ-M z*9yTS#&-+q)$=#XqKtj1EO$QF(egJf9rn=6UoTRmN_I&jvUxF=X((_@3Nzppty9rn z=^C1dLSsLOBN1XE#Ojv6k{SFn&iv&-k*rfdj<->~lpvEuW3Z%PtZn{@o&JLH4iVDv zp*hPlkg+!UP2ed)SJgCD2UBv8;V$1Sefu0TQwXd=y|#}hYiWNY zwA|6Sby=U|6hvU2ny|44#cRN5=h~vept0Ay`doB=iR@|_rbu~tTI03Gn#lgaTr-yIvs{(YcaM7@;u!bK=qZ@G(=}X_J+`HT0!FCbf!u$Y!ylh8 z8i7YvgllxA?`31@{2=K(*LH7R);B(3Y|Ce#p(1V2Uj~=GtVnB+ zSctJj@I#HS@#Z%s41|qLwJRfWpS@WQ&4u6=L9itVF{)%)O?|ouGM3^m(-|;c^_NDA zv{m2bb0H_D%f>2-)wwugE>d8FD6JZdg)4=|@7SeTT4P^cEW=4*dG?>c&aM5006nTp zSg6up2 zQsR@_9V}M6Q*!BlJIBHxV~a#njGU>*)>~rR>qSX=bGFViWC8jw>umXBmyvq`Kd#@LD-c#n+-m%--DqYl=ig90+w(@*tslHBt zUh`@9wAR-R=hdf7Jh5Xod~UzJ2p2BJ_j7tbWv(8alm1{|bO79U5hm0#Qr^A+v@^Be zl-UZ{arv&q&bYJmn`(~pe2J;^)g;RpzUpOmcPGa%+^Z60nHjdmot{>I+}{pJhT5Hc z)jlviv3&*W$+WJsrWJ#N1Cbh;)=8OZZ6Szbk_b&qtLjQ>oA}ZE<$3k2`mA})V&Zxx z_3P*NxA{_=<>dBzZYk1ME=(IfayANBLe&7t%Ie=@E4;pG|6`*x{7tA@ee?yC_&g~6O*03ltrn!h|*)L^^u0^525a)isoNITva*5(r&;GgM^vf$D9Tp+Tw60P9`z!-SDi_Mig=$=!djK2dU3Y}L}{Kjgf>NKt|giJaRxeM)x zB5qJdSLLU6^TqGJj>p0HXLC+PzFj6{Izi%fr)&zm$BvPVHrY!Vep^mw$*+mi*;A5Z z{FgR4NE?JMICGNK*QrZo*d)fU}3LN47Y?cJT1|6Qh`RdS5nZ>2w?JHvar z^AnYMV~ND}DP)mEYp@?pgC4(8k%-<<{1VwQ78mf}OD29M#0lKwEB-)xtZX{q9jrAy zTbATn42xG7mK$1TZOOG*TVW3L+I=!%Fr81E-+MG;E%2kWIdl}cs5OXpQn$6h^N=ct z>?^2y7Y5p1;$zs&w?96t5^uoRURiC&5ep{99j43`2}gjl&t~pQmzl2H4^YM#wm0c< z$p6H+*)p>acV`<@OUQ8Q_75ceUeaS%-0Wfi@nw)pcTOjonrLFun^4i~Vm_co_L=kY z*Jh;g!|h_~f_;>=b2C2wZrrm_CiSOv|ERnC%HjJ0G-Kh~u5fKDGl6_370pFsCa1;3 zN0`jBbJ3dP%T&(9w6`ig{d+f`i)xwTv0fJ+?75n(+C6}x_y)ilQ*eqQ=p$mM+-t;wh zWjDW%?yDV-=#JBy&C~t%X8UeD?3rT-@2?CK;=GCr!sqEeqfw5*vbbZtOt05sa@lCr z0_dXeOZ%80n3yH3Q*?#&>gm6Bc0Yf)PppSXW~S@LNQ~7am=^pmN*Fjimtq2kSVR-{ zGUl(2$fT+`(IVVODJ&A>3)MD$s^d(aSTx93C4zc&W7D!gH{~icDpahOOwds77lVX% z$4sJ-w2-7h<~l`l z)#3p$%S~AJNnUNRU2|RO(gs(NR_WFTm%I60#P1^VE4@caq0s5t;9Ds)n*s}pB>r$U z8CQFcRl*|JvZM!%&8L8!WdHT*eb1S)rQ4+>Vs|V4CJ|y1 z*)>zqU&YgY+&%#R8mFj92MI<9Ngkj;y|)X2U`3$>5T^f)4sD+w1djXS6YyZ|&-xNi zG@#dBDCWfQ$OJXG#Bcl|l(-7)a^AN4#D=(RpglS?Z1jP_in3)}#1yoNnZR#9h>aKW zs*vY}CC>|*lz?#z)+Gl_zQDa(M8A>eFhUHEY8Ul12F65eX~w{q3t1DDS;=jf7LP=? zT{vn}^rvF(x&OFMe~uqY*iwI~M{9ia5~r=TPxKS4iyD8%{?3y8c@@v{)&^i2G<}OM z=4TDHqCGT91BRm@;JI4>eVGu`Pn-rFqj%VCN(|U>Ii=V$K4UBKtd^Y_gkx3G{T_Zl z=KjFa#`!!03zod4CjwaSg==)nq&ROi!5a8ch`Om-@&LW)>+6I@Py7E1U-Jv_pStWZ zn25;SF2&z;Py8OmsRxV>SwlFa#gv+{y0c=a1O8b!39a#Jl62!VwRNj_N1kMqJAPtw zJ8cBV+i-BmJWeerA{HG-P%P^y8U207DN=O9!2$D}L_g}dfqBu^4p`ptbE&gIRC}@a zvZ5y`!aH$~YRb%;;ZTmaCFF9{DYYW>J|uFwGpzJY8SH``;4X90>+hzB3v??T?200J zZPKxxV#oiCz2>WbQW+DZznyymlRHRNtBP=!tsr@ko5GjuGR>=Gj|p4&8`T>~z##p| z)S|_N)7cQD`%?P-p9)IZEyqQ}x5)rq6*p;v`)Gs9KoVsjiLxR+UdH)brt@^R_W90? zwz3OTsaBh9`2>dzhOezm=o!I)GS8He&FKC2#lNnoG6wdcVPM^yfGkn^c3OecAA@BweuX* zS?;h$2N>mJ8P8Y6hdQ&4uO`Z~I=-h8e6ISEyP_^7Zw7%GUilq)M~_crld9GD@kG4C z9<#t7@Zg^>&Nm8+S^lyxYokiYJUJBK%pKl z_Zq&?j8s)oynJ+Pd6vH;N(IH87`GbFt=41jJC_dg8D6(oMaLWNksYC@Hpw~h66Ro_ z6okuSIB?-ckxEp#%-cS+D_oI+3iZ`*R6AXZy~VG3PqES3YX1(pI_;jOr; zjTqgP`{ETeHy`8d&f^-<%->%jNAWzDg`S`9N1g9`qTr4yXK|n3~0| z&gR0%7dXG&C+6Eao86IqY_xH_Cx>@7JJhcV`8BAs88J)lRlJ8Ze>+pRfLBlnfH{RX zv*ab&iNiP*!M|R%V~(MZZQNQ1e)2N@rs!))dwjxV2A^Ng6=8B?3HpEqV2wrWzhHi5 z5`^v{jG%LFS|rR*;uqe6i>e;i?clMhTA4+~J}H6BVpB#F=3mk>v%iMGD3qD_1m-o>QVG&|oWA3PE3+`K5)j6o_IiWE;JlCj1HS z$5L*EpfbemH%J*Uw-NA+Z)|cKF>DN|1S`OFbP0SdC z&emu)K#@E-Xn8wuK0SK+vVwR_aC&rZM845z}m)E0klfi1Kl~kb^L3qFNykq&3M)5;8xEZ?Z=A1W!D-QpxtgWZJK7yRZ@rwUN~nVk zWU`hWliZ2TW5M|=%KIE6&tZ$Ss8QIw$qmPvZHy~Yn%O(^##o^0jhs#8L+18V)fUx9 zx$0XMV&E`qAy)oDjIo&+jHk!47)6;1wAhQZ0osaO8H_C~v_+u<--wi3UthuKgm$=s zuVooUBWpn!N-m?7l8O}Bp?#w%`{RwN)ENPrxoLfWTgTH3iE6GD?G5{CO;%*MS^--Y zOCk-NmCTk$DfHH$xy6~h=s>Y?r%}nv;XO;{+}O@QhNQdF@`BxFyqUZPUgZ?VTEA`! zP1&NF)!{r!bxZ(&!M^FFGbQN~NkU;KCOnzF-5{=C)@K)|E1yB-7Pu-?vt#Q}JTl}k z+c3@2T8JGqc9mO@`?HjwuUf+f>dH)M(72&!-bkVS9UzE>D*SHP*kWNN^Fm_)bDATP zU9IsUpW3&{871@Mjj>)(GmFBkXU&qND_v7cz9WsI=&!j8|Uej70T_Am8GlMGb;t z1BpF+af79S!-3*l<1+Ml&c@U-w@*O-5NEUgIMMZUW+RdsL`I>(;$sMSzub!X>l0*r7EHB|#2p zAA{*^K3^TuiwE`Krf>1ygPVRJztXtr=e(zJ(@$NQL;7J7&95J@+rXe4LW*L}Q53Tr z(H7V9T5>QHr<}`^+yZ#_FmRt|zB^)%X*n zt90weLdDP30TQX`@4GkI6RHAaC2OM?A|ptd$=oCjUuPoq21 z8)MbGD2uxKM6)|q@@@U)KaD=Bt+j)XiG4_1V`q7MMrD!6 z9byOy(bTSy@t~>wSqGFXYy?QvhQ?Ot;oh9Y>V4x~w$x=VTk+*C+lq@^whJzH*=F#p zBdzQbm+d3cZO+g5FUyJe(Qfaf{&PA$Q7Zcrzdz?sTKz7*V*2jF9ru8WBt8s`mkXtvjCj0iI`)>mbR=8-T)Us&N(45UKF%o%=Bs- zUg@WO=^4o|7Gm}|qN8D$t=oPsSbK@w_J+}Jr?%>w6bdJ9boGiK8^-nAXbX+nmB!aS z@q?psJy5mWj*uAc)tg@;25XBeXvZ@ByXr)b+zdv{54LTF&Opw3u^gwfLIx4acbc8g zAlKl~vn74U$MDS-7s&4*U{%4Ki$b2~w3Una-WRKL*f8HS>XffOM)bH1ddaW^Dyyjq z8S`-h6>sMjN8}{Su=F_$OQqdq-R*7_qCwj*Q$8f)*>5SixBN8s56FQ$?BXof8YE7G z5}5h4!8!clslh*lgc@8~B>#BjpXy+|aylm!gh(nnQ7X<&RD=C#&#HE)RQn~WwKQar z3Pm&JdA|W&F*rx!lDEYxp#|Xu7rV`ob0`QQQ9#79!WES#gb8+(xu{e(Mu`^XG%OC1 z)1|bsnA&M(Qo3DSA}yw6j^dX* z@ukBl-|{PqY-J+xZ3>I(a%Tu}zQ|N&1md@jok5>2ZD(4iy384?aFU1z3gwzoh+Dd_ zT!+H75uP#NUDGFWCY~@g9DR2x^WT*P_2ijv;c9I4xs(sI4JQ6WOQ-wd0dFcNXy7zu ze2hnJ!uQ2-S@UlvQkd~0^&M2m0;-XqOGQCMcR@}RLtaT zm(x>-P=f!>G=K67XuP&cS!*SixmA_3M5&7Cc!C6|-t(H4%xX_x3ExGg^d%#qjtkjBVTe_@kH9Ax597V6^<`D=u1_O_Qm>n zAzq+ba_8R6U~}V@*dx8XXo&Q!o(2uySif;F)fD%Q4a9G9_(aPfw%n&I`5Mz8${V+g z>Rm-^R#pQ_Xcjtd1VANFNujvFjr44bqMm5#m``e0?lj69ibF%D1+#8XX2#o;+pINa z_!Ci_e(mRq$i6LO_Wp6|Z(~HOe>@t8v z?laV+YyNG*OvSlbm<}I$5WcCcBA>alIH64K9UWZj`8o0Kzl#5LGobWI!sns(TT-Cn zDYz|lH{NvXB@`H|ftPPFI{Uc@Esqcs1}WRL)A>7xzvB2bj~)-h7UDq{j}B`Kj9HF+ z1|eD9tk%j|;-jxMJWm})0JEvQk2-{D4d<{kMkvRqc=-8vV2p41%i@V7EC7yB968et zgBHAfX`1Lu)cr@4OVS4Z`QE}T<A&t;JhYE#`qDhYc2FNv>F4 zc}`pMLdO@#HCj4u;qlk4(ce?5cl?gtp*t+qAozNnOI?E)L^ zjZJm4xd#O%+KI3)8*z7%@C#|BUF0lL*j*#ScTq^m7v{}qvOrT3c0hh7aZIRkVar*h z;>DW*D|>_lJ2`p8gii?!ZZe_)94T=CYh;kP->m(Q2}MN2}Zb#o%; zLLUf$S3&`Ka&%%WEm9M2+G3i->E`bL>Tg5orFtNZDkJspiGSN}nw9f%pY(FCipGdr z-WY8q@rQx59bvIaQ#Ovjq2o|a3wtq;*R>$680$w7M@g2|%@(=CCIr+|rue4^jWCY$ zO6)IMxH|OyX_*3@Nj}=G$XfIFz~MjZTNRJG2!l%z$nPh>0fSqe8pi(LCTdc`#3?_1 zEc-0~hu(r+ty{3mj1^tiB03KB@@G2RgD;hnkg;3<3y1fDhlPhR0fUo^Z6|Wo$xW)W7Fla9!*@=Yn#danDyCtQIxa-qedi z_($*)ySmJyd@yjh&)q*ZnSctT8L>ev*o^vBtp;?<S7YG*h4?$?>zpB zd;ML{dx*a!{Qa4!`kS&W->57EE5-ybS8pML+Z$nNeO_F*`0Z6vJbq&%R#u|7`AV1$ z2J%^!{%XB?b6vfh#EmisCR}SA`0_esn-j_cont)ueH>WpRD7xMAJ%xIIJLD3eR2~- zadA^=Wf4+xXtKRZi!lMShq7u=0*BLKAKMU5bM!L)_|n+{;~0n8wXIYi80~qnw1d8BnvW;bK^k;a= zg&A@=gxDhs1?PcVId7M%_e6FDxSFxBVJ2Z)K#=rA_78<_jdLg)0p=@=i!*=m!0G16 zKa^86P#0TB7@hdTQiImGUygDk`hCTiM)FISxz(k!#y0KBcB5R69XvJw<&PSPSmeZ7 zA(TtBm6vfw`i&?Cf=lb#0=q=3Cv&GJAs%>$wUW7Vo3EZ=&DC6*F~YmF4Q~yKhj+nr z06v}3+|FiK)EPVUF=K3< z8?BRT4B{2X`0fmzCmzFHMfG|Xy51oFy?ueX--poE-ec?%W zwJrTc+U2Zd2|9tLb!m0-+;Kr;+CtGhAP}FFuRiRP{%{o^lE_g=`)>@kI<-h8UPsRl zM4wt7Rx^b|`^G;79JY=QYlpwzBJO7lpe4eg5+8*Hb*G>t-tzu1#__DGyZIQpmL{Cw zRo&D6;4fKBaAu8P%Wv70+Q{+)Ka=>#`+-CRYR!BXPk;9cAZvYdK;DFXxxz`Lc`-G@ z%BTSdl#y`lro$DjNo^9l3ak>Byw2>_$TsI7Dsyu>xeZ%sR`f~<<;$gr{&;k@Qq>$) zpGUvnu}1igL|&Y}%RaqrbA~G#L%U?GNoQ1dXPiieU>Zagk&`I#i;==r?K02rE`hTF zykh_59e2}8E}Af7BYP<;@6uOPRKWjp>%r*QF};l8^x=auoPH z%0FY73~)=AH8)N8 z%guXQKK0kom#+(o>9+SOlV2Iq(K4?W@)2E_kdISlnE{g&aieyvE=%`7Lz%LON|aiWsZ@3CqwcFnjJ0rV<1x`HH^%Px3|8 zfxHdMY^T}hJh2s6`u*6_*`R81%gTJM#ZKZ^+Q4h4c~WDKftTEntmIXHn}Jtgb}!?u z7|SchT@o!cJsAty0t;l-&AiJkyDqt2%LpvMrYkVpklC0Tdp5;4$Ihb zoz1JvMQ4*mMq)qG+nj5gYRMudG3V-YoH^HE&5Ca!@`q2@b0NPQCH7o_+1<8WQ|gjV z%Z_VGUD|*PUtKZa8ixVbT5PstJ7B|8Bjh;%30~70?>yd?tF6bDt1>H6+HK3#rEIy@ zG1p8?w;ra6pS{RvWzhv-+L8y@P(OOt8u^Fpc_sZwZuy(&oqv7w|JMv0&p$wIABAn< zYMKpDpf>Zg<+Am=1l8L0c#&TFb>SKC4*L2%JnK&OC$7jsR^vv3o0zJL5y6N3luO#V z8JDz}Vls@_3d-wkFc|8Io1X%1%gt|qa`MvzIb8{IGW9PZJGNZURC~Q#&s06fx%9ma zDi9$&Z8u$Qxt^uOrSFU4()YGrYe)x54b|Useaa?A_1I|MFj@M-cRGDeyB9>1_e{}^ zEf`nEt-f<}Ic~|S|L`M_{mM0wf{aFLXv4uy4TcwMR1#S0v*`c77rKNFSuzQ)gCZ3< zZ@LRmhmAoQtdP1<+OzrwgljaSGnmmcRo?ozI0XCBuG{A zGx^KZ^4+Sk-R7oA;-Rq{Sdab?MpS+EDFgZoNvsUFJva&^*qNtKoqH*CyzbQHjt$E| z?p0m*UjzX#!RjJ0?roDn7@LBIi;+gL=OHr~xAOl&b32fT-m3_W`n4gk*h|N2 zpbocAPd!8G@?~&x?Qc6rrj(2_ID9oulz;UE;R%iHx^c4N0Tj242_<29g7HgLg;j=Q z+m(r-+vLMF+&c^^+UyM)2Z&6qHAdLh5`THM8XSF+PaylOLHQofrSl@+q3 zYh<$28&dTu`rsc_dH;V(pJSWygRvwI+Y&!QX=P;gu;|#|#+onRERgcgLQH=NP(LGI zX`$7o;es(VU}EwGYU6(LYtY1A4 z_*s*EAU4cCmtBHahk$&MDIv@>pu-jmIuoFlJCI;*5!q6{gD zy`QygWMXa#8{cheXPi#K$S6>sOSEg4bYngp&oO^aCSL7gp53I!(SVerN0D3*Al1kz zm#+3Nbu69V(?2WdrXtkY7b>1ck@YI>)TcI zh?4z~-s!p2*EBj}J2WX943A)%9^bwp_O#onuo=E0P? zvZ8~620Eg4CS8}ZP%&C#7oCi~j~$-CVeI|Bkr~+EM=pxJ-(PEdm?U&aqq#vg(Dt_G zA{rkWCGFZKm4Kyn;B=Kriu@4IfP&-7x_g(^dY8?i?C|5t=Jzg3lu24k*L#ezLys%# z>RtA5@3McS?7-v7I(wJ>L#AxUvzc)>rpJA)jC+h4_r2ZYo}t~@M2$pjd6hw{5lfQ% z>^0(aDR)mPt#_&PSktBQdrGBxmr9Q^UCPx{>TvH;>G7pYIeSX|p?4{CecM_1is%{G zN`w;OHX>j?k1VLomzv~6e$^JW`{NhmlAYutqrme3L?OES3RkK-<0gDjX9=$tBGkinfpOSt%osbD?)-xszp%vl=%SUfmp)df%)x+ z-1Kdn=r;oS+E(Ok~LUA$?FJg&!HC^m(W{S(j97XKW9o9qChg_igw;r;e zj`}|}HGLkWgBBDCsHrP~h;6n%dOO}kP#aKXRrdLnWmDQ5iYa0>r0<#8g%7cebu zJh9D1e{DDi>AzcU!%$~vG0ND3MB$_JrHi~ohb~>@j^@iKX#6K3v2yY`%@v|Kf{7|! z?A00rSu&6+Oe@-~6ZiSw%ZXa$HV0cn(i$y6cNI!#IXIErvvv~a!E0{bDP`xmL$wg) zol&m8%l+Ucl%L;yM$*mXLLI5QM3#htATY?7%@QJKmB5^&^qb*%vWfS(r{Mp&;UwPL zeAV(Wzxg0?h(zu~QdhOA3t7BrOdabjS#)dE3D@K>+LGDk&XeCs#Vf`h-^%`$;Wo2n z`(cy^QE0iHX3fieX;!2fQCyDHwohXEhf)olN4vT9H-}S!_*nc)B#Z+vsjGn7Y7Sll z+Zt6~*af%v@wHP0@#IosIVb@pS5;Z-S%HC&tRD;uQb84@;QD`>NZ?c9IFqR8DOnuo zK!_Y@90eKGXw3T2*--8K6O1MA6<(1TOLR%tEYdHKLGX_Dt3$#5ei2CRbwcT)U`9as{sXe)#P9!4*$B5pF9wd-|2b<~H61iCFVLU}t);2+UDq*1$+1q&+ z#i&(dcCQ-Eb?;fb>%1nqLT96PwZ}dsh(NW-SO2LC)qPcI=ALQGq6uPG0<$rPD5j1| ztU3FuWiW$%m`>P-j_|Zx#aEx@+>fjuRd^ zoYK|??AqFJpXNhOd%ICF96LfxMzn{T6OJt?uf!o?+39{+K)Ui6)%gu9PgHM8r8gpF zk?7&|ltm&gH^%&0FbzpfB!w^v6cL-8hjZjSoSxCQOy%CSI|dTn%BMZlMr;?Zp$XXu z|EjLUTr$!@=s^wEhp;!0+N(a0x)Spop;1XoUQuq0JHNQ8+_?Vy54By|cFK)a=jB-N zq@0{EMWq#g{^S%y{gJwjVyAfrxDhfGC?DS>HBXmTNYx$ zeD66q4iRm~E4;~Uk;2~`8$aYXva(mPNd0Betd*@J5uBdNJ6~Q>xeG+(s8)7_yh)Bj z70G>8e)G}Esl01dO0P~)>V?OpqVBYR;5=LMX6PN=*k+E~&>P`%4*zN3$@KY{u{Zq_ zQ&V^@tV#YT_B2xt!+<02*%vn6;|&h%sNXmy96I))@*Fcmo41cR`O6@^qvK`GB=~$H zZzeXxIGdVoA%dZ*Pb6N|!%eapM!PT8`muS>PY(HJa6Rq49t{_FkW*C(zs(G$$>aO=x_RX9|5e^*a_d znwO~l5Bc2)n}mqWtKHKUUkViA{7Dz!C}Uj%v_N}2d`{9Xzn0pww3P$F(-1s){zNbf zMUPYsW+~=S6&AF1>FH!fLxz~#T=Y~xdK|!7Ht&7E)eSkI-DW{g_bY_R+Wc*+N9W1` zzuo-e4*_Ow*&?VW$lM|WsN;on9p<}l3EJCke&Hu{6H$rPKN>%a#_vowUenX~(&HL` zKpBFoxhs>#E01sdBS@4_Y5b;4;|tS`zp)1DTtq?P9P<$GylCb=>t&d^OT7ff^kT-{ z8S~y?JcrfoHt_ui!uvnFDz99w2MU4)_LWG4=ZQtaP%b1gcL+kFUck`!5Jw?NodZqQ zaweShk6LARWWp_jCE{OTG=wv+lqw4FrU;tCG*U92R!pindv9M`>G=B|8*Vd>sOWjC z%DZuoeVw2TqUSwIHn``5vJCF|iM&b93du2YuStJI^t=~HNeA@~iF1!#2ch&1r=Y=I$$(`f zV%;V5$2Ziu6MqaO%~QCFUfsr0&+8 zAJI}a+bEah6sgKg?zpwA zQEcNn8nG=CQxw_Nmz*F9*j?tv^TbqdmtmUO`TcD5i_ro)5L5J*QEfNh8u*UF0sS`i zwXGY%_pGG<2=r@gv;P0=MQmPmT@V`#Q@xjkuc;AsdU^=`1gHK{*%w%IHgTZ&5O-yn zx91Rd5}veL!h>p!w+fMO7($&Tsd;pTZHKs#c|pF4Oi)`35RGnPa~5C|I{kT;e2dghVB3SWb(e-FzbRBfa$X32194 z+M5r;VC;^Z%`Uj^90K2CZ%EMC2}a22(6y~W&(4UOVEjJ&(*a@?y`rmS-8g_M&2Qv? zlsj($pwQ_{@ZdwSl-TK#9f zF5xSGY3*oj)p_dssa(@Ip^vt<%&r(4470SxAu8u8hngN;L)~P}s?5Wkg!qQ-CYnyR{<8-tu#B571HQ-YZg1bq3; zVIQe@uM(>fb&A+2kcLPjmG@m2SoKUIEP zp;cG&Bb7H-a*W*a^haRDc2bfA^x(58yt15ukKpi6OI3}g^TwpnLTz4=-`wR~k+ouC zR$GOjOX?_}sSx@j{19a4Mg)T&qxkkA2uVfpG*fVN&1|NDzGKPyrZ}@Ra->Uq`$ptC zhOyz1^e`Twdufz=w(28{!LwvCjMF3wKD2hXJ~D6XI2p#zB*(~IlKzNcWT|0LES0xP zWzq(;v2^N4+P|__ z2U&JxPim1KX4ObZ|0)~wQ7Sh6z{5f}Po}4P>2`W}m8yG8cPF_F?{dk?tkP>98Qu=b zF>?PS{n7AL-kE&lgBw7(sO}GfoTr8#QSSIu8OBe$hjIU(83u+A+s#o7gE4@5)fiq! z^q78Ko~yv@WLk(!qA!Dc2JmIoJDR^pUQ)Ts=(9!mkCr#-*Z@@|_jmG}^Y4^Y-c6(^ z@mKHuzx>egiT`Z+<$rtqY5pZ6-xEQI71_DSxW)};HsKpZsN&WN-zvSPU^+r2ApZ^!X_V7pjSPXu)oQ7Wa_61}#ID(lc;Inc!q--G_Db%Be2k1QzE z)>gTEB|+D`)2z6%dxnWrs}0tN2rd2jq&WG@;-;h>or+>lW%ugp>=VI9jff`1xQ9FK z|A8Wb4F5>jQFut0E#%cfLR-hiXZ>7uc9@OPRbs(766`xjWLFWVSzc1Pw@8-ah=<6V z%+XhWWBCqN#7Uw9-4kp zyCLeb1pmRdayf7DDZEL$`$l{b)KMIa&)Y}1U$kDk&5Q3loKlK0q)G`L1Oji_)nPqPckM4;A01f6hP9;*FV zuQh{-ukOaCjQa%4MLR^EVKE<@DHBfIEm_5TLw0Pd+RYzB4TKU#J85m@x;okt*^`sQ zX`zbI*%9R@DzZ3xFfR_;@mgxv?c4M?H?ea6g_r(Rd4tAQ+-O#mpB*IRmD6m1%9S@@ zri%F0oH%XfoJ^V$$W?jG8%Z#-n=TYdYn3BLxMr-&MQAj0$F+S~dG#}|n%4YAlTh043UySA6y3K`q_;wNmIOVAtyu3ON-PN_F5=d7 z&YHtPW9;jM3K&^`*{J9lAH)AsFKf1<92d=<6w9Mp^Jdzi?&QdZrfA^f@)1@kM9NiG zhO#Ro$gO_L*4QEE6~zAmo8Xr5H+9-gREadE!ZL#VHio!-? zE5EiQw-RD1k$dP-ich6@Fy1#de%YE#Z=>mkK|!yPs7~Pf zJmJ?Ee$mNs(#c0SOX#E;R>$Lv4P0ZR%KGL$O^1kPwR1()IcT97o`i9Jch?7s;MG)o zZvjv=bI;N5W>(*zcWalHaR&KS1Z3UkYCoErBq%^)jTCMPf zSPu$p(~M8S?iDEh3EmN36j;J1g`b`-|)k5cyz1 zBJ&&8yXNI>wTTP`_%iq>C$m7B=G-N z268+XS|AJLJWQejfg9x|mAmEw1uquWJ&7OCd#Xro-}Fb^%V3a_hMasWvxAbc@h|>Z zTBuA@yi-&br=LS!Qn_KNTAhm@6iFlG{FV>ccR!OHw$O>GydugPZ5_qRR)7-gD8cWu z_^l%BcbvoqjCJK_g;MRnjWNGc_qo0pwOY z&DmKWNn8ab#oEa+-QUm7zw}3Mr;=xxZ{Pd2@L3pqRD#kt>P{rCPL4Sow=N77o}DLb z7sss7vtFgh6XNghCuK1^H})qSjZQ`us@+{~IQn3!2VI2?eShrN+A(L_n(T*85|pc5 zyVdYHVolBLsRh$O=x^Qydb-zG`K2YRT+mY6QisG+tsI@knC5w5Uz=8Rn9N=iR5&rtX@PTbNQRepPRq2{OSDF@b|X@rq{ZQP-L;9 zF-w&$DqQw&3IG(1^Mnn|DiSvIrpK)K7!_#RhxZjIaL;I*H8k2cw%CoAJ2=Wb>=VH( zvP(`Zd&q86p1@Aevce?@PpKolg1`j$?|$%~GTc!-!ZV{Sv<8|D{veHJyC?!K^huV& zg@;E8F60c}DLF>&_tPIK9^nRfgww1~1vKR615!-h|8|Ba%`c+wQU*fYOD;!^<@RIQ zTD)90L9*YbbZdl&eqs%!Co zhRI_f31>h8K~bXy4dNpb)Pw=aftlnCOe88ODlZ$2Sgj(=01AZQB%0}AklWhUw%TiN zy{&D%*JlyXYQiH4AP@0{QWdnVXBZvH2wt z-C%FOqBY$wG_#F-Z<*Dm3*nrE{=5akc@oYsX0ZtBvdNyj380YOZ_X$X+c_6iJex&bdjCD zPx1@wv?8W+?exQv@37N~nEv?N^0fss?7@uM|D!Z9z30@fheIC z(7ocK4f~ybAE22h0h@bT4}C_@ql5OBP47v(oE23y$)$HRP`P77#FsI5XfcR~rC4`MaR=w(I0*sSFESjJq~%&l4<0kB}J zOh&+i-OZxj<4j*WOoFNzfA3@xT#x(S`=y% zIK-%uM&|}&{Q@73rO|CdQs>I~-!bnP)#?b~)7Rn|Tjty5nRBKt`b-!fK^Z(Rl-JK? z5@NYwp~ro(T;%Uq8F;s7OGg2NLYjgXkDSl1zoLKNnqBl7`or|<6{Ggk>e?NQelbHH z)LI?u*D8a**u(l=$(YtN6o*W7Ph6k&kSP!L^iZSEI1ds?Vv!Ak_~|pz?MdyAk%k#O zG(*QV7`tWRiK#u}|5Wyf@6ZfsP39s+;sFUeXK?r*0u+Lzx=Q}aVJrO@IPjuYz2x0( zd`%njc#)hSaN?iH0W+7P&}SP@NR*I^3Se{2_v>QLL-P;jX26K@*?S_5jj~A7& zmRe(+|1IrarL$fZyRgu@|2Lh?;9|L}xNVd46ff9_68$84esrD(o^W&?oZxwIf&=DZ z6hgVy{bzxw27|P=TAxA4RFs8>%stuGkF^a$Hc~-KU#ApJ-yz91@7{&Kw_je}_3|?m z+nJwqW&VmxiE$pwFB>SIQ7+w5Ut30*;?eG4JOSa+ZY9Ci{gXV}g4QE=w9Vg5AGeE7 zWIk;|;A1lBaWemBl1S#gdqVm+{E?)jnq>kGuQYbvy3+RyO$>8=1 z%Vwnw0cwBAx&w}EWK=HIP&iN=VrSRa=c=Z;xDA#>GVjLDuMbjRr{vIgq=R|S$}?T& z>laZs#W{POLgBeSfV`x1Uu4uZJ&$+v5FO|a0idNqtJY~Z9Y6ib0taDu)kFS=S0F3U z$_B56$lrxY+59@~qjh!K3vK+ZQEvNY@J?n9@6>6BsZ}<(Lo!CFjE|nRGhf(3^^H^y z7R~Cca{ke)*nVT}T0mReCsasspO>8pBDOGQG{wO6bi#40Ofu^Y6SciS|6aN zr=sHa;TE7jEq4ITcR2ngFQRiOSAZMy1&$|`Sf>bMR~@%d|MRoszo8CG4E)c%% zRv5Oj^gi4%3Pu0Uuc7`?t_cqj0<1>1#emreD7VyKxEYK zm#1NL=b%m)t@#fD0bn6XDNtfaks|;19VakK$%|5A=KVbN5>PUfmr_u&lEP~5o@#Bv zCzu#U!%+TbE_}|0oZrc8MGm{d11icE4I!LlEYC^oB%+soLJ2(jbZVTLdp3&r_;I#+ z|EGOz5wY&K<$W_aat4fZk?QHInk0vbz=9ACHdF7DIjKlmulyy;amr!0=}RUZ60MskrXQlo*j)TRMnC ztYOg*&|m|=Pv;rjgRHEKVcbtx*roI1BE4Z5t-FL+=(U6`7)O5l$e2n zKmGxoIzn*POXN@Fc4Ez&`D6-@wcYZ5vUG#_L0R>Xxi`X5FG0E#Go0QDp4kI*MXG}S zmUP%Yt$sQDlVqYd@;If9Qsr*TaGn8DJsoE$Jp|pFTfKXgqHYNvP=I|c&C81AUqFs^ zIZvHP_&b7E$rWI$pg>{Ms}Xc5Yg`O?#76VIDUMHpLwFf8^d2h=vKNBMem{ zfn`p+eSjkY)i?I$k#j?nMy@92RV?$99}IAe{8m^(^1Mp&nS24lSpN4(GvK8Q8E`D~ z9<1#2Rhv)kAk5120~6eD$y#T?G3(98_cK$O?QmyU8W(}V@woLnC{IB?;rginto z`-CruEHE75Ga?I$9p>TsBGGqK@gIX(1^e{b?og&R#ma_lD4wCb3yK%+CN9_d zu3MU3&>01t3;H6N_`FW$H!ozDY$`BGx$4NbkowtScz*_OOEN|N@r z6zdN;mV|z=?L)=v_>Lxkv^YiSELkUnkMd15<^Q*un13Y!`0v;Lp)-)CuWiGOCGQGf z$1u;qQ;0GZLz6{Wi}|!69PQeQ8&9oh_?%#ULQ!aUt@WWpBA{tu>8&_+vhz+s;~`iZ z@c6Oq;I1}mH|Rx-%S%KaAYL3C+U-eB7H(jZdaklBv$*jcw3&wRgZr8h@jAj@h4sB_ zLcMUa$-PE6%=n4KX0jS=t60pfJ3mu;DtKfgi}rm;sHHb>ol%#q>`Mr2UPJ?Rj4K%X zMh2{ci+kv;Z;B2r#itqCLmfWCgzn&#pli2HuhXd(-MdDM97n6ANv=W|Z0XN{6dYRd zejhqAyGY_$S6eonOs0uJb+ae0CJT}vkpgW0U zisTGLYwdW-cD%Wd27O4?G}1U_N2wPA^;Y_)HrusoGaSNxgGI*`{Ar{?pvP>uZm~!sJQyET*cH6 zxSmz~{5^DB*!Mq>{}#x9ijO}Mnc0y8RLo zszIgr`*S*H#x4*Z|MV}u)WzqQiR}E0yfIGk`nB73G4wC>^DEvHhJ$w7|MCV04}PIY zpoK-am4blx;G(?rw8mSo;bFtTjZM!m&{*G>|K@spC`~V&MAyF%mFwT?U zkZmGvEh-#rl1PhtxlvwV8xwk&vuK#$Isql?R>D`=4R+x z@m@AZn^wF5eGQk*|4vAMry|(L7%|#Rl`Pu^YRT#^lv4iOyFGkJys& z3`~SpiYj{I7;rD+bBDF-MeHUa=HtZlgZoS5*MJ=s7RFqWM2k!kF9}Au zQsGr$FJKWM+7c&V==X|5ZU!ft(7R+~Kd=F!_)y{;v8=Lfs@k!sYVWeCy2YL7hfS5p z01hR@u4MPaP~lDzhT5iO}&Rp$hi`ZS!n1pzOt$A=2^F>R(9Z2LM%dN+AexU zG;Te!UYPpQH;G+DcZFjx8P>sIEG-@QLZl=0d5Ti#_)IC{a;~IG55rze=6^>@%)HvvOUFxx zl*9)wH zJr-VtzkF-(a+%$h5V4Cqt3>ld+#sOd?nb-<5mwh^^b4Wq02MZ+s6yaydi-~z0GX(# zuDzn4xJORsqZ_XTKB-#f4Kz&TvRMA`Z0@FyINQf6X#Wy`-}{^hojP0j+b0lu_%g+6 z7GeSx^TbbBePJ<+aV6pw=vZXJ?$Y;|QNfE~LAJxd#HAocuOLRjV`qa06xPc%L{n4# zH6(_UllKQ~Ugwf4yOV#56DNQ_&v+#<0Q~7O%CB>SMaxaG*4rVP#;?W3CP!vycjQBi zDz0wIw}iIhqr+>{_Mt6rxhi_>v+iEj#eI5FHZ@#e*?;@i^a!QQB7LUrNfhr};|XCR zu=-8ZsdUer0-wv7IEH<#HT{IwSml|YcVLitE6?WQtO-kRoSeQrpPdH$d-grp#6+lMC(U~3t zNDy`Fy68;BQh!ap10UxPLSfieV_M^BpgJg&!#?x9K<(y0?9yDr^_CC zEAEmgB>}f%g}VePqdd3d{~$v!?Ivr$wE~`>S2XSm4gUiD54||?Db%X-=TKL>Lev@R z0$Tkx>#aK8LBYwJT)6XS->*uwz3HSceSeXf5|nhr-M!(uIoVGu-9Z_d|PotgXGh$vXUi zNCqs?-o74Q){P6&tdDE5J5lDVWHPE`epC|4yzN;ODUM`=q@-lJs*+cddI{FYZ^%h_ zRN)v&rZ|$Z%>L|j_IJu*8Wz<3>TORILuw&t`MSER3d{m84 z36t|k_0SF_PhpEWi2s-C^tOg`Xl0<{LnK-xM&CL7mr*iwjn;%AYLYm8iRb?21w$#q zBc#&t0dGgBC*#Q}zo3i_Iy|0I=*g~1*3u?j_5N!H^ z&qXP6ll9SgA14!M?i=f@2v?6JB6UUc(1a^`J(zWqRYjlZ(bHpu)L=2V2X`^K45PGP%oq`Xb0uWXJdd_J;VTV3ygypKglcOW~IJ*pS{ zyf9mFvvu2pSq{D3Umyk_B8z=SUX0CiHZ15vs|(zSY{&L%SkTvDix5grV;)pd72ssl zn70&bTSL7g*Y|VU6~56SXOq7WbN9jmZ+U1S5&$RBviL+FnpUj*&DNk_Wjk=r6dEgS zec=<^PW?D(_xR^H?_vRZ*-!J~l@jzdKzT36`vGG9wS60QvZGedxWa?oVb z1gF%9Hb|iWG|Y;r|9B6IvSc2?r;t#5*!DMP&c=7{Ugg~wzh6t3jbLolnq0yJFE?t> zPQ?d)uYO99*uW|va9eOFa%zzucZ&yn9B%$j#Y{C2y#VzQ%v5&~61c@PVnt@G?636vw&YVp_$}d+1p^Kc z-@p87k@*F#**(pQlIW8A8LUFl-E`8r?*Jg*fQ*mDJIVMm9#0MNNK3<433;2`Msf(^ z>${bpT5h3i1SGYB4~5E&>8@4MjbwiQ3nu`C+yR8y7ejygp-u_J$aX74lm3EwT~-&(rD<6NEswAl6 z0u&^C<-P0A3&tvgdZf%j_-3rLU*OYGzvd1`)C2G#Q18Jp-XDYjOm8bk$69tk;&yp)P8WTB8`{G8LTJeX_JZ zl}tt@lTnF^S7il%C~8#BK(VPXI_-?0Ij;bIY{+l4ua$c#!KU@Hj1$CUSW|(gH^`y( zymh1W!!5^Fh!5FLAVPyx03_hA!`jKgpU9V&V)-Ll#369Ib*x=82v#xuHL~jlbd#5G z+aP>^WQRW%zjyaBiXd^r&@w4x{?C&cHg@)KEV)pHvaV~d91h>Qy^_e)Y7w=jchm(4 z$cu-VNxq1%S>Bp`n;f#7AP1b=)s#tVW9k?fjw5C2Zi#UHY)I$X!YD)}aUY$6*kf_ak*(fv0$Il4$1tl=oSvX&oSEpSjD&3b< za5T%VxRVfabhJ28Hqsd$PDdI-XK|-hi!d19is*b+oM5!Zvm?8qcju-Wb7BB0jrE~1 z?THhB%ewX~5%jRN;lc>4T7ye_A@1QADyow>lA)rRwB94c5Y&~et~^T(;X))DYCr4A z^~A$vgPf%;J*d2eJy;~B;c~B&CD$X1O4ti0C@*H*|2A8Zo3m9DIVx+ZLI7gAP&?4y zw6nfa6v<*2x&3nN_0m>2M?M}Z92pC90O45C)2H$WFYT)A-t#4%-E|g5Uw4_9iIb$*iILG-?({S){ ztx*gu8V<(9ih7KUKx=%B98~DS<3;9aefMRy-W9T6;|K65DbUEm|Mp3Ht*)8ma>RG3 zd|?T89%&4Tk$eqqLp~if+aDHSrWqXe zS?Tyek=?FyNTE;dkxuZ-U5(C&T@m!-PQE%{PCY}$-k-6140AHOe+-S2YgP=$Q{I^2 zL2jxug?fElVN~9l!Kqm$C(bOre1x{_M?F~^M6uPxx0Jh2V^IU2VXqXV{TfJ~2$f_= zIc)#*v&g9`bP0*0HI1YdeSc+zqma`EJXTrEPAfF<+x-A<#>LN&aFYwg(Yd)cICRr; z?u#m3ywlqez8DVr4Aoq~yle*aMCv_3IMo3>^@v0c%n~}TD;}QF9p5x-U8SX=IW{!*fGa;K|GjDbO*Thy<`o3z6;{zNSc&51;D@TLm(a) z2l%Iu6j1jGs0Rhq7YeAKz~*XQC7eQlCWw!5_O(?OmGi(?y4UoTeiqqvIPW$(#`9-( zXj6|Jvu=%`b5Ev=hGjw20(kO%|3QEH1Qc_%C{s`_r{HoLNSvBpH+_{_IQ^8k(cY+5 zh+>E@yAgeVRf&VsC7fG_6N_vWNre!<8+7fNs`EgTu2w-}lbI~zZXswVLSd4zizXPk zw(JBbTUFPG|GZNK@t6H?HUnh$q1Gl<8s7kJRtaK@-#{}#(5L{H5zDwZ7#p;nB-J+t zSR6qD)n*Y?>V}YKjOpt+2>*T~U0UP)+yYgT>JIrw-VhZEh2m7TBG*V193s@h{dG@I z=>}~@kH(fzpXDRZ3gx1y-^a;D!S%&nu^;e@tC2OO+l5y{rDLe0!L#x8a0ZfVl542; z9%QoCSWLIk6+u4k?WCt=za}>}ZU~)Dis*)C{y5nmb@&w-#be4chNO?9a4y>{kZf(* zzIaP=W7GEeCrWM9B)>&%wxo#C`OS69u56{(ggZZ$0W!Bf)1GXt={HQQ!IPYG`zx5e z9^8y&md5P!74&7ecTqu})zsFFX$ltfB?hXf^Rbe|Tc?;KcfNo*9(!=Wyfb_vCE;WB zrVA@1H1LH6w2oDNwmNL1<@5t3LA5OlQrmL5P;w0;2RXv~QX3LjtB_rZNXwWsZ%8?bJ@zVFop;L;=lAAcfM+Rc`#`5GQBer(MnDg1XSt%t*nP&q3DgpiA?n*h-I}w zwpGnH#Bx!<@4I9u`kNWd;;&NXvr^_0lW4x9w`Ikc&q{DzH5{aY)zSI_E*cqw-90KC zde6!X-JDRIY$aOrWK zQV`azh)@IE7pp;tCrdlbui(g+tf{EK%g0rQ=>G=ENKf_ba|L|mM#U-Uk##8wm`(RF zewo7pTmQUV+4WZxkQM$AnN<|4p{I%(c!_p#9wW6=i)6OJkH9}+!^mvlQK8Vma!7D0 z#A*UoACIih4ryCg>ocD9amo6O<%Af^2{9JTHMXM7g|KK2%QN0h&p97}!I!NWQ)GEW zUX$&JUe7e7mt?gj&C0=}HAd-{S`uJf09@c(z}r4}VwiOdlWPz(!#tKEHOD=xScwZ$ zD-oT*LhKBk$kG_m=^nz>s^y}NIaZcI$Sdl6VHM6}6|T6=UWL`;1w{5IhDkfAg?Qe2 zVTCM2YGu$6x7Ly&)pDxM{arJXb5Gv9ZZpe#Lg%@s#eTx5 zWj>TEg_o=$&oUuh)ZXlbqV}%jN9L$W!1l-!Ng;0WA9VbUpZ0f1ux_EfY~sVFz`P^0 zrMKZo9S2VHfj+2b*`PvJXiZz#u0S87)fyilE%N=mEA0VXn)ZrsuPEd!|cpE=yh}9xOwFsTB4k#e@5@oFwfDz5P z4*$*#9HabOx-T&+g(4dkp2(#pcBM1?i2_NGqtj~2>%5dLTKrJjD^vC9+zX@KG;ill92Owm5{^+L_~DB`)R>{ z>KK;hW_b^o{y`{MMs|G`S=%FLM|A3-rkg87#t~3B-#j5fWzidr&gLGNgew_RVQ17Br%d}I>`q`I(Y9= zq=UA!16TcuV2SVMipF}#Jt-qRF-Vu1Wni)VQ@+m6`Py>Qdp@Me@}*{G z+q?i?u==I+=hLh_atrUA)H$aJXFYz5K=%zMBHLMe2bqMFKwb=S?KgL5D+Z9;Lav;i z+xX>RGvox#68*J=OE+5}k1FI6>#i<$hKE!u0rJUmwcDj$+hR`2wU*5O827~YsP_39 zmp?<~lV-75l?yRU#MER6oZ4YsO8i7?wrZlE$jwLGe0NSPI_b#~mY-EzF+&-^!(FB1Y8KdwK)BLPJZ3|ZxAs*46%yrk{{w#DHd?>DQPi(8x zhh9d6+YNO|oJ#D@tc&)8($JusXl~*9^ps(?QfT(Tb+1o2(aZpB>`s1!_Czlf)bNaj zHh(J~ch=$XI_6JmzV)UR5KG?Ig|MheoCwRrog7ngT>lu54&t(Sl87LkABdvGL> zV4OJ8twnZ|j@nHg9(!VZJCEr${N|R`OYJu3+7|1;18ztB5h`G3BD=&F`=(PDCF4`1 zG5Xq*zWU7Cvc!mVXMN`Vs<(+^b9^yHXZXDF#oE|d#u@t1&C#)EM8_8=^4M*@*bJxc zTF>?}?2V(xM)pIRDTt#ywTF%};@iJ{$Og#L?TNG5L#5k~wu@wbm;iRs4IOTFQZC4< z!=pDG$_&@|OtnuL9zfPYMLp7*0p2NIeY|?>YB2_`a$5KN$_)m4R;E*))qJW6mWf$R zVG7F$aw%sG)coKECk49PgxPak!P{-Y!zLI=iXEeN;)G>H0T4C7)I5Imns+VkVyerx zpZ|H+qSL|E4de@8NLke{kTcaPyaJdLBPX{ag=Eqinb|&qcrx<%w<^4`~Q|XckoF-TKB6 zJv_=TyoesiE)+d)`KFkb$&QxYI0lUQ<%NhhP%P-Yh2Pax{3kOK8?)Ma@qV`C3EVpb z?y6I8$G#O{Bk-AkE1(Bn5o}dx{m}%_hS}A_IMvz0Cddmn@DqwAG`Q^_rp!Q^I@_|TX1{LIto0~ZmedM6~FyZGQOTNW=v*lBK@|C=y2lx z^ao*^%V{P5n8ZSvL>v@ySSfUZA`92?t}W3&jaJM?1wxPuf*|zRBK!w!Vv8*- zs&kY zI&EFmbSRlP<0~i(sRuSx1V(glrs!7%V%>G8s=Z?2;p2h)7pvVHHsyjfPw@E3)l+w zTQ~H4mjZdt=t$BTJ{hbW8j{9ivR^>qC;6iGX-lOv>2ZuAUH^vtC+Q^l z+xY9nU;0^oC%pD=yTE_ptKh$f_E*e+XjPzs(&eA_R>=0ti;dcBk&i55PvVl@gSveI zCrK7E7EdsiAx9bcIoyaPg3>mt4pa5GP=-No)ZK$1Z8wrQ0Fg7hCa~l{0|oP@Af%0s zFDM^SKa>{4KM;Cd6L6>Mtd0d{im#38SVacxWj*S1f5!I>?>78*v;BczOCG3>j=j%zG)27*>fH%ZLvmXnHui3Qtw3~qi*O}o5b>US=Rm@LcmlCo zkW$tgX?}pI^xFtbicyqxW3JLC?1hvy(q4!lb(e@`5qD+Dal4$)3&y@%ewVCk;Aa|E zW&IOx@?U4hSI^DYDG_)pK$}!4&cl}}79}2tl~;}O`od6o!-!vmFBGY&`Esxp9>?~2 zj`^`?Ku|FxX7^kI-26r+WPdFtBI4c6=5aUrq}ogy#V#ErLX z;qMZstfVnoLtVVHTXp3YO4aF?wMF=hyY)#A8@)}6` zqE3`s+@jp#=29`y4N{_*=}3~$#O%JVA=Y+wjcL*rB?<%FV*mX}(s} zJuCVh73ck_A*uZ@d#F%Zu`6fP@zU+)tL2w^>QRYbh{@)sYV%?L^>&lU3oB9l&0Ojw z*|Z&%n_dagBi>xC`MDZpl&K3am4H_tH_abiBw~MinH^DJB~mKqfzc1wX1 za6OsDDVe4$*J{KIY**Hw>i-wZBm~za8I(c{wo}#sLAb<}jd;( zEN#2==8=x1q&h+Ji^J%AR{jMPb}rT<<-#Y|MWyx~BF<_}lLZGd)*77|Mug95O}2h{ zsW_=@S06^nnBb8+iq%lHK<%aOfZ4mEd1Nm=S?T8f5IQ!JMA1nO7;$>H+4}D@-cRD0 zvwjWSIF+&cbbI~Gjm;B_ZZcXAG9zo6gGDpNGhFL|0u;;0EFtGQlFh!N8^4 zz$rZ7A@^H$ZsBTyR*J5tXB4?9y3s1L`Us-s-SaK+NIJsC`b`N!) zl%#=f^)g{Ls>rwCqs3VHHt>v&CZKX5pppfsI0aOM_tzxeb_2DG-PPu`9{5(v20;CA zIyRxdLq7Fu#q4{lAw4;jx=q^=r>qIo?)Xw4UO%D_+jvrDhw*lGhFxIwuTqw*13BTu zV08W!=sU_v5?@J=PRmW$!FtoZ)tW{_6{LEMIe1U$ac75;aP1kI>eV3Xsp+w2N9dO? z^sT;MdT#1_sd$XbOC)6_N(`M`Um)m{HP4y|>0;}GBV})YqpJmn9Z`h;Q zY(1KK;|rsZ8QiR9_Cmo!0T=qQFIdCQ$L!i!?~XqzMdo6UIO{7^tRT_vdXi2dFiO@f z*H&mj^L-50MO||>GYPe2OHWkde#tqA2|9CR-ml2#&8`lTnFP3 zRW`xdxMBXW6!wU`xw!Ss>>T_EbX7`R#gSLl!;hiVU~?N@D&AZi*`=y&dl;_+*}5Er z-Kq~WVs{la(6B7v9s4u+wVy!=0LY3CT!D1ZdhrSCDHj>lc@_Pv??ms|88~s?7_mM}3_zCOWnKCLa~X z#B!gA+2Q{3#cJG$%JRHuefL~ho*UhPWV>1l@zp|*0@%LV(r>c-!X=c*37lx%cqRW- zMDkC-Re#MVy3R-C_4yz)1lnFLiF_mF8zq^D-U6R3SoGy%;ItREJFL%e7TO7Ll;b{f-<$;l0P z0z#I6DC_>B2FBUu8UUhgl4LXbcxc55)mW_Jih!wzqv$VRG#_<#8u1hKl0CP40z;|Y zivbgEQ=}hOJvjk0CTXb0`Cx+Hj_|p(n_I*>pVV*=IaR}GM<`FJ^{RJYNEEcW9Kv~U zBnDEZh+@reLGG!k-DLgo944tYrS#@{9i)fezfnv3fn*zQ^K{cc-{(D`Eu9HcO*^j8 zpP@lQLx*mLpsc0$o%i>x){YCMms|L}wOJ)qhl91d8b%I5g&ZHI$#5?^wMuoWkLrfV zUaTq76JB&3u6BJaoxtkK^@`uSX#T=q2-P!VXaVlqge)!=Y6J>YW*HQOWy-oTed^a= z=A**y-y;)_d=cumh(eUhcdU0KBOw1jRrKgw1}u;}UlG~?bRG9!AS2!@xA=TTRHukB z#$yO(#P@+X2ePdi)p;!1;a$5!NLmQr(LmqNSdTz$r8_p>X;T^y^}P& z2Zi2A3XxNP%riEvv$ejH4xB2$i<6+UtpBBV^o$dl<=Jd`F7AE?)aND$1*AwvS%)&| zMffB+2T;uB9FVPPo-OCVG@IHmvt(~ZM(sFvkQ{q-T(C@qa%r``RScRpNC=k^=aCfG z&vEMEpJkX7ftiNn?P^JtJR>D$-tyE-$79#5UXn{m=fp`9-&Ym8Xa7Cc_%CTg)~_&y zP6~Z4E(SPWl5x+%lY#jmC=xv3{;Bg|bT~m@a}PpLtlI zWQJge+2aM#vCAy$T9Obthp{f)+i>u6w$eOUpvYogwtAi=0Jc8SJEc5*@JumvXfs?; zou3C>`vMUhr93Qqs3vvYn9YT7TW?tj@FU{91{@XCG=iiK5qO zt}FH@X`?Ga_CBs4fL@`Y;OS+5g^i?9Ag>LVF`u8>GD(c_76t4s*@#7(t z$+OBav*Z|H1?o!RY{Gs;M_JvgZn7Ix#FDJMP0QACr<6@%m~)AGtn8NsyTK9l(U9!- z6PTLhTG|?F)FxDOn3!&{3Xf=RJtjTI0d**d!x1^Otas6=OC!d6%yA4UFil9kS?L&w|kz#P7mY$E*$!)No9{{( zFJ>IWK~J>$W$tgj=rz-W(QB~hyC%Ec|Gb)F@tRP~XadMNl6ol@Pgdv;`}d|W{3RM1>>liys2(fQi}^LIvc z>Kk<57xm8*bq9>Sp17k$z}DNM#rB9wind~yZf;RGpgg8mCBV)0Rp!Y%FcN;q0^GCE#p{wf2)<{e?RH-?$w%d z>66b4&(np0QGJuuID#;1JG7>c>7v+U9OTz-;U%MXr}ZwydTavL4%-Y@_1kPQ>$+29 z+2gHL}r&uuLljY)mlJp)s-b=$ow)h zJ+u{9a6=rIiS?x0$k`!mN^#PhdL#*lQxNdgL$; zkge|&fUdne5(Ms^`o4AkvG0pR-Rk!VFx5e9%sl-m=`(wR|7AYkFsrW>A4}Jgt#}aP zSr{eG#lEs4m)7)Cc@hMwK=sBns9uwT@vg1(MSva9c_qwC?~AzT0Le!B;dw`Fq(gzP zfLUzt)b@uJBKt^d5~)$wUUC4oaRD`>cIsBKP8a$`ii74M!?lU6b#uDEGyjtQG9&3O zCoY%%#<`2Kjnf-{{8#nYoVvBNCDmChx#@{uTEVH4-nQ1DxCx4;al0>SvTubQ1I>a! z#{ULTD3k8ink4u_u-2cAoY9C*dOyJ3idLK6V|c;Z>YRWV*W0^zKob*G1|zB!M${J< zV07mKoU29yz=FwSn@e|$T0hJ=HjfLoCVM^E5;VUhPA~Z2+wsq_leaz^u0~x)V0baf z-(*FqvmEjNVGYHQNihk^kDqV`F$qUNNmZ_dpt8xYC&|NbBbonA5|CeyJ;9G6zpf&s zN-8K(QB~B_FrMV|=~<^^*>v)Kx|{}pG%nSeMzHhgZe?@P>7b|V_~|^udUN1Pa?Wbi z+($zR>b%KkTFLyqBz@*ypVuNlgc(l8KVaG-qwXf#p*1SlG4o96pWStb^tg7d;mtgY z%z7;3GY69Z)9FJuqhnOfrSxhtg6632t>CA2cVOtcp!dMS;nv^_v)DJ87plfu>Q6}( zpedVoy2^ulG(gZ+{;&CZJXgAHR&z+al*}(D$F`XaosG1LIMrnE;yHXnAG+SS+i*dO z=gsEPh~^!~k8~~X8}e-CZIU1QkCVX~-V-N-sdjgtuG+<_4jnj{Ce`L1g1jW7Q*+{X z^C-X&j8#upfDo&Os(abmW5HWlG`(}`<6FeEY0>kJP>$(;Im(U`Wx8PPHQ55din}R* z4x5Pmc2#=6U8*>f+XJ<)eu+O?-;G(M7CccMgjv)ytlJ*jYQ6105+~T+5}T4rPGcWn zsSUP{4JHhuZ-AzK&N?>#Lb=hwycH5?zQ~;$=&{_s<$yy&?7+d-k|D z^kBLa1U*72fcxp=>e+UM``h=E;i^~YGe4JG3D&wOllG=i zd*WgY>+-H&*WUr9wQDpaQxQrO&nn_gJQAqHYmyL#_D&LV&zUSNf|+{cGgtWBRmxd* zY(alhSqmWRWtoweMBY~nwea4w@@SgZrd18D& zak|_~Ud%Kv5r@3ET<(oSUOX;e;+Zqhbxa~3hs&W1^TkB2-O@|tW^Cri)=`~~KdvwyJM;80CaH>Bq+W0ce3M|hCt9F^$PbUd!AM?LDt zu@!7-mG!6B@*h#E?#s4(zE;UcWw_RPc$*Ot>JC{{1hPnDmn0i_m}C3*tY|LB=)rk} z$W)j%k>uie$2GjU*k<}+7SZPmb(VaZ9F4NmX^0=GMr6_K+=k|hoXt+9&+w%-t<80x zb4yQ(s6NM5FeW`D_=Pl@>YBQ)_Br{H6QKZ=Njf zMz1Krb|2>n<`|Y0pA7l4h61u8V#h?-n#(N8{O#lN6TlaiA{ex1^g^5yz+Qe(nOl3? z>rcTgOo#^BAd*5^cI2+uWlrm(k#fFiO)FCGTZ1!%jWWS)9Xv?{s=yeYM+TJ7p0716 zr;c7W?^dnpc2csX@gD7rU(LhFW3;B5RVEzFcr~fWfdN|6PI&kd`%(B*M0k9FafRGI zbB`LDu2{L^(+^ep_0~uNn{Zt+|0vy2dz>3S9{y&tV_`E83C}04l=FNosLOaQE%r36 ziR7q3{Wi-vXI9MDUF!_gwld;|IkFY|>XM4G;l<%z2++dki>lZ#?u-@vz%t^y$K7zy z70PTlm=Vqjl+SX9zM;o1RS04->~(V+Uwi49{)jWf#8gX))BLKVylIrrbBBtN;HkUZ zCToy-SDZpe+Iqm~<#qIh=zRPFh^y6t5zIAl5pUQb!iZp(|MIy59I^5F)?FUN+ou@i zrBL;;{3yAr@~LkvBwvBLEGwfp8y&R8zsJwes+Ji})b}#C+=1vpfP&Y)P1=6V&uek< zIutaA;%5L?5Q-7`$VoyiY_fj%em3jW2hRdjk?>rR1H-h~?L7EQQ4ZQHL(&r%+&;pWPN&&r9$MH(5LP z*u8HQlZp5?vJoIWK%0ybN0{cG#QEZ7U0*3@gB>=3cr>`uN%>qi%00Tn_PzS(ka>H*+~uMN)-=SrDDb6;Y#(cUhj>hc#=Q5HHI&cb5xR>01Z z_g;CHz-@{LF2?RvK-Pz0}cENcoqv9EL7r=xWqVaI0WJ-Q!hWIDhaC4 z%jX3{;}G{{mtwL_<#p1ZpSDfDIgQO_;ryHw8zm~g-u>SuPaqfUXy2ptnShzwmi|DgFmO z*HGt#BfB;y)wMU+RW_BQ6RBAfpn+` zyv^$7dfj|2V1A$riHBGWalk>5cM|v^_C1+Zd<$jz%FYgrQ>abUeM*Frzg17ZB;hTv zR&NPaD5`}^QsonPX4y6RNZO^ke5O0pAK{XCs=XJzJ@{ql1+|2JoH$SES0#jAnD9HH z7Y5#p_o7(l?TfqUg)2y}!dtt;%6CI%NJ`1^s+@k^jH@EXP`zM!Kq?6OZ9(kyd5|^@_j{L+f$E1L!n$cl>id$NHJLsaxp?MlN)qx z40<=zFKpVdvVm-yDVfs$3Ut$tt3OpSCWGEh^@H?whaA6(;F6grlY3o-$eE_Yh-7^X zM99|{DgZ7}gwJMcbLo+sp{yvYR?`Jb&p^C;Zt$KP;9#-C?j$ zzBLO6@mQKOFUq_8%^qzTdKPG599GIpG7X*f?l=r6Nhx3nM;ECpVWCHUuHErVo*E8j z+Im?HazM(d-f*yo)+m$+%3+W_6GWiW+w6E0@xhwdvU_ps?(Ce6 zk0M}5m0sB?U^&U`;M%`i30QV#KkCZqpc2*foDRDo{BBPynq_&P6G;m$n6wqBp&8y* zs%idBcAeZOxd?H4PWhv`;S5;b-pJZC{MbxA8$IyKKw6JtjDr{=$tEI1q zjw7@^L-@hzX#f*oY6F(ErQcO7ZzetnzMYJ<%65UJnfm^Z8KezH5?lEH1cvol z-~6~!Uu&~fJjCf}SR{wRuCTie1f6V8;3-idx-5reN#v(QAM`ub-HhNyIj}!mp9Ng+ zii_A}8!B3!g^v%d_eAUAvnAvEWdP<~%6!bmDA8$dYY}h7e@78OH-wG>{%j9IzxE9G z(#vipfR}{A)lJ>)vK{6l7_&}C1`2h<^`CiodRTfM!a2Hn0Q8z_H3=rz4y(tR>OoVW-SbY#K0X&l?lcjH%!>kH7pHcKZ*hk9GoE z#3#h%R?Cg(6C}xn1RP*k2Z`pTH;hhlPpJrvO3hOSpXmHpv4rX7@*U2Dtdv_w1avB{ ze9_3@QbwkAv*ftjT*;KCp09{04!RBmaK?t}U4`L#E$G^-Gq2iG+rOJ_=QebjhpA+a zBcqmkL<+*5&%5Iux%Mii#b;!)g^*K8BANH`kNE*t56Sy4NlD2PRVD9Y`z5V$8~~Nf zf1cdns~0PUO(~&K#@ca_Y^tn{`h`- zUHh`G#iwS+B*O+bya!}{iDLhvd*IK-)2t!EsNSVCRIMIk3W zv4DLF`MgH#7a5d=Ujq)&{)I#%^atQ5CcGwBUor$dPeZCO3}5~1u;`&8)_ zZL)S`%hrA)ajF`pa3y5$b_eVUu&hU9R_uB1ghyGmo-{9PgckKiyAeGn7(@RkU|tC? z;(AmH=K%h1{ofw=-Ej54VzN6c9a`7sr=yeIdGCtdP!vZ+t64$eEnt%OO85Dq-+D{{ zIs62AR?mpyd2~_I#(!{hwZ=Yf_Tb_&gzl^H>1s*=Mkz^sIPAK zHTxeznW0^Dki@E^=?uY4wTlq$Z`GEa%mdQo2F9TIQC0qu`ozFa^$AT^!X+7DTsWN8 ztH;=9te?%!rP5Z8s5=AYi2qVKJHxk@AAepBiV;_USbME%ifE1t&2fgH)b6YJMtRTeP-o zXbJSRP!wh&PL*$?=L!X4t3({HGV)H~L;6re54K9gbRN-!aPy;7A|}YQnYU7YnDhb3 z{879|{MJ;nTYILOO@?mgm;p+kFb_qi!rYtG&PB=pkN{H9tlmn@g+&BZ639_Hd^tL9 zV4E|B`J$7a0mAg7g4lzy0JZIyR%^?|i0H3?um)bU=J&B7Oqcf35SDQ|5atsgh9O*6 ze*6n=AWY8gO?TOYWyLDg@R+{$DFnjGq)0*7AHORDr)0g9n0eo~U$Pz0C-VpJVtjiV zWPVDWxJVE>q3MZq(f27zLDP3hc88{4)7!|Xk>mnRcS_gIytBLdc0UC+G;OCZ3Ys>M zNJEphEK|LbnIW&3qt2zQ6QZ=G79Fr!nF65d9T^LR>@rbevmr}c+OB$-_p~Zg&^1=N z+8w%NU1fdMLd%MO#rg(nFGq7LfKaje{pi$oQ7!v1eXHg^18)!2$RN6;<6^lkg;%bS zZl@L*B;oEm1-8e{5$SM-Sx8}L(}2BU zHtg9tmF34zq#339rM_olxE9qkP}*OPtTd~LuW$3mGR7x7oU-<+D9dUOeA1MV8&sIIf)M1-3B>&ZAqRRD@ zl$d$3)JuJm`F*AHJ=FsKCxvj7QR@;ir<2~CcIE#$d*EM@OFQd~`x1R0G=I}UPk0e_ z2~C%7w>F#%&OC6n)^rNBt842~<9VstoI6W!$BpO!px_$D<;q%P|BmCfCnn;RzWwh0 zsK&L~v2O+oi;|ExEurI0aSP&bzk;F9 zi4L8YGQ(`zLGOax{-M2oyGzpMTHU;OGWrF|mQHTc@Z0t?nQ9g!3a>B=YOKBle-xJE zeChWU<>&TI9%m!2o@OWFswWS=Pcr{ZNhI^;ep|5ACL3{`#6vRQrK;q;ASGZs5ZC48 z2;$W9#^L|O-!V!GvVyD@v`PP~{bnk|R32KFNk;y*u%K?t~hipf`ck7~|hN(6m z`EQeNn^xe=4^1>cf+hD@XS}-yh9&iV-b32bM@c9qiBdH5e6UCHYVRR8)snm{P^~rg zBom?CLquDmG2*P@9OlFC^(US!KsYB>{gez zNB+Xb8!z-%ui$^+YzR$-;sCz5s6&0R_n8O!BUM$sH#dEC&(|DI@4?s9Y=Rvj;H7&V z=cP;5exYQ`ZRwI#y6G?Opeo|y=m^Wf;ZnlDNpn<0fD>F^jjk=&UrN=u*YxkTCr%q!k()e}SMeK`a-@;1#kNo=VNMPFE=# z$!U$(^SQ{V;!lrb5gRATx6QocZtui)%PCN3YqTVidCg7Tuw5w+*yXA!d4H4=;fNH{ zNHYIga^t;KdumluxTM=O$zY!YsmOHo`~9BOkAg~DwMdUGwN>}k-={V)vy zKa$F^SPPY9eS$HCoS5TSO)u+*>|PsNiAd!ps)9;`G5@yG4Y5m!16e(TFM}~FqJDxn z`M2@6i@&}6Ir#JNSIA!pe>HmYWohJe8hQE{z7{Ve#VXyx#PVKhDWRD?RR=Sds zxP)F+Q~2%ynajN2Hp&!E1yS!5>iB=i#Y0@`053e4n(wVrIhj|WDyL4DwGo-`|F)Z% zD3xqAh+uqPpLW_Mb}FrnfEx&(n0$Ko36g0+s*V% zeS;J12jrx_QADzvLf#@C(WYIpPKcm?6XO3*lgj^;!5=Aq?K1K%Z6U%uihu{i(b)(3 zGhC#T!kPAduEm6)id_N;y2ZNpR$F}Y7+F43j1e#O=&{^^s0!6SCqd-<>M`SU)H~)5 z&>PT-?8W~$2y3KzWUU(^=|g%fV<1eEfD0!+w)rgXgc6fPkHab6fwV3ULihwqjHDod z1+8)|gkvhC{$KDL^jrcZXTeBOHV7EmkdOj=_x zV-u|;WJK71=n~*qoJd6e5eDF?`9`%%Q4h9h3mROUZ|1?+B|WY2bjv2)&@uh&CQsvF*i!@!La=QYtN0LE60H88QP|;*surr!tt~yhuKoOLVeXcHz-}Q5tl=S#PW~f$9jIZ9KCo^Q=!>d z96g!^nq;|ZSSE~5{$Xki6_G4Lf-rDq;42mm-L}$}VC}2v z_#v25;}s#`UAu_jGPy3KtsC^RTu=BIrX%28v+xaD{R`N-5{A3L*p+L`FY<&>2nxUT zq7u#y>krU75R*Aasrnb=1c5iCTEH9r1|}*WD<(cx7?L@4hPq;-#Pz8!8b-XjTQ?DH z&2j6IgMGEepUDXnIoLB?pS{lxwxx3NvuMEjEi>`&sK15*J$IgU^IoY%X}FrMwJJg^Lgvc>C1 zb>4TR3FWgw8qw@V@K}I}km>R@4|n25QC`H(VraY1yKCWATJo9KO!g1`1Eg$yX`uGw zZoSy@vKly=3Nmo%MWFUY!$n70Ez5)6@6zu-qCbo6=F3mpJg zINK_8q5hF+c|Y9)LA#5NEnCIw@q8bzd3IssZM7AC%Yv!8JhPTO*W<8ZEZq|F) zd4cg3)iacj9w=oO&-U&|=M$3m*_;Tgo-f>)3Cu_w1aLq|UK#re{r zxIZ)NIo~r*!~y$>sJmwS%nmdguS)5;_LavTdSv%v9qmFM$O%&Bk}@14 zPzojF!xb*2#Dxq8Q>!}g#Ul?ojxOAP<3a|R6@E6O)o%-X zXpE>0;1V?GeP3G!AL&RDAM(9`_q9&{pY`FCesiM!dSMhzT z0bZ5MhHW{>?c~rDo>J5Q(0KXr_q=l)ck%C&Hq5*`=i1jiWXBl^xf`P0^%xbnw|y3- zNXhPgB`GP1N{N|wMb}GjkRviy)e*!ui0!6sWw4wKQL-^8j85HZOVIOi$xWafK_V;O z0=rQ_6;>{c!2Mh8sD4aW(ns~B6KOZ`^R!=wdsW_X@+}k@4kYsnNGiV$2M}R0lE|p_ zam8Y2v4^!%dTdLA&ZMd>P`i>$C3e1;gmUSymBk%_$m~DV07tC}$%sENhAO$)@z%w; zN}#qtHP%v}YZqv-gX+q?XsfbAWLj?J+eb*xZdMt2vuRHs+Md=`cubm)=1t*8NzZ;J z&t_h(YF_Co{0Hxe^h|MA^G``Pi}Xy~HL#Vpnup@wCuv=(c!%LrQ~a!zgnX9W+~1sp zMvY}e{ix`oLhpYlI`v5$4NrQ)ULia^Jjv3qF7}%AOs=VH9)5OIAQRzcE$*Xg7rk$| zZpQs=eNC_ydzjqOyr4Dxo{5!6a00A5NdGxtZK6&ZSnC(qUq>@qnpy@EUsfCL=g7ANC2BNDB{`XDdg~w%zy7~1)EQ&Ub-%s zKbE?QtE{1W)y61HO;yZgPZiF!)I6mpDXUu_&9!QJw5A~UAmRp}jh52?$KIR3M_FBs z{|QMTEW-pO5EnFRv_VkNfF_1$h9oc}38IMLf}l~rx>3mp2nn%CG}FgH+uEwNE^TeG zwJlaFxD!AKn}DbVL7f4|TB%I8DoZqHrMJ@?#m z&%&u{AKK2rS-U7Qgkaye0-qj2VzF>5mou@sCL(H8WjsP)Vxs&0ILrgTi+^T(%Dimy54g(v}{@@JoSAXeU zSd*#>3X}|fH=q&`b=Um!{&sQuJ9nf#m!U&8yKA*0^&hSkojkl_!(4ct0D#qQW40lK zH^E~S?eJX6H|utnK|Lq}|aVb%mnOFDg0!K$ioHk_oucv*u3C`Bx@-toz5Zff{EFP7D>jK4%4I^Gp-=tZ9Bc$x zoAo1ZMnT*F^msL;q_*BES8cVoMbwzubfgr1JFH!)fC^kfI86gfS`@kAV_ zfPV$|b`g|oMktdi+bF(=;-Fdq>aG3UUp)=Z#QLkX?;_UZ6KQ?7fEenhQ1`;-Jp%fRIAZyD7t!X<&Sf3qS zC6jh%*&(w&e+QE)49Th(WE$*~gh-#=3iEvIqO?t{i*zz_6&MvdGfsw%o8pk6!6^_l zn<9685sN*4&Mj#v_G?(jqFd1m#R=L02X=j|@*LfnzseK@`*Pf+!}mvMHdQly4r~Aw2B>$Iy*8#gCyKB(kYu+4o8y z=Gk(ioZt>?yOBsNd$Jbsoa1~1Yx^Zq9M*P#pxD!cFP}}&)ZZ;p{~aW<7qS0Dfcj@i z{Yrv;hmhuUlpM>mNpj5N@0FxPJ8NcSyVU=w)c-6&Q~&RsqL6qeYW-Lz+CVP#AFZ{% zW{%NUZ;<}~Msh6Aj70rklOpx=S%@H(xM0T1W#e0B{QrR4<+nrlPtSnzAN5k-)=CXp z7zeAY?HC3ZKiy^57VLvZIc;%DhsKl_75}1#P!Q5P>2-e$kYK0=e!USxqd++LCDyJ?iWjCzIq`qQ%&Wi>6 zwBgF?B|?*0Qej}p_H=sLyI}p7Jn65&S5K&HyuA_CRL-X}!=qt6 zt+9_vbni`Q8sS(`XYojSxRtmxBMtP3KFn-K{v<^jW>4e(@gTu+>k62NTWh*B%)T-O zLp&sL26J0oT^<@aN2D!y)hSJ-Qz5IKt_UmFd)IjR()+9R-iA?x1Qpj&35HO<>=QiC z8Z$F(WAxnmFFOa%vdU&!e_`Qp2xSQy4yi|%zfxbM43cml)my$4gQMaCJBm2^7^I%i zo?ByI@mGwzm}&o-S&(V>rR8XZo!d6=*sKsyo6} zX^nQ}Gg8<4!$VtzyInIxM(b7f_Gy(?gLEpI25soGdgG0Wc7AymA?9dQ2J^IBrj+fx+(?d-&RLoS_{|g(BLIh$xBNB6Tm#M z{Fx?k{x$IV)i>elyOnxmK7h);)|fdBU-k@kZY`Sw&|ssifmP{5Oo&F&ro2lF&q3R& zmJqdCyXa&MM(gR0)5ZFs=r&>!Ql~bY-cLH%Fm!!Nu!zmKUpAl6<8#~WzC*JTyRT;> z^tfeqYis%*+L4CXhbXK@=KQP@$8@p`x|-3WpMQiwL^Ga$fFHZ{iVm_2Vhg2D!|X{2 z^x>9%T1riq$Wm-~K6f3T8A&sF3&LizZvy<&|NFYF|7l$NUuh5fdY52fPjtBpE#I}t zSXnULd4htGoSURbSvJK~vAiYTNeE+p>rcATZnXk&?0iwVwJ-6$;jDPT!OwY$pEHVP zYM>2X2#L@FhhvDUd_mc4PF;~X-=$vG{{9Pi}N`KMxL4uY)fp_tD z(DHn);YUErS0th397W3)ftJVoGqfyXlSycK&K2?Ay$6y^M$4;+S6WvnT0YvKC$gU^|4|CmA8X3@Pp) zWYM`%gxt?>HRjcW13<_=tB*m)Dr08POBA1!gp=vX?TV9Ye3loS46fq|a-FeHpof94 zaB!-qVjUSBYw86>gI5bS?&Mvv zODhg03c<->6Bki8-mf|3QdcF(E&L z2TquH>+C~34#~I--q$DPWtGfOIawq#hH)4pLHpP_Dw#2hAG@f97g?%}j&v%X zf#;2D#T@Ym=(_-h#}**x*_N%~$(FcS*9a&(bdl59Y+0G0j>Y zy5(8{J_vz-BjmM}pGp$y$t~FGvm*Y`(a2G$7tDk9Jq%vftbx8hFFXbN_|N2VZi96E zdpu%d0^ZxB1N>HghGlv0TPDA`@@J6zDV0B?<;_m(kb}8i#hrN@-NQ5`{~1{h_HgoY&B_?RcORx?=oeD*Gv7J>k*KWMFgi zU_s1Y_!(xoMI~aDJRO7{cMJ?v;2^`8TkwY(^JGRVL&i2~rG@`$*=d;H-C6@M^8C*W z$H>6`Eyr#Yz)~?%oHI<=s6}M~Ie0!2Kh+h2_W`NJrR z^j|4*$Jylhtz-2eRcz4PZ@gt-H%AD<>J@=-)kWweS6N@!m*XMB)qeOAnv17|@W|2r zP?|qH9m%6IluNPKP}U1Kg!~-G|GZGy0DcPjU&?=fdFTurj}NlLD?kov0&Y_v?X}8k zKEtHj3{Cxgp3S8B8)~z-vVKI6n|inmxKj0qk@+~V4maur0(HuqN{pXK7S*e+gfJk$ zCafX`t@3#yQIV)z`;Q-U93PN9X;G!syI>V}b_$xB0#=L2vjvaE8Fj1$SJZp)GhvyY zFmg54SQ#qQie))325Ek>PE;6LD#O`lT}PsUBp* z9@{4e+-UhTi9IXdN4qh%rXmu3*0}NVNVv+LHPWzy9u{~l8Zo}6E0(Z32Q$K>F=kS* z5h{78$X>xKnE0$bLCt0|R#t`wzeb%YfwV(@9BtK1aOBGhHiBV%MdQZT^uYODePL(s zeM_Y}pZC5cl~yPB=3ix%X4!k5mg@R2(H?)p?Kwyz-kuYDCE63C$pBub*hnDwzPx%` zam@`13<@f)5TwI{+I@L@h$$p8B~!Ub@d-qc%#)y)T>I;V?)}vX87_l^9 zbwg(5f*cKpdUcGI71IAon$d}ZJeUM8-2Uk&4t^9HbuNesS^NO;$Zj+%8cKe+%H@$a zkB#&Azaf#1#^cb^BS*)yXpV7k z&~0%K8jWTw7D$$y(Uq+06GX&*;ZyqSAZ^lHw9wDv9o;6q0rFwyU!uL> zO*~BkF;As-be&=5?;j%_-NJV;^MB`j#AC!j>0M`}Z+Mr`%s;D%C@?u<2P3Y9voEI+ zUgMX6nG=!!F~sEm!htyQt~bV=mKhtUx#}nbv*-cdEUhoC&tR;28-K&<2arKnw3J&V z`%}&BdYhU^F4!ulsT9&Sr*Pu!HMtP1SVI67J9!uVu!RD#)%LFE1U+K6|MTcExHrR0 zl`0BxOAb{`^~K(V@C!|t%9nQ9a*VnVcI!B*sWr#8&3OsN?u5|P9G)fMTMc%0kgPYW75#%JK{ObGj_el!Th zj`5&BxMH~%PLj^49pk^)r-Ic}CqflQ&({88oSaY)7}tH6xJnhOq4G|Gh&ot?4}Cq zYZC8g8W&i@a)I7?&miLnC4q4PggRJ&s`X?(#PZB{&STEfLBjj?Hcq8z49O6%b9%u( z@pagiyf#aLt)uX$RAxl19qIG_Mphmn=w*T8b>4Zah#(E^3Jt9|T(YpPZ(L&FDD$2! zJ>vhPk;Qy$f6QH!(O(bKESSX^XW#yT(6 zY5H`06#)*Z`Bh|bMeXMqOGtADlN0GdRT?{0%3+$t>4;3N(;2+DsX-n`e&RdK|7mcl zD7@dk?nQSQ{$iGauf{GOwjw>BBNm89CNf}^=EM2H#s!3=*l8(fiHIn-D`WTrZGO=b zBV)Kdmi=dfuHlY=^-aVW?wCL-OY;UJW~8HKIOaHBPKJ>){JheUGyIr98^ay_q_|ab zIqAuUJ3iL=%s5IbYiqb;H$`c{+h`;8hg}gGiM&e?!yVe+Sc^;-gL2Iz?b8I${*fYj z7&nttDAj~KJ4jX0!+eQbo*$ap#c)S&YF5J?TJ002S|IcxnXg9ixGk%KBXos!>vPb> zBC(qks+}L1EV)MYRpimczjP;8`&FRRbuo=hZCfA>R3mALK%v|U{|Ss96Nk|(buk_a zJ`@T*8j&lI9az~8K(}lc0NoS0P>6RqUQS}6i~9a@u>+tFG7rwOb!VhH$w!>BeZMMTP zQrsFcl5}@F?7@!BR$aY}bgj(Y4twT^9h>bG)$MS*ZilOBBqFM}?snMovMi1mfpn~f z?bHO1?QgRk`bjk*&qh*pI~*->%kzCxyKIL})STE351MMtc7R6t8lPwa1E3#S{7P}F zRxuxYzG47RtlJ!SRLs8%ERINxe!)YAK{&v!I`uj<{ zG0&~^)4*gdA_3CBtA;J~x^27-=NK80XkGr zdy?>E{4f{&j0c|iyN5Zl$O~WqA+=EQX*Lub6c%ILA5l|`1~jJsNSodDd>nH{2_`U? zdywBpY65fJCBrZW`PXC^usDrG1&b32w831Hq_|b`!}0{?5+9H!zN27qfmY^Xt^ zPSrHPVvmBwd>V=TH3@T_Ev+UW>J!3QXkiqcAa1;+AKn{1}+1;=2Uq z+V-4Q8$ZZz6-Z2m3jqp&RID(UhiZjLg^KnIRa$(&d-pWNE`|6Ng7&&ci;!^+{}M-H z0b|YulOzkS5mN;Fp}CRQI6Eb{ukH0fZU-+ts<(ra&Fz3IlZcg?+rc0Iv@7Ob4pyY+ z7+TH6Jr$Ne7nHPRwW1{Zy;lqhGOg7Q74&m>V;7pn@}x1rV#%$QwrdR_8az?DzfE0a zpCA=}09uJ(ZsZDZ=#e&8fbWx^WcK=qFZyl z^P-UU1*?R#6)R&*w`@}g8lj(D`oHOS6hcvHH=I3xt;}_i%=J#`tx#Av zEKVY=o|J9ukXDZpcBp@Eg%JOT$u}okI#o3u=~d+Cd}r@r&gI5kP9#qK&)H;%t8{aa zi7Cp!LJ$S$(o;Ijz#)j@S<-YTUP}N(@dqDSiYTriq&eqGj^*iUK5|V_-c72SqSP|I zCHAV|ZWr^5s)%NFCCf2InMp9Q#lMJLONSdu{`9PFaX%57d0aYRw)oK$H(PuJiMqwl zBj9dv@4Q#^u*jGtpIAeFSDM)7d%So5f=v7D&AQbmYNcH3gv}V}4>?PLdi~l{pn1xx zdybx1!AFzuppp$$yW8Qxlgy?`-61P;H>o+f>4ci~4^4ltX@fEX^Azm`Fsa8ho<(ThkSej85N*~}|nDG+PvgYyu>B(3}hUVN6 z{L7AXNBGPxS%h;nLm0?aLC&gn_TJ>OV2&*3vT$Mivha}%-P!$b6aL5ReHo)mtoKM_ z3CtRKOR91Yi&RBJs4l#>z-&B}N4H84BiPO@VGrQaP|`#qJw&9MAVMCBFL#fhPw3BzrbmXQ-3jO z3U@b4Lov^yBKo25c^x6mDc3G|vdu@v?szQwr=&*KG5cC3S7I%)7VbidIUUW)Cdd%=)V?Iq+?74zo9CqTjJMB+)PJ7i#|K)Fvc-#XK3*230 zEkQ_nI zjrez3{X4&tjbrVJWxp+<1I2rUOY&~yW7-G*kp})-PXu6?DSdVD9~ln*BhlbL0@nKe zBDIh7d&U?kZ1rs%lGrbsL4Uno)4funRk`SIvtEXe)-=$caB*VUKck6A2SN^#I!&6y z4JuqbOhT_jZ%q?CC(#0%%`yFdEivHO!;ix8B@)N}o%|TgH;m8XnD4FMI+bEvQ&i|H zttfAi^CMyr8#$0+-y3>cP43VaYO;pjRMQQhc=?&$DUpxBhlGD2;kOC18uMk@8-;ln zu#iHar7p4Tl~gWZ<}1AQ7Q~9I)%K-hKc|VY+p5Cfoq}XcvVKl07B-n?$7H7ZjKsq< zvLb$RawSJ9_~KU`wMq~i^YA@i{q0jQOLOa#;N+52z&6;GH~bY12ale!AbN?fA=V=} z$|r78gT+YM6@(1+!>4Yg}5aWC(p592Cs?H?uvU>+t0=JiVY9HRkf}4 zj;H9J{PSaAUFK(SEc>}9Scw5`@ev-!>?ESqotPr2%w znHE*XkLLrLs*1Uzz^p9?&85_+@)j8qh+aZ5D1K-ZTw=?kV4E)Dt z05t}0<1e8ZM0N=^50Pg=K=MmbvO{F_GtsS^BvjHMF_f4uLTI_k^5Iq1K)gQ}-GZ~Q zhdH*f;D|T)QY@mN{=BuO7J1*4`h0St&rgv_mrA8e$4Hm39Z7A!B^iO@7SR)?BdL-@ z7cL{&Oxx&07nW=Nd{iTWnCE3$r4l2KI#s)Hffn%`o9M!0q&U-dx@6Kk6ek8S21-np z$qW7Wu-n`Ysnd-3QVM9v3@HiyM;39@+`)XM|M*VmKj$N%|0wI2%6Ns$D(f5g8{VcD zgvv*5FIQ|*=8L|~Akq4mBm#XvAmC_Jw*H$GK>lMp%QR&9x^aI!%5SlJEy48uzRYFb zMfELg6$u{RnSz$Ki3$6IqKM^KOl|mt*^zt2mwxNJ_^?EFow*VLL+iUJ@E^o*D^mKN zmG^Ojt)78yL1W%yv?$WyBKOQf*Uc)}s{DZZq5V^W6a7{?#*PpVLPY_aol;$)ai}16 zn~>b+QBp+d!=B1A@m7F$O8c?j$&;Yx7D+ICkHMm-AdlA~>8%YSKCTUN+rjqIk6{V~ zy?pcIU-!ncI^Xl5x&sy$B1iec!#lCmla%xqed#N(6@$59EG3+c1gKmPOyx+FVOGkv zb2U{;?2#5l4i3TlD*Xm`o}xZPuR&=jTL@muSKCswe<6LgxBph#XIYG5j9s54U)LX>{l?AaIE|Ph5Dw%95 zsaX_PWPMNON)} z$MSq8IqY|g(BDRiY+aFeH<@p0rW(6h`Jgo88o4jld>ASplT7^u@%ne+69b8nTHg!F?cvd@6U;`dgdbGca{ zw;32Jm$RR}&vto2iyM`-Dr>2rB(@S<1N-N&P1%Wp+Ioa5&{jbxoT)AKU4^v+KRT6c zk7=Sp=W<=^m#9P?ETmMbKhaTj~# zKtqZ5es_O#JlTLctc}?uDj=RFftY9dNiKYyC?SF06fNR;UE=Hy;OkOS1ir}p;HUCE z^B_zm8KgTM{~3s4b%hb{4_!3LAM#BldM=Aea2ml|#E)LchZ=9jeHy%@p3JrfPP=Xj z{Gg>)lb0prVXk!?P%o{cr`qQ>Vk=63Pa5QhX zmpq?R%5T>tlhNCgc416IAK#Uobj3^9>@+_ zk#cLV^(CzG=|VmzE#f#t_nuHM4b>N?1WWxEW_di{JJ&EnORKEcM900*Cqe;GJ3^6~ z6CeLd_7gBGX<>$xHmcGmtBFam-&Fj~oImooTa)3pmPYYd<@xQ;p>%H3FaAA_wB??b zBiJ-IP8%{0?^js|bRL%fK<42yDdJT# zzmh{@Y4pP*tnwuYFQtV8Iyf3He(SRFdRZ+; zgA*<7&Zpt%%hi7tb!nfqw2E`7i=!{SF*-tU&~OMe;|~n|=8ZMS@{Dmr?dEqyyLsld zWQ#&`JGXWohwZ(XH5 z_KH4jS3$J^+?FU7LPezutuIxdM{_=4e20k9i`;*YQwp7bJsQOAI9CrL7@2Rm!>*2H z|MeaYM!CasfgMpOvwUqs$^9gzpq*@a<{cY9chl|_M9B^IX>vJtzdFV}cYiA($!V4x z%X69Y(J=<23o`e|PI*H!DRqqo1lRvp(0t;)g=Th^To^JPpOBY|YS#|eVt{otX12vd zzywaz+Qk4_WhmGxU;YB5E`0i`SRpq@FIpQ{8ndZtz!z+X_#0BXkpWd zc^KKg_P(F*;uVMW#fXL$9*Kk8m-JR6lgjbBeV)8?)s5%LcBc!UsyBEiqKZD_;Qe}n z7!1HKJa(ohW~oBhI&{f4@jATQJ_BvOP{ks8*~?cnF{`G#$+v&Q-HCJytG%d|@fH@Y zTFm9co_D$WhF>JUV#_P7;n0er&r`+4O}(a-iZP85iWAt=BXR{f3=)48f-d>ZQ7Z8{ zkP8!n*rv^cdMo`{j7o=2$<=@)*K6N|4mova?@U!^(ZF--$u$BB) z`bu8BH?c*$jZcwSMdOutm9)k&(zSLB5j=4-Y}q^V@2d4ZzAd2FR{c4v~GmzQb#Ypzx5bi;{1N6c++F!!hT5DgP z-WlOm--^b(R>qX-1B3?$_=BO1N^bZ38SN8t9EMnIvJXoXA}iM+CTRoYyek|zC790O zyMWTE_KFYoGPro#H_~=fY-VSve>tTONt5SX?vAW+0JTOokrA-&d4lTbvP#dM?Ok+H zFW++=;52#{EuHK;xn;7ixCIMPvwEinJNm6znbD*6ElsTvPkvpVPPISm-j)4wAmDNk zz$j3j>+LJg?tm|YxzK$Rg~unFdFMK+god9n=LG!Yg|A2re&I)gSUxE#6k|dvnc=Ne zhdqGsN_znpZ4utbV#gEO-}Uw_@9*Uj?PGxlM|7u$uKe?Ha1Is#26pEst?y-) zpe0@YhOe&mHmy%jNg3MH+w>5>7-Ytx%r4ARq^hTZLrlp(u^@bWT$%#TWbJ%MtK=DU zTO#lCwY}v>DiU#x44-pijeY%-h(t8$TyG6dDe7DF14kTUQ13W){WWRu5z$+hK+N-S zwu@ayN=R}}BPa3_m1;7 zYHKKYf|L|*qW}fi`ypx1z;Twe!JVKu<2({oxM2u^xC)3!chzY3N`Bo-`kPPz8S;A- zZ@5Y;YpVisuBIX0P$CeX{UWVLjB9Yviz*GrvWJt{M!c&;6Fle9Op&Ff z9Bz@g<=HGh3;|)C34ABQI--jl%ii7WREvDqVi5rWDi9YD#3qMCXu=wp$*idr1V@1g zTUbZCXaTqP~B-OMC%{XeR^Sd6XG2XV8^8M8?`x0x{1e zlBMjI4ib`C*ukfK^mO8*bM&J&u#8jD1&Q%@idD1@Ywk6$+`8!*%t7xIDT;|%-g%4Y zl$=ORqF^~rC3{T;tGdirJTYs|Um3+>K0(U{JxH;?rtM!%`_X${0KH4oCXnU;=;Z`m z0F|?+p`;Tj3|0nCzrXAmAM7n;7yx~kL0mcLrM(T*mJj;y2_pP#CwZ=|#Px4%Q=NN%qnOj@Fik>57Ar6N2tQnxC z_^iUZFsss93ay}LeBSW3pD3K`;k|%qAkbId)n z$z`q>;BogsaYo%s~69D2Idz9XVDcG3Z7HOXpJ zOpy(01uQR>d|x+%L}PaPz&*57px<9>MceHkmp}4@#FUCJ8CeBB+cTaitv| znQdP^UAXNT-y0#+$O{vc8fp1BL5<8IEai$Q7af;0o+lfRG{wK(Zl?J3uQP=g2}LmL7@o zXC_tnUAcNK=QY$=T!GgU5Wlb$Rw;(J4niE&9EB&=2m3F5{Xo%(Lhs$pPzKSCJ~hHo zRc%+LeQMvw6F|W}N@idkIGTkh_^0gh6ua+ZVgPZEm^sgpS2QkHycwM^7evwlZ2v$Y zbwr^&R-RBaV<@iDshC$wETG+}?;g2EYH{LKkbHR18x>C1TH(aOL!3lacIP|glK&B3 z*Hu?qhlGDKu@roNg0M!;M_;SHxO1?xI)nt1cHk-2D#L5!YalVZ$Mtf=j>(}H;chDe zR{9Ez)p5QYEu0rPT(9CJGSJYPSzbJ4=p3|;=kRh)?ed~NNe0wM+AyL8qv{}s_K4j) zhbsf#O(o6X-2V%d9ZrHE&l^AUL0Pg%jc zeD;=RG8g5cTZUGKW|Znw!SWD>lv>7Svi@&wm&$7FC)S-@(BkkL@DbcCCEQDGwUrmF z#+-()V3jyZ{m5E!q>hHuwP?Xo|B^3r3s%OX1xGBscCA}rNr3@!0TkFwFmZur;aiR_ z_!PTtS^74|W87XCd*#*_MFYJ}c|zcF9Cj|cJ{NZ8TihiYmgZFA<=7t{&V$?~7(oh; zf;DkT-ZY-+BmvM;`pkI)XW?jxqQY+)hSf)h$FLgEudF`7dJQY|btm~PDu6Gm_vzBY z{9re=H|Q%~Gv_nf3|$J#$~Q;qG*b$o=qZ22yTiJOCr29BRC@yr?)>SXne1OXI%c4RcQCX+I43? zn7{a-cwCId4#noy^;j%Fe%zyVQeH*$GQV|0u6@?`^`;4Og4^<%ecw+y%0;LKleuNN zq1gkX8CsYX!miVpe6bT&>Q5V!OAiZUV+P^tn*?Y`Oi&8D0dEMYWpKpH!2M-e=BcQ> zXm+W$F)CLZ@UJ*DH7HMfmpbSLM9gB37f*=sl>aQY5&0Q#bY)(qBfsOGS%~ZKP*swC za-WofPs?SmaxG!M3sczudbz`y5-}gN&I<>ekBYo%@VzLIi`u#9_oi+27jKc(_)1qJ z?tkt!$N!wq`XqXd{dhghF4Zq*PVoh~#x8genw|wgUI?!2=dv?Caa-i*IT@u0n8WC< z*mr(UAY~JvSURkEz(BW9l%tbgyStK=lvh|pS(d5|BAheqKZWgjeucF(VS^};wz3jw zBq8^OvHLsNfvzE)M+mcH71D6RDcbUfkIy?#yl1%_GVi<,=6m4_ZTSBUWGSG*yw zQD4UQORTki=s+pM;M9AWjU3>eaGslcV1_>?}$4*Hy{^;%A))4#d?6Z@f2YSi#x{)(`e7zv@L_J z?dV&sBm9rFtGx4$r$l1JS;Ue?99c!&US21g&EO1C8dSdEMfbzjna`|(5Jh9~#M>N= z!JH29^F2(O>L(2)!1>;kN|v&73J7UVPsy=7A4rZ2<~@cR%f6P>i1MXG=wVlo*m5!) zu8X%pR#-p(fGkI2aJvLi{oHO0#CYjiL&*NuzTmkex&_WK?Rhj$ zub4lgJx7t%0TI~|0tzD5Cgb77Mt%uMzq)WPzdJlEP(N2dfvr}{ZrPD+vi zsv{W7^YzCcm}7v7mW_V4KYV)A2B6v)`O@8$@9r+_Pgn=^><|0J428ni(V{F>ZQ$H5 zX6U>m{9_>dIRi@onY)1mCS~s1qahaUc%Fhez^Bm>H3k1JV=rFh7dNGmfuKuXG5%)AQqE!LwphG z$w1(LkjRGEPk9D$qv?-qh#k_9vdg_B>W1h@z*?spLL?kAh7)Hq%=m^McQeen*zWWb z-3WuUu9iBV*#vWnsK1-0=?3^A^_vB7;Qz>@T88!Ba!SZnaBLs#|DH@ilJ4s+P4Mjg zx(!SWqFaE%7E%=^awTqgLh@r^qB~sxCX7X;Uzl25n841(wL<>MRI6$~`vc$@On2<% zvy|9K7)c!aBN_35$OkTLyg+Y@`W{b}YEvoOX_IOF0cpB0Mbci(^L@H!U}F#=&GC|x zFp`)`%$Xse!aWHbOaabU?C+cv?hzu#%t@&EcbJTxKSwBiAJJShu!EcL6c0ezTwo2w zm^Nk-1zllJL=C9i@l{GJHg|fncIVz{27*u~4NK52H`=7%s5Wau$vGqfLB@cy=QJ6Q z;i5fChJm2hzH%VwRRY#)zPLJRx|Fs`hLD_KXAicQ>wISHl4RJ~$tJf}YZ^Po7)cyS z8)_ucdP_UI^%kix314i~1kW2^3T(vnNqb2xA9LTV-Q``a1FzXwBW{6UKd{-$Rs5SjdlV!nqQ+JhuD*1iW|N#CQ6{q}9f5&}tLA5FCAh?!sN{ z!YVno``4J=P{#7ckL^Wwb8KHPgEf@tUDTttEb5$=K+B(#rj7hk8i{$L`}onV@E{@0 znW@ct0_G!cqrB$DvR9KDd6S@)xkO?sh{d;pxPsQK09npf7%oBAbm15J7TQp<=exQS z78=0(K-xDuVLYYHPPmgq-3he>8$0Mu6eo<4$zS{8^Hx(J#zrFO}+Xg-)DG6ZIxYMudPm8 zX514->?Cvg$R)Tt)80!1Ono;FLlk4p0vR(sU);eJG{`i&??DhcQ54BX)al-aua!&Y7%dAoeQW&riaBUAgn@ z=DXuVxu#cD@AYBd7F@Ir0|VYBH8ta`^{4IEx*gZSJ5TOgiBFtl zgTj!^>!&aih>JkLtd$^lLN$ls5-_)sm>^)TXF8oZe~%2a^SY6!J1>oZ+zDNK7-dr0 z8d9@YN;=06_At_QVKYwGx|D#Cb4l%Cbk;Non2GccdXP3Emk@L=JjY0z$plOfP4M)j zg(L!Ij5HYXeEpdNlw}e}|4n`jP@c(m@e9wZleJcN11JF__J1%I3hI2HkiF+-1eJiO)DOzpMK<0C#Da1{YMq-|)=#zoWs|aaM2|1BpP=m$>67#9I z3;<@`OfkZ;O@Ux8Ygl2u3Nksvo;wloQ+PlHpH_k|9+Qon_O%#2AuT*1dwBCuxFRnp zBHulWf5E-Hy- zKSFBcx5+U2g$two$--cZ9n0<~p##NsvcZ-&uhp(N23uNb!s*ITX-6+<(yl`2)dVou z@|t6?<(E>}>ifoSDQF~`#9&J`i^~n}Zmr6tu#Lf%shS3Wj#mJU(6%0~4uH-g-o{|d zG)?e)j~1Z59D^;-NP8jAmHa5u{FTJH|Czc4Y5tJU;_#X0R*Jcm9SWCGwNC|i|1e`M zSvO;#=H-fY@xQc5Sx27F#Yh zTb_(wQgNlxQ8R|@F?k>yVvUMSi<{Lv@Pe_6Su6y4uTRIq^8(|)Lep{`hI z?ZE2CybGYrR8B=+nJ0--|5V@0oI2PXM?Roj-q1>M*V-NB+@ari?|PEsxBg%T)CVL>Rs3pzC1N;b96ScLB7$_ zyx+;!b%QBzIRye8DjHYKJV_LHTPV@6eJ&-sZg?t93%(w&>5qJlU@{>}a(Bv1m z&JiWHInz>7N(;}c>8Mh-hlD!aBU;&o_BG_lnig^wLU#-yQ`_&Y!1PH$%%8SFp3qgs zh3rpjkSci1K2xizO_92&;~S~V7KM)-tqElpYNDDw{s$`44#*_PyRY9WRR>SOffdEO zf`|=>*o?F&^?NHeRaLLB|5m9tuTITr;hCw?qm3mDDajsM6R7?M__3#5%yoz<@uzK* zZwHA?FJqTkDo#Z-L-vs~*_gd>=R4RPj()XnJf=C?wUWt`hZMiHq@gecWs?>n^3OZ( zbV@n1>|CqFZR`eP-yG5Y;FSb_VVBs1+*)-GnU(p#~MncP>I zwntplN|T5i*W@7kYe#OD?+52m0s1z7lM1#AWhx+JuO-usP+O(-nYa7^we8b;1xiRy zNr(I)Q#^?3s5{MfYhUBj-Me^q@VLrq*?3&l>>rNQDekf&Ek(6#5ge%AFQ!LCjAM=6 z^CD)~%!WVhz4!#1@w=0TAVCX_%XELrCUvQ4)!-7bxQ18%=M&1#`I69wb|j1Z*132x zw$4-?*pI~~3=)87-LJR5yb&F*6KXp8LLL1$UtrVVk)nb{UT1G3OIWfdk7>V=y#Y(h zoH@wntdlbcpUz(9R^|8pKdaFr;pWGWt+~x1cdhni951*VB$DfUPR<~^Y#J!O;Z=V- zp*z3zDmvfPGF6;5gBn6p!7E#E&5YoiAK{XzHolvy*a{)^m8WgzN_ySb!g?4DW}CT^ z{~K_eF?m$)l+es9yZiC5dG;68X4Q@Mo=^`gF%1<6BV{~@r{*eaoj-h^8pH5g-8vzC zKf8*WnpS}(aMC0AMfz*6>PvrDQ0o)-OG9%ri-TEn7O`iWsZXRYOVQN22*X&RAPmoa z;ks;ntrpjCwDcXRGo0NBe}u)ky-XP+Kj7UUZlrU|3zU$SDE1S=6dOY^v6+NNTD+r+ z{z5PY1e_#jFr4w8gnJX# zE{S&n5w#aOW3?QW5*Pf*c(>l7SGO~v!h_2sY0&#-=o|0voXtxF&|i1>7Q#C>uWIw%l#f* zMC*{;?-6%fW1sRn?)RKI43cAUbm$o|%c`?i0j7#&pE8Dv{ka5n?iXB~JeU6_O5s0K zt>3z1rT`hsk>Oobdg`*n_HR5NefkuuK8Mmtg#@2vC4}aT%_~=CZnPS(0eu9l??J@9 z?(J8TSL*GD(rnF5_2)sW-3Ff!LbRjERq~tRT{sFE^zE6IU0aBDN(2#7cT-c5KhN}w zy!!AoKho(Yh$OoP`N^$JTT)rP6pzfU2ogqw{Yd>4*3OEendqo(CBE02Rq{d(Z++ns zYge{JhslNNbH}tZWH*7z@yl`+KisDp)0D5d_s`t+CFp)Umg#PYm9e64= zI+nqwLR5Dr)}dkN+$B3Zbv+n8-@EYA4viaU<{&Y@gjAul$v6O|&Ci$76NJEKU#+vB z?g9c9y4PBdaOd+tZOmJ75Lz3Gt#se=4mDltXQR8DVU5g+7Lb58IaXW#+J*S^lhe9J zParL|22Z2wqrIL+M1GBZZ)+E7G-f!gmBs75O)KcLuO9!grE=_K;Ibroo_Ep6UN0Cu z;U$w#UOKsWDO$qP6310pX7u=dOQ=;!I<>yAu?r5$rT*TNK%Ujxnqqamm7?Du!^j6! z3L$%iKxNwJkqn)t;oMKoV}e-bovio)S#1EIgA+Bdpg9E5TUbd(F2Rlo2ti!|2*K!w z74HJD^2ES3J?P<|xE?GsPan8v7Sle1+s~YqXrf%kNORx8*a-nKd1yh3LtI z^J=C=Un&RnCt< zYA&U^o zLQ4YS~{FrAfmlJ#ok10 zv1}>fZx0`Y1FKFcNKUg80#?-|!9exYZN0@s1-dXcR*}xwsj_Wm0hU5oO94^gx0Zr@ zybA{p3a7tIQcA&!g3aQix$#tLYd8cmU@NJ(gswTE;ZS-FSkE|pZ%rXTB{Ge__RUwK zqxc;$18{Qd=f-p?uJi&Pv`FcIkp~kTpP;U9MqThKUt0qf~ zMRk$r^qlgv)aX%9fFK|()sDb%%ep`vv_Sm^d(t6qlf1vn&GsJYP{GEk>XpRmPH^w5 z=qa4*4s9i>1_fIJ#jnqa=&|?O`4Qf<8^kONsfMR-_o8n z-Rv{Qe-+bm(MhuR+MR#g-n?3&0KowKBmD-TWe@CjaWAgA_H8qKE<15ItV- z!iH!ckU|fC!>r7dnlARdai9ci1Li6=hP#>dSgndEYr@C9CKUl!TY!aqJF`=;hKdw< z@y+b({p{ zyrZ7Xc0@^1bCEv}*_AvQk){jU#FgJ7_mwOd5}7V}qHe!m$2N?hcjWjnJ%uGI#L%tJ z(7m65SFTq6ujl_J{%_;|PX6z%D4Lpw%}5wlVuufL`zlL_aeL<)aoXo?x`~_sY=@Zv zI1Q8hA!7hjF7QGzaN{`dS_%~ZMTq9i*yx-nK(#Wq5fc`eVDa@IkyE^^_EeSPUuzef zhr9-LcGfx(>|bj?1!qi>_GNMk$G@oQF1pisJ!m2F4msF?5i2ii?K@UVubgZJoR`Vw zQnI;Pemqyx8EE|%h*cEb(#zZU3#!0i3`4(ex6hl!5crD$K5vhT*1ZG`+SyBVr?*Gd zrT}-GNdcyIniwgWS_S1lvx+-@J=IhdaTN`YdA^XaJ#(s1Ch$rj%0;e>t)(VOy*<)! z)={v^+XJ0BuxB`X#rfDy>!C^`gE$5!x0a!BR2jM<$Num^6rZ6r;dxce5CuCL&u=)? zljtHw46&ysPjgXUk+EkZWg4n@(ZU`Ra>fk4yy&JG&|ie`Nw^4WAf z8kU8#i~dXaY+eI#<;%MKwXK*SnnB0CjqCV80EHdkdFvVp!`9`!(OtOH0uU#2MqT!sGHqF-*)shCMfF&GB&wRh=}ZtjKpjmyB_SD1AfzO_)J_2j3Se zXY5=vnR545;cD-qG3GSGD%W6yw;Cc0L`ASAAjd?*!8C8 zbarMm*FCZN7%KO)l`cJc=UCw{b8L<5wQq@>TS~>2qtO{1uy2VuxOQ-Gm1Rvot~@O* z+DA!SIk`Nhs);YPJG>gXG3wzpTdt1PD^*d{za)aP+$xSB0566jqDF&XSivdbVG!Po zJgo(5bOcCJdJb^nUW_7XY&opaf))YoVOjl`Acs?%%apCy0U#>uMIPdCkWZfjZ{SmD zN)%Rk?JYEyj+94dd!({Ty-goeOqh}HT$|XNf6-4-5!hBH@BX!O{o#?h{s-8ufmG}@ z6zpTe`om=~W`gr&&-z1|mFm)HzprRUPR*q&Qt5rGf60NuSETV~pA#L_?CW4M@|%5W zCY0Ok!{me%&T0061|^i$?BmWLq0DAqr_$zGnbMMAI#9HrN7+z5u8bHcRXbi)iy?|v zZ_iFi$R9M+PU-1yt(ZakDK)3N+v~Q80^nE5_Iiu$6`X?^Ho$HHB}L9ZB{n8AIz%jG z)DKNfsX?N_K<|R9+J07X*k@Ttqn+Yw_$D=Yf*+^QLh-N->xUL*h&2V#fb+8pt7b$2 z{Hg^S>TKYBjlg>a-24eM{Aq&}%EdLg7}I3me6cM%MQ)9NdZzH=)5@FAMsinSo-U?n zpumOsZUppNRwS_N56|x1?n2hJ{(SCZl@{QCiUYK<=&=s`F9-gWMRF%Ba{0J2u?M=y zhZ)xFtZ2UM0J$;l=t6Y*(P_oeY^h2NKy@=UO?tiyuV1Jx2Yb>RXtzo93)!@L#`9ZQ zz0G;zS>|esc1K?f8I8EUDC0a?o}@4!-E^OPS=S4d(JHu^2!F$;Nn2v_!sQIi&_g z`l0d6{p8ll-Z0aZPV$m-lfyBed0rk_BVqNFj&#i49*=;)ay*ct9+(4 zSXGOCvE{O9uvsFT2B2G9E`q8%kV^sFU_^fIYnYRl16wWW40z^>e{crC7FaPnHPz=` zM77mp7x_ZBWrACL&1X;cg@$)9w%)pJ2!uxQLNTJWGBkLDG?A53(+d;79HuY;x!d2v z8xz!Tnl<)CV1I7I%w8!qCwsFhTD@6Sn|$6L&=U~X6*~z+c0h9UFw_L9%Nafh4PJj7 zl8WnP2dl;R3 ztsOzWDFs`hod<~&K{My4bI0e^#gDS1K0$;}Uva26q&CcNsl8A{ic2Yqh0K~RzQS7g z4_=}#C}v_Sf7rrH3`~4)Q-o8?Uwvt2@ufL)`um>$`Hg8%gBbmQELnu5MyUFG)sACV zyXv%EvBj9mOo==z-&n)5INye5LG*-%XO`16=7?f7C2qedm|`vv=UfSqLPz|NB63~e zj!>G#|6G5_KWK7mDVGF7Ie}0*uFP-F^o2+85o}`hl`u$=M9+m7li_>$Oy#ZqNB5 zo#9-Ggy9;0@fwHqx&_v&^+wuqn3@dFerB;dVZxY$sBPZPufKX!rZt?qLh)wrJ?lxR zvhwnH_(<(FHz<$^XT1~Jn%;|bm*y9WtMZ}zzM|T=6VX>s*pioLH_g?c!FaV zaeTn^3FAfjI6SlAKxXYVn6pY+;x`|~s-~-+>^duqPB$SXDV^qZxw=bz#mAmY~) zQRtxfEca7;FyBba3LMcpnfT$HH4A&o!l;QFf7cDdy_Jj(#_G%l3B&&vi!>TGOyBo& zCEexvN|?Q99tP504_Mt~Zc~GOpGyJgCpYY`*DZ5MVw7g-O*k5#zJrvAap#DMBaWS6cpJpb#bOipADu`=QHX;@<-&+Q&gw z*KPtz`z~6aouaxm-o{l}2!K`@S7nWzR%w-H;+lG=;KWOu_ve5$8UlS|uuA~cy?^tu ztD>igr4=N%R#*04J^5bm!Y-JoN$=t-Ug>Rmm`?K|+cckF{DSY~R@My`l2d2!8J|@# z-uKcaQmUn@diQgq3AI*;Ax@s2D)#e#J7(M#@c$VxHK{s2%h;VNz`oL$Uu@dy*#3ZO z-pqS!Tm7@Tb6l;Dy3^xcuC>C*PpC)?ULRdXe{=fNU1mnCw?qp0wR@gt-eoGJJ*1rJGA24mTGN+9N0-@*^iYW+O55|W%NwTS0* z^O0+{;E$xL)dDS3C^5O;$2C-h_|vS@$+C<=)6)pD*6Oj^ZynNcHI%$DSRd49N$)Ms z3Tf6ns25Y*C;(hfqACDPB9Ks%+^ub7JfuA>S-V(@JBCfYcMA{49zRZIA>$6Mlq;%e ztocPd?11;~Kj_zIusN#cRCt#xW=?0lAhqWZ~N_yLX;kbKRx)&ijS-3X_(q+U3Gj zWW65Ca^=Q8DvPqdK)R|2jj{w8;Zj|xchaGh6p|i?NmNr->NI71CduuTzhBcdghG0- zr(@ZpXe826wz&YLv+7&UOG~Zkmp5Gb=5ma-16LDT98%W!*_{Q z|Gudp4{ft=8ICF17uU88TRATzmCZsg6JwwJ0RO8nl5qBESqQ2%qpw7nUa;EDs`AW z?{dBiRB!T!#%^OhPtr~G5d{L(*f$21zD>B@p7M%6?sgliuCKeP>W*p)J&^+dgZ)mS zg77SXBYD$OtU2`}1IA)HOBg?T9u)OGbC8(uRchSwsKGWERd|GfaJNC&CJtcFX%(C} znZfcj%<}?%N^UqP^+~OL7_|$`ZO4BRK`1#4vY01=hLTSPD9mj&Ft<(mXZFJ-(kI#5 z8Q&*SkNH^ykajWFSjGZ#&*^Z6L>46!!1sVoXI-er`!BUJH2qZZ+o+<}X&UI%qv$k7 z>*|_a=2?J5rOTL~JIQFHC|#=wo;sRJGQzW%DBw7iA4RDPByM?fOe=y?ALcs&M{ayn zJJ78bhNh)E0EiNs#V|touQ*jaw!0vSBlDf?63F4&{X(T)1=s~ItFSJ>4yQgEuC}j4 z>Q9Ra%XL_3rIoi*E|r7b_x1p+aoF*z_&{%#^3=H6?$}En$%1pLke)<>ZY(77hru_w zf!;Kys(NPt*-JyLZi9WGs{n?5gK!%FKN5U<=MA8k3**?wvgSll_O^Z-{n@-ns{j$k`@OLWUTDn zL~;AnJ%?fuFW<<_f5EeoJGSE)8+0r%AQu=tX%{o}HgM4Xh&|C={<=O#SbCW`J9uV0 zN-^UCbHpAC_EYrsF~y4duFH4O+wwoNvkYc9x1Ve>c2k5*(A!y(rRZ(@GfvK8av~%2 zAf()%h_!`3>6YxV#IYL0LqMx|2gfcdZywtkzrKBk4&rnILY^%lCO~*D zbP4&EBN6h~&<%G&yz@leqitUzf0KS1jOlH-L}@!Z-HlEQ*2LpOXM%?lqECM(nGpT8 z4BgDnF%&nL(@&ye&hrVxPiyh|P^U9hvfybc>RgV%oagH*WK7k{Tpj5Hs>ENeX<*K$ z!B4U5<+L7|uP7`*h>j+)%^^NQ6Fh#JNjk(s(rUF#kBar@+fMet41T}Jx z1Y(}ef8s|W>rM#?;dY%C@tmFb=tWJbosYwX*0w8)SC3`wpiHib>W6`&va0&Vyv!<) z5#qR2m;?Bfiy{3qMDBVqnW#iYo~9wM2)yO|3-ESj8+aRaIK1r@c$2X_cnWLi6M(xz zuRz|0!3uq3%_GZ!K8s*mIw|!(}^Eyg6FRb+JM-pQcuXUo>T>~-V(PwbG3TC z;il8q1fBR(Q*9i?`qQi|Xu`ROp3P?nq&+|22#{7$VIVEjg|xkjzq(Vew{f$9v{a{c zAni77kBL4-0x{3cbksoFaT1c%`RZit@>+?T>AgrlYJZk;Mc5|9TM{li%3Kd%G{0{5 z>kECBdedU))HPgP=J_(s+2qG?v7B;WcaaGW;^HGXUtR}DRnoo^-iBaEJq%N+OZ$2ueT`h53`qu$F^qDu97ysJYzs-dPD+NP9e<1u^->wU zQh$vkDh``XpbaFwAjPec=pUr0i^KZbvvnmh9@ol}ZX8dwgQQ>4b{k0gnI?E1qP`?# z^^Q~@@-*?IkhE6fmS>1ouaNWt-z6Za(o`FVq><8W60#DbO*)rCO+1HCj(z=U?aso3 z!wf8);KI@_g{7q@I%nbY(ggz&XJ~627w?h@9Gxmzim~4Oz4ViuXUI`oKpOisv9?(1 z2xp;Ssfy+SL*1hgk`U7H5A}2-K^mS$@8SpHiH9R5?+H@A{r%fJ@1LHBdjvnZ7-_U( zB!=;IZXAvd54{z4lDtYutDeA(~ zV0&PhtVG6mt*q^NI9Ss-5C6!5#>N$-6w*u*h|Q8#L!OiP zQ4qUc;+AKl{4fM=5##tSaUMoa&}!o#HlQ7dDV92lCmJZuwv3ENOATb@x{%d{xi0EE zl?uI$dt|jN&lOIyV5tq-5Sw_e1Y(|*zvD-t>oy4qmKv)?Jf|i;dQwx`W2wJ$7RI5h z`noj;N7r4GIQ&6M_V6CWcK=NiBV{~~>KJ}_ zJZl$7#$H1e>KNXgWI5QYfnZzgHHehNIe4;6iGjEW$S@GM;+V)BBDlc;0=Y4QL%N^@KdFq$+52*H%3< zw0Z@tulX*4z2=!}UM@6uNE_?3$ENG>V4yMFUdSa0W+naTwGE%j&wrJ&DDJn{Uav6(dUqvGkQFTtHf&LGB z?*boXbte92G7~Zg@g0z0K#-`h2JsRNrHKKZNhZlVFaZ=1tOBvoh?fe=398o}x2^8o5ea<_R3*ffhZTH__S3i<@ z-*e7;uFrYSbDnG4X_V=?_WM*q#@qkaYwgdJsv;TNNmXk0hCetvw{vEj_!D;FEKNHE{*75Xkiwjl1nU8XZw8a#XC5cf?=C zKmw_siXC}CjulbE6R{r>KoR?i%+G8bmyqm*Sao5AosQ!)xL*>qX!B5(K?N;(mhmK( zAW!v}!{IG*fudZ=GIm+El`s85Y%8CU93$hd#76|r=*LGAJcG|3A`=Y-^rH#D*&bYG z-S!!huwxiW0QH8YC-)cyppk(1KuvgDp6XLI)t}Sdr-xO8K=uTAh-chKH!R35mM4Mi zGgOg`L-GzRT@cS)KnhHAW67Erd|HAzA+UTvkKizgHzGV0#8#*;-yb3X)`S+-V@y$( zb;?%(lm6kv;$L;>s~Pxe2ELksuV&z%YzFX;;g3kvN!=*{($M3q%*WO12jU;Y=#0#L z%w2H%LalZ#H+z4ia<6BD5HmQ+z$?b>v;BC;C^c#p<5~m3!)%m;7U$&nv0uvNs~WBD zes$ZK==4=x)gNu}3ZrJO#0RRb+v71dtLQ+-DvB%}l)URKJqfF_Y_S`PP4*d=ngfR_ z5*<%IFF`w)f%DNshpg!9i{O1^X8%}UC6N)^DIHfD(#!5}v6>GxN1xHB$zi+F6EAZb z)3POiP`2n!F8UC$NY#RDzp)?>&6btI+(Hb&J5mL#$sXbz>h4Zo6&80@llzNP6UK1! ze=&w05t&t|FyzGqPbzAYKR%^k-UpR?jgqCTtUC}npQEjCu81*PK2N~Dh$#F$*OTwxsiRQ^d-_||26T}x< zn$-obC->|WD!#z%%u{>8Y{R+7z-+H^SluCb9G$3ZSM6)}Hxdqgs0<6e(Y`?N`hj%S zqj`7N53l|FXZ` z^FBzrAVx@ZP`huV)ip8X4$;}t{CB;DmD$?LJ|F{eKZCoRj0b*|DK_R-e0M|!Ir;H$ zXWxJqiD?iU7k8egU~GEu>*DZQ^ihoB#o>-q18L!ofx!vb_tcab#WhIXmt5+xZmN~q=w<6_TWXB`RUPFgS#Ts_X`y%*Aokzu^h|NuidhAYBk;WT9!_& z=EHEYoJvRHsSbqigu{5RK0JAahr3)JO%_C?i?XsCmE=m#3?l4NBKi1FcIf^S565r3F-5FFYW&7{rw?OI zzu|G_w-??HPJhi8S+q~0(-{MF&D-RQlr&Hxo8Ptkw($D|znD>!JjSon7n!$;=Z8Fz zdGbv9Jj%?==G|pJeGV=!N^(TRlMa{6Up39;uUet7MQPEC+C4G$XF^H7upGnT*LfG5 zI#)E|h1*byd+o0i-i`C3=+F|v&`ruiM2_C<&f)@x4KF&O0z4)(mng$_wq?ADxRjov zgNt7bFUm;?o+ZG&N-8xLWb2V~hDY3R9&mg(31VnYp7@w~S``T|a#4)712=k%MzuRV zqc$2Z`l}jzMx)kC{6>A$Zap%^ z9n%v1OtvU~cxDT$sVY3~YNxQ8VBcj-zR%*&z_8pxqT(3^p%OD}w0eh3V=l+&O@NAW()9?|}< z%vB6l+(a6?ln+`lH!@xlcahJuae|4DH`u+~&5a-Lrxq3l|DK7C;*~OChXiRL9NCN0 zk{sEQ-|gBaKPC|?b>hMEz&3f{UiEHm6Av%(%(EoN$oP~O;eNuAT}Vm{VvW!G@QBv! zSw?B4r)cwHdt`|}IdZY+k#P!)Jcx#pIQ|pkbGkWMye3YU<1s{m?n4o~9dVqbPDS<#+=z<8{gWkSJ%c*~3TrS~ew~(6T#`zeprZ;MilBvi_FhEsjh);_~So zU(u&p^chN69s&BKXmt_Zu+CZRGxl~-!oxxEHCd$A6q!q082X9IWSvC_4{JeU<&7@E z^0O5?z6Ou|Rr7Sz9!N!((z5X%uu9qZV{+pRb=m`Ip-x9IT@Nq9QxMv)o0O7gt9kt? zB6B)`SDCqVSb(u6z6Hl~qRdl!1)>}n__1t@_#DEqMX=abv;Cd@V$>Ai2y8W*Qe+QX zO9t%bS$uw+fc+zcB5+TcioffrD!j7WXI$+fTuBv1UHdSA6m!*|tHUCIj~OxCV(>38 zWPB7qofBe7ywRXd;?mBbl(xDbS7(uRUBa7nZ2+Xy!{p?{ulOk3iPx*a>I=K&eeX$I zY^Jt)g3a>2m-M~&WNJ*;R!=$J``(lGejS$gz1(hxqub4ko)s%l%Z;eEx&>TP)T}(k zX{8<7>PFqZ7q8ZVVJKGW!dg+|kYxrxx0>4qVFGFDRjq1#y8X4b0Dab0TRp@-cWg>m z4=u0U;&A)L*f>mROK`^BP&35XjhX6kzPNYChKh?ocJ+4ip7qj0UJT`iyYyA%9dNH+ zby#|KMiU$t+$x|#ys4{)iSE_ii+@bqY`>+t*S42w| z6+ll;Hy}|?ju7K!FNsGtJP)vw$m{v~KSj&`zkLtE#x-yc81{-^3>IZn5Ntyhmf`rR zh-OSAP1j0y3$Z;{X$_0LX0D&*$~G_S4}J?D=K;9)P^f>pFY4xi*#@~k`A(^Xeeceb zhXNkZnugl*7;d=`=kmMQA59xW4|vTshg(v7 zyR0}*(hsRAcAXhN(weJ{diO=DFiXrjo-IfYAH{54h4}XwcQ?-ky>gg!zga4rHm(0X}fuNP--cJ z^;TwxAt`PQf3jBWW+bGyUL+B+Jj3L^m3FhLOxew-44j&0l&Lh1>P@ht;+f5~-nN!U z6hIyUyQ@B5L1H3I)`i?y;+Z~`kTITSdf3buyrPyenjfW>vPj;IjCbXSA)uCW6W?`f zyB+CBR11WQZ)ctGZ6*Ag7ugiZz!QXI8e;7$s9v!Xe>8SdVujI9>an~7IVoY;$rl3- z?TvDkf_C)D@ZlI5J64uf1+)j+S=!*Yo|R?A|IxAVoZGeYPxp%&Z8Y;- zszc%EQL6{CJKNrL0^-Xd>!9~=GleJJM1Rx##(`vC&;CpC;;6Q8v6~2n))7Zm!T~DIDVbD6!?vpg6tQm!e14fE_&;a*|G%wI@(^AEg@!>zouy6@NMmhP2cz(3q)YYjQL!E zf(zpx$z;=CAX#eDzp-4viJWK2X|qXH^7bFR88aTY)+E^%RGsFCK2LrF3S}rTC2(#w zx?_R`F7zTSYU3(w|Gnh1t0FTVZ*mk+;}SH(Z+KmJ;3|M+etX-L?tMJ(0oCMqY0}!m z1RFn@B7keYyVzLQEUJH3yEs~F6W`k?oHIn8q^ra9Sn8by>+mEm#g_p z`*&5D+P`AbuBrC!!P0g0zKXOItu_-A9ju#8-Pm z;%pw_S!@O1=;u*hKMwSA^De@!}a4|V;&Lkk_@Mg?-wKpKL3_Z6#q(V0U z&fYHosDSTP0loy#eheOXXpB$=sEY~lgLtMJ9vj+3@ilR-%)3YRWBn&x@VJJ@-tc%m zDc$GEH0irFz#U{*@OXG>0v-?Y&5v7Mqcpw%8! z@VJ0R+TIgLU?P%$lPWFuRCDY+BncUZm-K?iBB?5p@h+(f9!JT$k#V2Zg23YtD(Z&E zU#VI;y5MmR%|>Rt&YA#{t!+UCk2p(`aIRuM9&ZqD&cV;mwh-gg#}hHmS!KML==N<2 zKmHj?=veePIC*L;?cZGbGmvsh+aClRXBDz~lQ+edg2pH`>fj#?mM9R>sXya( zE$3FWqSbtR-4}9>wJOxg`Q^tVw(a(AIM%|#K2d}C=s*`N$9U`w%MX##4a6IEqNShj46&sAx_^3w{Ie?{wU zzf`a+mH?LF?-&w$*%P0y5;88JnI5=x4zIv+7C#D>XUV&f(IP(#0a&i!y96w=dT)KK zsIS8MU_REJr7jjvXdH2K{{Ww9&_1atc$z}oG zGAkkJj3bd5FMw1&MtHdZ;HPfDV#bY%lqhOk(pL`8wnxR)vk`nt=p50sR(n8r3*5}6 z(bRA7hmB#s_DO?g937UvIP~y=?`b>xOa>BK|@V z7g%9Qq|3RY_d!y&mtbkSQ8CG^?VE{{u;YGSq{x1j+0;AF{C z`(VRDnNo6oC^<&Pt%;A|LmwnXG=s@pDw&q%@pv9B&0|k@{j1f-tiTQO5YPCHsx_f` zd^Ined#XrA|L*#~OG-lX_;el#;3|Cd5B4YPe_JZCAoVKp;f=;K)1;Po#zeAsxA^Ft zHB$fUd`JI(o%o3UU!>|+pFK~exMidMf9a}!d3XKoBtlunGk+nq#4|pkO5Uydzpv_F zBsoTgzq|eyNfAChpUvcvSRG#}BKKyNeD(I#4E!IT0r-Wv+G<;EgXKtOELuWqLF{9R zYx#uy;`&>8cz~t<0PhmI5=}?g`mRJ!%Xou*BV5VcP4J7Yu$C~&dxW(_si5EP?jlxT z%beo_Tf!=b<1VFNOq5n^b+hPa37)zY>B{1)s{og~yPCHA`AR30&X4NOe{)?`yd?>; zg~}-MEr}JXWGC4we!=h18O0l&R{J~19BoapxRU<&x}L72Y=|p zh+b7ElZZAJ=c-$Il)gk;GoD&*Io6|ef8uEMb}8*AoL0i6^s6@~T}tP7a4Pe)aw&~# zWr;#0AEp`eT(L6=1|lA%_npMsyg~N-nCmfHFyT!4lv$`)9T2q*w|JBuBp#(vv}#{^ zk`)Bw6ngBh`u(v!rTg`AC>&k8iU7zD?wPsL~q$41cvevU7Yk0of_-uBRVzKI|@;=s+v%Wmtij|t7`bih@2W{hAem9T~8S1k+azsr` zVk97@m@Ja)>3~|clJ{Nvr5yABCLsQeJ`;G(7B!J<;+o>LR%CvgWC4J{g6HJgByjGQ z;I<)>+2E(ZEsYi*9c!EK3LPeLOz3bb5f2dD#BTi?i_0n>=`AjM8L1xXeF*Z9&*>`I z?6=hoLbT=p)B-(nx;6jI`b;9sG9XzE_4c=#FW|%ItH&#|tO^A-)O&W~o%uxU0e+Zf zO=_oz^73TrD2Mo3bPe;2L-A=YuhD{d2T4v|@C;%~1czyBbhdit!sQ^0w{c=WAWc}r zlOUEo3Z&e6#Et@$45~l|^_K*b?8aAru0MFAJ#l~9LVxT2NLSb&zaxGwGK(wjL~Ane z$4qsZadX>fIm$DL)F`o}Qp%CPTy%^QC6qEs7As-Yy?<0*c!=L2u@C||Xznw8Cq?C2 z#090-bpw$m%HLjMznMdhIz*%WJU&AQih}A!B3a2VC`m<^OGU7j+x{eANcA%DvzhqG zf62su3A`!!m=cSrIMbXR%RdzDC{d?7z%LRjg5mfh*XK;HK*QBIRBC+ck7P?Ww{31- z>Tw?>z1E{CA0vXYC$c(vz7qjQn7ew!l8Or=AL%jPkmxGWjH~Mhb4l1^rlY@PF=n(n z;pRrm)7#DvKTpj`;Yevg&JcLXN;VQc(myCy{!K(3K_-Q_*1mTV03zw1>R91awh~T> zU(+o9bc?5674cMn-77*#NqI(%pDDo&p=U zt(?!rLvr0b;gCl&oUdi3n1zyazMus*+FVteT3>5zEh0hHnb5KCcf=v0sL}i2Kpar_ z&XKov-P?Xls$#ZP$OHOMw4~fPe?g9ZF@^Pea|YXk`!09x9IT(Ugq`D!;J+ooH%Lghw$F) znJho1uLV^gV|yZ6SU+#UO@pBiuC{`OCFp~zMGt#OEYnlFMM4z55$nf7zifVV6+{Ae z{&)Zpk!DOA?Jczz5OckfSK>!6R- zMRzywGq10{ym227_=`Sf5Vg$=BAW4|#S)80g+2SL26FbF8%XWfPcV>sey;|yK8-H1 z-V6xM1@pn(0;?WlhvwZWI$W*h`_HQ-OrdkKgtg_0ud^XX)Hqa>bfhoL7e%$wEnd4Q zlS`HtE=CO2&URAD!vWU zB^CJ_jVE;eVS+^71THy1HtP@Rw$cJbGQpFcRlLgO)as9xrCVx+_rELn;OQK}EaRgN zSo>_G@zL`R2u(2C7j;}9hst!}rw|F97+k1jz&q_QqpzT57`e2fTkD=v%2SxzAiaKGDbfQb zoPa39bpg49!Sn#~!PP~N$dKn{2#n)F{XURV3~Hb^sL$LYP;&kPGIe8T5>P@5Ra{OW zKBt=^2I2<;@dG6|o&bDb;_JnyB*A^jiNSql{t2MurZ?#7@qk_|$=%!ZO91`2-TK4L zvRjjV?~3hrd+*qOx2xEG7bRl*8K0`yer~!iChzoR*@^rA7? zm~=jx@%0+PGbbFt?cD>grrkF~2B4<>OR(fQC+hsgs`LA`+Bya;hX$dOs`jEQh0xnP z^Cj7%-kj+ZBV$d!{fN)_SoY&kg4EFTid^=PZQWmDgA=7ILF!p{gqtcmAxVi*ylq&I8rc{ z;(*qZXmN0tUEg(5e@dby50Qs>#)nmMJ|{S!5AwpftcqlePkh8l-AYP=gL|#YT%itN zKln40=-IvU%PHEIF$hkUA-0;IG&2EM09a&|Xeui*Yx(AfC}Q3BX8wa-_`ZZL{VMsN za|W;n5!+^ze7SQ?7ei%#)SZp#hp7u~(pQhv?DI!v?^U{VST$q+A-d<0*+_JjiBKp3 z;?dz>L+}G(5(2_Yqc>y@1Jo#op8sC^Qf_fUz zjS&)fK2h(lemgY9U-VrmGnYA|tDEoM z%zG+?&zyqh^7E(Z@PO6Uwt7h z4DT9EZLwUA3~S(mdC|b`9(^X?hL2nytYrEL9y)d@0Wv-l`K`~G<@TXpKtOF8{`$Sd zlus=+Cb@{h7(nS0rU+b1(V7m?B&V=B>J0fk4F*n@^-*vKre5JDr>AJa*u_tHHe^x| zxyTw*^1*MX$ny zcZXT9Ob8SXY!o{y)Pai0eT(@U4olA9$Qr3s%FP{#Qubc1H*MEK&?{2fA9-AIBeO=g z>7?~o?J0YXhpR~!Sa9{K&q;%=T=s^KPL~j&0ygb|3{h>{ZuX@a?u7Dq`saOo0013;2gFgsd)hVX1EzaM^QgneUUM;dl!L3%!}M+y zV(j4@m%#q=%?%`5rXp5oJzsNK0ZA#bXM_z^Vf+c#-;M9X#BNbs6AMq9d%1&Q5d%Zz z`F<3}=bYhDl)0CYO|QP!V{a6}dBRR6Jhp`>ogQN=Y{l@~Bd`fwnC^*sMugk486@Ik z8KghzxYuKBd}*JjFQN%5N7ukx)Ux<#F&{q{EX57;9HZHq8>1z>Z^WpLjh%c=z^94w z^>>Yyl%Rvig~)b4&LbC!6^%@Y{^T4?#(ak$SUkFzU({eg%-$e8jyTIF&OHkke`(myBq}sZHEMrZwmQYe?1gwjR~9WJWmhea2M< zV!1ij{H#eZ@i^N8kZ%`HPr0~A@bo;-$>(T2SKnJ<-|sJKTioGWepJ~$Ug3F8etktd z=a+lIIg1q>%Rw;L3lU#KK+Cya7zE77>%m3&4Q*nnCG0*YD(b_uQLiyu*J^c{Op}B% z+RucWyD&OU;=171_VxIuNDRdV|w zOe!&sQ|)^UUk#doE1kkqlHDw}8W_(dO&1`^PE6q9_pAvN=?QbF=DT|$Wqof37yuWUMcsJW?0}AxPTFI7 z)fNRU6$)CK`5Ql8KipsSnKFn_pc3u^m8G+KgUNAvsROz+0MpgH#KxPIT)nNHW0Koy zZv5kkdLB!F01Ge13esz|#LZ%QZAWKI^;quFlSTM27uO)Ux-o38Y&HjRuQUHEsAnkM zP(K1-OfI#EZhH^sSg6-l3OFQ}T3aa!vwGE0H8OfSFucW4-0Zk4dt5fU<*JWfU|>3E zaPRA|)*vre@x{7R`D4D+D%dCCETGE>g%Hi6p00HAd(HXxdUUk@7hZ2SbO+~ zm0+8ym&!%5`KDsUb^*_2?{+Ogg909JjxNA+lKMm(2gwG!^snB4N-6RtTVm@~9o3_g z(gYOW2iqkleGAXMCmnY>vcF!}i(V63^CJr1_VE8?jYFIeo0)1HTAiF%%EG(Voc9Mc z7OnP1(t2%%SliX|&D+d-5AZ9o$_ILHoF3peJOO^m)ia+*@X!MW*~1uDeA;&~*C;_( zvgy?Z55tB^^`M!-&IiX^r-5vFZ&9PRqMrm|jGq1QT)~-Y(;aJ)(QEkyBU@9p^!nqb z%L^19GhZjzcjm5M10VlR*P{2p7(E8wbKh;_?C&+^%KWXMba&zS8g>CF4f&ibTi5+E zu{ZJ96B_GC2@WUf@@$aXe2OL=?S#kf1FK!HQWEzr1SF39*Tq~TDPjwa9V+`liP&U9 z68KrG6E(`jgxu15LOM=_p9ds2?a~Aunq=iRL4D6p8ns5KXcVG80(T zd5sl;P2h^zC&XK@I@@1OfUg(08K4H}vlCiTp<$2k$w2Zl2xMWraHL z-glxdcQ2t<_faaU3At$#ZyTHv-ZH*e8{oK1%gva?E6@JRT;yG0y?8InCTD6gCl3?X zv}wE@qM-LOx3(tja^9+oBi_sOwtJ{Hxx%^QjbZzeh?kX9Cx1=k_v30uQUL8BM$Vm1EGb zH`>3H!K9epZGROyzQ0HBZ#=H|dykE8`Q`Z7&&Os3SLhyx`QyLuTGzifKJFu+`4)IF ziH{%W`8e=&ABSI#gU=rdZmnYyg;2kNmjpik!<%X>TJ7be9fOaRecR>g8##*ZN!MC2P)=IL4%910?{x(>w^X!8pKjA#ANx_bF0+kqRzQ5Fr_< z6}b7hAv~_LA<2$E;O}C`-_V#)cpk(9?D!dyr4+XN@uYN`Kj1s6c{cG;Ry@;9Sy4zv zPkN`7`C~HSOp1$=E5qaNQ7siG7 zAYkd^7zhm(xy%=Tg%ZQKH=j-7#@`CJ(UM&FHVEQFA)|v_5SK@?jO~`O#)oBsxOPd7 zk?~04BM?^(ABm`v&z@A7Z;909ySg#6KwL&G75+=$n}y?UB~xiJRdqMGSAD>jcgsUO zV>fMdHMmGMI71c5xS+eir$|XO=vJ9TSf?FWaNVM;?k$8r}ZAGYnn09NRCOqMqtdzCF<@AV4GjR*L5n(ZoG_~3* zg;dGk?=kk57S48QE4{qK0y}*=vWXW&r37baYQ21huhLSz99bf)NAmw zXtB*>Z|Lm~Q-8>B-{(&-{L8{&84k)Q4u@$S)%T$@eY5{+e=UOM!x0n zj(Qsjz0c-x=QjxJ^$F%e%atX|6=z=I&2xM5v00zsxjNp2btBauy$%NUy*08rNNIi& zzVlij(`sVz5B>JHV-Mi#H_Nl3KUKo~aMf+K)*1pQyHxYO<0;ZzTC^Hg4s`su8$;Np zMQi%<{Pj`G1{3RD*`4`ub_OuuaF7+w^^BUFrANPh3L{G{ey&7eMX>Ujwfc)uJQQt{ zVy)?4;ULO>|ccUUFNm7Uoy-Y{C4|BwENu!b3}V@k}H$${4ZHQgkpl5~7#RC2n zz-Ou)^dR!v{d!fC-`>%Nq>K$xK8O^05*nMACaQ~VvsH4!k?bYI^0YdM)6Eo=r}1Zj zL(P%i_?}bmcR*5cMAY?+C!*vtkNYUnB1MwEh2%NuTu8hM>Gp%}OWxG#ekwq>X5(Wy z0X#CKOAm`!5c={G8IL&wQvizeYVE>~`9pM(xX6E@9>spmJK0T=E%VKP%X(x-$v&iO z=fUMj)*M^>*ucODf8iWw07dgw^P){6%@g1$IzTCDJa)Cu*wW*R@uF|+Zr|t(^r1Ui zY-Ib!oWM!iw5?Qqt`-~GzHy**ztucDS(ldE60=JI%>~n?TDzd}&NQ_Ep68u(2?!A4 zyn#m@>OW6>2a8DMY^K{=aGq1Encb_LG9^KT$dXOBqu#Q;dx)9mvg@KyKn2 zLLs*nc@X5bT^>Mg7q1i4sg$-FtBV@JZ_6zFHme)Iy=mdMR`ZGi3%|9Rzu6+Nvp4DK zH}RF%C_e_jl`H&~ek^`#HSazzf#1+r6#P~x`0bj%48JLi7Q4VQ0TS#MJJT`(QqO~B zk^=pipj2yuVh&$;b1GAr?N7`r{)6M_o+pu_U>*zW95@`0w>`=QD~Yj^MT}x+xFHo0 zVcW|TvCL)O<>}9#hF_KVN1p-cm2Nsk#S3uzjNDQKT^jInX)1aaT6CPSz@Tcx-)}{v zYH!l}Uqxiz?uy8wmg?#*{-IY}6HG;!0Ixe{9MKj|f$C(K~Hkdxv7)IUR1^NzlMsHXoaAT;i|iUQ$S1qrRSE?)0WYm~%~gTJ)(O~LOu*@IDF^vf zmwE5MOZO)5QsQ#gkF~{1oMNFixX+t^~DK`vaI^zghiRFzE~{E>c^+YrY5R> z;QLn9Nbq$k_Cvrmb{5p*|GkBWy!!D}EKj-hXARq|Fp9*e?aj>-;a zeQ}>~iPI^1lJpZc$^(x>@C(~zVnKM^WL~VhL3vTvWn_btkfOK9Lp$Whj+dl*ZHpYzg>+w4Ga%%~-6q=tM}97( z)<7OCsM*aaqIj;NFNot;&aK7VDxkY7MYNm^&FJ>bnE8J|eMS7Ps?Ka zb|oXli^~O^Po0+H#6ue1?_~jG#@(V^ruQ;g%=7%k+N<s{U$I=rjCRKk8AJ9}2_t5%*SG5!(HXCKjfD<(!9{^SjD2owfLZrV)a%*h z!t~Apb<2orv^BSIZa{4c#V9srA%2x~towZ9IH=Ut^q&h77+T%9)v2xN)Xzfbv1l^V zqq!-;Ds}k=aWft9@2LvbT$$r7x-!Q-uN?Kc>3UJ;ydiqjajIU_IN!DI+k=7RHW z;*N4|>}+j~H>b?=gxzc4{1o@u#+3zsQifmJHZfbtHaEO^Bp$-0Z*Z7#Y9a$o4VCA4 z0`$4d`~fBKm!=nermdI=)t?NPB45eYs0n_JK}_Z=oYD5RJ~FOMb@pmzDwTlOz=983 zS~^$>%BA-&-bcqR%wL!w>(|AKLd%5U0wubrrQN0*APVed3|qJ$bur%TLLytOfB+b% zN2jpiTRidI94nNM<;cwwB-|38T%&Fpc}B}2?dr5Ka}bQltw)cP2n%5dWC2flB;DG5 zppOJEh$LEFY6?av$Zu#W&$R)Wf02o5uaRQwnv3$9Zup#Nl<3A}r*XyTwtss$CB-VH zM)hK-=Ef9UVn@@qj6n!7RIjr1N22{fX5W!v0x&IlxWNn+Ob!m$t5n1jy2r@7ir@sh z4HFF9qDLM25!O- zNW$-&$MiShlL zE7a9oo?{)rK6a=eboJ2}Z#YugO9rLFE6NR~)lV55%P5#KSS)Ga7k-h>)f*oU1GU-> zG-)|*nBbb1Y6n6}vWn^j@U@kzq&vn48jx5?k|T^oQLL*7uazQ$mv|E$YY9MX;vcWf z>RO5FS_wG4AuvNXLMZ3MmTL%H9(U(8yR)q7l6~EjtOFPGi?UO!KJF@on-opE=SNIM zb4ebJaW0fNn@e1Sd8}?`XlFK+3xzWiO3^LZd!?#zB^m+(aN-zF3Yn;I}y)Y|~ zFYHn>g8SEHG56-Y%@B-~8!67X^!^cjP^1Py2GCbgLju*8*0?X3+kd{pT|c*fFA9;Z zAYvx?gb+37sL?J0Mzb6mzj5p4g zdrd;fayKvdrBy{TE=hdEz2*f{5;6}zkDl;*!Z-GWzd$wlGmkc@9m=nE4?RMC7aJCj z=0ktga*QJii%2GoRlAmd z5n{ZH&xo#+UmdwTm(%b2KJO4+#|G{3UFcNnqdtgT;4=<-mUjYgDT_yYqRT@vNnG== z#Qnbhc_*R(^tnCS;|-EHs!gSb-&y954odYk9!`&)F2R3JNfiHr;<3IA5FKh{3Z-J= zpr#jFhP|}F&pv*tBWpHTKgoFDwF}iuG%U?QftTKUj284MBh-tP$s_V9>|>vJ>S(hC z-=`YWs_lT}L>}qjrb`kXn z46qD|nlHwMz~fT4IwX0P1{hPdH}bgjoF<*JZy#LCOZ`0!{Egg=F)gkZCEfcyaci%b(G*)90GQxzEa#T^ z2|2Y}19y6iPkqMkyYDO7>aB=2AQN?8)Ui_R(IR%#gqC9I{#&JQhhbIp3P;4B`looK zr)cNmk08Dzqy+ti4YW$s?EvfaqU%8 zr%wHxJe5r$*fzqxjcVOq_I_2HHmzOiCxR3FfN2e-#&11E`?Y%>hDoU#{10YZ zea+eYS@gB>RfC?;tDN3w$rt`;|0|dVA2JpP_k}Nf{EAhKQq<;GQQ2sD&MwwmjzY`E zghziNtU=3EmN#!9{K6H=lR$~)>R%{X9jrMoUMYy7m-XhCf|enUq_&V+QFKUK`AtTs zNHV{XqD|y4HG3kuqk^ia;KeqB3Z!L`fhKx#N%CFbr&n)^>5bF*Nin@~o}f1| zk90+9>V{9NKTg#jXOI3kRezkv_Qx0BDAQKKB&}#v@>^C+Ew5|@Z5n}S)ok6FoGmU+ z_ewvL{#>kSV+!@K=?u4}YTw+deG?M=TJDF_UtGAaYi!eAmrtpV^h4eK{V%_NZQ;Hc zgyzO-?Y0%Q@5(r}+iGj~@jz>=*n3;~*WK7&sam6<#1~H|zmO?9!56PB-0M-%=42WL z&_uO)FTZS3s`|u?S0A$WsANb1GPK;i=CtdDEwepYT+7{OdP(A&eMMYo0-4-3jx5lS z#=Ujtkl?A+UhTro^SS1|3=+uGa*uemT%4bH4RxnZOt_%FdYXuD5iyb4MFcuwBd&ZF z4QWxS_Uinp6dgXLOplB!kS(>dhT*;NYVQW`@J3+Z#OWaF+Lo6E&ifEHh7Y0c3$CzhVzoYs`Y zn^-RRT+}GqGo-yYvvLL-i zW(=1nAw&Q4pcKj2Deo{+PKjq;L0QOb#Jyy{Np=sK+wwyoMu8W8cfYJ^;y_-$Sq|uK zZHj+{2vYxeG|xYCj|?IrFLZsrcfIH*a0Nh#0kx+ta!&Dcxz_c(FLHhRrGO32=R{Ra zywG*};gk#K_9W6n&yVIWqPnAMdw8<7)!*GLkB#pjvJy@w0_}EpZc^3Xn3^r-j~PB= zxA`B?;85wYBE2fr8`W*z!tstJCz7M7m7mPuVi^xMao|Gk%`@P&b56U{PlVwWP!g5f`3cD4XPS;*oI!2gq zlM^8z3sE47&WW4#&E27TZtasbCL* zWmiXgqodcm4scKneFmJaK)-5F@RusuGX9>%;Tu3raTm)lDFnwdNzxnu%#@K_e-?}@vyiR z#t2Wi;c%(ZvYvYl%01gHoil$lb22T+`N^SZi*Lg!^ep)I+G;q3wFU02=cE+W7Rpbs zzfTMRHrDM~_Huk%-JTi_?$tJJ^$Jy}=Lf{wsM|>+rIB){kQ!%ujNPmsyz2NivELo) zt^IXj<+gKJR!?M_lXRBsZTi|*`_BFHU3Bv2>qWnyRP@j`X|*Aqv3`E41rKd9XoDJS%HkpM zjh>?2cbJ~&gfD#9)OsS5P~%AV8m|#_jQR0Z{f_PxjoxuiinnNQa9)L>c~BxSYTtS+ z|9qq?TZ8Go&-b3z5SuE<VnVQKb$hdJ-))W?D~NBex?7LpE-EDH+|XKudG0t_ViAZGxy8(UA&orT z3L|;mZr)cf!I#+l(aa4qvF%>n&$Dg@4TUxgux5T@sPh^xS`rXuXl*t!mB@J1{A;TR zcrMvZoEGMqioM{DQyBhk8D#ySAy_&CDzVpmRYaN3oJHkLjx6TJ?!FjOZ#(-SM|MT` zeM3aNQJ>A7y1^y;ftg2c@;-o=Sfl1H5<~8OcTwzOWxbUo`WzEfN%AlllDxGG`d|>@Ytnu%)zpA`GNx z#(&O`nONbJZlI=tZR{#ifVSEcNdmaju$GMdn30ys_3REoz$ofjN)b_q8`9TaVN7%i zP|0B{4gBa5TS~0Bq6h+!R_2{APaS~z9sPXEJ3!O+-+k|?~fJ5Kg!Yie_ZU*|7s zn18Czz$3#BbENANZapn(jlI&S;4~Nm6_JUcr2g)FqLPosBg7=m=stR+4A$`J?)s%C z(~WEfq+kkWK>kGM^0yDrq__UIjEg2Z+uo*~W9^ZBB6VG4vx2Q~nAyRxjiTUq-CfCe zT^W&UMQI@(xK>-O6^AzT?FBMx1&%N+w0SjeLjrET9At{?2WdS(26S{Dm5aF)f_MSC z2KO^1;>&y;wJP{)e20LOTrC<{7;CNU+l&{NciwT`?5bct_cO(Scw30l%R9d{=hmuV z8cDHv%R2)#Hw3JgYL)Y?;HlBl=N>y6oEExFPK@9rTIAc<^NwCoU zOlfTN^3Ln#+*+MT`kEx2K_$UC*C&!rk))H2Mwzyhae>=zN(taiA)Sub`ANbg)mjCq za>+zNG+sd&>;`@sirZ_QGKY>}Ca-QA9$47}@5Rn`KjY=NMmOX>wT3?S@wh^4ysXM% zY3p2!lK|~;e(>gD7f&at@dhrJlNzhT69+o#%QD>cxAm{~#LLDg%pgw%&F&gLU<=48 z#}O{_jUFfA-}nIk+mZuc)%HJ}0o~Y)y@rl+!Q~%@6ck(}N(d5O-gu3O^7v>JUb3_F}^43h9H_7RMz?R&K0X)ixqiAW}zIU|v^g{;^jL=3iUMv{QjoIg*==_^K@!sZfHQsGqL7eDom zQhFrwaL&A=$$3~|Jw8FN^~j7>O=0=i{t5kED^r78MQdstxH9wBC#nv}#(g+v74=FX z#L1}R>@p9$&cU{PbBJW3RsUn`W1*$9kSQiy)~k!H(vKkS0{7YH=&N;6vT-pg9RnBJ zjfB)WF*>?M`KSxLkeOn>k875;f2C-(C%m*HWx)basHLe&yjy3uBVDVL+zP{K?B?_h zNC>2Pd}TD{UFg$SX@Ah=?ym1`VV z(KfC2C#r!mfyX?mmNRiO-4dB5^RGcrm~($8goVgH!$_iLA`lIC^a*b3>Xy(H=JTps zb=<7gc_wZAMSZIoO3~x{RX3XhX04mf5o)1-b-bcrT{bV;n#O8R-?GDfEApTz$`0cd zcUUzM;;TIoUMfXHCiCj&tYJiMQ^U|||AP-hMMYYjMR95CbrM95>o#A$NQNet)4&b+ z4FD^ohGNxf1ImyKlpzf$%Y*iCH}&~Vb#vLp#B`gOt4C(Kj1tG$&Qy0w-!g|$l3Ucc zxDOXg$upqQL*m=VQ`E9_7~T27&#mqp{x(}VIiFaC38YfhZ@*B&AG2u0~3E5Ezc6N`!2m9iy zEY$3F!cvfn>DK)52f}Y_7mYvQS+3`$I8##Eiw`>k7ZPC_o&wGvlk#3ehqW+(d$m3$ zzP0GZpd+kb4_!cEM`y$( zkk+Xlqb%<+N8lps{{H**V1*ZN0TC0-qaPZX;)CbyWgu${{UtOKW)f&T+~NS{^OU@w zUe6p8N2y>_@?feC`&$OWuR5=#y>wuuRxAD>fyGOyU+lVWqlq@Tn!+waa@s&I6$4*r z@s(hG4nq_U+1Aetm2G{q^Im0;&U_6?%-82`M@lv)W#6QF$4A_?L!H53T2o3T3cZCXrL86lsg$jy-3+d<5F@(uBraSB6OKlniAJ7| z;53@)p~Il*0o?ytfqdRj!;Lqzbs{&5Zz_6Ai%M95wr#v}PaBOwS=4cq-Y^%DnWMpu zd7k?Dmr9Q^m@**JQ-3#SI}1PTsO7!~-$m^f%9+Q$#qTC+CgCO~5e*-Z#? zQA85)!p4irz@dcQyB_tl6({rARebh$#w-6@)yw(Lh4a>)N|1oi zy17gwm>XSq=*!ojW1^XFKf|USHrtlc6#fI5wsi-j2%CFpbZs{xQ0OEaK`G3D&m+!3i@naF1hA{T3i)Imb!4M=&JTK zmt{YYDvA(IWoH7@&~Rnh;DQ2QWFnduiRWn9bl%P zc>};|-Q|il1&7M4RXy!UiGjNJ3wgr%xXWz3Q;1p70A^Ra1Dfm&Q z`A|2d`N)d#DfuEZeU=|{2xHSzC8feP(rU$}8T>pC7N+n^xi)kES1cosy#-cPf&-BL zRB?r|Ew(Um`*%E59Q$_S@-NTVCGP%N(Gt1)U*QQ|lKYe=IG+8VD&PGiary5XI#LoG z{ZwfzFLCu(31^WoB60Co2?I&!eeH*XvpQAo{a1o|VyRDgg+9N<%O=UA$|Yq&ofc6B zE?1yX$?aD+wAZ?<>%V;L;ridm_5Xdeq(#TuXKXd~k%T;9;qovMd)CD~s2jh>*mUfr zzrH*}TaDvISz}1h{{`{K4ncJu6rerX{LAHTbK3m}x!ZW4E7A^(k~^LU^f2H{K}^=a zhx|+SPj?5?(0kfbm~a zP#tgep;ctxMDdxvh$Ba~j4q0D%&powlV!Jwf_6gX>`MpuXZDWxT69f8zJU~pIxm9i z5g}6K>6{QFwh)WcF1vlaQv^nkSz7}a`;Cd&xRWjPWx?~#LcgI)eulq*s5@IPbOv!I zh;_}rw24N4XUyR@#&fmjkdx`yZr*S&a|A^rhy>4iLeJDb3=2|QtzQ=Ev<2m)8~KnhZPs*}5(QitunR5VI%S!l^_hTAruR|8EE(y7 zZlKGZDRz(amPecg~cZE!PplHQk?E8_OW?*?ta*XUZV|v6cfj2QK6o^ z#@o8_QDQzS5Cc@$|Ku~i!O4m2BBEWqHFitFFCF+Xv=|v0;SRS8o)mw6nJu+HN{KKugCBe9C!OrU z#e}eVeBsSm!kI<1Vrna{1Ld(z=1MG@5Q+YTFM2T;tYN5=g)U-VI^UC}W7I4LAkR5h z^>R{njYE;EDm_NIoAq$Z7IO=GJx^^vVX@%!>bJ5QVy<)T%xl{AU(_dIX!2+F+5fBA z3O^_z=oHcWl#_BcVo#+TfZPA;Wr8|Ap~X2uft-sJl8p{N#hFKbyOJ`?iF2{IqR%#7 z@q;iB++;y`C+`y$zVP?J7u+in_`;834_F3Tc+84!+4Qq%va^wHw3;vMvG)99BzZzh zFT+1b#x-2y{aWcRdA9}ol5#mIu{7z&Sx{>bN0Uha&=$%M^m4XT<(LUBsZ>=f$xQ9P z34-!+kjaiIx7w7wGF@!IUU`FoR+-#~PlbM>u2SlfYMw(>+m=pg;X0yD`fcDa#b@6s zil(c072#!2y^18x_h#0);uu`38$tc~ugi>KlFh`n+(JjiCc9O;Z<80v z*0LE##g(p=W?p{zQ8WZZ+q%^2ha2su8{*Ec(Tt( zZ+BN>;^1j2KTAet9@zs?V3_Rj(KyVjFm`bYJtjTaElu7oPaUv`kmHV);v0S?v`_Q; z95Mu%owucr$U_U_8yU}NZCmU2TqkbIewcREm97Z z-xf#Y+7=FxK`m6{j}*Hi#r^5lOfIu~7eAn_X%R(eqr3ng1aHS15Uxo-J;v`6Ggw_( zbQMR2_^vJVA(N`DcoXJ;oKvzU;=w%6 z6P;lr$VYIvC(hhLflrY2%x{o-@-_iaa#5w|(+X%yjU8+diTjql{yNg7)DI|CYV5Mw zmifh=t8C_aQF)dv2)&za4sPm`64Ta)q$=5r<_&zLS1HiwHhWayq0AmrQ=mI#zpOvU zYDH8g%~cx-i-LH6r&;z`I*6acpj%Hff$z|f#6!^z(=pUKbf?R`uQH*&gMZl_9Hp~i zmt8ySnzmJ(AOEkOlmA!xZQU1?Ba<4jbrq?dF;c4=EGHzOG*_5Tft=aTTLd>@NiAJ7 zOJ_=M5V{;uaypHGSD8%+jl|*PQt}84tGmyqQcj5r^eV`$EiQFB@j0-QV^cytgnDi{ z1uCM;j!uk@?En*$<7;$7&MIKE8g4MB+2PnIPr+4}1=J(8Eu9RtX=My7Okbjs`^qf^ zTCc!FQm2c$?@qJy3*ob|Zgs8h0sv(xQ<{GHm)vW~^096z)@iSyj1SajxtaxQK+ zpP0&_{FWR};iWFr6*&n%OJv-engrzQ2unSdYSEyj&TAIY>#oOUAO1ZGC z-*@u7bE!j5Av`w4PDlJFbDa&bu-U4Rs*8Ct_y3p^wY}V_A)REPnUwf|^tLLi1+5l2 zC3h9ilOA;*d!FD1n)KC*pwD__0u)_j&iO-Mb?~1?M`dTLlY?q6?9qYkT^(qAfDYVB z2YM9MYEx)1VftA<2;0wPmhES&xu>6a5}TAIpfFP}TBj6LF6E(vFYXwu8_N$!r?C@{ ztdpm<)iNnX>y)O7WDC>H%9f`#B{T}J%cidghUKm_dBNd$TZq^2xZ0bOHh+uSQLLuP zKJm;0BqF$pXFehi@eK1bezYaBqykfWRxX78WYdlPD<SDays#Wk-ERTGH9wLGsa4wRUIPE<}{yv98Oc#;%uOkH1;`0Pxw zJnN(~sZ>^-N~wkKzGdD|CPtTmQ>0U4o%8y6BUT^2C>h~dD}}9CNf{HMQNv5KQ-Wv9 zBCR5$-OcXl)9xNv38#TH+5exr^Tb*=kSPls&3vD=^-CDj?dD>|>``b*a2(|5r|k|J`v~;VGjTPcIsp(x%OH97{m>Mc#+nxX1_KbXhl9Wn-K) zVGOape&Y&f{(irKc&|fofZL2WE1*Y5qEDA??5rrf++uX$KMSQqcQ#gQ!r#J;Q&0Yu z-zd&v|5ztrjk$b@Tw3?3{qZVrsxGZN&674;m)6ZB$;DaST7MxBrIqef3D&js2P9e7 zR)nCA95Boif>NTHjq)S(z3f&0B-yKM+g;{$XY@&F`#!bGZM#w(z=G(8azT2tpDUQ#4d*4jyJ5bzz5*@{z{!uLneiHgB9G(aax#|Q@62;=n zkfFs)#`%-cq7ZrC081f~$l+=CkRp0_Hl+}`jdPr$&w1j_mf2dCACtNti{?uMO^b%* zPH)lS;7IYzx0@8|{Ly`!QCSna=Is1z!C^!vZY!131ZuUC3+Tt!;^pwDOhot#n_IiD z8OqoE=|q%fqyR56^LG@>^|nrsBd?+lBT`CcLsVX2GFlAAUFIbZ2x2wWG(9gR@c7HQ zoiE0vtWyQ55LbC5u zW|gwm=_3-eM3hFEEIHs?C>w(%xij~omNE(xzso!YL1R+-Bky*32Q$|66p_z> z?*G4q8b#h1$X%29?^=7n!`@DYO^J3vteWDDV#NC*(r&>{19g-(!G5OoiBsucpfn|xn|(A0eVa? z%oirlH86Qz4<5q13N*gcU-%PQ6`$sP!*47gK3%&wC%Riu362U1AC(6oxGdh4Ls(a` zUhalI%*%m9NhL16nO2oicB>#BuulFS3-4$;I=@1?;6$)sK%h(ycf{uvp!)&J40Sf# z@ikEcd7H;j@H8a{98pVQC4eDZSc8=nI0(0*z!lsmKq!?7dT|?gE>b+p%+|Y5ZVMl^ zRTwSWeGQxx7S2(~i4G^oTyy%r3M5#R6f3Zh6_8^E2IEd;XiibZJb)%uI7=Nt=9zpY zDbdWe^|H9T%qO@8Fic@KKd?rjt&J7`ggVWntTo}q`ekdS)qO9 zBWPb`hM#S&;WO4pt8HS8@Ld2tudxii1wJZXH47h3$Bg5Fd&%<@KA`w)Ir*@^u*Pqu zn(XyYk|QY2eP1X3I4h!e)sqmr2p-!NloGeuk-OyUM2^o8o|}9Ga&Ey$-rs^0#^2&% zFNu$)U`gGcg*ezyEylNr7%e);%~zqt=nhcpZq#Rt7d`7fgHWbju_;J`ijMXq)= zd2FA>OR_9%kMj$emUG;~m$fc;V0>pJlRKc2WVFfv%;s_n-wRO6M4vhY_Ru-Z0<#>h zmC0{yYr$N&=a%^-OYnWSbpI@;Y^jG839ZBcn6|T(tST_ce8$5tJA5ariVuBu{F4ywP z>z4sq673nKr~OJq7R^kZDceX1!**2|oE)-+&0+hkJvrH3P;*&ud{Qp)8AOFZ($Ph- z_4l%CgK5#4^w>y$6pbWx;{(tM+kATie=dZ?#okT1-Gm0EGxXP^*Gk zJ#j!m+YmrG|L@vo5+6-@WDYA#=`tpS{;!d+qhS^Lh3b=Rss&3gMmk&W+Yh zXez)3zN~oO`<(2KfIQ_CDpPRxx~6-7JmqKuk85ji;<`_4=HNvSzf z6^;+Q3lV23InFUDIORp11;K>O(qpWcLxl!eBgB0Ns`zt7mJg*3Y zV_54->RITo=bXb3THWw>qC>7DSGU`ZrZu4%inJD9JFZXCzu~X%Ml>G~e@Z}VwipQK z1JUs@hWmcS4X$w@>+r8<4WH39ADvQ zLs?9sKoz~mISBAOWxlSPpArJfeBWoj?lrNw{M2iH#7$3Yl(W=();gxBzTG4i$0`*K zp>;X57P@zOWb6Kt4x^-7D;;;tEZz{k+#Whli_dg`~@ZC>3a%ij6OAV9+|qmMpd8ZRR1N_!AHII z&obPs?95{sh`o_(`diUG7>&CCrfbSV;us2@`_17b-A(3C5vrX(+pyZk*459={Sl#&}o}AAo z61tj!n^`^?*XUD1nSYkGjHiz-fmfbb!AnRvc>L*Fqv#{+3-{$B0h?cdx$jRL9uDSn>5`|Z~EGp<|p z6C|E#5-$;dmaWSFSr?_V=ZUw=oUOwsE%T>Jr(L(ID^VKwKTuvuPA(WKy=2WhTQ}F^ zXF1Jm-Mz&ZJ7#t7d`S5(`mg$al{QkeJGRT1&DBm9R!XR=^Ht|7e$sG;^fqPaP}g$V zxO&NY^)sDQv7@#L0G)=B#Va#L z8YQpH$y7icKL>b7drs{h{U2OP_153|m!$f@j|AtHHd^v!0XHjrom~DA${WNz z2)*AaCIEE$lLntuu!kf7ONO2*FntJsCB9)%^7!kL`|oNPCr!O0O$n??Q*C^VG?fH% zw37h3L+2wmxjnl<&4;uH+(>ItTJzWQS)OElx1{;(c&+FAC@%L^71)Q+KFrD#0H+7K z{LA=y{_Sj#07^KNVr?b<05CBq)o5zfe$eV4+2Thd;+~eq_TUk;mhmi`A`ne&>Y95Z zATgBXjSu4`Tk=}SlOQsjf(P&ts4R3OB9#S$QBMfwU>Uyv-)3t%H?g1ac$uo*vBr5y z3-+gk*0_{c@q4NL$1{4&XLtUV_as8>-;e*E0cJosuYuE64*$7afY^FlW33^ zA1X9+^bamnBzdmr>kF@u!yLc1dxW`T=;p^Y^&LKQpB|f-<}=?8??aq|4-e!StKxn= z@)rI}*Lh3UizA1U%?_PtxI5+_>Fi%m`KavB5x%r`KjfghV;&df)jsz+UHi$?a&nW7 z)F-kNu{lCiNXksn3B!}yl?cO<5#9?qNl~BqAw{G;tg}i(M;vH?a8W3*?USrZQNYkv z4$)&{J4W}PeXO3=ZNx?`G3p`RW?4pBE4~?K7-_Hj-K{fTHpB~*{A)1WAI)O>?l#gs zisLWE4yGBqv2tV`bdxzf1Icf8fB;_^vCHlF`Lg3Pp8y-X;#EdH2tPfW_GX^x731JD zFZ!z@rWsp4m zyR|!n`MKak{IvR)IfJzu{An#lG*u}IiXbTq(8$#0Q*5di&AMjegGBXf`@f zLq4NBCQ8YUHQ(xk#v!BP%GEQj|97@F`_B*=X(^Esg`(tAgZ2{W>Q&_zb~J}#acO*FO-(eS4C7KNDXWiFl!6_kyQmX6{#4a+O0LQ^9ym< z%xh>D*XZV-Q$6gi3Bkg-TS$Sp7q6#)@EAfso*Y0`I#wCLWKq#iUbicV&mx?jAP}DB zN57J5yD$nOVy`2-=Ih$0jWZ_=E5`PvvQ#*TK6I((4CJ=u5x-smGrgV2gW6MLM;)4; z3G{SLlLcdb(C1(Y!x?f{Y^%=g!KDmz{{R5v<4~S8;&^G;8f23WPh*>8}C0VmZgn z6Fu!0teumH;JTnVwILm@_+Sy8$8xe&-b>aCQ~Sl>p}Wal6|T5Q|al zW4Ac@K__3fj03~9GJ!BRF^(0SIZZ&>F*8nrrh{ka%fEY2i;y!pGUn0Es7!GH{aMDK zHKM<%VALZgZmkpZp>XP=@R(D4lnY6auw#@qj-B63io^63u3|fJWJz$Jc?Av5=vQW! z?GW?&jEi|S%+Wi!u1hhTT27~!oamQwEN~>90WiJ(PM(NX3@8M{ei;TLEXqKULC!5E zGJ324Hdqx*l`x-FHRa*`hhB!HqT0qf=)}?XN>!txn@7n-+iUMe=|AD&{a3s&PRTKI zrX(ui;r(?|5+2^K<Nl%__jdF0JSGg!%o!r> zpU%40n1K}BocO0%o9BrzxH>C#ovrx0HKxltXJMwxRHCa$%K-On!meA8zhVGC!aRO{ zt|NsNmZnj!iaAI^$-jEEqZyHix2|l*WmkIp8c#uyH(Ga0o2M|FX3RU~oQSk$M~y;~ zi@eQs!*Bvqj3br0ql`9Bsc5E?P|knP8jmrG^gx@ZR;=-Q>h_NswIolXuAgF4r0zKC z)_vEh%be6r=Y5W}WweFE{0K+~qKidNM~aMLvXgS3^Rt*AGGw}Ios>tMA3?8c!Y%ym z?~N{gn%}l?JAaShf6su9h&D?S`Qjbg+q}4yAA0NHhrumg#qXN%7XE&XH!MkLV=I4| z#@;qkqs@{;{yXy1y!aJvy+m`BQ*>7iKs;y zAdL9Qv5BcT-9e2zT1#+;Y0*XUh0!Uaqs-ToNmJWA<8ocm`-G^A-X{wmz3*Z5SNic) zOdSQi+E%5Gbi))AF0JWqkeJYP(*;RQll@pHR8p^dr_2A_gByK$boZreU|KFv0a5eq zpY5^_MZJP-j!yE2(5B18vtRrk5vJ`txCV(@Q|51an*uSmt{0ru0!eOfJ-E2i`z`1} z2^?|=)H3QyBnl4_-j5JBE3cl=4H!8LwJw8mA<79e7=z$dkk#d&jn_h74^%uQ3;r3R znpb}&f*BFnX^m%6kIQ|g*7!Pwb<_4%%tw|bkSxalwotqAmIEI2mS)M2HM~q@b>aF| zq6WVlA3$9M*)MDNtb*jIHy2T_!W3v~I7)6|qMM{baif1EhoT+C*5VYgwTMVju!$dP zv6;uV^mf@EA}@E$E#`^2#k}@hGa{Qzd#F3A9xzM_jzCjY>8zOE)3dzga|Q)9Ga^G) zrQ`v=c4SSVn@_o8jKbv->!{E0umoAFhNnbd>(MDqv96HOo%mU!6I>^&EF%KfF)V?8 zCR+~c#5w)Xi(bAotV#vqk6tiQztA6h$dE5xxP7sJf|+sYV*pthdJw)k!~E$^2Jer~ z-0C-X5`%OLF-SWC=C+#Xb?pK3_kwdorGqUUlig2LQnVkseAtx%QXao~3~Fl}%JQd9 zkBv_e#bR{TCW(t#UiKbM6y_ryntXcK^X z)>?ix`oP^n*j`4Kn4(RQy8+XQ@`(b=D$>2>GtrP5t)BiQL|t&WEIz&mYJu=gq5)2% z^!J?36xu@4eZ0Qdj}Tr_-(n-?3-kMk zGZ#@G&~{a`HyV17Lm~7qUEm1GSIU16|7)$wQV7?@{?Av7K1mkqS*ya%pe>nDzBxZU z2bHCBSd@zylVtD3TsQoL9Bp_8f}JP`r8JZoG210c36yJCdb#9@I%B6OvWR|kE=vH< zdA$|AKqTOz(UgBSZN`6xJ)oqY{+)EyZ>d_tTd5|VF>66!8q1CWywP-`-I7dysS z{@e6n9j8o@l}LQOb<QTgbKGczv~>5TVk`|kNQ9g56NR^B@O#g!g)l# z#ZlHW7s~mn{jyuTRYKAWeo`rblHb-;u)32V)YY+7|~5#BN!oFQgo#!E~7yEYdtflxD7H2_lM3A`Bw(Qmra@= zJ2RLtam_e|c;}P~V1&zwz%ek`%1%^xtmo^NjbPBqSDEI6Z^_OopX&a;$p2=I^j7>y z5J~6=J0haI&Yw`!!6+fBcZzAJVLl=7Avc}^RQ>`c`(6Q$jlVRigq<>0q6}LsQASdn zGV#l4Wa}XXBqdScYzl1YTfoVoFG-IdYezaHA28puTtXdm_n3A(s}#T3Cg4785Eo`` zP&F>ss=+kXX!2Bh1Q+pu;=$MgnO51~Ay&AnGldrYZBGNfc8|QrZ$DjCKB_RZTU#2D zDdIig-a6~VgD2|#o{4G{wHImZ5AwV4lQ2KCM;qp!oJqr$mWYFWW-LCFTxYs^bCc%k z0&<dj4>sBe<%Oq7$`cb0}Zv!qn#)>|FRV2n9V={Q`#Dm9{oxWRh-G|^>Z#)KN4 zCOZI-gVW?OKEsGSkubQz(WL;- zU-Z3poFHpM&g{8@XSWJDs|>ChNJPKf&Oen0uHds<_(9p>q?{9YQaS08W9GalIaJ~b zelaO=4hE{dH%c=3x&V3;a~Oc=`iJ>d7H9IySHoLS$IZ8+Dc~sQYbf|YQL`%eSkZm_ zhOVe#zg>!cFrjrXz&QlBYv|8U1=J28{0VQ$`-PCUi4)*#CxJ;%Bz#Jvlqi(icO$q^ zO2O-`p_D_ju1+Fy{PYx{Vd2xVdiv#;{EN87{D)}Ce^>f{Zw7=!SN=G9g8nX4^arfv zrWW1o#{5?EZ80N4hj_JLw#+E-Y7ezU)w?b%ct!Zkz7em_kuYT-Q9M~Q0e5uFqAEph zItlLa;mnQ^&Dr)OyEvNv7C(nvZ=HA~N~?1B*mS`=O0#lLXt=NmvvqOTM`9?)O1l}= zMQ|V69iHuG>*Kki%J^T7g{w&xo*#Sp#F#3g)Ay0GD%GEqlggTV9(1aM*14=0>DcTq z`-I(VJ^albwl{jV9;?pmb<|_jZxJu`mRD7>7*TMbIJt2g^W01g#fq~cf=ZH+~;0`gB()j#C7%wB{V zh?No?C4WwnKiTppgOv*w>Q7M{!tkD=Fu!_iLaKE>qu?Zw_jrMBPFji35o*;H8*A%n zlU5GUqmpC?RuZQ}ui(e8jo&EF9Hwh4b`Cev_S~=Uw$bgA29OnaW8+e~R;L8dFk-bS zNFwd8Z^&2M;}pNf6Pigw<(X65x)(RJ_T-@c=|9m0K?i3o<>#GM^f2ZCHkR{ zAGCVYw)sll^QN8Xb=%q!Qod%j(2yLk}7;zr& z#6r+D@9UAb`J(lk-%_eMl+nCTs#g3$batmT<`vT+1_9D>i@QBE-)@u6KJ=P)Z-2WJ z{kfUS1udH$e8y}k%JPVBxl=l=gh-0dGe`=<1m8<4$AS8r4GtZmL+mtqaKwW zPE9@qC~8Zv1BePwj(wmB?IlwFyrmC>OBAh1c$xSrQKO($z37*xA3Qw$cTEd!ak5LG7Mk zZj8K_De8E*2_2TJ{i(Z|9|ze9B4)Nlb|=@|iMdL7)`*3}G_K{MYx+I)G{_Uya>p$q zK-(fMckE)Kvn}TR5#Ar+9h%W_(>|BxIr=f*^(e8C`>8TJVusC25% zmj_AwvdCLLgpVNfxDYLcj^BMJ@VH>cyTNVt#)TDv*Jho^el=%iac8SmXs`?4tFcia zG6xfePI4x^v$}V}^*$4R%&9x+Va}$X2kIt{TarTLVEkT+N!hA>}%+5SIm(t6i zL|mOpY`L-r`M_2Jf9~Ff((EBP1``Cc)tnT`#cU)Chw_o`TjC||m$k;#kTNz$e-FAb zy_A9T>23>Ioxdhi6+T=vEw$%(J>kx zW|U+p{7tCLl$uynlC(i%!@T+zX@kbW?#tB|ld@P+9wFrsNogSk$|%?0K}v_DY$au@ zr0gUGjE<7-uXs&yP&#U&l9x+fu9PmMbfKh_l2R%u9#TA#QcFs$q|}iDVz=%+8Ilqr z9JXld7@5G5b!fR8M8$cTHOPpbt8Ng&T{A7exqqdYADBmSf6kUW^K+yhVZl*NHzFUT zgx;+<^R=R*T)|p^bJHV$paap>CkW94Say*KM4uyB3Zi%XA(8W}O;jqd^N**J z(2-1Q99KisevmRfDLHmav@+dnjdF67wa9j2PX&b+?6~Y8e!`ap{eKCxXQuQWw&-%m zEDo`bXW{|Q>}3F)?Cs*!e7F4c8Mm1NQ4jmC)l0y)$kP;6^vcP-=bhQgeQ5XeEaZ3i zb8W$R89AY_HTB3G?APAZP1Nz8AEOAD5qe}>rXSsWi2JpQu-^REGK#t?8z-d-n``xf z(;vMib;`emp5`GtFi_H=n|Q_xgmd|p({=aS;AuLS4{=4md)sGkS+Dtgr5RX6h0sQ9 zz0_y-{nkDoewZ%@&I6j}-b*U!Z)MLs3#ICze$!8kHS}plr?^4|SYR9Ows{{>qXfj%TR~|m zCcR@igGR?VY9`fNO}&y~JqBQkHgwkfKs$b%2|!X&6F2n}+5+`0R$cxMyW~w46Lx^0 z;4gEj|AM(w^Cjnj!+!|R9psYJ;3lxbE5U)bo)?}A2QI_P+bo8K1KrEROxc1#;knra z5)^;8tM}SwH>Qks_?AJg;K0arc?qV(8NvSSc*ZHR<6bKG3x=YyWB_2<(0E*3=i&sr zYII5n2|?)W08=6%DzL(ajcppWre3VI>ro;Y1dsEZfLgY>NIW6C?^Z+1mLY0QCo?{= zBy3!EuqEMVk3{B!qmlbxk2}@cG8?->JU@uDde}0YlA;qLb2eQj%2PgfkeVqT1~XId zKflZNlrJa>WJ?8|>GNWQ;F*`g|7+%mnBXpFofaM?-$yqGF>J$-Y zY_Q%Jo}_uF6cpre9@j(I_bZj8*SxKOK%Pns z^EMG2dwDMQf>`-2v|ihc&JgyGc>0hPlckxSyll73=#LdE(sA*katR#k>#(zbTX_Kd z=Xd9!bB^LgR(NiaE96B%H9R-h6>{53#s=Gcy3lY3*+;i|$0OXOouZ~nLfNLy z!GBEu41U$YJtpA?b1rbif}*6=M3a#*_OU{(5x_jB>$kmU+jYmu!G)`_qvXNPsh2ER zTJ;^qN%;eL!A}|WsMLC(Qk9fNeUN5dYtoWYifZa9sqi`3vawN0Q8iOigvR@)G!vBm zZ=vie`BtG}4D%Wojwszi%>lzkjkz;qMZYnaqn}x#CfYQ6xUm)=&1T0ga}V!*lMdW+vQs011zmth_W4? z@>3QaeUvC?cJ(S}#z{zUH{su)ocTTp_JnB_H%@Cf4=DSwK$&}^Cg@+XTW}Kt}@MG_Iyg*8#k1KfWswzx( z@aG^yoSVu7uD4Fxhb=WT+?P;`UMqx}tU;R-Pgtlnj{|J~)YXxcK@^oVQ&Wf1i`GxC zN>>}j>`p!iU!F!asA{1VxIZUu#)tVueOKk6?@M9|2{EQf-r#)s#N>I;l+U{*H#Jlp zfIs9n&o*b5A|PuL!qfh4BY(pU`Kh6Ad&*~L1uqRZ^iK&*UQ?Z)VxN1AI2R_KQBjKZ zz3q5MYOAWFG~l=1`o&6Vv@d9WaCLvddIx=I5(_|Ea$&-ilI(qL1DBDVI5mxQ=ZKIk zJ9K(%d;`3Rj+i5GG;2LZy=N5uN;-^$ z2r+iS5xRX|ZKQjE`FG8?Q>MSwZEtQn%vMg``!tT zIuL*4bMFIID!~h6P7HKVgi>G;Z*=aa8?7H+l_1G*lz5+$*L!chnLME~6B8DBdiqyF zXdWhbeExof4=q+S>&#D~*fBt}2Au}9cSO2#@y`-H6+@{i0beAzuqbdHBHIuoc-te1 zRCIYEu9dbn>>eYlacwADFQ0~t;7Q8C8$nkot-F!ytr!yY)Hk%16DKvIODbaFaDB=i zMldycU6r=fJ8|;3Ub?sKVemHRi-(-M(EW*>B$Z zp!`HD3*l@SHPIi*t8Pw2FRK!zNWb=n@3oTxaO(Em0XPhHwtZE0SLlsIZ?>$)s$=_X?& zs>T$_OV!p1?&&&FrcyX%&vFTX!S(qVhvNR|+15R$phvakFc6{lR zEA+69UT+Z$gbJJRE7(=Sf^Zbk>i^U`q$KS6=@l}hI0!-1-W0>)ED9=$M2E+JRT^ij*QOit9m4-j(-!kF(By||RBIT*1*JqWIXNopR z&vjBg6UA9Ft1wOO_1coXXcaT2fO%CG+_Pb$(`L-H%GKz!rs-$^Fr21o{K}pY&6YZh z)32K(ETr0i`Go9Y{8BFFhwV~b;BKA$9Zt%98}TE#eC#&}5fRHcV`e@$oppp?)sN@p zXlA&q)_vRUW%AVNqIK%DsX7%-o&7To)Y-(dQzzC_hxMH1c$&o!j_oRZi7AOaTdnpi zAx%CCjNDn1HoKM>GkLE0M@#UR8-J&!U0Ys7H`eKQ(fj=L#L)d|)pY^)&Y7bai(8Gw z?~G+e(pai`$CA=BmQFVVwhEd?e!t#olU5=?&=tq^xh zPItkjMr>y7gM|{5H&B#o4wd`FaKpVmI7o~E9-u(Qd9_;OkELXSm9wqr&E`y$M8l-P zgA31xje{<-kCS&|sn_hc#wXkygFDe$3GwT3b?NYPhLD`%t0T<+9b<5ggH@tgUn zGhK}r@veMli_=@jCs!bLhazcM0&h{3u2!bUqv=Zz!cKDhY05O!F$%q$s0&Tq^p2{v zzx_P< z_42}WS7PW;Ltn$I%VM&8vGM7FSk))&(qf=aIK0G%y=0G_D5@>J5Ldy@B-rbGLbGhN z{_>kXUp|$7dnQa67iKM&1@$Run@l4wmhN}2YUo$C!~8Uk{_uM1_32zy#I~pD>(ngU zA@jj8V!jO2yPwhS{3GKsOjAZ~?LzZhTXOEC{cE+AtJE|uHQXf~8s;6UJ0q$_ zCLfZgJ_P*|vjZnm%<8waC8!oNCQo>O%B<7Yq#;rT!+G61XB>&b3-D!|dsWg@yIrV? zcnQf&f*3y)N|Qf7K|~#%My0~M-ufPw&oyaj5j$7&ekv!evj>HLIYsoWfD(}E0o3+6 z2>;*7|E)9d8T680snzx+m(D~ygtJD6TAK54FKLoQEq(iuJ3RMBm)7{}M|+Y%qsT-0)VV*o&cXBxr`wbE4K%a0$fZb-rkKfBtf%Opn zo*`IzD3i|3$L_V|?vT}%CP03;^ob)+Ksbj}yjP$w2KUf<{jFU~c7YEn$v~$7f}*sH z%k$h3!EF8>@6mqHX17rxiP+1X;>;*Th4ehEYnI%Pai|@hGsGnpQ8`ZvCk$H)5|zm| z!TvHX{drz83DpO_67?y)m9I{wtej#8;6*;6z|oI!2;7|kq(1A5}9NxmIMG!h+BqLL?PP-XB`^g@Z z%NUy69F5xOdB?=d)R^NZ1A5Oto$q==$Y2wT9WVM-%j@7WLp6VLH570x|3!YRAMD)D z3h-g-tZ;Y~OiVI^;_s8#8gTxZ5+?p|FFSo8{qSC7y}0A#uJH^}nkix;%d8WMWg?y} zWbqhfwhFr<=mes6ZdT6hseY57&Zs9KgU*G7xhT)qxG6Y5?^=}_8uy6($CP;bBPoBh zn5jxHvnOo=z;X_&iLZ4|r;pF1uI$Bu( zTR(Q@=xZ{;O=~Lg)DQ4X7bqw#&(xY;W{v}~r9z0*n8)emm075J@#581UI@j)k-up{ znGw5iN+9-Kp+tK48MtZJmKp_9E3&m)CA5>MwM1G_-CLE48?kv?p#UnO>n@yZx4Sz+ zc;^xK?Lt@$35Yk1hNHr_3*}&gR)-rVxfYAs$Kp=!cq6F-+9xm2#e)Isd*;Y85kV_hSr)4ZX|kJrjRIybefn0 ziC-#nq0|86URR#*Z$^MNTo2%?j8(d-K)0XunSaxt-;bxQZ-@}e^wr5dOIzwoVvT4^ zd`B2*7fi$TuDgAl-ktr0$I;D|Sd1RikDD6x9+xXqj2|$q=_*yvTQo;m z*==S=yROc3c`L>Y+ds^O%o{Fa&cNF_J-FH+5{-}wm1pOlArE%WEm5+RnC>KblAJ76 zB}d2H8kgQm{-MPW9i>v*3>u-S*dl#NLfFaSSft-9_Zle zNla2h)#xEw3|6Z6A-TR9_*a{R>Qm1Ki2p-XjDE61@z`>u=E`pWefPD13Lx&XsGft8aml&=z6Ci zpEQ&~L!BF>O2YO=!CJJm^Rc8fZ?s$`%U;$Re?*SHJcqX8*H&b-?HlH}Gg|rGUU(|| zBmqxvkqJDNNS1=9S8hwd(=y3H{++1gNB&KvxUS&o$7II8p+6$ zOzbguGq-c%q9%4lR#}%fT2t#YyV<0EJUx6A4V4RHFM8E7y{ok_I9tL)XQ95*!=5=t z(KEvC>5ocW1+1Rns2-+Frykz+rnmXrl!{PoaEzyX=A`-GT>c}RH&~zC0@zCgJaM8< z#Pn~imVMm;BDWUaDy*uYM1W1o4!hH4pcumacj#XGx7gZ)YNv5P!Bz;%b`jJeHwwKx zSTrQ)RipHqle6%3SF1OZ)-&Fd)OZy?DPLdXE&5!J(qFnNQ&L4%RaxqBl+$g;*tsE9sGD}=`}M6wW>Tri{ab{a10QVS>)#q@yrpx{?u zqdj-7*IXtC2>2PW#80UnvD4=daEuj6Bqclt@%K%zSRf8&UBef*C=2wBc7g-wd!fSD z5v=u^6VmlZ(u8A~Wv&@(PAdL{Z!VWJNxYO-)J3| z^|2bQ*7Op&UUR<0zOJ7v_^-06!pEd2ibe5xw$9L&k7m8B{`fEHe30_OhqErZ0h*o< z)|$SrlB(+}V*`pDq9~cMXTW+ECUB^q*-sY}d%h^a(Mx<$%?suQ9qx6w!0XMjzO{`z z@lut8j%*78w0(@w_fphX?nABRdbE+E^^<`-tUVLe-sDOYZWtic z(=}2`pzWbcciCM&BUNOQim|xHGeC46gVjV$uapwk$b~b(Vh)}tkZCQ+=b(qg7xkTt z*!0Y}rhuKWY35LCC_{#^#s-0nKnrVxn>Jls2&fI(2V}o;eEfgCL5IJ?L1V2-LoWiH z3yw%)&B!giFgdhH?E0cGZmYs-^JM($8fcp`aa+ZLHCe!xTt2o1%$u`n2v!&MZRI2* zXD2xbv`MfK`LNED@KL3dD?OzoZcz&H<`%u89KXsHo^+6bNAtbuDZhCTbobai9tMk+ z*gET$2iRevh!Elq;9D%-^6~xz=T)9Cg7H1V|3&gLorkc5CZn+_NNYT1(^iJT+x4Iv z;L*1j>+@+wbpCy9z6Y&;m(Jw(oRZ)(0v znQ_n^Us}x-9p8(lzsQTj9nrbKGH9)?wOjq3WlKiqhrzlYbVM8U@`e$?iHgyWFX;ux zAJDH*Rvk?)qJQdIWxGufm{#5W!aP~Ep4LavsL$Pskz6eQ1V*4bvdY#X%sIZNn5lcT zc21Q+l&R<~qfthNARvIJx`lP6w*4kf>EF@r{DkQdc@xufz1H{vZ{UI0s3smeKkV6;YiH66+{0l64ZgKc2`H58*# zu`|)CQ5LvR_*5rSuhPsrm6KtoKM^IsZirrhCoyUEYaPx!*lTq6-?Tf#f2m9fYS>$h zs8Pxsc(kUo7-eExQ~(XyttXMN$eEwxcry%?%ri)-1HIm;*H*tRSBR&4A!FE(~3+}B%13( z{ba5~dCr_X>FQbNaVUeSZl$l_VfK~rU-Wg9g2+T)(|Y@QV~vF5QnNrboN3x^pK^_k zk4#!bwe5OVQdSZ8k(E^YjtO06y}wJ;JjEd^yXNAGG1(s^E^jF}_g>y+k;c(w=bs=C zcFqlR)s@Xr^Bl&Doxg8~y1YFrISw=6Jjy1R0dJ5ggQCN&(G>RmX>daxe=r?2X7hr@ z;++Qd?V9_nJMU9`lE;hoHTxcq&VMjE{}Hz3Vu@cqpJI0K1k?A(n)Gs4Wd6ghS$SQ) z$J0Z2dZy+JM+uL%JB~b(lBN&bTCRr|AUM$U$PJ?BBz7eK>4A+1vZ1r-;_K#7h*K2_ z7kH64ulyuOPx`-p`27ofe_2a~UXY}qBAihamx{TssLOh|!WGiEG-U<*w?Uta;AVB_ zcYo4r+@$#Lo&zc?N|uxzxdt9z1=fq9Axg#k8zYKTrAe0ii3QjbZ4wgx*v9Uz}buOiE%lS#eEPD8r~2 zrtZ4J^bhS=UO-dU#3STzZkOiVXiN@>&dG~TgU~2|uAGCqey%?{evap?n+D7p;c32U zK>TRr!l|MD%VcCz`|HJORPk)Ze^E@6gT*%IkC7dSU8-CvuNQL_Fp%1l3u6KG>c?!Nk zwWUbt%)8}Ys^hVS^vP4*V+&?vb9vDxcisuyg>OcECQY`2)nFicj@R6ei##LRP}){qEj6aA%1MaAB-(eKPj|(;WpmR(K*Ai zVi#fhJe@f7A8QlZjrz5ev2Msrcde-&loE(tJ;;fa9Xeg^x1N{LMiUC#Fz-+kE{ES^ zZ*ur8d|Fl{>Cn3bGusy#+eqjd(J8x+QsFV(e;o#Ocy1Z@3f2T~x}A+w^EBi7XrmB2 z)0DbRyIt!sEilZ6F)qG>PuLMxjkLTZ=j=vn8NcQ;owN9eq}rfGOBkk{n+IiIQ)UV3^0=H}fbL$ajh|rMaDE12{9BCMi=F1NkZVw-&*exlTn6Pa^=D_R7}YVhWrt$P$GQIh5WcY%dVWJLS-vs{z}Fg z8T0Tv%%j#QlLx2!XVZHrtUR)rZaaT9C7`edNS0!cueecM29R^V4bIt168{$L@wVf-Arj@lU zzfXpXmQ|QvD?3AAe~W_syI8~o?5F9=1?#{Z(FRG-@Xfd(<*AVWrTq8szn1^pKr6X; zI=s;yx7iur2+Nfa%{MQrR_x{E@W@l4HRf!%QI=tTEDWhOwh#VAWK?y+hVvNFg^OiK zFGqxgl?Y&EYse*wYjD>CL3@T8ueo_gE)tAly%Xe=v#arnOpPB!a%ehmTFjT_(t?Txz78e084M1 zSu5}$;<9UN1uy_gBRUhLFtb1xd-7n$)X2HTDcX|6P?y|Mw2;!R+p>;m=TG$9QL%+C zDEl!k91G7bN50e48aiF0m;jR0O$C=dz_VN`p_Y&`lb}AYC*k;bUUcRt!J65K149`c z2)B$l1BJ~cdvL=v3RbY+Tx%VRkGI5phb}QIM+qX)O9*2lc+?fGEZ56VF47v~ykM;P z_O@XFvp6)5)uh__p0|cc>T{&R2GAM>9?I6*`NgEexnh5|gl5O4WipM4>&HN$Su*j; zalt9+?2bFBNrR^{*#P>&@AU4DF4ZJfkiU`#JLiMz$uc)M_mBH|vGZ?HMREd8C9QEk z1Ge*JES(?oD5jYwDnrWOse&2xY%6IZS~=Z_9(w_AcK*-EiVrr-j4H`=a@;)X;n77D z{#a}LEuSR!=sKfbFJ`Lc!a{-{!7YqQ7Pch;LqtX&T;p;R4=f@#*w0ZuhZ5eGYD zMJMpTTD6{TMCTTZQH+{ol=E40coTva97M}jUkEfgK?t2s!!GH>KBh9GzPHO(pPj6Q zabp?OQe=VQ3VkOrCDiL{V)Mz}LgMr@%;rL7-PBJ`(~EJ}u*~H_kbi%hURX+4J-*oR z@9th9yd=ZD%FrgPGCQzK-8#&f>f}E6ok5?@pO_{H{a+pHAztR(jMv)oU1_1;ekaXy18|0W1`r(31UpFP#a zgz7w`RI58r;p*0>gT#F=+1|7iOOqt?ni>7AtA8pQ>!BH8f`w%+gC=psr*Z)-G$+=A z9OV`)ZZpE9<0`&S%4 zA&Ab6W3jXFU1pyfn&%%f#Od>u2VUfRVI^QSD1nq%P33FBC(co+46EayPV(12$D}|wUi78?)QYN7-p{tZrqeW~8Me**81Lr-Qp>}kWq!mETWeaXo=|p$;ahH)ea*2iyq!ZD`npsC;Sx*4oS^oIcrk$% zyZ?%W7ZV?L*N*cQ1ADoshM`oPha^BkTI+ z8*P&1`w2n zv@%;*O1;|UM#X($pd^?>03=T^(_!$Hz*?LmUsRaz=LqL<0G`rPLQu2=QbNp^!+LzT z%syZQKKUevUDez67cW9muEOt%U)JMvF_a@~-^=(?4BI64GC%$<_|BdK&{k$G|5!|< zTi;8aIs(F)gsJ`Ks9$aAoZ{9GQzP%C9n7VCxY)rG!tev!zBF%AjaPtx+Z#?J)yM@k zGq-}Ah2N`IA;IX~aU0qIRmH@?#5vUnPvZ`ABhHuc6r1^!I%kHE#C^>Z{xr3@Y6Q}y z=JCfLJmfuJJ1}Gbi`^{1^p6alc~6W#*D#@97$(`q{ZR7o!j?J2d^f~Aui(R%?fko5fRh9GCj)&+&)3K*AEuG*!SEtef51PR zvN}D)LEFqG8UH{dx_mJ}Zap^BVY4O=W$}rLiTx5oIe7gO!44Cr^d12PQ1T&G5r1t& zqFFVnq^jI)d75uHQ43fKERH^SdIm5ihXlDH_T2+_{u5%=c2isExX7o43kEKK3DR5baJ@_O@_@dzBu*ZF7H2~ zht~{>5}eDj)T+}H9k?&OL6X)=9zO%#WO5E!uBSQC89q+5){Svod?c?_SJ9VWDQ6%D z^$)v4EOpd68TGIFFu)noW3iKMox>m~QB8?{0dtX%dvJljKKEGN9E)z<*pua+hzPs~ z@{Qdzv_+3zT%>BnaW{N%k-z@@!lq4gPwG==Ro^-tiQUq{Zs~Au)@sy9k{mK*s1Ig) zh_ZbzE<9*%59d|BzW|fy1frUY1N}EanyA4ld^L4sbuqfJ#gV;8NT){H3*|+fCUP1Y zv72&3{ljOw;JdfP6O`q+X^Plh0M$SQ7Gyk_0oCf|Hw+em_zgpXbpl_ZQ^RMc&NzvS zyW@mVokC_-!WUtVa+jEC{cHwK1BTGFLGTj_KqS+xwYZ>#qR7&l zZy3z~A?k)d)jOgARIiRzXg&vAFaPJGl?Z$!(_SK%C=}BVC#WgT5B(AbeMh zc}3`2*8aQ{G4%*u4xx+o*{aYG!VyIKgH|F>*9vc4%pvCMl*tO!!gcne>Q;tULA1ge z{jP*_3gHK4gH`utw_Q`Qpfq%3-aw+^%HurZ;c-F z2c;QMvRbSldib}Zy68DTkNVC3l>48F*+QrQEBQKm19!pi9A&<-d7tQ;#L|xj=*MbH z(??8gZAbLl?jQM_kybM;JU4@Qv6^+r7UbGj`0`&+m)huEs6q0OCXM9%ZIlwsxu> zy=-zc)okTqd{w8=x+=*r8xXgW<~}hTaCaYMH!w1mevaC?2OD=JnG9&_m|U7$FxlGk zw#;zo95|?98ZEOsUxr(TI#D`d0QKdYa2$e;tGg^8;@Yds{xzN*6aIBiB+UNfC#V6B zuZka|hsUR+V%whh5P!6)lpC>pLlkZmE0e5{E(d!r$Q;fF{~s>nm_~`ug@lMNvb_#< z?Lx!sL{y>xkBBG;@%-p33Zz*#|E1g3O`k_sV!Saj#WORTGj(%y98csOMx?u8c6Ru! z1`?W&jGt&M+-si$*E=5%`k4d5WHe_sUznnz-N&;;sMLQT-tX=+B7c^qSenu0p(-P? zuVHpp`0WP0d3gK`W8ps42HGa8^(QzxU5UmdKT~hMJS9F*Nh~&6Pv-2y;A4xwesv(N z8!hE;d23J%^_xvH_VKa2vVgmG%B*vMhAu+G>C0PCG6fn=IsE`Mr10!O!;{Ms(7>YB z^~%_YFd+^KggdXBA&>iw&^NjMO8Z!14RpUUvlzaE;~&5}>gnyauf&--Z`wW|TG?`K zM1%D`gf)KChojVYh|v---$2?85&&IIA?~HLrUWYTr(FJcw54+g8t&b*)6Ea!$7@Tk z$rUOsQ1ZI?B)%VoxN<#Wr9;c5y@;#u@es49Ad0;S>-He6mE10Erac$ET?XL3(KB<1 z`HVlUO?42{)1$Yl^p9uN8m96}=#Py}H{AM^S)z%z_70h>SDeXml^&R^7f$P$th<&a zCaZG*pT@n2P&X$R=-P87e`mH9)2ZMiIgj0O^J8azw6T9T>i1))Z0%aL-43MLB_EW$ z5lGwJGiV7;BWw*PkRE8W_A4>Yff0s^o7HlWFfLG@R8AXo6-``p8B6Jrr9~sV-C>w` z&8;95@FaOev@Hyn)3eM=%6;ak{>Ym22y}z?oM`zqodiA?3DZz8dcv)P_}>~!vbsVm z=d7Z_EdwybQ`IuM68;R`)=Ia6Yim8t@QMM~8RpHk<_Bt2iha>0+^)2 z2yKM42R{vs>uU9cri@MvWq6z2@pOc!XN@6#QxEJk*tO9?%I*Pp}M%yiV#qBCi`EXq+T6={u^_r{v<~sQH_0|O_bAdj} zR}&7L<3e{%YYAA67dkoE+tS;w22QjERGoQlP*Ea14IY^F9w-3YQ_usvP$sy z2}a~*e90bXn1gCeTydR$r8WNgH1YC;(BYm|1mBU*3F?sC9-AtO)fO2ap8&ysm3%T^JNIS!Z`CZIgc#OYQX%ieRS>Y$1Aq(9CDd;z!=-?#~%RlwvJWw~W ziSdWy-~HOro6rR+<$TLh`Y`h;Db^N`)O{fseBzMq+)_5_6YD!v#exmXq z=|77GhVr#V(2NI-wQoy8iumo;_?qzC<6NO{tBB6bPH;-VTn|t`{3%hzG4uqGrSy0yj$yh9u_TJLdwkM*TVjc|zf!eFpmC$LTcOW=Rk3!*VlMkANM$y)#HuqwsY*^Tt@rZwKOG-X5GxmnRH0)bDmpq# z24M$pp3jPJ(wbJ@nsz`{K!LrZe=CAyPRfj-WoWpRVUDJjBBjRM6{z3jC(u#rTbwI< z)Qy~A1?<65gB|&gSMBm8-D2?r7st^h-^yhR*`P`xTD{d)!x$LQ2;m172e9D*iQ?Rn zTL@dV|AzuJ8?BTN(_HrI$iDOizf;#2(LpVJoR);+0gLP(ioCc+AMR??i)C#U+fFVF zP86?FMK|DIeQju8TWHBIL(SqgMnk89gg_;pp!KCxXVl^-P{?IpT0Rp!@S| zrTmV8#c~EMkbA3lMJiCrZHSVWjNrnWD0w8$*2}-;C|3zdT|ku}#TVTGW~5e#9$ada zJ~7PIReeL2s6X860`l1_++FpUKg+(io6f@xH!9!j8?9eW#glhe#q8n*Q)C*EHumT* znAL^gyW#@D!6zrE%HT*At5N2FiJq7nzWE%uxiaNvUz|zG(Lx2jYZLM6nL_vM;(1Rb z*!({;l%ky);A_F-9ea6Gls9W3996_<{KsF^+r-<_6$T7|a~ z`2p2wuat{qek6R#a;B{LSO_1CpktFWtkDn17~$+XQ*z1*QO07PmSw0$4lI&k{;XK| z075f=m%QHZPs1^_%8`-M1Cr)*v+Rz@nA+t%+FsSZUTv=@NrXPO^RJT!JLfU4=yJt&jrdz-hI5{4+dVwKPd2tI6 zkyPs{Y0xwiB|>ko3eku}J8G`{j&$_7CJC}Bp(nA|k%?dq2m&KCLw$4+UnAUo%lxRq zRJ8Pw>`y@_T%2MTPLx~Lz#ZLo{6uKz9?j(e2s)LOw*dh?Q6?%nuN{4Yc@WL@rZkyo z>u85Am*(VZg5!eNc@wRb=uE{=`KLRn&NkqNE9;U0JZw{m$IT|!0k?iC105bEt$`PWD}3bc2B^>tan#U{Z`%F zg%&uX5>c7=oAV3(vHy@G*KgjCOK@fbC2fT}5@Cml{tzlMDoR2)&hph^$An}2kp!~Z zV0Gp9WBiuUQ&5!p-vBfW&G(9F3g+`_zucyRfp3edcRlin!h!3pYd=m)1OqSI6h5~w zg@EB(olxMIiGV1_8}%`@P%*XW!=TGp@wF?2&S&L?+&MDdv+PY$Qm#!2j;$=a6ol&} z%RZ?cw|6hgh#P;M!HBmAg342@L| zFYtAp#P1zQY$H)zK1AuMtV<2s(Sp^@hGO$2^9?pzx_j@;RP#;jWEEB{OyEn?n4&V* z&CGDG*Q#GZeFNN%LS90D z6P^AI*6+sQD`9i|_QXI!qcI_uje;tV4_+0dMe&MR1kS|P^EGX3{;qFLC15om0{`LVGnQD+exmO1k; z#k|og6B~sWRwKy%Gkv&4WM7<&G&ajr{n+b>0!|O=4l%&fvxu=gP#Y#h-|P?1;RX4~ zrk!FO;VTp-qI0}mnpx0QIU_ZAR?nGBcp>gPiSss9>`R}s7EF^A=e%{Q2QmwK9Qn@> zOH&0uk*7UL1ZA?gF$oj??|4*K9pT9;|9L%DV1lMlyvhYNlx;(HzOS3r z=?`MyjjaO?ntAv;55y-NrbT3{DMJdOFrH8A=hAm09L}Y&`Ypj>HF)lV+*rFg4?h81 z$9ocnraq`1-m3T6$kSk`AF3sIankcQ^D@)`ppLR9I$*~OY zIoKA}W??6#P^)+a`j$v@4O4|%0wga{TR)cGen=T@g*6NeqDQOKZ5?TbpJNg#sCJw$ zI>BoVra!x-=W8hBvFy}-On}A3M5dw)%KUQ9s)rTO1fmZpNYs`b5#IAiC>{P`sxHpd zT;V;B3blv2YcauW_S_!AI)IQ&u!+o*;zX<8?u*VwbKx%eE{NDs6?dtfcB~*euld}H zS)?oTt&P^H?{?d4;8D(*q#Ol0$WDDMdrit>nbV#gy}mt*44v&h=20J9qxeeCE zFR;uN-*IV8kEA2wbqofCjeA>gcrg zo%%5`nx?i@TFV*0LR}OI385pLesI!xb=Dbg$tkO=`H15xbiny#J2-8f zgs8#=3=bS|1)bt`vK?UqgsGgoV1eu9z|BhW)@vp zS*)m(p);x}FS$)YeXQy1YdKG(e_I9S3y2B(c~2wk~w|3Y#?mx?QS9mPQy5$6{A z&F8IM4WcL+JX=MGJQhSJmebGS3=luJvZFW4_PK+)#E6VM#W6rDgPanH%s;FWFaLp} zIX&0Xg+i3TyH(?3#L56%cm{Rw3_L>j{WVONIBti;8+1MbSl zD{aXwPA*{&(p7XUK2Xq@(f+-L8#*Is+Q7t3}&IaNvmiSj_m=C5>z!8$%@cB%9Q z2!Avz5})VXZzAnY7lR2qx4`$EbuEeKgzn9hywlm*_5v3US5XLP`cs~M{V`X=Uwj$^= zy{R1KEnrq6h>(IsmOXzA>AXLXG_u@niOLe57nB|q{en*B0gn9cHe{~iKJ*2a$;bF6 z$^&DqE$`*9)y0<=Fx03l9Iks@vCSpvnqgZ zZKmuu<{rCyXr6$xbyBq#{B&0%lAEADyt~6Y0`rtL?SW#`c>+S(=v2FG$W$ThG6P zl$(gw;!m3dfAz#ySSLz~dNM1Ad0|fnR{ikUYOWxAZHIeB$`7A>AC0qbj!N8&sxiVV zTdbF!b_k5(P;CN}VQsDZ--gh1Dh~B(`UfEqHdW}$$7#<$M>GHP)kaX>DF+%P||EB+CzOq?G z4d1rQVKMtquS+uF%Cl#!5to=!afca$J4|#l;UcL!4vyy^Jt8hyQBPatp6T3H3K;xy ztJAsn@t+FPw z$Oj|*a=?5^cI_gW3pA4|{v>P`O^i2;AkXv(6V1URMDK=rbBi^nlBr8p`6hOHM$n8a zbxNpg@1mg04p{{)=;HlB_V(;rDr5k*5ti%PEmu}@Z zx^GXr=imt!KRLyIC(S@HoMccE5DW98IPh@N<2TH5?}X%tR^opGt@-uBA1{~P$Ly{6 z1(aohlJfCd)6MGQ1vN@Kx|);HY;CF3+9N^~$C7FJmbx>IEBFLe!`+J4JSb7bsXj;G z>ywpQV?8iHTu@~_h~Z!IxH`%)tx?PXM*Lx=K+&3><7|~{IWkjI#o%bK_{}~UH_Yzo zW2A+N%EMr`QT8n_Gq&J-4))R5bw{xvc1x=X{0P1!M=BRMw?$K`Ztv>3El1r_+9LB= znbRk%`+u@O-7T~uKJHKVWPA>uDD3e$Fupa69^iAZm%I2J_~n+$F!RRA%KL!4L~_UM z_dVyO()5s%c`0?adhJ1O68OTGmL2;}I(4j3mr-u{9o0uipsO2auuHo3DP}#kC@-j_ zwCM4%#pAO`V1->{hV)w*;PH96bawYiDHt)~|<`kH_#TV!$U+f?ChfHesYz`0aI)vUAK<`h| zO%|D?=zvK0L_R9IbPYJ{ISqn+x)AIfA=v9f@pg&}tqGJp-|%boyb5$X^ra&W<}+NA z@gl?#|12AqQ;&^`REVr0b2rJv!{#%%sbV`f+fzfFWD;~KSV9imy{8C2xTky|F&+!E zBBzCt>}&FH=Gq1)*nC%XkG|wZX)l!gA{jtDW%Aj6 zA(QfM8?7hHA<5@gmziqyoz8(;eSJeq_Qk-<8wygVaZN3`eu&g@$-x*dYrTFDiVb=H ziUQR3W|y$0$4W1&6IgA4{8N_qPTZ~J#d>(XfdX4}2M8{9NDGAhUz#rB6aML_dypVj z`myuBWtd;2Yz0g3Rl(php;(bKOWh5+L-Y!S=m|~gZQa%l=268!-AP0Wtkjo9!7;R6 z@ARXTR@#W(mft0ZJ5m!&H-)_Q1c?^v+{v1((y5+B=puTHPaQ;IKPn1&>|`xJ=iKAL zbZD%W-){_ui9u|A1zz^N0^H9c1z^f7M0o|H&zm{GM$SF@K#%0j>3tBjV$@eh{6Hpl zx2+)uOq=D2@6zzs?=q78MtxHVou`etYd;dzG0e5$gy9P(sJ5OkypBVx_$wmsLk{1< zSf7~N6;3Q{ttJglXr=6r4>XSxl{CNqgZss zh(W%C?yE%-Rc`hSHkOKS%=el@f&AC=GeCazx8fPM zTRQm#wPv4|0J16OYw6TcouTLWr(iW~%=fQ9)up>z17B+W&5h@M51(?V`!1ra z&DOo>G|UZ#dwsPzZHqT(9=j#gtJ-`rX#Oe4n#Fh0-{bEVGRq5W%5VF>0?{DkJqzIx zfBp3lzmWG=>A~-6>A{M-2FO=KV&Tg90axJLmuAT&hU${=uh#If8{ty zv+~D zYnTZFDb_DO6%+cY(ic0w6@5Lsd{3jdcEhPIPoxh9IQ7^qui*F+8(TbvL{RPGzc=LM zKZ~HV8ILMaoUl&7ai8_kgEDypeeSm2{t+n|KX6|^Of)g_%)^3H*6Mpm;cCAmbJlb* z?$W|L`_I`<&51WeW5L=x)1E3imvhIZucZ&QZ(|M$WtC^&ltxMA5 zkJ6T2jZ#!L;S#Y2buk>{ zo1bC#|IZ_T4+8PaMjSYFpRxT(wH41=zlCFmQ)|^@`}~WGVjuVypUh#!q9Lm)1i5wo zjM<@uB`OK`(FZH+UwN9Kacy!dN^*7QZ}*@x>uiNqISWoaV$t0IdjmUNxX>#}B_wEG zEJ$ofH(~zRDpnADqMUfojPXc>vW2?YE$TydJqg>DB8j4^EfzDUd&@bzZ;fon&U)sjxT4Avm{>Cwf9w->T$tEh zC|J3}teWFLdQYL-AA32U7{*h?yD=6y9u|9TVRl}Yzt3*A%P3AlIMS@ccgMP7HF=S$ z=6EB$V2fs_Jp9Fgc2uUX+RD~Iazd8VUo0v}iu70Yn-;JWE2jYK>ic$oy8oRfx($tw}QXOPo~1bI$hEK*lT(Xz}rs7Tg-!Kp0=6JzFc<^St;#iOvri zh?LQ;1^Bzo0RZQD`PzzoO?yIh>$Jf8LDLg+fFYV{q+SSdX7ABM`xV^*{661AB#@K}5X)_5y(V7o(QD+fdIlK9I}cu5>>)T#6dwkb{pWQwN*?kSdH>1w0rOCrla$!QTC zjr1Y$fcS$^ba-VTd!W9j)hC|Qt^SC+BMUwSO4eS$E76^)yx9Irqq&`a$q_*TDO0BfabOzLIyvKTum;F*@B&K4W~Mawc8- zHi-nquUuAWi)`P-tBVq^c<&DRDG|TML-{M+e7)LyPdDFFUC@$cymIJ$qpl=+422>j<_P1)Hm%}I73^F@92|=dFx=XP6-Q$ z5liE(0}1KX_qcq>WGE2|>RHs<%J%T^P0{X9-3HbaT=Ycmp1`(&KCA>QCzjL?@2c0` z8&Z-tC*{^wl3QoBg!}~Ek1OG1i}fLunO5CGMkeW&f^CNaW7%$P>264k@YqL7N{BUb zBCbDBx0eJ9PZ$I#^nh- zG+vy@X^klN=PA0R*RfQg01k5Vgy08&*Nld7S5^&1Z<}KdPyvOG%Jf2_% zN{f)r#;m%MWxcl>@}alw%SLKxvrY)OTd7PPbGHts!oxNr{(jDNy{IpcO>hz!yRLH^ zWX{#&`^MffhP6(iiq)tM;``hU-lXx7@x+U%J`W>!x_J4CSIMK3f2yR~X^|g1MVGuE zyZav3^*Jr_W7I8^p_VRFpgD?8h&a%KfsmbLvvpJpJBx}_u_2=5MFkarA`jUcOBkQv zOT-&c{K0If1Msm9z>j6ml~#k|ez6&!!$RvZ{MZ1{*n__PheDjT3uzlL9p>AwoXu?U z+%WG^GgKFAl%CGBN(^_(pzM9Q)DS=hXK4@2j-pHLi-WQ-9#^FZQ&lk;IMLWj z7Kcz6`x0KhZlgHB6zh8{ON5|ljhg&jQFQ|Hq&HnvVqRL3(hjg&w>DRuV1DOzOFn%V z{J<$VwRMVJX}Mj7U~UvJZdtXD@ZMJC&c<)z2*6ZN%YX&Tgkgcxf@=|ZW$VH3==dOy zawh9UCacF)^7lNWU`&)fADr|}_@iRs2#)Zn-+z>uH(U;6-Z~u*NzuH|amGB>tHoz> zoUq4vpz4I~5U0?_s|%{ldSCpbtmt_Ta0UUKaPk_wkZ!=AV7-ovGyMRP@ij%jiVJ{? zYgCv}AWM~+ljYG7W!<;**OQ(zhi^($jYv!`O65uJA4;3J*CncyV*)LZ{iTSsYwQ~9 z7Mv}`DFU{9PD${QKo@r#@W_X+wXDRwKOrytnzH8_UXa&-^xpvA@q+8ve_8}|j@O2Q z-N3sY*j1Y!{ax^hPkf#@!3sQ%##kOXQGkNS=r9}@)OZ11Do-yvYjLigI4gilzQQt6 z92YQ|C40A?#^M~maEJUcrwCApFd&2WoqwbQzv4GOSw;)WLCpk6C zL4~0XW4~D#WL7!;5GyiV{SgpAo)8pM-jj+$cDVXp;pA}>`ycHx72#A4ov4V{NTv~+ z6cY8|cyj7X>Pyn;)kxL3d;PWKV?f)rl6Em@ckv^-M?4h7CAL*g(`)dgQ8$EZfE>>7 z>t(MlT14oEH?*X)6>??Fdt!db{dC5QR$EcNE1bOiK4V_jT#12@RZzYs&^us6j|-dU z$o@E_y6OCAKJ|}FPVu<>u5m8@pnhD(*C31YLuJo4Je=tPUpur1YUg-_CSBUnbKV!_ zK(B*?jt(~J0;u#9`>O^XP9EDOjPgu9F%{jaY&dKx9L$B^wTnV4j`yDmW&RiJp8sj$ z^Flxgp>1F{X<*1}=An6S&mYpEQsrEwEO#+6W4~?#m@Aoh2Ylq=H@gkf?C{Z)>2G{O_0^b6~G^!vo#V{VuFQOj&O)XniHGHCZq8Q20 z)1z>C-_f6RLqfF1`6xGI4^si&g*QYUCw49bOn&1-+Um;DWoxvhmv9*)SL8IE`g(s4ofmIU46zH-f4DiZ1*o{Z>w3$kgTxNZwz|7W5vsAU$ojhn&$^+T*!09^5 z_GFMG2%S^JM%?y-hsaoYr@Xo@i|j3n$Apqo*a!NEp-$4U9^+VE?EMdQv~7P;raiIN z#oK*Y?8q7u-5|jSSV0I#ecY;m+S~aOL-&f_beBT9t01_@BX;WYh9$UZ)qPZ*7*&W* z8}4pY8I!DQVreW2wY}o0c7IsSalRh=gFq_#I*f81a8)wqzx><-n^P&?PXWnep88P2jeieY@!R?i%bzBn|&9D8QioaxQz<3gsJ+7V(%w)OL9AYq#g&5wiVXw}rdzw`VN}r5?ID!f0WuLUoyd9jSNIb` z5|6ifkfl8#H*vjLfFAc5wCec|06Ki(vQBO3ex(t!<1D)GHk9wcR=sLG}6Jw~ZlRPK(w zE9DL+SjtC%bQEj0UYq|~8qZL0W4tTu-jB|X^iUl>BMw>+$>yVPXwM$x>qu>iG!Zrj zIyVOj&uH66g5f~nnL3`UBLM8gT7sZ!tg$7w#bJcXHfW9ewb)1O;lXT*;RBKTaqGzw zWgXcHJt-d28tE;|2g+3I%Uq{Kn4wASFP?$qvTFKZ`` zkf-!yFl$_l$F$oUIX%?Ep34eR6n-44BJR(T`!KRX9mIKb7r$ZLs%6>XIj1jq#pR_+ z@?UZ(Dw!Ta0qkzJwP(4h4usWE2Qn6Q&>{!>vm$nF&2CvDf_?HEgrGxLYxMZ~tgvwH zG`W9BSTrf%u56;Lz|BGui2q+Fn`@B()o1;HGS9 zwu(X}BjMAud_vkkr15}iJUTl$)1AsuzJ^fNjjUatYQ;`;I39mqq2?;-qG@>IFSx1O zeWUgmzQF6E*Tx@{F1aG-!`waaG!F9w=+e{8);HOaoP;!)@G*y?9bA#M5(zHaZ9E$$ zVJ=@EIZO1I<`M{O2tY$t@K`PWr~)(cE8$GeZ7R4>+=1`NnB16kUNCO_>&y<^FIxIZ7E-)pMuc}=fz zBDw-Zzcy>xS%@RNnQx!y=t9&7WDXtTAZYj~eRg<>&irB-2ALw6XyeZEkq#vCDE zXwYG!!F07(bzPg|qBl4Ru(q0)@D=669xVBJ{0~c9R ziUPLi7eb`M0MfNaX<%4EWGKmHXwC1m)`e?m_axx2thDea*O1wgYRW>t$jm;c&^`5Aq~y5zab)i{hqmMbU88QZU168}K-KrjKH0d0%hl|i$$sOS z2Mhb`QYj`+Rw*V~0F4FWOH$G}OnxNMWGlHQNi_MSN;G+_yntVhdWhqm7jWr0U8PS7 zl&nygd!nT2JeDs3tf>#!puhJ*f%<_I;e!N4q0}3Xfjh_pUvwV0Nj)H|6oWCjmD<46 z0g7|DvLB1|rpt4*#*rKu$q7)~3zU4)-93>jW3zDGN)9=jhEl&LUCljeull~g*eq5) zSO}(#>Xe`>BRM0>T7&+`(O9z@qodEU>9V@IqtmPAxB@bnZ zthHz&qE^6cQ?izkoJba=0ICL}$O4ppSTR5!vo*?c&nDEmZQN7T45h zB)ZH2`5D!qri7|)ww8Rv*dP<6S``PSaupEvxOMb&H38kWYiwxgiBynF^PTf3&&Z`Sc<$l2Q<9H6PnKV&+Q8e1h&<6tmEG{-vc=P>=UzKBg@ z?z>N-0Yqe2p4#pK9AjC^x05JHe=(i=aS~|bIQp)QJe!FPlOg@uv=?Zt?GUFmJ|X!8 zN*+?+i1az&&rLz zvx<5!;jZ^#H6mRWdkD&hooIk@YAzXdJo4IKnEUa9^L`Z2NW+G;>nIwq!rOH9|K&Y zakaw1md-oCmfv0=*aA#~rC5KorXs%Js9>s5!FVYw4Shrr6Dz$oiZ~eZDvgZUks3x> zi41*1r1qDL%D7r1F9+PaMI{rWka!dw9J3QL+rr6OZ$^KEKP65V4m^bp!?UlPK0B48 zRBxD%2LzLqc#g1W!pZ6wzGeaU8tdKH53sHlUnv0Bnl^d`^3^eBLd*v^nI%WzISRhw zlNYo8h_@s-5>~`LRJKfZK(LR$xL4J@WLTpQJK^#vohM|+7oZR)7Z zLJ)u5qkHg6Od=9-y2fh7EfX8g@oesM;dNpuy=nWxa$!p_cknrF<+Lt4vSrwQfq?QTSoAYuB*#c>9n5~!nSxYwYmSIXJPI$oX z520kN;6*=?wTyqJivN|(SQwNqlO=_s+7NsvEb{>0dA*KBzX=1+|rguW!-Krz*9Tg$u1ax9pP)4t-ap#Q`L%s#XGknAbp}a6T{kVXpiW zOwT?e;USS?u!M7DStSD7ZDcG zmkNZqeWf`R|ASyK(t=#QrH_n$i*@_35BZHqz6ZtI?TK7Q+mmYvi$RfEH9CMua6x?X z9Qe8?g4*gCqot^+&e5f#baaM|^Jo&R>k2{zPL}lP2l-!^-g>=kuwQE&$3y8hy=;9$ z3XFc9wyVojXSAmK=ut>qH$)S^j1#_o#VGtO#^GASLxp6{Vh`(eZ{^sUXIRaI?hwqI9ia4$14$w`xt>XQ?&6kVUSA~Gtny*hD9~iolFHXviyy-lE1R}LaIJBw5CoC4n1KQvZBHw$ zBxXPj3`Vs+GPHEcOqjj0En3q))qaTf*GIdV(PEXPVW^aew>F=w7Kqj;53$!*n;%*m zzU6jxp8=ZJvq?9%31w;5%eHGvRSoyw3p_X$SN0C#$|1^Lt?5|d)lm4p${S=e zx?Ec^`SLMsk)pAEBST~R`$h)JMw%QF|Dmj;P1cVlvN#uC-Zz>H&wF`u<>i^p1CQA3 zXr4J~jy|#rh056+IOYJs9=~?$5;jg$w{ry~RFexO{ve0l&%LX9da=`f1?@k4(#u&c zEAdxoWg>_>!H3;J-qqvb!Vy{B5)5Gbk@i-2@pCzcc?y}caFvagNB~VysPwxJ0;;IS z^1z$kP8u4Nq@kOvwlR*J7{ihk#t^( zDyD6t>|(N=S?@nYGx0z8_`EAJO*fMwwX^nr@dGv`cT%n!=Jb1pv)>LB5f3iW7f6QE zv4;F~836qn&%ukVCvVt7gn)kK7vXrX1+b7kZY^8lcBvQ#zVGAN#XJiiC)^@?30AvJ zB-a$Dgd#cjv6J3cjc{+RASgr74Hh55`nYvrUpm1D=DQ*@ltT*w_$F(4jH(#$yK?-{ zcZK5A@2<2+j5um1HwUVWX*M1UqS6$OSD@r#?YR@igq$@vGM2Im~u;g_iwmR4bNSs ztnuY66Y`437G9o1I>tnnku-{g-8K^3NkF631JUPYi85=`m-kTYK@ZXQ9uRG@-nm3* z-83PrTdbFlmH~I)9Std z4DLS=_+JG914Cw_CZEK*D51slASNo8>`954@OWf5U+6;xjPA}W+g76160ccvI6;-W z!seUARqjBLB9gMWzSII>0D%iNkvkjs>5mk1zNmi?+g`&&G`YBr! z5*h@V+=&kr?&j+~IZo!BAQbj@!fdMD`)v;5H%ly}#nF;U#V%S6Czq;j(X8^^+h~2| zVtH*6oM#&OKqaPLA32qM&nIRmREnZa9D0cVyXajUh2pzmvY{g~)P!)ArJzNK$VnZe z7K&qRO-q$+Os*kyWsAP}1$2o*nKgaX{6YUf|}E z$+&>{T#o#E9X(E`2HOcYRfjfNvp$mAa+ZB9oVePra@20JUSg_^M5V8za(s4d(UpMp ztF))($AulKH?+m=1Og*~jVX)tHq9a~8t!c}LW{>>UZ%f2h<3fhano%N!K@f=w18RV zdpxeJ$Z?1I)$zA1e-7>{WGx_Z=_FA3U$uV!US|b=ypHP_dC!O|QKeoYIo3(jgrS*=c(Faw zKLf)p)-S6hMX?>RD6*XdSSSVS7TXsKvHH?(O4z!N{AKk$vG>A}NqzfFJvN-~Lj*2L ziUDj`SjNeN<>a>8V!gsz#@Cz)cUh_HVNGqWyFW@mZGcM~;3r3l-xs@u#GoQpDYjMm zcIi}xfX3_WO!x7B*qOc>a|AWa?6)SAQ$;h<5b9>udF#mzFxzN!)$_&L}I46hs7lTHK@^VQt~Yx+TY za3`OL+}|Zv6WsrnIL7qx@Rd07DDG*Z4M?SM87Ss4RTcvZ$FftpuXrM^~drtzGz6m!;~FRrqR0w zadohlKY6{&HjtAd-JaTpjE6cp=kBYKi-zw&-{j=ua1&oG<*pvWY|q61x~_+I^y~3Td|Bi$d!-i(;{NSC zln2-AziX-fVph*m{c}xbsXqB9R+YU}Croh`By9{Ze2H3N@lWSbaZeY9D^UvBJ!#IG6_t({6K&!R;j&hq}f@6n7z-*4@H z2Tcw0ugKxR3|{mP+4)_rKf3!z+u4U4{CL~J4>G*m@baf50&y_J*?-7ybLghWN69w1 z)mqF)Q$0zYsxwKQj&(kJLs<`^uq8Nt&KXjCg0?bYrnN73Bl8?v&l}rh z^W4ocM6oZHDSPL%_Uvb{5EPy#1xwE>Jy`wO4?Z?NQWHr&)8vq~mM~=N_jvM2-*gCn zOV-~kl=gBx`c7c@nh=;oMhEvs*fsSqWk~$4gZkDCzea9Y_0F52y4@iYhmQ-hEdK{G zihV+4hS<4eBs0g#Dp_Bh9iH>R$s!nzNYj}U^5)=#e%LLl=HvGe{w&bzFBs;B?hET~jT3YAo*p0{Ngl!XZ3R9&*p zP+BIXBLpNFQ~Hl970K!FlzjpuYW6e3`V7-9pD7T>LSL*D?0FlJOl#Tz@noX1M$Ekb zd9CSD&V=JCHVDxd?~0O<=~xNzuJ6V-g)^@{CB7Q6DJF|x(BVLd#*VA}>E`B|B^X1qNwUuon z*ViZVDnHk%f-$JgZ0@mzq(~FnrXfql-8^N)CuJRlZ-Vqbhko9~f)cD#2C?&`DM2;m zQ;B1{ZoYv<^}5lEPI2(ZFo((#QLE7P9+m>}qhCjKLP43;@S=g$Md6H5_K2eVWgP6I zQAwN^SL|;h*GN1fN8Mi&u$MieI0Oi8T(L0fwj8Cd510NWgObiY^r$dB4uzad9*C!!wd7j#~tnBNAj zNHITd&fqXma{YLzrhQ>e&p3Bfl5EWGOmt8t-QCBNrC-7= z;ueh0)rp(CtRME3l(@2+XpNVPMH&^5pN<*0A(zN+>CBl?Jo9^jus#-CiBNNmtNuuD zz2ti@(O~2hsL~7)$Xz;KTk&?YxGR_+iCeSi3SCG6zp^54oU> zD8S}T=V^cJKz5YqsM{8*DQr}3?iim!33VmR zNt7~Q#)Ep1Q7h}06@x1Xuw%^$fFgp@5gsI-oeX@``kEJ+^r?Vo%dzM#V7-gR44u}k6&e(scs#2t|(}vvL zXYNlcTPo0-Pc8{sb>j1zUdP`|e;C_vI%v)y9cyrt6Rv-<3MMAUOu*dIBHBf9XzO>A zq_GbtRWxjB6o$VGu$xPUdKF*n+`xUL)6*sIsEjkDiy@RV-p!t(o>Kg8#^| zz*P%c#1RUvkc4E18f)|nK|2IG3(9r~>e<@tP@^uoxG@o?aD5)@JE$=t^aY@)+IB(J0B27_r9j z3B!Dn)g~K>(5rh}dqEZL)hq!nvMyzvLgiQ$So5jiRlk(?T1BsFW`($}*tMe9G z92sYOTb7|62nLiewyu61i4H);L*IL@1JV*~Pi8?whbMgke{e z?}PPiB|+V#o)@Cq5g3|9ovVethd)EyZigoy@0iyY_SMaG!`qB|=;`}|6jsfWx6(iopXDu}5dsc! zp`;DEj5Y+23Jk{pd~wHENChyJM*q1QCRY<9RR_ z=0R)hkhhtlm|SchP7}sGv9Vs4*7zf?Xsdyn&=Z~z(6-28mv8mJr!Olkbpxk@p%Vb- z!j?jw0hpGbf$(gD0G58rXL*k8BRYuHroan+&$fzyP>R}@kGI^$BWnDq<1#=!!#&7E;dzp*riGU`!ai#voW3GELcGo@mW&2WO`ZGEs(9rNIoXx z&TLJsJzJA=!+^7b-in656ZcAn!5&2gJC$XH;9s>h1&**a@#0}y6S7feYbt4DYm%J^ zeUZI2y_c>iFzVEnNW@Kl+1hx&o-e+djpT2mA{`eL`7#7irrNsp_q`NmD8&8o3>NPa zE-N;Jd>%qWZ2&@f2*)FO(BIr3&OMundh_>f24{ieRk9e0dDiBS<`fnw484Ll#nduE znPWhi29+E{t+D{I0M_kyvI3q+^#e&8tUJEkOR%+p?peo2slBP#w_|(woPiwOPsd2N zE_2)W-reF`ER=KrhQ&YLg5SC#6klr;ZId0vC-IZ_@rvM4On!O#L|Fx0a*}8krZbiQ ziKj3CmT*U`h$2~t715{8?JY#Sn2y~mHbHxP5z}{(dhUV3V)fhuh0?No&35v6T;w{@TBsm%9 zE2P0R(9XA&Sij$w&50dxr*u<==Zf_kweUt;y%ra<_GI$W|DDc@(q~AfoC9Se%15N5 zIo&U>e=Ge-U79o{&tG@2ld+oy(ho7jM=!t>Ut%?=ULG{JKmLMHJ(2_2O0+H3Bld-Y zo(ngbGOnpUF?ILN!zv%TSKonInviX0^tL6cx?rJVoE97;1CB@T-5u znYo4!!rLpo-WF>gwn;7&_gr{-f{ zr7)RtWP|od)>V%lD>;dT+P!rmty?3t=%Xa#$-d1_uO@$LuX^Gk|5o=3{_*ZTj-`Qk zgNyKw-=NYE%tBreDW$hW7SWx^(&&) zD6K%NxLdYqkk)UjYtYExW5i!PsnqdYQ43ec#+OBg%BoM|Xk-nTXE!2_;wg7WZZtMN z8to)tO94Yy9+)Cl)>8LmvX?CM^(bq-bz!Ar^%!(p&!HD=iPecFYBu~8c!^Ff9 zi3-VRS5ZQM4Cz!76(#!WDXQu1k&^>vhv@D$TEUB5t}@Dgl6M3R87d$4(Akj~RXd0Njrj@!EPc8634G%9=4^QKys3sPh>p)>~ZwFRnpyNJjXX# zziJfNIQe%FYVYH1VbcVb(izw?B!tJUE09EB!(v><&H8^ZALgGr-7av2-~8FSSdv}^ zq2ZCm2k$k|%DQ8sjh4@I5;lW4F(EZhM}bRxjWw=~aoPsvG0aR;Iyx+z3<}XmU5g3r z%%iECSaDod_jh@jxALvAUl*#m(F*K!?!>vX$3Mp%87kXka>z#BlLy|x6`@*;6wpZ0te5cy1cC}y)poLzmP*01R(sm9sHxh?xH8{`yLOpUb zf#>Py7s91#aY>!mkFBkbkW6eNL*!;O$96U{M*AdMa1wC&0KiEAAS?=ojgw7}&${<= z$!^u3aeVh2L=oW-ti9|#_R+7d;^@MeDr$P8^}H(o+6zroSduuQB}UTbp6J?J?xBYg z7H~&gy5K;Od_N0Sn2Xqf=R+A}cH?UeiYm>zxckmmJ)i3Ma`-m#-*yJRl4IVkpju4* zJ8FE9-UcT=u-0}Q{XVK@>q)~#+OKgUCTLPE&S8AuY^{-u&Xa_e*#~-&yV@HZ`B&NI zM>179!N`ZEJs608R>mDy@*VJ^1jJ-=9(YLdm|v~pqww?FXblL8k$<1vHYuLc(UUmV z8q*-Loh5stHEy|${=s*_?w4)sw(|`L7eIA}ATeq0W=tvl>X#pqUm$kNcr+h2lW6^T zkZq*-p=u*2c%Egja_nRS1Wt#|QAC&Icmf#&$Al^|ypCnawW^=I9>8Xo zTWvnh*TgdGv!*+rlQ=bQC2J_ShLbI~1ajv&cL|CHf}r>&YwcBDQPMe?9)9{In<)Hw z2w?j!`2u+hq}#`k+2JfZ4(J!oGcEEAJgJMk27~QeE1g^4=T>Tg+JT~M`JcK2&R7bS z=j#UhSy z@^r3*+s#*xZepFOLd5zkmRjK}|Kpb0KeeVYEZ`r~vqaJJosI81iRCcj21*uRsWm;r z)L7>R?e+P%%s6~fjcz_KHqn_O^DFtXR`I{Qf;|R^mCi0&JntYs_d$Gb7L1@){edtu z1H$Gyf%|5w;wec5fIlu&RCbcOE#iW&+`uHhTZAtE1yY1-p`y`wgqY4QYIsm`l=XAe zdiT+p)MS#t()4@vDw>!ziI^mSAo2d_l$#Cu?-hyhsD>9t*6 zm62%I~-i@wt6G%U163JWHmwLRRq>*>5vj?KtO!Tjd2iVwUXIr7MM> zlI=6sVNI)qHQi!8)-3GTZdsdC;YDP-EL$vzD%mc#kkK)REi>1edohuKN(fzcg+$}^ z;%gaJuSZG$ZS}>?!tQb8vKBN*(`uPsVo&RQrqTZ|aKZkE){$Z6gnozb2O~t9+w}>V zL>Vz9IT?$CRDV>0osKlp$_UhExJ`C;G3t`-4G~VVa}mvb43t@HON#$Bzf~*u#m@Kv z3=I!Zm>vgvi0)a>NzTi=RFnc8$XznA*u@mb{;*C!6gf>AYa*o=PABumYmN9`Qmp(} zt^8-*BVS6O}CI@kNfgqbm)NaR|T zOGT40u~s};M0c$}D$8D^z56($3`Bq%yEqiC0^bM;H+n@#K>$HeT_^15Sn03W_%iWE znU})J1+Z2XKGu}DXxI#Y_g`D zBwCm);l#~8^~j#ATCGv^*+KKopt)Dgzn0ubFX6#@@{LfO0*AHSfjs*#w}^)i=TaDh zqK@zrsj~tlb>k!IurO>+tbs<^H}KbLBN56Xb*s0{qlLW$8i5c93y@~JE*1V6sD47X1=Rd#Gd>r|SDIBMnNI zSN>38sA4=3>5pGBm`bQ@IFE1ujJu{N9+<$oey8;3iWb};2su;H#yE>A_LwAWaYeLr zWpQU^fgE>>m!-KFUE$_*C-!Dc!@IbgZpBG}tnsoxfiX1IC3Zh&Eau%yxtcxNXy|ZT z9FHqoT)wNbaunksMeVPb^P?xHX9Y`tEvBQXD1GR{PObgDhKR9iH>Mx6&e?*sV$+Uaid1 zLjEI|iczq(AN=4PQG(5t-dg!_D*CC6Hv{>mZJK=z4uOI|f<0$nBsJ?X#d4xVcC`%0w^sa2r8M^njXMbDtO@ebzGzl+K5hEv@`A?Qyl-!smj?YSJ*sB;IO$fk#AP zs#2W7?F(VF?=7*u%{{v>`IE3bDueM)XZCU_gRuS3?ba3aL=mJ-)`ag89ySG+DWQa* z>oOlem3$^kZO1N?6iB@T!zE6m3yx+>rs(?y5R`#_BZ{n{qgtwP=jIfZb{eY#^xKVGRx zTLj^Iro^9RojOfS>8W!d9=Laj4c(z84kZEGu`%YuK2cGxY>I72ez|UTAaOZ5@#=h4i)^h@Hr5wLXW9DLh)vd-siX>-6;3>+xKZ*GqKS)Fk6^dxYeh!ChAby*paL2& zlVTK)DpKQ$j)>ii&-fR_LT)J-NrO=uw7nor*KoBi;;sD>6@F37-p5m7hreGvor&5# znEh6<#7ow;a$BGEe=XSdACf%&^YH%<5D@(VG{~{77LVM6n0~*9rT0G60ZH9F0N*t6 z;=wMzc2{SZI2YK4c10S=m@Irfj5etd8;h=xuLo{ z6hBgWhvG#}RZ2DaoN^6AQ?tQ}Puj<3B0)G#OhWOcYZO7t6cU8(Q-uT}*6e%-86zA{ zrC1TYr%2bw8ut}A|9%-&)Z3{~gTAKMbYITtC*L4`Mjq_c zYq-sidRSmQ>|qxmu5U61OR!5<_f#aG`cD7gtRsIn)3U+`C$vVjtTgG;;4udqguZrJ z*)*8yWjCo*odRszy5D`rUX;rn0bcBud9K4F^K;td zDjWIObVYGzMFE1AeB39+Jh>uThaO}9Gp)2um_Comlo*}yd*oLRoi{ST`wYJ#fMW&i z33}?4_7^8=3VMpiA2L)KX^Hth7$K`|JEsBi0{*W{VDp!g^6t-H7Wb(;GTwWKD z&y{y))C#w1$~76!@l4^`iEfv~#feA}>I7mkA6u=jT#3)0(+9f|=j=0p>N7oJNI6cb zWsoCALQtFKB`cc%xxuj zSFCwOJ^Ez~HG}}+gVL8bh-Mx8P~`Nn$tb?RffNI9f~o0ck93zH%_0RV*gxH#`GLZa$ZrA#)UUcyTA`W}eLFyFcIulB@Kx zo2>J*M1|6Yh%JdZVScw-sm0Rb?o=>T*Nd=Ez4SuQqCt3(sGK5wtp^s_x4)p}=UCr? zI7w3O{C=-_wa=&q~ z|FMP>gc-az3ws!nl+PeVtF>~q%)U~~Vj8J{heK!4Wu1{nn%3$MN!hwvA2~TslIvA} z*!?50h!paf_&f=mJ(w?+S`RRXq2!E^b-8L(;;|wIIQ!YN@1iP^f^+}XSAt%vyn2Tx z*VS27#AhYTN)!}#oHnJGeXVah5UUn|8US>XXVEdjP{w#c*>#>GzkxLs&nSVr0QSy% zdjNYEhkBy_;ec(h0V^&Cvh76|6RzYHpb9j_@XT5sQXZdk?uQ>5=H3a3hI4m|9l@8n z%mMq~fp^toM}+qu`n;ANnVyh{oVz>IxHOtKk|^X%UsV1}bW@@D+5!h@17(&BS9(fK zC~#T~!bJ{Z%N@~GsQzILbzp~1%eR`#E@zFYMI?)=%&RS3MO3>~ou?}O9A`fdVGfJi zRbMbHA8{xAOw0d&{X??f`l!$1Y-`tHvmpl#9_A_`OJ0j;HmoZjMIh_*usWVsEP6Rv z23li3a9EZC6wa?QQHx@eoYYm&G*ZTJfE~Ct&2KUPd8DewNK`@2Z}xRojgSQpHWw6# z!mcu8{>j$wrPt^s9`av@NYi*o?D}6Hp$jk)8?9H*k`7q14k;Z>qzKEQ%bMbSEuA7d zMS~tbh?-hb@Gf_rOq_)g4ttnnu>lSI^6H?>dWTGyeo-k$-z8|3{!aFSH>1Tfq4lP8 zddcKsSGi;wA!hZ;QG!4QxwXf1p;cp0-)I%4V1iA8sh+?H4_=L|7lhWNrKFx}z5$w#D$^w^FJK7zeSMHCR; zYk#P7t?Z^^y~)wdKc@yVRm@DVWK=;WtF}aE)e`EgFG=6a*P=&D5~3kSQnqf?Ck51x z0q(W5;0YubWRag&RQYjIn)f4Q%*Lk36-wC+8i6L{Gph3OA2m>wKhQj0fPW6o3(=uX zuP3g-LC_oXJCd3JaV`qsolbnE98@ zkP=$dVzTog2-q+Ns?6k0WV3*rfkBUq&UFG>!+fr1zX!6qI1onn*a_gZ+f@{I!5Bl$=DNp8;g1#+=AOWj;He{ED@p5^F&v)`DKwQjzfLb3%zp zUhCwX*HD>MdIdI+LVXGTf+vACot0`^3MH=3R|(N=mRd+>Mhe1pmK+_a7u27B0o3gL zDSCXNc)LD({mIZCrJlAHun;v0$?4^eae9`amO5 zkuQTJkpJTi^ZkjK6h3yjd*z*<$eVN|SbUai^~>>C9rrWF9_c^s=dyUuHR3n=T`0>a zaLFLIQ3PIV{t0(*&GnNi+7BCP8!IKA)bAx_SXbVfad$`)SH$-fMy?(ATR9#x?lXP?u zvKKO;#Uft`<+Dy)0oj8v3gI-b@sj1CPW-YI-5c_IL8u)H53}rDRO&dmwE-2-z6xj` zLLe%`Kr^KrD!>=T3vU8+*y)aL+JiWFI1#MyC_f}hk3a_}dg1Tr7!3MQd{?beSunnn z**z<~)PBg4!05&$v=!z8X~gdTfpT2-R+fzFz38gg{*y!rX**zx^R<+@Y9%u>&e!UR z35R%HE5(U8gjbt?R{OX3TW34&;O)4BXA>Kz3QTt3501liyZD1Yi=k5agLhWgt3Y(J z|6aQMS=NF)qhzhe7(asDbjd3-*G}|_%l|?YEMLU1H-DF5cB|YT2Lh$%EWQ!>tstB{ zTuzXaB|#hV|S+y_a`6&2JEbGN@NLvvI zKI^^>yTG1a1cPt4Uo7Jx^KnTf}ZEf!7&>J&i(oN@_OSi@P z0y5#U$%V$P2-3< zU*3;m3TU$iqI_4UKVtz^666%8ygOQ;R>xiPbt& zU<9wR(fU1yq0SDq+a}M5V|5J)!urW_g1k4J`VFFaoW@`8T6c@?zAVWJZ7+{tgRsj3v*Qw&Zq%1Cc4r< zX;snUQ`whpKG{|}?0gNz{3xXic+xsBLm&>>p}snYf{;cJ)8$O+XI+W^Jl1L}D1|{yb zrEX3`bxjWlR+L%Vo#Lp9G2Y-Zd$9V1woF(B%)$O|2^-V&CsdN3m?_K%X@;os zC=F!(n(Qogtv8?>S(_Sz+omM=9~s9iJ~ULfpA*tGL81pM;8+uWCA)KLWU^TD1+>xJ zPQPfaK>uBdl4?radyG122Z$mn1-^inv+C8}*5K#d?{7#NsnpduN?!!{SncYcsIORj{~)wP(ZO)s#CyWDu$o zm^jc@whtdZl&_7nPM4De6dt z1SJkgv;R0$h5sIqET1|y>js-a-W_}Y!Kg=DF@=;0+vBfBBNOAV7Dg(?;G@f*u~^2U zXA4v9^0}gXTlWk0oj@)Py|_Nu)VlC!r&3X50Csr)p1=l*9Q9JeS@ZYvwL<%76BiFf z?Me5#_$Ux=*>MO#Z@rvOt7gEWBAQY^AD>`(KWvsGK4M$h2G8gk`yhG)ZG}I3>~AEq zrQc`fr-qEZgEE4OsW*J)0H+q0E~CmvW*8eXvsI#iks(_wz%G|XUm^{9{H9`8bRM2e z*y!k3&IxpE=3yO+zn=xODrKgmsk7}jU^I{*l0%-vXVOk@!24mY1x=S#aM=4im0KX| zYlD@3=`)P@;}H1U=N}hM<2U9*g<*o&YxYOZv%XWP0@cnGtR1qqf?4)UBw5*m(cG3A zFcMHr;fK05P8^$c`s5r=4;M&3y$=WF8_`r0WcV;$N-|45=7^-SP}=@2R!z6~+3lc! z%1*IWMf(SY6=NZ7w$6n%OBW$G%CR|zzB!$6lm&j!<1;J>v7bt#W~Qf z@)J&8PQ>LoND*kGZp_#BJgvuG!69-*d*MfVY)eh-#*=~I4xYDyTJTjVGi0VD&}G?1 z0L63EJhlVm3O&K()a+(EWdhS&^Wj@kWNQ5{J>(&D>StpAC~QPI@T_`wB|HK9Mx%rU z=zG?ABfZm`(i`>k=F}9U?#|_0#ql(aXJhG|%8+~wpL?2eQ~}YdLU62c#o{qYVI@0f z3?JS3!CPs)MYad=sJf3|x==|MD6?7E%4vF?U7SlVdqZ0)h2k^ueY(N!Xsys& zV~|eVF5M6}M8mvYq=7*5*e=-4OS-aQX}UZd;HYqzSgu!*BK}5kZQr;~wkfswV|6Zy8e zwQP;n*oR*0v2;ze7LR#Z$b{(NuY5a+0*^N8oDL86I~^vu<45eKTVrEtqG!P{4?k?&|52}yflud$0os5@>^1SXJi+$0a1qb{?9q?zI=t-{CeLYV} z3a!5bsc9dFRG|5iuB`3~-v0E(^gr;9tnYlaw1r9aQMLk8{s_c6+@}ElI~S*miL2^mGlT89d$aTqPq8RVo}`KBB12-SC@1 z+{s%b=MmnfYCBJ^G0ZYiBNdfqk$(nzDU72Rd&l<3Q5pDdu^#%10M|;vG?ax*%cjrD z(x_tpz99*fiARDybH2s8Vgdv#wkWSWlnmxIoNjM{5`!XKj+%M(Zcq3LW4qMa9m4Sx za&QLj)3$G6W-aF=haEGFNJ z+i@(azWYDUGJUR9r|>~`y<)nB&7zGYzc#VnuQHT{@-2z+U^l_nAlRs?;Y~&{k(C+x zkgwe;WGqydu<7n#{D2Zl3uBY9ZDORK9UTa9Ezh>~TCx@5Jp?0^r^j~5)e5yQx(43wi+ss27Zp70;??@5w#excUX>gYJ4!_TE!OTo$!4TN z%TzTmS+k5xS-#9m{q=p@lruArB9vAR6gpjPc3{D=uEzqqDt&-uz+?J}l><{N_mmgM zBB1&Nq&A|aGyAWpJLR!a?iO(;`i8c0N-fJv&_9gAH&oY(06bQwCI=A*W$g`b=omww z@!IOHl%}mzr0EM!5jez!mf4I`@K0g)CYfmKj!JR5-l#&9(G6{~E}Dt3StuK=J*RxE zG^rN+skU?W?E*9?B3QghHFU_pyDu)d3?zLp(Ni?DW?cKlu)2n8WPW3C)QT0jLAksuePql}30S-)K%O9+uZ%uBLjxX$Mw%6jwlCtFjWhPhQIWJ*8Zu32zRJN$a0bnW@w-4z^{G%MLDMYl6q)1c~5k-W1UpE(X zHeE43bHO&5L+h>clnRD7Wopape6*1oKso7z#`V!YDvK;3HK_py*5g7cFbtZHDi}H= zbcPod_FcZ-QcstIW}BcO$hpy)UAQkj^7Z)n0P1yZ*|(6^jAW(PsnaaTU?ls!`X)%9 z98&jvSbXaFnkB+1^~f7$)&FDfP2i)d&c^>qG9d#5Z&(ciGD@n^phkn57%X$i1n$TL zP}vkk+E9vhDZ&hbLJUr#jF+L4#wVI{I&YF_L~jBy-K zjs(1tw*a5?MYsw9pJFN${Ngx&gWoqnRg>YL5I19lEA%yK@iL;35H67!R@5oBvY?g< z43I<3jQIi^R$al*q|yhKb-H!Jqr&??sh+t)Lv1n(?+4hesr{j=9f8=Q;llY`s?byJ zKv4x(-MqFmp()&4(L*;MR8UpNNA>wy9N*23@=f7v`Fw~tPHSs>jP@+-rAO_uhj5Z@ zP^Z%Ef{k^5lg_ei4HU%xKw_fRJxO7tCR*KZ)df)@f0?@Yv0NZQQL+XX5|ojKc_9)M zg2gC>C#=}w0jVTVc&s=Aln|y5DWMRoALL|KcN}2}>`-XI2BFYI&|}Pr_*TUx4o{qU zq*-+4Q0C6fUl-0$T2LU#=mrwB5TSy3W{+eGCQ{l;wo~xV&KBn{TdA;Is}~aB_}s2P zi|b&uT6*R0tQ*B0&e8s|h+4D*n2r=4fByvGVjB{rA~9mUsUw!XWKFePR}7Fd<&>68 z)~MrwrPx^fH~cH6w9vCGC9p9NKrQLzH`TX@x!J7+hD4_qtm_uwk&_i6MxGToP5-vI zqaZpBu`PaG+))lW(1od4)r*y9KuKo{`9PqQo2Nb9rZ||?I7_;X^X%^994aspf}qfE ziwxQNh1VYMSC2AY)}MSO%d2zfHuL_)jQVTW9%0l9a2!9d3Jel+{b>$hY4FXZFYLWG zS@~W9vJz?VLRvgOa=Vl)T6QY~V>*AVGSgpvy0&r^8A%}FG7hzhq|~SI*2WycTfrBh z<1#0a;W*=s0tiApKLdTGyp6tHNqF}L2z+XzDC?PerFtTD_q0Yx{l(Ou_ZjtzJ7rJl zP`A3x3Hb+JFm)qK_b=(Ac(~nG;p-nI6L~O)D5;b(Lab;8c*Ud+oAxyU+CwQnR}VrfRrPzv4_>QlQU^R`e9^PJ;JP+D0y zlzMdAgK!5{WJ+&*bm_3|l&omo!@vpwu~sL>9O~j;xq#MB!U5gEmMbyoNHI&^rK*k?Dc{z5IW_($tsfF zUXovU1Lc3yRz3_#fWrA?(@$|8q6||ZI-E|h`Ni_RCH zKxgEh<$4j8c=EU_{Y)XVxb%T^kY!+y7a!<+rA`%4I45%R`q`9FtS7KlEn9QW!+XUh ze z`ianh6iXpz7P~gw1fyf!@xFYT0=~3X0Bocc0Iw#1hJep7YZUEB*8oJ~ESt){)!Afc zbHiv(O#;5IPNSem9(?r-_T)>1`JK`o|MFEhc*sa>`dLi7VBZVJrGmlRFjvCR6q_lV z1Hg7>89o!M3wABYqEI%y{2d}q+6=9OOt#xM4cN6SY893iPCXKGr)JjfeyVz;CPjD~ z<{x;zlU5-&+ifj<^>AACJhaNexsv^`V+yTp#Dl32YXrgS*fdTSTdcPRcO+rcq)Y-$ zpu)9oh{g<}LFmM57M<;i1SD%<%_jOQ&1?M$)cJ2o;_$^T^KEU_HmVDnhlJiJV%f>X zDek!QgkjT8Io8ahAV;_jqOD4+cZkR$RIEkOJaQ-4C%8yiM$PfHAKu1^y>_vXyns0c zl805K&wGJ6rIc`j=<0;495XV#Jz>7@Ob7e7;IUfTa-0`1{3YLZ#4lz>1ObmQ?NT(o zy6tTncX3%8!pS=T_h)T#)_A^nP1DMH;gY0@2up~t4p_|a2 z5)v!fSlu0=akX!-(FhGF%ah&r=g0mdd{&gYEB0us{-QuLAzwf6Tnej+voBcvi$8Y9 z>Ol2#V70?RIh{#vNUbk9ErQi5NH(Y~&>krLIqgX63xqy7J(a==q!7CM7!PMNs9z2A z$w5^7x!H_#-DZ|Oc`2!1_TASa^&4QI%=dNS$S_zCktaNaAXRy=V18&Yl8CO8wo)B^ zgxwHf0aoaC*hjJ9YEbaBB_?tLK|6YkmAFmLZ^G@e_1cmB+pOp1;qqtO_(0V6VjK0v zi-Nwa@kb%1L~b*p4&F-X{T@KAWM@ONUdjl`bL^cNV&5TNLbm1(KJxFd&}G8L}^{%BZ$^yboF^ znj{n}h-)}5Pg3IaE8;I<&2iKrbbE;=2wT4kiD1*sBYc>Wi(>PykP z#%6g)p>w+9&$Pc{fJb6D_qS8wRGG~st=73GsSGn$iYak&Tm4%%y-1irt?pxipsCqP zMPd$GS2U{$Vdv56{>;n$KDS4!dr=j;o`cb^MO5g-?|9&JY&E`j4=*6Z0qt5NBEqk@grPHl5`xJ$0a$* z@uhzA`qGs4c!%|*(m|0|W;Z1>tk`KXgs$329Kf>QnLF6Uwj94-YOmg8Z`i6~)fAg{ zJjSb%UE<}oUvv#pq2=|%RS!0l+ogD2f>fe35Mzfo#!5TwvL|1Z7=g>>(66UmE>GYx zdW`a9RgSDoVX?=k9;BPwjmAG^H^zrXUh|m#vp$aOJJ7o&8a(Ucu0!)jN1bIvub&~- z9im$kP3a6lbVs*FB>15qaFP*NI(S@Gy#_$?6=jBv1UF-wQ^U z?TbF8rXV)(jb9{^(WeA`a7BjCo?MA-B!MlRREh>4A`%Dw%!gLDa}c7IvYOdAkBoC8 zHgtuDDL(OeIV8OFQ?bd`qKy%uIesVuqdCF)sg#p=u!3zIee#Xi&=$S4G)%T9UvAchcwg$! zOBZK^s-T$@1}W8KCH^y1fDWId3a9h8sRUuYR`;4zM7*{E%KK)wQ>_?+BSX!t)an~} z6#o#g8D%xTu$L+)7ON`#=D3kmY1enJbm~ru?jPsoID73#t*)dIcoE>OrVlhSx zM73Kyn0LOpNZZP?gV(R`jcDSkjkh z^s1LCMA*ca(UaeFhyo{6^rLStqh_hSF}E`OKA0x*HnIJa5uJT63j|SpCwv!Hk>-vdK$E^aW4)6lBh>zz|q{_TSNV3>I zkEk?_v(T^D!9*|Hgr65H^e7=#b~xVr)=Nd8W?w3W zFvWAFGo94u?LWw2cOuSvR)iQTP?#3MYMgak@#pi9UVn5Nw((EZa!)=kL@fogV>58k z6x`fwMDG;pZAH%$bQPW4U?lNd{3{UM*{E;5@)76|prT-`UdWa8*0HL6{I$@`^O4zM zy~HDhS<(766ag@F9&hUPR@(?7=S_5DETWsrXwh#zBt;?(nV=Wkfoi`o-YfE21{SP7 z(b(`SITzU_i>14Tf+5zqyW5k?+3jl6^@oRmuZQc0)qaa>x3jLW!f z+`#&a)+?UEj)r*60YqPS$^*MIronPL)Uwx^IZd^A%Neq&x@+swbWm-AzH)CrUG?*%q za+`cVasmtOvOe|#6DzbIh1mkO>g!|^l{s7eI;-JU3XJ|CF8a7Ob$PqP8f)?PO5QeA zw*Sb8UEXdqlNEp+I5mZ#G2(nSLjWxaiI6)?GE$?r9;-J zFqeOSkBQxrxLi$Q3U*?wg0)7cJo?B;F$3H*V+#BBlsATkf2Kq(g|E{v_Oa=KwUtdu z8E~^9GK1@{vY~8E@v=;1fqvB62Czd>1g>}48ym$1DR)?R4NooU`0h`a{+4Q?0fNga zX$TcSUJo=X6AWOZTO?ynlIGWWS+*9X?JYU)*5cJxvmwWSkfjJ zoWly&&$RnWR0_zC*V0c+cOytQ6piab-QGK1sJ;wckwzKF4mQd3C@$iCn#DEuC}Q&8y$(s-`Aznhn%;!@CZ2ET`Bs(^ZWQqa#PCGqVLWSB|)k;vzxgf4yIfc&_bVg5t z9%q_|jfI_QlRx^9P-^4?k{i-%ef0u51F&b z+0Uv|JQp34kjkba(L`^-J|TF@HMLIT;W~#LvX2TFMIg=z5c5p&rNl#R**>9Ull|t; z*YH|2L{dOGU5gDdJ-ea|3<=?jh1J>&tkyP()moyT6Jhr|i-l?98_?Cfz`eh*AvB6p@iy5E_$-krA+0~jTzazN;p->5LuA*u zpiq%##wIoy^Q==sJ?u$O6aoC26C{M~{BA|aO<-lEOJ&Q<%s`gnwJnnj#;{m|g7^j5 zSm8|3Vu!;_F_*`QY(E@q4Fbx!) z-eUa;PJ?(9?yxpZKp91xI35a-qRO#KBZVnNCO9mV5a7}AV(|rFc!CDp7AnTYntLp? zLn8eT&QVUO^?msTvKir%gfYmHyOdSN{vO;!?@p^p;&1Svvi#aYZPi}6ie6i&M`w+U zZ|BBd46~iZFdNtB_*Fbsrksm0<-CVoWBEt70f_KdWkKa}(mxx@;k7MEGxSIYdA@XF z!)x_t@u7V}WqmzG_ANn$K2l{qZ=8eE%O`R_UER;hE4y)Is24H4GxgGOCoRI~SuN!C z6p2=hl<}OjqJr#gTdZ4=7RfoBaQ~rx7=F^g-G8+kc3=tuk0nhSb6>@E{s0g*kpR@ji9|%WO5# z;<17E?6bjg=dXeD8lH)O1y`?YN66V@yvR?Ep%Zh@s?3_58;9kxMJT5$VT>*BkfSSW z!Y48pk*82R*fK~uw}#HeC-9BT1taH~;*$r4Wp!UM z7juqvM)hv7!7!)R1|pk$Mnr8+=+%oMhVfTv(x`5ifs0R|k=$KS1Uv zODL9q2;$VGV|mUbgr58;X-BL%d>-QBe-kKsdL2LEp)hyHhs6cieBGuLSN&2+(Khn7 zwk9JpOw6}i9+ofYX?;T~0fP4QI5Lh+^o(|g3&0`CDo1S^_M0)ki-w`f33pehV%sP_535<3P+tuJebl+)Gfxy)Y@FikYzw_zEjAR~1Y$O& zw?h3PKSG7?E)Yoz%6$=@r+qt7@XuZSM)d$!_{ssU5yZ3m#_Rzu$=Y%su|A9W`>#0z zTywY||Lp;;C%9ij-1ZgZ?zoP>yZIZ=-%n=^a6Na`0M`$QYkz?967l|Qo{#zl`6#|V z!1Vz4{dqowdPY)i4{iDQJq}^HE93a?|7F^@Sy}GmkI(LrljBkUbt}_T-Sz7BtjkSS z`oH6QyN*9Tx67;a-!P{UqawZ z2z&{F|A!zTk{nLhOAGRCSNJM%gn!8n6!SUd=MrEdbe)KBt`_0uH8X z2PCB^a`jNbY^0wa>>x0MNO@F^A8tN&tHtNa*G>iCn6nQ)uBE&Qsd4n2#Bgjw`bh=i zKNPjg9vVN~X_OT2%Dw=}OV?KaEoKH1G?K&Gg~dAJtl6Q{Ii)G>>3;l;XNQJ!(j+re zn(5F?ksmJDKUL3Wb0@ z5E3M^1PY(^docoV?44b997@}YS;fHA>hGrAK-qksR`&Mj0$$p$XN9s2$Tcc|Cg)#-a}?WJ=J0;a1z zNE=V-2BW{Pi>3 zIANI$aZ=#oo@L}Clg?dmzEmIuM(L#sz8OBS4E)Ggs` z;HAG}lwF@69v(1p{ca}DEnmn7)?6uF-=J_Jlxa2zd`1`mcwN_`)fn zAP#baRA^ci|L{d?+$SP|>|jV?9D=gc+?y(J;YfLte(b~TIwu$#_!!2=OST_&-IC1^LdP5@6Z&_?6Jmbym>+jWd0V)Tke{E(as&8(VJdR-WK#MS?F?tj zquuqp;>&oQ%KmXfZQ~{T8$Ssx2o$xY;v-O>hd(BB)a1UZS91dMk~LhWq%{b{h#od#HaZS1ui~E{Ao@Hy4$R;otz_vRrNLU>3DYu znq@afWoC{CGFy4t&G*wixy;pWo-R-KH+jQD(jcDB%H3wQg0fQ2ITYX({yIQ^dcM5+ zwexBSuOv68+P@}wty{ceps3Yn@toPMJs1w*BlpYDXld)11!rSiQ#@A!uGhat4I+Xq z9iJKMS$ps|THOww)E+!DlxL0~Sza+ReurSTbp(A(`u`R%3sy|jqzXcv1m#}1pG5Ey0) zYr@(p_ln#qBJmGLB1)JM=GeoH4#s-LjZlP+7qOA-!d?dga1#4pT0WUp9_tkCCZEK_ zR(26{XGv>3hQsPn`w%q$criA+vrG1h$}rQ&G}(N;N*hbsbxS z&EfD`)`FyDi8TE2{O`!+t=Y2q-^KE*bB&G=XwF<&o6m0`t0nnb3NqV81}uir3f?wq zcDWbXRG0UdxmcI{ESVf#u{3WTQu?m%O7@N(tKGRVRzVD)&I*OC?0SzhtLwc`=hBkB zL34pu#njNv9_7t7Ckb&c#(}@kzy-wvDeH|v-y$DxBh8uR9ZM}Czs1M~`%9QkY`iZp zgJ)XSE3DVvdxTP#3hhnzLS5R7oEqlb)st=>;Hu?sFn?$8cOrjd_*>228vc3!CzmZ# z`Xc_#@MKa=7Ju%;t2?}vY)=nIm_j|sP`AFQ+~^ZH2$(;D4xBZTX|2YztkM>;U;fPat1Atc^TK z_$A_Do^;}3F9{@gcb09wA|=keyFHmWQ6AF&9oEhFznfG65{cT++P>H)4_`hZ$7MhC zgc*`L8U-%-=SW<)VXNj)-NY;IA{}hQr&uO6UJ1&?p@Vpea?-Seu6dyhl`u-xEFEU; zUA(|+B)NeBtgJ!PrAvEcu7VJ)BZhu&%6ile{ob4klHMZ~l@l%IGD+5apcR8#1k=;M zC)I5f>QBtZEbPJ9w9pDjmTXAGxB%6I0Jg4hUMiP}x-j2@pE}X=A z35;yBFP!MDacffWB#E_+(2Cugg?5twBh#Q`MYqg=I!7x;$@{N}&%lZ`)KR9@v1|;ARs_h%S)(I!jq&OtIdBINS5Io>v2z8t+>q!Lo|B}7F zS~V_T=tLF4)a7wWAb|{J3W6_!B&7ILOMh4V8@H2^uN$H|H=XOxyo5d;Jg|{E++hYB z@L1n@KuqUD`Mviv<@_>wh1;gkU1)(^GS7-I9I1BVN z^g~xbcz#+`+!lh89aI^uiNnO{0M^&T1%@=eBw#-26eOdE9{GC)d1Bu>Uk=>btrf5= z4DsM6Xy(KH!kN)|C6(v3SHR zBrdhfK)SZDNUB4Jw#^!Ot|YiA6|knQhj1te_H$nLIUdTdZ@rx2GsJtcNQxi=LZ}UjZE6^ZD2t&Xok*+pN6Z zsQUEfukj*p`9a>~g-SYmsao8Y;83Glq8+q>+MSK-FBwRrD5bUxA!>@UG!k zRCsssD<|Hx$Ze$(&mnRn3JJNUY)M>ifAq=JbAu=j_siF?pSISIEJX0jZ$t;UuHf&c z+XlGKGY7b)@z;aDJGei{^Lnli=U`GCPDTcNOO`u3yNCKO_4q&bD=b&ek;%sYZ=W8v zpLO96$bO-laTS>L@W9J2d`IMeoq?Be5+U%Q#E%gAx1?JD)g4w8lVO`{`vSJ+PWnEj zlfHlLv+4Wmc4kUN-!sKxB|0x3Qh2H&?y<@gVfWjF{gwGC!an-Dim>PNlP2u#7)-Ft zg|G|Z7OF1skK^AEsvh}dWcb`q)9b4x&}lc~ex5_Gw_3G>q1T1dGUP~hg5kXCUbv6c zpY0S8k~5V0;(v!iD0;4o)X1jiSl#}!QLIP*7x6osEZUDqW;Uni24n+5cTi! zj>&}1L&Bl!Dj?@Zzg9^+mmStOAEIVe(dFB0gX68%Z;$Op+4F?5=h>8ft91^=9Lnxh zl->I&%Kkp?J%>|vnGl<@Z?zWEkEt5ss0K}i6Z`6({3XepHY)hZP=Iz!qP#Xlc z7x2`UimIm%*iT2*jwuNjr9ObE@^M%z*~@o|!Ro(SiP7&AkriyZFVT~Ojh&@Jj%3ae z1P)9xKo$Rwk7Uk%<>)7{kn51>!Y_)<;bhU5eGX?3PN3m__Gxjp9E|4Cp~+Wl)YfK= zE(y;RuN!QeMVKGUKIWAJ#2qKlys{mxPok^ft`rZ3x%~P?xjIe`v{)kVwj+_RyrKu$ zTzIEFjuum_^gCM^Ju>`rf-V8@X7hQAq-g?dqyRJXYs*K5-bk!aA2^4ebie*JoI@5l zBc%&wK%e}Gom-e}M#ZKh@sk|6zNCdE!uZB2CSWG`J;SK%t}d9vHho#yF**I1PhtBYfrZ zt|QbQm!sv8^Ma*@DC5KPx1g9II0t;Z6PRxRnujJy0avmW7=kHY5zinA;mTUjtt}#Z z|HHPVO~Lm(B~LHeD}ovfX8YK<>*RKn*m)kz$On>WHJX_|F*|PwMY{aWhv;f(2zf`s zWy$uT!1x@$Du3qW zs_M3&*&4X&rFlW~C2ei6zkh$DPpcO%X5G9HEl^}%#{Nc6s6U*7%6mE1^bZN@W%{T@ zrZ5jHDY$<_7W$U`6@FjnY+^eQgYxuBQy+yG9Tl#>+!e}GQHs&-&I^=pUiwx-GpaWj zSGCL=yWc<9?+Z_0h7KVldjc*{;k~SZYshP<)_`hIrcEtuG-e_4$U5s_-OMg)8d@>a zPALmQ@=fWrPgH}PU zRS-yg=yk8@DQSot%+T&@*oY7i(VFfRcZ8A#v#0a8q~Qs{gYs4>bMyg$@Ium1lefj^ z^N~@V=_h`(zw83{GK5t<mbLo%vB0xo+hX56M`7ED2%5FGPQ{Cym z7flZ;>Z}H&xJ3U$qLXY1RyPDlN)U)N6dL8XOJcBvXL8X&XBHgeBm}#DII=2awdFq) zCDekx+T+X9Nwv_@COp>b$BHd`0}9sgX^x!sk?%4;9Pt^RI*UI-cB{0|5qX1JPa6Z( z9)@?%@gn&YA-1`bbn^GgEpkm|EsZrpgXBNYREgy?Nh}}AWVq=Xjt<~|@K(V`(F;3M z#Ckcz&n>_GNrt~@SmX&sAh6e2E@{{jHML8=>C)<#Qzo&%Fr)i;C|FjBOwWk2DB*%5 zE&R)nHV^CXYSu;L%E%fSRI5CYqAEJNu|qvFuqLvK-wv1dtMD)Q= zUIn5)UjahJhrd?%7FxkEtIZn7kxW9tWMQFGb}^w~f?_m<6z~}9rH=)6N_JnaLc#PU z&Vi)qV9Ew@8SM}5<;zOTXTpN{gn|L1b5ttZsDChSwW2O@iFX7!=$rG(+qISR*b+$3 z@l7Vp?sB+LuN`w+7;VSi(6B)DvvwK~Dho!J71Y=t16zpPhHF6eUhqX^NxH+))% zez+DVC7)>x4<)Ki{Vtz&XR~AxCrquF8>RFgvJ7BiMKwZ$&g3jj&!H2Tj1V3k8El^Di36}p@ zQTm<^r58J{t;vDYzLU=m)h4DNBk(j)NN3X{0vF4wH{AtMocksDp|eL(ig3VtigMiywRuHhSqqe#(=K+&^;%)Y9a(z_|1+vreSVZf|u7jm~49hMU8!;o#W zmM@k4A7%NT+A)uYt3{eK3;#=0ka(^H&2O{D`Me@8VGw60FHpWIM7SSJ2Z(_oVM7Id zs1NEOm5rh@yF81WZ%BQ_+Paaw6;)e~VOw_w%tamSXkm9rGErePi;6R;63(J;I>3cw z=)q?Osopj#s~n00b>Cw3{Eae&lZKB`CQa;yE!O;7?YtF*;%(y$-UvhSm@QU96bH5})W3r~Qu3`c-UZddz4FLxJcD>p&(M3?Vi zHoiP;uQojrpxev*a{V$AkEwk_R=s`uIW~&_r6R%Vj1u88B#q&P9_%koGIw6&?X9~5 z5i29yemD;#>!VJ>GP9+nLa(v5C!^Vtl*zxkz#FVS zHPHA*b};KrnOdfb&^gmGtdq;qTL$^Kk>iq+sl~dtK9TgT7+sRcGH~Sv?z80}KO+#m zyj?UMHwf*&Oj}D5f`L6w>QCUC(S4T%RqpN9b(b@H>R5@a5bK#22%c5PBPF(UA6I!^ zBSFoQ8~mlY$A$ahPT81ju3X_hPNm=8kl1TfH#fQS5jQ>~v_EqJc9m1xtCZuYb>r`| zSYixG_yaa`M#apNriQ?ymmLnRe|=Jgtej$06E|=lTIm)zQ7lf1Lc-nX=F8-P51Oy(Bq}M(x3dkBB%B?3 zeqL29?o_k?pXGKUt%R1 z>vQJK{AiO}1dn)Pow87t`D2O#$aY=}+DMgsf@N1t4&{jL08D7W%q;*>ts%Dx3#m4H zo6@Mwo@M{SQUN|-oXX#3|gTafkIbH7gV<*ew1qdvW8q+7N;C9S+%W*0r+?O{%GKBD7rI6U;^B(%|@9kp)h-ZY~(U>v!*5Ov0x^6KiBhV4;wygsRP4Q!`i+rL};T_T$l@!pIcTihi zXz21kaqC_FA$Q&oCmgDlMXi<;!cjx>V_O4TE6=+;#3DhJR3_vzAp*`PM;XvRcqP-{ zPh@IdrWex|+eiIv_=`{Dl2j$-M||3dG~ngau1@ZsRl#R`uk(F3BUG{gA*LxEi}A%# zMKH3_+=LM-R;3EfCkLVnA?zP&Yafxllv(uE9?D!Wmets_yvxao<5%OiKS~Co6IyKJ z)Cthz?BnP2sJWt@X~9^pVvqHZ(F5n>-`Z7iY<$7`)gD0r#T27K?8DsWafBdlF4-v9*CXq4qgltNR`mRK>tT6zf5SxKa!$B&m^cW zO!UiC6u(T};)LPO!at)YYx^hSi18*3mQwk7DbI`-d9%W%dxfq`8A zOVgp`XCD6w5zw%^=SdRAR8ZZ>-@F_u8Q;5X_ngLqW?Uyek@*hbmEdp(5(AB9f=WOi zl1-&U&kA=eM^=*@!+M&}dJ?aySN>a8(_~iDuFws-$S7Uf)0ySXp`nrFAqhb=Hs3g~ zXGm-0wH}Fc>KYbP>yE@}eqtw;H>)rS3{=-Dw_ zOg5IIvB!A-BD8Leer@6=Lz@V$5Pyl2^RDpivJmDmiS{wFvTnatFaB$?7<%jbD@SH( zb-&}DX>b=9u|A(1+aIC8JHX$wu6697N3*scc&+hG_f;E?4VZr@YO#jBk)d#vSzb)7 zQ;1olR49xJ@5jz@UBI|r9MTZkmmXKMGp-%$M8c|@t&D3U38EvfF)kc%2(GA{E)dq{T(X{r;qz+l;p`C9$^TrsYoR{2qYn52T+kxzOodl9iuWK#eO zNLffqe&#K*kNDfHlkO8+?e-LTx>YJOH`&x_8plF=XwWFbPd;JD5-}zJ;E!JH_N^$l z=3Xy^>0%Hxll-(JfLimQ{x~z%QVa5>2Kbu{!0A~r7Ec+9gcAgFEe*tCf)&s^tL3Yi zt^ls0rv@aj&^Bvvp#*(GzV}$B%NDo`L#S+7Rf=9X{Xle_q`9(ZF`gwj2krX9zlQt& z8((vt3q}zlN0IwPC+AJYj+MaG4L}a7)HV`@b9`%IKMzJ1H&mJL2FWAg|?#UvU!uW`Zu{FPFYW_ejisno2}J9Z(mWtR#nz0^q1jC_KbRbC69k6SLStv zm8Ijxpj=diW_XS2A~*rYj@*(UY2JV+@F#dy1FqWA|JLf~OF0yZkw&jk{@hXv6rKIF zi=ek`O&kYyg$UK+F3`>Q1@!DY28Z;B$*SOJPyK=%;^HteJl>&2L95miwBXB zY$Bn=0|*}_R+F~&G6^OATMWN8Tgy35X=~eRKlIfcTlB zQjy5z9T9!CNtRP9U4N>akI)dY2TU6w zzY$G02oHc(YpeCF{YZO!CJq2q<}8owPC(Rew$0VchG_Ng3bG(mC%F7LA7024&D^%C zZvMww{ZA<)<^)3R)YmrX%R>dDNL8_2bm+VH1?o3p=G5B~40Hhyb(DyXx<55B%%Mtd zCDSMVWz5X*?7;#_A*SedgYbWo&24swfFPMr>;EiBUj58!n$^pmxr3jZE>j6S;DPu~ zf<8%hiiaOWgwT<=nlt^K8apQb&>RO?S+}Y?d~`R2J@9|=lhyvl=n<_YHv}RZGlS*3 zw3Y9Ro#rX>j;!gi@u|REskPYbw$oWO`&&G8fenR(WA++9hY+!9d0T(`FV?mb@ywhy zLlg`9D4U9YcAOZ6kRNNk&$SPE-oA=i&VHS3UFwT@4c z^;WVs(Z~M4c_p$>=`^611uQBKp@cX$E_Gr?h8L;`+p+A^7m3Qq&$$~DquF4}Jzo(q zEYY_)8u5HSh9h+avfKFCbrg(O>k(uFSmO9U44WkFHb?F&AbIY1Zns;ZQPhrf?5^^rQe; zL{fT`T!HYYYND;iLrK;==}|Wd%)}>@B zyNm7#xYnrOpV=M@yq5)z2u`b$z!k*E|0L3pq1__VB?1AHQJ||03<@{ho5&k|n^ym* zDxiCn*r5~ym=*$Dth$${ktELLcXBaT`}V+f<=BQde+6%q+GRP(mPku`vcZqOK8C}1 zQJcO_R#*D`7V~{PSG%@xt~S2`B7Tu?u6Aex4_Xj}j$K1WB6p-QkC&~~d}#ArUAtCX zgfDnlk2LW3+7|U)>OCJG+AJTcGNk#~y!1XC-&&38oxy6dlD928PLJk(j}RA7h4Qwg z?+N}BA=?!_C4m#8lPI%LAo(zT)R~dx&o;=_TWx9!NQooH~^Bn@Z%FGzmA22ya<6p9g_Sqw!W0}WVbZ2^|wEAxl zr$CQgoTGT_8QgFLl5@_jghg3R{Ta#4$SsDLDs~M`<(Ik#hjZm*OE{BVH@%$PT)%5^ zJ_UtCliv)6l3%`AtM4t9#m42R!`D@^N5uxNr&@qmC33?q{qF@lMoC^$?%i$6_lZpZ`zdrf^-#ASh6ff8I`{{KQ*k2 z8P*WA&JQnK{XZDbuuf=d_4!WsZtFJ40~}>+e09e6(DKh3-)@Tjqw(EO8R1d{yG;ZA z9w_}&u|~DSVrlhvN+mY>3+^*}s?1H4aR`)Fe=TKx&mX+}<%Kn+&-l2UySnRF!5sTD zqw8nq@`)_XX3QKeFI>7~J(3xCD~_eZcw;Y}|E@y=85_1Q6XEE;vVOL(WMus?mp`IP zd)aiw=&4NS*N<9 zE6}$AnVj{ebN;=;8Etw=3hs{QI~lFoFB)ul>gQjNj8_V~kE3Ik3F?_$#v2;rjPTE5 zl~J^->-c&i)jnB9BKn8!W80G&TO$S?t`G8=yGuByu?>>L91q1IlEo=FUm&*=V~J3{SO9Bv#EQfaJYVPlGixAy7p7sJ!Hf&rwHSF$cyj4I zn|L2W8OAGNiWc+9H@bWhc|wjLu5hpYm1*g;)`ZuCGF=X9wl>Hgotq#31KVot(|?xY zqLm{X2j}cy?6mve&xg4~<0rgFv7I_FXs&IeoE~}lNhxn95nX?=e2VGfz2w5HG;fjP z;rasSSuYeWmFCk8+=~3dJQ%FrS6Q}7KChX-+R5Tw8FP=(&F{;HPL^;oup<7D3<#oL z+M;6pTW|l@0i>|4pP4Cq7T+T;a7z{pzHiA@LXc#$Uaq>k^mgj2G@I8?p`7&h?auyI za>CD0Daqx?6xk}*zv_sp3%&f~&PxB!+j>J}v- zlU!qnn`GazY8Sur*-6+lKLNB$0WIPtzHG@A_~!Xb9}+warzAxfTK4TCEkZmpr{&FL zvocUyR%pv(8NR>l*QL;LZPgomTxEXJN&iU@yP7u_n7Ig-mQ0od!!btL86rfvsgS$y zdq(y51j1$CQ*yqcpo7Xe!rs09mpqr*YradRN;!$1TofCd5skk}O*j5HSG)7j3QutpZYAh;>t)|pkQlW70ZRB$PI$%FbmI>c3`ROI(49QI zW)9=G3nC+wiDWjB94bhl`4C8iFrZK!NsP6#5307iz$B*|JQyADKs>eGTJ;9-=p(kT z*cg0E;E~j2_Mgr7mp?54&{m=YP1=hgSoZ7tc_h)Cwp#_m4pGUqGfI-8F}=n|W)AZm zy=rn!7BLPL&uIGnS7 zGPNhNRnANiOA(xfh#uC5zjeDr#M}hKb&YH3&r6aH?UPecv5I9TRmx2C;tR1iXF`r35Jg-$z_~8sb_9@6dZVXawk`kgOcFj?%dsy06fD za9L_3`U>@tG@z&T!JX83>XGV9<-O>hE>&z5=0|FZT@nTdhINaz5T#O=&0<`)%|bR2 z*$UJ~;%qwq#!c|cs{d^eQ1S(_2gPK$)0AZS-yT-T`9pCTRI=VP)mcXz)`QXI^3-3Z zqs*=3xTWkH?v@L4LZSYQC}o3Y5d=aMv#p__BI2n;UL0vaAL|L_vcioR+P^YS`0qya z;!@Gx4ovNDM)Y#l_cajmx5DpBm^sWlDbXqhEDd77g5C**3Ig6zcZOrtMYvxE;8O-+ zRn>pRO2r#!d_7xYZv~@2Q$l;JlW`GQsRY#OJ(MsX`TU&^b5cSizlPyzcQ_%AC?{mq zh#@VPmqK+!pg)-pJ|@(PG&DoR`LlU2LC$?#Bl6Gw_Q^e{O_H1N>16q|mQQ8>T&z4s zmx>vNRR;ScS})}#-ljK_8N32j@W7CIIZn1Jp|u7=_=FhvQAxvd79c`ZBx6= z*^qqOdvDBLhlo*4e)oa(GVe5W&y7mQ#d{GUZY4@Ui*@i(8Lf>s4)6hX=yJhh{A&Wj zGkpZVuaq&XuoTa>OdYj5o53QrXzk%}G}A;9Y|%R_B>84QGXp7euuw|bDDe()Qz zVo?HkY_}@B(yiTc*`mtP>+RO%s?NKWJ_}ugOnAx_?}~qqf&RaZa{Xs27TETbsf&*t z)&py&!_D`EetLrDaRFjpMEh1%w*&}w8Zav`CG5ahbO03SLfDWB??f}`feR5iQ4py7LlKWbBuO9lA11b1-5PETnA*?o)Q^s{`!7KzIy*%y zCPg=(I@s?yMI_+AVbJM!>r~Njb-JcMNjxlpfO>tp{TlO}MT{AZ z`fN65H162EakCoxhwd}Kb7CSHjNR?nU(GBIm{(z`_-9d?*hb}vokyGe|G+z+FhRB> zA4E6<>l-}y#J-P6mFDE)0Kw3Y(ISs1$Xzg7F-84YFKqV2ma*;?mr=(Wz3x^i1Q#?9 z)w$v)U>oMA93&Nc#PMDXrw0vm18-#;ARb&)87Uyt~@?5ycL5}?@CV>tw z`GI;x$ts2|+)X~qG6?MR_%$4*A|{Rv(#sT!2Z0tl>iJ55ehEA*Qs4&?{X|({(+gpZ z=i%MV^v(!644sNnDwY@lb3j2ACq>o+!S%&}I6)rDR+7LLZBExov;4U={X(qND)ud2Lp>0WH%h?cpA z85jF=NfMBoSJW8(jR=5$DArT+@y`^f)2(rNAwjI_< zR|<2`4n}Epn}lxMn4-QW70lMlCZYqrPs%eL?fm-jgEg_G_oe0Q!n$?vMtjCLsw^wqqd80Q z_mQXa1+_yyIoKWPV5E1+% z9htb?adeoWC!aMU8}Z$0&a5n-Te$Q)(v@1O7IPKp5-S6%syPKy^vK5i{ zk1G!6=(RPcc|zxNQ>t!G_k@b!FlNv?P5GS0=@x=M%)v4G>fZV@KNqT!6hHl^BruB> zIak(7`BNSIXgBwk8?(M$exf->^eMSYttjD;W#XKLrm&O6bG6kEv26o;06eR+u<9Sj z&MLs9sa4LJ5rSzgxL#=Gd=?M;+K6lh`!vb4-qsjV653J-T^O#cM~1CeJ0gsyOJz4j)rORM_@g#=9ze=96km3lFh7c8&q zqp-X#02t~}i+)#X6!Cif3a;Ycl5fkOa`AS-AYigD4HLPF|5fY`BTp&II5~5v_yK)q zb|mB5coR9la$-KnJlQb&jDAU+p;|*dk^>*%At;+1I9o1~eI9s`pXwIlls?ntO5U8K ziuB2`KOzwiwIv6x;AuQ0O-h-5ayOSdH3ic5=UJ(C-?z$|m96;eybqXH0PMZt69Z-U z31sA?my$nacaxK8+gU&&kA zi}^$*_Y=jtXDR-kTnw@7``)n-gMRWr5@0YP{CLxuC2 zGR(B59hALUDP=ko(VYqWntg8mb-^Y!3piyoTHo<_74mOBe}(*&@(0g2UQUYhn#TvF z5u-ZCxT<9yJ5$-i^3VN33Zv5tAy9_N!C+E;a_mUm96u^LKIo7pu{jfQ^SxQ@=%{{T}0P5KlGY|>B2 zNDN3-o9NZ~g)o`2^b9Vg^lk99NIRkbb3cJF*9=hw=a-Yjj*=Q+~--a_Nv~?L*%E)fw##; zvd`}4_))8Rxm?Mc*{VpNGo6q6CI_zNiP*&RvO>LFl;4%EswMoMgz?2vutB=Z+jaa3 z_RCThn@c67TK=psVQ_g8bmNE&+?Nl(guuTM0-T?eHK3Ts;4ErX?@Hx^Mp>``Nh6#6 znJg3E1N*P7gq<&Stto_9HZ4I6rRsC)LMRp8)dI$mV3>{La)Nf5lNt;v+>)>xi5yp3MZ7uAEAlSP=z;rQncb_p z&+Z?7c-ZXzcI**ncl0>|cRNpvn%y6%57o)K;T@UXS*1sAVZq@oTzKRbUOM}*7RowX zm}R#>!wQ`ysoVF}9Pd{Anu^NhI7a(K>4xhOo|Ciw-P4+0@iK4TY3Wc!5__*bNE}nr zU8Yaxe`J#N+Qo7_-|5UZhrP`BltV+2TAqd?+tj+87jGK@+~xB_qScsZ;WS{tIw23a~O-!+(wIyiHE@JM5iV z<9C?5A?weCBw#L}Y(CgI{jsra)}h7lm1iDF?Fq9cAHb+7rb}2$u{A)CJ*P#&j5OUM zM`w6o#kw~oC8$xGjMdAbkM|-xcYSy$>0j{+DVXkR*y))+re~%YUJ{h4j;YT?AA6?t z4e40Xkvb;&SbHe&kX^gf+Jvmwy}myzJXc;YcY7s`SZ^jXTx_=42 z8yFbuwyMtmh@(E>n{3)f4An10-M0&(%@F=`vNDIZMM4ofNYj4~_0l+av^^ulZ`5LF??DGN>`fiNdBEm z$;Uc&l*-4dRA9o&3Kod$0I5j89IM0!7?^k3yJn>9UH3BEhuMSL2F~(ur^GZA224l_ zA@&L1HQ*_3UDlkp#6H1N%>E^CpyDO7h8IED>AU!q!!dkz7JVe*sIEF46XhVu0-}U0V&L!f~?V*TK&E9l5_G<6sR@F zlE2PJpwCz!uOjMyig7dt%RgEAmPj{*T?|HX-iwP%kLpf*5&IC?U;^d=TqWYqEDZ94V*T$2B%Sv7qZs+5 z6kKJ@mj`0RoXz6c>fVUU^zU4W30+J{uaXJ-9){(uFZ6SXjVKz*&8Py`b4#(lV#=># zLfkEG)8fUK7sS)JHq}CE=FCs*$tiz1bdpGyV#5|w10fZR@(;9?TOsoa!tmL%Y?oBP z^_TxutBdef9MYI)1n9A0U**gAV6`(mrcSi}(x-*Iga=n)z!e+#G)A9QDw@ysD$`}% z2csYZCH}}Us3EO)tV79lObNU2vql#^-v7g_zwnI`T}_zGVg&R^(8V3%U5T#d6Y;!= zm)`;;rI*4(zAi{^UI32?0TjtBh@}@|bcWdVLLb&WtIb}KgTrfbRBVofo#l1+zTSI? z1CfnH;u-fBEek;XhQ)<|v+ zXcYFJdncYf@ba>c8z!cD#$@Y>Y8kl-u=eRFcrrg888@UGPO{Ua1m6|WrwHQ^hv!hU z7T1+KA*@7Nx3ch5U+E2F!Ue!4Tq%kH!&Leet3q0ZdkFV1pnVcFEm=>nlghv9B3WQ- zQyxBco^#=dRcoG%qrgoqZL6za|(P*1Efke7~yt0!Y^%L=Woo}JfU{#2)s2DHLf=vSNJt@DQUB_FO7$}wdAG}Wf|`{y)TlR#!x-9CpB}zQ z)t}PxY>dN@KoD9(D`f9d^brAAI=^!t5%15X9kqXnztUh)9po2n(CVw4$2(L;(fE2Q z`sWbi3o5PfMS?#SCv`afOY+Pm!k=S?cI1E=OMj?XOZL^!5{LD2*e)zPB^siafg$eO z0ZRzy<+c*n!g-wm=T)-nQ}%Vjdm-2rJ5>*yVXk}%@6eJLF~y{o4MJJbg8#M-ASYtB z+0X3*S@A!wNPCYs&l0u=b(ydM+9}xG88ICbzFmIp6n4D#{94|yrVO&aOi#|$&N#?& z@vpcrL*g@FCJ;1VT+~yi2-@ii)m(~waek0|3QND5Ed;GgW zyZPsK6MgnjmiLW%5=Y!KHY|KUZrX1KPUH=bb}l+z>fHB7h=O3VFQzi|rHd z*=e*}UZWD)IlH&rt?fLYQs7%uCSUeB=O7T`V&M4-1i)X{3U`UE8I~J`tuhhTFB{vF zRKO#;w*C57q_R~uOtvo?rK%a8s-_3k99}~&Yu;fssJ{BOLi(ZIB1$BwvdF2U&n~Gu ztzV_KovJ@t;dbWH8roTxjQILj8ThB`qv95sXlrvr zm+`%8kM9*5Ki*w*rm8Eckgk@7z~dKE;E~UJS!VaoUzM?(!K4GM)aSDqS_;3qeV^QH z1-pN~kIy;QDTL_gL;`@tWb!Xlt`*t{uqZ&;fv?jw*84`9+pwSy2xOx=bgAV%LmSy< zWRV7&mz&i~!Mn{1)k|=y5u6GZZAeH(oHqD3`%Zh{ZK`w|rQ0Z-r7&;LvTh z87+2Iw9{x%RaV3Aj|D{J-V)Abjs)j#;64z$@eGM1v|6s8-sWr!j{ZBq<`%mt891Y1o$;%gxJd^`A-znTBHjit*@O$d0zW1IZ>`NcG#Co9~F2y)@k$vu?lVK&z9 zulag;`%-uLrkYEusv8LlFgTFa2D3it1Eac0k1llAj?O!K=~s>F?FN0!+KkKGp@tP1 zqswYeUEP#XY?N;f^*N+tblO^5R(8`{i2>MiRPTg=q?O%b zBLQpC-)yX1nwKmN_u{MQ1b2PwO>b$1kbb6Iq(RG{mCfKw1H3PYsrUk`N%JRguM(RU zb{(-5DJrb7^}^6!toV5ZemkraP8aqL>q}m%2b1?6O75?ilNTav%*DR+<1!xGwm!nQ zs`#l_#0z-%dAcqAfwjK6ARn2C;+q21?UIOr@j!&7 zjH8Ka)5rR7!~5_@?eN#v1gq=+26-lDMV0m&*42A6_Os+G1@p(hcQfd-5Z@GF5Ffg9o>L9svH6WeiRi zQNu%&12{IJOeOmzvfm-2?7Bj&ZW0@|5uLZMWEauk_K?dGk>UIni3Jxl%aFnm&ga{P zn0iePnAcDe@vo)j15FC>KM{|4{jo{t_O}_$Hftv{kD-tC-C6Scpkns~z*_wY)P%;I-G3C8 zOu~Uk0!aBqiZ)7Y6_q%Rx_I5dV}sY~m-mHYI#DbIyh*e!=FCE~gJPm?6!~`DPq=`1 zOKmhNU!}(*5sJl%+w8BGk1t-9trJUdPUHq0bmVY#sZl-FLkiDcksESdprS~09SHrI&HCX!^?&zX?7K=Sezy0I8$w;{?oYQpcHt>*> z$mcpksrm)vc93v61}QphEhtfVQ4uq|R!$II5-iC%gx+DX@&}1DkRa3iq(ZrkO5TO> zTvp_ZAVbJ5(^V?Umn#&3DPG4Bh#5;i{G6~RoKu|`i2wb&jR4Fp8|BCxIyb%^!e5b58fe6w#+TXaw$ zikAmOmC;|l{@cd- z695$djWx8NZdiB)VP6P6Nty|jV?xqPRF=-j2#qnKLkpB_l87+>AA4^CA60cW{!d6k z2FP#&BoYubXw)b!!H6af!3>$e9hpEBQ52EXpyG})gF%)ACsC%CL2R|!Rx8?8?WWlJ zvS^irEkP6zH(bH3-eFWwDg+nq|NESKCkcqQwr~6C`}>!Van3#a@|<&?^Q=%?vt1Qu zz7Xy;vN-5U!N&sDQ&CBLA%RWkrjhfrQ!!PEf0GgQ!+3{6R3DHZs9BA62qTWHaetp} z;J`~e{fYkP1&n?HS%}XJ%<8=%27!eP2Sew6aUhIrM(RdAswKu~OZzlz2@R6xU;BGP zTRJ+W{@r>y2jWVPySIiv3Q&apQp)?5 zYI4ZRQst|rH!DAGdg_agUK1iT*rSw6s&wr!jz2vGxb2(xQ~P>+-+;`AVKCw8Dqw?oU!6XqalP@m(>1MPmrRVn<5U?y zO+RPuUejwZ;`79g-Mjn7Y^S~Y;V%5zSuD-&>AQs} zZ})d2$c?!qS8$>|&VZig6ml`$rfP%{AiJs`kB_?DVx+Ypzn)}P64jj8T$=cD#!zi( zhHh=b7R{&jr_GP(Ydotx(=_iL$={!$c`iW4_ZP|O0|0Gbg1Kt(B1 zI`bH&QAs^bdz@Lap@9}o#tSUGn}!1BDsT=Okw)A2d;`LJ@XQdvA+rw~$4O~g1- zPn9ZB0G{=#GRsZ^(?jGGnTN^W?-o=n<+E8@M|=VBFN8fHBM|IMUEa<>mgFY~^04&Q z9>@UI5eBk>R0fjWc_1qvlYu-SDTe1prw{|#ON=v+27)4uf8NobSxELFL#g%ZiWa}t zYh)IVU--!jL`N3-N=8;`3uAzc+#OJ!=hoWvTOB1udjcU46I(j)n zb%9wyX;gkj{e(C0vyKbXhl^8 zY!i_{NTsaL_5riV=oR@QEu4;_??i^ryCsODi(;R;fXlR{7B;|@%h%U18?Py;;{X=c zi$|Rr%5u&h@HlsI`KjT(I7=-Kjn$S;FAT;iIJcD5)Juv!vy6%=(1DYa=hZB9t}p47 zW$!ka*0gSE`h^oIg6gHDIgQI{ouS&O#`nC5#z?QAlu2 zgKoGqm>(4OE!t7A;?XOLR={zegZabfwZ=SZ=KY%mZ#9tG6B_dL^s-a;BvQ-7V@a!^ zHAPsU1*P$RF&CBIXHn@D6C11b!Ow~X_VvX3AUjtyuw^P*Md(a+iLmrd-T-R45>0UVt-;0Mn*BTj>YrN^jvLeRf?~EI~O`Tb7?Di zR&{?N99QE&*@BzcyJ~t?eKECe4fiJ(-#6}}_s+CXd%Q?q6S48zr2`jB2kvp2PsPyx zvvl3b8<4wPd#rN1p1MyaNXqWz$-w+*G85?mZ`T>^(^ED-tmAKt_*1^u49yJ+xQxR7 zG;H|_bPW#+#wuA5UTZ#Hg|P}{k(%dQ#bz55kMEUtkLnJJHCwf%VZAa|ZV7xP>N%Xs z0@1m;)R__R&dx6kK}g#Wt!z!C8kMb;MqQROI&sC>_!hFdvW1#h8!9u6NfW5L8unlr z%Z=+QdtD@pc#1d3o2I*xqw`klj}msl`6S%@c40LGS>idu^E!NiX<0a zaU$!mxC^OV36PHS#4mG|EHNM0MNk7!cGStWtM@jm( zj46@cX*3LE!5NGiAP;E%)!x@R9D@|qEkbs^VoJric>--884PhE}VN*Af~(3eZZ|a!CDpdeTC3ZrhG(wfAwBa zIQv7~FN`(!XMG0k4+XSvxfB~7XlZV<4>Nag@be14$4YY`mf6c%Z3I)&qGx|4LNa2x zdGPZ_W=ga>bnQ&<`g3aY%0_4 zTqnrY&4PPzHP7OKZV9S&e}4zn`pH8!)&yqT<8XqaXY(Y9pjxSt1bbOwwvYZ=5W+>0 zVt9Vw6av-y3o(LfQEa*-Mz7}4sc2E*MS^Hmf&1&eXjh>b<;gUb(e-ZXxs3bIF6cLb z`Tk4T0Se)n*Tv-;2Z9ATPwa0Ci3XKPH5(%Gh>T|_9|bjpfaz^HBs4llKtrb8&3g}?)n-I}_hm3s1d{*q(H_G3Or2>QuHuHr+@$PE&(JWu{gecKax z86Q^8D3!&NOU+V(XChA^D46vZeLG>+KI0>WS|5a1*8?D^C)JAo&fzp_hQ|Xj zEb>HpwIbJ9nzMZPRKqc`!=qdrrGghjGXmPyf>j$L~Qr;v#J^X{DFa=b7s#7(IEA7NZ zB#O`IV*}pFS>ZhN$AEx0LVdph6K(|)pu!~M6-2320XzcT&_)3$1@l6SVkZj3A-DAX zo^=Nw6aThvML&^k0yUAns@#+rCD8a_vJ?VkOyUkUP{c|X>nlR=Z&fZDL2=DpzR!eo zePqPyBI=`~ZDL+fESRh{UnDV+Ry5l74kgKP=B=c3I5)M6#7WC3azoS<(Mrmdk!*(U}Kz>L4rc(CRing-e7Wl97f#a ziTusP;ykJ{Iy`Y9=8VSu$K}khjB=nKUQcy!=cjZ&9VuRodt50R;7| zSXB@6u(O=Rp2XxzOqw0T8T2|8h>Xf2RT0mHH$pcEtNI?k=NYG$t@sLO@U-?*y`>1|6W-6cjRlwU!48o zXd2{Ux0H8T&8`3jq*AdD&Le)Gkr9Z&4-mULS^yvaSCzI-b0LY=^Z19(dh?bQ^hg~jvvzRJ0OAA-0?ygNBFQnIk0C~ z`vr0g&+XDXj(zYX#-`vyjn9}4P6RR$DZM63Xo$%xeH&kDbPFY5d0zdw`nE@R3m;a_ z6qUs@RBE>G-6x50MmNe%%q1~W+KZ2lsvA@icXN>hEYECJwL@S%PF3B_F8#Ws*i}y^ zMyjURN1AlS^Rz1VwxawG5zHTC)S15MB!+ME8wSQOs_~9J- zopM3~2qLV>Q#J)UK=V5pJzBLV-|2ayJK9}6lUK80%2JS9gaXjKy=RYRB))SK3zcP`^jIYV@Hdj4s%Fb>jr2f@qM1NDQInE$ zV-_yX$t0AM_DsGmGC4;wuNY5gPVLc*GbidBaAQwJVW^Duak9>PSLSfV01872?ObT@BMN_g%y61OeY2l=;YV@Uc!xiZcaBq{l#d-HDDrO!wT``;x}f0$HHn@dNN#mn7)Ac#a0(J~&S41dKeSwWk~}Cd*KK#Y&2L=9IIVj{91l%|+U|2AAq}^;({@XQCWbf{BLH3%& zeK=|j43d$y3j(Nb5gKTZ`ECe3Fjei}Z|U!7yT5+Bzqg1nmRS1Wzun)1dKlk2LMR*b z`XA_JQPcchNQk?mzBI8yhuW@xzAvTYICA=*9%0X+h=X8IQp-=1}bqNwEeyaXg8U(lLB=Z2D%E#JMv~0+we5wb`%oD zU#Du$oqLIKHvRDgttQ5u{JKIhh_R2#6($SR+cN= z>q!~DJo3aFe718e+p%f_nchOuGzPRY~T-*Vd2kx@}+%Lu2 zY}aJ%tjHR>CjT{L3Y(Z|C2_GU7@c!J4_$tii9gvnEAjHEqpqat`3P#k}{P-N3;l$iwUKc22p-{w_*sNeedf(5hj9H<)QhCJ-?}$@C4xqGCDK z{rb3KW3$bHf8Ajvj?zU+EQjb`M6bx94l|7eHaA{M`*sX7G_#`FnS zixFQxl+;*GHetKarrkR%-!oiY9PLo09%A0a9kvqth@SwgW287>R06_^Jb84w?7B0k0X1eqQhnu-{_5~_TN4(f(i$!gg(y_QBz zk*AiE;F^o7=8LjFUaH>9ylgNpo}Dhsy)M#1YKlKP>olybJ53En9WD@8~AnuR=nvpLtjcYIepA?nKU>RVg7m zcjg~c%ujC3V6eNyD({aUp-Lsw3?!JBVSLahHmAZ9Ieo(EL8>3Bx3tJ;>Sqtf33se6 zCH%P_y8v$T^XAAUq8+_UP8KbQXG~=;q1F8JS1cJ&68)1@E*a-sv=iaTX!&W(S)w=p zTPdP#!RS+xfypz%b)DAm`czI`Yl_yGrUWxnmE#?Ij{GF)hOwApGHcy0_j{je;^W4{ zF*5xmvP`(psFEM^w+Y0vW1iKEQ43z?%YGzZdm*hN&A&PodyJ@QG^t?!M|y`)W}NAEg?gCNwKk4CD#h{Uocrm7G48bbnM@#F z<;B=_OCsH@yKtw)*ma}xNPgHwM$$QEs)}hJTef-{T<(p?_@;N&F;blP#wge9P@{b7 z{`OI_WE;)b&|cCdd^ID**m&@LtTBMvx#JH zwQr=(o2^0q{#y`{407Gjqjo9bxVm2=~#vgfYwZ{gHYwr*62L5Sa?^n1-5!Rvv zb?*yvx*ILrHqnZeiBtR~;hPi)SIS$i@_xTIHhh!OR^icyL)!d37+GpJcB@|)q?~9OI^Um(dnF@!tB#O#|`GF)D z8;UIRh;2KpNZXWfFCjQ=Fvs*s@R<((5*!QR7mmwDT4DxpdSX;=iv+T|aGuaD(6R`N zfMgAnO$;19Zm;V*)He@xn`AeqdX^j{16*R(|WCR#hjE>}Wq$Bd{GKWmIhoLnN zC66Rh&Fm3u2N_#8`lU6B;YFU>C!k|>EIoJ_`Zg!H$OhqEYfQ1|Cm@pbyj;%a15@C5 zzz3;(Sn&o#b3uAXvoD#yzU?!5aoNMHu;3?tmc>_+majFONvQFSKu;T`#S#10ql+R_FNO)C#fxJ86?Yb*n!*>G}#|H_&fPcSk-+(dNswDka|I z7t8F*|7C0Ambr{FH7Ulp(ADGJWtrz<@fGFNZHsH7sC>f(wm5MX$^Lxo~xuMc6Yat zpnC^q5i^%3=)epD;E#hhq5^o1ZlsS=ogP@*D5Kb?4{p)DTW6nUx(CW^qz_RQHO)QR zN#M@*cvKwHQ(_{_%2`MQ@d1QnHkFMjE2qCSYHJK&+OgHj>7^n(y=lcac%8_^wd!8a zIB7KM`KrP0o2Oj94bSi8hu$A%!IJ zV=LbutXWr?+KdPAZ}4xrh|vVazqwTSADdG@3)H-n%#Jaa2If-4qrR12@@X{uSTwvc zUPRk+Hpn_Udw=BI&plobdFfC&S;EKqjqpt%mhs-Z<&fKGo=rS}k?5vwbGZqmajn398i{u9V*1U6(3{dd z<&7mx{pvzFUL&Ow+kg#4R5+KJcHp9gNW4o}IWq_V#w#NvDKNg4kV*+kis2dP6oRPm zATfz%lB(I259pl~pp6xh!jd0u zZ*Z1aKkO`5c+b2KxtGr3#ECQyF~iwi zTty$-PkbQ|ZZv;rgV|??g4dO&9Rgk}@r%bKRz~L@2(Pzb zt?wJ~I)_&NE_i+EmcI?J+ka-mYn3B-CvLJ})>SKbJ=})Z6GsWW0_r_Pvac)Xh0kIO zjzPBr&W;G{v8XcH_B0OM|8HNL2LjT=qT?@?X-h!aWi8+nlws+iY_DY9fs)}Sk5>8Y;^w=Lj( zQ;VF!ai|QNz~)xqZhXR)$VZ;d8I?fgW~B_XRn@geo;5XJ>&+jgnxpnWC*W}wqY_qK zo?x5I7jZuab0?`#A)`JiSLqgt=D|2^H%Y; z%^qm()6{e5C{hgIwgck zSQ#~B_w${(Io!)%?C&QxQ>3{I@*A5Ih{H9Hn4jGPVT<}<{aoQ!Xt1Blhr3#NNu<6e zU~N{1Vno}vT^;pA280=MD-HFT9_kL7%QNgvjEqnW-ACP5p$jFkQ~ zABZ)%^$x&1lDLs-z#iI2b*3q(|N&tyx5}@UX-JZ>mJ(&+HCreTc&pXm5 z``Egi7)J^I-u!xo#Z_F^q1iGCp+9Qex`TD!DsB^^#nOdPr1V~*?C0B$J8E+$yReK@ zy5N!|HTXxv&fsH`0{lCLPOx&`lgf`$?M#y(5`U|i@M|X76Mp9!%X*46V8RPXMrwiL zM|QM%Cy`7K{s0Kj<^o!>+dNaXNlHISF+4jY#RlZ-i7{5kGeE>t*}ZY~EjnlI2*ZB^ z|En|5u)a21*PdzS7P#Yt-mdy#ZdW)JH-UOWv^{8KYjwf>aKR~uyS;7thLrg z+F%fir5?Y5=KwM`^c4;deQ|VHP_~VOYj|Rh1Rb?Zg}2XpSxw-mq;~pM(2inu5Z50CTvYeGm<092N16 zbg&b17!9ADi8KBNZ}>`gB3pRFDsy*O!!J%1)-W%j0~y0XoB;ZY=Ufqa498Da{t@H9Dc>&{mRu*Jq%oS z7Yx#b_KZ+`b%!lH{WQ6`YXzg_fmsQ($y3Fi`rrqBVc@{IkU<~FMjb>_Cl+zH%fF37 zJRhe{?Dq$5>C8JFlsL!X4tIlpnjZYUG7;E3BQqc(Ir6VQaSA+CPnX~IaY?L90sra} z{e+MDPNFw_)Se>16mpyAe=07Dw%Z(3jN@MscEc4;Q%vEjyazE*MY$^czVuzBW>9yi zI}q9el6DZZRg~G#_WZfX2Jpw*xKCfCX|S13;}QTfAt zIp5)<34VDQrO?E%RVA7?{|5DG;q5B{&o1ShL-ZV>M5L zOQjGoKY&vFp)5?wEoOdm_Sn zb~`3T1gWYD*8DktF_l0T+H)!|^_rXALQ;x(^rGDWVYBk8`fkUrit{)VR3OhhuFS?x zju2pHOX)>#$fhcjcV4mI*xhK&tqB;XTLd72#?IvU5WuM|aG@PoQ>!b&qF#lJ zq|a;BrGmYg1zQBo3uhA%*2KJ=(jj#RydTeo+eYiOg%(~tl~&MPCV~!g2jhUe(|#2y zoRNK|xt&o_)ivl%MOxfG@5T970pFOPMeCm(y=Uh_n zAu$#l#O?cAnC{lHz6NfCa`3re^kYTt!RxNt;o|2 ztP8#?w-c8*E>?K}Mk^sU?tq%82e=-@Npe|qd{fYXFduFesfz)UGtc)psCLddTa=4d z^M<0Yt@sgc02xQ+D9qMNOW1KP7TE4pF<+04ujlt3p|#fcVKvspkZC{_!ihDS#qH`Ae!K$N`^O?M<2X;693ZqJKI z1Tq7O5S2W_!Y;2c)+j%gyUf2lAtDdsAK{hHtRRq8CC)1liXOjQC$qUON5rMZKcXAq z|u8@s#jZ5p8rU zsWdF?`C_5`6yp_+9&RW-%Y0XkDx*zAK}c0mSG`LVfP}>jq9lcU&%m}r9!+ap0VzDb zMc_vvE3wKY99VJz=c(-6b375?%H^3~@laC~$i~|#L;siPF=kicS^_72`DD^J3XWAR z(RnhlwLa_o0>53bl6Kn9?;`6dc|`HV)fO&R6!pr*V!aU6kI<1p>}CcHA8e=>0)sar zXsLTQ&*|nvTgcew8@v_TYHlF1BL$0-LID2(#e;?>+H@H3aR;M)<6=D7XhomxCSuP? ziM&&XeWD&ODC0zqSmhK_zRPTnU(&zBY)`(Vf1BB!4C4hw$PhC`(F`={BW4#pWt6)F zi-B6~76B|ZdmsSJ6qsys0>5qcLTi1IFE7&?&V|fTAqu>I<^~W9W23}la_bEyI!}Nj zK@JvEFKY4|e*rS4s-^XNFE7+$FOh}}&HVUA#C54A{98Xz;n$b{?zigS3HsnUtip2` z@V!{yyVExqXA@s^;Q|IC3T0On_;5_6H=Ad%cdi=G<(Ily9Z&%HcC)ugw8gNRWg8;n zh^-$6v1~6pvy6+l3AF=%Y*>a5&I*>_7Mw3&SMvs5zNZ9Iv2ZY{$vpop`=EfuA@ZQM z%-Or2EB;%&zvP#p-zEWD@=J@n$A_YszW5R}(+x`aYqJDx;je)4R{S;D(4{vM>CzgW zQJdOxZM98&7y`7b2f(nm>dV_@xMe%j@~2Ab}@(zEm-sxHOw z5Wz4lmQSB#&`P8c`7CL`ru*6ajsg|oIiBh|@jI@P+M}L6{3w3MMe=QUR?82V3W8ob zmrh!q+b)rb6FVkD38|E9)qT$glEUbY#LlFO5i6>dOSlp9tj&pmDrht%l7QveIZ3A2 zu?h4uKCGPCDvPJmDb(A_*+NVLJh5`Im2-(o-DnQaqam<+xpGO_4Dsel5XoC%FN+=O z*^$y7uHj2n^(lh4eR4eCP@+MAD#kP@{ zI8yd(8Kluat%9(|vs=zuFa&WdcK%?PfV1(MbwMs+9zT}~v8GUu z_QxXSY+hMpGG4JRC{)tu2%qz9U63cgRq#O^Vi+XIV!61=c)=(hitySc3)-YMx8z%r zI|@eez2vZ9{(-5L@w#QaN?)0__kn?DjFIPzBJNyS%{8`Iq;m%U|#T|Z7+6-T$grI%Rx!yBqf*yoJ`6S|2mw%wGFnefVuXLgY# zU|f8PXwzeq&G7WS5c!HE{cjf0%GQSKc{vJ`D)iI&qUTo5Q4+8`S5N441|PScCs%%m_FjCfX>sRz%{xM|*V!g*7eO#iFpZ@^Nd{>dOapQgGv2)5Wy@ss=pYf8< zc+-2IbaKuR<1TS_?^{7%xvF6XqOVc18x;LA@@W;DA-`@3Z4oq*=e&4`$CN$`G0k86 zYq801OSjCMQ*ALEt?_sebbrZZQ?y%;Bm~IGLvX5Kmf(V-tZju?xKp#!qL~-Ps!i3O1Oh{xqo)+4wMnRkS;s zf49+5@a)XLTk~ZXm&3pNr7Z3N8lHQfMYycwm&-|LSMc0@tj$rGHR527ia%P@SrM%! z$-pBX3Sv!_zxawy9K20tbkG6Xoj;?ogE@GY-;*3m!*JF*F5c=obMOMjU;ict5A9By zgD07VgV(DvgK_RUn1lDj(0;3;__8Y;&CW{Wt3HVPRA=SRD`#}(-?b}u zZWA=)0RG+LJYgOw{+*-N`AeaVi%u*@cJTrHyIR@7pk52s!@m<1&%dZuN#z}y>m>bv zq)z-hQStm`6S=;r;@R@JV&HARyn}&q9g-P7vU!PSD!dd7 z_RSdpAMfVIop98#!J*@O<+QWB&PKfv1%>GV;#hcYXEm)D3Q~ znBV7E*yG#f-ZEYbh~PkJk7H zKstcIPVRe1+;!M;Ni)uZ#BD`~BcG);$OF=x$vc#r!Bey+5IrMyNk;q@*$6yUBhA_7 z*B{7JS`^E}?%0HkKr|z9xlP2Ph=z1y8Ao=;N*6MuQFx)K@1$R3er+jyisz5=qW+3` z!36^4;8-;+&_=ahX@${XVHU^<&$o?cPmxRywT1rCsa<+)6fk}vTrKCGP2R!J7mYNrrbpiW)~3w+s5d`K0uE!UkF zDg6nt9hhdfWE;yRv*k(Y+{W)KrHzGlHItn-u-o!JF-{vds6_0nwUo<&j(jqNM)@hv zRlmGU{&mJs)%-uuG5?B&2K{qpl{2lsZB9<>0}REvN)J^;2S;AOKnsDR9s{T`S5ptEVG8m{r8j}frP z*sb6A!f(8TC}6m^xSO__g-QZEc73*b*O~9O*fdx1C#2Urug`0qPsqH6JH;ki+RF1B z9Yvg|sY0;tRnFm2&f!tc;Za`3Ulo7V{7vIJsi(MhSJV9RG&yssbzFD(qeo->5z74Z zEU05;>&nwXJq>9`kB%;g&ME}LP&PVGoUyf-*DaSNEXUcZeTZj7gBe*;S1pdgaFf+f zM_HX}^E$ribb76g(*=yC10hbNtZ{EVnkb_g$-AkN| zFt?bK*l2ED4XZJ>P+-v4(p4^15wwqvDZ`QjkCRtT6Knxsr8RZ>dH_BdqTZnNEK}{ttP&|FCZ^$Z44Jxj^ zZ8uAaWBlKs)&`>^STo&SX}ID`26RFsoWo1lM4VTM_KZK@u|qfSqs7cV&VN{~xL$K3 zz=w6=qp0pU#dLnoSi4mN)pN8;|7`7v+8e>Pj;VjQvvsl_uM#{u18SHdHR>khLz*8{#d$l-0 z*@>WqK4Vm75qk^|491)I#jL+M%_Yd?v*w%qFtpGga-ck@c4pD2Jq+P{=fJC$k_gg8 zR=d%aS?gWrkJVa!t)k5r*@-<05j7RwOzb*>xwLiOtdo^JS}axMh^s0p~F=3}!n9GjJ^+%<7stye8C@DG5GfT2&x=6G;4F zGLWGW#Nu4xlLIv)nHg=tb|_Lr1rY+_^Y$0`6zLjv?6Tjh@iaa|luzw?KTDGDGv2QB ze%>y}$fO)yaDt4j^+oCOamO~ z(HedUvezzgs5RWlXOUG|^GVSjU_<7HxfC=-C|A=&xC`&nNK&%;y|7+@B#*T7k&mk? zHdSP}E|%GkCB1hBY?&oWdYFw$>tb$c%R(SU#KVS>-3b+EIvZn!6=m-i(PZE7hUw*I#ypk#c4?MZ%$lqi_%?% z=f~`TcU0co;{#%JRDnuep1I=B0xDtNwhBxR-)v)2g9Dh;6envAy6R7NMT6;Cv2&(K zB#E4S*H_7453nyqSBfh{ z`W^Qj(mA$u(*>kqrMXawv~2H!rnfZlE4AXBRqfS&`Pd=Gv!{nWp1H@RWA?-0GcXhx zfz$PGF>P8_eEk8;uLWHXV1C_4YhpUEvu)EW=OhPYGrz6kwAX&uMEIM`uV;TE%&+wKMho++EL)G2))IsU8`*xAV}n#% zI;_~yI9m&=sx9phtg2MnE33ECw8m7C^oma6mBCY+Z6|xNT5fHd3&i7d(rQpe?$5`l z=m74~Gk;LrqjV)77KmPp_HyDWLI0)(q7|w_;Z&;{I-L>!e-5&8D?aJPx##eQkheGw zSI6@{n#TS`h;YqO5C}w0yg^B^1r1QTPeI_CWa}eKPy7LG8iKmBTnqA-sDoia zzCet;u&Z^j%H@0nkq2*8zYY2I&aYq=!IBZV;Q>gC38^ZN!}Y6Q3Jh&D2c#oZUawB( zd-JDK?TRK|dR`vOzt6Ac6U;=;SgjIyvp?rgAh^6t)%*K=A^&?@Ma*0$q;$-*v8{A* z0>aHSb1`QesxxiUeYJPv+{3jj zyP)wYdZPzjYGFfN9DfE$U!hn%i~HC3gH*x<$n@MQ^&x{OU~%~(D1zbZ zgNXh$@fjOsdAI7ZJJr-x7(9VcNwWQf`LsKm;U<;IuU(mQ2e@?#<-b8W!rQW3p0e@|I2%qKAp3A2=UjgVa=XG%;Ac<8sdjo+;>Fh_6z_D&I;U$&3DW@KXt?l1dINGP&@1XK#;7tzg&1dp4yMve$k#QpbZ zX8qqhrJ4O3hIHb;D}6$tISM)ce8nlRLVV5m6o@Y5FyiMl;BDv(G$Fo7nR{`-aQWq0 z^>Lf}>i_I^Z9LAE9zI^L8HqB=c`aGmvJu%NB~x$&4bZo+F)+n*ha8(VW5^iXlxL0v zr)+GR*?lF3id^xqN*h@yltnq8L>3FW&L{>)>4|f&{Z{iLgzESE_qah*TNToZU>WF8xi){Iay|N zvGkH73{iGOgDEJ~lMQCc{0z|1aPI^0k@tSBHibFyR)OUWX5p`>zKz3O3Ucl=ibrBXMX-eQ3}E;?pAXLK^m)<#t^h`=qCHb7@3RS*EKYevg}C~jfK$~#o=?M z@tnLwSeBQ~KTJd}8 z1SZ>I;mrG(ysez;r-iSR6IgB~Wjb%8x#1$rAlrQrw*`H|0Z6(cfL~9Zm12g(G@?LD@14{#c{_H@NgmiNNe11vf3MihTC*M(5XpQ9;2&h2(;Kn z^RAxMsp9%)HcGvr{z6iUEy%Cu16%**(uriULBU#E|IBkL(;%h@NX$DZ?+-(Oot-yQ z`qhJ+ztY1pWn=Y|liLsBnqP`cJT_K)6W|b@C`pPJ+l`P)F)0jBcZE|3mi2J*CbCrG z1`-qLHWChat38IcgD&fJ_bzT$i0(?a^^(c|wSC%gwih*lhTyP~i#GiEAw))k29#$E z0phdo0VoEVjiJfN&5eT_>ZjJ3Gee_oHP)qq{{tWMp+7FDQ7Ojvg#GXztJC#JD$K`j25l2z6rA@V$Rt zvZsQU&J`*~hmd%l&uByb%5RLIkFWbvTm0S;nKQbXLtt32+j8`p(XhB$^i-r~UNPr` zE2N0eQqV11kl{P2Fp9OTE;UqtY z6I8@HM!=bC>gK?hh=J3CNqUWl!fSfu%etF#>))$Wbg}vUP(8H!pkNH;IdQ{yQ$9Qt z@(Ak$zo!?b%ui9y2M@}OUeom#er_EY`?tFLjr5NG>jsRXec4@m$OteykRoxDjY$!z>#?q^ER4B+vy!mbOad5ojtgZbfk^U>M+Z=A9I`a|cy5N|` zgzpIT*&KG4-~&z4pNoY~3{HH~v>yuskKm56dy#i??wk@)qDJWCk+*syt4t+NQHiPo zZW;(-8d$ZT_vtRweZ_XhI*wPVF$`lxYJ`*p3wSIq$MkNarDV>nQh}6FwV2B&m=toV zR}0Bux7jTDF^_`Mz|R0pqfH%U!;ftT&OZ^Yfb&ubSf1YDEzb zAu+;>M*Ww=3=JKXFYDk~-uq>pG95g}|C`^Ov0B3;+)TE7C#uyQ@$8ip z3W34RCdQG1>1HRsu8Os54Ly60G?mmEDph$n{y!p`HimX?WBbw4#wtlMJU{MeBe$cC zU)zZ@NG#eTQb-FUthdlO%KXM2#V;=hF&Ng>8EEi;)>o?1w0@lgEYC6;Y#-sJs&&8J zKu$;NKO@E&;c<3io8(+4LKfcXxwB)!Wi4ZJ^8`?n(y}k!-Fes}RY4m5oM;*z-nrp8 zBt!fiN{ZpRS5oY$9n{hAqjqAQDrQSrBFTCE0d2gi^3cW|60kh43nenSe2uD&E9`2D zJKA`f7-w*2+lhy(HlA86+sFnMHwhgpI7?-tnG+;nd8T)6<_Oh{%dY7KNwJ4=J~2)+ z@BKuL^9fZPf{w6R3xVJMR&V0j*)+V&Y6r`i~5SJSnl4TBh`ja)l1u8Pe{3iQ5qSLZf@Di3XZ zNi=QvJGZejPsZ_rq!^wDCB>eu<2u@S!cJ_o+o*QN5k8;|Q{|zJyCneqi)!1)VW>8) zwW}H4(Z*_GoN-jyiGxUtl=kO?(uhm9i`mXs=^Th>NWk*cOa1DoJXy6wipQ?vZTV&l z?P9i*l0`qdlcL<%|2j$Q|IJhNKc_C;SQD+v(xbY2T+%X)B7#lBwni34sxhzOHgTjo8%Z+HIm z7#dyC33+}Dgqo9L0t{`6ko9vCmC8ng!;+YtUswT&S}x)O-->!EE6xKEV>W*ctFvU_ zrXTf%aA7KA#;cF8L4%8?_{Re9!0U&k15bsLq~Pi8frKRGX-P3W3p)z+QHAbRO^Z7{ zGToyxIZ@~u@1?3Y8_ct-lkCyPN5JN> zA-q<(uM`Ha!{7aIRl9QIgKE|~GkE(;JqI(ab3WOlsCf5vgTcE#$>1FggLiasbaWX% z-{!lrcbTyn%RA&DU?OFe<5w}oyIHg~L;b~m*bY1`W)||l>{AE75KfnKnenV0QMbt%D&Zb~l0*qQK%O)BQ={ZE7? zEWscABn8W*-#%uOe+J+O3oL3PhffF1kX4Dq@xBx4u*nt4L$3Tz3}gj92_z z7zGO@18jEnevMa9=s)LD{%=qI;Tce*Pmz0Yj~^$N_Abzkk06OmV;cl&@bEaN38I*p z!^@rHy)Wj1aD`Nisi_PHW-p#RankA)O~8hE$M0+=o63_{3FEw%K-mE~#h#v=`9(-x zAjIZdE+yeN$cwSs{P`U~S`-oY*lBM#7Z3KUw))`M$X*E=yG`RqSY3);@1{3tMQ^~p zhJu<)!#24g+>diDAS99sZS2>o_w3-qP;NqMRT;zEV4kiTAgX-9y@W5~py`D>e`{s3ch7ww_`EUAAqBy}nuPUVwR%%|v$s{9S9e1jS6sJyRU zv#q1@CAT=0XLPEXMWXVo01PYPeT!WLt?|=zIn@V#HVCQ@Zuus1!e3gFJmC*M&j+-h z=ecs8_wRI`hX)DGHRgGo!sewAU9reC!KW}Y&Vl$3r5WSe3BG3_U?UoD;|D=+7)xCz z6E)fxhUuEhHG&k!#L5(?=p2|4l}-F^wjC6%0Rc9zY(TD`$-Jt*I1j~n%$pVGg#^V7 zO{gy}g^y}ADbElk;WeT3063pd(uPUyZi_l+KfbKEFod<{O60CK)8=Mr%Az6kW1dfn8R|_x;i6E(6rn473ruPi>;iSMZA^2dwDC3` zWm>~}KER4=`?RCdACsVHQ1?o}@_f)+5NLFY!NaZG7n>Bq}WUof~eoGwwXHm;ZT z4F#y=%6W9dsbt_iQc1hN$^$DK&|X7D(M@ooIguO z%abk{jg2-MmDPy=5_`8t%QX9o`ga8c~F!+#;T8Vjy|8%)E37)uhRh z;V%67#L`pd^mZlk!zTw$){c(m0WmLDyJZJ?5jVV)(1l)O_=xFiV3`} zs_vGG?IgO)*WSY*-|!TzK_tVZR~RwerY)@H>+(gB;ayZAIujl(P0B94g4!yL%o6h# z6it+`=qlCR_$#>{Tjj)Qn88Lh(zEA+D@IearRhB-G~buzTjxu6#V;Y%Z?Ij{kEJ5> zLMrJnVVygB0Y{Nhu{Am3YQ_=LxI@kQxIl4574CbKristMaW}WDSk#kCxAT?#4gHl~=bV}k;H0^{l zRxOU0&2BTL6-6)UsW3+#YOUtxT3(8(i=i8n{=e$v>ba5o=&&AgA1SVoL8S7cbtVCB zph$O;6tQjyA(fIPDfs`A6uZ#n#3*ZR!Ys1|(c4!O-TA~qC1Va|FEZx|+wt48bGfyi zRoT^>uQLSv=WYRqzk5wSG*e#rNf|}p8W9p${K$O6IQ5Gb%oeSoI8B}YAD$xU@$13C ztMD&!bL9@}0QyHCg~&MckNkkOS|Ljdip$m?=K^QG^GpfYc=PJSCd>{^)RvViX*+G{ zf?^TRi|k7c_ZKkUU=DcY6YHDFDcJe}WtI$+k(@MIBTd^&w_AYqZFdnLyDP*rll}S*`qAIhKXBg-=F4-%mNpY}C$&q&NE(i`m1(y{h#*C5Y`ZjnbM!VL zug9m`o$z;bLKA;V|H%BDD$R{gwvXpt)&4pp8f9VjN7{O7x9#VAi{37D{P;dO>SCVP zPf8BIv;Fjcr2R2!{Bx4yr+PJhk*I9a<~Q)o@awXc3)3Kao3Ib!VIoU6BZ{BgB5hN&k!JKUVO+%D z=YKRDKcQn%>WTWsdKCO^c-0z}n`9pH$e^xGoTe=so&BVE=hT)pUw-te%e||@nf0>{ zO9^)sF*c0&H7hqvn=-^R11;rlW}Ii+dLB<#h@>WZnX&ZrX}puMg%LDFn6D>t zmb(z7&Z>--n?S>HJkkQuaoYp2ahM(`-)fHei(pLXs33a=zB3C;6TERel8?7a&{%8k zXcV{<<1x{cNU7&0!3ac7BrUc5a-T^g^j#~bKmwNMhAt!}1q}x9Vdd#&>OAyEieB1F>}ip&0aY0l@K!+F4oN8$H1TYqwpOqlKWb(MBY(Y?Fdoji7e z4CRjz5}XfL66xEDWF7*{ z=|Mc6g2rgKT)aK(Y;V7>vgJo+mAS-}h01sQH}fqeANWqy_venoA08*_x=iKq$i*ST zru8aY&R;8kEHX&PG`Ud39?=vDM5i%4OtnO7vmlg3tFi8U*#Lj)r2}w4o`(f`j33pS zmBOvDPr*HSaWVG9A7Um~P~PP$=^5^dL6-unnYU;-!x&j$wWhYBA|^x$kj_H1kX|k( zr@81l&SZsYhc0MwNnyx~;vpTZ5!ij_3lS0?m1RC6qZi@SP3C!vU7YfBPxURA zUmoGVC=gC9r=oeybg5;NIrlO_$dy7>V3u518%-a-0b{Qo4ck{$(D>5#%m7;D1kbVa|CF;W3I3}G|fVhtxb#>U6Y2~{VTzmiUG=sP%Lwuc`8r( z@{(c0=N3S@>x6Hxrg?hoT$~WIYr3>S**>+c+&gUe?7v_!6t6GhgJ>4>Dtci&iv_O= z8o$b~=hw!JZ5f+iO;2vLpIdAl8;i~gIU8*yscba2BqcZ6pZ51hDJN}FHz}8Z%mc|@-I|rqxR=ZNJQX<+EsLQ>hEvm7{ovh zDFj?6DAp0Vw1eWJ{Vvz$HaR&uZMOddK?qJ+@fM)a>8s%PY!>i)+g^Ij%mEy{%^#+5 zMwr*#EZ1TvTgXjvo`FcB8Ns-d?qZP#Gk5%`oqRt#SW`X#yH(BGDc))h0Q!V{x~XK= zfVq?W5UgV(GnKW`j{95S3v)6Mea;b^YxyN-hVWzz(Xl*BSiOOg(Yb8Ll38h?ZoU@T zEv`hD=$YcqEwTz%Gfi23@8|)uSLlK~Yl{G4$I8cgFr^5rROX|P^I zJdgkBL1Wlvr7CY0F?OadLo8*!ljysmfS#Kx?{GLe^6U){ELyLKXTj*N6hqV4iLs_& z?CPxeM8+wH9lBV;CG=q-G{2~cA3wYaPU<}KC0@6xFm1St)*CyG=0yJ$a)p`~(Fn$K zXdn%?Wx5`9W3>t^bTCODH1DMxMYk#^h)b&MTPfn@e~M=OOH$=C5bf&2if>A|G!UsPc7;#(6&HkusEjdB>fYT}ixLV`5mBA<1Vwa;iprU6 zD=@(L`P|x0fh~WP0^OXt0ntMiI7V;`xjDYPMyAs9T$@}zYx(G4Y7}4VsEU0kd654i zk0bxJ*GYNWF1=7vYy`3og%aJAs@P%@)nxsKkz$9xqU3S}frs!>8Jo+bOl}jfM?iLr zYF5zK3a28Z&z@9O)59wzV0r#XoAlUT^GSSIIcKRXo~(}6?;=KSRf-)&5DiDwE#0^< z*SzvA0p$(mJ159oO?E55`w{b`^i8mVs2kIBo$NDn%`;W@P39lT4z(`N{LMyj!1LhM zNetkp(jgl@d#aAm=+mUq*RGPJh;L8qQN6Zuek>`5XNpq@R69ubVtQ;lNSLhGZXgd+9U-(6#Obra2WA%3VwBj zBV{kTs{g@ZY}Jq8juR};?0JKLD#Z3J6uke`#KzD1+}gtciwKeGty?I8xU=Rn^=)nZ zJU-BORau<>kQ6pPDEL%jY!rOY6v^*gL1L)rB|i9~{iJC1>8daX{4L2Ccb+V@r~|%n zx0EF1Z&no{yZ)qTb%#XJUq}Y#P5 zCa930E3WDyVntY|PO1iN)x)U>W==SV_ZiYS>e)nU6{)^jShS(BRDhA<>HPR==kyGO zuiGS|zS9xIcn${X4RBO9nHRqK8NzkJ=b*h|I&c$s8gJiJG0T49%+p=Zt^=o7<9fFG ztVPiQxWKC~xIHg}P(@dXTSq9CPAKm|bAY38^i5|`AoS5_U%?A!6?`I8epVe`>&^^54wZ&>ZEyIDT(DdOstI z=>1A+r>D4{U0-;j>)B@4u=QGP2H5QM^eCKWrf5!j;izC&J(LQkY)*RYT0}}1WTt-9 zQShNlUg9*dN6k@JDRSqEP~A?+7TVu=rU&BAv1c=f_ZW9A*tR;8QLc}_E05*g*YZ;6 zE1|)cAcojWLU~h(V}{n4=j`W29yxpKV1%FCb3Y7X?U5VgK_#_-Q1qM(kyb?X|&W&1)mv1^GK5t`_vR- zxnv1G19pO4R%)L4gwI{H@G3bB);_Xg?FA`(ll@|~+#!t~apsgR$817!e^9xh@lcW-`vdDeL~odgT7BN*wfTd zrkS&+DNI*MM!BpPQfEdYSx!%MUmiqZPar&v-BiMEEY3DcV&USxzVIAQ!rYzFT#%7( zdP+5U(*%Q!y%-43$%s9thV{gi()n-ersCrs-1o_gK3|pTNc??GSpL#mtiN9T-q_}^ zlCb>UX8-*czejk@{Fv<=)2?s}j; z=Hz$&QP$^u_3Zr4O~q=jd{5+nKCAo9qF-Dh7|kTuwrv!~IZL81jxX!IB3dw3h!2y7`W-(4E%eU3$7O32d* zZ|K;_g(*38g;iqDHr{9)2w)5NLwLxQ4%XN|Au(KfE~V;{KS;1YbDwT*V&@d5XfPy}?b$t2Syu9?Tn zyQ7K^LmS5fJyUx@R!j4|9PEnOUo5u>u=DZcRY1>pl^$YMOoq%BTwuL}k@b^D@q^^F z==vY*6^7on827jp9SCQKinfjiI*SBUSw#RyyFQu(&%-9z;CT;O0MF-3l0x%7Htm!a zNkRX!wNQTwVbd>ml!AbdlP+JDhXkS2cts#Z^pGb_obZF-e&29}|D(|yIjE*ub}4vZ zIVv5!*ZGZJAvLb!ciwg4?l)AIp1`jxdT=VVAw{)=HpIjMnA-#^<3`mIbnV!8eoc)nyWoL%t<6D;svZ?oJP; zh4eC(#w+t1GTLssST<1iB?*N zEbE_@kP>3w9>4-cz}PKzC$KDkY$=4Rivz}}0`WJ0Ari{>?e2;2O;_>ya%QQ~SURu; zi0c4qcTe%uBTijcajKGNK$iX(KzY`{21`F`3n{Kr~hbKrjVyFZ^@dql7?+#>R0pkoTW1YQez#SA9&}c^Cb2zy-Rh*|@u7F; zW6uMZ^(W7->*p|5>D`*2N^O%lRa>x4QtIFB(QO?S_cc~omDVlTF7c8-Es?(j8?NEL zIj(0fOIz@+q-qrNb=z1%LBuEf=FpCTXPRbx!FGq^%eY>@y$2O&MuSw-F;NX0wxcxS z>(-EH7E||qbF^fo4605CMfnmFovVOPQj1jyilswSP(DQ^Pl!}JzJMZKk|VsIN;%m>7q{1bQlOQIMYpwt)kM$Jrpta#B}@`F+4}Uo3jOSutf%sA%@Zii+k* z+7yWr!9yQ?a0$en+qbH3>+O3xAK3d)S)4{7l(H71|r>wkA1O&{{m!rYcG(3Y*sFe|__7CLlhwh>T zM7{0km*z8y6qBS~{%kaJq6i}6Wbh0T+U0s8745Q00&(Zccht8vFBN>???`2F4zLR` zFMlS+rd_(N#I7WUicRSl5aYdq+Je6 z6n#xH0NQ^r{58MMt!3aLC$Rx#JEhCD2h|Oy=a!Q-WrWE#4Q51P*_jXh)Oyh^Wu_x~ zu6gzhC>r6;3F_pZh=$*WhzxX%>5wp{XNw?>Q8F%^+Emv zt84X#v_~uRorS4Zp%<%Z7DNE_VVA%B0My|?`McWlPMPH4@jyAg)n^T8{~i@hv3%rn zUL%jgm)}s5zfK;Jv!VZA#)*^LOdi$yZtN{jafA%|ZWO>UDDj>(iu=avJo|%3iE?&i z1i0PnW{FQxtj^L6Y-AZAi;LCMe#rzH*rEEj5}Xs{+Zgq zedeu9qPUF0$4#=ZHP_2T>$Gd?3iiJF6*hiBa%^$?&HnOD{z&&UJ#}NCe1$pQ|53bT zAS2mWT8^W))q&LIW@Ycs^yfU6^Yf*cdX;)MT_$ zPQaqzYe`gX0*@d)+(B^jFxOkVlp`JhRk*dR)&m`g__Ly$GCxmD7WjLXZeZLhJWAp8 zYX1pQhXZO`4OUxGjUN##OOymCk)kb=edrUh1a2W851%@|X^Fx)CC2M*43TR{w*l+X zRAIxOtTt?7zX>LeJXxCBuldcs{Pq5jnKIi%6kjpZ6G@sezjuDUmfs*x*8C0o_Ni+v zGFX)p7aJl{W%SLH&3se!2zXM3yzF{Y5%G@Pg5|ex++Bo7It^-X6&uK zf=8u#IzoPtUsiMajf<-om+sl6y8<9(!!uGzf{o^Ba^1d*sv?7jn16%_F9a=d)1{Z= z0=DmR$^blC%z@Vf!fXpLe-Y;bIQNo0@xKZ`U0)WDW>;SyXBqB~O=WiTM%h z;l>(2+?*ycM2|x)$V8PLaM87gd16v$opSJeUfdyXXr%jU=|KK^U;ZjJp&!cGuiv*< zH_|rw!#I-by~%1Sct0+>c)x0%iM=ZqSTIg>W5g>(s3;KN+HzHkUp4^fkj+V``!op( zY?ezP?)>v6^=(~_m+}$MbgL}Ru2vyebrqE$|3++V7F>O!eqeD{Xn&u%Ws$-zW;wGV zGkB+{EtD(in))dnn3OtTzpHu{(MVkSjZ3rjRP=AU>YkR0p2}VsM`OJR1bG^RyLoD$ zGh$3*OFx}+5AE%HJ6gsXsh&PM0t!%gW^aFZKID%bv---!$^IL}Cfh@1hwQ&k{h=M~ zzhu;ge9nTFze1*tRX08|7mv2O`W}d+Fnj#h$_iU-IGiETXE9&Lrh`DwzH1|~!u1D3 zOzrF1;yg0~T;<(gN6R8I3<$6~4WU0&ch(BuF?kN0hQjEN^j6!+!sL);3wKk&aNiDE ze0T=-RI~Kd7CrR!{FyGV>)91K^RZybs2#CE`hu^OiAxOrtg!7{rr23D%gUuNtX?<& zyVIU{DsBB)k@09XT#R4T8M#_$NDAV|b;KY%wQuv}<5o@%j}VF7Tuy|m+E9J}TERI{ z^wJ0JH={j(c8NaWq`8N;>O;!_r?=J}8>lact1dx?XtKH_>9r}|+S#o=+GM6$JyM#$ zZTjOLQgK3ScbbZG=zzoSRV)oaniD9$Piaq<2=VuHra?1Yp#v$wOrtofc0~Ww<=~#_ zDJl7N(OeQ;FBPBY^K7oT20XFm5gAQ+F|t4#SEOYDt4CysDjjs7)E4^S4`EHTd)2$P zHPN0R4h#ON#=?GUu*O1aZA$GZdn6sr!j6~>EzX+k3txVs-CLo)iXL3GXro9Qn$bA0 zIEOZ%;mQFD{d4}z0jet8cy6?Mz?-juBK8`OO4=|zT-ki{;WX8& zL#xeNQJkGZw9HZJa+xKYU@9ilAC&&uMx?C^{s%(RkN7tGG2_3Q0k2pEQK*Vgsoh+PQj z>eI<915mQ7F-TyP|0}s#<1*S}_HP7)WCx9GaklJjqa{425b4lV+~dtAaAS7BGb6V$ zGuX-JF3%I!%&A7LTr2J#^T01oQSpN-0EaDRXg6lw=M?h#JxWA&%+X?VeNLe-d8rJqtb+$Vk7Y|inHiHqHrP)eKE428)0EZ2{K+FkLC>1 z{3B%2rjW$SKbA)~ugI5`A5mtGwE|Og zs@JRP@S!7u>Q{UsqNg}(=UssCWY6LRO(A_P+ti{d%q3E7%0Uu{JA-S~x3#IW`G{wB zP+6QCC51xJ6vh%GGzIqZ`$Hwa^H~x@MNjg<7i}kLImfHQ=oY;q8RO1ORljY6wr;i5 z|9h*78Ljp2C&s2()L4m^sA5TTx5J2S6+c~~^3cXq3B;X$rCR7D))>aAHqN)IakaK_ z7cq7l{jJ2^mkAF+(OoW6={)GuB@lOxlKK^0B>sxDM9MpqVj7;56bc<3 z&m2r%-a3jDqOvR{OCsVMchCR(gv5Tm%quUIF?y5cWe>4iSw$u1soJ5 zG@tomOx*gA0;Z#OHv|y3N?v2$ktbVP>QS?BWMhM#D1vFBk14f8oe;4nU|tOQ?8n~`5!#bOjBMCl+voo;HqgM}N1GM~y+dxc#J4M-PsfZ5)!mrn)XTdOw#JmvMWTxhcS8_X9= zK8h>#0z{C_v~ehwh2|ARvuC&fKo7{K4 zoOpoFXQToY3MEMag^!x;l$DZVIPbL!A)VHbLN?I(Gl}damUdWTX>&#A_i%Ie@5HJ5 z)1npG=Slo07+Zq<%~4Q+LUWkGa7fNl@Ek!KUbv6DDXi`$NfR4h>Lboj40VKnZ`~Ew zHQd=e;ekDIqqwlC*cyXS4CJtXhhZFivD)%GNvHIq6SPNw0@AA6kycf&BBLjJ5CUY0 zpphjzea4mJP|%xCxQV~D0k<-X>#7-r(4L_cYQ`>k&36?XGonn}2Hc&YkI11iE<)(f z`Nb~GExvGpfUM1$J6IST!b86zPjpaxcwa`sV2MygY{Cw^Ok7e5S!;+Vr27>cmqMrC@GXC1x3zZ=?_O_4Wn0KDo8h6=GlEk+xw~@D58s_6U&it z?UI!JZivT}WBUBzXQYr!%xRSK8*@?Bnd`;ppArEt`4EqGdbk85awUwr1dSe0j4Y<` z`K}Zz6>|Dovzu4gz(eqT2U%o4@zNPr0K6k$OyL}l1T#_BXfHbL_bf~2RL}4b*iS__ z_3;}Eg=htB-XC5jq39jdL9*zV-h{Zv!fnZ93B_*0)?_x+7l)v~n*$Shi|-bbW5rz0c~ciy#}A2roOB_t=fzslm=E#DMks%H{opVKsgZ3Z!3eZFG; z?NsLXi!^BR{L@^%&0_cy%Tz-g!NKS~scnP#g0C0%0@be+@h>DRN{tc#)F}SCC=You zi{^>cWNZ$7krF&biVM9Ec-?@9zdBYKXR_fsJZ$&1NVT}+xD8Jpn?PlDD8 z5&2x0`-pBuI)42{FUQhMS~JkHWpisw_G0Q7eQ50gbkif59r!UD27DBc!VIAoNT{@$ z+CANkDvxn}mbe_Ob&+1;ImLCS*m!`#g)CWQd|LD?>h`15j=W2H)$E>*iXL&Tch&4( zj$lXg{*N$c9C7v;2U>ytw)}vTb7Q|) zz?T{$bLn#d^dPX8UZMhQ5yF{$np6TV*{1&6GzKyO>fOkUfYG8Em!u)RSLJqyh>Uff zi$96usC9^r!QsvA`r0jYb?+29>N7ey*Z`Q1Ggh1XCZvJe`NPAqVkc?g@q@z?%h&|R z(QC07?Fja48h)|#Bi2h9A|zR1( z`M#SNIo~Aa5Y$3*3mvX%QUBA8xxz7aRewPT;x5j!>&{&S0mU1rFTW1e1NZR0^JeLh znYlu*)r}Jb&;x${dbV^g;TS{eRj_&^(e$gY>WwYE-c%Ru0T({G|l`9oFv}p=~ww-{z@5kQ-&tP z#z;oVhfo0oAbC-Ch3Qg|INZYUDT!#=BJ`Urr}5X1ivHgC52apXqj}38KUb9ej$CnK zoS9Cv*Y`&Vctz$F@db>#vNp?zjN7xC)yT#`FewFZc%~y;qWtNs zbt>zZDM6i32lByTf;*!g z3ek_XB@m*G;<3`5z}25hcZ|}Fygw!dQZa-U+^QMBsvtkgNI)Itf3V{0XcmicGa^PvjEFn~a?% zu?xO%V7=QFdWcdg%dg2|v|xNXp7|?+$mjZy-cTnqR8&k1XI3OBX!4xaem+iup!%MU zTj*6K)Wz6L1{JIz*Ymsk>Gk`w zS#T^c!&(YN(pCmi8w5CJx62Pbq2NM@4w4Ad+q0tbV_KIsrR`Ecr8FI+Y0lU01a1m~ zEbu<5dLsM$E_Degm^}Ld1(U0L{!`QmM6$cZtRYUp_+anQ+?k-D0eA3*igejvf_)3k zX6Pbb!p8U}`+DDSx?H<{rgY^JX4cvt=l?_|nHSj(QrXkzND_Fn;t6bDEVq24q!`Y- z>_T84$56<=;|%=ongN^Mo}|SI zA+9<8Svx{pra-9ta63XAdLApqTS0qboO!>|jsOSk?O$-~gdUg;O-+#mf$yTbx5ek4 zoh`h>*@G+knisr|J$Uz=!XPF9;2R$IDymUoOkRcO3=X)L3Wgudl@9iz*EZ=;vL}dX zE#~anWY4VxA(FJ|xvE3xXI}Nv5;OBKGP&z)DzNY(ji*Ey!CdxpNa10tfUy$+jhel) zxj~gU&hNc~=5r&N=G|o5_l{y7>xicqUs;BGF_NZ;xfSq6XZ5WZfZ&n{PJ4YKJK191 zc&b!DH@HZ6+o(!kWIn0XERlwVBn)+v(HC0ed8SvJh#292a7)ShAliCua*^_EZux%X z{CM(AVp<$R!Ht@AXD9}_6Mdp^zsQ`#9m)x_UOZ4_bWM?NoqOdX)X^QE@fBsr-JFVQl&G@J7wn`#8^%5V>4FcnJO^W z+-n6UnLDh&RP#L*uo$bGt;kvCS``pWFWAm&k~yG5&h^4my*`_*C2#&0Pfj2OPydx` z-a-maJwDq=FRmmn5b^AqB5IB}lWn zEKJvoy*~HM95lcq!*ihQM7$Y3cV5LF)#o7s@XGY^PxRCsK6k~=oO!tc0FxJZ=QW}A z3%~|&Q)7!c;$#bIGkkiAq@|R!fVX3z1-xr%RKe{TZQ%BV|IGdndE@L>Q+c*Am4MM7 zHP6!WU6@%znl7L?%0O+VWon5L(;_2N!nfyaV;^&T&RgmwfVfFpKhfs9@CD?pJz4>| z7IVf>K)RGyehi`Hgq5>oKnv#Qqdz>VA{?{IQ6rqbG<6=u{u# zoFObl2qzKAz&zI|SbBRs4y#`Sb_Vg3%= zr*<^8JEl5@S&X|$>cQu8pT51H&AHqBxCQ5+f|X|5aOz7EfnX()q#)R5kJ%|3B*k$4 z!7c;@%cYPF!JZ+Janc34>=N?=;fIC57u}$i*=1Hb+A;3V>LT|2*hVgM$O#|CDW_Kb zSt%nk^&3@eo;MJg2VJz0`IF&t+E5J@l~2g|sKi&1Tj5&Aklkk9^%FE_Bz!@Cf_aDT zml!-K4G#zy^Rq4PT~g-bVmj{kyp-VHy_DeI-InCuy`;Ez5h@{Hf_rycl6&`(;@;g@ z>V8tVcQ*5Gtywrwn0L(fj1%nHzD6d}x=FVZM>pY9NFeUq^e8`SwreCLDOag1&a>@8 z%=Yud$ZV51oFI~;2@d3g>hl$Ik5e)4WX?*Bx8dHsDcrj^OWkJ#^I^oC!A^pRHuQdY zcLrPxi+_iV>><3n$y8+V?#_=7o6ZKZICm_79$qLLJ8|ShoTJQJwLDMutE>8Vu<_K9 z^w#D^zl7>5T$3j_0ya;tTfjXv%VO!#vG>f^Pqtt|m1Gfy9;z;iqc`FFgh4`Ab-AEL zZ8>^Fpu#JT-k@#Yz|p%Qq&Rwc{FuAC!O{CK_J^OvZ^O~M{CJte;b>Y_=d6<*BAmTb z$XDVS;JQ=sOhD;4U6azHnW{Jv;BfYQ1y}b}oIL`)V3;+oQJlR(m_u;(I%*bY@23Ix zlfv1nfKon@axJFkbj8>kZZr18+JiJ(YFwDhux-xXs96c>zsv=!z2SMV`y`xgUUO?2 zPLPDVccI1IyHvP)zJgPe+`UHzDDK`BgFX?X55nMU)8zz%ul$BiZ~?wd3uYy{U}h9s zY`)=HaPVSm6Kh6bq1qh3zKljVe!-&>3_sgEg)cm%%%bC(ze)Q#?kl)qir8R!Pci+v z*(uv^I*9AH>o}ab!tvvDj3KCqPk}$N@vYNQPn@#GH=O{dW68sb(=mmRN*N|8hVy8< z5FEezh>3Ys;;9lm+bX4-K5V6tNGvWI!?lsy8)*fIlU{;F77<1V$rKKCO6)soylo@CAD z>VhNk#MovG2N1MQ zWJgv_-hz`9nA}A_;w~Ro&zPP|Uw7l4!)@|Ix$09zzckSagnR z7ld{rv2?Akbd3vEJp!5@Qv5$jf&V8dj7Ru?#Ml?b?N;J=618{}%pdrF^Wp!|j-RB8 z;r0}~pz;Chrbz()A5{bUtac`5fKe@)jUWD>6NU20XbbCCu$d6fIc&?`aB-Hj0DuPfL+9lDJN!l z2&1ah-d>F^t3Ucug16Cl#F`Q)}@t1^GK9uizuD>U6F~HH6LpbLi7v z;NDzpq5hl+_eaK0$6r!p#8`7U1bfSytUN*sj!ry6&-jD2l|WP;B2umGXbHrf_x--j zz8KC&Jo8kQ#raQ3vG(75V(hE4yOsF1DrO1Z;>>P!pSCYWugb&z*-12Q6tr#QAHS0} zmP?A^{FU7X$M3k-HXb3-7@e)iOuo-}mx%oHo99bl4#Kx_8QkTnMIpOiWY@vqnpCYc ze6s}N&X;H_x#_P_4F^;f=kcu#|DG6oaAyz{Yh`s%ICjOCLkS^pSP}@Njp_P=Mp-<~ zbDh_9dnJn6{zz%I*@*9qP|*vSiMju~^uYp4xm3^Mq7OhS-ODD4Z|h99JSg+>grpeG zd3GV@B~^7#6(6%Bsf0r6P4_F8q0SiIX z4I4pA)x!@c1Wm-NNVX6(k}U*Hk}dHngjSN`RZ7J7-u{+&)%xCvp*AxFd#FWf9Duox zNoA;KOOnFS{_y}IdC@mWisAgFU5KG(QOE{!e^iM{4DD<6xyBrwCfI#-&VD)@z)qmN zaRT97+mgH`L-tg5GfB z&ppd0zuCI0WR;RUg4O{%lQ^%ra4?q?6sc^%V!|^Nxk+&eM7<#Y71PbLT_}{ZkcOW0 z9i*WToydfK#uoGUxTw)RN>sa|ZyQ=%hI!A8478Q(-9{igbVU51bW1)Q2N<8M7Q|vi z7Bi`4>xAc9XG=+cGf$EN{ZHCVOzt?m4AdQ&;I}oN5~G>*3K$J)zRh#<5lU$lBmcHu zdq*qQ)!2a1lQ;TrBl1Sq(v61t{aH%3vX-YYY%RahRpK)EoGpQL0=Ecm$;+I@t-UyB zjvq1-bh+H5D6Ty8rR!(2RyeYvnUW7_abdCAcRq|j=3Ru@WISs-fS*sp16WN@! z!fM)g^)Dpdvs5qyS14QZc$Ny5;JS4m&BCCwNjWU5!W1wRKy2b^JUj84pDnNXJ`&DS*Q@QSW6WubR+D}B&|vg`l2k0R#nv0&3=n6yIZDQ zN%G`(Cn%4pcS!{Q7$`{!6Wa1CJ7uw?7|yU=2u!F4g>0PkH!3l?Sf8s;l=;7iLZsL) zn^4CeuToRtq+w|PUod(P1ttG0V+5XC@JFEc7GXqp6h8E^X2Wxz#f1$GRR}ipUC$^; zgduEnSMese5?*3)q0O277NrwazpxiFJP<6Y$# z4D}?y)Cx{EQ4P@kcz$9Ge;OA^{+kd2CgjZ_^^pLSE&wvbf`bG`xp70#D~u$)OCr z>`jUTwYvw8bTPeSL~Z8Lq>=ZIpUr0z%AHv6#g}pd?7!i##1;`O(mTjDz=-%HkG)npQEgwqphFgte<}TP~apgBj*6C+(0Ys z4C^P~`Z?G7@yHJ?4dKUu-87f(T2^0G*|Eu?NN1MeO9aD)%dOj(!mVpryZ*rhrt*|CO@06xa!b(=X7r3hQ-Ni6!ljUl+6zaZYmC?0H|Mruo ztQ09HTFRKMvho&k(}*k}O^f`A5H|lJmD8CXO{uCA3g@wqsBZ=AVoxDyat}?dfbma= zP+0Gb>Y;i(0P04DnLbwLahK+vo8hWyl56i-p2FiDgHDu*LfrkToJqJ;%+iksO&MGwOc~}LwJUal3HFEqr_lxz?RMsQt@xzqexB0j_ z;9QUR3S}I+F}>9DYUMkc=X0UuO$z#j3mM6*ySx|euQscoZbikBR;jV3bYOGBzivD0 zr;P_&KYdUlw!q4$=%^WI#5x!|&8F^_;0tVD1U55d{$dmL^0!54G}8P2biU2r*&Uel zbuz_WlbOz|*)b1>cayu~*0hS#=Xb@)pNNvuv5M`i2=Yts1fE(bKwg@V9FUyYN?{Ue&Q(2t)IQYmh$`mT1{{olkn~P{(noVecvbGfikQ7 zPdOTT`E*FNy`NFLW5pK&u{R6f_)Op+MpogQ56~l*rujUb=Q`b8#q2pRnuav6v+~q% zAe0tQjn{kDRBpxN4fB6PsHi?g=KrTG%HjxfZEbZ)6;Oo^0W_+fYL)wtwC_FLhlNkGGw4x+4V$)z!H{OtDNk4gyAbvQf(RyZ zxa$e{J1V;^OqTfv)k^qR3{kaT(APJRSQEn}tITUSuL6;; zP70d=T4;ZVU^l&dC|FlTLvAcpH$F2ubDHVgTJsdj#!GtxoumJxbD{Gc!BM*BGjZ^| zRaT5r;mU?wV-#72X9vpl3~k{0_^LoTPTC>e=N+{a)py%D>I{5BTk>`Z=cuBK-sH`uCdP~8 zVaK`}F3<3=4D+@d2#Cze8ncq%f_avI)H9O)QRn?##2i+eBjtrcu1UM1agqILF$bv* zt~GPiFLI2^PDA@S{N9`6dld8;L(^HSH1X@*L0dAiM7zl6Nv}Ww7%ivFoB!O)5e>r~ zY`aC;wPK&wBz_LQm5o57Jo(f;ei>I-h#8bCC!I|i4a;ZE2l_d4G|tVB%ONO>n9$%pSyOR|XnHBSLe<@kM20MzEihdXiFc z@gKJ{KC-vuVV5>$#fvjye-{@SXpGXt&!y^e(y_?ML2BMbUMZxqUu$KrZa0TNjlWvBy_^m=Bl&FOmv)>?BEs%@zGC)I9v(Nece&>_Xg-QDSU%!Od3U za1ujBUOvc550mb<{-V;kfyYY#|Bpf-RN(hw3CZ1@Z&i_I*RM?2PSE2ghZ045Nq~j? zVZ?k};h{2QkhI$gO-ZDG#9sVcay{`7#Uhrm+kK3yW)ahmBazTQy9Aldc(60P+PjIv zHe+tZ3?Nz-%*d2^R|7)0t<7K0m*;?7X0Dp+$fhg|iZ(avu{=6~7^GFj>+^~zs#=cF z*Qv;QM=puSaw9`A5|A=8TYDaw5Y^`eJC_(`xp)!K+-GtH8XC~fm%2_PqhK)!SjYP# z(W3Ij#(fcnkTWaWeBxR}*}v|>7^u)EgdF2l@!D~^9=R|}^nBz(4zqt!eC|m&k;4`h zD(ELkPK3%r^_YEJU&-gV@htamJsCJL_TUol70 zfv=9gKn;v^oV~55AUpw=uMQCO*%Ju2bOJcXcGVr%w?JeA+SE_I&& zM29VV({i=)5Xs-`zA<-Re|4<&$ZVoq<_6JF2VI|^E;hzE&vKRx{8>gpmO@1v_N&uI z`HE7`=gZZ}L+w5wCzeBPl7&NerX;CDw>2b(j+AARVmR-#3nlGF_ed1IUow0Hit(+3 zk6vyheLG7=0W@7hv$2SfwnFQla>yzq-s8xhLzD^48kfS&70Il5oL#aFFEFvLLW9gR z->a5GCD0Fg>%>se#(e_LWaO)4P!>2FqK3uzJ|UHnpKFcRLipdkRlwQHl43aj+b)zD z&pb9cR5dk!kPP2v;NVpfZqqFxTj*@Pur zL40r9DHPWil)2W$yjUIH+Cd&nmuLXVS=fKuXV|}qK1>cRJ`BW!VX*IlDEPjnxi85Gjx+}=u1Q5N ziAkVKvNEv?Ezil%AR1^t$1#y(<5O}1V?Q|*T~lis%LI+jq7zR1O?33t7G|h+{a{8I zC%uH=pJ9%qr(Aks9JH3+vVB|0r$3Yh|HE$EA1tyJUy$>gt&C-H zicwj5xMtsk(+`WZ-J^ac@ds3&%}`>Hgwlw&oJrwa%jT$Wj7V8oL_d4V8Z)l zf#v;jXqDytvc3Duvt1b_+@z4HeL|IPah>WzYU{60?1{(j#0O^aH~YYR`>{Ro=zUDR z)PNsMt#%gfbPn=^=}nJS$|KKw_B7L0Mkf53lZpAsAdc#>T&vGV-ly+pI) zgsrC(2gFu<=;b_ZLgVB`dy4uv5`PZrmcMTHUmt#dutok36Xn1lxRA5p{YLbR z72ckX6&xw?S6OTMPOTN+sf;D}kUOt!a|heoQv1#3|AIr!=9F#GJxw=HSFdnDJ3v8h73C@(@5#>g(c-6t|i+`>e$v_|SH1F$g}u zi$NAcVnebRsWdh7&ut#D+&2>&Z>6flUxcvy-DCg#f#0^{`L1Dw56SCZ2A-wv%YeAv z+HK)N44yd%Fab9R5hG8Joc`ELG64yFcIeQIKNU|c-jucuQES$DW&Eq-+x=?%f=cvL z!H2fV_*L+M-7*=!0&e* z|H1k7h?cQJV>8K&umKiWn`wb;ro(L{nYMJfn(dd2zdQ>Mi;#GD%6Q&zMb6>!LSf{X zKqT!Lzi}$=2iFR$1+=oWXB-iu1`o&v}bz16XquFPC#$(2H+pQF;+2E?aTNb&z z1#9xDYw^d!Wiyt3pd52?&RBEIJzy=7zMZILESV@vE{G2G?`OyH(Q{Dl0c~u&CWrUNWW zTT$E-_+Bi|_zp`Re8s8{qi5pi0oa1?WYDxO=F>-5fjXw@7K8<{h2CImAOC6rPrd8* z4`i;?i$*kCt(g`D7hxKFSMk*e4KGuvBRm?AOQQ`ew! zN-PB5)MjPuybG4gji%ZoGN>N=6P6@W#1S=K5zete*+zZfda2!?ic_nG4yw}5R7#b( z2@C1WM#D?;?rv|WJ=WR0hboQzS_)#f0uTIQI94`D;GX(nmtLJ`0d>%#+WXV-8GhP7 zVEDUhp?Vic2h;BJth{+hJ7Ys)Cb_NNnr@tH4){#a?w}?FP-Bf5?gT4_&2naVVs|~< zIUpucfplw4te=5b%GiK@Ng5hMPPnnL{IR_AT}Es))Q(C;7^pVIlK;`vZ+flP;qViu zmZlp^qfTCJ&&I^^z^wP*kuDwRtYqQkCEA>I+HN-4(xrJLqp|Oe?Qrh9> zg|k12N5)7zLh%({F{W$&_W^EG*qu$Ls{^WWk)jKExuaalGaZ8kk<6>U?1>0grrCcJ z`TFbbd^B7mnSF>|A~p@pF2ozlW2yL0VoT;~OX?<}LM5m+l%t6wds*2iavWjv&DW#x z=-a^LfC0ZVDW*K!l*MQ<&v>?jBecJ#tL7oHfFk&KPOXTq2<<=16~Shr!gLF-HTM?p1v_dn=S@sQC2#MFP!p*sDD)0S zp|^lvFTZ6?#mc(jxL>BI!>(v4p#S{V*xfUs-LJAd(2TvG-QC!u;y z%{yX6dQ+2Jb_x8dsuGnph)^lPJ+R}@L|SWJ{Y!MkxSJV~D-apZb^v-bn_IU=@q+cb z9)4WfkcGC92Yq}mG# zXu?+R9^{US#E#(I2JTiZBGxUmShZAbu!?K7CHG1d_IbE4QI>kT5jI;k3Rk4t^Kz7$ zv@&&~R;`xhXhW8G33eC?(IZQTmZcQi019T!FN0!t^m!zuqL&eB zrd(*-SE1&VunM>D+;85K&RI}KZk_3D#3BJN1%4w9g`Gf7x^Yi6Re-u~G$XGGo)bL5 zZ*)g}9-tNewWNXWcx@w1mp3BgASvzQz72%_nD!lJ0DJHW*K^SP`seSE+s4?fx#1XB z3=iPO7P#HHswYNx0a2lMhYYPM>;SXCZ>%&&H$%D)mpBYOKfYXGt=D+WO`?F6{ES|H z(jGMAp_by-POh&>a!t>Y%W9Gq8I@}OrWexPyA&EJH(58{ByyuqMJ12Th=VzeH$;~B zsGEO6snN-@M6h#r6yBI*5wKtJR&*_p)7XC+bYuW+2O51$2SqSik(ie=xdw>IloBlw7s(K+HPH0l~3AN zmbjtEUsdwH3iItVW~dA6=w2Nh;v3CX^LyFs?I7X^sp#PQYFLp45!Z}GLw1J^6T{O6 z>)~mDKrcVvbXj>t6}HV~_13xVE~_2e`k-;Vx7}^EL~Zh`Sx{{qz4@4zFKm-$ZhXB_`W&=gwJ@*zK!I%`t%%iU2zF!w835{+a7UU zFwNMLxTS{E({{JiCDJ0Bf2zPtd8B~M=>--bobC@p!)rZZhsV3W0|@v(omIVGmC#Ll zeg?<$%zW<6j|9`5uI#P9plH^h&fq;}@8i*EjTGGoAyk=GuNed2QMVJRJfX}#KnJl> zJSs)j;WZTA&|9hKY(BFWrB%@673LSX*0S;)MLx|vZ>+1j3n9VMQPZyF_(aOkMSaEm zt22=^3babl&?99EFQ>)d?qvh-Ou(=&c3CiNaf=1RJPL+AL97Lg9wa^i!x#9%(F(FIV{X!Zz^hQl}u? zn3{6cJfHwrej7E3pG%Eyg>c*W_8N0xfpu7VTztr3K`|(SUn6{;JS=knYIDlGmPUq+ zYOgU*$QS69)W|r4rVfT)Up#61=&`a1>1gP zg1|4cJ+{5t?7tBBRWNr-5M+Btuw%g37aO8CA*&4Pm4sj3g36yj_Pbf(+n0cEuQm_d z))syZWBFm1H=8$rK5B5uEOc5j=AESg7z~*3QbDm32shXeS835R7|>|5k|(~&yo1?x zHn!S`cH33?{Eb6bW!E{@s?56Rd#p-2Xj>Z6U<%P*V^*Ijrrg`C%`c@v@V{9c39qZ> z6Slmt!9L)(?a>&GEu>e>U!h+vyJ;1vkw-Ns>2jk5ltq0?7!seyqkBSs;`-9QAMf%@jKK>{BVEnfnj70~XhdJs#AKo?j z06p|P+#(enbRKR#+nV{W%f83VCvS7?x8=1v5B+EgPHMZ`JofMpeje_*{IKVtXXv2w z5I?f>5UrN;AlzbkeVhE8*TJG zyt)AsrsJ1)_2Q+T!72kS4v1nyF;;Pe65dT|LMl}!O9wB-_nEwPFK`!+6-iz4MLK>( zamg+PRe@~tjbfGUB#0L2=5;Tt_i-OAI;J5=%`0ZwZ6dmg{8UVYqb#n7_lVU&UI`d) zmEzhIw?A+`%V2z$iVsI)cfLH*{AlhPWmyOoOpjceZaVN~nuNmu?`mEjJkEgWAU>ky zpaUSa7l4aU2wyed*`dHR02x<`nW-jV`a)!u8iWqpG5zi~&#Oz%YkgiFMOgB!BVTkp zh*N+DyzOD}xvxS~0FNu6J@xi7Gk?zuYL}u7J}7WGdEX}CbKCdUpVE@}%5T*|wFM4u zY&;Y=yncoS943rNbNFiiAjBJ+0ws#fZSfVHISvXR9$C5Zw06MxR@yljSsD4e#4xIh z1zmZShWti*bjAG*=nA5FeS|g$y3$9he$_%(y2I^z)!aAcumF1cTpK`NkwjQ{Z&?US zfX4eKp&)Lui5y`7uHCM83?MX*v zB%yfypcIXqz59lq!19$9T_$^$))9rZyn`rNPdzV`u{GxP?<%SpcZe~1u(x3Llwdm2 zGiddt82(7yH3P+OAPYbwTS`diy9wAyq%r}ciMLq&IM5q!pt8L`tI$*9Pf z?0SA%SNWWAoG`W>qmKSOY|8bOCgWHb+i7D zUmgFE?(4?OfiOmr!etp_gf#|bZEQLsUq}m^aC7m}yA4VIKzQnAWePya_iaa3f3Y6c zA2ECM5aJt`Qcv~tRle%YM{nch%N}LBzi%NB@n-Q?uE3R3`^CWNw1ZR`a2Hd}yx^;O1Uc zw6~!{MWO;sQf0(W-P@2+fma4SW3mRHl{U-cNf<0Vk43I9 zbA1Of!GJeLd{~JU(xiByr93a9g}e0f%A7*XjdsyIYi}L~?!DN{0I|l|B#vU*vu@2B zUQ>Kqw_-xAHrJbQVnBLN^%-A4@eIfl6DbO>U%V);)aIc=Ln;b-L-UYkKhM}|KFov=(QAnV#NTv(B-17D z*I;KQWemM}1Nsi630-G0Tmzg4nfXXP(~o^Z1wr}W=4bmn^MIGT)Qk_y1xR)RNN(g4 zM^&3uZ^m^97SQHd?b=)({nj>jueI6)qFt>iHt%Zl#kauMtT4Sb{V)p!=EW<1f+m!} zyLv(QEqJ%qf_G!q@vfcP3hrbUj#2Y-6#i(&4mHxAa+kbi-Qgvh_41OpMx>;D&NOup z=LV&wx#oCu5Y^~o9dIuM%O<`;9ugvdr7}E02ALc>ia4A2_d*8O2!j959V_cpJstog z5yo7#e)q0m=9$2I5pS|qcM&03!!@SXIYD2oBrd=i$ltKY?^!n&X4S}SDCw{2?zHuY z&BPlZ5quE6gj}I{UPsW)&hcUd!OOG@M>V5P6kOJr4}O@~LIcUFq@vv=-ioeE1!;*M zt%{FjcYlGN%0X2Wt+J{ZpRB?pQ=$r2bu(X9HKOFAw);O<9A;xH37vyB`~L(O`d{0o z(Eqc?*#0&!!GLB)-1rE;7|L|}oWT|S1m?YdQ#+pD8#$_7+>pBo)d zmb0OpgM3$?8{EEvIDsNrJ~u8HAeP;2vswGZ=f;kt&yAnFP5USs7`x1q$hPloVVin& zVf=iZ@VT*9xZ(PtJ~tqlwwPZnmkQeZ-0T%vB*6t5ZmN6bn@3YS-L{LBkp5!hPM-5>6o6DjT-Jp-t(=pFCzG!Ccb zSd>DP=OV*9N8zJ#%V1AJ_W`okv}{+h@^ua>HZu3N>#!*nzfjXuIe~Bq1jw;{T(5dQY9&dbCg{OU6$90v5h8_6BLLmSRDRU zmWZg&qwDvUcW$T2;Rw$>Y%M7c*b(8&%o3GeO0$4b6nrfC&l_{-{6y?`B!bATEZtqes&v( zc4R&&7M&=N>kyw5vo{OO*)MMw2!d*idG{Z0t+%yqzjFfei4EoN`0rXGjNR*w?LqUiCv9dcW9!5Gk608xoAR6P`#g+K~2q zSvq+;8B2}x+eiVWaO~}U-vuCh`(QLY& z1>t|qAAZ)FQ}BVKgk`IRhYgNpD7ao4epu4Pw4XrFyw;u2W<{620R8q0UQjDL%8(&I zCnX&hk>oe-cu@5pHQ~u6o`>uBxal}7)3=jB-1`t+j5u9C?TNfAl++xdULO^fur%|yKuJCopwo4e~+a#R22$NKHoU4u5qvL5M${$yx&x}&12`FgX^D{&I9 zG|78l3?I>``_uubn$6;NfgX%l=*tj<-|Y1X#tVl*l5X4e_m|2Q_(IN8bXQTqe6Tk# zI`_Ha!rWbfHjD8pXNl*LJe+H;O%v%ZpJaYPomRWMt&$wdcG z66538AeM-SuhaabjRLWky*?EMV(Zl_uL}r$ zth^7hSpd!4LWq5(<=Z@~Tno3es5KiD#m`mJa2SH$yn00^xKh|HPC?ImyaDzkPC$g# zIMIFlJBv|1J`ddMHD3~8yFj`qUg%=DJU#Y6`{uZLtoCH z*+Z*(&(dS@)%J%>yx`0D5Qk$XG9!NL$4VbTs8 z5eVwhVPZ}rlDQnZgCz!2^+(|BhOm|M63J=z$CV3OAT-|T zVj{Dap1N|u4cNe982%^E3i;O0T%OF_+Om`P5~+5WUjlLGe`zw?Hu<)Q5By)KEY4k$ z0(XrEMvxfMRAn=FP>Fw5WMYMG+(xVI@BDMga>$*3Rxj($fBy7;>&|zIq5$%5-9G`T z+ScaU-|&nGvLkrTybBq-nQoQ1O5P9H)`G>o3}mpi=A+d(M=H@ZQgcxSo=Fba@QQNR%3 zkt?DrmPE@L{gtT7wRX8{ljR=%_Hz5ORk^`-xw>Sz>%YC+OOy-EfjnOTAv#fd!_$f0 z=6!qV1*$ak-nON49!r$oeZ#kowV2Z1L*C}QE_K3w&SmKeUl4m6hqXzcb`+1@?_rZZ zx&GNgT*!}y#UeqAIpzi-$R~{W-*)*onWc}Qt$|pF5QAhg{D_0XIwhihcLsuZdXRtgS3bE-a}idyz)_43{5#*6gS7E_~MpT!iY z6j&`xt)l}5?!UAw{2Kc(7rQAmjDlxNpm9-|^L)qR&9hOK-^j>V#6b#Sr6kL5^W+st428=@|}(Y$)An!hgC z3ErAZV|HtYpR~5+8$`W3R9T?>$Xcgf z-j1yG&#|p!E!nD%T?_edj!oX_BsVlvCq*UCO6*`<7^VG1uo5;j3K)VC^Plw3Quo;R z1jwc`%lb{*>`0bI<&pUX8n##MhSepq(7R#Fy4}HXGAnu5Ps*_0?Yy461%=0ALup!y z`O|0A8(|=_Jp=Ue)n*L#tBvCxjol=aF>Sj^7d{+~uSoMaVx4WTn${bgVKFwCm7>m)U_*uy=h!ap(~i6 zhr7$NDzHf4O&9*?r|JM$%rRbB_FGU;cW3$V{1S4vlnIQJT@< zhkBmhykL7=-bhB@Re?y(DiIn!&7wcf=pH=UJtsYgt)*`87FYmt@B@k`QK=i3XUNO# z4O!8#dgO*I^EWV#8Q688vSuC+7Ryjz#rS}+T%c03IpuGHhmXh#&p}-TH*2UMzYb}# zyE*?MF?`oOM?=^>JR(E*9kQZhWuulU`_6J4ZR5lf8nvd*^cND@^4Qy;;@1Ab@`!kYa=bhqmlTdMuedz&$|HheFItIr zsKhsezt%%5(EQ(#608mt&9WLyo{uCnNILo3L=MFXSt!-Sooi{(dUDStq*BIN4V-Sb z-bc;2*tL8-QT9B^@tw}zk<5P^_-!08Pyeghh)2OM!zF!j=T=bNXvrcxu`;m*gFPiZ z+^st z_F^ywj8Pdaeo=?hThYreXZKIT9LkLBOQD+AvCSbGJSLuJ^Kqn5t*COmWj7z) z3++c~1bYu+5Fyg>iJu6~|A5357;h6X=xjkyL>4L1ao4$fU_TB|Ps_I(&pJXOvAixO_ASy`I zs8OIsQA|uIbCMZyMkW%)2UZ0%7_q)kXB0G$p_3G*hf!{8t^Hry+TOO>Tiepsi@X73t~fXbM8)(&vHaN< zfTr;?u?Vz)*$RtryB^y;q4ljS-Ms@gX+T>$t{D7al(jA$>0dc6AA(Fg#!QO>4fQzR z@62@WpOIY-!hza4+yDyanZtIVPwa~N(2<#;t!jZq+aJ_cY>_R)PUt5gPSTbaaSggRrC#r-$jD$^ zIw~^li`%|<8wxzQu=cj z(6iCyi^4<7?+hQW%*2?nadwUqyeyTq2 zKlzXG^LV{kD)%7%X8-kd{D13Lg-`t;NFu|fQp*pxP$Sf0B9ka}9YCMuuOj=+d={ zE&SU2xDBiA#`jdic1Y=}3hl`UW=9(*yJk@2Y)Nl!ZtVe2Zvtz#l(pV@YV3^(v4bau zy@KKe{pu52_jMEAE8%HEDCpp1^@#=b>1N74Uz!J(ABa-&(vgXaH^dGem(UBes#c-4 z=C#WhA!18B#dq0$>~pAy5}x{=ykZkdoENxFlpnv4TFrRmFucx?bko%bAG!5(mw#fL z*{vDR2bx-p+E);?>pY~oc=VgE_%)-;U$%K^dnn=gmZVlR6@!si%%0&dcDvikx|U8* z_nA|+pVEzbIZ<)8TiTP2Gm39N-Q{l8p6rrss|2-(lVhn&U3;JnR)p$6&yOzoAeC6| z`sfgvsi!COqPsFt99LcYbVH|dQ?TeM?mzqPGnXGIKn-`PW_BsO_x$ctU;9p`w|#l* zZd4G{ul8T-b`99xk7@z&u3~R<&R3^y<G|UV0g+}KbUjJ>l z=!sJ!^I@*po`{T8CmK>jZ|+_GCqR5URDP`WZ0mj04#fYk$gM?Kw$&QJfvxA4OrcDv z&o7>d5_8ZGctN-T`ZwfQmG$xOiGLBtGk)SeAA5N)J_wzt>iDvJQALm6TEMSJ{Nb_z zx~w&G1vYod@$?Hpgz-qfwpu^N<|^qkaLX<-*pruESnTqVtn{ZcSa`*$n3NJn?^~_R z;&-7eZz_u2l&hSj!vvxrgvc}VaU5#9VjFIV=$+QeNtTh2F+mNUGaW({U&*aEgonzh zaI1CMU-qQLq8uw65^-WygEjA4@FnChSNz|mk9XvR{)^Vvn>T&(`dZWakE}0A{g13K z-?M*feZ73+f&aes<+~zOyGggP)17D9MKGhpM)f-SGAsMOXZlkoiFSn&!zk*WMAX zSsgShN~*CEo!Dicw{T?&lWOhI3<)$d9DFXmrqs5T3qkq7alTCqn6`FRzTA{;Cc+Kj zur^nlm-r|z@^dvf|Hvk$>@_Y|%#nrBCF2;~vqP8zitd%nG)5DkDZ{L&k$IjkTrBYC z&4K~2ewXu)h$DRnTw5aOo>UYGO1!Q>oq0R-acGasfZc+ThwXqn*t#e4F<-=M{#NhZ zh-QTHp{|>G_}SVjX@o^*-8cpTY3Zaw?Y`g1VFMgJM~}UUgMQS6s}uEws8LQw=>f5N zDqNxWRtKIPvQRgru@LCRmQ)zsr@4eC|mSx+hc9-)CH4Ib;4Z9sN1 z@o3Peft6Uz@B>NYsgym2jRvRi)kvTn15vB|3!?N5fXO~oBg=e#pGkM@*@gPtf3?HYBR80T@w4JC zsrY{~?X0U%p?CH`*FVeOHUL7x7Y8I(;gz{KGc(Kw3itBTcTTUw@ryrD*v$<1Ss%}G z)rn*PR9-$+H!mutOctdr?Dwq<7cP)g0^)L&Fc5MT4Gy`sIM=9iRU%YMScIeH5mJhr zg|Vx8giCT-wK)TMNTYfQ2Q3WC8h(&&`W6(r%QM4+t4&{#aMm#EvJ*jI`sQ*k*+FBg z3cKlp?b=yJVX@ZydX5%*!vo#a>t_eK8BV$Rd%i66n}_hweBT?S51EaH*cozt2TtAm zAn1kuucSyDKL*WPy%lEtWN++Gn$~!`)SzvcaW2Y1TH`#PI1KnFkBse}AI=qpha6=Z zxUk31C+Wnn*afboUgXD(=SbG*ft>Jo(CL9#Dl2lLWboF_C|xi)H*%tK#hV-(OXWn~ zQ1^TdtDO63jNUt=xF8&<6YnLr(SlCDxl?;`CnCGku&f#B7j|N|aFX<1S3%-JycYQK z>xdi<8z~s;$%t4%LXUw+di~FhEC`>#(9I~Rn+TqF`l`FzM0smba*VoQZkqm-^pLny zv}Nf4tmKY|+MXk9ZU=ot#K>OV^FoGjokRnKgrAc{tWdmgF7F^E^cXo^b;aEg*5Ov z>z2VEBQtfHW0%S(sfv5nlHO0Vq)WJQwyj?nWb}WOg-kr$g}E$$@j4vt%I)-Yss6_O zU0&&2kL(bkTBR;7BU1WH8L5Us^p(}<_)QrYd;m_d_H}+>w*uREk|xibnHYMPjw=|a zPP;xTm_i9sEeN2?D}QnoeCFz@cC`ZP0Ld!BeGk#*=#uH!cEOisH{BF2F3qT)WV2c? z^+I_!s=+hN5+VCfq*3Bt18ttN2FQHVlBgGbNrI-O+_s_avr1)CZGX|yz7C#e%R;7u z3#VU?-6hZYgjpSmz}A^j$=B)c@<`5jeHZORJ(GTE((TjewzcK+xDy>` z)GFJk0X^*Scl8{E$RUb|{Y`;+x__$gtZt~@zA>qzg0}>6WKr}aIh2C1!Qz2LWoETm zS3vX>t?>?ETQ@6;4YWcBYhSA6kvS2V7N+vr1N*x5c)%x!D1uh{emz!R2n*nS?Y_yR zlqI8(VInKAxx z+Ur2dh1}Q4OTh(#vAyd0IBu3*uJ^Tu#zHxB$|#B7I3ux26=eNnwg**RJG-jhX?*nQ z!Y$xvwsR5R{ zC?FDK=%i575Y+Yh@H;2!(PivUoYXFw&yon5h?HAvtf9YT$;KAvx*}s~is6dnsxfyO z`w^uHu4BdSX0_d%yjsenFX`6UbYQxU&)apJe?%RR{UTk*NV|?4wr8in9NV9h7%|)| z#6+Vq@=pbjRVsQXU|x@ZbUr#e%tRKy`D;2Liy!oqsHw7wTEyk=t9q*1ubTlsU>2px z$qEn{uaBZ51RGRIpW+Jy9b7Hw;OZ{+^ux2e$(u%#TH{TF7}uEXUw~8L)jUcDu-9VU zjQH6KmVLfFCk%4mpUi>iRKaF7Kdi}BYMB8yTH}9Et0BzR5?2@*^A;eZauHwL0Absqrytbl~tTrvZL* zYx4vt)CNcE;b-W-P4v>7bf&-6EGa=YCe<$5XG0{qN3s1`+KNgcB@)B_d^spm0%a}F z$3|AkfYpi-J)@x6v_@T?lYMdx?F5YAn$!r_L{UQQWk!ag=TKJ2;;96m>-B|l0%dbR zMF@{G0kcb;-zcd=FHp`ye{<@Qb8zOAmc$j8386=qu{)B{|KZcX+tY>LCnJ|1|E4DPH7f+5QHP^-k-Q|y>%AV zriWN2|8t)(>vl$lSHZfEVic@HIxDK=6R61#kuh}bx0k?qpESTlGQeUL2&JsBa(dum zlU*(~@aX}0jcSFql7Ug{hT#Kqb2PHD+cVRhB`B{t;WbR?CwK-6x~o^+w#t7+K(+@d z>aS2d>6OhudKpoUOZ8p3$pz{Z9F)^GBs?_V;!~<|p`rjjF?wCIQ1(OdW>W349{m9; zYZRC#Ia;0}{J-7_Cu+5NO=w7=k1|7YMph)!LD_)rtWd5ujzuEvYB&~&)VJF=^@eXZ zN}o{3FMNYD>2c0f^wJrOlNm4>fdMFPO0z<7l1O>oJ=WBx2ci$fsgdaUt_Ee?9ttn~Lu2LI7dW(WyI?F(yg<{c>htFqo>6g~mBM$GJJUM8}#teBUI6Ku9 ztuI_47_*+UlRuK@=j81e){eiAUq#{c{^;UkqDjYR`+HWi2TS%T#{dha&H$YTZ6H;G9rHrVvWjX9HeS* zufGd6TP`DYX<vjIQBJPLK-RUXMLqj`h?OXr7(~b;t^a7gThNU zjQO}tWa=dBS*hZv+iOy3Bm?^b?S4?az<~g|49nr|If;#1Hf+obny+=*GlBM`bA94w zD2e^jLm@c4+}QhrAK((oOOBzBkwn;~Gpft>Mf5Zg964VOz)WEMz8%gX7(-PUo6lRl zOAe%ZvWCj2^q+%wa1QR-n5n#1z!+XJ7YRf?8^v!(<;>D#A!ndXnor;zy_ER^u(w!$`Rbm& zp<%5_mgFZ*+6f=il$#;Ophje*hVsj;E;|$%f^vrxx-ePC+&n@Vv4a_r)97DdLSsv0 zh|aksU|v&_tT@y~NJD*PU_!urxXF^r&eF~5B0ds72yY=}+Z%G3|4|b+g90b%@#>=F zC{SdHKQSl6-Nri(JtSiiB7{TX+>Y|b{|>M@r%7DN2J_`JM zzkm_*NfemS-BPqOrV9kf;X*n{Z5?;fe`C?dS4me-&zW#lzn zKzh*`M!&Y9O;6;NIk1#oVGL+9njC5{pZU2nn6xEXthSa-M{O+(r=+)s(^+HqW#)*9 zm|$+IQ@HAvLN=y3KWdckfyn3kMRVb6_{|^7!VieYqN)XccTb@khRZHqoy)I0Q}f%H z!C}+O(Q*peMP4B=BFneB7ICi6ccFQ%T3xHv%7y{%)z;p)KwJBiU}>W8zQ{~k5A9P9 z(S41n$Z4|nu#Q@s?}{9sW{ZW)ts%2TQd`qb6%4UIU5nURRA?K9E=pq!yN75m?T(BV zKeF}uuk5LRST$cZKKo7#fMv>itJo*%>Y6q!z80yHEri*$3>kJ6Ns+a*AdA^Fz<%m) z$YTuh*_*{Mc2z_&o7pKgC$qIDH{%hG3hd*h(AFy%0UeEB`%E2h|61G7>UXy|wBJ~D zAYv{8_Qvt-&*WU2oa&H#hY@_J4|mmpV$6zBCRqoRdbNX~z<;&8|;v z1{4PXdbD2BCGxt$qx7fP5mL${;1>Ty-g0317}KwI^W zh+u4_ng+IkJ4_O3r7hG+PlvfxiJ<-nwox~~P2aqbzPV0rL?|_#8&g^4QHJ2ti65in zaWi;+T>oJSaFUZzs!^Q{J2+Gd5hDl@?t1uoh+NroT;Z$IOHjaoRMER3YT=u@ID;xfNjo zlfz3BI1y96VT;ck(b);K+D7w2FiN4Ee;#KY>{T44yN(o?9d+EY%M_yF0d*$nqZ?qJ zE4pF*?MI#rg=i4Qnj-rH92$h3C+8XAehrX-Hn6jHIX$*XXC?iVp*@Z!CeNeF-DLZO z?u+D5hE~x)6eAoL8Q+w4pNxhaRix5TV)Fa$v0SEw13kE06a1=p24NiIY)p<+{;>NP zMsn2Aa*J^&hHmSh8r#=`IdKEm;2VMDNyH{xRzwaFtxzdX$WA>i|@X>8JAaA22uD`3-GZOR&`{ zAWwm|c87w{=q6z+sDlrztQ3eE$^`0BKc9T|0T|Ms_1+fp0p_5Fol9JM^s7(w9) za8NVg27Bo_>$`l*-NT7(5UXKVljKidlj5K@(PuGBiJztkp zOwwMmRb!1}c8W2IRCM6yM{`3?IyN`tbA+c?txnFQs9hAre5)5=*5F}CIt`rCmVTy) z_+7Ob=&`%RXFvF13g^2c$lNrzYPTH=T>WKFC^|hn)xjKut&WVt^?vwNMH!ZR?;ID1 zKcUD#{ZL>+a=2a=C|XAFxql=>Wfz=0<5T3&iu$Udh;5Z8pHN#I~_fz2MT#`@=XQO`dlJo{<}{Imt@aifrx(1NO8O zo>1BW5?B0wd2~?A@CJB3N3aqGTV0Q$OOg1MEFOpE8^}(uKNx2A!0{8jVoMnhA3(Iv zvc8)dBkLqtVAMj5sKy8i$xg45WVTZoWA=SMyR^nD`*FV0^3vfAr$|$ug9Gbqjft8O z)_9r<)=szfT;`d_0UJPHYavo$8p(zPQJ$t)6qPza%rTc0)lV}$T^J>Yf=apRAG9;* zt{euoNm^m?^c@NkKODdg-;_L?;g|16fL}I^5i-%n$m-Okh7XdtAAgOt;Vrw49SgR6 zGTSN3X@*oSdnp4m-f0C5I*d2(qA|%ck5P9Y``s@`K3c)lQTHeDN>}}00I&33DD|ff z#W@14`}vT ze!ySe9@+df)TyQ`veTYKVZ^@JFRSJd{Jb^mi$~(G7iGIeU5E4JmndA;p3N;pB_chU z0d2!YB~Z$KQzAdud+_jvJjHd8({O=oy5Il4Lu?#QmdVUsOTn@p*la^x_JLX*{uCDw z9a#}Z?vyeLE|MLF-JEHpA+o2$z4*26$?V~MO~uzcXz1tLL+=@YNp?;^vA`H4L#Q>@k$P4ml)<5 zA~HoIu0`af|8{Yo==XpUn&zdoSw(az1ngN)A1*qbzD~5=ZIQj=rOou|W=}H5A4l!$ z@xn(Sa5>{~Qh>dcD>Bms-mpjq{e^RrgVc3CatoA-QyGzyw6&EYWb&peOU!#qlIJTC z)5^*T=F>5Y0+OehGmFf7C;7_`G-!yHrt1^8#VaSpXBH7Mx3VO$I74@L#w*b-+!G$f zVf!)iMBwx}j1#kYPJntbCEHz9?ARB>jT#G+xeai5k8($q5=hw{=CtD~z5sXr!cv z2NhW()e$V)SKq`)akP`PV$fPFhD6MUG624r;7>ckR|IPlQn+545avh2adHTe!``(# zp_3wI=RL%EM5IxATs1`aK~4*tBMC=6P9y`*dt$d#Vh=X#_A_O`;oY1Zw+GnlJXARW zTiF_Y-n^^Y{blzSEz9=D?=6boI|*Jy`u+d1BX4Qn(9n`! zf<3Wvf~I9&Sd2_+`Rh>`XXLT!nqXASgA!BBmZ_B3)=ZINZG-Jer)d+#7d4L~lbq4H z=$ap2^onnxpy)a4&9!p$8`P(*T39k~dW3Rk%~y+WtkPATzmf%5Iwv=x8Kv`#$Y7uuj+Z=;7Q-gInBY)@2txDW5t zMX-ndL`&G?&sj7Mr&B)h;I&eW!;~_}RVN=JxK)WiXRo%QYN|i6BqP=8?uuVjas*Jr z@w5j^0K0~Eh~k?-_61+J6hiitasam3)azRAG zv~%=-^w^$XL8 zUH^!Du1ZX%kk7Rx!7^=0H>M8ShAzLkCDn?|Rd*AY<|R=}lwM!@#g9duN5(AGUbahH zHCu+6wo5Am=6}h>ndv&-MtM~BZfd?OqxX);h)j##JJJ;y2b&o=yfB=V_`sRJymcR? zk|!9k^=ruKij1&RI3LfyM<&;v$)Bbxb>_=o_Gc|2QYSFEfSXGJI-+D7_}2+<32;y2 zD$yI2B|x9jd>&z*p|fDKW(A*GRd?)3DF^h)In1uQI~t9x%z;zocwFWs@r(e26W}S=yp+L}`7QWSwb^ z+hNB@+aKW*+@7nY4BTcZM$lHuvQ~QNpN*nL2Nr~|j-<#^wXe6O$6-8NR#9;%P+FZ7 zAd@`rtF{uas3{!XVE|fqR5r&FF23j!*ov~zWhc7AmxRo0F%BS9{jjxj;m}R&3MEE= z^cVb@Ah${TgMuTUTdA$}WR!J_mwsfG*k8X@fyFkaU2F43PTWq+175v^eZXm=>~3p_ zI@_6SWzH@l_C_CyTF-vaj?KUiG`57t_iubkm)J?In3f&_+bkyJamGFhKXWqm3MtG)aLKE#>{xC~RqvDT;h_>H?{ zecl45-4pq##QsIIF3tK3m>ogP#xA`K)+a&Yf;GCS2!f!p(_!B(IgGXVH#f}B68wK^ z1O&O-q|IfzxQ;apydyw_1H*VS>a8e_hRhy)gKXLaV@)NC4D%kKJQbc`(+lX|*yhp( zLMPrw-T_hDo6Q$wHE50EgCMO^>%_eMzQT>-qQ+NE$Q?8thUi#gX^kSqHOgMo8pXF} z+2d*_&>9c2RG>uh&xhGwlm`**7W>T>u{JNFrGi_*2*Sc2`hF_aTe$$`nEl~F+LJTq zCO!O}k6p4+d!Mwc^uEJs;#Is;I&fPpR|1;YR$6L_e_3@x>41G%_ARihB(;^6`lw>| z4Wm{i?Kh54$rVD&=p)}n-Rg7IW_7NYrV0{+ZI=kVwjS4oIwD z2^wWnixgLLRy~=~6tmwsOZ$=WshBQ*pV+Hgj9B}wqzC`T3P%rD4z5EcQB!Xgn2W7n z&4mM1D!f1iJ-9^P+72c3X#I(zdPGd0zZi+x;(Nl{m?5T_7KmMI%p|FJl~7WeF6;b@ z#8U4*5fia(hXgElrXG~y9aOy}1-g%|7ws-Uegl7-OJo8m_EuHwE>-Lg79e|b8m^iw4P5798PqjZ=HYqi-U3(H zE4d!}3%QV=$$ESI&_^i-EPN`&ry2m_!QI71dGseGZ}6z_rhFl z#7z7{R~9e}u4GpqeEx60A(CSOyLi56v2Z|Bn8EaS?@uo_XMN#iMq7(k`LuCw=ZfAa zu0ca)D;nqJleMOA(&a$nO1yBaH8LRfw6(3ho)VANIFS*I9w?3s=A|AjDGu)opo3^` zAE19&p{@61##*{#`v>1W#(0S7k1NliZK1?a!-yTsssF7WJ2*tUU(9`Uvpr~TGA4Ez z%MY-@G-&tZE|<5h`*z_hLD&4Pakq%WT{2yO9<6RKpU9R%Vr^|#d9l_spIh2llMy|* zI6OFdaE{hg%`4oO)?@|~HJK#Sdp#F;wZ^HEGJ3EW?_sI7=mo{${pi`RCZT5}DN4NI ziImf#x4!Oa**^#e28DFJjW;)SWy^;%TVuO5zq>0KJLs+7gtGqP0yOZ2F7EY|dLyI! z@th-@s#-0eEbab31USs1=v+_0Ij3;LvQv5qCbR7}GfctKePw+2DCTK`Jpoq7gSNvb7&jGB(J`rTm zNI!&C!sqJ5B^jx<-bVE?Ba+lRGoIv|*@h@w+^f_XM*s48{0o5yenNc z0f_PQG9Xv^=Obf5LcCc-IVHL{2yB7(nRyj{zcX&)otkU)gqq`kr?LG{s>OPIgfxR( zU+n+F)6M-)(IpvYM!;=)Cg-CIn&H>DurqY;Q0Md5fiok6^ymd=g*93`gk3HhPa&zc zrl;a*KtdKseHV(|HfuQ}Mn&EIDuJPs`J7 z{V8}l?yzrlhdtdf;7MD1VIRaWU?=G~OCBC%m_lZ^zXTI*RNI|2%>1UvYq0~TM}|^C zghEJmRXe%lxh(z6y&Tcg0OdfMNA)!^pytkuf9FYCJ6Nz}wF0k6a~^vwQX#jQPBw3N zikf5x8vEXUSNYSChNa>8I01HVBq{YWgT0OFg(o}#=K&5sN~XbJt)hR@*Q#W&wxuFk zp8L7TIlK;H{p8-vqDy}dk3ME5`Y4E>m=vJhw{Ytp(U&uF>ZFN}eH^(0g}F?$ zv-t@2OE*dn)wY4|Gn3==SWD*7wH~kF`L9>q9R%#xrUz<9c-(4d zyvh0Gs&;#kp)?fRe@%Ea3xkoCRWd}alGuT3BJc2Lono-8llf#{9w`X0OYIz($Wo&0%^z6n^pa&4-g2gvMTpVVd&#vt3lmQ94cIr{2aBWEN)-CJ(kr zz8?FqC|toy?iF75iI5ITki85JJ6Gb}XAkDrA zgxz1h?9q5%0{=B)<}jP2&WvP4vZ4phi2RN}T2mSCQ*CMZjXtgLZKk&3J?Xq+MJNy{ zc|d)*dwgH{>G@*IbTZxb_7PJ*Lr_xBPbjIH4a8nG0O(ac(aF6j7WU~{lPLq=neqP| zURxjJ=k?c;eixyZ&A@H6^z=v;{#(NnoDl$!L6alOPY(}Mxn#uH=-#DK_@NT8hn=|D zY`vFQ-D0@)4`&Z8O_1$A!qj=}yzVnSSu7cOcxTbSm!tZo`KjYWVy9Ry< ze*ezzQGWl$?>N5o@Y}~Pi!yHKCw1Jz?>2rX@H=9Q{p|7oq7iWDb@8wd2Sm@2z~1bUr%fnJ3y=u%zf*3R>BhvYU|rT5f+HU7b@$x`vRevAcFDvLV4Xn z+eco4q79#fW0z>T7k?{(!wK)SgMW2y@(M|texrBFk{TF6<{uk;<$4o>Y;@Yby40%- ztKlWJMBY1^@Pwa$i55FK=ao&3EsKX3@ys$#a_fDCO8o|QW*^~ud@~-@q!hc5K?4dI zWLMuU)t@f~*!iUqo11CgUb_?tQ`x$Ew9}ANR9mtK6qD`LtJ*@5*%XIH{Cd?S{&>@6aM-3hFkZ$L#&$1uI>8{czV6m@c95a<4KEMlRS(#0buaJM3{GeN z$Drw7pW2T9Mzdi1yaLQXI}HZ504-XX86N^@6$lx9aV7&ZUOw(_==<)LWSbTIk;q8k z3)GUGSa}82*Rdr-Di~#(ku!A1N7+UFjV|B-31&!3> z=i%>V9<~^b_+k7sK_Ugp8!p^|CCIFMbaOAUokSl5=Ix0_=~HW1&PSAL&7f4Q`eTPO zBO@`Bkt8UGV7c~kN99Qb@W5akM=x-okbidw_pYdUhNLmKiKv4+mo@4^il|)yJ4uut z7{*Hr7mLuvFjokZLWx=Az+B@5T_WzO9Gn+2D!#uzeAZE;C;Z2dbZ$rZj8N@JFeaX@ zmYv9KH5 zAnr&u_i^rFGkujy5UyConIGF;+g0A98uAG*j+h@OdfSp*;_46&5Y+-Bexq0T?O!OJ z?DG-V0S7U|&i^%sWAHWp+#ly1!<-s@mE5F;eSeF3Hfp<#Ge*ziAvOAJm1J0^lZj}r zD|q7sYRZ$3@mq7_pA*s5T@?Nbnfl|wmrmY1T}mwL3k`LFDsD?^bdP*U4Le8GxW%sV zx0|KL4Jym9)$)aA5*li>QzO~FXMem?WqVDa?%!qJi{rO~BvfEH2_DC?`gD%2KWV&y z2X;>D+#7^R>61uEhcTj=`Zy>kp26i4sB2e1pKo^3Cy@vUg!~w?J@5|P!byD#D zkhv&VF_L!x+~RMp=_$D}4dzr0N)~m%kB(RJ0`HBRgtb~l#Z)fwJlPVD$9do!P@~5n z5>e?AFWN{L(U2fDI5us{=b+y$-{C|FSO`;kQLZ`LLlEWJ9=LvY6q;^#OIi0_-T> z?dB|`<@=^2J$O)HB;mf&zL`er8}xsBxWW{+4IJzXy%;KQ!a6E`k2jtvX-+5bBWRJa zWBlYw!ofzo#E27R{Y-;EZ|bfzoR z&HJBs#=K6D;{Y;fUCj~C!jc*A-OM_ti_=6O^ecFEu*xfJ`QO9|ryYKz8w$|+*!l=A zoGoyWLt0{%Xp!JTA7>;t1yh@X+k1kk)&cxo2*y#`+S$SzZi7!+2=W&W>3}EyncIbB z+VX~n>dxFAeM9pP*}*w>iAR(Nx1+7s0`s5?c}(Vvm3hZ0cfmiBmN`*Tf@XU~hvzup zNdiQET0CI3wyIXb$L-EOb93}{4Q_V-@cg=eJu7)r|NaQLoE;S3oDiC5`|XIFBc6bU zC1$fWkpKJ%ar=;`@)8KJV4WI{U8{j{hBs8#zV zN0XS-gTW%l&oo@pof<2o0ii9COP_|t@4S#3HIAr}tq?m|Bknfh-%)oAhqH;0 zNOfNliRF}?NZk!c6x$&2MOr^_dWZ(nS8zC0mc%wbJVCVWPu3no@!N_`~%ed;FtWdL}7+TlMczjDxy zP*utLL*_v>KPh@{)Q&Xpxgh8^)|PMmfw32n;=&L?*hR|uDrt06i=%(Lb{4qv=0e|; zJu3~5UV4^xpD=&y5Sh&KB3VgbU!3PjD21YG^Ie(Yg3v@OlvtEI(+qzOnCn&Q1eN_E zSfk}9x+43C#VYy$P_=k3{k3%s%}4?aTddkSvK|Cj1^PLNViMP7Z7wFXM||1-)W(^n z=X1gMAb}RW?5z543b+)A#%hs}k-(dR9$F{uTqrBW7ep<~mYQEph@HOMqsHvhyb!Qw z=Omhkj0*7-YfDAd@jY~pUkmfvLCKyo(9Jp%e=QL^UPelIo55InZm8^~`o{(4^3`c$V79-n zSAF|OjX3XT!A{wvI9?dX7y3oTDUr40{C86*Vi*E0xO~g%`J+grXW>d3-9&j=Y|S_* zVrj_{pGP4gdqpAm?;-FU{0zIn*~AWLYdNh1bFE)Y6cPNad~Ge;*QT(~`YtaJ_eBr* zmQ9R)=v#J5^gyMShyt3?4=b16tC}r!JFuX377}Z-UXE_@CCm0zd0e@y@y|hrF|^`q zHt4lNs?hG}LEo}rQfOB6U}f@0JZiIEk!&8Akw1ujSW*8-=jCt{#(waHI2(ecr2C!nX>>-?r z8k=L}Cf=ldeiT&meajIOudrcEJ=Gcpo9Rq8ND|TouNw9Hp7K;LgrnZ(6@@}Q-Rjl0U!$^scFvRPB(ulM`?ee z+HDmP2!VFyDlbfuJDtfI&X*}WgiL6hFX2k&(mkcl+BsuBxp}kIdgVNZGd_1dF~T`cF3Ekq0h)65aSi@Hr|$nv!toCu&uA_>LEp3;0$X;D82;`BiIYCI}W zUt6tPn=*AJKL&*FhF_D6JYe4v?{+gDz^KyG_| zcVwUeEn1!%r|ht9M4HLu-yon=Y|br8ZIQjNr0LaV(~a5>an_wRfPN-m5aoxm^Lup) z$+HWwRpd{y%Nb4n*t-QyuQm|Wl6j;hZ zHdG6D$$U9BYm!gStc@EXvr_sv3APX>mTU{VuC@7*cl!7ozIk)uYsHr3qmqX%4c0Ma zAc`6&31QT8P+Rb7S-lT-<+_l})N%?|@AM3w?$DZk%oE$!lg|n)Cce?a#lLcedXi9V zK>I@Lpp}wCqGnbWl&+8zcTM2&gy^)=vxFoY2`A>I+axfNvXP%e>tc^~k?fGck$gVL zBmQJJkA``9fuIsm9aK9N{`-OZ5L*#{3S{N(J|n|rR@KM=FZ8cejiRRMy(^@+jL6io z%DiRncx7H}f40P`+h(P%M>l8!sxAa*9TXlTueyDr*3ja#=G)(a!cJtR&V~q#udtg@ zPmN+ow1B=F<^;h6GZ>=UiV?2F%+c1I@u-g_vKIb%giC*_`I-z=%d(z)fc~+O7Le{v z?j>C@>13%bQk0855u%gDRtRPK_0LgbY{NPl?pkL1+1z5S{))sr*=FUVB*xX;Yt3Dq z>5ATqmrf6mHpCvm3!C5sivYE1oQXFqS&D-a;MdYNyBl#BaZIj)$%`| z*>@QWwofTCadYA8MCcayBtp0MKbZ6>&l>T7W?nf7AUZ#P1Y)8;glY*48F-BiyJPuA zlCmPRUYH@w%VBQQHwpFgS}1;fwxI=Djrh`U zP|5}!E;hWYz@LmnwY+#&?ax_{Tr>h5-N>W7*+=oG-YpOtNKwj|eCho%$4s`bq%LOMk)dP1xbjhHbikLMadv(F-qb&ayuXark>YMl*he5-L)JY zP9CMa`UzoF;+#UDU;HHt@);j=JwLE@J)t*V5+2EJNvNWS1x2yH%bHavQ3Wq!9XQ9; z@4kpCWc+$p&!Zs0_%)_({>Df|Iz_9apPwp?O|?V!n;q7o(?k)p!xQ^3tNu@Bm5QNq z+?_e1^tnSD5$H_1&C6aQL%td4G_P3^&yb}jM=elBsaZ9NNOR{z-*C&B9z454^Y8SR zKDvvCWg{-QVnKN5W1fgNap#~OIV{V%U-MdqD;bHs;g+upoBgDe*9Uge3_A?xxmr=y zJ=lh5{4W|7Rd+@%FPqe@uYk8-vELS(S*y9j67;Y^c=&~nIFMcAQjO}lkEW?R>4mno zYQakVcDePJUK@^_YX-K#7RsGQJED^UH>WhNrjC_B|{6$DUe2dtlXW$cck>{=%&BB$DjurHGY^;`>)e}}7 z!~Iy+JKW-Z%m;ZjU;=kPZ@0bYB?@4Sb7D)kcB+Y44@$+~$!EMntPT*;x9CVH{;0fxUxN=dwbS4s()!cX9`GOR3i)R4 z)%=kkixa~f1zp>$OKA&dl_jQ+{oo za}s;k@@EAd^&5>`^?xjO>i;};{@1raOdSf8{i#@xQH zhs?JK`D^ZrFYSsieK@}K>CV7PIjqE&u8J>xHommQxAK{&Oj>+tcYNtX@ui&cmaY!P zBUb4W6l%{N3-VgJODx6C)A#v2!aEC343;jgiJS`YTYyb-Fplmk=Msqk91nC`-m&js z6Za=0{)`++uqG1C?b$uT1;C-PO#*0*yV#^zGV=pd_N;eBX;0)4LD-X6S%B#W224_a z{FX-y6ae!3@g-)@310y(BOj1K(khZU+o;`&Xe0}tiwGo#(hi16s(t&_4_Q`PlNbiD z9$KyJLQaMab6oMjZwTRHX4@zGBcsS{c$1bBMTQnU5sKfkJ1J%*Mk4TpusDSBqU=CI zZ?N88l*M3M^n14%cp@Hn0<1QDWguFf5zelQHB5Ci5R?q0z0JzZ8N{(bYdXaAR13RS zy?y*-IV@;RmU??P5eOrXAt#EQRbBez8k&HjqM5DaxmkKg)hVF0ZB|z!qSJWbF*_Ku z*7!Ji^=Jd^GOr%HPgWbJ@IORwg1RT-WvA0|#G0j4+VFNM1>F7KhuEOK8ks1pwbLXS z*0YI6$cVE~8YY}6N%ymBvQ^{$lM^QPpW^s$n{_a{2StNfCGo&IWnJ1Lfv?;|(+{qew>$S_fYLksw_M)|U@su<`IeM-h}5h|w}g)S3|py4t%xO496sPwR> zi3NORuEQ_rbP237=eg#nRBPGh`ga2C*aS~}S)e>o>oueiSm;)p-5BY%Xo)-cAOdv& zZEw&lFN8PY?T4RgGl!mpCT?@ehneQ8R1CFNt?5HXKqezs6;WTfSO!m9yU}0vzAk(Z znyC4^sPJ44DLsaHg|}>%Zf>2K@LZw=s#nIVSN8hbM$Xq7ZC}$Uvu_KbV*~Yz=i1Rr zZotpkq@h9tf9oM?3Yq`)7#G8QW~F-ifvgt8jI0isODzXH#{W*Z`GIaBHXz%(Wda5l zysJzs*c#M?T=`Iza;!Q+R}2tYkfe%@5@tS3({0vDPD~=Kpa7L&T{j#2@@EB49EO%@ zcY-Hgq7S&i0t1c6kO4vD&VN=rvz@344af1q&> z>jd8k+q3{M7Y}@-ZK#+kUKj!pWPh<mSjYPNi>n&1TJQikw_sdjBUa+YuawLlQA2 z3}Bhxl;%tPr;Nyz5H&SIHeN3Hs5CQt5zaI?+w6$EmxMv6z=OHD{dzgoD$t=v)wNrz z-J3#*DlfqXw|K4Ri4^HT6o_JcM$eBC*V>EUhKoSiu4Rx<5VPZF{d9~RvukdsTa7wU zI18N|34qvQ8@<{_A_;u6uJuL_EQ(AjT{JXu4#bUKc2QCI0&uS49u}zcSeY>gfvdwh zd@q?3J@6Ckib`v8!z0jd4V1Olf6H&)@|T`_86>dAxgAYW`kfK4UZrf7tIlP8Rf%Q7 zNSSIvci=fsu6LItiyf!%RTFgc=@k~)NQTO<^LfO8&rhh&P(P3P%~oa$R|Cy=k-;2}wLEw6>0#(Q&@^{z@CSS3M<8u%iqXZF3@)*O}83O8=G z+IeroNNKg(x!ZPy+Xc-wTJ;H67(?~A-EjR-)dV0&O+5?o_H=@UdfaZhBuIWiRyx!^ zr=Gpq6`MK(s|5EEtT3>jKh<8j<3NwmwBO|DU%eNEARuT}U7Dfr)_-uQN@fSl-Truh zr39SO_g#j$^f3o+1l=}0M=!*M`h7jz5QyTgb6J>8y^E)*IHcjJi5Uc0!BqizU4+2` zfju{pgw^gDB9B8qW2zfbKGcr59m!S&d+~ zb!0#O?ajDOXXa5+&lh_h0>?@j5i1_(62FO4{S&LZ0%fmI3zjjR(bVX^t6LDcFUK#|PNL5~CltGg(iQw&$xPB1Oo&-ZIwF7ZR5RBh&gurnO>|2-gB2enIqF<2Q#1 z>|LHK4okb>8=fhlgSM#kW`jRVAny4J+Tq%h74!9sD%uCaDBDuM+x{*Mwh=`wCOkvG zWW=74t;VG_{wIHdz8TYLWO+sef4+klt#4n;*7R>#4Al)7UX^D?P%0hWDlhBh>qVJNNdZp6xBrzARHg?H4fpXv!>E1iw9cFYaWt#n~SIH@Pn^u*ju{!9=dIHWfxCfdb{6zL-{$_pc95= zuf0PVwaSS{>HT67tlj^%)NET5LpZVPgrwHDYQ!-x1v-TjJ$ZzA|Dc|lEU&Hxf(VsNSD7HkJ=R^ z0Jk@8mXk*S#>}f>i1FtIb6U^-*6pf`EzNUirF_~+{{;%fclR9Oc?Lo$!vSIJ!YTo_)It%+o-@rMwX zh&e&%1$G&9kgd0Ff^-ow_)(<^D%u9t)LUrCH`KEtmK0VHg)!5MBF^!gjnee7zqB|k zVLW+Lw!Qw(eZxp>6B=a`j0+1WEl6o)+n4^%p0^*$GzyU%y@!F$8<4n65+hNgqn8L# z5*hgMMEQuha;h|Q>A?4c5Lq?dyzp)n{P`8b zyjaz-W~1~0WbQCn11FOU(&NVmXBZJPtWULj6_E~{|5xISws>(Cm%Lqe3~oQAZ%HD=$A z*c%zK%{5MYhWE9n=Vp>BTy(6?_dC4lYstz>yI|znBLD|SMqnC6L=^)7GfF`^1n`h? z2Ir`;<=j(X?YuD)!G@40oaWiGvY^6M!!OPBT0c5Ywqqf^+M6W+xKK@BUzq7q*bArS zY+Y#tc8J$ObGU9kDAcctR6Up#x&cOYQgh^mAfE(H9tJO+I$xCd;!DLR(+I`Ejz6Fm0><7q^;KLf5{N? z$6q+r++vuQ?Vi|WHa$XZsZ9WuPY^#_I(&p;N)S$6ksSDCGZ*T?dj1yl?Nx5}@>GlX zus?w{e^#2bJ57&2tf*2&+U4tIRYl82at<-$YC$28c=;@|n z>SI`#AnQNJ613ROvmE^uTx<=WuK>ZizfLIa>PB-Hg(`|#N|Uz9R4u1Kn}YsE2nza| z#^mULd7l7=3QeKMS~IQZR0;i1FpcNrENN%494sSe_7{A3YYQpd>93LnBxP6|2Mp_- zl;k9s(qitSVbUSKiD8VWQjKN1QKc{mL3?&jdaCK}OuB^j4x1&aviUz};D#hD!p)-rV^J{f)| zXQgVk7fGWw@;>&Rwfq?(rz;kvD?B_HTd&r2*n_%bmSUuk@o5Mva?&?MJb~5piB(lX zjAYU0v8!F9s?BOdFAY63hlj%w6<>h2{F;Rt{zB09G^0DNW=^of&&c|;Poz+mmsww% zAztgjO=x_#bph@QL+5{qqOI#eS4>MS0ZwM(5KQTX^x^o<=6fhWa?ZPs z)jd;~k~7T9TI9`dr@04|CD9_Vf&bMbAfl_Y*uO=|4n1&a0Mu|qv8~uhpij-# zT_UP;-caJavv*nO3X~TH2qgSgnx7Ve&a4)02pW>f(MD&Ba2Byu43w0+Bl}L}VY;rZ z&vAFH+f*^;7yEkL+glHM%(hl*g1h^swy_ht42&2P=WblnJlS=TnKxC`br%fKM+}-3 zCDlq{7n5;6`#SP5jx<9v{OAae#cU@cTDW1jyA`w+O{a?_ZB?<{ zlx?;(&s$L2^@-Z&TkJi^=XO#6ln|#hH00XxMv@BdgY&z|Xno5qmRGwo6GL;Q{#HHO zQXE)G?D;lfqhfR9zzTU z${g48P9~&=3Gw~6O-LPq`MQi|fofEKV2rf|702G?+S`CT+~6rKL4>>yv@~`{u8dBr z%A(!jd}Jo?8QPhxb=p~7cb89T;o7QwqorL`dro<71l|wMYQ6hR{tkO{%Lvz<$CG$c zt5McfpWBc(Fz;Q@iqcW)uc*Ht1!R5j1F&Lhh-GnN*yx%ZW$%6|8m4zpS@5! zD+?9v4xc|Q6+j)rszPog#$pR%({A!ek1oMP=(^PaBdjU3H(%lVMe>V^#iV<~7_;mB)T!NMt zh;c*;p;2U5XJxJoqNv|r)tjX-BstM&?a7Y4o>A6%*GN27)619rvaGgPJ#T%K;*fr$ zSyB9>j9fCEKvj=rglBW+7g;!F+HVkl`*KUPQ5YcLQot=J}lfLeg(yRP3y?rI52ku{V#YOjVCyUNu zYiQ#3P-1-Oo4Gt}>htfy1~iym*fRvH6#QOA@>I9l*`f3D#Xr|^vNL1Co7_oBubw1E zG+osbyN{WFFl)0#(u%+DBeK7Q*YNL4_K96o>6I!os8X^dP!%~k3ogQ0+5hk;90T5} z(M?qrIa-rAjSQJXMDrpmK)m++U}u{kAFSOfqva!9kzU-D@H|~NW$%k*2lu^vLQ8VC z5}bWc0536q$V2$ffuuRjmao#8)MmUp97ne@=v97+=eWpFy2L;=`_*XKya?j6D#J+J=Y!3n*iO0Dj?+YVWLsY0|HTz6ao3-0 zn5zYc2@hwC0b~0J_%l*({5L}sP_SgL0wEioK6+5hwtV~=X_t}}kFepX8+h6g87`0T?M$4brNY}sqCeQ zraMVDnRJ-Kq92%YYpceR2El5=a}_BwNlDp$S0+Ud;UULLZq%ChWSh^$UOy>%;3UW{ zU+>1K_CRan_V94?x#;U9(E|lx4*{KnAp|i#%Fp^B7ag=cV&7W~9PA^CK+t5T9zE0m zX=5$`Q%^BWLt20kLkr~C!}M6=-|R!YA*^sAGY|a*GBft<;(pDv|55+dM-&QRK zVoFCGYrl;h7!(l_Mjf+;t^Y9zP0s)a10t;}5*;7&WgV@0em)F(NB9clPqF;*fs7(~ zIv%AOyct3!76E8beb*N80q;;x?H6IuMd)>~mnO1)bvHvD$4EaAuNfM^KWi{vV^qiI z`2IdzyRL@9OLdPnOZP|)2jBMl+rC_xLKajcCS{uMB|M_6fx5w7_eQbztlb|>Tv23o z{;V%ojUT31YeZ35|LmN0v%5J&|A5&tmFD*aK0V+D>;XMs_B4%f}z2_P>d8gawLv<}_kkomsh#>VxJM%nL{Rv3vzXu#3VvBF8t zsz9xiEg)NI6ocgBgRtbFH`QY1kQ3hl{D=7w_sUMYXB80ndVk=6Mpwh5VRNG#|%V8wki z7I=Y&fadSi{LfqODm4JH*wPvw5+G!GGbBl*Lzl?#5F6q({B=L^HQ6)l{Q`SNQsnIl zmc0O-0gnPk`&R3&;gZ?^S^=LqS&Naj$Gy^%!)O>~zpcmXFNG*bgWWWiof2DR%*lzI^3D%Le$gqh*XM{}6n28sza!V}Kl^Ne z#lW?hsSJBP$-{_PhHArhNdMfPFVcqowFXfv;*}C{Es7mm{U~t+RAM!~f@n{;3NhRZ zDZiuY?&wzeY|~?o61P9f3e%cgsE|M}dtF-72V(GKRw2hiH)0$6#IjS>NhH<+pdqu{ zfxdd_J^5PGuSv+Bg8M35-PZqJ)__mcAY>tlEE~NEYxa4fS$zL~hE)1=hNBN{+lSLL zRM=L?N9&bGWO1hxMt&!A9^c@VwybQp#b4S`v`iPkFoNd3YIC1q-d1p-89L7^rH-~9 zfBD1IMe%wbu^|g*$!$K9uH1MOl+7!uNBco7@+x4%D3MHA*1j5P8}b?3Fwt6ZrC3}& zxtQjNZ~2Q3<5%4UB+T`R#BywGVutu5o0*%M&4?&XnsKW2IQh5DREDX?_eD~>soI45 z)f;)nNZgM`pUYbQgdl(?F@c1pWQgR@039cJD|t}fhA6t5M})6g^+-*Y7mUZ|oIJ z!HEskPBZWLRLy)vf?VbGm#GZ(ze%T|$4nFYXp|;^+);Hq;c03B0_Vd#^MLC$xI+J_39B`MK`pN(iOe|`ztY7k$znjn>LhBwwo+> z14N^pez7V7w=1X1O={SpWx`Z(JeZxpLu&NL?@2Agw#pYW;lXS+X~j(z*>>9>f6m9) zwEyIRq^!8``A+%ys(hFUQ>^7#k0ZnbiOun)?>Z!|>s}uwP<4qM2IOm)qaZw1b99Q94-rQ>i5VFjLX2sm19G>f)KL1%j!hf6Hx2oN z>un&0vAB$v3jQX`O={R(_ogAUQ0@dW-73kj7vvep$3fhcym1`F{qbGNkE$~by(5zp zv39Rf_OiC>d>K|D8?I*isx~ny>bASeHoZ&ru$^WarHzG;&{M7H>uQN2i3gcL6hzA> z(xv6UrqLH@=EAiJ2!_H^TFgvxF~gNmjuJa|@bX92|NwjCFV3e)Emt>!-|P z3dBFB=Zx~R!o$k14$C=AQY=XZXhdRs_j)UZk%Dr*UR~Q2az7Womh5S>eA;0{b6 zhzst~XvCs|Fax1%gOdoi*HPSBZEdCfwSBSL)@o(bY640ER2F@!SgK;(ZaP)5YS=3C z|32s5$%1ID?f=*J|M|auBy;b%XMN5&&w0+X4v-(=3^c)QfHUw1#TgjrWV%CTlDk{F z0OFJEV4@~nJw#d7KH>=3Y1#(kDE_*MEAfY7n zvP}A)sJ~nYd#!$|OswUEPn8`6Taaulmrsh>DB-`WjUwn0td9=t-Kv|lG(}ml8KK2X zJ6hbT`T)vZC=aQejdjvF7gOKL3wYV-=1`}QR)0Q~r1E~IQh}8Nmg?5ws$UFi2wz$y z7Kj3+`+1G%Q?=$C*7uvC_bXxxMrU{`6N?G{Gd?l!JbTn2+qM#qH`Quu;PM>dtJLsjSgIJY4IP=pNe z^59=(Gm|A}v_Qa_j^B`|&ZBC1NaZ{-mrrUAFOerXsm@VZa=JT(wEB}3aF&tU3ZK)- zbCkU0q~EetiB5p~gh3J#PL6&i9lwh;`*3N3M)a$8;{)kypjN*QEo#=M5E?CZ76T-} zo|J)T?H{u47a9R>JKpdpxy3&ET{1YS>hPB^J=cC0+TJN7yn>>T`9nonn7udXDODFt zU^vds+QNwztLswxQJMnScqAB{oB#t(O~tvryH3RjeXU^0^lU6Y%b5))^V=V%XXCq_ zW<#-2CAOBr`#7s|_!Ix(=vx23Ki>Z#0OVNr$wVvJdfI8#$BKd61F@*K>PDDt55B;9 z^lPjBfUdH=_WI9L^}FzW%sL|Aa~;8?kU-$eq)~E+i=-Rw6?CB_1^=vrTIo-|vfS?E zwgXpFVXG8wWXQ6)tm|##hUZ3e>;mw#5Cf00R+YuDGNc~$Z4p%MR)^?Ae8KSQq-?EW zkvx_t`+Ke7R$fBR4M1_9iRYLr+-DV#QfnyZb7Bfu=>x5PEYD$>5s93$ju#r`>~*U- z71Lbs6Wk+A3H3|rm5{#^H~dv~=E1v?bIy_c^9+Bp-q8ZUrdD~2O)TtAWYed|0Oc`> z?BkSc&v4E535k9epo{LqE>K zp$3(c>zsLm^~7bVBtEzAE0Lp_4wcI9u+7mwi9}*!FmV~2+g*zRn>N~9&O&+Um;@BG$AG1kBiRnl9Zk*P=*7%Q;&tXak@uGmb3JQ0UOo2f zFGHOqaz6MkalQ27$*AG0%LIOOCiHc(ko}YKOv{txRQeK3h(ukyN+)_8TsHi~-#U5@ z-k{b&fZiMtw?{8ieewYw*2%+NqU?&l>kvH3$A-peRrqm!_e6j5oje@S%$^}EfGzf| z%Mp<$rr)3($fW60gFujvQw$3gAvW;04o&D#)z~>Jf18w*PX%@^;xgi33WatXMa0pQ z)EBKQ7sgsNPshkDwK2YLz{1)9$LezOBp*g%&^LN^}Z($4vv$Je=;exk_j4TJHQ?qCXq$_T%VDrW1&wzrKv7LRtGq%`5AmGNM zj`j$G2_(p9jxPGwTkPjX;jd?(Fd>@bkJDxO&jr=){qr+mbcZ$8{5RkFF9s?5+`6qBCj-=hpC#~vohBk}eb!uoWQTB^$wzY@kBHm<=tR2>*t!}Ap zdMmRwtEo22Y3Lt!mK*}lH8;S})c4v=2Qpnvy+rmsS&e~V#Ok7|eco9J6YNax+$c88 z$}&$%W$&`IzhQOAu^hjmYOVKHKWED%-c6zbu?- z`5v-v+r#&G)Tn2nzI?-2E*rk? zz}(pofiO;1I3E;eNZ9qlq4(SI)4=btKDthutM4Sf0a17=KXizwluLzvikCOOp>C<7 z(ZxmV$!~GT0(Td=2x-WhASA9_yU1nKY%$7mLXx9q-=gk@nNu#$R?hA6gGJ}{#;|Qh zY0j^2?C)7Hne**@&H2^z&U++ zPKn&tL2IRn!Q)KPxNpGHNdyyuWU4@r&&%< zdw*$9k31DDgH1Pd3Mc@)KHinr5pqo752YH0^vZr#3~C*kIk%k~@Y$astC)UufnsTV zrA*i5*A}9}2MzZ(V@Z>rF}o@?i?crBDpUtWiT}*;Y!#8d3VCy$Y|s)k9T0K>I~DE^ zhLRYXW0~X#!bB)0cqW@IlJ7eFtA(Em^N|~$%Y4MyNwq=f4sHlq{Tskl$aC1W$QzXw z1FYT6vvWOGvV$I5l#9-pur$fNcU+P9kk%TO@e;Oy1}>QuC{gb8Jt}bvI$nIiVpZ8^LErM$bBwdGtdoF(>sCExM4)gV$tw+ z`blO%>4V99hz?G6!I+Zl6FS|2UsreFW8KgFWIjZnrgs4fnGJiH_fXCHK*_*Dt>G`c zB(r!8CoawiXKg2Eru2~Dh+TTP0Y5h%ilFm4-FlhTqSXt9Uumtc#Ip@LMJGuUiYYxv zF{O{#tz8|8YV@W{x1!e(shG%!MV{zo(w_}-%3cUOqoXP%Dr#0^XxL8oyrwBxh1prI za$jk?a$kWA@&wcg`%BWR%tRDd)?4h$UKQ^k(H>y1zLMBoZx+uTPMlcT^lGV9%W}^~+74fDP5m>u3_`ScVCD?T-!85$!s%w5(&<3CkbV}th5P``k-I)t(C_F%6ax`boZM8O?( zZMpOb;X~r^$UHn+1cx-~ZH+^t=kwPWIga~Q2LF1>m2B>8{x;3My13CT(lj)3>PlZE zS2CcWB&n^*7x5o6G-8O!L0RSk|6*~g12lv>uEQVb??q}^O^W!Xlu%J z)y!4uN_ped69vOU;)*mzdb1zprSoLt1el4ji}3Veo{(X97YeK98+eE1T5J-PqKT?(=FzZ>nt`_@5k*^mFx zk&~VQekk#t@=~5BGCW~qrt+5Y=*UV%RUVpusY)2M`%0)(xfIBIvb$jo+A1j`W|E`I zs>oiO&uK%Ew4Y%G*4pd$NQh7(I zM$}D%*`d|GDk0}vv;q6;6L?!#8${XFIeU5LQdGs4z>>c!i3g&LQT>s-kmpsT_w z5(d7aKh>k7|NoEZ(Jqty4PI)OFYmIU*iT49z2?2R%eFQtzN2E+0ihjAXCUt$e(VdL z>tHaJbgAI5K7=h|p`uT>13B8F5v;~`9zkgD$3%Kse3Rn=jcJP+4~F*cCvCyhO6}K8 z#f_C_CYxf@ypP!#i~4oVw=Z1Ql6+;}D;=pMLQe^S3Jin~dZ!vsdj?k}|M-oGMJ ziPo@NI$eHnD=)H<*q{rB7DRNz%3E-$FoV6Hk4|y|dl#v_Nkvi`{kQ8=z#huSLICa^Yn>r z_nG{tg=&_6te)whVdnjk=dkHrrG9c&tDn3z>SxeeewGWmG`)B7n98eD34-#vfa)8) zDEJ9UDjF)vT-BQ8Q(!Z!QA!c!hw=deR{_+1?AvLXaAdZ4J`zT5i#?>-PHoICCSTs8 zHwbgEmso2ooEY1GIlExZl~fVX0xiXx0@e<-hT7?I>`}AxgQJ>=NSbO4l=RMz9u-7w zBGnXJmVK`bjs?n3!`V|G4(b1#`(Xb?CEsKu0z*9!DSdHR5VmGlpvo%R$nywW5{5GK}*RPWU-1X6^h<0zT$QK`ssfwc3N#xaX;|2U2syM#5(TOY}2400E7s*$iOL+FX&j!z; zLMQ1{d9HS!r|~?~eXipQ0rT-s4q^~_zK(+UP;zSkFSJ@CKUe=J zX|?s9!|++c`^fxUPy5dG3vZ>!sL=~V|2~oJcNBJ)3uVfcZoTdxwK3Z2!1_$tg8r4+ zO78T3kZvXWtrWA8$CaSV+r&>;3$TJFV@Qy*UQ(?KO6=9xofCt!lhx`t;c@b@v(@TO z`|g2awYn=(8!vxq6BsmdAxHUR7s*Mh)G$xjEVzsFb~|6uM;RcWVD6uq(|jRM^5y69 z#mbrM78;n!`@2e^+pKJan^&`2$+zh6)bwHf&5T$(Z`i}0l~1za@wM+TU{7=iu7vd) zJn<#cUdmkZI6u+u+Uh0G@=$9od4`|%sZljK{9>sEesOeuObi{PZgo_Zv8ZRWs)d4{ zl&TiVgHw@VnX-T#`X`b1L}RYU{`@zBKGni*_UDU+k^5#?F`vpz7_XGSsQqI)HTo9? zK=`hQ4e%elI(94lZfaEkrn7I(#X}q)N@5*@ z7Nzh5MX4P;f-j|+_PKxhYbsfEB%gQ&zLakLT=~ip@QGi`-pzrQT&W~JecQ4Rx8e3XXJsPV_)$ft%~c0W{u7iO4)H}_8~>5QiBww234|o zfXpYi^sV+o0nv(RhZScksqPRZNb9#LiG*4Wg&W zyhyoNml$We+_9xiZBr9Ok21<+>(Mp+Q?zl{H%{DPMLgg*P z7bpq!jhqHM#iPgf-5Rulh1RR>lPqROKl+vUqP=fuj6TTd-0q}dViqA%4Ov&_(sZ4= z*G*>83*)+^GEti$a%bk-dSz%09P?+cM(}q#w_+Yat zrj{m@FS}#JhaIaafYrD4BCJ$<^Zrj$$+KniH3+!Gj~R~Np8q1m7pZL;ZrPkIxh~+J@qncqt%<$NnAW zK`H{%DO?5iWQiW;Hrw~8YZPkE%@<&@FB}s@`b`wMxl=C{$)U8ms!%e61jJ!s*U!f!~JFSOjQwNT;%e?Zu;W!{1y4* z{>Do)k;p9Q7q(RJ0O73pR867OZqW-bN=>fg4uQ(V-?U4;D;kKlghEA& zVT#Q4i$Lhq4CHN5=gYjn7j}3CCS=vsQ&im9Z-(|j52zGK( z-TJ$&L1ow@jdZC^_!H7T!Q%NMq?I$@MeSAU8@be^uJNZ6;Ag~St_32jR~Rx~nGz2C z>`yle?=HG9Vf3`kH-)*b7-u)f%P)IY=3JBlCXa8Q^Nl2`nT^UrD(Bfydd_c>CzE!mLr6eh>_kT1Y>4CYw&iFgFK-z8@b7hsorFYu( zZ(VtAQMl&TY$zPjbr-c))ba3t`bK)-TK)F`8hn1>1-oFw^U_~j{w{e}jG_bRL&{;Q zT$V!oY)xHU=!9{Lmk;}0dW)PWkZ^7y-y>0tcdR_5a_%zH;3}6Vfy6+SCFcWqr%+xh zZx$)VyR41Lek#MkXWUnB@vcM#S`mWeHbkyZ^3elE+VVO?r z)Y6e3o%zje|0wTP)l?yuvhYr^M#S5luNY4Lx-R)s)ic}Q!&cu=>e`NWRsI#SMVu^j zsv|Q=v;$*WaBATZ9Yi?a3fk*;>J!4ltxuJ0-;VBn&2P^iFW=9UL*6`25nPDCGtO`p zPQc7Nj;Elt8Ke6k!VoREp2)ueGsmNn*YmWMvH_HL_4w|60n__5uX=p{Ws9_C?~^?D zq)rMaPjxlCTGJX{sm84JruROwgrJ*D@6UOn?#L-v2PyT=c7B&(0&l4LoH$vGtj#+1 zOVPjZUc-B5z_*X+s~?P-$()~!xQxLu@F|u)JWDT>OF7*@bkelDr|@q%(6_JgZ2o?k zQMTRCCSkgTiq@uxru4r;ex;zbDf%gMlWWv$7A3Xmjn}Dy#7+O|PO(S__>pG_JF7K& z<&otXLZCZDh7jlljzK%OB8kFm^;l<67Igr2f?ZjgW-n^>g2Z7>6*p>qv$VcMkm_3j zr>CL_mvjEWvf|q2iV;HRqh@WG(}|&&eUdNJ@99yIZB-WHfW#}IXg%fxEOAqj!Q7V& zbAGNht|QmD!m_3X-4aHI8g|#}u^gEK<%2 zL}Jpzy=z3UipeY&l)%&B$$lU?48gg&!#f4kC$1)Sb^FJ$6g6GH|A z2*>8-WdxS#$7&5Fym34h%8w}R+zB-OCG&idI)6#s`O#TuZ1f+UJu7>(H+ll;eWS;q zCvB`#sLskrRh3AUpHXOIMSsqcCsjqPoFeVHTSog!7M&kGndq{<#6?-p$;@)^0yzW{ zld@A)GYOOZ^80&VJ>l6q_#%^0v~leD>@-U%vFCmZf8_g;i=+oD4@6HLogFzz^#E}c zJ%Ea(jPyWcV9}nj`Tf0-YBY z8J4w&DpU8`{H4OCq*RtoW%<~7n-#;&ibAtu=*Eh?OryD?noO?viWP*bXIV7=-a{un z`A7Jb&;^NpORU@eL@)G=47?CTdN!*!=~w5aph_Qh{&(!>s$z8cKh{N+=P$xRDqSm} zj~2w{_3%cIRabSkzL5Bdyulk}Z@p-5;HY!wNbu1mfSSYMX#tzIY6^A|I1{KJ8sk+& z4Uh=j9OC&@D|d6hB$Qb37C!UD)g>-aM-PDA{0E0`@~a!OJjqN)HdrmoVwymBrtHl+ zz+CmO@6Fh}Tu-zlwWOY=p>1ahVR&38e+Dq}WU;~t@bf7Obj$)0ieG9y(KrHl5BJy7 z0bj=F?d})q24m*mNTmX0TFVsk`KMP(BOs|c5SIJSM`_Wuca4{~J_(g!SaS;^V_foS z>TiX7LQdRW9#T0~lBU90GW z#cdlad>)IJ4Fj=ncYN3L^NaAb9C+F31=61ij^pJQZ+$9O zBw3^xDsFN-S53wid&M)w-A7% zKZwCkbctEs*nV&HIgY`u-ovH5vfv$4r&C32&uy~7I~IGiC{o03}nIKFna zk2!olw_=us9|5)fwfd*kG&nm#P`>^8xqJoOgM{;k+Lxb*q_Uvzb@m_$$XsDwRunh_ z1*K)O#h!C@8{9{}TKj~TF;Q>xk1U9sUujhp>Z$KMKr2`;2nr3E5&?HS4!6{+ZdDaw zorcC}Nc;6Yg0#YrSgE_^J|dowTI`$7=ZH^f4GRH?yLauKXG05LMFJS(7_DJ5nM-FE zXty`P;yn4ZO~i@YWE$w@ z`F*Bwh5R)8t37ATTA_+;tT-kkiFYf8`)?lX;`5xr%JAikWuZT|yPMP9#d5XZVn6eK zw(~wC4UN;zk<6S?TkLHMSiUm03(_BdIg-&%DJYv#IOo{1dmB}~Tm0I68;8AOUo*$e zJv7J>197Vw95%#-56)AZ9Y=idiac+6TY$|R?_yW|kJ3Z^rWnuRCkfL`Nbcxjhth!P z&Wz@j=;+o#Uu8slZq)NKgl-fQ#mV{3CBSaH9sm;clVC=2uI=j?J zckVc}0JtvgWbB;^D15B&u$1D0Y+YI;(VZ04XumOn4Y(@`lB1K3eHHj&Fh=bq(YE)Lr;5dT!@; zu2?-fzbpEu7c^SE53&7&d-cwEt`y6&#uFD=yS!t zV?!#EK+TL$9zwBQ`3QPkO3Wqtj8~-DbhPYqQJxVm!B9wKyy>s423K$+rRN*yU3MgQ zhDtm5zwp5N>S5mf3_}Jc))IN>QqaAx;Xhk-T3dbh<7AO_^`IPQ@%44?+RFN)GlF|p zvPOxXyDybz{}(!6Rp&lgJhiexpc7gamDLl^Ols3DZ zbz4*4m91y(WCX{R-7<78UMp^wi=TX)=(j(fhpcUb1k^;~y*6%)WQm1`R@rL_+UGo_ z26EGEl=-W6F29PU{eSgbpGQ-HU||e5q#k&`gaQ_|JeDrn%b22#;l*Eau2z2m4@UC~qUP<|)A&mw zXL5tQS=m2SX4nt$(NXo&>b*T=bp=^??DiJ>&=28uIE9VW3xSg1XJD1~E>%H?zAuap z*_q**g8}O^yv)->F60vu1LrWkqmB5V_hmJ5!wY3?gKKPL5tqRFIlZxmsRm`4YxN_2 z(qLTD9YM=wj|zjuso6+8Tq4~!AC?OQ3J|k zNrkmUkQ1C+;hG+>JD|;G{3HcR&eZDnv16@EeW?w&6k(`#)$<*&T#K$0!PW!I3UPA^ zKpm$_e(GTX>?`-srRX4cC7eV*GxqKb9+%RWyx*rA+#^{h9kEpaeK$9@3N|lJB!@J= zL}{T8@9usMCuU@Xv+R)dx-Om!BF1tzdpkcrwg9Itc(_pWZ{Xk83E+}Nbmth|@Wd8m zbbOyGP>Pj#qHFbGuctPMJA{)HLE^9ziu=w3D3Gk(`yo?0?ahNJcVIHBZ}A~se&SDH z<3uLG1{iRLbEC)2*PSE^qR1EHfBjriH9IdkCyd&?h0gg%K-AD=((K;Q- zs4RPa>?B+!2`Nk(;k7-yo6fs49Q=Vy;v2@A)4w$%I_s8eZju}zF*A#WA^Zfg7cs&1 zKr#j(z(=x8$24abpFa1Ro07+-Q}8k>mGUE*!FJW+rv)dD<7nUEaGdA%lA%3GqUznX z@{r1Tba;Abm&%h2twd$X>ERZF!*M4m!r|cKaq45*nZ|F`*2Z&Jz+C-XI)R%Gt$qQE z##M$Pggnb@oM9yHP}>lfma^LQCGRP(&Eh8{Xl-Q|2e8YMeF_UHfNqdH2Cet>roVQ# zY(4%CHZ$+R4!@yaz;v3F^Gc&~Tw20pQL=7A{k)m<;z!fk`K+fv_C;HCu$%~c4jxEZ zcdenyCHn=#&FN9LRU5aJ#vu!qN`KTY7qit^T?#KovARPLma)3eJyA%Oze|MWR7>)0 zqq)h!Pyv}w{0YKC*t_H{!88VUP9tl(R=;@Qm{pDn z^hiO%#P@fP{uLi2M4>+psaQ+<0#7x@MrTs(NlvY-{H)EwJ08v=ixPr-az^sM(wjl@ z5=bMRmm7Q5j;KkCvLKI!h$1d(hJE5opQh>?wfmcrI0e|YY*OEbH}HHbgYGo;=fCFI zzcB1eX>?~~+H!VZsRPM)H|91@KH*M$B9(WCs&s-OOOtN=QfhPP z0)&hPAS#5Ks#2QFPodoKOg^&2`rm&^s;eB`Rm&veMdAlkLyJ@Jj8EW zHcm_S;?lwRYz##?!%vTEvF`AcdcWO)7f7yE=#T~EP#&JC|lYN*hLSf)k zD4X}}_~IhQ?pRIY&)G-qia}l5A`I%-Vs&@#u|@9gIoFcrFsPRb87ajCwHRheaieg? zf#BXB2&|IVyLk9HUL8EV>Xi1081|4%1PJwyd}Shr$S1{V-f^-_1YaJPFILVHw-9)^ z8--jvd@moD}Ic+ zIv0b1Uqfn~8=aFDZr-ef$d~Zf7d?tQ4hYYO>fC}LwvN*P z=sY=jGRsBULk`6eE!4i9pwagf8;_*vM^p^8Nl3u4G07F3R0fN?EUAuo{Fl$e!W}|L> z7@oenBvAJ8!eJrn)6Vi8)(9M?aGzZJ+M5riQZL|pyQJ(HO8x;5etHzfO=XSZD*s;LLyfTlCl55@>$45**W2|}Re`ln zC7BhY1@`n%T%lA8W2I31j1;h8iu5b5zI;QtREZ6u?8XW_=$Ax@ywDcWbi8?Uu7#)X zF9~POuTw4%w%7|n2+7CQc5_PqOTa%uVI#4`W;kJU$sT@$1!tJJ*6AURGJC^GT&Iy7 zLJ3wj!x8>-xpx?)cj$kiDJW_kY5lLzUU+R?^uJUysgqXRcbKs)^#`n%0%*v^|J__faC$$stT5*Fe*UpBFCAZSKR2YSMegyXF$aq5o<6V2Y?`YK@OJzg{w##c@ z)Z0>rbws*A@hx`76<_$422~WRfiD@j8j`9~4XZ2k|NU=+hBCa6jP*80MprW@N$Hc~V9st^)pE{E}HwV0laL&GYPSOEsGDM!w)Plt>3x zu>Sx3lS7SR>u!N?xCR&dk(1^P(ycLtde#`Zor!8=8fT%i3i1n@V}>TPgVva#p_&T> z!JXPE`&VD)2xAw}D%Zmi{%XwNt`FD#1xn5P6JpRB#VY!op=dsr+S3}IgRGGSpfxS-vHoSV`^QsW5odQ5J+75=xEs41rGfr) zAuq79kX^T>`BT?5M=OmAy(q5B9E?Q#OB&jug7?_hPHjuIzDgdaKOLHuC@VrJeL)1u z4HNlh(kJcSNijJNg-7p1!i&xC0T+C}TAf5DCgO1i){slz#g4Azl_62O%ZXt_sFpY%#;i*7W`ek_zZzClma?;w*Iq&R6n-8)^XIF_dNRh}O&8^C!23BN8 zmm(;BZn1UFVpYePO4XobN-m*I?dcOG6;jEQJX~AG1BH#irJu0hp|>ZrrR;L(uGS|M zI!6W_iOnDAiQFQQ!T+tG3zh=bjHM;YV%PhhC;OQO(<4klU>J(wP)5i8t{`3O>q z=#R%?U8_BUkh802|h27?$T z@X>tEGnkm5!=sGE6a}}dz}hsNa&-8X1I46|sm<6}F)%|AVi--e;@{i9sF%yf6=`iw z6gj`9H1huyl=dI3)TRGiimsb=I7Qb^-*h^&2ID7x9jqRh*j2@w;`@4I48el%b?AV= z0L7Sc3M+epXq!VZINBwS*@i=)9C_HBpmNf*BV7p7_Gc-fJlSlD7;QQVSmj|$M*(Y@ z@G(PHY$ZR2sTYLIW%8(77ZBdVFqHDu@)lBrF1E(_La86iMrz$Npi@If?#}O}9oqa? zn`)q`Besx+@1=$IHRJ&mC;~!78337WQLt*g{anuCBho)WwhMd=>u%w?3e{ku8%v6u@FkJg!GH zqzSK}5CFMvA3syfSA^rixW5rjQsa>uwxh4Xbgf_{%21|M7KKlmX&x!f{79gwtia#m z!Id`(%N;?1=_+eX@ujBZ8f6drIN)bv{`2rYdOoW^B9%RA2w8~k!9aK1{jivs4n{-FF(&Oyebe+nL5~B(f@q(<2Y5oDXx;Oyh^- zNxsZiS#rW|A(+NHNO9GZuTme|2iR~jQaZ)xQHXDSpta-L{K|C8KI@yy<$aVH?k}Z)cCv8eZT@kN@6}V7)jMfa6n8+?JRw z;+o=3q4>VcS!Z%Qr}Z6*8}UkW*2&!PjjVn0vf!)?^%if+G_v*(wSK{$a09mx?psGj z+kVG#eA%7i1^9{H=i$fJzV)Xa;(d*De11rf)oeYs$a|&?rZ8c6qqBJJc4l;XWnygi zgwY*dfd@evO0O8!1w0-J1x9pv3<}q$n((vw5faPDdGYZAO=$l%1}G;CQ5^e5*Q8{aH<-AxRU3jqc`Q($L`m(`+rJYzYky@!m%>Dvaf z&1+tZ9T=k3UqVr2s|QZf8rDiBHBH3O9$2KeWe@Xd^*<+x_X~?NNjQy!`=xPh)yul} z?1rX&-G*iawP)AEzL?(9UFThop{&B|X*(nVen|Y!TGOAiPism{$cpdQkk~eCRjup@ zWxb-@%xd*7kg$9-T@gVP)`rpS(dWZtiSLK$GP+!={~5{2ZoFqkeWOoyy3iR^&$q_O zq4HlGJ8*Ku8#_=QogQ0^WcduEMjAqPm>C4xSLv~RLn3(UNSz$HpuGx_ECTVjljl=9 z+KZ@=8@sdFo0BJT6_B>MUg;rDY*>DEb;Dy}L#CDLFJgw@}yEsFwin$#g+q zJ6lG$ZcZ(KpS^j;b=L@M6k0yS@NEU{G43}<10F}HdvOcHAq;h;3y+gYdBG%m(SDTKU$CFJ$}F&9j=#^ zXbs})H8^T2@qG?R&z|#mx*>)?`w)%-gVy`u#Oc2GaO-p`d^D|LCpm&;MQl}-bt!+z z+6&4pI7G6(`>w=k>%$!t;w_NI|E>Z`7nyt69uZIMPz?GP?N?^2kXoY!@(|T{2ex`| zq>dq-pfjdX|hZi;%V9Lq1yGY&B`?_H@_Fo?m>SNVE&| zy{|fer<;LZZ#m#sc%@?w#0_jr4JgQrZO~(K@2pW8dx~NEnDPPBdY@!z?-Z9~w^Mzj zQ*S0Zb?PC$*^8DsSf+`W!~~zMt?0loza%Y0$Lr2e{qaicMsS_Sr zX#4J>r8X%kL@W%N0t)lCLf#yVZGhrGQaKyV&N}=}I!i8a3IrFd|v6U&U{)|Mt)Sr8Uvj?7_Ph0&8SmpO~ zC+Wmt2`Bn_#%ZhX7*X~8Q#`>$cHi2H()-5FTy}~lax(VYL|q|Q{n*EUeu}3SZbdCw zGPKp($yKj%MPHZFV?A|z50-746(#!)eb}pGV$Y1Ie)JU7=D6L(XQHZTlxEGwZ(tBC zLwG*bbA>UsXs5yjuy5PiO?ubTdLHqaL(ZwNlh>{{NGIgwNX_@y^b(3@}qWsi_`c|pjUUKm2H zH)PE(30ZGD9NGT~JMatlh1Wz{YavO%gBv2Gb#i~S+fHV*Jr#G$KJb0fxNH%D^l)Zg zE)gNYKNy`Tyx+0hnFuSAx?!S zb4LVc*P6LTV#!ol`{oi^inZqCF4hR*55~KrTPM#9>H9DM6YE>8UXZww3qAKSD(K5` zrh%g|+!=FL7?9-S5#|{nZ^ICYUbm1LGLqROj1KnH$!$wit)j6`5~Od0_b^O0(Rpt# zE1VxzO5QqAum|7No=^qH(lKWK1V)4phD~P!koNqaeBJzrQc@=c8G>pP_%8WtOehS? zoBtu>5>9;mP`R2LR$saQ4HB}iUH_IiB7Sj#Aa*Z|e-93Z664_} z;TcVO5`C8?liAGAa8yNTu%|2-2Yw$QYL7yK;g9d8Eyd#1cZ z$E$Y!)h1MZGQI|!VQ{K2a6#X7`nti4w|05R0oo)%2IHK@#=yQQnms6lJ6m=G{cb{S zMHb$>QXFXJCSk$JV8=Lv&6UBn7$!@a?@4g=<`8U_Q2Z|$(TByG3Dk?4AXu~748XnQ zd6~ig2!#T_57$*Y#P=RC_(~_MjW~vlsIw8r`z7p*yW@1V5p_1=cruSkZ$w>fL`BYJ zZ`4tFgbU|7)ktw_S>yQ!F|AhZ-00!#*7kjqeh`xcjEK&X5`iI&EcH=c3W@QilDgE7 zSq$^bwF2tEi-+O&*u1kcLGX%fh#nKc`ztpu`na$ZAD zG1D?<7p+8=D4tnXaxt%$r9#L@qx4cW3l(Z}vI3a}o}IyraW^N)%tA$ajAIVpoXr&q zB7%5L$tA&C&8Y$jPD#VOR3M=XB+z6r%mF~6!hyu4tn02@=ZN6=rxRWHrRjf{GmSi7 zLZ2XvCsrwJ6T=*aI1{KJO;H+hH+_h+05rgI0|9g_HM(G3U`W=Ro?dT; zk<3+1L){TGRdQy8WW|Nd9_hWur+>Kjjs!jAXB^NSx?Q4r-AT9WNWQ%kwt4=RBOgtN z?eF-!LXSF3A`7g^!{wwZV)=LpS#jex zyi;_B8;T{$7g}V0S)#`sC&loEfi5Q^d zcXBEj)@A5ciQ6u+0aVLQB+|W7K_QeEWUmsP_9vwG0Z+ghG|h zR#d4%APSXC#Go=d%!n___e6$Lf|yaMyi=qA5IH(rGqw=&-SXKhX4xs_<_l9-2`q&_ z8&#`t!s6dhw$^!_q@Vp4NmyxN&mG8!r&zzfLPm8d@6X^%})pLcgoqunSnDX~j z>lu}@)*ODx59I!_oy$2P&g_8wcQiS~TXwII^ZnX>e@7c<-Z7#?p2+*t!%i)Ky?|Qm zu)sIECxl^KPi@uH&(oG+y&(r?b-;Q*)bx(mT)2j~jRm2sPXnTg7u|z{ZDDFN0d~oM zNrXDQ)KHCbW3KF-x7Y>JBQv-{0lA)!@!!dnkUU!=eZ__`k$3mwaDUdAxbB7<_lo@? zyb(2IiPB~Um(RgxK(}N!q(L~|4qL$$MC?;-t~*-lF@p~%$!3R|jQWK>1;ELjx z!e(?TQw41ktm3yikeCI_U_!omuLQc5v(^WlJ`LiTE2QwTcE#GUkx1X%=dv; zIlgbIqF-$OQ649<_$kK{sLZP1IOBgQ z#4%{aq+v6-OlTzzv~GdK%-+PJPXvv1VrYOaNI;za(7F{|W-gK3s_H)R>HWlI1uU__ zPiK3ao;tO13_C%|4k5lU`MuVL27ypC(olLUt`Vf?5h|<2Up>-7v=inn_$2FpYTGKDOFUJq;FFj5%Mw z%*?=$gMnpp`v=U$P#i#oCB!|WF>)`5_sIG>06q+SR5OPe}Az!U3Ve9 zP-dsw?7&0pKtHqo^-?_`((%yAsl7SLC{Q`CqOV z`TS(gnzud{EUSpTi)#f#BZc?MLn>#Ye1fZ1BOc)P?~x!wyC_GY$J|24rt;1rujtcP zw;mUg>8s>6@D#b6wC<$o@k70}`p4*xJ5a6Or@~BTz?_-ybZaK}12xiK zNBlfleXd+#{}!cPCp07W?Mz^szek2>?+JdHw%GAZaWv`3X2($cc*nD$p1Z4{@f)jn#1rdANT?ZMYEQA5D3JvQjpY(i~ zEI4=z6+X*9GMQQ2D62`}Vwc>tk12P%-r6?y2we?ISLr)rP&F%BVvBBG9I;0&SFYf- zhM!ST+~nN|l5Tw%U%ZC3$QN=PDo8BOV_0G@{6dbEE%qOXN(qv?Jdl`{S={ELbb1^e zjzMMJDSCWSp=VJ6XH3YNSfGoqg75&JJvebNB>_G!FVM^86fSsMeZYS`$!a8w$ew=Z zzEtb6Y7C9Eq)eA@xc^f`de&BDz8tVxlXnWaJX556aH^v_aT+^xBUNKOo5(wDgs?4w zE3C^)&}E1{lk4Afif3jNpEtlNz}#8Q>qINu{_#^8o@AJ;%LPZ_Q2(Nx7@*si<;l4q z`GY(8P}gTIV$+mS*0iX*h3&KY3e!*EN zTdlgIM25riuU8KQ1jHtNeX=ENZE>pTTtROta1dTo5?hWhDf^tp`o>z(RKac0IRk@td97HyboDL8&RP5lBRP100Ra{>rb1kSL;+Itn;gh8Z+3rx;cbp+Oi)=muo%=S%<5y>HGO1;d{!r}T}ZChbH@mR8OtOy z(anu&k3nN2C=gt8yzE9nG{5gF#~JC44*|BJp@o|a)~9%}a&)TAxO7L3UdU{nKHsa} z6>c2(oqaAY-Ka~04lW%6;;<)Q+6nD^YIeqwo@B3?Z4#k?R9*xxUF>q z&C7%0`&q72)JMrx(WoL0iy1!!4_h6AV}r+`U+gigMZ#ST^%pcEK`->Yl%sa~bnJwxG83 z7G8v;;s`~KEQg|mG+~2+?!0!+Z!^#g$+liKjS@XEF=ZMzsgKTqYSvw6mwlA!BE->% zmnp8!QknAs=|0-u>nRrwXi;^zF7~QJRqC1P9H{S~CNsy`?oh#yaLQ>7hw8;+?ajZ= z@Q{t?a#1`f;}wFB*D1VOJMGgXAu;iglX#Kj`JO7mS#$9yQYEE<6mHl&4ZAB09A%{tg37AMckgO)t$Ytpn(Tb8UAi5%eGG>>FrO!KzUt3lI@6+x?^l&{)GR z34wHfqdnx#Po0ervMw${!eqoZgA?9*v!1}kfgPOtA@kxQ`-5K{NVWbSt|oNObq|`j zNX}uqq7NG}zOd1=kS4r?u7F}R#gRXVL}sR1ZZN?{;o4bxVcgCzYWCGFGOWEu(|cX< zk!;W_x~aR>g`u*~)5yq>%Mh2;#;{f6JM6x-y7vbuiSivbf3t#(V(&fh8Rj1#rA~LJ zw||-Kbi{~%$iP0zn0KGTKH)@VBgD}ILUXN=8;H>yRN8I!{S#CSk)!!a4py-JQ3D6d zkIK2oqO)IrKM!irrSu|G&u?wuUFNKhnlse*Yg;cDZ947QUI~5s=*+pk#JugTqKH^& zZD7Yfbz!bY2-OU2)sC|5(O#HZ4pMWMjI{4n9_o*hQ>2Uto#Zt#2o4{@yM8kj48JUm zG&{GGl%N1ljv{%`If0`WH;P)(16{d^*1A4`LskW>c^+k+V z?DD7FRU!BLpN_^lYT5kS)}JtjSb4uodIw zT5skpR{q{4oqHSX(%W(J=0c0*mN%FN9B7@+ic3xdN|E8|)!G3fKqjp?j{A49)PNKg zygV?dU2xCrI^zq2`t>yoYN#`))#OPJ>QSC!<$md3D!9DZ`qySfzJ85cA zkC37|(|YeHXT|r{R$ZKnok;5)tQqwQFkkOMS}0&<)?WD$jV|%SYPvyoMEvs%t^Q&P z>yKv?za-e>XXdA=RHKR*5#QZ?*~Gp$#9{81jm@>c{R>b|5yfP0l_{{uP48_mk=*I4 zRSNuoqEN%w+%@#s13D81j(%GjFK%nipfN~Mm}_vyxQ9qQAZ^_zeN;aU4c?vW1!*81 zLF2Z6+lGutFWnmJP+qgfhI(98l=O?H!rtwn6G)Z|9W;^zJg+qG%m-g5Pmn^$a#{B1 zHOY{-o}sQm@V2(vw|&P!7t<7f(5`^ZD9Jx~gyBub-dSPPqCEoS1+oz@dO$cQH?5H) zq4EJ`T+FS0xg>VKS->oEC$0X_N6r~zwFIrV>>p0Wpk!Q$h=cXmVj?g=GDW)A21_TM zv-l`wQ@_pLROa;v$t2reTRrI<_I}8^+J|=7CN1%6s&jR775$FJS;bL7>ouayUmH0+ z6vxm41>)56t=Gc4A+Z3TN>6hhc#^pY)^_UgxBYs2OMy=O558vLJIC6Q#PPjicvWR2 z&sAod0qYg(mD;k87oQN;p4%iOp7vZuSu{U__D`D%-K>FLW{8nbj5Ow;=}# zLF^8fvEgk?o(n?Oq$)u(>g}k~jD_l<2eDUR9tM1P1v{8IyB9q`G-=KBC9^^}Dr{@a zmR-(KMSHFXDZ}y2l{}d%bd#Np+IOU1!oZb}ckd9{M)$R>EIwW0x+n5}70!j_L+~@G zoQV&~^M#@zxq#=5p6rd_Mgd93wAVdspNHxuk`xe%VTzaWzX> z$ls&TsTQn1iFYSMI2*BFlP_S+%f@w{RQ{1LY_reVEPTUlFl_DlP_$x)BwnIm zwmampef=YUB_sYTE_Wx(>AU^<-w&pWQ(zqomjL^niUXR+>pvc3aZTCZp<-^AB&<4R z3wHs#fLy8PhmkT(V;0wzv+%5&_Zil$P)isk|4hM~k1Utv>G`#;5+R46rK8pK-bg0U zxLtgjGrbq_&XIpU@hST zQ7G$0I_eNK+o#LTxqMTBo#OH@dIq2fuD6}8$8zs=I1^ltOVih5p=cV?*W=@*h)^qO zPDV!=ZcNu!CZ=?U_PO^4SvW6M4%^&?;=x}RS0;c{PhXN}w^t)XkHZjgi5`gZymQGT zx6;B>6_%#jL1&X>O(|lLJp2F*7?@MmWQEmRBm{z}EZS59&?gg?2ob%&dm39g4Ih)dPTTc#I;|gR4 z#vAi>Ym-r$8#y{XpZMcTz$_@ujef>Ofu)7KO{ZcT0M|*DjfD! zb8Jc2nvrim`~<6i6GzHH>*Gq15N5xy*U7~QP;(%v|!z9sY7nKGZhnpXW~k15E%eVu<5~`>6ok1fX|> zOQAV9{RoiDWAroC8}@3mzr;(!cJ*)M&USe&SL*%XIj#O^sx%U3_hzi@yB_N2q$kFK z7818+IQ%ywKHm_Wx95HqHnC}UX!qkyJ~~ZSZhUuEZ2q<2kZoae;Y=_W&L6|(^>wuS z0*8`wN(t26Q%ayT`j-Nw%L`M@3K)WJA94VZfPzy!RBt$WUtr7kReA^Yf+&?+J8N6YzDFx*B4&Pjw$ir#^L zo=X!i-Y2+qo5JRZbPxt97}(|1Z&=6C1OsO`3KKp-4QgL9tc9;QlsgiHlTLj#4;$*m z!*zA3Yx>9=e?P-LqC4(uhJ_IfoC@j_&01*`cb^>QvV5+dg-W7zxnCN457RtfsO-}P zFRHde*28tq5X20@4=f#gD;kGVM{%Q6aJ;JEI90yV+S~f)GY*3W$X}pgq@mG728U_l z?#Hk-LE!Nqcu_$Bh*Vl3pFQ$X1qiA6PYxJvm%0;!F8@rEqvD~1&isZYT&?%Aba6FR z_TFDm7;?radvn1XPHBVE>Pc;*QR=OI8-4FjmJ^9vWv zHxje`syyC*PPg}7_E%W#6L165XeW6#YWl!q5@%g_>>^4QBYub~WR3b24>QpZ+5aRK z5@LN;><(weI<%kKW)->etx&90?AIPqYdA3{w`_jl0z?^?Ls4NMhBn77?PzB(w=r1= z&brpYZirgEaDz)=7s|lRXz%e>xBwg%0!yQ@^4@R(7ldMSql15TMG848IJ)Huw#|N` zI+X%iW)R68!uN}Et<7%MWZ$rLYpw{&dl+UVj!UEYC>Ch-Pl8AxWn?Z^@(2PpJX-w^ z<LN{~yCWad$NDl_*`1WQFpCqW$z=xdb=d^V)PDQtz_k#>N>9D(I+PNELkI!NC zkq^)d2{TY+U4l;orFA10;xD%ja|Gbw+@FWqe|=D{wTld-rApfY=it;_r%3cOz%p_; z8rCJb4uGEBDF6~xk3GdqZ?G}Ik`XRHr1S}@|8fCPEIOGj1=v^YI`8MK{p)uch?{1n z#s{oP4CmVcJ?q8N@g)nh%<(1h#fTTD>(=W=Vy?f^`m{5?y@pS`!wzgJk!L2fK zx*tTEbPL)r&Ttgi){S5g_Ja(GWg6d@Yi$ULee|#w%ElEgcnW4@zHn7VO63AQf(Jc> zBHTuu0SX)9J4;0wq(yp(ghP11MeC}mSJ5-7vGjb}lfDmEc^ug|*61G-CrDx4AaVyF z`U~vy9zrCE%w`XT^RUcavTep;aR)$mWA9K|)oPHO-c1jG4Uz@Qa!W8zf}?x4q>f zA!-)mbw0gL8g{}B30Mo4C9~+OFjJ=m6O%INCpRkOy{FjSRinX`7EsO-jTY#Hgm=?R zaI=oWR2hoVk7d;|8Dt{61%?dyptuEHnpIF5V8iA&1b<$+y!C?vF6-qfQfLDXk&-DN zJ=f)Y);Fp0q;Rq!!rMJXT%R(W+W=9o;m8`^?}oqOCOr!PYZ!bU*p=A(3%tR`40V zHZ(3SO;lW$JgXs92UiU&Y1C{>>mr4%-Wka(h09fd=dJd8m$6IHj&ces3L80b%8?I3 z+9GY!6BmuOpZ%^Yea6{9(0VgqF7)Z8SHUaz11m~36HG)i@t01sJpvHE4L?^OZdVwY zyEsU>9U%t<~|==Ag(SLzZ3u=t?+o#^yp0 zYxSe4KCHO$eiB}ac*AhUPnX+EG?SwnW&)0}g;eaO57;{B>`+t4+N1^6i_9d^?|xap_O&cLu^EzP-y$EY;Q@9YOfpE22n+Z{kQ=AZ zAHtyY|A)PIfsdj*7ymcOCM=LJ0TYOVvS`#$P*Xuo4Axz;OJ-#wARtr(qR~jbBJ4^K zk}TasGY)I9RclYx+Uwy|Pm4X4OGFJ9lW-9bTScuE>xGGnirNMg%l^L4JG)6xwCy?V z`ThT&AATe|^UlnBectDN?vM24GMiq#gqv5TV=sqGy1aBO2ZaWnM&ikCI9DXk+t4tZ z{x-ccQdN^%B+%m*~8U);E1~nA@c;fOe_XG?n={HVx4%k+8EL?_6l%CpCETsH=tM8 zEn(}v`_ddOx6n@vp;V}Tc^Vu4J!?O8OB=uYw?8A?a29&a>9kN6>E5*`>}1y>UqP&v zJxjK$>`)O}7_$#3%C2CT4H8Ly2L6XfyWm(n?S4!4m8?zQVA%@XzTC$I6SfM$zeaIU-<*BCS!x4~o(^ zDqF=p%gtmrQU-lzdao(W7)R7x$o?Xpg$Z6?*^1yeFh?R?j8-6w-TH7sQS`@g0RIBR zzc(H@B8ktMy~E8$6<}4$&Xb&Y@R^eVpUIIm4*+2*kxxkt{nB`k9yRQ#kc z2sJBsjExXY1NIeGy?Ude2=V~4>Nh!Mz%P;^+h1hXQ5AF?##~Zcp>-MWwp>mns^6D9 z%Jz8Nx=2+}S!DQ&yV4@z2|f`vtrMt5kX3)C@(YV@9MnUx%^vWgR3>-x5C^F(#ef63VMt(Y<`&C53z5NBk0~@+P(r9He$C{Zl)(Wsco3 zYaAU)!J|4=7j9#J4)L0P2VpE9uz}Mb(M5Xe?1Bnhyl1X4e0@pkzKx!e7piS#LSn%~^2V1?ylFR^^q#TB0^Yukh| z`>oECS!4$37c~uBAfJFqF`KV*Yfazb4xj{kQuDXDDNS2iZ)<3#xhxSP&PRI$n)18V z-c-C<>L5Z?=efq(^c&IN&xW{uHFUAIW-6xeIdl7233Fp~@5M-WU5*`RLPvd;v^?Gw z&WbK^J0xD$Hml-Q`4*Qq5c#aP4?~VjcgnQOB3ACA^B_VfFPl>i4LatY@e1w2rj(#1 z0arJE#2JX_2zlPn08aU`T}wYm>Z{nuAH~twui0&Vi<#l}fO(rwhBQC1L)lfq!QjyF zsS#cut4|oUJo6VYSzQiIYrI7rO_jih*d>3xw7B7GrvEeKI`;P2)FOroYB5B9{lKOB zp=A6K^FXEfQhbzL#wMhh(?3(T%C|uRv^zTn{Z)9p4ks=KF23x@=3Ia*hBmKuV4yk} zbVDrNY>yBO?Y@q8HL^*^%RgV5BlggOHAT25G=z;ewpz{@*bRX-g^*A?L2kROs^zdV zhiF6ga2#8yO0$x6U=s&ThqdvWLV?Q|VdVU)D$Nf9$^v_&Z3-)mP@RpBcY-ArSgkh; zNnW|q+y#jkiGNN0(&fvb@IVM&1GxtY-JKm_K7&c_a7ia2p~R=6(vdtP0Uur9AY}-)ei6qn>iGNj~y03VK_{_@n>LhtCH4e^;zSfbO>=CH`pCx}m=H~SEj3Pk))fZ|A zeW_9oZXdnpXj4P*a~KcoMozCj3vwEuS7R=#x}7AQkeGMBHpr}V!xufyn`U@DWI_C7 z-R6!MrqnLq@D2}QwPt5Wu@!<^S*{bP6j4s z7+-`s<;jy>sGtrvG3L^%HuVdZ@z&u)=U8q4zAT}KdqH1T5A+T01%2BsCpMIw2|=+> z3skELySPn(VrQq^n0~Qo9yeZV`aUoHjm7%V6y~p+eIN*|u+3_b6b2YZeL~OV&qL`i zvzgqw6Jg~tE;X}VRsuB$Yj)I8Z1+z{-QF`dBWx`&uruz9Inf#U`f3rdCL68t50MC!TCI2e?Fm!# z$_(n436ql|MYpI4+cE7+XqTPR2gONEqysWJY$r8Q%x@ft;!P_l;5xbdEKC4IT5#~i zq`)NyfsBY#_MeT+1zs;OSx7d$`bEQej~vz0P|w(3ywvjrwCV4xmd}0h5??^PDjM2H z8?|y;3R#M61~j`4nz0&Vz&|eaK6uL_F=PD?_s6K1~D#x`%-NNCnM>Fl;Pb-CIf}a1UinU~4yh zl(^Jq&hZ7x+O)=Mo|%42EuUb`7ukL#kjK35u{pDtzeDXwg*vPsZ$HA+hgZgCfY>_> zKX|~u3gv?bbqi-vVbYO8rru|6WSk)A>DCWx?70UMSn-jH7V@SUS#pTjgpjac9DYtk zApnSik2=tq-PA1g`!YVztG@x=c6k-*cz0<@gIjdQNy)9-mc=Rt&>G?2FVVeEr|O1S z1#Q^%pA4Y|`he29QqJ$7O=&%;XpvZEEpF*H@x1XS5vU4%C!;BVX%HL`n|dQ70pmEW z=dZ=(Y&0jS-Fx1Rz;*#VB4>fTaSFRCjqnc|fk7a$Eu{XWx&3x)?omygqy#hy*{K0Q zqupoS__rDnS=mvIpabb{;K+@Pp?UzaOBo5nIA$BJf4B_++MhJr@(pvaEF!Q{>yzz) zq&MgF^)~IJB)!Z!E6_m)iij%(C9gF>cQUngYHGEHQ-mK=8x#kFyBUtu9=gT`llZCK z6KpS^yr7m(WG^l?t>$zKfS6Dv=kzHVyGn;YBa7K^B7gyDuq8I*T$|0ehEu7zCq9Dy z%z|x9LBx5yEqmMv*mW<|4;KLl?5yq9x*K`}LUINbP(w+J6zu`4t@`f)1t@!3>2Bd$ zw9vg$(~^w{u~|JJv6Z#L^QTqK3z8KYQUvO38j|UbpYi#fBUr14Dor&bJhM62S5m7M zCUe4*_QIglQ=CMSCo0sAR@ zJOhz0d+pKGvarxJmGOc!CKeLlm7OhPRcnG@tcz)ge&^9|X+i22z<{e4<$T#5ZTVRc z7-HCRw}QYhB+Dt@(xDBP2+~WQ5o)TZ^tC>^N&!n{PY>1WIjCJ@yg*(itFmG%10}kgC;kz$*v_U37+0P&npWy`d0vv{U*Un_;7) z3a2%m{{C%r^f?&(3-x!y;I4Ug6Mq8+U#|Ke!QjTV$Am$DN&VGY!-Yu1)p!7OwYa zH1Sbtk)g-bw<$a>+C`9zQ{0Auj^xfwLKI4+XnXpoN~^3xTYej0#R=sGsj(p{L2Sdl zr6)F=)(uwXvo=_rY5j1nJ$s^luUuvC;}p#Fu~FQa3c@&{df-N{*1V;C8%Fe?1d;D6 zlyFJ1LRFo@mLgV`!!!kcNB3W$gdyE1Va%FiE{8P8Av;G}bwd>}b;)zKWu#0C+gx_s zQy0NdjuaG~Y82Am0_;b2pR#K5;F8%Yasd8x0T3s6Kt7*SV?$ifeClS*(V+m} zYJ~IVutXz)%IubG_J`6I>@rwD${`&s#2O3cae(_{&zvP^)(- zqWvu@YppbI!#XQTkToss0&;|GgPv1dyjfQab{j4nl3+I*7MKZ{uDP=Xb}A!rT2`o2 zlr@4n6_+cBQ(jNurXG;}g5>lYzh#UAV-=Fo?emgTMLYIqAF^13Z)LH#REzcaHEOZo z=4(adt~H_!r;p+0r$zKGLnEK=A;L^*jkoed1P0z%-uaA%fY-9(YDK$A!MWCoEA6eI zz#)zU1#&St4(xph0Lw_!Lvh-7F}$m(MIHIH#%#@YlomAL!MDXe3m}+<#yrouAXzbI z{h7(VWlxb%XL8!JBQT8+T$nmqk~+GhL~JWKMf!AO$KO=ju$mOL3|G`z>bRq2U+j|a zDUxm7EWq{rUL#3@5N)R@Lm}Fr5GCt?{AR0jk^UeE+inFKdW7QL;-uyO#flBmtJTS! ztWZvG0UN+kW*;qmk=P+&hP((vR#gO)mWyOR#g-~H`1A+x1Pl)~EB7LD9)pwc@Nuq% zqm1QuSaj#egyHewWfO|(PcksX@$WSzj7AQvgc``h9o1F01m!q0y%`x?yIqx?^Y*rIvOf0NvFFz^G5j}!_SEI|` zl%I|kC7wHZI}6rz9@!$I7Fp~xyO9iQ1&yStER;^&^23zx<`z^Oitx0ZC&lK(s4c-B zleNb4;!yFTot0+e#=V=*Bpya9`n^4sfXtJ&SHPjU>4HmP0+i{n)O>9iDNZc^=@0iM z;_CxZOyvBpE1FB@ppx1B-8`{9-)24bslW)~<0_8CFQ7blqg{TlUEXJ{Y+>ZKvHYt~ zwV&Lso+z6X&DX91J&2$K78$Zb@CCRL&cav>Zw;hb*V7esr8+156r1MFA(3T?`RWdk z#h6#6U+^u{n~mAc(yy^QkJuZ=oX-6YYu0)AM`Wrm5TM=v2aMlJ?*Qx_;XYpTVPsZz z8+!E%)|Mb%lC{*T-o_NLKy;BL^R60!L2RV{7CeZg$`7~i#}!NhL5v%dfIU$5fHr{o zGO*HV6%QSvbBc+aA*15NBjm|XsHK;Q?~YzIUc7rhf*#eL*4PEoOXPp%#se?Tr3~;i z8DJ8&WRR0~9D%H=YxZ`v6Cm-47T`9^`^=F9O-1V-p#Rgvs^`kWD!+OCSZ~bF*)e`> z$Z59onps|y=m=J~qTnrS)xPsO{WE8;vIoQ6g#A-ksurBRTmMn zq$0N_+IF_gnbzgGCK8&%%%SdW4S!gJQPE_q00lDU(>6dtSPfAdZJ4Q$_)1ta?U^0X zH_@+Rhzw&T%Jr5J>RqOOhZvOkGPYSG77EBP8)B}(n|#Mdm2?;A{MoleMXNEZlT4@6 zdi!Fjdlz$lt#W76R!opLBZcGAD3c?sec7(E)6 zF7pr!frZH!TJH{>A-$658Al)lg6O=?N`1|a=PXBFGp4oWUOr7#!3Wld3*=>%lyy?$ zs5H-)`E6RsX$F`>9~?+*dVZt$V;Hm7ifTQ%ep=Io>cC?=+0J`+5N_ArJu6rO0WF-< zrymfQDtlg>;=>rOS01q5A>vFjGJ*AqT+5CWqrjgBQeLo=s2~}cLh30_)${Q#RgYV+ zNy#blY2^X-Q9a^8BEd?ykxa|2%C}hs{KkJOpO>UQf5QH}2>f-x-n9hY7_MB?l(+n8 zo60t56&t+99ZxV#$(ODJE@0E7Fn5p)vH$Pb=wK>>oJ+;Z5 zUE32nG;57iHG!&nZ^ErxLG80`)DBu`dbPg5jt%zw1x|-`r-PV1#=}mjR>DBx{2rpH zrwMstH!($;zzptVB>#^Hf|=hgriIg2h<;gNoVluCy^80in|7qPAX$G@TsJcok+F~2 zZf(nFx|eNU#md-$=I6}blyO3Vqco?$@&5Be9OlbI9G7x`&hLgemhkWG_z=hDH;14d zEO1op8R9sb>({pNn_b{|@SP!!8{Zz{IPp#AG#8RB^44?`U1 zyg0;h;!8suk5c~5fC7h)f2r7d$A6E{!0{P4J_E;R;P?z2pMm2uaC`=i&%p5+I6ec% zXW;k@9G`*XGjMzcj?cjH8TkL#3`m|4{13YG8znQF7VGA_dhGT-LGweRtW>lydGQ#J z6K;P?ILjLgq{Y|Zz8@U5lkiS1!ZA71i00InR(^$^B>pbS#d}qNCebpgz)+*MqGv{x zD37;^*CwezB?<3LQ9e|Wgrr!6vvYgpYWZiZq|9$_(0nL!TiFF=46mN5 zD`VvZp32`eOth^Xm7{j?LSLDme$3B6CJ)U*=4xq~3CP_x*keBByw8GsF`2L-CGt zTSxj6pnC?oSW?me9!8UT&yJslf>zf_9_i5y6;DkY=&$16d~IM;gxdHKvl)IKv42D< z$6c%avx^@w!p^s|vu?1`3o~@%A^D`)zfi?)BmQ*$RiBAUo8L`UnHHQkXExGg-t?3VZ<}*Jmy%ewe zZCnSJp`0#HktfvW$t+qGk5CUWI9fv|>7^y1>}ahkEu0mp%}xuy&J(O{TEp*{FGp{& z6OHV&R$uPKDJ+~v+?hbM-R&b9f8FRYTRQFdGncy2s+Uhf9bMgqQ>_ZLxI_6j+|5LE zUdQ+()&g2Qyf5_V)0q9yAyFk-|0$sjo8Hr!e@s!pd@Yn+9$9*N0$rxeuCMG@%lWC7 zFkk(tU%7+GXXjII_f20S?wETz9n@M$C<(ObQ&C;+uAX>S?hDXi+{NPwb!gNr9Mi7_cOT;cP4i3unel zKngR(x#+vR7Cn5eo$w>Fl;@#g$u5RZum|zDc}Su_gForA^b?EFot9aY?vPRm&mhP; zbUKrNSAVfmmswdKmrhPA)J2JQgOr@~81r-$kPd*H!0N7);f4FQPr$bY1$u@3o%3DZ zB3dikR)&Es!X5G=pCwxYj@hwvi=HDd2(Zzp?zp4-vmk~AQ8K;{fZUizo3{j$x1e3T-OyzO&l&Hkt1 zx_`!b^Z)fa)OjfMM#1GXy7Q=eg60#2vSG)(7pNxf)hF@-CQrm~`ow3x9Wby&*b=@9 zKr#*rj?90@mFrlS&j;4a@3ADYoX!n|K3sRznV7r@GUv@P*Ct=#^$)Hg9Okci6H{J+ zeidZrvBHSlL^peErR>}}9ERRo$K4h>Xprloj{i$~?6Q3#b4*izP> zVg5ek28KK(Bg0vql5a_J8SEOO8`C9$?x;4sY}3*=%~uE+n6g&+&5=BZ_wjV>B~*f~ zotD=xP$~O0nRS{22LGa+>TL3=92sN)l4yDC97=EGkb0^>>>#i?kibUlAS^NNEfnM; zK`Y8f@!~e?KcrqF@Zj-OXzqfDkdBSpvtZ!3KP=4Q)>$|%W06w|b;ANDhOpXMI5pN+Mj{iprxeEZq2?Pn$Sv&Zei z7JiJ(&HVj)`X|;f1WXAQx~5K7JJ_bomhHEXz1y*r*&@7y7(+vP_>AR+a^m>SPKh2e zgB(gyLzNy|Fi$A0nE?OYoBGQ>yxlDpynoob4?D5j+yeQNwZ?iLDVwD*7g&Cd!?3ve zwJzfKURhW)v^CnA-Zf#I6JoAJYa~X4FTlc~NWxgcbT(6z=8 z4nNUSsHHxF2P?j}0+zBnKc17N=5KFean1V;|{vJhaVv;p4M{E@ zEMCi7*;@1r?t87HJWjSq&$qS<^SwpbKOvsyB?lNR<7m+C9^GqEE6ry)?0)GJyUv}~ z)o&b52&drayw=5n$MTm^5nS;=fkUVx*uYy%0z4D-2_VuL^l=$5}PDf z(efL(@B9USQlJwshqLhE65(hDkiw)u&YWw126@(RT>;Hm-{Oo)rCyUj9WYfyQ_u!x z1&j%~@zIslS%D3EodLo&2Fw0Sn3si9xHv>t7mNukI~3uQMHdImHtGlv2or}mF|sGv z`UZfZ(g?P}yL5#ou@0Rv-sM{%-4|qQYoZbiK3LWoe+F+*>DI%GiIoR4@g8@_HS|~*uN34Au# zOVE*Af<(Jogg^}^T z*2mP2#yVG-R{DSp*+4H@`)eV0Z+LE=ipdEvjr$f=mD*JeqN>tjeZ!wrRncI-VIFT+ zh0mikP5`N5E$5fh-&Z&@@ocdAFGi}3Dvu3}-+7(okj??7MZt_ivft!&-7i~?^hq5u zX`?}Bvgeqm4>rqmCPryi73{bJvf~2eX*Hh%?CNLuOTGz~+#}7I1QXpA z9JM=n{^OgHj>yM3hK#w1TT(%d8!9B+#tY`Af=K{=}x9 zcIbhl9*4&-DZ1N+9#5?TyIHxx*W=ytvAuofefDt%xkJJaPVxw>|TSj?Uk z%(qt%K+w&0;iRKM*D#M@V_m=DwRwSz*AJHKazbj2!cj^L9Z7zX#l8@1`Wwm^S@GaJ9xWSw)c$#q!VJxQ_r#1G9kAb=9|Ab>p=QtFPsrd?4+cSs-~f!7YD^ z!FirQY=X|O%iEUqSdHJPIafFE{cv%@Q-*vkvVLII)-xTBy6YpKkUG`jaITB+hmTfG(G zp0~LlCGkIaiNoq`pHRebn1#%BXKRj8ch2O_YfKm`2jeJ0y_wCA@EEXm)DMd^oI>&y z!1Zok6<#EkpEn4WD)9=5CZm@+*_xo+ot4JTZfofEpC#fWq!v8=*#z6HPu_oz1FXw7 zu`N!{P>PU{)vmr$!Wshr+x*zXTY-?ha1b4bgnV#=5=5~;ajv{61b?p9$tiY$dAZMLwpvgAR8SNE zDMtfUn^X<-APXrLQVvofXk4ntGo%bgv&!s4N&(!F=lQ_*iu8+av`P0QDeo(@wB;8O ztewrUZ1V$5TS_)Ech2ltn*@``@}DC$feO3n7A` z;CV84lc}D7A=Gc#wLu3|0{-<4Wa)#b(Q<*MrT=$BRXkFSfi)fm`YuAoOh zZCKPl@}~xMY&8$uq%Zq4aWND>I|>U z6a#)4P31!^LV16xt+^~u1@aT^Ux`HWi+18NHH)FDi$|DFndB;U=jD#rqoJT#UJ%or zWfOB3oa$W*kp#__Kjck0@^ByGZCgn=cUI^5DDrJM%Ji9C@tohFj@W7a=_)6jE-cXz=}s)KPC95UUGE@z&%$Bh>!9WE^6sjyAn#O0 zH~%RdF3~;HnOdhFyD2TvCgf&G7<>F zIm3{-1o2Cod8Sd$a2b~nl=F_7l1=Np!;`g1}nIuOs`nO20>Ilqcr5j6p={(w*)OQ=d%)oCm)V2(~yR;$e^ve$`l zl3PL-`gkNcHD`JsPqQZ8^C{Ve&PL{OdwOWN)KK*%olzC{p|9N)pDKMUQW_~y9nYP` znY`0#*dg*OIr7f<&<32S{j~F=-TS@*j{otU^}q9lXR3{cURE3~tn_d_HnFeO+utKTo_o}Ta?f|Kt?2@2mOQQfC{?3;%y15TQD+(-)%;cm0u z1+JtiO|_wLn?h@{s5Q}xUU>)UQ)n6)3ZGw)FIpV&44tqqPk<_s{}-N;aQ++e2q3H8 zrH{<-ycLJf{B82Y%y}^R(Xd4R2tK0sy;_hOeyZLBquK-eN9_Yr^T((e9G<`F3n0r8 zf@av$6usy~HGoR`lG`(YCe50>?us==R zzWFv4eAS8^y-=n%nH%~XJ-TitQ|}0$9$ohqzmD**=(=%IQlGFN+Kk<7=naB5cC)8P)#zIN2Klo~$0XuZeXR^mk}v8iP%^xtL(kZV zN93ZcuN<0c65NzC`7zLfc237_{Zn;0BAY14?DHtNEm>)zfewtuNw=a0_>a+PnJ;(u zen3Ku;)^ICTV>d~nwZYMne07I7g!n2csXA@un^&er5EjdGtUvK29nxtv4MiEQ1+I< zIgs=&4}qjH@~FB)ADQ#U&0NWoR(WFP+|%>XU_O$m78(M4Uo80E)6<1biTve!6aRz0 zEa6Bb8Wz5g$Tul4@mW8R$ZwX*1HQ5YTBBGaL@zp@0wfL_xS^eqJ?%Wq0|_BombsnI z)FT$o+{6XmxTAL9n|eOnX@^|@_Un&Q~LY=d)lw<+k;R|?Edl5#nX<2;ScYr64C}`AVdDH@bq$B z7%bbkV0bcZ1iWH|Z5%!bkRvNy*vB`DIE>zD$K1Z#YgR}FgS*B%Gs1n$@ncCGfh6{_ z+_-h@PlDzjI529-dtuCS1&s0zcyN9!q|HC>B&)JfPQatgJHCHNE-@9$eDndiT*xN> zh?2d5Soz8T9Jy}Z?&kggu{tY_g$VvW{8(!c!J1LNveGDDB~0_z%;6Hn5rLqaFpkns z!l8)$%$-<@afI|Elq1$AL~`7#oAsy(6QMB#9dUo2s`bH=S zL9r5R%$%%D8Hf@qE$8sHu+40nCkjRSD7`{FGQfKC?!!=k*zd?*n!hqF)K4K7wsh^L znuB|WwjSKWu^@NHzzYAoA|JA}f^OBFAet(lc@>c{-wm3#GwbL!1|o0uk$cMXl;m~t z#(afo=o}tlFz^uGv69lHvRHub6p;pxcc&6CX(I1MR?w3VYrGpNLZylu`kIb_8XxjSD>7kvx@!9xPZX}? zgE)CM{WBS*+$gctPV2IFB$z|RSSVE=Pvn&FinM1E`EpuA=?T!$_rzwwudS(^Q~JGo zxg-pdSRa5?88?GnWX;Z#@Vlg}*7<#%a;4M0gU4HC}kpYFv(f!b@yVm#KPn>=?jA zpgshGREeIpS&pmi=$>5?fqH>NpgvUDJFvsENwvQhG>~GM){Mgt*($<4}BA)95b&g ziRapx9x4ba^|L!I-q%e#VV9gPX#JRdG{_}>Os+JE?EN-#VyR9@0wERaN=TTFa|E_B?1}G= zfOOaO5~wVhK8VqyZs>@vFH`{P1D6P>5ecd81fTgF*^OH6N%rk_sm%s0>G~rSC!uR7 z#vx(_(sFC^)x%Pfd+}-9S2{;+oWGmCw_24;{9HZ&&}9Kp6s1*>0u(rC@ES0yK0lN<%<4 zr75RcnKJSN@sWId8?otogV?EjDdAF8JXWsl09@Wk-PI1Qk(}9f%d&3nzR1C4_fm1N z`cO+F4^7oundqQc-fTnqGv=w>De?0d zo$Q9xBL(>YLmX4I6l4R`0?lpS5otbC?X=|51GV%{wpmLP-IH#2o<-!6gZ^to>nURN zM<@^HN&rhE`NkSjE%Tui$$;gfLO$wQie%U@Oyh{mPwZ-Jd`^&kNL;P{KEvL2M=FLh z4K&_zda{naRD1Mr37(qylj{V|MQUI#q`IU*gtrXm77d-eLq<3_4QD-%Uf5!+?HHWCV^PDe!lWHiB zhB~z`J{QKSpvU4I!D16RED2I%%L6fMn&(}gP2UhUJ~m4u5r=QDn3=~i|Bbt+ggp+D zkIg^kJ&LCOKvL(1)4a=$M0lXxxu3sKGrnf9IN&d`s*NHg+F|8gE{dSm&=sccR0eEm z;Yr%lj{H~t#k zl4hvultK2}G>oCI8w4W_@7rKE{KM&@aZ+4Th)9VXuZhr*=s9V^bxz7n%z#NJ5#J7L zVFVRaxsx2fLE{FG)?(%J>o&@fDrUB?>x3gMFQ5cP*$o)hFL8OAN5xO`u6tpaCyBNou9@*b~}T{Fx#3Pig3vUS(X`x4PZeS|QDCqYiu zxv)PBtXv)4Q^o&JpW(gS7Q2-OOe-jMurFJ`d7n_g(8@Q!)QJJk5J{kl+*B;EsR!4U z*`0q}evpMg*)OgQlXaA^eTY29@o=+lqGEi}dQGv-2LKkWv4Dy&muR>~kA0^Zz!goM zxy#ymSY+Ee?9!Id=zzrBj5#CxlazQ!nH2wPg{2{-^tG<22MV_CBav3Ccg zfb>!7TzGeP5BAhSsZ^?0RS#xX3rNc)&bvV0iOzf{At3ruTA!E9|`h^ zXB^AFJ0GYVx!%@4>tbIq`KSp#dab@33jTRdyb}6y2u!3~a-wlQ7Z~@d1ZYRR!#DZL zyhZhWVBU#TKKj^w{>UCp*2zFV?QvyX$(_BB8ye<~Q2cn

0e8z)(#*@pxf`Cz=KY?>WT8;0y!y{CY6nk=#rz_=dDX@e9DkhY2lQBDVMKO_+8QFKwa)G&)*Q)HLwSPSnYduJX9 zRU}60gBWaUifJI8u*^fZKUORfp)D;pP0J1B>M=vz4fI5`T<;^=Kz#+pt5}#vxNqft z75BTiZ{>b3_q(`1z`a}_2uSw6|D-OYf|O(PLd9NC>NcKo=i#zl?{4v^)&eVdht{N3 zX-!&{)}&QwO97`<=Jcohd)&oqy)95tYA*sKsAv87aD{uDxO`cMfa8$7#sa zgRut-1s((Dtb%~K5MjjPM-;lUqndL=Kh|ba@xJLYdaK z(*X!DR=c}wPSMggRR85P$qD`QdO#br-}N-pGeUJ zAIINYtg$Czc5^$n-*2<^OrREDVul1#EO7ZmLWxxd_-+K+-LHTc&{})mrwR zV3Rhn%(FTVCZ1*h4qY2hzA@3y$%_7srKlfBi|_7Z1}YyvoIqX{zqor{W-b5xx*%## ztw-Nmib@w1HgI5b{FcryuFn(;dxsF^bXaD4Uayh;52mgAQ<*=POh@lSd|E0hLBQ;U z)B*6tD0V3zC(_pNLYoRoUwFOObd@!W1hM|aN(i`Ee&st7n0<#eeO1ct5UL){Qf#Kn zKjtm3`59WqvD%vQ0+Nh|MqnSw%VZ40c)Z~o1TrVj9|o$n@NdB;a+HCcHo42bv2?q= zq%3lG009uwJXY9dL9g886UjHTCMN6HCBMbw@4}&2DShJqz=rRh8T$evn`8=s+=Il6 z@6O`TUnMDczVqS@098*K2e24v9FA^F;f`2lc&mV)Y+L#WJjzupbLTshLjIH}2ot~} zRU{5K6(&qPd+F$^REN;_O@+kT%NHnB&mWg>`{Oqj?ouTW7Us$+Is+nt$ogYiD{;J~ zN_a!4bzh-WKTRIZhxjaiK>nk-*3OCu_0QvSqAwfWasBr>C10XuW4(>=dE;x27A{YCNg-9_q5g;V>|}V zX*E$j&;7YMKIVQ%3J1Q9Rk)=%;!ou)Fz0ZlaMJ8OtVcUIcqbHFzgoz$7;}mVi!Pp7 z|Ebob0>MCQXpn6$E}kr=M@qtfZkeZ^@36iB@Er2vYO9|kSO@bfd+`Ski8Wa{ntJ7e zj+NrmwpuGIT0UAOY{CU~hqZh9dty>-AC)(XMpfA$2)5*ehhSo`@x5O@)Bn9E$@xy& zUlwbt$0MbG1%H*1h(`YS%DzNb`N_^uzDlGGOoE^LTQhGuoQPDPe0WS(r_hXD<4<-X z)gl3eIUc*R%)lq&baWY54Rm0|hknYPvUnG#3=qcLO`Oa4Z6PI<#RRFlt!H^lTGAS~ zsx?_64I!E%o2uMHJI&C`)+y(yGA<6$?1I7YS_in$$!%k-ldDdp5GY%x{G(3b@!syo zauvTxFMV95UO2LstSLLl19C;_dBz5;NCH?uL@L?MG=&w(Unql?P2~SfE)qHK1$k60 zRwO@^D|vFedL?IK@}q%?{9Tm9;kbA>n@gD@-B{={kYR|v|L8gR?=9Cq{FP_wbWmUs zxauxCj+9m%zu1m)g8NG4

eFUBoX0%w~r9E1ZDy7wv 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%0A*uaNak-zVQ(Huh2_Dvg53VM}n;OzvfHS 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%0DfMU7g^eMYM9uoG7LVH*-*Rmm#L;$AVOpaj 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 sIJ><|Dm3TakA$`CSp0MHJzIbshr}=a^ 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

On(^GKhl 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 integer().autoIncrement()(); + TextColumn get title => text().withLength(min: 6, max: 32)(); + TextColumn get content => text().named('body')(); + IntColumn get category => integer().nullable()(); +} + +@DriftDatabase(tables: [TodoItems]) +class AppDatabase extends _$AppDatabase { + AppDatabase(super.e); + + @override + int get schemaVersion => 1; +} diff --git a/drift/test/test_database.g.dart b/drift/test/test_database.g.dart new file mode 100644 index 0000000000..65430026da --- /dev/null +++ b/drift/test/test_database.g.dart @@ -0,0 +1,269 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'test_database.dart'; + +// ignore_for_file: type=lint +class $TodoItemsTable extends TodoItems + with TableInfo<$TodoItemsTable, TodoItem> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $TodoItemsTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + static const VerificationMeta _titleMeta = const VerificationMeta('title'); + @override + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 6, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + static const VerificationMeta _contentMeta = + const VerificationMeta('content'); + @override + late final GeneratedColumn content = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + static const VerificationMeta _categoryMeta = + const VerificationMeta('category'); + @override + late final GeneratedColumn category = GeneratedColumn( + 'category', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + @override + List get $columns => [id, title, content, category]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'todo_items'; + @override + VerificationContext validateIntegrity(Insertable instance, + {bool isInserting = false}) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } + if (data.containsKey('title')) { + context.handle( + _titleMeta, title.isAcceptableOrUnknown(data['title']!, _titleMeta)); + } else if (isInserting) { + context.missing(_titleMeta); + } + if (data.containsKey('body')) { + context.handle(_contentMeta, + content.isAcceptableOrUnknown(data['body']!, _contentMeta)); + } else if (isInserting) { + context.missing(_contentMeta); + } + if (data.containsKey('category')) { + context.handle(_categoryMeta, + category.isAcceptableOrUnknown(data['category']!, _categoryMeta)); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + TodoItem map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return TodoItem( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + content: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + category: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}category']), + ); + } + + @override + $TodoItemsTable createAlias(String alias) { + return $TodoItemsTable(attachedDatabase, alias); + } +} + +class TodoItem extends DataClass implements Insertable { + final int id; + final String title; + final String content; + final int? category; + const TodoItem( + {required this.id, + required this.title, + required this.content, + this.category}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(content); + if (!nullToAbsent || category != null) { + map['category'] = Variable(category); + } + return map; + } + + TodoItemsCompanion toCompanion(bool nullToAbsent) { + return TodoItemsCompanion( + id: Value(id), + title: Value(title), + content: Value(content), + category: category == null && nullToAbsent + ? const Value.absent() + : Value(category), + ); + } + + factory TodoItem.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return TodoItem( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + content: serializer.fromJson(json['content']), + category: serializer.fromJson(json['category']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'content': serializer.toJson(content), + 'category': serializer.toJson(category), + }; + } + + TodoItem copyWith( + {int? id, + String? title, + String? content, + Value category = const Value.absent()}) => + TodoItem( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + category: category.present ? category.value : this.category, + ); + @override + String toString() { + return (StringBuffer('TodoItem(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('category: $category') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, title, content, category); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is TodoItem && + other.id == this.id && + other.title == this.title && + other.content == this.content && + other.category == this.category); +} + +class TodoItemsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value content; + final Value category; + const TodoItemsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.content = const Value.absent(), + this.category = const Value.absent(), + }); + TodoItemsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String content, + this.category = const Value.absent(), + }) : title = Value(title), + content = Value(content); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? content, + Expression? category, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (content != null) 'body': content, + if (category != null) 'category': category, + }); + } + + TodoItemsCompanion copyWith( + {Value? id, + Value? title, + Value? content, + Value? category}) { + return TodoItemsCompanion( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + category: category ?? this.category, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (content.present) { + map['body'] = Variable(content.value); + } + if (category.present) { + map['category'] = Variable(category.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('TodoItemsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('category: $category') + ..write(')')) + .toString(); + } +} + +abstract class _$AppDatabase extends GeneratedDatabase { + _$AppDatabase(QueryExecutor e) : super(e); + late final $TodoItemsTable todoItems = $TodoItemsTable(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [todoItems]; +} diff --git a/drift/test/utils/windows_helper.dart b/drift/test/utils/windows_helper.dart new file mode 100644 index 0000000000..e77fb03bed --- /dev/null +++ b/drift/test/utils/windows_helper.dart @@ -0,0 +1,8 @@ +import 'dart:ffi'; +import 'dart:io'; + +DynamicLibrary openOnWindows() { + final scriptDir = File(Platform.script.toFilePath()).parent; + final libraryNextToScript = File('${scriptDir.path}/test/sqlite3.dll'); + return DynamicLibrary.open(libraryNextToScript.path); +} diff --git a/flutter/example/lib/drift/connection/connection.dart b/flutter/example/lib/drift/connection/connection.dart new file mode 100644 index 0000000000..7ef7ddc757 --- /dev/null +++ b/flutter/example/lib/drift/connection/connection.dart @@ -0,0 +1 @@ +export 'unsupported.dart' if (dart.library.ffi) 'native.dart'; diff --git a/flutter/example/lib/drift/connection/native.dart b/flutter/example/lib/drift/connection/native.dart new file mode 100644 index 0000000000..fb9987412e --- /dev/null +++ b/flutter/example/lib/drift/connection/native.dart @@ -0,0 +1,7 @@ +import 'package:drift/backends.dart'; +import 'package:drift/drift.dart'; +import 'package:drift/native.dart'; + +QueryExecutor inMemoryExecutor() { + return NativeDatabase.memory(); +} diff --git a/flutter/example/lib/drift/connection/unsupported.dart b/flutter/example/lib/drift/connection/unsupported.dart new file mode 100644 index 0000000000..87b9b45143 --- /dev/null +++ b/flutter/example/lib/drift/connection/unsupported.dart @@ -0,0 +1,17 @@ +import 'package:drift/drift.dart'; + +Never _unsupported() { + throw UnsupportedError( + 'No suitable database implementation was found on this platform.'); +} + +// Depending on the platform the app is compiled to, the following stubs will +// be replaced with the methods in native.dart or web.dart + +QueryExecutor inMemoryExecutor() { + return _unsupported(); +} + +Future validateDatabaseSchema(GeneratedDatabase database) async { + _unsupported(); +} diff --git a/flutter/example/lib/drift/database.dart b/flutter/example/lib/drift/database.dart new file mode 100644 index 0000000000..914a87ca1a --- /dev/null +++ b/flutter/example/lib/drift/database.dart @@ -0,0 +1,18 @@ +import 'package:drift/drift.dart'; + +part 'database.g.dart'; + +class TodoItems extends Table { + IntColumn get id => integer().autoIncrement()(); + TextColumn get title => text().withLength(min: 6, max: 32)(); + TextColumn get content => text().named('body')(); + IntColumn get category => integer().nullable()(); +} + +@DriftDatabase(tables: [TodoItems]) +class AppDatabase extends _$AppDatabase { + AppDatabase(super.e); + + @override + int get schemaVersion => 1; +} diff --git a/flutter/example/lib/drift/database.g.dart b/flutter/example/lib/drift/database.g.dart new file mode 100644 index 0000000000..1f9d234456 --- /dev/null +++ b/flutter/example/lib/drift/database.g.dart @@ -0,0 +1,269 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'database.dart'; + +// ignore_for_file: type=lint +class $TodoItemsTable extends TodoItems + with TableInfo<$TodoItemsTable, TodoItem> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $TodoItemsTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', aliasedName, false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: + GeneratedColumn.constraintIsAlways('PRIMARY KEY AUTOINCREMENT')); + static const VerificationMeta _titleMeta = const VerificationMeta('title'); + @override + late final GeneratedColumn title = GeneratedColumn( + 'title', aliasedName, false, + additionalChecks: + GeneratedColumn.checkTextLength(minTextLength: 6, maxTextLength: 32), + type: DriftSqlType.string, + requiredDuringInsert: true); + static const VerificationMeta _contentMeta = + const VerificationMeta('content'); + @override + late final GeneratedColumn content = GeneratedColumn( + 'body', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + static const VerificationMeta _categoryMeta = + const VerificationMeta('category'); + @override + late final GeneratedColumn category = GeneratedColumn( + 'category', aliasedName, true, + type: DriftSqlType.int, requiredDuringInsert: false); + @override + List get $columns => [id, title, content, category]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'todo_items'; + @override + VerificationContext validateIntegrity(Insertable instance, + {bool isInserting = false}) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } + if (data.containsKey('title')) { + context.handle( + _titleMeta, title.isAcceptableOrUnknown(data['title']!, _titleMeta)); + } else if (isInserting) { + context.missing(_titleMeta); + } + if (data.containsKey('body')) { + context.handle(_contentMeta, + content.isAcceptableOrUnknown(data['body']!, _contentMeta)); + } else if (isInserting) { + context.missing(_contentMeta); + } + if (data.containsKey('category')) { + context.handle(_categoryMeta, + category.isAcceptableOrUnknown(data['category']!, _categoryMeta)); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + TodoItem map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return TodoItem( + id: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}id'])!, + title: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}title'])!, + content: attachedDatabase.typeMapping + .read(DriftSqlType.string, data['${effectivePrefix}body'])!, + category: attachedDatabase.typeMapping + .read(DriftSqlType.int, data['${effectivePrefix}category']), + ); + } + + @override + $TodoItemsTable createAlias(String alias) { + return $TodoItemsTable(attachedDatabase, alias); + } +} + +class TodoItem extends DataClass implements Insertable { + final int id; + final String title; + final String content; + final int? category; + const TodoItem( + {required this.id, + required this.title, + required this.content, + this.category}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['title'] = Variable(title); + map['body'] = Variable(content); + if (!nullToAbsent || category != null) { + map['category'] = Variable(category); + } + return map; + } + + TodoItemsCompanion toCompanion(bool nullToAbsent) { + return TodoItemsCompanion( + id: Value(id), + title: Value(title), + content: Value(content), + category: category == null && nullToAbsent + ? const Value.absent() + : Value(category), + ); + } + + factory TodoItem.fromJson(Map json, + {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return TodoItem( + id: serializer.fromJson(json['id']), + title: serializer.fromJson(json['title']), + content: serializer.fromJson(json['content']), + category: serializer.fromJson(json['category']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'title': serializer.toJson(title), + 'content': serializer.toJson(content), + 'category': serializer.toJson(category), + }; + } + + TodoItem copyWith( + {int? id, + String? title, + String? content, + Value category = const Value.absent()}) => + TodoItem( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + category: category.present ? category.value : this.category, + ); + @override + String toString() { + return (StringBuffer('TodoItem(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('category: $category') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, title, content, category); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is TodoItem && + other.id == this.id && + other.title == this.title && + other.content == this.content && + other.category == this.category); +} + +class TodoItemsCompanion extends UpdateCompanion { + final Value id; + final Value title; + final Value content; + final Value category; + const TodoItemsCompanion({ + this.id = const Value.absent(), + this.title = const Value.absent(), + this.content = const Value.absent(), + this.category = const Value.absent(), + }); + TodoItemsCompanion.insert({ + this.id = const Value.absent(), + required String title, + required String content, + this.category = const Value.absent(), + }) : title = Value(title), + content = Value(content); + static Insertable custom({ + Expression? id, + Expression? title, + Expression? content, + Expression? category, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (title != null) 'title': title, + if (content != null) 'body': content, + if (category != null) 'category': category, + }); + } + + TodoItemsCompanion copyWith( + {Value? id, + Value? title, + Value? content, + Value? category}) { + return TodoItemsCompanion( + id: id ?? this.id, + title: title ?? this.title, + content: content ?? this.content, + category: category ?? this.category, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (title.present) { + map['title'] = Variable(title.value); + } + if (content.present) { + map['body'] = Variable(content.value); + } + if (category.present) { + map['category'] = Variable(category.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('TodoItemsCompanion(') + ..write('id: $id, ') + ..write('title: $title, ') + ..write('content: $content, ') + ..write('category: $category') + ..write(')')) + .toString(); + } +} + +abstract class _$AppDatabase extends GeneratedDatabase { + _$AppDatabase(QueryExecutor e) : super(e); + late final $TodoItemsTable todoItems = $TodoItemsTable(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [todoItems]; +} diff --git a/flutter/example/lib/main.dart b/flutter/example/lib/main.dart index 3d044c155d..2011342d2a 100644 --- a/flutter/example/lib/main.dart +++ b/flutter/example/lib/main.dart @@ -7,14 +7,18 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:logging/logging.dart'; +import 'package:sentry_drift/sentry_drift.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sentry_sqflite/sentry_sqflite.dart'; import 'package:sqflite/sqflite.dart'; + // import 'package:sqflite_common_ffi/sqflite_ffi.dart'; // import 'package:sqflite_common_ffi_web/sqflite_ffi_web.dart'; import 'package:universal_platform/universal_platform.dart'; import 'package:feedback/feedback.dart' as feedback; import 'package:provider/provider.dart'; +import 'drift/database.dart'; +import 'drift/connection/connection.dart'; import 'user_feedback_dialog.dart'; import 'package:dio/dio.dart'; import 'package:sentry_dio/sentry_dio.dart'; @@ -149,6 +153,12 @@ class MainScaffold extends StatelessWidget { children: [ if (_isIntegrationTest) const IntegrationTestWidget(), const Center(child: Text('Trigger an action:\n')), + // For simplicity sake we skip the web set up for now. + if (!UniversalPlatform.isWeb) + ElevatedButton( + onPressed: () => driftTest(), + child: const Text('drift'), + ), ElevatedButton( onPressed: () => sqfliteTest(), child: const Text('sqflite'), @@ -467,6 +477,34 @@ class MainScaffold extends StatelessWidget { await tr.finish(status: const SpanStatus.ok()); } + + Future driftTest() async { + final tr = Sentry.startTransaction( + 'driftTest', + 'db', + bindToScope: true, + ); + + final executor = SentryQueryExecutor( + () async => inMemoryExecutor(), + databaseName: 'sentry_in_memory_db', + ); + + final db = AppDatabase(executor); + + await db.into(db.todoItems).insert( + TodoItemsCompanion.insert( + title: 'This is a test thing', + content: 'test', + ), + ); + + await db.select(db.todoItems).get(); + + await db.close(); + + await tr.finish(status: const SpanStatus.ok()); + } } extension BuildContextExtension on BuildContext { diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index b375a829d0..d7e5b0b244 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -17,17 +17,20 @@ dependencies: sentry_logging: sentry_sqflite: sentry_file: + sentry_drift: universal_platform: ^1.0.0 feedback: ^2.0.0 provider: ^6.0.0 dio: any # This gets constrained by `sentry_dio` sqflite: any # This gets constrained by `sentry_sqflite` logging: any # This gets constrained by `sentry_logging` + drift: any # This gets constrained by `sentry_drift` package_info_plus: ^4.0.0 path_provider: ^2.0.0 #sqflite_common_ffi: ^2.0.0 #sqflite_common_ffi_web: ^0.3.0 http: ^1.0.0 + sqlite3_flutter_libs: ^0.5.0 dev_dependencies: flutter_lints: ^2.0.0 diff --git a/flutter/example/pubspec_overrides.yaml b/flutter/example/pubspec_overrides.yaml index 7afb410d83..fd543af840 100644 --- a/flutter/example/pubspec_overrides.yaml +++ b/flutter/example/pubspec_overrides.yaml @@ -11,3 +11,5 @@ dependency_overrides: path: ../../sqflite sentry_file: path: ../../file + sentry_drift: + path: ../../drift diff --git a/flutter/test/mocks.mocks.dart b/flutter/test/mocks.mocks.dart index 45a91b1b0f..e2807ef405 100644 --- a/flutter/test/mocks.mocks.dart +++ b/flutter/test/mocks.mocks.dart @@ -80,9 +80,8 @@ class _FakeSentryTracer_4 extends _i1.SmartFake implements _i4.SentryTracer { ); } -class _FakeSentryTransaction_5 extends _i1.SmartFake - implements _i3.SentryTransaction { - _FakeSentryTransaction_5( +class _FakeSentryId_5 extends _i1.SmartFake implements _i3.SentryId { + _FakeSentryId_5( Object parent, Invocation parentInvocation, ) : super( @@ -91,8 +90,8 @@ class _FakeSentryTransaction_5 extends _i1.SmartFake ); } -class _FakeMethodCodec_6 extends _i1.SmartFake implements _i5.MethodCodec { - _FakeMethodCodec_6( +class _FakeContexts_6 extends _i1.SmartFake implements _i3.Contexts { + _FakeContexts_6( Object parent, Invocation parentInvocation, ) : super( @@ -101,9 +100,19 @@ class _FakeMethodCodec_6 extends _i1.SmartFake implements _i5.MethodCodec { ); } -class _FakeBinaryMessenger_7 extends _i1.SmartFake - implements _i6.BinaryMessenger { - _FakeBinaryMessenger_7( +class _FakeSentryTransaction_7 extends _i1.SmartFake + implements _i3.SentryTransaction { + _FakeSentryTransaction_7( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeMethodCodec_8 extends _i1.SmartFake implements _i5.MethodCodec { + _FakeMethodCodec_8( Object parent, Invocation parentInvocation, ) : super( @@ -112,8 +121,9 @@ class _FakeBinaryMessenger_7 extends _i1.SmartFake ); } -class _FakeSentryOptions_8 extends _i1.SmartFake implements _i2.SentryOptions { - _FakeSentryOptions_8( +class _FakeBinaryMessenger_9 extends _i1.SmartFake + implements _i6.BinaryMessenger { + _FakeBinaryMessenger_9( Object parent, Invocation parentInvocation, ) : super( @@ -122,8 +132,8 @@ class _FakeSentryOptions_8 extends _i1.SmartFake implements _i2.SentryOptions { ); } -class _FakeSentryId_9 extends _i1.SmartFake implements _i3.SentryId { - _FakeSentryId_9( +class _FakeSentryOptions_10 extends _i1.SmartFake implements _i2.SentryOptions { + _FakeSentryOptions_10( Object parent, Invocation parentInvocation, ) : super( @@ -132,8 +142,8 @@ class _FakeSentryId_9 extends _i1.SmartFake implements _i3.SentryId { ); } -class _FakeScope_10 extends _i1.SmartFake implements _i2.Scope { - _FakeScope_10( +class _FakeScope_11 extends _i1.SmartFake implements _i2.Scope { + _FakeScope_11( Object parent, Invocation parentInvocation, ) : super( @@ -142,8 +152,8 @@ class _FakeScope_10 extends _i1.SmartFake implements _i2.Scope { ); } -class _FakeHub_11 extends _i1.SmartFake implements _i2.Hub { - _FakeHub_11( +class _FakeHub_12 extends _i1.SmartFake implements _i2.Hub { + _FakeHub_12( Object parent, Invocation parentInvocation, ) : super( @@ -184,6 +194,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { Invocation.getter(#name), returnValue: '', ) as String); + @override set name(String? _name) => super.noSuchMethod( Invocation.setter( @@ -192,12 +203,14 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), returnValueForMissingStub: null, ); + @override _i3.SentryTransactionNameSource get transactionNameSource => (super.noSuchMethod( Invocation.getter(#transactionNameSource), returnValue: _i3.SentryTransactionNameSource.custom, ) as _i3.SentryTransactionNameSource); + @override set transactionNameSource( _i3.SentryTransactionNameSource? _transactionNameSource) => @@ -208,6 +221,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), returnValueForMissingStub: null, ); + @override set profiler(_i9.SentryProfiler? _profiler) => super.noSuchMethod( Invocation.setter( @@ -216,6 +230,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), returnValueForMissingStub: null, ); + @override set profileInfo(_i9.SentryProfileInfo? _profileInfo) => super.noSuchMethod( Invocation.setter( @@ -224,6 +239,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), returnValueForMissingStub: null, ); + @override _i2.SentrySpanContext get context => (super.noSuchMethod( Invocation.getter(#context), @@ -232,6 +248,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { Invocation.getter(#context), ), ) as _i2.SentrySpanContext); + @override set origin(String? origin) => super.noSuchMethod( Invocation.setter( @@ -240,6 +257,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), returnValueForMissingStub: null, ); + @override DateTime get startTimestamp => (super.noSuchMethod( Invocation.getter(#startTimestamp), @@ -248,21 +266,25 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { Invocation.getter(#startTimestamp), ), ) as DateTime); + @override Map get data => (super.noSuchMethod( Invocation.getter(#data), returnValue: {}, ) as Map); + @override bool get finished => (super.noSuchMethod( Invocation.getter(#finished), returnValue: false, ) as bool); + @override List<_i3.SentrySpan> get children => (super.noSuchMethod( Invocation.getter(#children), returnValue: <_i3.SentrySpan>[], ) as List<_i3.SentrySpan>); + @override set throwable(dynamic throwable) => super.noSuchMethod( Invocation.setter( @@ -271,27 +293,31 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), returnValueForMissingStub: null, ); + @override - set status(dynamic status) => super.noSuchMethod( + set status(_i3.SpanStatus? status) => super.noSuchMethod( Invocation.setter( #status, status, ), returnValueForMissingStub: null, ); + @override Map get tags => (super.noSuchMethod( Invocation.getter(#tags), returnValue: {}, ) as Map); + @override Map get measurements => (super.noSuchMethod( Invocation.getter(#measurements), returnValue: {}, ) as Map); + @override _i7.Future finish({ - dynamic status, + _i3.SpanStatus? status, DateTime? endTimestamp, }) => (super.noSuchMethod( @@ -306,6 +332,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { returnValue: _i7.Future.value(), returnValueForMissingStub: _i7.Future.value(), ) as _i7.Future); + @override void removeData(String? key) => super.noSuchMethod( Invocation.method( @@ -314,6 +341,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), returnValueForMissingStub: null, ); + @override void removeTag(String? key) => super.noSuchMethod( Invocation.method( @@ -322,6 +350,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), returnValueForMissingStub: null, ); + @override void setData( String? key, @@ -337,6 +366,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), returnValueForMissingStub: null, ); + @override void setTag( String? key, @@ -352,6 +382,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), returnValueForMissingStub: null, ); + @override _i2.ISentrySpan startChild( String? operation, { @@ -379,9 +410,10 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), ), ) as _i2.ISentrySpan); + @override _i2.ISentrySpan startChildWithParentSpanId( - dynamic parentSpanId, + _i3.SpanId? parentSpanId, String? operation, { String? description, DateTime? startTimestamp, @@ -413,6 +445,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), ), ) as _i2.ISentrySpan); + @override _i3.SentryTraceHeader toSentryTrace() => (super.noSuchMethod( Invocation.method( @@ -427,6 +460,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), ), ) as _i3.SentryTraceHeader); + @override void setMeasurement( String? name, @@ -444,6 +478,7 @@ class MockSentryTracer extends _i1.Mock implements _i4.SentryTracer { ), returnValueForMissingStub: null, ); + @override void scheduleFinish() => super.noSuchMethod( Invocation.method( @@ -471,6 +506,7 @@ class MockSentryTransaction extends _i1.Mock implements _i3.SentryTransaction { Invocation.getter(#startTimestamp), ), ) as DateTime); + @override set startTimestamp(DateTime? _startTimestamp) => super.noSuchMethod( Invocation.setter( @@ -479,11 +515,13 @@ class MockSentryTransaction extends _i1.Mock implements _i3.SentryTransaction { ), returnValueForMissingStub: null, ); + @override List<_i3.SentrySpan> get spans => (super.noSuchMethod( Invocation.getter(#spans), returnValue: <_i3.SentrySpan>[], ) as List<_i3.SentrySpan>); + @override set spans(List<_i3.SentrySpan>? _spans) => super.noSuchMethod( Invocation.setter( @@ -492,6 +530,7 @@ class MockSentryTransaction extends _i1.Mock implements _i3.SentryTransaction { ), returnValueForMissingStub: null, ); + @override _i4.SentryTracer get tracer => (super.noSuchMethod( Invocation.getter(#tracer), @@ -500,11 +539,13 @@ class MockSentryTransaction extends _i1.Mock implements _i3.SentryTransaction { Invocation.getter(#tracer), ), ) as _i4.SentryTracer); + @override Map get measurements => (super.noSuchMethod( Invocation.getter(#measurements), returnValue: {}, ) as Map); + @override set measurements(Map? _measurements) => super.noSuchMethod( @@ -514,6 +555,7 @@ class MockSentryTransaction extends _i1.Mock implements _i3.SentryTransaction { ), returnValueForMissingStub: null, ); + @override set transactionInfo(_i3.SentryTransactionInfo? _transactionInfo) => super.noSuchMethod( @@ -523,16 +565,37 @@ class MockSentryTransaction extends _i1.Mock implements _i3.SentryTransaction { ), returnValueForMissingStub: null, ); + @override bool get finished => (super.noSuchMethod( Invocation.getter(#finished), returnValue: false, ) as bool); + @override bool get sampled => (super.noSuchMethod( Invocation.getter(#sampled), returnValue: false, ) as bool); + + @override + _i3.SentryId get eventId => (super.noSuchMethod( + Invocation.getter(#eventId), + returnValue: _FakeSentryId_5( + this, + Invocation.getter(#eventId), + ), + ) as _i3.SentryId); + + @override + _i3.Contexts get contexts => (super.noSuchMethod( + Invocation.getter(#contexts), + returnValue: _FakeContexts_6( + this, + Invocation.getter(#contexts), + ), + ) as _i3.Contexts); + @override Map toJson() => (super.noSuchMethod( Invocation.method( @@ -541,6 +604,7 @@ class MockSentryTransaction extends _i1.Mock implements _i3.SentryTransaction { ), returnValue: {}, ) as Map); + @override _i3.SentryTransaction copyWith({ _i3.SentryId? eventId, @@ -552,7 +616,7 @@ class MockSentryTransaction extends _i1.Mock implements _i3.SentryTransaction { String? dist, String? environment, Map? modules, - dynamic message, + _i3.SentryMessage? message, String? transaction, dynamic throwable, _i3.SentryLevel? level, @@ -561,13 +625,13 @@ class MockSentryTransaction extends _i1.Mock implements _i3.SentryTransaction { Map? extra, List? fingerprint, _i3.SentryUser? user, - dynamic contexts, + _i3.Contexts? contexts, List<_i3.Breadcrumb>? breadcrumbs, _i3.SdkVersion? sdk, - dynamic request, - dynamic debugMeta, + _i3.SentryRequest? request, + _i3.DebugMeta? debugMeta, List<_i3.SentryException>? exceptions, - List? threads, + List<_i3.SentryThread>? threads, String? type, Map? measurements, _i3.SentryTransactionInfo? transactionInfo, @@ -607,7 +671,7 @@ class MockSentryTransaction extends _i1.Mock implements _i3.SentryTransaction { #transactionInfo: transactionInfo, }, ), - returnValue: _FakeSentryTransaction_5( + returnValue: _FakeSentryTransaction_7( this, Invocation.method( #copyWith, @@ -660,22 +724,25 @@ class MockMethodChannel extends _i1.Mock implements _i10.MethodChannel { Invocation.getter(#name), returnValue: '', ) as String); + @override _i5.MethodCodec get codec => (super.noSuchMethod( Invocation.getter(#codec), - returnValue: _FakeMethodCodec_6( + returnValue: _FakeMethodCodec_8( this, Invocation.getter(#codec), ), ) as _i5.MethodCodec); + @override _i6.BinaryMessenger get binaryMessenger => (super.noSuchMethod( Invocation.getter(#binaryMessenger), - returnValue: _FakeBinaryMessenger_7( + returnValue: _FakeBinaryMessenger_9( this, Invocation.getter(#binaryMessenger), ), ) as _i6.BinaryMessenger); + @override _i7.Future invokeMethod( String? method, [ @@ -691,6 +758,7 @@ class MockMethodChannel extends _i1.Mock implements _i10.MethodChannel { ), returnValue: _i7.Future.value(), ) as _i7.Future); + @override _i7.Future?> invokeListMethod( String? method, [ @@ -706,6 +774,7 @@ class MockMethodChannel extends _i1.Mock implements _i10.MethodChannel { ), returnValue: _i7.Future?>.value(), ) as _i7.Future?>); + @override _i7.Future?> invokeMapMethod( String? method, [ @@ -721,6 +790,7 @@ class MockMethodChannel extends _i1.Mock implements _i10.MethodChannel { ), returnValue: _i7.Future?>.value(), ) as _i7.Future?>); + @override void setMethodCallHandler( _i7.Future Function(_i5.MethodCall)? handler) => @@ -744,32 +814,36 @@ class MockHub extends _i1.Mock implements _i2.Hub { @override _i2.SentryOptions get options => (super.noSuchMethod( Invocation.getter(#options), - returnValue: _FakeSentryOptions_8( + returnValue: _FakeSentryOptions_10( this, Invocation.getter(#options), ), ) as _i2.SentryOptions); + @override bool get isEnabled => (super.noSuchMethod( Invocation.getter(#isEnabled), returnValue: false, ) as bool); + @override _i3.SentryId get lastEventId => (super.noSuchMethod( Invocation.getter(#lastEventId), - returnValue: _FakeSentryId_9( + returnValue: _FakeSentryId_5( this, Invocation.getter(#lastEventId), ), ) as _i3.SentryId); + @override _i2.Scope get scope => (super.noSuchMethod( Invocation.getter(#scope), - returnValue: _FakeScope_10( + returnValue: _FakeScope_11( this, Invocation.getter(#scope), ), ) as _i2.Scope); + @override set profilerFactory(_i9.SentryProfilerFactory? value) => super.noSuchMethod( Invocation.setter( @@ -778,9 +852,10 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), returnValueForMissingStub: null, ); + @override _i7.Future<_i3.SentryId> captureEvent( - dynamic event, { + _i3.SentryEvent? event, { dynamic stackTrace, _i2.Hint? hint, _i2.ScopeCallback? withScope, @@ -795,7 +870,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { #withScope: withScope, }, ), - returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_9( + returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_5( this, Invocation.method( #captureEvent, @@ -808,6 +883,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), )), ) as _i7.Future<_i3.SentryId>); + @override _i7.Future<_i3.SentryId> captureException( dynamic throwable, { @@ -825,7 +901,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { #withScope: withScope, }, ), - returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_9( + returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_5( this, Invocation.method( #captureException, @@ -838,6 +914,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), )), ) as _i7.Future<_i3.SentryId>); + @override _i7.Future<_i3.SentryId> captureMessage( String? message, { @@ -859,7 +936,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { #withScope: withScope, }, ), - returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_9( + returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_5( this, Invocation.method( #captureMessage, @@ -874,6 +951,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), )), ) as _i7.Future<_i3.SentryId>); + @override _i7.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => (super.noSuchMethod( @@ -884,6 +962,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { returnValue: _i7.Future.value(), returnValueForMissingStub: _i7.Future.value(), ) as _i7.Future); + @override _i7.Future addBreadcrumb( _i3.Breadcrumb? crumb, { @@ -898,6 +977,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { returnValue: _i7.Future.value(), returnValueForMissingStub: _i7.Future.value(), ) as _i7.Future); + @override void bindClient(_i2.SentryClient? client) => super.noSuchMethod( Invocation.method( @@ -906,13 +986,14 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), returnValueForMissingStub: null, ); + @override _i2.Hub clone() => (super.noSuchMethod( Invocation.method( #clone, [], ), - returnValue: _FakeHub_11( + returnValue: _FakeHub_12( this, Invocation.method( #clone, @@ -920,6 +1001,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), ), ) as _i2.Hub); + @override _i7.Future close() => (super.noSuchMethod( Invocation.method( @@ -929,12 +1011,14 @@ class MockHub extends _i1.Mock implements _i2.Hub { returnValue: _i7.Future.value(), returnValueForMissingStub: _i7.Future.value(), ) as _i7.Future); + @override _i7.FutureOr configureScope(_i2.ScopeCallback? callback) => (super.noSuchMethod(Invocation.method( #configureScope, [callback], )) as _i7.FutureOr); + @override _i2.ISentrySpan startTransaction( String? name, @@ -979,6 +1063,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { customSamplingContext: customSamplingContext, ), ) as _i2.ISentrySpan); + @override _i2.ISentrySpan startTransactionWithContext( _i2.SentryTransactionContext? transactionContext, { @@ -1021,6 +1106,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), ), ) as _i2.ISentrySpan); + @override _i7.Future<_i3.SentryId> captureTransaction( _i3.SentryTransaction? transaction, { @@ -1032,7 +1118,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { [transaction], {#traceContext: traceContext}, ), - returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_9( + returnValue: _i7.Future<_i3.SentryId>.value(_FakeSentryId_5( this, Invocation.method( #captureTransaction, @@ -1041,6 +1127,7 @@ class MockHub extends _i1.Mock implements _i2.Hub { ), )), ) as _i7.Future<_i3.SentryId>); + @override void setSpanContext( dynamic throwable, From 3e5078cc0f911ca923a0e1658ba37a2eb28419c6 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 15 Nov 2023 10:48:34 +0000 Subject: [PATCH 070/166] fix: setting the correct locale to contexts with navigatorKey (#1724) * Add localization with navigatorKey * Update CHANGELOG * Update tests * Update tests * Format * Remove unused import * Apply review improvements * Update CHANGELOG --- CHANGELOG.md | 2 + .../flutter_enricher_event_processor.dart | 12 +++++- flutter/lib/src/sentry_flutter_options.dart | 3 ++ flutter/pubspec.yaml | 2 + ...flutter_enricher_event_processor_test.dart | 39 ++++++++++++++++++- 5 files changed, 56 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fe44ecf20..3e84e2f71d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Fixes +- Fixes setting the correct locale to contexts with navigatorKey ([#1724](https://github.com/getsentry/sentry-dart/pull/1724)) + - If you have a selected locale in e.g MaterialApp, this fix will retrieve the correct locale for the event context. - Flutter renderer information was removed on dart:io platforms since it didn't add the correct value ([#1723](https://github.com/getsentry/sentry-dart/pull/1723)) - Unsupported types with Expando ([#1690](https://github.com/getsentry/sentry-dart/pull/1690)) diff --git a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart index f8003248ec..de6b6bab9f 100644 --- a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart +++ b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart @@ -107,7 +107,9 @@ class FlutterEnricherEventProcessor implements EventProcessor { } SentryCulture _getCulture(SentryCulture? culture) { - final languageTag = _window?.locale.toLanguageTag(); + final windowLanguageTag = _window?.locale.toLanguageTag(); + final screenLocale = _retrieveWidgetLocale(_options.navigatorKey); + final languageTag = screenLocale?.toLanguageTag() ?? windowLanguageTag; // Future enhancement: // _window?.locales @@ -256,4 +258,12 @@ class FlutterEnricherEventProcessor implements EventProcessor { return app; } } + + Locale? _retrieveWidgetLocale(GlobalKey? navigatorKey) { + final BuildContext? context = navigatorKey?.currentContext; + if (context != null) { + return Localizations.maybeLocaleOf(context); + } + return null; + } } diff --git a/flutter/lib/src/sentry_flutter_options.dart b/flutter/lib/src/sentry_flutter_options.dart index 7a82f3b53f..1a71a0d37e 100644 --- a/flutter/lib/src/sentry_flutter_options.dart +++ b/flutter/lib/src/sentry_flutter_options.dart @@ -286,4 +286,7 @@ class SentryFlutterOptions extends SentryOptions { // ignore: invalid_use_of_internal_member super.profilesSampleRate = value; } + + /// The [navigatorKey] is used to add information of the currently used locale to the contexts. + GlobalKey? navigatorKey; } diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index ded2470f09..15b69ec73a 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -29,6 +29,8 @@ dev_dependencies: flutter_lints: ^2.0.0 collection: ^1.16.0 remove_from_coverage: ^2.0.0 + flutter_localizations: + sdk: flutter flutter: plugin: diff --git a/flutter/test/event_processor/flutter_enricher_event_processor_test.dart b/flutter/test/event_processor/flutter_enricher_event_processor_test.dart index 6b95793ad7..5fbc1d7034 100644 --- a/flutter/test/event_processor/flutter_enricher_event_processor_test.dart +++ b/flutter/test/event_processor/flutter_enricher_event_processor_test.dart @@ -1,9 +1,11 @@ import 'dart:async'; import 'package:flutter/foundation.dart'; + // backcompatibility for Flutter < 3.3 // ignore: unnecessary_import import 'package:flutter/material.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; @@ -104,6 +106,38 @@ void main() { expect(culture?.timezone, isNotNull); }); + testWidgets( + 'GIVEN MaterialApp WHEN setting locale and sentryNavigatorKey THEN enrich event culture with selected locale', + (WidgetTester tester) async { + GlobalKey navigatorKey = GlobalKey(); + + await tester.pumpWidget(MaterialApp( + navigatorKey: navigatorKey, + home: Material(), + localizationsDelegates: const [ + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + supportedLocales: const [ + Locale('en', 'US'), + Locale('de', 'DE'), + ], + locale: const Locale('de', 'DE'), + )); + + final enricher = fixture.getSut( + binding: () => tester.binding, + optionsBuilder: (options) { + options.navigatorKey = navigatorKey; + return options; + }, + ); + + final event = await enricher.apply(SentryEvent()); + + expect(event?.contexts.culture?.locale, 'de-DE'); + }); + testWidgets('app context in foreground', (WidgetTester tester) async { final enricher = fixture.getSut( binding: () => tester.binding, @@ -380,16 +414,19 @@ class Fixture { PlatformChecker? checker, bool hasNativeIntegration = false, bool reportPackages = true, + SentryFlutterOptions Function(SentryFlutterOptions)? optionsBuilder, }) { final platformChecker = checker ?? MockPlatformChecker( hasNativeIntegration: hasNativeIntegration, ); + final options = SentryFlutterOptions( dsn: fakeDsn, checker: platformChecker, )..reportPackages = reportPackages; - return FlutterEnricherEventProcessor(options); + final customizedOptions = optionsBuilder?.call(options) ?? options; + return FlutterEnricherEventProcessor(customizedOptions); } PageRoute route(RouteSettings? settings) => PageRouteBuilder( From 7748b7cce475ff9e094eafe66ba7e3850ef59f99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Wed, 15 Nov 2023 11:34:37 +0000 Subject: [PATCH 071/166] APM for hive (#1672) * setup sentry hive library * Add SentryBox with first test * test added spans * Add sentry hive impl * introduce base box to avoid duplication * implement lazy box test * expose sentry hive and updata documentation * add hive to flutter example app * test throwing in base_box, cleanup * test lazy box error cases * test sentry hive impl failures * run fix & format * fix test failure race condition * add hive workflow, update other workflows * add changelog entry * remove path+provider from dev_dependencies * add coverage dev dependency * fix deprecation warnings * fix changelog * move span wrapping on own class to avoid duplication * add sentry box collection * test added spans, fix imports * test throwing code * fix changelog * change dbSystem value * change db system * remove unneccessary async & await * Fix analyze * Formatting * Add changelog symlink * Ignore hive coverage * Create symlink for dartdoc_options --------- Co-authored-by: Giancarlo Buenaflor --- .craft.yml | 4 +- .github/workflows/dart.yml | 1 + .github/workflows/diagrams.yml | 4 + .github/workflows/dio.yml | 1 + .github/workflows/e2e_dart.yml | 1 + .github/workflows/file.yml | 1 + .github/workflows/flutter.yml | 1 + .github/workflows/hive.yml | 71 + .github/workflows/logging.yml | 1 + .github/workflows/min_version_test.yml | 1 + .github/workflows/sqflite.yml | 1 + .gitignore | 1 + CHANGELOG.md | 1 + dart/lib/src/sentry_trace_origins.dart | 4 + drift/CHANGELOG.md | 1597 +---------------- drift/dartdoc_options.yaml | 4 +- flutter/example/lib/main.dart | 31 + flutter/example/pubspec.yaml | 2 + flutter/example/pubspec_overrides.yaml | 2 + hive/.gitignore | 14 + hive/CHANGELOG.md | 1 + hive/LICENSE | 21 + hive/README.md | 85 + hive/analysis_options.yaml | 34 + hive/boxes_bad_keys.hive | 0 hive/dartdoc_options.yaml | 1 + hive/example/example.dart | 54 + hive/lib/sentry_hive.dart | 15 + hive/lib/src/default_compaction_strategy.dart | 9 + hive/lib/src/default_key_comparator.dart | 20 + hive/lib/src/sentry_box.dart | 37 + hive/lib/src/sentry_box_base.dart | 203 +++ hive/lib/src/sentry_box_collection.dart | 125 ++ hive/lib/src/sentry_hive_impl.dart | 203 +++ hive/lib/src/sentry_hive_interface.dart | 11 + hive/lib/src/sentry_lazy_box.dart | 45 + hive/lib/src/sentry_span_helper.dart | 58 + hive/people-box-collection_bad_keys.hive | 0 hive/pubspec.yaml | 22 + hive/pubspec_overrides.yaml | 3 + hive/test/mocks/mocks.dart | 18 + hive/test/mocks/mocks.mocks.dart | 1307 ++++++++++++++ hive/test/person.dart | 24 + hive/test/sentry_box_base_test.dart | 297 +++ hive/test/sentry_box_collection_test.dart | 225 +++ hive/test/sentry_hive_impl_test.dart | 310 ++++ hive/test/sentry_lazy_box_test.dart | 170 ++ 47 files changed, 3441 insertions(+), 1600 deletions(-) create mode 100644 .github/workflows/hive.yml mode change 100644 => 120000 drift/CHANGELOG.md mode change 100644 => 120000 drift/dartdoc_options.yaml create mode 100644 hive/.gitignore create mode 120000 hive/CHANGELOG.md create mode 100644 hive/LICENSE create mode 100644 hive/README.md create mode 100644 hive/analysis_options.yaml create mode 100644 hive/boxes_bad_keys.hive create mode 120000 hive/dartdoc_options.yaml create mode 100644 hive/example/example.dart create mode 100644 hive/lib/sentry_hive.dart create mode 100644 hive/lib/src/default_compaction_strategy.dart create mode 100644 hive/lib/src/default_key_comparator.dart create mode 100644 hive/lib/src/sentry_box.dart create mode 100644 hive/lib/src/sentry_box_base.dart create mode 100644 hive/lib/src/sentry_box_collection.dart create mode 100644 hive/lib/src/sentry_hive_impl.dart create mode 100644 hive/lib/src/sentry_hive_interface.dart create mode 100644 hive/lib/src/sentry_lazy_box.dart create mode 100644 hive/lib/src/sentry_span_helper.dart create mode 100644 hive/people-box-collection_bad_keys.hive create mode 100644 hive/pubspec.yaml create mode 100644 hive/pubspec_overrides.yaml create mode 100644 hive/test/mocks/mocks.dart create mode 100644 hive/test/mocks/mocks.mocks.dart create mode 100644 hive/test/person.dart create mode 100644 hive/test/sentry_box_base_test.dart create mode 100644 hive/test/sentry_box_collection_test.dart create mode 100644 hive/test/sentry_hive_impl_test.dart create mode 100644 hive/test/sentry_lazy_box_test.dart diff --git a/.craft.yml b/.craft.yml index b456b09aab..73e213edb7 100644 --- a/.craft.yml +++ b/.craft.yml @@ -11,6 +11,7 @@ targets: dio: file: sqflite: + hive: drift: - name: github - name: registry @@ -21,5 +22,6 @@ targets: pub:sentry_dio: pub:sentry_file: pub:sentry_sqflite: - # This needs to be published on pub.dev first before uncommenting + # Initial release on pub.dev needed first before uncommenting # pub:sentry_drift: + # pub:sentry_hive: diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 20d028f0d9..32b805a524 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -11,6 +11,7 @@ on: - "dio/**" - "file/**" - "sqflite/**" + - "hive/**" - "drift/**" jobs: diff --git a/.github/workflows/diagrams.yml b/.github/workflows/diagrams.yml index ac026f4cfc..b4f403b78c 100644 --- a/.github/workflows/diagrams.yml +++ b/.github/workflows/diagrams.yml @@ -43,6 +43,10 @@ jobs: working-directory: ./logging run: lakos . -i "{test/**,example/**}" | dot -Tsvg -o class-diagram.svg + - name: hive + working-directory: ./hive + run: lakos . -i "{test/**,example/**}" | dot -Tsvg -o class-diagram.svg + # Source: https://stackoverflow.com/a/58035262 - name: Extract branch name shell: bash diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index 801138c407..6b011213e0 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -11,6 +11,7 @@ on: - "flutter/**" - "file/**" - "sqflite/**" + - "hive/**" - "drift/**" jobs: diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index 62827e69c3..9deb9a3eaf 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -12,6 +12,7 @@ on: - "flutter/**" - "file/**" - "sqflite/**" + - "hive/**" - "drift/**" env: diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index a4e17af787..f9f03aa5cf 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -11,6 +11,7 @@ on: - "flutter/**" - "dio/**" - "sqflite/**" + - "hive/**" - "drift/**" jobs: diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index d81896825e..6c48bf4747 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -11,6 +11,7 @@ on: - "dio/**" - "file/**" - "sqflite/**" + - "hive/**" - "drift/**" jobs: diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml new file mode 100644 index 0000000000..42b434d30e --- /dev/null +++ b/.github/workflows/hive.yml @@ -0,0 +1,71 @@ +name: sentry-hive +on: + push: + branches: + - main + - release/** + pull_request: + paths-ignore: + - "**/*.md" + - "logging/**" + - "flutter/**" + - "dio/**" + - "file/**" + - "sqflite/**" + +jobs: + cancel-previous-workflow: + runs-on: ubuntu-latest + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + with: + access_token: ${{ github.token }} + + build: + name: Build ${{matrix.sdk}} on ${{matrix.os}} + runs-on: ${{ matrix.os }} + timeout-minutes: 30 + defaults: + run: + shell: bash + working-directory: ./hive + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + sdk: [stable, beta] + exclude: + - os: windows-latest + sdk: beta + - os: macos-latest + sdk: beta + steps: + - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + with: + sdk: ${{ matrix.sdk }} + - uses: actions/checkout@v3 + + - name: Test VM + run: | + dart pub get + dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces + dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib + + - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # pin@v3 + if: runner.os == 'Linux' && matrix.sdk == 'stable' + with: + name: sentry_hive + files: ./hive/coverage/lcov.info + + - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 + if: runner.os == 'Linux' && matrix.sdk == 'stable' + with: + path: "./hive/coverage/lcov.info" + min_coverage: 55 + + analyze: + uses: ./.github/workflows/analyze.yml + with: + package: hive + panaThreshold: 90 diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index 3696428cd8..8529b2db12 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -11,6 +11,7 @@ on: - "flutter/**" - "file/**" - "sqflite/**" + - "hive/**" - "drift/**" jobs: diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index 8499838d41..b9116cdc52 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -9,6 +9,7 @@ on: - "**/*.md" - "file/**" - "sqflite/**" + - "hive/**" - "drift/**" jobs: diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index b1a1858756..5da5b7e557 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -11,6 +11,7 @@ on: - "flutter/**" - "dio/**" - "file/**" + - "hive/**" - "drift/**" jobs: diff --git a/.gitignore b/.gitignore index 55f9d96c39..60bf635a0c 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ file/coverage/* flutter/coverage/* sqflite/coverage/* drift/coverage/* +hive/coverage/* pubspec.lock Podfile.lock diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e84e2f71d..cec50f9143 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - Add APM integration for Drift ([#1709](https://github.com/getsentry/sentry-dart/pull/1709)) - StackTraces in `PlatformException.message` will get nicely formatted too when present ([#1716](https://github.com/getsentry/sentry-dart/pull/1716)) - Breadcrumbs for database operations ([#1656](https://github.com/getsentry/sentry-dart/pull/1656)) +- APM for hive ([#1672](https://github.com/getsentry/sentry-dart/pull/1672)) - Add `attachScreenshotOnlyWhenResumed` to options ([#1700](https://github.com/getsentry/sentry-dart/pull/1700)) ### Dependencies diff --git a/dart/lib/src/sentry_trace_origins.dart b/dart/lib/src/sentry_trace_origins.dart index 8910292b74..903348aa19 100644 --- a/dart/lib/src/sentry_trace_origins.dart +++ b/dart/lib/src/sentry_trace_origins.dart @@ -18,6 +18,10 @@ class SentryTraceOrigins { 'auto.db.sqflite.database_executor'; static const autoDbSqfliteDatabaseFactory = 'auto.db.sqflite.database_factory'; + static const autoDbHive = 'auto.db.hive'; + static const autoDbHiveBoxBase = 'auto.db.hive.box_base'; + static const autoDbHiveLazyBox = 'auto.db.hive.lazy_box'; + static const autoDbHiveBoxCollection = 'auto.db.hive.box_collection'; static const autoDbDriftQueryExecutor = 'auto.db.drift.query.executor'; static const autoDbDriftTransactionExecutor = 'auto.db.drift.transaction.executor'; diff --git a/drift/CHANGELOG.md b/drift/CHANGELOG.md deleted file mode 100644 index c640f46f6b..0000000000 --- a/drift/CHANGELOG.md +++ /dev/null @@ -1,1596 +0,0 @@ -# Changelog - -## 7.12.0 - -### Enhancements - -- Log warning if both tracesSampleRate and tracesSampler are set ([#1701](https://github.com/getsentry/sentry-dart/pull/1701)) -- Better Flutter framework stack traces - we now collect Flutter framework debug symbols for iOS, macOS and Android automatically on the Sentry server ([#1673](https://github.com/getsentry/sentry-dart/pull/1673)) - -### Features - -- Initial (alpha) support for profiling on iOS and macOS ([#1611](https://github.com/getsentry/sentry-dart/pull/1611)) - -## 7.11.0 - -### Fixes - -- Session: missing mechanism.handled is considered crash ([#3353](https://github.com/getsentry/sentry-cocoa/pull/3353)) - -### Features - -- Breadcrumbs for file I/O operations ([#1649](https://github.com/getsentry/sentry-dart/pull/1649)) - -### Dependencies - -- Enable compatibility with uuid v4 ([#1647](https://github.com/getsentry/sentry-dart/pull/1647)) -- Bump Android SDK from v6.29.0 to v6.32.0 ([#1660](https://github.com/getsentry/sentry-dart/pull/1660), [#1676](https://github.com/getsentry/sentry-dart/pull/1676), [#1688](https://github.com/getsentry/sentry-dart/pull/1688)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6320) - - [diff](https://github.com/getsentry/sentry-java/compare/6.29.0...6.32.0) -- Bump Cocoa SDK from v8.11.0 to v8.14.2 ([#1650](https://github.com/getsentry/sentry-dart/pull/1650), [#1655](https://github.com/getsentry/sentry-dart/pull/1655), [#1677](https://github.com/getsentry/sentry-dart/pull/1677), [#1691](https://github.com/getsentry/sentry-dart/pull/1691)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8142) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.11.0...8.14.2) - -## 7.10.1 - -### Enhancements - -- Add Sampling Decision to Trace Envelope Header ([#1639](https://github.com/getsentry/sentry-dart/pull/1639)) -- Add http.request.method attribute to http spans data ([#1633](https://github.com/getsentry/sentry-dart/pull/1633)) -- Add db.system and db.name attributes to db spans data ([#1629](https://github.com/getsentry/sentry-dart/pull/1629)) -- Log SDK errors to the console if the log level is `fatal` even if `debug` is disabled ([#1635](https://github.com/getsentry/sentry-dart/pull/1635)) - -### Features - -- Tracing without performance ([#1621](https://github.com/getsentry/sentry-dart/pull/1621)) - -### Fixes - -- Normalize data properties of `SentryUser` and `Breadcrumb` before sending over method channel ([#1591](https://github.com/getsentry/sentry-dart/pull/1591)) -- Fixing memory leak issue in SentryFlutterPlugin (Android Plugin) ([#1588](https://github.com/getsentry/sentry-dart/pull/1588)) -- Discard empty stack frames ([#1625](https://github.com/getsentry/sentry-dart/pull/1625)) -- Disable scope sync for cloned scopes ([#1628](https://github.com/getsentry/sentry-dart/pull/1628)) - -### Dependencies - -- Bump Android SDK from v6.25.2 to v6.29.0 ([#1586](https://github.com/getsentry/sentry-dart/pull/1586), [#1630](https://github.com/getsentry/sentry-dart/pull/1630)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6290) - - [diff](https://github.com/getsentry/sentry-java/compare/6.25.2...6.29.0) -- Bump Cocoa SDK from v8.9.1 to v8.11.0 ([#1584](https://github.com/getsentry/sentry-dart/pull/1584), [#1606](https://github.com/getsentry/sentry-dart/pull/1606), [#1626](https://github.com/getsentry/sentry-dart/pull/1626)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8110) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.9.1...8.11.0) - -## 7.9.0 - -### Features - -- Send trace origin ([#1534](https://github.com/getsentry/sentry-dart/pull/1534)) - -[Trace origin](https://develop.sentry.dev/sdk/performance/trace-origin/) indicates what created a trace or a span. Not all transactions and spans contain enough information to tell whether the user or what precisely in the SDK created it. Origin solves this problem. The SDK now sends origin for transactions and spans. - -- Add `appHangTimeoutInterval` to `SentryFlutterOptions` ([#1568](https://github.com/getsentry/sentry-dart/pull/1568)) -- DioEventProcessor: Append http response body ([#1557](https://github.com/getsentry/sentry-dart/pull/1557)) - - This is opt-in and depends on `maxResponseBodySize` - - Only for `dio` package - -### Dependencies - -- Bump Cocoa SDK from v8.8.0 to v8.9.1 ([#1553](https://github.com/getsentry/sentry-dart/pull/1553)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#891) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.8.0...8.9.1) -- Bump Android SDK from v6.23.0 to v6.25.2 ([#1554](https://github.com/getsentry/sentry-dart/pull/1554)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6252) - - [diff](https://github.com/getsentry/sentry-java/compare/6.23.0...6.25.2) - -## 7.8.0 - -### Enhancements - -- Add `apiTarget` field to `SentryRequest` and `data` field to `SentryResponse` ([#1517](https://github.com/getsentry/sentry-dart/pull/1517)) - -### Dependencies - -- Bump Android SDK from v6.21.0 to v6.23.0 ([#1512](https://github.com/getsentry/sentry-dart/pull/1512), [#1520](https://github.com/getsentry/sentry-dart/pull/1520)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6230) - - [diff](https://github.com/getsentry/sentry-java/compare/6.21.0...6.23.0) -- Bump Cocoa SDK from v8.7.3 to v8.8.0 ([#1521](https://github.com/getsentry/sentry-dart/pull/1521)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#880) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.7.3...8.8.0) - -## 7.7.0 - -### Fixes - -- Enums use its name instead of non exhaustive switches ([##1506](https://github.com/getsentry/sentry-dart/pull/#1506)) - -### Enhancements - -- Add http fields to `span.data` ([#1497](https://github.com/getsentry/sentry-dart/pull/1497)) - - Set `http.response.status_code` - - Set `http.response_content_length` -- Improve `SentryException#value`, remove stringified stack trace ([##1470](https://github.com/getsentry/sentry-dart/pull/#1470)) - -### Dependencies - -- Bump Android SDK from v6.20.0 to v6.21.0 ([#1500](https://github.com/getsentry/sentry-dart/pull/1500)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6210) - - [diff](https://github.com/getsentry/sentry-java/compare/6.20.0...6.21.0) - -## 7.6.3 - -### Fixes - -- Check if the Native SDKs are enabled when using `autoInitializeNativeSdk=false` ([#1489](https://github.com/getsentry/sentry-dart/pull/1489)) -- Align http method to span convention ([#1477](https://github.com/getsentry/sentry-dart/pull/1477)) -- Wrapped methods return a `Future` instead of executing right away ([#1476](https://github.com/getsentry/sentry-dart/pull/1476)) - - Relates to ([#1462](https://github.com/getsentry/sentry-dart/pull/1462)) -- Fix readTimeoutMillis wrongly configures connectionTimeoutMillis instead of the correct field ([#1485](https://github.com/getsentry/sentry-dart/pull/1485)) - -### Dependencies - -- Bump Android SDK from v6.19.0 to v6.20.0 ([#1466](https://github.com/getsentry/sentry-dart/pull/1466), [#1491](https://github.com/getsentry/sentry-dart/pull/1491)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6200) - - [diff](https://github.com/getsentry/sentry-java/compare/6.19.0...6.20.0) -- Bump Cocoa SDK from v8.7.2 to v8.7.3 ([#1487](https://github.com/getsentry/sentry-dart/pull/1487)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#873) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.7.2...8.7.3) - -## 7.6.2 - -### Enhancements - -- `SentryAssetBundle` returns Future by default ([#1462](https://github.com/getsentry/sentry-dart/pull/1462)) - -### Features - -- Support `http` >= 1.0.0 ([#1475](https://github.com/getsentry/sentry-dart/pull/1475)) - -### Dependencies - -- Bump Android SDK from v6.18.1 to v6.19.0 ([#1455](https://github.com/getsentry/sentry-dart/pull/1455)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6190) - - [diff](https://github.com/getsentry/sentry-java/compare/6.18.1...6.19.0) -- Bump Cocoa SDK from v8.7.1 to v8.7.2 ([#1458](https://github.com/getsentry/sentry-dart/pull/1458)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#872) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.7.1...8.7.2) - -## 7.6.1 - -### Features - -- Add `sent_at` to envelope header ([#1428](https://github.com/getsentry/sentry-dart/pull/1428)) - -### Fixes - -- Fix battery level conversion for iOS 16.4 ([#1433](https://github.com/getsentry/sentry-dart/pull/1433)) -- Adds a namespace for compatibility with AGP 8.0. ([#1427](https://github.com/getsentry/sentry-dart/pull/1427)) -- Avoid dependency conflict with package_info_plus v4 ([#1440](https://github.com/getsentry/sentry-dart/pull/1440)) - -### Breaking Changes - -- Android `minSdkVersion` is now 19 (Flutter already defines 19-20 as best effort) -- Deprecate `extra` in favor of `contexts` ([#1435](https://github.com/getsentry/sentry-dart/pull/1435)) - -### Dependencies - -- Bump Cocoa SDK from v8.5.0 to v8.7.1 ([#1449](https://github.com/getsentry/sentry-dart/pull/1449)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#871) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.5.0...8.7.1) - -## 7.5.2 - -### Fixes - -- Fix `event.origin` and `event.environment` on unhandled exceptions ([#1419](https://github.com/getsentry/sentry-dart/pull/1419)) -- Fix authority redaction ([#1424](https://github.com/getsentry/sentry-dart/pull/1424)) - -### Dependencies - -- Bump Android SDK from v6.17.0 to v6.18.1 ([#1415](https://github.com/getsentry/sentry-dart/pull/1415)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6181) - - [diff](https://github.com/getsentry/sentry-java/compare/6.17.0...6.18.1) - -## 7.5.1 - -### Fixes - -- Fallback Uri parsing to `unknown` if its invalid ([#1414](https://github.com/getsentry/sentry-dart/pull/1414)) - -## 7.5.0 - -### Features - -- Add `SentryIOOverridesIntegration` that automatically wraps `File` into `SentryFile` ([#1362](https://github.com/getsentry/sentry-dart/pull/1362)) - -```dart -import 'package:sentry_file/sentry_file.dart'; - -// SDK init. options -options.addIntegration(SentryIOOverridesIntegration()); -``` - -- Add `enableTracing` option ([#1395](https://github.com/getsentry/sentry-dart/pull/1395)) - - This change is backwards compatible. The default is `null` meaning existing behaviour remains unchanged (setting either `tracesSampleRate` or `tracesSampler` enables performance). - - If set to `true`, performance is enabled, even if no `tracesSampleRate` or `tracesSampler` have been configured. - - If set to `true`, sampler will use default sample rate of 1.0, if no `tracesSampleRate` is set. - - If set to `false` performance is disabled, regardless of `tracesSampleRate` and `tracesSampler` options. - -```dart -// SDK init. options -options.enableTracing = true; -``` - -- Sync `connectionTimeout` and `readTimeout` to Android ([#1397](https://github.com/getsentry/sentry-dart/pull/1397)) - -```dart -// SDK init. options -options.connectionTimeout = Duration(seconds: 10); -options.readTimeout = Duration(seconds: 10); -``` - -- Set User `name` and `geo` in native plugins ([#1393](https://github.com/getsentry/sentry-dart/pull/1393)) - -```dart -Sentry.configureScope( - (scope) => scope.setUser(SentryUser( - id: '1234', - name: 'Jane Doe', - email: 'jane.doe@example.com', - geo: SentryGeo( - city: 'Vienna', - countryCode: 'AT', - region: 'Austria', - ))), -); -``` - -- Add processor count to device info ([#1402](https://github.com/getsentry/sentry-dart/pull/1402)) -- Add attachments to `Hint` ([#1404](https://github.com/getsentry/sentry-dart/pull/1404)) - -```dart -import 'dart:convert'; - -options.beforeSend = (event, {hint}) { - final text = 'This event should not be sent happen in prod. Investigate.'; - final textAttachment = SentryAttachment.fromIntList( - utf8.encode(text), - 'event_info.txt', - contentType: 'text/plain', - ); - hint?.attachments.add(textAttachment); - return event; -}; -``` - -### Fixes - -- Screenshots and View Hierarchy should only be added to errors ([#1385](https://github.com/getsentry/sentry-dart/pull/1385)) - - View Hierarchy is removed from Web errors since we don't symbolicate minified View Hierarchy yet. -- More improvements related to not awaiting `FutureOr` if it's not a future ([#1385](https://github.com/getsentry/sentry-dart/pull/1385)) -- Do not report only async gap frames for logging calls ([#1398](https://github.com/getsentry/sentry-dart/pull/1398)) - -### Dependencies - -- Bump Cocoa SDK from v8.4.0 to v8.5.0 ([#1394](https://github.com/getsentry/sentry-dart/pull/1394)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#850) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.4.0...8.5.0) - -## 7.4.2 - -### Fixes - -- Fix breadcrumbs not being sent on Android web ([#1378](https://github.com/getsentry/sentry-dart/pull/1378)) - -## 7.4.1 - -### Fixes - -- Fix Dart web builds breaking due to `dart:io` imports when using `SentryIsolate` or `SentryIsolateExtension` ([#1371](https://github.com/getsentry/sentry-dart/pull/1371)) - - When using `SentryIsolate` or `SentryIsolateExtension`, import `sentry_io.dart`. -- Export `SentryBaggage` ([#1377](https://github.com/getsentry/sentry-dart/pull/1377)) -- Remove breadcrumbs from transaction to avoid duplication ([#1366](https://github.com/getsentry/sentry-dart/pull/1366)) - -### Dependencies - -- Bump Cocoa SDK from v8.3.3 to v8.4.0 ([#1379](https://github.com/getsentry/sentry-dart/pull/1379)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#840) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.3.3...8.4.0) -- Bump Android SDK from v6.16.0 to v6.17.0 ([#1374](https://github.com/getsentry/sentry-dart/pull/1374)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6170) - - [diff](https://github.com/getsentry/sentry-java/compare/6.16.0...6.17.0) - -## 7.4.0 - -### Features - -- SentryUserInteractionWidget: add support for PopupMenuButton and PopupMenuItem ([#1361](https://github.com/getsentry/sentry-dart/pull/1361)) - -### Fixes - -- Fix `SentryUserInteractionWidget` throwing when Sentry is not enabled ([#1363](https://github.com/getsentry/sentry-dart/pull/1363)) -- Fix enableAutoNativeBreadcrumbs and enableNativeCrashHandling sync flags ([#1367](https://github.com/getsentry/sentry-dart/pull/1367)) - -## 7.3.0 - -### Features - -- Sanitize sensitive data from URLs (span desc, span data, crumbs, client errors) ([#1327](https://github.com/getsentry/sentry-dart/pull/1327)) - -### Dependencies - -- Bump Cocoa SDK from v8.3.1 to v8.3.3 ([#1350](https://github.com/getsentry/sentry-dart/pull/1350), [#1355](https://github.com/getsentry/sentry-dart/pull/1355)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#833) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.3.1...8.3.3) - -### Fixes - -- Sync missing properties to the Native SDKs ([#1354](https://github.com/getsentry/sentry-dart/pull/1354)) - -## 7.2.0 - -### Features - -- sqflite Support for Flutter ([#1306](https://github.com/getsentry/sentry-dart/pull/1306)) - -### Fixes - -- `DioErrorExtractor` no longer extracts `DioError.stackTrace` which is done via `DioStackTraceExtractor` instead ([#1344](https://github.com/getsentry/sentry-dart/pull/1344)) -- LoadImageListIntegration won't throw bad state if there is no exceptions in the event ([#1347](https://github.com/getsentry/sentry-dart/pull/1347)) - -### Dependencies - -- Bump Android SDK from v6.15.0 to v6.16.0 ([#1342](https://github.com/getsentry/sentry-dart/pull/1342)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6160) - - [diff](https://github.com/getsentry/sentry-java/compare/6.15.0...6.16.0) - -## 7.1.0 - -### Features - -- Exception StackTrace Extractor ([#1335](https://github.com/getsentry/sentry-dart/pull/1335)) - -### Dependencies - -- Bump Cocoa SDK from v8.0.0 to v8.3.1 ([#1331](https://github.com/getsentry/sentry-dart/pull/1331)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#831) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.0.0...8.3.1) - -### Fixes - -- SentryUserInteractionWidget checks if the Elements are mounted before comparing them ([#1339](https://github.com/getsentry/sentry-dart/pull/1339)) - -## 7.0.0 - -### Features - -- Platform Exception Event Processor ([#1297](https://github.com/getsentry/sentry-dart/pull/1297)) -- Support failedRequestTargets for HTTP Client errors ([#1285](https://github.com/getsentry/sentry-dart/pull/1285)) - - Captures errors for the default range `500-599` if `captureFailedRequests` is enabled -- Sentry Isolate Extension ([#1266](https://github.com/getsentry/sentry-dart/pull/1266)) -- Allow sentry user to control resolution of captured Flutter screenshots ([#1288](https://github.com/getsentry/sentry-dart/pull/1288)) -- Support beforeSendTransaction ([#1238](https://github.com/getsentry/sentry-dart/pull/1238)) -- Add In Foreground to App context ([#1260](https://github.com/getsentry/sentry-dart/pull/1260)) -- Error Cause Extractor ([#1198](https://github.com/getsentry/sentry-dart/pull/1198), [#1236](https://github.com/getsentry/sentry-dart/pull/1236)) - - Add `throwable` to `SentryException` -- Dart 3 Support ([#1220](https://github.com/getsentry/sentry-dart/pull/1220)) -- Introduce `Hint` data bag ([#1136](https://github.com/getsentry/sentry-dart/pull/1136)) -- Use `Hint` for screenshots ([#1165](https://github.com/getsentry/sentry-dart/pull/1165)) -- Support custom units for custom measurements ([#1181](https://github.com/getsentry/sentry-dart/pull/1181)) - -### Enhancements - -- Replace `toImage` with `toImageSync` for Flutter >= 3.7 ([1268](https://github.com/getsentry/sentry-dart/pull/1268)) -- Don't await `FutureOr` if it's not a future. This should marginally improve the performance ([#1310](https://github.com/getsentry/sentry-dart/pull/1310)) -- Replace `StackTrace.empty` with `StackTrace.current` ([#1183](https://github.com/getsentry/sentry-dart/pull/1183)) - -### Breaking Changes - -[Dart Migration guide](https://docs.sentry.io/platforms/dart/migration/#migrating-from-sentry-618x-to-sentry-700). - -[Flutter Migration guide](https://docs.sentry.io/platforms/flutter/migration/#migrating-from-sentry_flutter-618x-to-sentry-700). - -- Enable enableNdkScopeSync by default ([#1276](https://github.com/getsentry/sentry-dart/pull/1276)) -- Update `sentry_dio` to dio v5 ([#1282](https://github.com/getsentry/sentry-dart/pull/1282)) -- Remove deprecated fields ([#1227](https://github.com/getsentry/sentry-dart/pull/1227)) - - Remove deprecated fields from the `Scope` class. - - `user(SentryUser? user)`, using the `setUser(SentryUser? user)` instead. - - `attachements`, using the `attachments` instead. - - Remove deprecated field from the `SentryFlutterOptions` class. - - `anrTimeoutIntervalMillis`, using the `anrTimeoutInterval` instead. - - `autoSessionTrackingIntervalMillis`, using the `autoSessionTrackingInterval` instead. -- Rename APM tracking feature flags to tracing ([#1222](https://github.com/getsentry/sentry-dart/pull/1222)) - - Rename - - enableAutoPerformanceTracking to enableAutoPerformanceTracing - - enableOutOfMemoryTracking to enableWatchdogTerminationTracking -- Enable APM features by default ([#1217](https://github.com/getsentry/sentry-dart/pull/1217)) - - Enable by default - - captureFailedRequests - - enableStructuredDataTracing - - enableUserInteractionTracing -- Mark transaction as internal_error in case of unhandled errors ([#1218](https://github.com/getsentry/sentry-dart/pull/1218)) -- Removed various deprecated fields ([#1036](https://github.com/getsentry/sentry-dart/pull/1036)): - - Removed the following fields from the `device` context - - language - - timezone - - screenResolution - - theme - - Removed isolate name from Dart context. It's now reported via the threads interface. It can be enabled via `options.attachThreads` -- Use `sentryClientName` instead of `sdk.identifier` ([#1135](https://github.com/getsentry/sentry-dart/pull/1135)) -- Refactor `BindingUtils` to `BindingWrapper` to enable the use of custom bindings ([#1184](https://github.com/getsentry/sentry-dart/pull/1184)) -- Bump Flutter min to 3.0.0 and Dart to 2.17.0 ([#1180](https://github.com/getsentry/sentry-dart/pull/1180)) - -### Dependencies - -- Bump Cocoa SDK from 7.31.5 to 8.0.0 - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#800) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.31.5...8.0.0) - -### Fixes - -- View hierarchy reads size from RenderBox only ([#1258](https://github.com/getsentry/sentry-dart/pull/1258)) -- Try to avoid ConcurrentModificationError by not using a Future.forEach ([#1259](https://github.com/getsentry/sentry-dart/pull/1259)) -- isWeb check for WASM ([#1249](https://github.com/getsentry/sentry-dart/pull/1249)) -- Don't suppress error logs ([#1228](https://github.com/getsentry/sentry-dart/pull/1228)) -- Fix: Remove `SentryOptions` related parameters from classes which also take `Hub` as a parameter (#816) - -## 7.0.0-rc.2 - -### Features - -- Platform Exception Event Processor ([#1297](https://github.com/getsentry/sentry-dart/pull/1297)) -- Support failedRequestTargets for HTTP Client errors ([#1285](https://github.com/getsentry/sentry-dart/pull/1285)) - - Captures errors for the default range `500-599` if `captureFailedRequests` is enabled -- Sentry Isolate Extension ([#1266](https://github.com/getsentry/sentry-dart/pull/1266)) -- Allow sentry user to control resolution of captured Flutter screenshots ([#1288](https://github.com/getsentry/sentry-dart/pull/1288)) - -### Enhancements - -- Replace `toImage` with `toImageSync` for Flutter >= 3.7 ([1268](https://github.com/getsentry/sentry-dart/pull/1268)) -- Don't await `FutureOr` if it's not a future. This should marginally improve the performance ([#1310](https://github.com/getsentry/sentry-dart/pull/1310)) - -## 6.22.0 - -### Features - -- Add proguard_uui property to SentryFlutterOptions to set proguard information at runtime ([#1312](https://github.com/getsentry/sentry-dart/pull/1312)) - -### Fixes - -- Change podspec `EXCLUDED_ARCHS` value to allow podfiles to add more excluded architetures ([#1303](https://github.com/getsentry/sentry-dart/pull/1303)) - -### Dependencies - -- Bump Android SDK from v6.13.1 to v6.15.0 ([#1287](https://github.com/getsentry/sentry-dart/pull/1287), [#1311](https://github.com/getsentry/sentry-dart/pull/1311)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6150) - - [diff](https://github.com/getsentry/sentry-java/compare/6.13.1...6.15.0) - -## 7.0.0-rc.1 - -### Breaking Changes - -- Enable enableNdkScopeSync by default ([#1276](https://github.com/getsentry/sentry-dart/pull/1276)) -- Update `sentry_dio` to dio v5 ([#1282](https://github.com/getsentry/sentry-dart/pull/1282)) - -### Dependencies - -- Bump Android SDK from v6.13.1 to v6.14.0 ([#1287](https://github.com/getsentry/sentry-dart/pull/1287)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6140) - - [diff](https://github.com/getsentry/sentry-java/compare/6.13.1...6.14.0) - -## 6.21.0 - -### Features - -- Implement `loadStructuredBinaryData` from updated AssetBundle ([#1272](https://github.com/getsentry/sentry-dart/pull/1272)) - -### Dependencies - -- Bump Android SDK from v6.13.0 to v6.13.1 ([#1273](https://github.com/getsentry/sentry-dart/pull/1273)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6131) - - [diff](https://github.com/getsentry/sentry-java/compare/6.13.0...6.13.1) - -### Fixes - -- Pass processed Breadcrumb to scope observer ([#1298](https://github.com/getsentry/sentry-dart/pull/1298)) -- Remove duplicated breadcrumbs when syncing with iOS/macOS ([#1283](https://github.com/getsentry/sentry-dart/pull/1283)) - -## 6.20.1 - -### Fixes - -- Set client name with version in Android SDK ([#1274](https://github.com/getsentry/sentry-dart/pull/1274)) - -## 7.0.0-beta.4 - -### Features - -- Support beforeSendTransaction ([#1238](https://github.com/getsentry/sentry-dart/pull/1238)) -- Add In Foreground to App context ([#1260](https://github.com/getsentry/sentry-dart/pull/1260)) - -### Fixes - -- View hierarchy reads size from RenderBox only ([#1258](https://github.com/getsentry/sentry-dart/pull/1258)) -- Try to avoid ConcurrentModificationError by not using a Future.forEach ([#1259](https://github.com/getsentry/sentry-dart/pull/1259)) - -### Dependencies - -- Bump Android SDK from v6.12.1 to v6.13.0 ([#1250](https://github.com/getsentry/sentry-dart/pull/1250)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6130) - - [diff](https://github.com/getsentry/sentry-java/compare/6.12.1...6.13.0) - -## 7.0.0-beta.1 - -### Fixes - -- isWeb check for WASM ([#1249](https://github.com/getsentry/sentry-dart/pull/1249)) - -## 7.0.0-alpha.5 - -### Features - -- Error Cause Extractor ([#1198](https://github.com/getsentry/sentry-dart/pull/1198), [#1236](https://github.com/getsentry/sentry-dart/pull/1236)) - - Add `throwable` to `SentryException` - -### Fixes - -- Don't suppress error logs ([#1228](https://github.com/getsentry/sentry-dart/pull/1228)) -- Fix export for `BindingWrapper` ([#1234](https://github.com/getsentry/sentry-dart/pull/1234)) - -## 7.0.0-alpha.4 - -### Breaking Changes - -- Remove deprecated fields ([#1227](https://github.com/getsentry/sentry-dart/pull/1227)) - - Remove deprecated fields from the `Scope` class. - - `user(SentryUser? user)`, using the `setUser(SentryUser? user)` instead. - - `attachements`, using the `attachments` instead. - - Remove deprecated field from the `SentryFlutterOptions` class. - - `anrTimeoutIntervalMillis`, using the `anrTimeoutInterval` instead. - - `autoSessionTrackingIntervalMillis`, using the `autoSessionTrackingInterval` instead. - -### Dependencies - -- Bump Cocoa SDK from 8.0.0-rc.1 to 8.0.0 - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#800) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.0.0-rc.1...8.0.0) - -## 7.0.0-alpha.3 - -### Breaking Changes - -- Rename APM tracking feature flags to tracing ([#1222](https://github.com/getsentry/sentry-dart/pull/1222)) - - Rename - - enableAutoPerformanceTracking to enableAutoPerformanceTracing - - enableOutOfMemoryTracking to enableWatchdogTerminationTracking - -### Enhancements - -- Migrate to sentry cocoa v8 ([#1197](https://github.com/getsentry/sentry-dart/pull/1197)) - -## 7.0.0-alpha.2 - -### Features - -- Dart 3 Support ([#1220](https://github.com/getsentry/sentry-dart/pull/1220)) - -### Breaking Changes - -- Enable APM features by default ([#1217](https://github.com/getsentry/sentry-dart/pull/1217)) - - Enable by default - - captureFailedRequests - - enableStructuredDataTracing - - enableUserInteractionTracing -- Mark transaction as internal_error in case of unhandled errors ([#1218](https://github.com/getsentry/sentry-dart/pull/1218)) - -## 7.0.0-alpha.1 - -### Features - -- Feat: Introduce `Hint` data bag ([#1136](https://github.com/getsentry/sentry-dart/pull/1136)) -- Feat: Use `Hint` for screenshots ([#1165](https://github.com/getsentry/sentry-dart/pull/1165)) -- Feat: Support custom units for custom measurements ([#1181](https://github.com/getsentry/sentry-dart/pull/1181)) - -### Fixes - -- Fix: Remove `SentryOptions` related parameters from classes which also take `Hub` as a parameter (#816) - -### Enhancements - -- Enha: Replace `StackTrace.empty` with `StackTrace.current` ([#1183](https://github.com/getsentry/sentry-dart/pull/1183)) - -### Breaking Changes - -- Removed various deprecated fields ([#1036](https://github.com/getsentry/sentry-dart/pull/1036)): - - Removed the following fields from the `device` context - - language - - timezone - - screenResolution - - theme - - Removed isolate name from Dart context. It's now reported via the threads interface. It can be enabled via `options.attachThreads` -- Use `sentryClientName` instead of `sdk.identifier` ([#1135](https://github.com/getsentry/sentry-dart/pull/1135)) -- Refactor `BindingUtils` to `BindingWrapper` to enable the use of custom bindings ([#1184](https://github.com/getsentry/sentry-dart/pull/1184)) -- Bump Flutter min to 3.0.0 and Dart to 2.17.0 ([#1180](https://github.com/getsentry/sentry-dart/pull/1180)) - -## 6.19.0 - -### Fixes - -- intl is now more version permissive (>=0.17.0 <1.0.0) ([#1247](https://github.com/getsentry/sentry-dart/pull/1247)) - -### Breaking Changes: - -- sentry_file now requires Dart >= 2.19 ([#1240](https://github.com/getsentry/sentry-dart/pull/1240)) - -## 6.18.3 - -### Fixes - -- Fix Pod target for iOS ([#1237](https://github.com/getsentry/sentry-dart/pull/1237)) - -### Dependencies - -- Bump Android SDK from v6.11.0 to v6.12.1 ([#1225](https://github.com/getsentry/sentry-dart/pull/1225), [#1230](https://github.com/getsentry/sentry-dart/pull/1230)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6121) - - [diff](https://github.com/getsentry/sentry-java/compare/6.11.0...6.12.1) - -## 6.18.2 - -### Fixes - -- enableUserInteractionTracing sometimes finds the wrong widget ([#1212](https://github.com/getsentry/sentry-dart/pull/1212)) -- Only call method channels on native platforms ([#1196](https://github.com/getsentry/sentry-dart/pull/1196)) - -### Dependencies - -- Bump Android SDK from v6.9.2 to v6.11.0 ([#1194](https://github.com/getsentry/sentry-dart/pull/1194), [#1209](https://github.com/getsentry/sentry-dart/pull/1209)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6110) - - [diff](https://github.com/getsentry/sentry-java/compare/6.9.2...6.11.0) -- Bump Cocoa SDK from v7.31.3 to v7.31.5 ([#1190](https://github.com/getsentry/sentry-dart/pull/1190), [#1207](https://github.com/getsentry/sentry-dart/pull/1207)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/8.0.0/CHANGELOG.md#7315) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.31.3...7.31.5) - -## 6.18.1 - -### Fixes - -- Missing slow and frozen frames for Auto transactions ([#1172](https://github.com/getsentry/sentry-dart/pull/1172)) - -### Dependencies - -- Bump Android SDK from v6.9.1 to v6.9.2 ([#1167](https://github.com/getsentry/sentry-dart/pull/1167)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#692) - - [diff](https://github.com/getsentry/sentry-java/compare/6.9.1...6.9.2) - -## 6.18.0 - -### Features - -- Tracing for File IO integration ([#1160](https://github.com/getsentry/sentry-dart/pull/1160)) - -### Dependencies - -- Bump Cocoa SDK from v7.31.2 to v7.31.3 ([#1157](https://github.com/getsentry/sentry-dart/pull/1157)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7313) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.31.2...7.31.3) -- Bump Android SDK from v6.8.0 to v6.9.1 ([#1159](https://github.com/getsentry/sentry-dart/pull/1159)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#691) - - [diff](https://github.com/getsentry/sentry-java/compare/6.8.0...6.9.1) - -## 6.17.0 - -### Fixes - -- Capture Future errors for Flutter Web automatically ([#1152](https://github.com/getsentry/sentry-dart/pull/1152)) - -### Features - -- User Interaction transactions and breadcrumbs ([#1137](https://github.com/getsentry/sentry-dart/pull/1137)) - -## 6.16.1 - -### Fixes - -- Do not attach headers if Span is NoOp ([#1143](https://github.com/getsentry/sentry-dart/pull/1143)) - -### Dependencies - -- Bump Cocoa SDK from v7.31.1 to v7.31.2 ([#1146](https://github.com/getsentry/sentry-dart/pull/1146)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7312) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.31.1...7.31.2) -- Bump Android SDK from v6.7.1 to v6.8.0 ([#1147](https://github.com/getsentry/sentry-dart/pull/1147)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#680) - - [diff](https://github.com/getsentry/sentry-java/compare/6.7.1...6.8.0) - -## 6.16.0 - -### Features - -- Add request context to `HttpException`, `SocketException` and `NetworkImageLoadException` ([#1118](https://github.com/getsentry/sentry-dart/pull/1118)) -- `SocketException` and `FileSystemException` with `OSError`s report the `OSError` as root exception ([#1118](https://github.com/getsentry/sentry-dart/pull/1118)) - -### Fixes - -- VendorId should be a String ([#1112](https://github.com/getsentry/sentry-dart/pull/1112)) -- Disable `enableUserInteractionBreadcrumbs` on Android when `enableAutoNativeBreadcrumbs` is disabled ([#1131](https://github.com/getsentry/sentry-dart/pull/1131)) -- Transaction name is reset after the transaction finishes ([#1125](https://github.com/getsentry/sentry-dart/pull/1125)) - -### Dependencies - -- Bump Cocoa SDK from v7.30.2 to v7.31.1 ([#1132](https://github.com/getsentry/sentry-dart/pull/1132), [#1139](https://github.com/getsentry/sentry-dart/pull/1139)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7311) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.30.2...7.31.1) -- Bump Android SDK from v6.7.0 to v6.7.1 ([#1112](https://github.com/getsentry/sentry-dart/pull/1112)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#671) - - [diff](https://github.com/getsentry/sentry-java/compare/6.7.0...6.7.1) - -## 6.15.1 - -### Dependencies - -- Bump Cocoa SDK from v7.30.1 to v7.30.2 ([#1113](https://github.com/getsentry/sentry-dart/pull/1113)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7302) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.30.1...7.30.2) - -## 6.15.0 - -### Features - -- Feat: Screenshot Attachment ([#1088](https://github.com/getsentry/sentry-dart/pull/1088)) - -### Fixes - -- Merging of integrations and packages ([#1111](https://github.com/getsentry/sentry-dart/pull/1111)) -- Add missing `fragment` for HTTP Client Errors ([#1102](https://github.com/getsentry/sentry-dart/pull/1102)) -- Sync user name and geo for Android ([#1102](https://github.com/getsentry/sentry-dart/pull/1102)) -- Add mechanism to Dio Http Client error ([#1114](https://github.com/getsentry/sentry-dart/pull/1114)) - -### Dependencies - -- Bump Android SDK from v6.6.0 to v6.7.0 ([#1105](https://github.com/getsentry/sentry-dart/pull/1105)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#670) - - [diff](https://github.com/getsentry/sentry-java/compare/6.6.0...6.7.0) -- Bump Cocoa SDK from v7.30.0 to v7.30.1 ([#1104](https://github.com/getsentry/sentry-dart/pull/1104)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7301) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.30.0...7.30.1) - -## 6.14.0 - -### Features - -- Capture response information in `SentryHttpClient` ([#1095](https://github.com/getsentry/sentry-dart/pull/1095)) - -### Changes - -- Remove experimental `SentryResponse` fields: `url`, `body`, `redirected`, `status` ([#1095](https://github.com/getsentry/sentry-dart/pull/1095)) -- `SentryHttpClient` request body capture checks default PII capture setting, same as the DIO integration ([#1095](https://github.com/getsentry/sentry-dart/pull/1095)) - -### Dependencies - -- Bump Android SDK from v6.5.0 to v6.6.0 ([#1090](https://github.com/getsentry/sentry-dart/pull/1090)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#660) - - [diff](https://github.com/getsentry/sentry-java/compare/6.5.0...6.6.0) -- Bump Cocoa SDK from v7.28.0 to v7.30.0 ([#1089](https://github.com/getsentry/sentry-dart/pull/1089), [#1101](https://github.com/getsentry/sentry-dart/pull/1101)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7300) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.28.0...7.30.0) - -## 6.13.1 - -### Fixes - -- Avoid dependency conflict with package_info_plus v3 ([#1084](https://github.com/getsentry/sentry-dart/pull/1084)) - -## 6.13.0 - -### Features - -- Use PlatformDispatcher.onError in Flutter 3.3 ([#1039](https://github.com/getsentry/sentry-dart/pull/1039)) - -### Fixes - -- Bring protocol up to date with latest Sentry protocol ([#1038](https://github.com/getsentry/sentry-dart/pull/1038)) - -### Dependencies - -- Bump Cocoa SDK from v7.27.1 to v7.28.0 ([#1080](https://github.com/getsentry/sentry-dart/pull/1080)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7280) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.27.1...7.28.0) - -## 6.12.2 - -### Fixes - -- Avoid dependency conflict with package_info_plus v2 ([#1068](https://github.com/getsentry/sentry-dart/pull/1068)) - -## 6.12.1 - -### Dependencies - -- Bump Android SDK from v6.4.3 to v6.5.0 ([#1062](https://github.com/getsentry/sentry-dart/pull/1062), [#1064](https://github.com/getsentry/sentry-dart/pull/1064)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#650) - - [diff](https://github.com/getsentry/sentry-java/compare/6.4.3...6.5.0) - -## 6.12.0 - -### Fixes - -- Handle traces sampler exception ([#1040](https://github.com/getsentry/sentry-dart/pull/1040)) -- tracePropagationTargets ignores invalid Regex ([#1043](https://github.com/getsentry/sentry-dart/pull/1043)) -- SentryDevice cast error ([#1059](https://github.com/getsentry/sentry-dart/pull/1059)) - -### Features - -- Added [Flutter renderer](https://docs.flutter.dev/development/platform-integration/web/renderers) information to events ([#1035](https://github.com/getsentry/sentry-dart/pull/1035)) -- Added missing DSN field into the SentryEnvelopeHeader ([#1050](https://github.com/getsentry/sentry-dart/pull/1050)) - -### Dependencies - -- Bump Android SDK from v6.4.2 to v6.4.3 ([#1048](https://github.com/getsentry/sentry-dart/pull/1048)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#643) - - [diff](https://github.com/getsentry/sentry-java/compare/6.4.2...6.4.3) -- Bump Cocoa SDK from v7.27.0 to v7.27.1 ([#1049](https://github.com/getsentry/sentry-dart/pull/1049)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7271) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.27.0...7.27.1) - -## 6.11.2 - -### Fixes - -- Tracer does not allow setting measurement if finished ([#1026](https://github.com/getsentry/sentry-dart/pull/1026)) -- Add missing measurements units ([#1033](https://github.com/getsentry/sentry-dart/pull/1033)) - -### Features - -- Bump Cocoa SDK from v7.26.0 to v7.27.0 ([#1030](https://github.com/getsentry/sentry-dart/pull/1030)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7270) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.26.0...7.27.0) - -## 6.11.1 - -### Fixes - -- Align span spec for serialize ops ([#1024](https://github.com/getsentry/sentry-dart/pull/1024)) -- Pin sentry version ([#1020](https://github.com/getsentry/sentry-dart/pull/1020)) - -### Features - -- Bump Cocoa SDK from v7.25.1 to v7.26.0 ([#1023](https://github.com/getsentry/sentry-dart/pull/1023)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7260) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.25.1...7.26.0) - -## 6.11.0 - -### Fixes - -- Scope cloning method was not setting the user ([#1013](https://github.com/getsentry/sentry-dart/pull/1013)) - -### Features - -- Dynamic sampling ([#1004](https://github.com/getsentry/sentry-dart/pull/1004)) -- Set custom measurements on transactions ([#1011](https://github.com/getsentry/sentry-dart/pull/1011)) - -## 6.10.0 - -### Fixes - -- Capture Callback Exceptions ([#990](https://github.com/getsentry/sentry-dart/pull/990)) -- Allow routeNameExtractor to set transaction names ([#1005](https://github.com/getsentry/sentry-dart/pull/1005)) - -### Features - -- Prepare future support for iOS and macOS obfuscated app symbolication using dSYM (requires Flutter `master` channel) ([#823](https://github.com/getsentry/sentry-dart/pull/823)) -- Bump Android SDK from v6.3.1 to v6.4.2 ([#989](https://github.com/getsentry/sentry-dart/pull/989), [#1009](https://github.com/getsentry/sentry-dart/pull/1009)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#642) - - [diff](https://github.com/getsentry/sentry-java/compare/6.3.1...6.4.2) -- Bump Cocoa SDK from v7.23.0 to v7.25.1 ([#993](https://github.com/getsentry/sentry-dart/pull/993), [#996](https://github.com/getsentry/sentry-dart/pull/996), [#1000](https://github.com/getsentry/sentry-dart/pull/1000), [#1007](https://github.com/getsentry/sentry-dart/pull/1007)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7251) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.23.0...7.25.1) - -## 6.9.1 - -### Fixes - -* Scope.clone incorrectly accesses tags ([#978](https://github.com/getsentry/sentry-dart/pull/978)) -* beforeBreadcrumb was not adding the mutated breadcrumb ([#982](https://github.com/getsentry/sentry-dart/pull/982)) - -### Features - -- Bump Cocoa SDK to v7.23.0 ([#968](https://github.com/getsentry/sentry-dart/pull/968)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7230) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.22.0...7.23.0) -- Bump Android SDK from v6.3.0 to v6.3.1 ([#976](https://github.com/getsentry/sentry-dart/pull/976)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#631) - - [diff](https://github.com/getsentry/sentry-java/compare/6.3.0...6.3.1) - -## 6.9.0 - -### Features - -* Bump Flutter's min. supported version from 1.17.0 to 2.0.0 ([#966](https://github.com/getsentry/sentry-dart/pull/966)) - -This should not break anything since the Dart's min. version is already 2.12.0 and Flutter 2.0.0 uses Dart 2.12.0 - -### Fixes - -* Back compatibility of Object.hash for Dart 2.12.0 ([#966](https://github.com/getsentry/sentry-dart/pull/966)) -* Fix back compatibility for OnErrorIntegration integration ([#965](https://github.com/getsentry/sentry-dart/pull/965)) - -## 6.8.1 - -### Fixes - -* `Scope#setContexts` pasing a List value would't not work ([#932](https://github.com/getsentry/sentry-dart/pull/932)) - -### Features - -* Add integration for `PlatformDispatcher.onError` ([#915](https://github.com/getsentry/sentry-dart/pull/915)) -- Bump Cocoa SDK to v7.22.0 ([#960](https://github.com/getsentry/sentry-dart/pull/960)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7220) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.21.0...7.22.0) - -## 6.8.0 - -### Fixes - -* Missing OS context for iOS events ([#958](https://github.com/getsentry/sentry-dart/pull/958)) -* Fix: `Scope#clone` calls the Native bridges again via the `scopeObserver` ([#959](https://github.com/getsentry/sentry-dart/pull/959)) - -### Features - -* Dio Integration adds response data ([#934](https://github.com/getsentry/sentry-dart/pull/934)) - -## 6.7.0 - -### Fixes - -* Maps with Key Object, Object would fail during serialization if not String, Object ([#935](https://github.com/getsentry/sentry-dart/pull/935)) -* Breadcrumbs "Concurrent Modification" ([#948](https://github.com/getsentry/sentry-dart/pull/948)) -* Duplicative Screen size changed breadcrumbs ([#888](https://github.com/getsentry/sentry-dart/pull/888)) -* Duplicated Android Breadcrumbs with no Mechanism ([#954](https://github.com/getsentry/sentry-dart/pull/954)) -* Fix windows native method need default result ([#943](https://github.com/getsentry/sentry-dart/pull/943)) -* Add request instead of response data to `SentryRequest` in `DioEventProcessor` [#933](https://github.com/getsentry/sentry-dart/pull/933) - -### Features - -- Bump Android SDK to v6.3.0 ([#945](https://github.com/getsentry/sentry-dart/pull/945), [#950](https://github.com/getsentry/sentry-dart/pull/950)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#630) - - [diff](https://github.com/getsentry/sentry-java/compare/6.1.4...6.3.0) -- Bump Cocoa SDK to v7.21.0 ([#947](https://github.com/getsentry/sentry-dart/pull/947)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7210) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.19.0...7.21.0) - -## 6.6.3 - -### Fixes - -* Context Escape with ScopeCallback ([#925](https://github.com/getsentry/sentry-dart/pull/925)) - -## 6.6.2 - -### Features - -- Bump Android SDK to v6.1.4 ([#900](https://github.com/getsentry/sentry-dart/pull/900)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#614) - - [diff](https://github.com/getsentry/sentry-java/compare/6.1.2...6.1.4) -- Bump Cocoa SDK to v7.19.0 ([#901](https://github.com/getsentry/sentry-dart/pull/901), [#928](https://github.com/getsentry/sentry-dart/pull/928)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/master/CHANGELOG.md#7190) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/7.18.0...7.19.0) - -### Fixes - -* Send DidBecomeActiveNotification when OOM enabled (#905) -* `dio.addSentry` hangs if `dsn` is empty and SDK NoOp ([#920](https://github.com/getsentry/sentry-dart/pull/920)) -* addBreadcrumb throws on Android API < 24 because of NewApi usage ([#923](https://github.com/getsentry/sentry-dart/pull/923)) -* [`sentry_dio`](https://pub.dev/packages/sentry_dio) is promoted to GA and not experimental anymore ([#914](https://github.com/getsentry/sentry-dart/pull/914)) - -## 6.6.1 - -### Fixes - -* Filter out app starts with more than 60s (#895) - -## 6.6.0 - -### Fixes - -* Bump: Sentry-Cocoa to 7.18.0 and Sentry-Android to 6.1.2 (#892) -* Fix: Add missing iOS contexts (#761) -* Fix serialization of threads (#844) -* Fix: `SentryAssetBundle` on Flutter >= 3.1 (#877) - -### Features - -* Feat: Client Reports (#829) -* Feat: Allow manual init of the Native SDK (#765) -* Feat: Attach Isolate name to thread context (#847) -* Feat: Add Android thread to platform stacktraces (#853) -* Feat: Sync Scope to Native (#858) - -### Sentry Self-hosted Compatibility - -* Starting with version `6.6.0` of `sentry`, [Sentry's version >= v21.9.0](https://github.com/getsentry/self-hosted/releases) is required or you have to manually disable sending client reports via the `sendClientReports` option. This only applies to self-hosted Sentry. If you are using [sentry.io](https://sentry.io), no action is needed. - -## 6.6.0-beta.4 - -* Bump: Sentry-Cocoa to 7.17.0 and Sentry-Android to 6.1.1 (#891) - -## 6.6.0-beta.3 - -* Bump: Sentry-Cocoa to 7.16.1 (#886) - -## 6.6.0-beta.2 - -* Fix: Add user setter back in the scope (#883) -* Fix: clear method sets all properties synchronously (#882) - -## 6.6.0-beta.1 - -* Feat: Sync Scope to Native (#858) - -## 6.6.0-alpha.3 - -* Feat: Attach Isolate name to thread context (#847) -* Fix: `SentryAssetBundle` on Flutter >= 3.1 (#877) -* Feat: Add Android thread to platform stacktraces (#853) -* Fix: Rename auto initialize property (#857) -* Bump: Sentry-Android to 6.0.0 (#879) - -## 6.6.0-alpha.2 - -* Fix serialization of threads (#844) -* Feat: Allow manual init of the Native SDK (#765) - -## 6.6.0-alpha.1 - -* Feat: Client Reports (#829) -* Fix: Add missing iOS contexts (#761) - -### Sentry Self-hosted Compatibility - -* Starting with version `6.6.0` of `sentry`, [Sentry's version >= v21.9.0](https://github.com/getsentry/self-hosted/releases) is required or you have to manually disable sending client reports via the `sendClientReports` option. This only applies to self-hosted Sentry. If you are using [sentry.io](https://sentry.io), no action is needed. - -## 6.5.1 - -* Update event contexts (#838) - -## 6.5.0 - -* No documented changes. - -## 6.5.0-beta.2 - -* Fix: Do not set the transaction to scope if no op (#828) - -## 6.5.0-beta.1 - -* No documented changes. - -## 6.5.0-alpha.3 - -* Feat: Support for platform stacktraces on Android (#788) - -## 6.5.0-alpha.2 - -* Bump: Sentry-Android to 5.7.0 and Sentry-Cocoa to 7.11.0 (#796) -* Fix: Dio event processor safelly bails if no DioError in the exception list (#795) - -## 6.5.0-alpha.1 - -* Feat: Mobile Vitals - Native App Start (#749) -* Feat: Mobile Vitals - Native Frames (#772) - -## 6.4.0 - -### Various fixes & improvements - -* Fix: Missing userId on iOS when userId is not set (#782) by @marandaneto -* Allow to set startTimestamp & endTimestamp manually to SentrySpan (#676) by @fatihergin - -## 6.4.0-beta.3 - -* Feat: Allow to set startTimestamp & endTimestamp manually to SentrySpan (#676) -* Bump: Sentry-Cocoa to 7.10.0 (#777) -* Feat: Additional Dart/Flutter context information (#778) -* Bump: Kotlin plugin to 1.5.31 (#763) -* Fix: Missing userId on iOS when userId is not set (#782) - -## 6.4.0-beta.2 - -* No documented changes. - -## 6.4.0-beta.1 - -* Fix: Disable log by default in debug mode (#753) -* [Dio] Ref: Replace FailedRequestAdapter with FailedRequestInterceptor (#728) -* Fix: Add missing return values - dart analyzer (#742) -* Feat: Add `DioEventProcessor` which improves DioError crash reports (#718) -* Fix: Do not report duplicated packages and integrations (#760) -* Feat: Allow manual init of the Native SDK or no Native SDK at all (#765) - -## 6.3.0 - -* Feat: Support maxSpan for performance API and expose SentryOptions through Hub (#716) -* Fix: await ZonedGuard integration to run (#732) -* Fix: `sentry_logging` incorrectly setting SDK name (#725) -* Bump: Sentry-Android to 5.6.1 and Sentry-Cocoa to 7.9.0 (#736) -* Feat: Support Attachment.addToTransactions (#709) -* Fix: captureTransaction should return emptyId when transaction is discarded (#713) -* Add `SentryAssetBundle` for automatic spans for asset loading (#685) -* Fix: `maxRequestBodySize` should be `never` by default when using the FailedRequestClientAdapter directly (#701) -* Feat: Add support for [Dio](https://pub.dev/packages/dio) (#688) -* Fix: Use correct data/extras type in tracer (#693) -* Fix: Do not throw when Throwable type is not supported for associating errors to a transaction (#692) -* Feat: Automatically create transactions when navigating between screens (#643) - -## 6.3.0-beta.4 - -* Feat: Support Attachment.addToTransactions (#709) -* Fix: captureTransaction should return emptyId when transaction is discarded (#713) - -## 6.3.0-beta.3 - -* Feat: Auto transactions duration trimming (#702) -* Add `SentryAssetBundle` for automatic spans for asset loading (#685) -* Feat: Configure idle transaction duration (#705) -* Fix: `maxRequestBodySize` should be `never` by default when using the FailedRequestClientAdapter directly (#701) - -## 6.3.0-beta.2 - -* Feat: Improve configuration options of `SentryNavigatorObserver` (#684) -* Feat: Add support for [Dio](https://pub.dev/packages/dio) (#688) -* Bump: Sentry-Android to 5.5.2 and Sentry-Cocoa to 7.8.0 (#696) - -## 6.3.0-beta.1 - -* Enha: Replace flutter default root name '/' with 'root' (#678) -* Fix: Use 'navigation' instead of 'ui.load' for auto transaction operation (#675) -* Fix: Use correct data/extras type in tracer (#693) -* Fix: Do not throw when Throwable type is not supported for associating errors to a transaction (#692) - -## 6.3.0-alpha.1 - -* Feat: Automatically create transactions when navigating between screens (#643) - -## 6.2.2 - -* Fix: ConcurrentModificationError in when finishing span (#664) -* Feat: Add enableNdkScopeSync Android support (#665) - -## 6.2.1 - -* Fix: `sentry_logging` works now on web (#660) -* Fix: `sentry_logging` timestamps are in UTC (#660) -* Fix: `sentry_logging` Level.Off is never recorded (#660) -* Fix: Rate limiting fallback to retryAfterHeader (#658) - -## 6.2.0 - -* Feat: Integration for `logging` (#631) -* Feat: Add logger name to `SentryLogger` and send errors in integrations to the registered logger (#641) - -## 6.1.2 - -* Fix: Remove is Enum check to support older Dart versions (#635) - -## 6.1.1 - -* Fix: Transaction serialization if not encodable (#633) - -## 6.1.0 - -* Bump: Sentry-Android to 5.3.0 and Sentry-Cocoa to 7.5.1 (#629) -* Fix: event.origin tag for macOS and other Apple platforms (#622) -* Feat: Add current route as transaction (#615) -* Feat: Add Breadcrumbs for Flutters `debugPrint` (#618) -* Feat: Enrich Dart context with isolate name (#600) -* Feat: Sentry Performance for HTTP client (#603) -* Performance API for Dart/Flutter (#530) - -### Breaking Changes: - -* `SentryEvent` inherits from the `SentryEventLike` mixin -* `Scope#transaction` sets and reads from the `Scope#span` object if bound to the Scope - -## 6.1.0-beta.1 - -* Feat: Add current route as transaction (#615) -* Feat: Add Breadcrumbs for Flutters `debugPrint` (#618) - -## 6.1.0-alpha.2 - -* Bump Sentry Android SDK to [5.2.0](https://github.com/getsentry/sentry-dart/pull/594) (#594) - - [changelog](https://github.com/getsentry/sentry-java/blob/5.2.0/CHANGELOG.md) - - [diff](https://github.com/getsentry/sentry-java/compare/5.1.2...5.2.0) -* Feat: Enrich Dart context with isolate name (#600) -* Feat: Sentry Performance for HTTP client (#603) - -## 6.1.0-alpha.1 - -* Performance API for Dart/Flutter (#530) - -### Breaking Changes: - -* `SentryEvent` inherits from the `SentryEventLike` mixin -* `Scope#transaction` sets and reads from the `Scope#span` object if bound to the Scope - -## 6.0.1 - -* Fix: Set custom SentryHttpClientError when HTTP error is captured without an exception (#580) -* Bump: Android AGP 4.1 (#586) -* Bump: Sentry Cocoa to 7.3.0 (#589) - -## 6.0.0 - -* Fix: Update `SentryUser` according to docs (#561) -* Feat: Enable or disable reporting of packages (#563) -* Bump: Sentry-Cocoa to 7.2.7 (#578) -* Bump: Sentry-Android to 5.1.2 (#578) -* Fix: Read Sentry config from environment variables as fallback (#567) - -## 6.0.0-beta.4 - -### Breaking Changes: - -* Feat: Lists of exceptions and threads (#524) -* Feat: Collect more information for exceptions collected via `FlutterError.onError` (#538) -* Feat: Add maxAttachmentSize option (#553) -* Feat: HTTP breadcrumbs have the request & response size if available (#552) - -## 6.0.0-beta.3 - -* Fix: Re-initialization of Flutter SDK (#526) -* Enhancement: Call `toString()` on all non-serializable fields (#528) -* Fix: Always call `Flutter.onError` in order to not swallow messages (#533) -* Bump: Android SDK to 5.1.0-beta.6 (#535) - -## 6.0.0-beta.2 - -* Fix: Serialization of Flutter Context (#520) -* Feat: Add support for attachments (#505) -* Feat: Add support for User Feedback (#506) - -## 6.0.0-beta.1 - -* Feat: Browser detection (#502) -* Feat: Enrich events with more context (#452) -* Feat: Add Culture Context (#491) -* Feat: Add DeduplicationEventProcessor (#498) -* Feat: Capture failed requests as event (#473) -* Feat: `beforeSend` callback accepts async code (#494) - -### Breaking Changes: - -* Ref: EventProcessor changed to an interface (#489) -* Feat: Support envelope based transport for events (#391) - * The method signature of `Transport` changed from `Future send(SentryEvent event)` to `Future send(SentryEnvelope envelope)` -* Remove `Sentry.currentHub` (#490) -* Ref: Rename `cacheDirSize` to `maxCacheItems` and add `maxCacheItems` for iOS (#495) -* Ref: Add error and stacktrace parameter to logger (#503) -* Feat: Change timespans to Durations in SentryOptions (#504) -* Feat: `beforeSend` callback accepts async code (#494) - -### Sentry Self Hosted Compatibility - -* Since version `6.0.0` of the `sentry`, [Sentry's version >= v20.6.0](https://github.com/getsentry/self-hosted/releases) is required. This only applies to on-premise Sentry, if you are using sentry.io no action is needed. - -## 5.1.0 - -* Fix: Merge user from event and scope (#467) -* Feature: Allow setting of default values for in-app-frames via `SentryOptions.considerInAppFramesByDefault` (#482) -* Bump: sentry-android to v5.0.1 (#486) -* Bump: Sentry-Cocoa to 7.1.3 for iOS and macOS (#488) - -## 5.1.0-beta.1 - -* Fix: `Sentry.close()` closes native SDK integrations (#388) -* Feat: Support for macOS (#389) -* Feat: Support for Linux (#402) -* Feat: Support for Windows (#407) -* Fix: Mark `Sentry.currentHub` as deprecated (#406) -* Fix: Set console logger as default logger in debug mode (#413) -* Fix: Use name from pubspec.yaml for release if package id is not available (#411) -* Feat: `SentryHttpClient` tracks the duration which a request takes and logs failed requests (#414) -* Bump: sentry-cocoa to v7.0.0 (#424) -* Feat: Support for Out-of-Memory-Tracking on macOS/iOS (#424) -* Fix: Trim `\u0000` from Windows package info (#420) -* Feature: Log calls to `print()` as Breadcrumbs (#439) -* Fix: `dist` was read from `SENTRY_DSN`, now it's read from `SENTRY_DIST` (#442) -* Bump: sentry-cocoa to v7.0.3 (#445) -* Fix: Fix adding integrations on web (#450) -* Fix: Use `log()` instead of `print()` for SDK logging (#453) -* Bump: sentry-android to v5.0.0-beta.2 (#457) -* Feature: Add `withScope` callback to capture methods (#463) -* Fix: Add missing properties `language`, `screenHeightPixels` and `screenWidthPixels` to `SentryDevice` (#465) - -### Sentry Self Hosted Compatibility - -* This version of the `sentry` Dart package requires [Sentry server >= v20.6.0](https://github.com/getsentry/self-hosted/releases). This only applies to on-premise Sentry, if you are using sentry.io no action is needed. - -## 5.0.0 - -* Sound null safety -* Fix: event.origin and event.environment tags have wrong value for iOS (#365) and (#369) -* Fix: Fix deprecated `registrar.messenger` call in `SentryFlutterWeb` (#364) -* Fix: Enable breadcrumb recording mechanism based on platform (#366) -* Feat: Send default PII options (#360) -* Bump: sentry-cocoa to v6.2.1 (#360) -* Feat: Migration from `package_info` to `package_info_plus` plugin (#370) -* Fix: Set `SentryOptions.debug` in `sentry` (#376) -* Fix: Read all environment variables in `sentry` (#375) - -### Breaking Changes: - -* Return type of `Sentry.close()` changed from `void` to `Future` and `Integration.close()` changed from `void` to `FutureOr` (#395) -* Remove deprecated member `enableLifecycleBreadcrumbs`. Use `enableAppLifecycleBreadcrumbs` instead. (#366) - -## 4.1.0-nullsafety.1 - -* Bump: sentry-android to v4.3.0 (#343) -* Fix: Multiple FlutterError.onError calls in FlutterErrorIntegration (#345) -* Fix: Pass hint to EventProcessors (#356) -* Fix: EventProcessors were not dropping events when returning null (#353) - -### Breaking Changes: - -* Fix: Plugin Registrant class moved to barrel file (#358) - * This changed the import from `import 'package:sentry_flutter/src/sentry_flutter_web.dart';` - to `import 'package:sentry_flutter/sentry_flutter_web.dart';` - * This could lead to breaking changes. Typically it shouldn't because the referencing file is auto-generated. -* Fix: Prefix classes with Sentry (#357) - * A couple of classes were often conflicting with user's code. - Thus this change renames the following classes: - * `App` -> `SentryApp` - * `Browser` -> `SentryBrowser` - * `Device` -> `SentryDevice` - * `Gpu` -> `SentryGpu` - * `Integration` -> `SentryIntegration` - * `Message` -> `SentryMessage` - * `OperatingSystem` -> `SentryOperatingSystem` - * `Request` -> `SentryRequest` - * `User` -> `SentryUser` - * `Orientation` -> `SentryOrientation` - -## 4.1.0-nullsafety.0 - -* Fix: Do not append stack trace to the exception if there are no frames -* Fix: Empty DSN disables the SDK and runs the App -* Feat: sentry and sentry_flutter null-safety thanks to @ueman and @fzyzcjy - -## 4.0.6 - -* Fix: captureMessage defaults SentryLevel to info -* Fix: SentryEvent.throwable returns the unwrapped throwable instead of the throwableMechanism -* Feat: Support enableNativeCrashHandling on iOS - -## 4.0.5 - -* Bump: sentry-android to v4.0.0 -* Fix: Pana Flutter upper bound deprecation -* Fix: sentry_flutter static analysis (pana) using stable version - -## 4.0.4 - -* Fix: Call WidgetsFlutterBinding.ensureInitialized() within runZoneGuarded - -## 4.0.3 - -* Fix: Auto session tracking start on iOS #274 -* Bump: Sentry-cocoa to 6.1.4 - -## 4.0.2 - -* Fix: Mark session as `errored` in iOS #270 -* Fix: Pass auto session tracking interval to iOS -* Fix: Deprecated binaryMessenger (MethodChannel member) for Flutter Web -* Ref: Make `WidgetsFlutterBinding.ensureInitialized();` the first thing the Sentry SDK calls. -* Bump: Sentry-cocoa to 6.0.12 -* Feat: Respect FlutterError silent flag #248 -* Bump: Android SDK to v3.2.1 #273 - -## 4.0.1 - -* Ref: Changed category of Flutter lifecycle tracking [#240](https://github.com/getsentry/sentry-dart/issues/240) -* Fix: Envelope length should be based on the UTF8 array instead of String length - -## 4.0.0 - -Release of Sentry's new SDK for Dart/Flutter. - -New features not offered by <= v4.0.0: - -### Dart SDK - -* Sentry's [Unified API](https://develop.sentry.dev/sdk/unified-api/). -* Complete Sentry's [Protocol](https://develop.sentry.dev/sdk/event-payloads/) available. -* [Dart SDK](https://docs.sentry.io/platforms/dart/) docs. -* Automatic [HTTP Breadcrumbs](https://docs.sentry.io/platforms/dart/usage/advanced-usage/#automatic-breadcrumbs) for [http.Client](https://pub.dev/documentation/http/latest/http/Client-class.html) -* No boilerplate for `runZonedGuarded` and `Isolate.current.addErrorListener` -* All events are enriched with [Scope's Contexts](https://develop.sentry.dev/sdk/event-payloads/#scope-interfaces), this includes Breadcrumbs, tags, User, etc... - -### Flutter SDK - -* The Flutter SDK is built on top of the Dart SDK, so it includes all the available features, plus -* [Flutter SDK](https://docs.sentry.io/platforms/flutter/) docs. -* Automatic [NavigatorObserver Breadcrumbs](https://docs.sentry.io/platforms/flutter/usage/advanced-usage/#automatic-breadcrumbs) -* Automatic [Device's Breadcrumbs](https://docs.sentry.io/platforms/flutter/usage/advanced-usage/#automatic-breadcrumbs) through the Android and iOS SDKs or via Sentry's `WidgetsBindingObserver` wrapper -* No boilerplate for `FlutterError.onError` -* All events are enriched with [Contexts's data](https://develop.sentry.dev/sdk/event-payloads/contexts/), this includes Device's, OS, App info, etc... -* Offline caching -* [Release health](https://docs.sentry.io/product/releases/health/) -* Captures not only Dart and Flutter errors, but also errors caused on the native platforms, Like Kotlin, Java, C and C++ for Android and Swift, ObjC, C, C++ for iOS -* Supports Fatal crashes, Event is going to be sent on App's restart -* Supports `split-debug-info` for Android only -* Flutter Android, iOS and limited support for Flutter Web - -Improvements: - -* Feat: Added a copyWith method to all the protocol classes - -Packages were released on [sentry pubdev](https://pub.dev/packages/sentry) and [sentry_flutter pubdev](https://pub.dev/packages/sentry_flutter) - -### Sentry Self Hosted Compatibility - -* Since version `4.0.0` of the `sentry_flutter`, [Sentry's version >= v20.6.0](https://github.com/getsentry/self-hosted/releases) is required. This only applies to on-premise Sentry, if you are using sentry.io no action is needed. - -## 4.0.0-beta.2 - -* Ref: Remove duplicated attachStackTrace field -* Fix: Flutter Configurations should be able to mutate the SentryFlutterOptions -* Enhancement: Add SentryWidgetsBindingObserver, an Integration that captures certain window and device events. -* Enhancement: Set `options.environment` on SDK init based on the flags (kReleaseMode, kDebugMode, kProfileMode or SENTRY_ENVIRONMENT). -* Feature: SentryHttpClient to capture HTTP requests as breadcrumbs -* Ref: Only assign non-null option values in Android native integration in order preserve default values -* Enhancement: Add 'attachThreads' in options. When enabled, threads are attached to all logged events for Android -* Ref: Rename typedef `Logger` to `SentryLogger` to prevent name clashes with logging packages -* Fix: Scope Event processors should be awaited -* Fix: Package usage as git dependency - -### Breaking changes - -* `Logger` typedef is renamed to `SentryLogger` -* `attachStackTrace` is renamed to `attachStacktrace` - -## 4.0.0-beta.1 - -* Fix: StackTrace frames with 'package' uri.scheme are inApp by default #185 -* Fix: Missing App's StackTrace frames for Flutter errors -* Enhancement: Add isolateErrorIntegration and runZonedGuardedIntegration to default integrations in sentry-dart -* Fix: Breadcrumb list is a plain list instead of a values list #201 -* Ref: Remove deprecated classes (Flutter Plugin for Android) and cleaning up #186 -* Fix: Handle immutable event lists and maps -* Fix: NDK integration was being disabled by a typo -* Fix: Missing toList for debug meta #192 -* Enhancement: NavigationObserver to record Breadcrumbs for navigation events #197 -* Fix: Integrations should be closeable -* Feat: Support split-debug-info for Android #191 -* Fix: the event payload must never serialize null or empty fields -* Ref: Make hints optional - -### Breaking changes - -* `Sentry.init` and `SentryFlutter.init` have an optional callback argument which runs the host App after Sentry initialization. -* `Integration` is an `Interface` instead of a pure Function -* `Hints` are optional arguments -* Sentry Dart SDK adds an `IsolateError` handler by default - -## 4.0.0-alpha.2 - -* Enhancement: `Contexts` were added to the `Scope` #154 -* Fix: App. would hang if `debug` mode was enabled and refactoring ##157 -* Enhancement: Sentry Protocol v7 -* Enhancement: Added missing Protocol fields, `Request`, `SentryStackTrace`...) #155 -* Feat: Added `attachStackTrace` options to attach stack traces on `captureMessage` calls -* Feat: Flutter SDK has the Native SDKs embedded (Android and Apple) #158 - -### Breaking changes - -* `Sentry.init` returns a `Future`. -* Dart min. SDK is `2.8.0` -* Flutter min. SDK is `1.17.0` -* Timestamp has millis precision. -* For better groupping, add your own package to the `addInAppInclude` list, e.g. `options.addInAppInclude('sentry_flutter_example');` -* A few classes of the `Protocol` were renamed. - -### Sentry Self Hosted Compatibility - -* Since version `4.0.0` of the `sentry_flutter`, `Sentry` version >= `v20.6.0` is required. This only applies to on-premise Sentry, if you are using sentry.io no action is needed. - -## 4.0.0-alpha.1 - -First Release of Sentry's new SDK for Dart/Flutter. - -New features not offered by <= v4.0.0: - -* Sentry's [Unified API](https://develop.sentry.dev/sdk/unified-api/). -* Complete Sentry [Protocol](https://develop.sentry.dev/sdk/event-payloads/) available. -* Docs and Migration is under review on this [PR](https://github.com/getsentry/sentry-docs/pull/2599) -* For all the breaking changes follow this [PR](https://github.com/getsentry/sentry-dart/pull/117), they'll be soon available on the Migration page. - -Packages were released on [pubdev](https://pub.dev/packages/sentry) - -We'd love to get feedback and we'll work in getting the GA 4.0.0 out soon. -Until then, the stable SDK offered by Sentry is at version [3.0.1](https://github.com/getsentry/sentry-dart/releases/tag/3.0.1) - -## 3.0.1 - -* Add support for Contexts in Sentry events - -## 3.0.0+1 - -* `pubspec.yaml` and example code clean-up. - -## 3.0.0 - -* Support Web - * `SentryClient` from `package:sentry/sentry.dart` with conditional import - * `SentryBrowserClient` for web from `package:sentry/browser_client.dart` - * `SentryIOClient` for VM and Flutter from `package:sentry/io_client.dart` - -## 2.3.1 - -* Support non-standard port numbers and paths in DSN URL. - -## 2.3.0 - -* Add [breadcrumb](https://docs.sentry.io/development/sdk-dev/event-payloads/breadcrumbs/) support. - -## 2.2.0 - -* Add a `stackFrameFilter` argument to `SentryClient`'s `capture` method (96be842). -* Clean-up code using pre-Dart 2 API (91c7706, b01ebf8). - -## 2.1.1 - -* Defensively copy internal maps event attributes to - avoid shared mutable state (https://github.com/flutter/sentry/commit/044e4c1f43c2d199ed206e5529e2a630c90e4434) - -## 2.1.0 - -* Support DNS format without secret key. -* Remove dependency on `package:quiver`. -* The `clock` argument to `SentryClient` constructor _should_ now be - `ClockProvider` (but still accepts `Clock` for backwards compatibility). - -## 2.0.2 - -* Add support for user context in Sentry events. - -## 2.0.1 - -* Invert stack frames to be compatible with Sentry's default culprit detection. - -## 2.0.0 - -* Fixed deprecation warnings for Dart 2 -* Refactored tests to work with Dart 2 - -## 1.0.0 - -* first and last Dart 1-compatible release (we may fix bugs on a separate branch if there's demand) -* fix code for Dart 2 - -## 0.0.6 - -* use UTC in the `timestamp` field - -## 0.0.5 - -* remove sub-seconds from the timestamp - -## 0.0.4 - -* parse and report async gaps in stack traces - -## 0.0.3 - -* environment attributes -* auto-generate event_id and timestamp for events - -## 0.0.2 - -* parse and report stack traces -* use x-sentry-error HTTP response header -* gzip outgoing payloads by default - -## 0.0.1 - -* basic ability to send exception reports to Sentry.io diff --git a/drift/CHANGELOG.md b/drift/CHANGELOG.md new file mode 120000 index 0000000000..04c99a55ca --- /dev/null +++ b/drift/CHANGELOG.md @@ -0,0 +1 @@ +../CHANGELOG.md \ No newline at end of file diff --git a/drift/dartdoc_options.yaml b/drift/dartdoc_options.yaml deleted file mode 100644 index 20edf7f942..0000000000 --- a/drift/dartdoc_options.yaml +++ /dev/null @@ -1,3 +0,0 @@ -dartdoc: - errors: - - unresolved-doc-reference diff --git a/drift/dartdoc_options.yaml b/drift/dartdoc_options.yaml new file mode 120000 index 0000000000..7cbb8c0d74 --- /dev/null +++ b/drift/dartdoc_options.yaml @@ -0,0 +1 @@ +../dart/dartdoc_options.yaml \ No newline at end of file diff --git a/flutter/example/lib/main.dart b/flutter/example/lib/main.dart index 2011342d2a..8ff567b8cb 100644 --- a/flutter/example/lib/main.dart +++ b/flutter/example/lib/main.dart @@ -7,6 +7,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:logging/logging.dart'; +import 'package:path_provider/path_provider.dart'; import 'package:sentry_drift/sentry_drift.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:sentry_sqflite/sentry_sqflite.dart'; @@ -23,6 +24,7 @@ import 'user_feedback_dialog.dart'; import 'package:dio/dio.dart'; import 'package:sentry_dio/sentry_dio.dart'; import 'package:sentry_logging/sentry_logging.dart'; +import 'package:sentry_hive/sentry_hive.dart'; // ATTENTION: Change the DSN below with your own to see the events in Sentry. Get one at sentry.io const String exampleDsn = @@ -159,6 +161,10 @@ class MainScaffold extends StatelessWidget { onPressed: () => driftTest(), child: const Text('drift'), ), + ElevatedButton( + onPressed: () => hiveTest(), + child: const Text('hive'), + ), ElevatedButton( onPressed: () => sqfliteTest(), child: const Text('sqflite'), @@ -432,6 +438,31 @@ class MainScaffold extends StatelessWidget { ); } + Future hiveTest() async { + if (kIsWeb) { + return; + } + + final tr = Sentry.startTransaction( + 'hiveTest', + 'db', + bindToScope: true, + ); + + final appDir = await getApplicationDocumentsDirectory(); + SentryHive.init(appDir.path); + + final catsBox = await SentryHive.openBox('cats'); + await catsBox.put('fluffy', {'name': 'Fluffy', 'age': 4}); + await catsBox.put('loki', {'name': 'Loki', 'age': 2}); + await catsBox.clear(); + await catsBox.close(); + + SentryHive.close(); + + await tr.finish(status: const SpanStatus.ok()); + } + Future sqfliteTest() async { final tr = Sentry.startTransaction( 'sqfliteTest', diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index d7e5b0b244..ba0c742a7b 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -17,6 +17,7 @@ dependencies: sentry_logging: sentry_sqflite: sentry_file: + sentry_hive: sentry_drift: universal_platform: ^1.0.0 feedback: ^2.0.0 @@ -30,6 +31,7 @@ dependencies: #sqflite_common_ffi: ^2.0.0 #sqflite_common_ffi_web: ^0.3.0 http: ^1.0.0 + hive: any # This gets constrained by `sentry_hive` sqlite3_flutter_libs: ^0.5.0 dev_dependencies: diff --git a/flutter/example/pubspec_overrides.yaml b/flutter/example/pubspec_overrides.yaml index fd543af840..4a3bb3c8cc 100644 --- a/flutter/example/pubspec_overrides.yaml +++ b/flutter/example/pubspec_overrides.yaml @@ -11,5 +11,7 @@ dependency_overrides: path: ../../sqflite sentry_file: path: ../../file + sentry_hive: + path: ../../hive sentry_drift: path: ../../drift diff --git a/hive/.gitignore b/hive/.gitignore new file mode 100644 index 0000000000..ba521d5a39 --- /dev/null +++ b/hive/.gitignore @@ -0,0 +1,14 @@ +# Omit committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ diff --git a/hive/CHANGELOG.md b/hive/CHANGELOG.md new file mode 120000 index 0000000000..04c99a55ca --- /dev/null +++ b/hive/CHANGELOG.md @@ -0,0 +1 @@ +../CHANGELOG.md \ No newline at end of file diff --git a/hive/LICENSE b/hive/LICENSE new file mode 100644 index 0000000000..2a6964d84d --- /dev/null +++ b/hive/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Sentry + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/hive/README.md b/hive/README.md new file mode 100644 index 0000000000..593d367100 --- /dev/null +++ b/hive/README.md @@ -0,0 +1,85 @@ +

+ + + +
+

+ +Sentry integration for `hive` package +=========== + +| package | build | pub | likes | popularity | pub points | +|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| ------- | +| sentry_hive | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-hive/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-hive) | [![pub package](https://img.shields.io/pub/v/sentry_hive.svg)](https://pub.dev/packages/sentry_hive) | [![likes](https://img.shields.io/pub/likes/sentry_hive)](https://pub.dev/packages/sentry_hive/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_hive)](https://pub.dev/packages/sentry_hive/score) | [![pub points](https://img.shields.io/pub/points/sentry_hive)](https://pub.dev/packages/sentry_hive/score) + +Integration for the [`hive`](https://pub.dev/packages/hive) package. + +#### Usage + +- Sign up for a Sentry.io account and get a DSN at https://sentry.io. + +- Follow the installing instructions on [pub.dev](https://pub.dev/packages/sentry/install). + +- Initialize the Sentry SDK using the DSN issued by Sentry.io. + +- Call... + +```dart +import 'package:sentry/sentry.dart'; +import 'package:hive/hive.dart'; +import 'package:sentry_hive/sentry_hive.dart'; +import 'package:path_provider/path_provider.dart'; + +Future main() async { + await SentryFlutter.init( + (options) { + options.dsn = 'https://example@sentry.io/add-your-dsn-here'; + options.tracesSampleRate = 1.0; + }, + appRunner: () => runApp(YourApp()), + ); +} + +Future insertUser() async { + // Use [SentryHive] where you would use [Hive] + final appDir = await getApplicationDocumentsDirectory(); + SentryHive + ..init(appDir.path) + ..registerAdapter(PersonAdapter()); + + var box = await SentryHive.openBox('testBox'); + + var person = Person( + name: 'Dave', + age: 22, + ); + + await box.put('dave', person); + + print(box.get('dave')); // Dave: 22 +} + +@HiveType(typeId: 1) +class Person { + Person({required this.name, required this.age}); + + @HiveField(0) + String name; + + @HiveField(1) + int age; + + @override + String toString() { + return '$name: $age'; + } +} +``` + +#### Resources + +* [![Documentation](https://img.shields.io/badge/documentation-sentry.io-green.svg)](https://docs.sentry.io/platforms/dart/) +* [![Forum](https://img.shields.io/badge/forum-sentry-green.svg)](https://forum.sentry.io/c/sdks) +* [![Discord](https://img.shields.io/discord/621778831602221064)](https://discord.gg/Ww9hbqr) +* [![Stack Overflow](https://img.shields.io/badge/stack%20overflow-sentry-green.svg)](https://stackoverflow.com/questions/tagged/sentry) +* [![Twitter Follow](https://img.shields.io/twitter/follow/getsentry?label=getsentry&style=social)](https://twitter.com/intent/follow?screen_name=getsentry) diff --git a/hive/analysis_options.yaml b/hive/analysis_options.yaml new file mode 100644 index 0000000000..28ddbe2636 --- /dev/null +++ b/hive/analysis_options.yaml @@ -0,0 +1,34 @@ +include: package:lints/recommended.yaml + +analyzer: + language: + strict-casts: true + strict-inference: true + strict-raw-types: true + errors: + # treat missing required parameters as a warning (not a hint) + missing_required_param: error + # treat missing returns as a warning (not a hint) + missing_return: error + # allow having TODOs in the code + todo: ignore + # allow self-reference to deprecated members (we do this because otherwise we have + # to annotate every member in every test, assert, etc, when we deprecate something) + deprecated_member_use_from_same_package: warning + # ignore sentry/path on pubspec as we change it on deployment + invalid_dependency: ignore + unnecessary_import: ignore + exclude: + - example/** + - test/mocks/mocks.mocks.dart + +linter: + rules: + - prefer_final_locals + - public_member_api_docs + - prefer_single_quotes + - prefer_relative_imports + - unnecessary_brace_in_string_interps + - implementation_imports + - require_trailing_commas + - unawaited_futures diff --git a/hive/boxes_bad_keys.hive b/hive/boxes_bad_keys.hive new file mode 100644 index 0000000000..e69de29bb2 diff --git a/hive/dartdoc_options.yaml b/hive/dartdoc_options.yaml new file mode 120000 index 0000000000..7cbb8c0d74 --- /dev/null +++ b/hive/dartdoc_options.yaml @@ -0,0 +1 @@ +../dart/dartdoc_options.yaml \ No newline at end of file diff --git a/hive/example/example.dart b/hive/example/example.dart new file mode 100644 index 0000000000..b6d824e576 --- /dev/null +++ b/hive/example/example.dart @@ -0,0 +1,54 @@ +import 'package:sentry/sentry.dart'; +import 'package:hive/hive.dart'; +import 'package:sentry_hive/sentry_hive.dart'; + +part 'main.g.dart'; + +Future main() async { + // ATTENTION: Change the DSN below with your own to see the events in Sentry. Get one at sentry.io + const dsn = + 'https://e85b375ffb9f43cf8bdf9787768149e0@o447951.ingest.sentry.io/5428562'; + + await Sentry.init( + (options) { + options.dsn = dsn; + options.tracesSampleRate = 1.0; + options.debug = true; + }, + appRunner: runApp, // Init your App. + ); +} + +Future runApp() async { + // Use [SentryHive] where you would use [Hive] + SentryHive + ..init(Directory.current.path) + ..registerAdapter(PersonAdapter()); + + var box = await SentryHive.openBox('testBox'); + + var person = Person( + name: 'Dave', + age: 22, + ); + + await box.put('dave', person); + + print(box.get('dave')); // Dave: 22 +} + +@HiveType(typeId: 1) +class Person { + Person({required this.name, required this.age}); + + @HiveField(0) + String name; + + @HiveField(1) + int age; + + @override + String toString() { + return '$name: $age'; + } +} diff --git a/hive/lib/sentry_hive.dart b/hive/lib/sentry_hive.dart new file mode 100644 index 0000000000..03be720ca1 --- /dev/null +++ b/hive/lib/sentry_hive.dart @@ -0,0 +1,15 @@ +library sentry_hive; + +import 'package:meta/meta.dart'; +import 'package:hive/hive.dart'; +import 'src/sentry_hive_impl.dart'; +import 'src/sentry_hive_interface.dart'; + +export 'src/sentry_hive_interface.dart'; +export 'src/sentry_box_collection.dart'; + +/// Use [SentryHive] constant instead of [Hive] to get automatic performance +/// monitoring. +@experimental +// ignore: non_constant_identifier_names +SentryHiveInterface SentryHive = SentryHiveImpl(Hive); diff --git a/hive/lib/src/default_compaction_strategy.dart b/hive/lib/src/default_compaction_strategy.dart new file mode 100644 index 0000000000..0bcd0ecdb7 --- /dev/null +++ b/hive/lib/src/default_compaction_strategy.dart @@ -0,0 +1,9 @@ +const _deletedRatio = 0.15; +const _deletedThreshold = 60; + +/// Default compaction strategy compacts if 15% of total values and at least 60 +/// values have been deleted +bool defaultCompactionStrategy(int entries, int deletedEntries) { + return deletedEntries > _deletedThreshold && + deletedEntries / entries > _deletedRatio; +} diff --git a/hive/lib/src/default_key_comparator.dart b/hive/lib/src/default_key_comparator.dart new file mode 100644 index 0000000000..d7833ff536 --- /dev/null +++ b/hive/lib/src/default_key_comparator.dart @@ -0,0 +1,20 @@ +/// Efficient default implementation to compare keys +int defaultKeyComparator(dynamic k1, dynamic k2) { + if (k1 is int) { + if (k2 is int) { + if (k1 > k2) { + return 1; + } else if (k1 < k2) { + return -1; + } else { + return 0; + } + } else { + return -1; + } + } else if (k2 is String) { + return (k1 as String).compareTo(k2); + } else { + return 1; + } +} diff --git a/hive/lib/src/sentry_box.dart b/hive/lib/src/sentry_box.dart new file mode 100644 index 0000000000..f405307d43 --- /dev/null +++ b/hive/lib/src/sentry_box.dart @@ -0,0 +1,37 @@ +import 'package:meta/meta.dart'; +import 'package:hive/hive.dart'; +import 'package:sentry/sentry.dart'; + +import 'sentry_box_base.dart'; + +/// @nodoc +@internal +class SentryBox extends SentryBoxBase implements Box { + final Box _box; + + /// @nodoc + SentryBox(this._box, @internal Hub hub) : super(_box, hub); + + @override + E? get(key, {E? defaultValue}) { + return _box.get(key, defaultValue: defaultValue); + } + + @override + E? getAt(int index) { + return _box.getAt(index); + } + + @override + Map toMap() { + return _box.toMap(); + } + + @override + Iterable get values => _box.values; + + @override + Iterable valuesBetween({startKey, endKey}) { + return _box.valuesBetween(startKey: startKey, endKey: endKey); + } +} diff --git a/hive/lib/src/sentry_box_base.dart b/hive/lib/src/sentry_box_base.dart new file mode 100644 index 0000000000..6623fed5ad --- /dev/null +++ b/hive/lib/src/sentry_box_base.dart @@ -0,0 +1,203 @@ +import 'package:hive/hive.dart'; +import 'package:meta/meta.dart'; +import 'package:sentry/sentry.dart'; +import 'sentry_span_helper.dart'; + +/// @nodoc +@internal +class SentryBoxBase implements BoxBase { + final BoxBase _boxBase; + final Hub _hub; + + final _spanHelper = SentrySpanHelper( + // ignore: invalid_use_of_internal_member + SentryTraceOrigins.autoDbHiveBoxBase, + ); + + /// @nodoc + SentryBoxBase(this._boxBase, this._hub) { + _spanHelper.setHub(this._hub); + } + + @override + Future add(E value) async { + return _spanHelper.asyncWrapInSpan( + 'add', + () { + return _boxBase.add(value); + }, + dbName: name, + ); + } + + @override + Future> addAll(Iterable values) { + return _spanHelper.asyncWrapInSpan( + 'addAll', + () { + return _boxBase.addAll(values); + }, + dbName: name, + ); + } + + @override + Future clear() { + return _spanHelper.asyncWrapInSpan( + 'clear', + () { + return _boxBase.clear(); + }, + dbName: name, + ); + } + + @override + Future close() { + return _spanHelper.asyncWrapInSpan( + 'close', + () { + return _boxBase.close(); + }, + dbName: name, + ); + } + + @override + Future compact() { + return _spanHelper.asyncWrapInSpan( + 'compact', + () { + return _boxBase.compact(); + }, + dbName: name, + ); + } + + @override + bool containsKey(key) { + return _boxBase.containsKey(key); + } + + @override + Future delete(key) { + return _spanHelper.asyncWrapInSpan( + 'delete', + () { + return _boxBase.delete(key); + }, + dbName: name, + ); + } + + @override + Future deleteAll(Iterable keys) { + return _spanHelper.asyncWrapInSpan( + 'deleteAll', + () { + return _boxBase.deleteAll(keys); + }, + dbName: name, + ); + } + + @override + Future deleteAt(int index) { + return _spanHelper.asyncWrapInSpan( + 'deleteAt', + () { + return _boxBase.deleteAt(index); + }, + dbName: name, + ); + } + + @override + Future deleteFromDisk() { + return _spanHelper.asyncWrapInSpan( + 'deleteFromDisk', + () { + return _boxBase.deleteFromDisk(); + }, + dbName: name, + ); + } + + @override + Future flush() { + return _spanHelper.asyncWrapInSpan( + 'flush', + () { + return _boxBase.flush(); + }, + dbName: name, + ); + } + + @override + bool get isEmpty => _boxBase.isEmpty; + + @override + bool get isNotEmpty => _boxBase.isNotEmpty; + + @override + bool get isOpen => _boxBase.isOpen; + + @override + keyAt(int index) { + return _boxBase.keyAt(index); + } + + @override + Iterable get keys => _boxBase.keys; + + @override + bool get lazy => _boxBase.lazy; + + @override + int get length => _boxBase.length; + + @override + String get name => _boxBase.name; + + @override + String? get path => _boxBase.path; + + @override + Future put(key, value) { + return _spanHelper.asyncWrapInSpan( + 'put', + () { + return _boxBase.put(key, value); + }, + dbName: name, + ); + } + + @override + Future putAll(Map entries) { + return _spanHelper.asyncWrapInSpan( + 'putAll', + () { + return _boxBase.putAll(entries); + }, + dbName: name, + ); + } + + @override + Future putAt(int index, value) { + return _spanHelper.asyncWrapInSpan( + 'putAt', + () { + return _boxBase.putAt(index, value); + }, + dbName: name, + ); + } + + @override + Stream watch({key}) { + return _boxBase.watch(key: key); + } +} diff --git a/hive/lib/src/sentry_box_collection.dart b/hive/lib/src/sentry_box_collection.dart new file mode 100644 index 0000000000..d4c605efe2 --- /dev/null +++ b/hive/lib/src/sentry_box_collection.dart @@ -0,0 +1,125 @@ +import 'package:hive/hive.dart'; +import 'package:meta/meta.dart'; +import 'package:sentry/sentry.dart'; + +import 'sentry_span_helper.dart'; + +// ignore: implementation_imports +import 'package:hive/src/box_collection/box_collection_stub.dart' as stub; + +// ignore: implementation_imports +import 'package:hive/src/box_collection/box_collection_stub.dart' + if (dart.library.html) 'package:hive/src/box_collection/box_collection_indexed_db.dart' + if (dart.library.io) 'package:hive/src/box_collection/box_collection.dart' + as impl; + +/// Use instead of [BoxCollection] to add automatic tracing. +class SentryBoxCollection implements stub.BoxCollection { + final impl.BoxCollection _boxCollection; + + final _spanHelper = SentrySpanHelper( + // ignore: invalid_use_of_internal_member + SentryTraceOrigins.autoDbHiveBoxCollection, + ); + + /// Init with [impl.BoxCollection] + SentryBoxCollection(this._boxCollection); + + @override + Set get boxNames => _boxCollection.boxNames; + + @override + void close() { + _boxCollection.close(); + } + + /// @nodoc + @internal + void setHub(Hub hub) { + _spanHelper.setHub(hub); + } + + @override + Future deleteFromDisk() { + return _spanHelper.asyncWrapInSpan( + 'deleteFromDisk', + () { + return _boxCollection.deleteFromDisk(); + }, + dbName: name, + ); + } + + @override + String get name => _boxCollection.name; + + // ignore: public_member_api_docs + static Future open( + String name, + Set boxNames, { + String? path, + HiveCipher? key, + Hub? hub, + }) async { + final spanHelper = SentrySpanHelper( + // ignore: invalid_use_of_internal_member + SentryTraceOrigins.autoDbHiveBoxCollection, + ); + spanHelper.setHub(hub ?? HubAdapter()); + + return await spanHelper.asyncWrapInSpan( + 'open', + () async { + final boxCollection = await impl.BoxCollection.open( + name, + boxNames, + path: path, + key: key, + ); + final sbc = SentryBoxCollection(boxCollection); + sbc.setHub(hub ?? HubAdapter()); + return sbc; + }, + dbName: name, + ); + } + + @override + Future> openBox( + String name, { + bool preload = false, + stub.CollectionBox Function(String p1, stub.BoxCollection p2)? + boxCreator, + }) { + return _spanHelper.asyncWrapInSpan( + 'openBox', + () { + return _boxCollection.openBox( + name, + preload: preload, + boxCreator: boxCreator, + ); + }, + dbName: this.name, + ); + } + + @override + Future transaction( + Future Function() action, { + List? boxNames, + bool readOnly = false, + }) async { + return await _spanHelper.asyncWrapInSpan( + 'transaction', + () { + return _boxCollection.transaction( + action, + boxNames: boxNames, + readOnly: readOnly, + ); + }, + dbName: name, + ); + } +} diff --git a/hive/lib/src/sentry_hive_impl.dart b/hive/lib/src/sentry_hive_impl.dart new file mode 100644 index 0000000000..4eccc87506 --- /dev/null +++ b/hive/lib/src/sentry_hive_impl.dart @@ -0,0 +1,203 @@ +import 'dart:typed_data'; + +import 'package:hive/hive.dart'; +import 'package:meta/meta.dart'; +import 'package:sentry/sentry.dart'; +import 'sentry_box.dart'; +import 'sentry_lazy_box.dart'; +import 'sentry_hive_interface.dart'; + +import 'default_compaction_strategy.dart'; +import 'default_key_comparator.dart'; +import 'sentry_span_helper.dart'; + +/// @nodoc +@internal +class SentryHiveImpl implements SentryHiveInterface { + @internal + // ignore: public_member_api_docs + static const dbOp = 'db'; + + @internal + // ignore: public_member_api_docs + static const dbSystemKey = 'db.system'; + @internal + // ignore: public_member_api_docs + static const dbSystem = 'flutter_hive'; + + @internal + // ignore: public_member_api_docs + static const dbNameKey = 'db.name'; + + final HiveInterface _hive; + Hub _hub = HubAdapter(); + + /// @nodoc + SentryHiveImpl(this._hive); + + final _spanHelper = SentrySpanHelper( + // ignore: invalid_use_of_internal_member + SentryTraceOrigins.autoDbHive, + ); + + // SentryHiveInterface + + @override + void setHub(Hub hub) { + _hub = hub; + _spanHelper.setHub(hub); + } + + // HiveInterface + + @override + void init( + String? path, { + HiveStorageBackendPreference backendPreference = + HiveStorageBackendPreference.native, + }) { + return Hive.init(path, backendPreference: backendPreference); + } + + @override + Box box(String name) { + return _hive.box(name); + } + + @override + Future boxExists(String name, {String? path}) { + return _spanHelper.asyncWrapInSpan('boxExists', () { + return _hive.boxExists(name, path: path); + }); + } + + @override + Future close() { + return _spanHelper.asyncWrapInSpan('close', () { + return _hive.close(); + }); + } + + @override + Future deleteBoxFromDisk(String name, {String? path}) { + return _spanHelper.asyncWrapInSpan('deleteBoxFromDisk', () { + return _hive.deleteBoxFromDisk(name, path: path); + }); + } + + @override + Future deleteFromDisk() { + return _spanHelper.asyncWrapInSpan('deleteFromDisk', () { + return _hive.deleteFromDisk(); + }); + } + + @override + List generateSecureKey() { + return _hive.generateSecureKey(); + } + + @override + void ignoreTypeId(int typeId) { + return _hive.ignoreTypeId(typeId); + } + + @override + bool isAdapterRegistered(int typeId) { + return _hive.isAdapterRegistered(typeId); + } + + @override + bool isBoxOpen(String name) { + return _hive.isBoxOpen(name); + } + + @override + LazyBox lazyBox(String name) { + return _hive.lazyBox(name); + } + + @override + Future> openBox( + String name, { + HiveCipher? encryptionCipher, + KeyComparator keyComparator = defaultKeyComparator, + CompactionStrategy compactionStrategy = defaultCompactionStrategy, + bool crashRecovery = true, + String? path, + Uint8List? bytes, + String? collection, + @Deprecated('Use encryptionCipher instead') List? encryptionKey, + }) { + return _spanHelper.asyncWrapInSpan( + 'openBox', + () async { + final Box box = await _hive.openBox( + name, + encryptionCipher: encryptionCipher, + keyComparator: keyComparator, + compactionStrategy: compactionStrategy, + crashRecovery: crashRecovery, + path: path, + bytes: bytes, + collection: collection, + // ignore: deprecated_member_use + encryptionKey: encryptionKey, + ); + return SentryBox(box, _hub); + }, + dbName: name, + ); + } + + @override + Future> openLazyBox( + String name, { + HiveCipher? encryptionCipher, + KeyComparator keyComparator = defaultKeyComparator, + CompactionStrategy compactionStrategy = defaultCompactionStrategy, + bool crashRecovery = true, + String? path, + String? collection, + @Deprecated('Use encryptionCipher instead') List? encryptionKey, + }) { + return _spanHelper.asyncWrapInSpan( + 'openLazyBox', + () async { + final LazyBox lazyBox = await _hive.openLazyBox( + name, + encryptionCipher: encryptionCipher, + keyComparator: keyComparator, + compactionStrategy: compactionStrategy, + crashRecovery: crashRecovery, + path: path, + collection: collection, + // ignore: deprecated_member_use + encryptionKey: encryptionKey, + ); + return SentryLazyBox(lazyBox, _hub); + }, + dbName: name, + ); + } + + @override + void registerAdapter( + TypeAdapter adapter, { + bool internal = false, + bool override = false, + }) { + return _hive.registerAdapter( + adapter, + internal: internal, + override: override, + ); + } + + @visibleForTesting + @override + void resetAdapters() { + // ignore: invalid_use_of_visible_for_testing_member + return _hive.resetAdapters(); + } +} diff --git a/hive/lib/src/sentry_hive_interface.dart b/hive/lib/src/sentry_hive_interface.dart new file mode 100644 index 0000000000..18c76611e8 --- /dev/null +++ b/hive/lib/src/sentry_hive_interface.dart @@ -0,0 +1,11 @@ +import 'package:hive/hive.dart'; +import 'package:meta/meta.dart'; +import 'package:sentry/sentry.dart'; + +/// The main API interface of SentryHive. Available through the `SentryHive` +/// constant. +@experimental +abstract class SentryHiveInterface implements HiveInterface { + /// Set the Sentry [Hub] + void setHub(Hub hub); +} diff --git a/hive/lib/src/sentry_lazy_box.dart b/hive/lib/src/sentry_lazy_box.dart new file mode 100644 index 0000000000..86eabb9fdd --- /dev/null +++ b/hive/lib/src/sentry_lazy_box.dart @@ -0,0 +1,45 @@ +import 'package:hive/hive.dart'; +import 'package:meta/meta.dart'; +import 'package:sentry/sentry.dart'; + +import 'sentry_box_base.dart'; +import 'sentry_span_helper.dart'; + +/// @nodoc +@internal +class SentryLazyBox extends SentryBoxBase implements LazyBox { + final LazyBox _lazyBox; + final Hub _hub; + + final _spanHelper = SentrySpanHelper( + // ignore: invalid_use_of_internal_member + SentryTraceOrigins.autoDbHiveLazyBox, + ); + + /// @nodoc + SentryLazyBox(this._lazyBox, @internal this._hub) : super(_lazyBox, _hub) { + _spanHelper.setHub(_hub); + } + + @override + Future get(key, {E? defaultValue}) { + return _spanHelper.asyncWrapInSpan( + 'get', + () { + return _lazyBox.get(key, defaultValue: defaultValue); + }, + dbName: name, + ); + } + + @override + Future getAt(int index) { + return _spanHelper.asyncWrapInSpan( + 'getAt', + () { + return _lazyBox.getAt(index); + }, + dbName: name, + ); + } +} diff --git a/hive/lib/src/sentry_span_helper.dart b/hive/lib/src/sentry_span_helper.dart new file mode 100644 index 0000000000..a1c780ef08 --- /dev/null +++ b/hive/lib/src/sentry_span_helper.dart @@ -0,0 +1,58 @@ +import 'package:meta/meta.dart'; +import 'package:sentry/sentry.dart'; +import 'sentry_hive_impl.dart'; + +/// @nodoc +@internal +class SentrySpanHelper { + /// @nodoc + Hub _hub = HubAdapter(); + + /// @nodoc + final String _origin; + + /// @nodoc + SentrySpanHelper(this._origin); + + /// @nodoc + void setHub(Hub hub) { + _hub = hub; + } + + /// @nodoc + @internal + Future asyncWrapInSpan( + String description, + Future Function() execute, { + String? dbName, + }) async { + final currentSpan = _hub.getSpan(); + final span = currentSpan?.startChild( + SentryHiveImpl.dbOp, + description: description, + ); + + // ignore: invalid_use_of_internal_member + span?.origin = _origin; + + span?.setData(SentryHiveImpl.dbSystemKey, SentryHiveImpl.dbSystem); + + if (dbName != null) { + span?.setData(SentryHiveImpl.dbNameKey, dbName); + } + + try { + final result = await execute(); + span?.status = SpanStatus.ok(); + + return result; + } catch (exception) { + span?.throwable = exception; + span?.status = SpanStatus.internalError(); + + rethrow; + } finally { + await span?.finish(); + } + } +} diff --git a/hive/people-box-collection_bad_keys.hive b/hive/people-box-collection_bad_keys.hive new file mode 100644 index 0000000000..e69de29bb2 diff --git a/hive/pubspec.yaml b/hive/pubspec.yaml new file mode 100644 index 0000000000..9e1e79f2b5 --- /dev/null +++ b/hive/pubspec.yaml @@ -0,0 +1,22 @@ +name: sentry_hive +description: An integration which adds support for performance tracing for the hive package. +version: 7.10.1 +homepage: https://docs.sentry.io/platforms/flutter/ +repository: https://github.com/getsentry/sentry-dart +issue_tracker: https://github.com/getsentry/sentry-dart/issues + +environment: + sdk: '>=2.17.0 <4.0.0' + +dependencies: + sentry: 7.10.1 + hive: ^2.2.3 + meta: ^1.3.0 + +dev_dependencies: + lints: ^2.0.0 + test: ^1.21.0 + yaml: ^3.1.0 # needed for version match (code and pubspec) + mockito: ^5.1.0 + build_runner: ^2.4.2 + coverage: ^1.3.0 diff --git a/hive/pubspec_overrides.yaml b/hive/pubspec_overrides.yaml new file mode 100644 index 0000000000..16e71d16f0 --- /dev/null +++ b/hive/pubspec_overrides.yaml @@ -0,0 +1,3 @@ +dependency_overrides: + sentry: + path: ../dart diff --git a/hive/test/mocks/mocks.dart b/hive/test/mocks/mocks.dart new file mode 100644 index 0000000000..9b2db0e30d --- /dev/null +++ b/hive/test/mocks/mocks.dart @@ -0,0 +1,18 @@ +import 'package:hive/hive.dart'; +import 'package:mockito/annotations.dart'; +import 'package:sentry/sentry.dart'; + +import 'package:hive/src/box_collection/box_collection_stub.dart' + if (dart.library.html) 'package:hive/src/box_collection/box_collection_indexed_db.dart' + if (dart.library.io) 'package:hive/src/box_collection/box_collection.dart' + as impl; + +@GenerateMocks([ + Hub, + Box, + LazyBox, + HiveInterface, + // Edit generated code to make sure correct impl/stub class is used + impl.BoxCollection, +]) +void main() {} diff --git a/hive/test/mocks/mocks.mocks.dart b/hive/test/mocks/mocks.mocks.dart new file mode 100644 index 0000000000..6d1bb907d7 --- /dev/null +++ b/hive/test/mocks/mocks.mocks.dart @@ -0,0 +1,1307 @@ +// Mocks generated by Mockito 5.4.2 from annotations +// in sentry_hive/test/mocks/mocks.dart. +// Do not manually edit this file. + +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'dart:async' as _i5; +import 'dart:typed_data' as _i8; + +import 'package:hive/hive.dart' as _i3; +import 'package:hive/src/box/default_compaction_strategy.dart' as _i7; +import 'package:hive/src/box/default_key_comparator.dart' as _i6; +import 'package:mockito/mockito.dart' as _i1; +import 'package:sentry/sentry.dart' as _i2; +import 'package:sentry/src/profiling.dart' as _i4; + +import 'package:hive/src/box_collection/box_collection_stub.dart' as stub; + +// ignore: implementation_imports +import 'package:hive/src/box_collection/box_collection_stub.dart' + if (dart.library.html) 'package:hive/src/box_collection/box_collection_indexed_db.dart' + if (dart.library.io) 'package:hive/src/box_collection/box_collection.dart' + as impl; + +// ignore_for_file: type=lint +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: avoid_setters_without_getters +// ignore_for_file: comment_references +// ignore_for_file: implementation_imports +// ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: prefer_const_constructors +// ignore_for_file: unnecessary_parenthesis +// ignore_for_file: camel_case_types +// ignore_for_file: subtype_of_sealed_class + +class _FakeSentryOptions_0 extends _i1.SmartFake implements _i2.SentryOptions { + _FakeSentryOptions_0( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeSentryId_1 extends _i1.SmartFake implements _i2.SentryId { + _FakeSentryId_1( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeScope_2 extends _i1.SmartFake implements _i2.Scope { + _FakeScope_2( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeHub_3 extends _i1.SmartFake implements _i2.Hub { + _FakeHub_3( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeISentrySpan_4 extends _i1.SmartFake implements _i2.ISentrySpan { + _FakeISentrySpan_4( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeBox_5 extends _i1.SmartFake implements _i3.Box { + _FakeBox_5( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeLazyBox_6 extends _i1.SmartFake implements _i3.LazyBox { + _FakeLazyBox_6( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeCollectionBox_7 extends _i1.SmartFake + implements _i3.CollectionBox { + _FakeCollectionBox_7( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +/// A class which mocks [Hub]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockHub extends _i1.Mock implements _i2.Hub { + MockHub() { + _i1.throwOnMissingStub(this); + } + + @override + _i2.SentryOptions get options => (super.noSuchMethod( + Invocation.getter(#options), + returnValue: _FakeSentryOptions_0( + this, + Invocation.getter(#options), + ), + ) as _i2.SentryOptions); + + @override + bool get isEnabled => (super.noSuchMethod( + Invocation.getter(#isEnabled), + returnValue: false, + ) as bool); + + @override + _i2.SentryId get lastEventId => (super.noSuchMethod( + Invocation.getter(#lastEventId), + returnValue: _FakeSentryId_1( + this, + Invocation.getter(#lastEventId), + ), + ) as _i2.SentryId); + + @override + _i2.Scope get scope => (super.noSuchMethod( + Invocation.getter(#scope), + returnValue: _FakeScope_2( + this, + Invocation.getter(#scope), + ), + ) as _i2.Scope); + + @override + set profilerFactory(_i4.SentryProfilerFactory? value) => super.noSuchMethod( + Invocation.setter( + #profilerFactory, + value, + ), + returnValueForMissingStub: null, + ); + + @override + _i5.Future<_i2.SentryId> captureEvent( + dynamic event, { + dynamic stackTrace, + _i2.Hint? hint, + _i2.ScopeCallback? withScope, + }) => + (super.noSuchMethod( + Invocation.method( + #captureEvent, + [event], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + returnValue: _i5.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureEvent, + [event], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + )), + ) as _i5.Future<_i2.SentryId>); + + @override + _i5.Future<_i2.SentryId> captureException( + dynamic throwable, { + dynamic stackTrace, + _i2.Hint? hint, + _i2.ScopeCallback? withScope, + }) => + (super.noSuchMethod( + Invocation.method( + #captureException, + [throwable], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + returnValue: _i5.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureException, + [throwable], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + )), + ) as _i5.Future<_i2.SentryId>); + + @override + _i5.Future<_i2.SentryId> captureMessage( + String? message, { + _i2.SentryLevel? level, + String? template, + List? params, + _i2.Hint? hint, + _i2.ScopeCallback? withScope, + }) => + (super.noSuchMethod( + Invocation.method( + #captureMessage, + [message], + { + #level: level, + #template: template, + #params: params, + #hint: hint, + #withScope: withScope, + }, + ), + returnValue: _i5.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureMessage, + [message], + { + #level: level, + #template: template, + #params: params, + #hint: hint, + #withScope: withScope, + }, + ), + )), + ) as _i5.Future<_i2.SentryId>); + + @override + _i5.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => + (super.noSuchMethod( + Invocation.method( + #captureUserFeedback, + [userFeedback], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future addBreadcrumb( + _i2.Breadcrumb? crumb, { + _i2.Hint? hint, + }) => + (super.noSuchMethod( + Invocation.method( + #addBreadcrumb, + [crumb], + {#hint: hint}, + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + void bindClient(_i2.SentryClient? client) => super.noSuchMethod( + Invocation.method( + #bindClient, + [client], + ), + returnValueForMissingStub: null, + ); + + @override + _i2.Hub clone() => (super.noSuchMethod( + Invocation.method( + #clone, + [], + ), + returnValue: _FakeHub_3( + this, + Invocation.method( + #clone, + [], + ), + ), + ) as _i2.Hub); + + @override + _i5.Future close() => (super.noSuchMethod( + Invocation.method( + #close, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.FutureOr configureScope(_i2.ScopeCallback? callback) => + (super.noSuchMethod(Invocation.method( + #configureScope, + [callback], + )) as _i5.FutureOr); + + @override + _i2.ISentrySpan startTransaction( + String? name, + String? operation, { + String? description, + DateTime? startTimestamp, + bool? bindToScope, + bool? waitForChildren, + Duration? autoFinishAfter, + bool? trimEnd, + _i2.OnTransactionFinish? onFinish, + Map? customSamplingContext, + }) => + (super.noSuchMethod( + Invocation.method( + #startTransaction, + [ + name, + operation, + ], + { + #description: description, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + #customSamplingContext: customSamplingContext, + }, + ), + returnValue: _FakeISentrySpan_4( + this, + Invocation.method( + #startTransaction, + [ + name, + operation, + ], + { + #description: description, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + #customSamplingContext: customSamplingContext, + }, + ), + ), + ) as _i2.ISentrySpan); + + @override + _i2.ISentrySpan startTransactionWithContext( + _i2.SentryTransactionContext? transactionContext, { + Map? customSamplingContext, + DateTime? startTimestamp, + bool? bindToScope, + bool? waitForChildren, + Duration? autoFinishAfter, + bool? trimEnd, + _i2.OnTransactionFinish? onFinish, + }) => + (super.noSuchMethod( + Invocation.method( + #startTransactionWithContext, + [transactionContext], + { + #customSamplingContext: customSamplingContext, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + }, + ), + returnValue: _FakeISentrySpan_4( + this, + Invocation.method( + #startTransactionWithContext, + [transactionContext], + { + #customSamplingContext: customSamplingContext, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + }, + ), + ), + ) as _i2.ISentrySpan); + + @override + _i5.Future<_i2.SentryId> captureTransaction( + _i2.SentryTransaction? transaction, { + _i2.SentryTraceContextHeader? traceContext, + }) => + (super.noSuchMethod( + Invocation.method( + #captureTransaction, + [transaction], + {#traceContext: traceContext}, + ), + returnValue: _i5.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureTransaction, + [transaction], + {#traceContext: traceContext}, + ), + )), + ) as _i5.Future<_i2.SentryId>); + + @override + void setSpanContext( + dynamic throwable, + _i2.ISentrySpan? span, + String? transaction, + ) => + super.noSuchMethod( + Invocation.method( + #setSpanContext, + [ + throwable, + span, + transaction, + ], + ), + returnValueForMissingStub: null, + ); +} + +/// A class which mocks [Box]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockBox extends _i1.Mock implements _i3.Box { + MockBox() { + _i1.throwOnMissingStub(this); + } + + @override + Iterable get values => (super.noSuchMethod( + Invocation.getter(#values), + returnValue: [], + ) as Iterable); + + @override + String get name => (super.noSuchMethod( + Invocation.getter(#name), + returnValue: '', + ) as String); + + @override + bool get isOpen => (super.noSuchMethod( + Invocation.getter(#isOpen), + returnValue: false, + ) as bool); + + @override + bool get lazy => (super.noSuchMethod( + Invocation.getter(#lazy), + returnValue: false, + ) as bool); + + @override + Iterable get keys => (super.noSuchMethod( + Invocation.getter(#keys), + returnValue: [], + ) as Iterable); + + @override + int get length => (super.noSuchMethod( + Invocation.getter(#length), + returnValue: 0, + ) as int); + + @override + bool get isEmpty => (super.noSuchMethod( + Invocation.getter(#isEmpty), + returnValue: false, + ) as bool); + + @override + bool get isNotEmpty => (super.noSuchMethod( + Invocation.getter(#isNotEmpty), + returnValue: false, + ) as bool); + + @override + Iterable valuesBetween({ + dynamic startKey, + dynamic endKey, + }) => + (super.noSuchMethod( + Invocation.method( + #valuesBetween, + [], + { + #startKey: startKey, + #endKey: endKey, + }, + ), + returnValue: [], + ) as Iterable); + + @override + E? getAt(int? index) => (super.noSuchMethod(Invocation.method( + #getAt, + [index], + )) as E?); + + @override + Map toMap() => (super.noSuchMethod( + Invocation.method( + #toMap, + [], + ), + returnValue: {}, + ) as Map); + + @override + dynamic keyAt(int? index) => super.noSuchMethod(Invocation.method( + #keyAt, + [index], + )); + + @override + _i5.Stream<_i3.BoxEvent> watch({dynamic key}) => (super.noSuchMethod( + Invocation.method( + #watch, + [], + {#key: key}, + ), + returnValue: _i5.Stream<_i3.BoxEvent>.empty(), + ) as _i5.Stream<_i3.BoxEvent>); + + @override + bool containsKey(dynamic key) => (super.noSuchMethod( + Invocation.method( + #containsKey, + [key], + ), + returnValue: false, + ) as bool); + + @override + _i5.Future put( + dynamic key, + E? value, + ) => + (super.noSuchMethod( + Invocation.method( + #put, + [ + key, + value, + ], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future putAt( + int? index, + E? value, + ) => + (super.noSuchMethod( + Invocation.method( + #putAt, + [ + index, + value, + ], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future putAll(Map? entries) => (super.noSuchMethod( + Invocation.method( + #putAll, + [entries], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future add(E? value) => (super.noSuchMethod( + Invocation.method( + #add, + [value], + ), + returnValue: _i5.Future.value(0), + ) as _i5.Future); + + @override + _i5.Future> addAll(Iterable? values) => (super.noSuchMethod( + Invocation.method( + #addAll, + [values], + ), + returnValue: _i5.Future>.value([]), + ) as _i5.Future>); + + @override + _i5.Future delete(dynamic key) => (super.noSuchMethod( + Invocation.method( + #delete, + [key], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future deleteAt(int? index) => (super.noSuchMethod( + Invocation.method( + #deleteAt, + [index], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future deleteAll(Iterable? keys) => (super.noSuchMethod( + Invocation.method( + #deleteAll, + [keys], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future compact() => (super.noSuchMethod( + Invocation.method( + #compact, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future clear() => (super.noSuchMethod( + Invocation.method( + #clear, + [], + ), + returnValue: _i5.Future.value(0), + ) as _i5.Future); + + @override + _i5.Future close() => (super.noSuchMethod( + Invocation.method( + #close, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future deleteFromDisk() => (super.noSuchMethod( + Invocation.method( + #deleteFromDisk, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future flush() => (super.noSuchMethod( + Invocation.method( + #flush, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); +} + +/// A class which mocks [LazyBox]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockLazyBox extends _i1.Mock implements _i3.LazyBox { + MockLazyBox() { + _i1.throwOnMissingStub(this); + } + + @override + String get name => (super.noSuchMethod( + Invocation.getter(#name), + returnValue: '', + ) as String); + + @override + bool get isOpen => (super.noSuchMethod( + Invocation.getter(#isOpen), + returnValue: false, + ) as bool); + + @override + bool get lazy => (super.noSuchMethod( + Invocation.getter(#lazy), + returnValue: false, + ) as bool); + + @override + Iterable get keys => (super.noSuchMethod( + Invocation.getter(#keys), + returnValue: [], + ) as Iterable); + + @override + int get length => (super.noSuchMethod( + Invocation.getter(#length), + returnValue: 0, + ) as int); + + @override + bool get isEmpty => (super.noSuchMethod( + Invocation.getter(#isEmpty), + returnValue: false, + ) as bool); + + @override + bool get isNotEmpty => (super.noSuchMethod( + Invocation.getter(#isNotEmpty), + returnValue: false, + ) as bool); + + @override + _i5.Future get( + dynamic key, { + E? defaultValue, + }) => + (super.noSuchMethod( + Invocation.method( + #get, + [key], + {#defaultValue: defaultValue}, + ), + returnValue: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future getAt(int? index) => (super.noSuchMethod( + Invocation.method( + #getAt, + [index], + ), + returnValue: _i5.Future.value(), + ) as _i5.Future); + + @override + dynamic keyAt(int? index) => super.noSuchMethod(Invocation.method( + #keyAt, + [index], + )); + + @override + _i5.Stream<_i3.BoxEvent> watch({dynamic key}) => (super.noSuchMethod( + Invocation.method( + #watch, + [], + {#key: key}, + ), + returnValue: _i5.Stream<_i3.BoxEvent>.empty(), + ) as _i5.Stream<_i3.BoxEvent>); + + @override + bool containsKey(dynamic key) => (super.noSuchMethod( + Invocation.method( + #containsKey, + [key], + ), + returnValue: false, + ) as bool); + + @override + _i5.Future put( + dynamic key, + E? value, + ) => + (super.noSuchMethod( + Invocation.method( + #put, + [ + key, + value, + ], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future putAt( + int? index, + E? value, + ) => + (super.noSuchMethod( + Invocation.method( + #putAt, + [ + index, + value, + ], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future putAll(Map? entries) => (super.noSuchMethod( + Invocation.method( + #putAll, + [entries], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future add(E? value) => (super.noSuchMethod( + Invocation.method( + #add, + [value], + ), + returnValue: _i5.Future.value(0), + ) as _i5.Future); + + @override + _i5.Future> addAll(Iterable? values) => (super.noSuchMethod( + Invocation.method( + #addAll, + [values], + ), + returnValue: _i5.Future>.value([]), + ) as _i5.Future>); + + @override + _i5.Future delete(dynamic key) => (super.noSuchMethod( + Invocation.method( + #delete, + [key], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future deleteAt(int? index) => (super.noSuchMethod( + Invocation.method( + #deleteAt, + [index], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future deleteAll(Iterable? keys) => (super.noSuchMethod( + Invocation.method( + #deleteAll, + [keys], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future compact() => (super.noSuchMethod( + Invocation.method( + #compact, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future clear() => (super.noSuchMethod( + Invocation.method( + #clear, + [], + ), + returnValue: _i5.Future.value(0), + ) as _i5.Future); + + @override + _i5.Future close() => (super.noSuchMethod( + Invocation.method( + #close, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future deleteFromDisk() => (super.noSuchMethod( + Invocation.method( + #deleteFromDisk, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future flush() => (super.noSuchMethod( + Invocation.method( + #flush, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); +} + +/// A class which mocks [HiveInterface]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockHiveInterface extends _i1.Mock implements _i3.HiveInterface { + MockHiveInterface() { + _i1.throwOnMissingStub(this); + } + + @override + void init( + String? path, { + _i3.HiveStorageBackendPreference? backendPreference = + _i3.HiveStorageBackendPreference.native, + }) => + super.noSuchMethod( + Invocation.method( + #init, + [path], + {#backendPreference: backendPreference}, + ), + returnValueForMissingStub: null, + ); + + @override + _i5.Future<_i3.Box> openBox( + String? name, { + _i3.HiveCipher? encryptionCipher, + _i3.KeyComparator? keyComparator = _i6.defaultKeyComparator, + _i3.CompactionStrategy? compactionStrategy = _i7.defaultCompactionStrategy, + bool? crashRecovery = true, + String? path, + _i8.Uint8List? bytes, + String? collection, + List? encryptionKey, + }) => + (super.noSuchMethod( + Invocation.method( + #openBox, + [name], + { + #encryptionCipher: encryptionCipher, + #keyComparator: keyComparator, + #compactionStrategy: compactionStrategy, + #crashRecovery: crashRecovery, + #path: path, + #bytes: bytes, + #collection: collection, + #encryptionKey: encryptionKey, + }, + ), + returnValue: _i5.Future<_i3.Box>.value(_FakeBox_5( + this, + Invocation.method( + #openBox, + [name], + { + #encryptionCipher: encryptionCipher, + #keyComparator: keyComparator, + #compactionStrategy: compactionStrategy, + #crashRecovery: crashRecovery, + #path: path, + #bytes: bytes, + #collection: collection, + #encryptionKey: encryptionKey, + }, + ), + )), + ) as _i5.Future<_i3.Box>); + + @override + _i5.Future<_i3.LazyBox> openLazyBox( + String? name, { + _i3.HiveCipher? encryptionCipher, + _i3.KeyComparator? keyComparator = _i6.defaultKeyComparator, + _i3.CompactionStrategy? compactionStrategy = _i7.defaultCompactionStrategy, + bool? crashRecovery = true, + String? path, + String? collection, + List? encryptionKey, + }) => + (super.noSuchMethod( + Invocation.method( + #openLazyBox, + [name], + { + #encryptionCipher: encryptionCipher, + #keyComparator: keyComparator, + #compactionStrategy: compactionStrategy, + #crashRecovery: crashRecovery, + #path: path, + #collection: collection, + #encryptionKey: encryptionKey, + }, + ), + returnValue: _i5.Future<_i3.LazyBox>.value(_FakeLazyBox_6( + this, + Invocation.method( + #openLazyBox, + [name], + { + #encryptionCipher: encryptionCipher, + #keyComparator: keyComparator, + #compactionStrategy: compactionStrategy, + #crashRecovery: crashRecovery, + #path: path, + #collection: collection, + #encryptionKey: encryptionKey, + }, + ), + )), + ) as _i5.Future<_i3.LazyBox>); + + @override + _i3.Box box(String? name) => (super.noSuchMethod( + Invocation.method( + #box, + [name], + ), + returnValue: _FakeBox_5( + this, + Invocation.method( + #box, + [name], + ), + ), + ) as _i3.Box); + + @override + _i3.LazyBox lazyBox(String? name) => (super.noSuchMethod( + Invocation.method( + #lazyBox, + [name], + ), + returnValue: _FakeLazyBox_6( + this, + Invocation.method( + #lazyBox, + [name], + ), + ), + ) as _i3.LazyBox); + + @override + bool isBoxOpen(String? name) => (super.noSuchMethod( + Invocation.method( + #isBoxOpen, + [name], + ), + returnValue: false, + ) as bool); + + @override + _i5.Future close() => (super.noSuchMethod( + Invocation.method( + #close, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future deleteBoxFromDisk( + String? name, { + String? path, + }) => + (super.noSuchMethod( + Invocation.method( + #deleteBoxFromDisk, + [name], + {#path: path}, + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + _i5.Future deleteFromDisk() => (super.noSuchMethod( + Invocation.method( + #deleteFromDisk, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + List generateSecureKey() => (super.noSuchMethod( + Invocation.method( + #generateSecureKey, + [], + ), + returnValue: [], + ) as List); + + @override + _i5.Future boxExists( + String? name, { + String? path, + }) => + (super.noSuchMethod( + Invocation.method( + #boxExists, + [name], + {#path: path}, + ), + returnValue: _i5.Future.value(false), + ) as _i5.Future); + + @override + void resetAdapters() => super.noSuchMethod( + Invocation.method( + #resetAdapters, + [], + ), + returnValueForMissingStub: null, + ); + + @override + void registerAdapter( + _i3.TypeAdapter? adapter, { + bool? internal = false, + bool? override = false, + }) => + super.noSuchMethod( + Invocation.method( + #registerAdapter, + [adapter], + { + #internal: internal, + #override: override, + }, + ), + returnValueForMissingStub: null, + ); + + @override + bool isAdapterRegistered(int? typeId) => (super.noSuchMethod( + Invocation.method( + #isAdapterRegistered, + [typeId], + ), + returnValue: false, + ) as bool); + + @override + void ignoreTypeId(int? typeId) => super.noSuchMethod( + Invocation.method( + #ignoreTypeId, + [typeId], + ), + returnValueForMissingStub: null, + ); +} + +/// A class which mocks [BoxCollection]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockBoxCollection extends _i1.Mock implements impl.BoxCollection { + MockBoxCollection() { + _i1.throwOnMissingStub(this); + } + + @override + String get name => (super.noSuchMethod( + Invocation.getter(#name), + returnValue: '', + ) as String); + + @override + Set get boxNames => (super.noSuchMethod( + Invocation.getter(#boxNames), + returnValue: {}, + ) as Set); + + @override + _i5.Future> openBox( + String? name, { + bool? preload = false, + stub.CollectionBox Function( + String, + impl.BoxCollection, + )? boxCreator, + }) => + (super.noSuchMethod( + Invocation.method( + #openBox, + [name], + { + #preload: preload, + #boxCreator: boxCreator, + }, + ), + returnValue: + _i5.Future>.value(_FakeCollectionBox_7( + this, + Invocation.method( + #openBox, + [name], + { + #preload: preload, + #boxCreator: boxCreator, + }, + ), + )), + ) as _i5.Future>); + + @override + _i5.Future transaction( + _i5.Future Function()? action, { + List? boxNames, + bool? readOnly = false, + }) => + (super.noSuchMethod( + Invocation.method( + #transaction, + [action], + { + #boxNames: boxNames, + #readOnly: readOnly, + }, + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); + + @override + void close() => super.noSuchMethod( + Invocation.method( + #close, + [], + ), + returnValueForMissingStub: null, + ); + + @override + _i5.Future deleteFromDisk() => (super.noSuchMethod( + Invocation.method( + #deleteFromDisk, + [], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); +} diff --git a/hive/test/person.dart b/hive/test/person.dart new file mode 100644 index 0000000000..9e9e06e13e --- /dev/null +++ b/hive/test/person.dart @@ -0,0 +1,24 @@ +import 'package:hive/hive.dart'; + +@HiveType(typeId: 0) +class Person extends HiveObject { + @HiveField(0) + final String name; + + Person(this.name); +} + +class PersonAdapter extends TypeAdapter { + @override + final typeId = 0; + + @override + Person read(BinaryReader reader) { + return Person(reader.read() as String); + } + + @override + void write(BinaryWriter writer, Person obj) { + writer.write(obj.name); + } +} diff --git a/hive/test/sentry_box_base_test.dart b/hive/test/sentry_box_base_test.dart new file mode 100644 index 0000000000..3caf5e06e5 --- /dev/null +++ b/hive/test/sentry_box_base_test.dart @@ -0,0 +1,297 @@ +@TestOn('vm') + +import 'dart:io'; + +import 'package:hive/hive.dart'; +import 'package:mockito/mockito.dart'; +import 'package:sentry/sentry.dart'; +import 'package:sentry_hive/src/sentry_box_base.dart'; +import 'package:sentry_hive/src/sentry_hive_impl.dart'; +import 'package:test/test.dart'; +import 'package:sentry/src/sentry_tracer.dart'; + +import 'mocks/mocks.mocks.dart'; +import 'person.dart'; + +void main() { + void verifySpan(String description, SentrySpan? span) { + expect(span?.context.operation, SentryHiveImpl.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.ok()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbHiveBoxBase); + expect(span?.data[SentryHiveImpl.dbSystemKey], SentryHiveImpl.dbSystem); + expect(span?.data[SentryHiveImpl.dbNameKey], Fixture.dbName); + } + + void verifyErrorSpan( + String description, + Exception exception, + SentrySpan? span, + ) { + expect(span?.context.operation, SentryHiveImpl.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.internalError()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbHiveBoxBase); + expect(span?.data[SentryHiveImpl.dbSystemKey], SentryHiveImpl.dbSystem); + expect(span?.data[SentryHiveImpl.dbNameKey], Fixture.dbName); + + expect(span?.throwable, exception); + } + + group('adds span', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('add adds span', () async { + final sut = fixture.getSut(); + + await sut.add(Person('Joe Dirt')); + + verifySpan('add', fixture.getCreatedSpan()); + }); + + test('addAll adds span', () async { + final sut = fixture.getSut(); + + await sut.addAll([Person('Joe Dirt')]); + + verifySpan('addAll', fixture.getCreatedSpan()); + }); + + test('clear adds span', () async { + final sut = fixture.getSut(); + + await sut.clear(); + + verifySpan('clear', fixture.getCreatedSpan()); + }); + + test('close adds span', () async { + final sut = fixture.getSut(); + + await sut.close(); + + verifySpan('close', fixture.getCreatedSpan()); + }); + + test('compact adds span', () async { + final sut = fixture.getSut(); + + await sut.compact(); + + verifySpan('compact', fixture.getCreatedSpan()); + }); + + test('delete adds span', () async { + final sut = fixture.getSut(); + + await sut.delete('fixture-key'); + + verifySpan('delete', fixture.getCreatedSpan()); + }); + + test('deleteAll adds span', () async { + final sut = fixture.getSut(); + + await sut.deleteAll(['fixture-key']); + + verifySpan('deleteAll', fixture.getCreatedSpan()); + }); + + test('deleteAt adds span', () async { + final sut = fixture.getSut(); + + await sut.add(Person('Joe Dirt')); + await sut.deleteAt(0); + + verifySpan('deleteAt', fixture.getCreatedSpan()); + }); + }); + + group('adds error span', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.mockBox.name).thenReturn(Fixture.dbName); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('throwing add adds error span', () async { + when(fixture.mockBox.add(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.add(Person('Joe Dirt')); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('add', fixture.exception, fixture.getCreatedSpan()); + }); + + test('throwing addAll adds error span', () async { + when(fixture.mockBox.addAll(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.addAll([Person('Joe Dirt')]); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('addAll', fixture.exception, fixture.getCreatedSpan()); + }); + + test('throwing clear adds error span', () async { + when(fixture.mockBox.clear()).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.clear(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('clear', fixture.exception, fixture.getCreatedSpan()); + }); + + test('throwing close adds error span', () async { + when(fixture.mockBox.close()).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.close(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('close', fixture.exception, fixture.getCreatedSpan()); + }); + + test('throwing compact adds error span', () async { + when(fixture.mockBox.compact()).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.compact(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('compact', fixture.exception, fixture.getCreatedSpan()); + }); + + test('throwing delete adds error span', () async { + when(fixture.mockBox.delete(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.delete('fixture-key'); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('delete', fixture.exception, fixture.getCreatedSpan()); + }); + + test('throwing deleteAll adds error span', () async { + when(fixture.mockBox.deleteAll(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.deleteAll(['fixture-key']); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('deleteAll', fixture.exception, fixture.getCreatedSpan()); + }); + + test('throwing deleteAt adds error span', () async { + when(fixture.mockBox.add(any)).thenAnswer((_) async { + return 1; + }); + when(fixture.mockBox.deleteAt(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + await sut.add(Person('Joe Dirt')); + try { + await sut.deleteAt(0); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('deleteAt', fixture.exception, fixture.getCreatedSpan()); + }); + }); +} + +class Fixture { + late final Box box; + late final mockBox = MockBox(); + final options = SentryOptions(); + final hub = MockHub(); + final exception = Exception('fixture-exception'); + + static final dbName = 'people-box-base'; + + final _context = SentryTransactionContext('name', 'operation'); + late final tracer = SentryTracer(_context, hub); + + Future setUp() async { + Hive.init(Directory.systemTemp.path); + if (!Hive.isAdapterRegistered(0)) { + Hive.registerAdapter(PersonAdapter()); + } + box = await Hive.openBox(dbName); + } + + Future tearDown() async { + if (box.isOpen) { + await box.deleteFromDisk(); + await box.close(); + } + await Hive.close(); + } + + SentryBoxBase getSut({bool injectMockBox = false}) { + if (injectMockBox) { + return SentryBoxBase(mockBox, hub); + } else { + return SentryBoxBase(box, hub); + } + } + + SentrySpan? getCreatedSpan() { + return tracer.children.last; + } +} diff --git a/hive/test/sentry_box_collection_test.dart b/hive/test/sentry_box_collection_test.dart new file mode 100644 index 0000000000..4965896611 --- /dev/null +++ b/hive/test/sentry_box_collection_test.dart @@ -0,0 +1,225 @@ +@TestOn('vm') + +import 'dart:io'; + +import 'package:mockito/mockito.dart'; +import 'package:sentry/sentry.dart'; +import 'package:sentry_hive/sentry_hive.dart'; +import 'package:sentry_hive/src/sentry_box_collection.dart'; +import 'package:sentry_hive/src/sentry_hive_impl.dart'; +import 'package:test/test.dart'; +import 'package:sentry/src/sentry_tracer.dart'; + +import 'mocks/mocks.mocks.dart'; +import 'person.dart'; + +import 'package:hive/src/box_collection/box_collection_stub.dart' as stub; + +void main() { + void verifySpan(String description, SentrySpan? span) { + expect(span?.context.operation, SentryHiveImpl.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.ok()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbHiveBoxCollection); + expect(span?.data[SentryHiveImpl.dbSystemKey], SentryHiveImpl.dbSystem); + expect(span?.data[SentryHiveImpl.dbNameKey], Fixture.dbName); + } + + void verifyErrorSpan( + String description, + Exception exception, + SentrySpan? span, + ) { + expect(span?.context.operation, SentryHiveImpl.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.internalError()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbHiveBoxCollection); + expect(span?.data[SentryHiveImpl.dbSystemKey], SentryHiveImpl.dbSystem); + expect(span?.data[SentryHiveImpl.dbNameKey], Fixture.dbName); + + expect(span?.throwable, exception); + } + + group('adds span when calling', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('open', () async { + await SentryBoxCollection.open( + Fixture.dbName, + {'people'}, + hub: fixture.hub, + ); + + final span = fixture.getCreatedSpan(); + verifySpan('open', span); + }); + + test('openBox', () async { + final sut = await fixture.getSut(); + + await sut.openBox('people'); + + final span = fixture.getCreatedSpan(); + verifySpan('openBox', span); + }); + + test('transaction', () async { + final sut = await fixture.getSut(); + + final people = await sut.openBox('people'); + await sut.transaction( + () async { + print(people.name); + }, + boxNames: ['people'], + ); + final span = fixture.getCreatedSpan(); + verifySpan('transaction', span); + }); + + test('deleteFromDisk', () async { + final sut = await fixture.getSut(); + + await sut.deleteFromDisk(); + + final span = fixture.getCreatedSpan(); + verifySpan('deleteFromDisk', span); + }); + }); + + group('adds error span when calling', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.mockBoxCollection.name).thenReturn(Fixture.dbName); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + // open is static and cannot be mocked + + test('throwing openBox', () async { + when( + // ignore: inference_failure_on_function_invocation + fixture.mockBoxCollection.openBox( + any, + preload: anyNamed('preload'), + boxCreator: anyNamed('boxCreator'), + ), + ).thenThrow(fixture.exception); + + final sut = await fixture.getSut(injectMock: true); + + try { + // ignore: inference_failure_on_function_invocation + await sut.openBox('people'); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('openBox', fixture.exception, fixture.getCreatedSpan()); + }); + + test('throwing transaction', () async { + when( + fixture.mockBoxCollection.transaction( + any, + boxNames: anyNamed('boxNames'), + readOnly: anyNamed('readOnly'), + ), + ).thenThrow(fixture.exception); + + final sut = await fixture.getSut(injectMock: true); + + try { + await sut.transaction(() async {}); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan( + 'transaction', + fixture.exception, + fixture.getCreatedSpan(), + ); + }); + + test('throwing deleteFromDisk', () async { + when(fixture.mockBoxCollection.deleteFromDisk()) + .thenThrow(fixture.exception); + + final sut = await fixture.getSut(injectMock: true); + + try { + await sut.deleteFromDisk(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan( + 'deleteFromDisk', + fixture.exception, + fixture.getCreatedSpan(), + ); + }); + }); +} + +class Fixture { + final options = SentryOptions(); + final hub = MockHub(); + final exception = Exception('fixture-exception'); + + late final mockBoxCollection = MockBoxCollection(); + + static final dbName = 'people-box-collection'; + + final _context = SentryTransactionContext('name', 'operation'); + late final tracer = SentryTracer(_context, hub); + + Future setUp() async { + SentryHive.init(Directory.systemTemp.path); + if (!SentryHive.isAdapterRegistered(0)) { + SentryHive.registerAdapter(PersonAdapter()); + } + } + + Future tearDown() async { + await SentryHive.close(); + } + + Future getSut({bool injectMock = false}) async { + if (injectMock) { + final sbc = SentryBoxCollection(mockBoxCollection); + sbc.setHub(hub); + return sbc; + } else { + return await SentryBoxCollection.open(dbName, {'people'}, hub: hub); + } + } + + SentrySpan? getCreatedSpan() { + return tracer.children.last; + } +} diff --git a/hive/test/sentry_hive_impl_test.dart b/hive/test/sentry_hive_impl_test.dart new file mode 100644 index 0000000000..5bca3b75db --- /dev/null +++ b/hive/test/sentry_hive_impl_test.dart @@ -0,0 +1,310 @@ +@TestOn('vm') + +import 'dart:io'; + +import 'package:hive/hive.dart'; +import 'package:mockito/mockito.dart'; +import 'package:sentry/sentry.dart'; +import 'package:sentry/src/sentry_tracer.dart'; +import 'package:sentry_hive/src/sentry_box.dart'; +import 'package:sentry_hive/src/sentry_hive_impl.dart'; +import 'package:sentry_hive/src/sentry_lazy_box.dart'; +import 'package:test/test.dart'; + +import 'mocks/mocks.mocks.dart'; +import 'person.dart'; + +void main() { + void verifySpan( + String description, + SentrySpan? span, { + bool checkName = false, + }) { + expect(span?.context.operation, SentryHiveImpl.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.ok()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbHive); + // expect(span?.data[SentryHiveImpl.dbSystemKey], SentryHiveImpl.dbSystem); + if (checkName) { + expect(span?.data[SentryHiveImpl.dbNameKey], Fixture.dbName); + } + } + + void verifyErrorSpan(String description, SentrySpan? span, Exception error) { + expect(span?.context.operation, SentryHiveImpl.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.internalError()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbHive); + expect(span?.throwable, error); + } + + group('adds span', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('boxExists adds span', () async { + final sut = fixture.getSut(); + + await sut.openBox(Fixture.dbName); + await sut.boxExists(Fixture.dbName); + + verifySpan('boxExists', fixture.getCreatedSpan()); + }); + + test('close adds span', () async { + final sut = fixture.getSut(); + + await sut.close(); + + verifySpan('close', fixture.getCreatedSpan()); + }); + + test('deleteBoxFromDisk adds span', () async { + final sut = fixture.getSut(); + + await sut.openBox(Fixture.dbName); + await sut.deleteBoxFromDisk(Fixture.dbName); + + verifySpan('deleteBoxFromDisk', fixture.getCreatedSpan()); + }); + + test('deleteFromDisk adds span', () async { + final sut = fixture.getSut(); + + await sut.deleteFromDisk(); + + verifySpan('deleteFromDisk', fixture.getCreatedSpan()); + }); + + test('openBox adds span', () async { + final sut = fixture.getSut(); + + final box = await sut.openBox(Fixture.dbName); + + expect(box is SentryBox, true); + verifySpan('openBox', fixture.getCreatedSpan(), checkName: true); + }); + + test('openLazyBox adds span', () async { + final sut = fixture.getSut(); + + final box = await sut.openLazyBox(Fixture.dbName); + + expect(box is SentryLazyBox, true); + verifySpan('openLazyBox', fixture.getCreatedSpan(), checkName: true); + }); + }); + + group('adds error span', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(injectMockHive: true); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.mockHive.close()).thenAnswer((_) async => {}); + }); + + test('throwing boxExists adds error span', () async { + final Box box = MockBox(); + when( + fixture.mockHive.openBox( + any, + encryptionCipher: anyNamed('encryptionCipher'), + keyComparator: anyNamed('keyComparator'), + compactionStrategy: anyNamed('compactionStrategy'), + crashRecovery: anyNamed('crashRecovery'), + path: anyNamed('path'), + bytes: anyNamed('bytes'), + collection: anyNamed('collection'), + encryptionKey: anyNamed('encryptionKey'), + ), + ).thenAnswer((_) => Future(() => box)); + when(fixture.mockHive.boxExists(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + await sut.openBox(Fixture.dbName); + try { + await sut.boxExists(Fixture.dbName); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('boxExists', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing close adds error span', () async { + when(fixture.mockHive.close()).thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + try { + await sut.close(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('close', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing deleteBoxFromDisk adds error span', () async { + final Box box = MockBox(); + when( + fixture.mockHive.openBox( + any, + encryptionCipher: anyNamed('encryptionCipher'), + keyComparator: anyNamed('keyComparator'), + compactionStrategy: anyNamed('compactionStrategy'), + crashRecovery: anyNamed('crashRecovery'), + path: anyNamed('path'), + bytes: anyNamed('bytes'), + collection: anyNamed('collection'), + encryptionKey: anyNamed('encryptionKey'), + ), + ).thenAnswer((_) => Future(() => box)); + when(fixture.mockHive.deleteBoxFromDisk(any)) + .thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + await sut.openBox(Fixture.dbName); + try { + await sut.deleteBoxFromDisk(Fixture.dbName); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan( + 'deleteBoxFromDisk', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + + test('throwing deleteFromDisk adds error span', () async { + when(fixture.mockHive.deleteFromDisk()).thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + try { + await sut.deleteFromDisk(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan( + 'deleteFromDisk', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + + test('throwing openBox adds error span', () async { + when( + fixture.mockHive.openBox( + any, + encryptionCipher: anyNamed('encryptionCipher'), + keyComparator: anyNamed('keyComparator'), + compactionStrategy: anyNamed('compactionStrategy'), + crashRecovery: anyNamed('crashRecovery'), + path: anyNamed('path'), + bytes: anyNamed('bytes'), + collection: anyNamed('collection'), + encryptionKey: anyNamed('encryptionKey'), + ), + ).thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + try { + await sut.openBox(Fixture.dbName); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('openBox', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing openLazyBox adds error span', () async { + when( + fixture.mockHive.openLazyBox( + any, + encryptionCipher: anyNamed('encryptionCipher'), + keyComparator: anyNamed('keyComparator'), + compactionStrategy: anyNamed('compactionStrategy'), + crashRecovery: anyNamed('crashRecovery'), + path: anyNamed('path'), + collection: anyNamed('collection'), + encryptionKey: anyNamed('encryptionKey'), + ), + ).thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + try { + await sut.openLazyBox(Fixture.dbName); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan( + 'openLazyBox', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + }); +} + +class Fixture { + final options = SentryOptions(); + late final mockHive = MockHiveInterface(); + final hub = MockHub(); + static final dbName = 'people-hive-impl'; + final exception = Exception('fixture-exception'); + + final _context = SentryTransactionContext('name', 'operation'); + late final tracer = SentryTracer(_context, hub); + late SentryHiveImpl sut; + + Future setUp({bool injectMockHive = false}) async { + if (injectMockHive) { + sut = SentryHiveImpl(mockHive); + } else { + sut = SentryHiveImpl(Hive); + sut.init(Directory.systemTemp.path); + if (!sut.isAdapterRegistered(0)) { + sut.registerAdapter(PersonAdapter()); + } + } + sut.setHub(hub); + } + + Future tearDown() async { + await sut.close(); + } + + SentryHiveImpl getSut() { + return sut; + } + + SentrySpan? getCreatedSpan() { + return tracer.children.last; + } +} diff --git a/hive/test/sentry_lazy_box_test.dart b/hive/test/sentry_lazy_box_test.dart new file mode 100644 index 0000000000..263658af8d --- /dev/null +++ b/hive/test/sentry_lazy_box_test.dart @@ -0,0 +1,170 @@ +@TestOn('vm') + +import 'dart:io'; + +import 'package:hive/hive.dart'; +import 'package:mockito/mockito.dart'; +import 'package:sentry/sentry.dart'; +import 'package:sentry/src/sentry_tracer.dart'; +import 'package:sentry_hive/src/sentry_hive_impl.dart'; +import 'package:sentry_hive/src/sentry_lazy_box.dart'; +import 'package:test/test.dart'; + +import 'mocks/mocks.mocks.dart'; +import 'person.dart'; + +void main() { + void verifySpan(String description, SentrySpan? span) { + expect(span?.context.operation, SentryHiveImpl.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.ok()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbHiveLazyBox); + expect(span?.data[SentryHiveImpl.dbSystemKey], SentryHiveImpl.dbSystem); + expect(span?.data[SentryHiveImpl.dbNameKey], Fixture.dbName); + } + + void verifyErrorSpan( + String description, + Exception exception, + SentrySpan? span, + ) { + expect(span?.context.operation, SentryHiveImpl.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.internalError()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbHiveLazyBox); + expect(span?.data[SentryHiveImpl.dbSystemKey], SentryHiveImpl.dbSystem); + expect(span?.data[SentryHiveImpl.dbNameKey], Fixture.dbName); + + expect(span?.throwable, exception); + } + + group('adds span', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('get adds span', () async { + final sut = fixture.getSut(); + + await sut.put('fixture-key', Person('John Malkovich')); + await sut.get('fixture-key'); + + verifySpan('get', fixture.getCreatedSpan()); + }); + + test('getAt adds span', () async { + final sut = fixture.getSut(); + + await sut.add(Person('John Malkovich')); + await sut.getAt(0); + + verifySpan('getAt', fixture.getCreatedSpan()); + }); + }); + + group('adds error span', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.mockBox.name).thenReturn(Fixture.dbName); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('throwing get adds error span', () async { + when(fixture.mockBox.add(any)).thenAnswer((_) async { + return 1; + }); + when(fixture.mockBox.get(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + await sut.put('fixture-key', Person('John Malkovich')); + try { + await sut.get('fixture-key'); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('get', fixture.exception, fixture.getCreatedSpan()); + }); + + test('throwing getAt adds error span', () async { + when(fixture.mockBox.add(any)).thenAnswer((_) async { + return 1; + }); + when(fixture.mockBox.getAt(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + await sut.add(Person('John Malkovich')); + try { + await sut.getAt(0); + } catch (error) { + expect(error, fixture.exception); + } + + verifyErrorSpan('getAt', fixture.exception, fixture.getCreatedSpan()); + }); + }); +} + +class Fixture { + late final LazyBox box; + late final mockBox = MockLazyBox(); + final options = SentryOptions(); + final hub = MockHub(); + final exception = Exception('fixture-exception'); + + static final dbName = 'people-lazy-box'; + + final _context = SentryTransactionContext('name', 'operation'); + late final tracer = SentryTracer(_context, hub); + + Future setUp() async { + Hive.init(Directory.systemTemp.path); + if (!Hive.isAdapterRegistered(0)) { + Hive.registerAdapter(PersonAdapter()); + } + box = await Hive.openLazyBox(dbName); + } + + Future tearDown() async { + if (box.isOpen) { + await box.deleteFromDisk(); + await box.close(); + } + await Hive.close(); + } + + SentryLazyBox getSut({bool injectMockBox = false}) { + if (injectMockBox) { + return SentryLazyBox(mockBox, hub); + } else { + return SentryLazyBox(box, hub); + } + } + + SentrySpan? getCreatedSpan() { + return tracer.children.last; + } +} From b4aa843d74e79b7edcf47d86f107858999786c33 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 15 Nov 2023 11:40:10 +0000 Subject: [PATCH 072/166] release: 7.13.0 --- CHANGELOG.md | 2 +- dart/lib/src/version.dart | 2 +- dart/pubspec.yaml | 2 +- dio/lib/src/version.dart | 2 +- dio/pubspec.yaml | 4 ++-- file/lib/src/version.dart | 2 +- file/pubspec.yaml | 4 ++-- flutter/example/pubspec.yaml | 2 +- flutter/lib/src/version.dart | 2 +- flutter/pubspec.yaml | 4 ++-- logging/lib/src/version.dart | 2 +- logging/pubspec.yaml | 4 ++-- sqflite/lib/src/version.dart | 2 +- sqflite/pubspec.yaml | 4 ++-- 14 files changed, 19 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cec50f9143..9278de5425 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 7.13.0 ### Fixes diff --git a/dart/lib/src/version.dart b/dart/lib/src/version.dart index 3f070cc6d9..5432b1a4fd 100644 --- a/dart/lib/src/version.dart +++ b/dart/lib/src/version.dart @@ -9,7 +9,7 @@ library version; /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.12.0'; +const String sdkVersion = '7.13.0'; String sdkName(bool isWeb) => isWeb ? _browserSdkName : _ioSdkName; diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index 75cb48ec87..7c548d2529 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry -version: 7.12.0 +version: 7.13.0 description: > A crash reporting library for Dart that sends crash reports to Sentry.io. This library supports Dart VM and Web. For Flutter consider sentry_flutter instead. diff --git a/dio/lib/src/version.dart b/dio/lib/src/version.dart index 0446ba1e94..ec97ca52c4 100644 --- a/dio/lib/src/version.dart +++ b/dio/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.12.0'; +const String sdkVersion = '7.13.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_dio'; diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index 3970b0bab3..2fa8bb15b4 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_dio description: An integration which adds support for performance tracing for the Dio package. -version: 7.12.0 +version: 7.13.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: dio: ^5.0.0 - sentry: 7.12.0 + sentry: 7.13.0 dev_dependencies: meta: ^1.3.0 diff --git a/file/lib/src/version.dart b/file/lib/src/version.dart index 92f094f624..ed8f9e61b6 100644 --- a/file/lib/src/version.dart +++ b/file/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.12.0'; +const String sdkVersion = '7.13.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_file'; diff --git a/file/pubspec.yaml b/file/pubspec.yaml index c5de1b97c6..1e28c84418 100644 --- a/file/pubspec.yaml +++ b/file/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_file description: An integration which adds support for performance tracing for dart.io.File. -version: 7.12.0 +version: 7.13.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: sdk: '>=2.19.0 <4.0.0' dependencies: - sentry: 7.12.0 + sentry: 7.13.0 meta: ^1.3.0 dev_dependencies: diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index ba0c742a7b..d7605b6d4a 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_flutter_example description: Demonstrates how to use the sentry_flutter plugin. -version: 7.12.0 +version: 7.13.0 publish_to: 'none' # Remove this line if you wish to publish to pub.dev diff --git a/flutter/lib/src/version.dart b/flutter/lib/src/version.dart index 5f105e78d2..637ac3c2e9 100644 --- a/flutter/lib/src/version.dart +++ b/flutter/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.12.0'; +const String sdkVersion = '7.13.0'; /// The default SDK name reported to Sentry.io in the submitted events. const String sdkName = 'sentry.dart.flutter'; diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 15b69ec73a..435c4e0d82 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry_flutter -version: 7.12.0 +version: 7.13.0 description: Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supported by Sentry with native SDKs. homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart @@ -15,7 +15,7 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - sentry: 7.12.0 + sentry: 7.13.0 package_info_plus: '>=1.0.0 <5.0.0' meta: ^1.3.0 ffi: ^2.0.0 diff --git a/logging/lib/src/version.dart b/logging/lib/src/version.dart index 0d95c65871..b197892e5b 100644 --- a/logging/lib/src/version.dart +++ b/logging/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.12.0'; +const String sdkVersion = '7.13.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_logging'; diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index e1142ca3b3..16c5e9e26c 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_logging description: An integration which adds support for recording log from the logging package. -version: 7.12.0 +version: 7.13.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: logging: ^1.0.0 - sentry: 7.12.0 + sentry: 7.13.0 dev_dependencies: lints: ^3.0.0 diff --git a/sqflite/lib/src/version.dart b/sqflite/lib/src/version.dart index 4199899988..38b02d10ea 100644 --- a/sqflite/lib/src/version.dart +++ b/sqflite/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.12.0'; +const String sdkVersion = '7.13.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_sqflite'; diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index 154c932d50..2e0dfa3a36 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_sqflite description: An integration which adds support for performance tracing for the sqflite package. -version: 7.12.0 +version: 7.13.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' # matching sqflite dependencies: - sentry: 7.12.0 + sentry: 7.13.0 sqflite: ^2.0.0 sqflite_common: ^2.0.0 meta: ^1.3.0 From 0026762a8413fa4910abb63908822d0e97ea2933 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 15 Nov 2023 15:20:44 +0000 Subject: [PATCH 073/166] Fixes release of drift & hive (#1729) * Add integrations * Readd changelog * Add drift and hive to bump versions * Formatting and analyze * Update CHANGELOG and fix test * Update changelog * fix analyze issue --- CHANGELOG.md | 6 ++++ drift/lib/src/sentry_query_executor.dart | 5 +++ drift/lib/src/version.dart | 5 +++ drift/test/sentry_database_test.dart | 44 ++++++++++++++++++++++-- hive/lib/src/sentry_hive_impl.dart | 5 +++ hive/lib/src/version.dart | 5 +++ hive/test/sentry_hive_impl_test.dart | 41 ++++++++++++++++++++-- scripts/bump-version.sh | 2 +- 8 files changed, 107 insertions(+), 6 deletions(-) create mode 100644 drift/lib/src/version.dart create mode 100644 hive/lib/src/version.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index 9278de5425..3600c5e78d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Fixes + +- Fixes release of drift & hive and adds missing integration & sdk version information in the hub options ([#1729](https://github.com/getsentry/sentry-dart/pull/1729)) + ## 7.13.0 ### Fixes diff --git a/drift/lib/src/sentry_query_executor.dart b/drift/lib/src/sentry_query_executor.dart index 29697e3c92..aaf453dad7 100644 --- a/drift/lib/src/sentry_query_executor.dart +++ b/drift/lib/src/sentry_query_executor.dart @@ -4,6 +4,7 @@ import 'package:drift/backends.dart'; import 'package:drift/drift.dart'; import 'package:meta/meta.dart'; import 'package:sentry/sentry.dart'; +import 'version.dart'; import 'sentry_span_helper.dart'; import 'sentry_transaction_executor.dart'; @@ -56,6 +57,10 @@ class SentryQueryExecutor extends QueryExecutor { }) : _hub = hub ?? HubAdapter(), _dbName = databaseName, _executor = queryExecutor ?? LazyDatabase(opener) { + // ignore: invalid_use_of_internal_member + final options = _hub.options; + options.sdk.addIntegration('SentryDriftTracing'); + options.sdk.addPackage(packageName, sdkVersion); _spanHelper.setHub(_hub); } diff --git a/drift/lib/src/version.dart b/drift/lib/src/version.dart new file mode 100644 index 0000000000..42f7bd4ad9 --- /dev/null +++ b/drift/lib/src/version.dart @@ -0,0 +1,5 @@ +/// The SDK version reported to Sentry.io in the submitted events. +const String sdkVersion = '7.13.0'; + +/// The package name reported to Sentry.io in the submitted events. +const String packageName = 'pub:sentry_drift'; diff --git a/drift/test/sentry_database_test.dart b/drift/test/sentry_database_test.dart index 2b3dd96536..1a2f594007 100644 --- a/drift/test/sentry_database_test.dart +++ b/drift/test/sentry_database_test.dart @@ -10,6 +10,7 @@ import 'package:sentry/sentry.dart'; import 'package:sentry/src/sentry_tracer.dart'; import 'package:sentry_drift/src/sentry_query_executor.dart'; import 'package:sentry_drift/src/sentry_transaction_executor.dart'; +import 'package:sentry_drift/src/version.dart'; import 'package:sqlite3/open.dart'; import 'mocks/mocks.mocks.dart'; @@ -118,10 +119,11 @@ void main() { setUp(() async { fixture = Fixture(); - await fixture.setUp(); when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + + await fixture.setUp(); }); tearDown(() async { @@ -375,10 +377,11 @@ void main() { setUp(() async { fixture = Fixture(); - await fixture.setUp(); when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + + await fixture.setUp(); }); tearDown(() async { @@ -410,12 +413,13 @@ void main() { setUp(() async { fixture = Fixture(); - await fixture.setUp(injectMock: true); when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); when(fixture.mockLazyDatabase.ensureOpen(any)) .thenAnswer((_) => Future.value(true)); + + await fixture.setUp(injectMock: true); }); tearDown(() async { @@ -597,6 +601,40 @@ void main() { ); }); }); + + group('integrations', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + + await fixture.setUp(); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('adds integration', () { + expect( + fixture.options.sdk.integrations.contains('SentryDriftTracing'), + true, + ); + }); + + test('adds package', () { + expect( + fixture.options.sdk.packages.any( + (element) => + element.name == packageName && element.version == sdkVersion, + ), + true, + ); + }); + }); } class Fixture { diff --git a/hive/lib/src/sentry_hive_impl.dart b/hive/lib/src/sentry_hive_impl.dart index 4eccc87506..83e0e2234a 100644 --- a/hive/lib/src/sentry_hive_impl.dart +++ b/hive/lib/src/sentry_hive_impl.dart @@ -3,6 +3,7 @@ import 'dart:typed_data'; import 'package:hive/hive.dart'; import 'package:meta/meta.dart'; import 'package:sentry/sentry.dart'; +import 'version.dart'; import 'sentry_box.dart'; import 'sentry_lazy_box.dart'; import 'sentry_hive_interface.dart'; @@ -44,6 +45,10 @@ class SentryHiveImpl implements SentryHiveInterface { @override void setHub(Hub hub) { + // ignore: invalid_use_of_internal_member + final options = hub.options; + options.sdk.addIntegration('SentryHiveTracing'); + options.sdk.addPackage(packageName, sdkVersion); _hub = hub; _spanHelper.setHub(hub); } diff --git a/hive/lib/src/version.dart b/hive/lib/src/version.dart new file mode 100644 index 0000000000..30f3add162 --- /dev/null +++ b/hive/lib/src/version.dart @@ -0,0 +1,5 @@ +/// The SDK version reported to Sentry.io in the submitted events. +const String sdkVersion = '7.13.0'; + +/// The package name reported to Sentry.io in the submitted events. +const String packageName = 'pub:sentry_hive'; diff --git a/hive/test/sentry_hive_impl_test.dart b/hive/test/sentry_hive_impl_test.dart index 5bca3b75db..df5c8502f9 100644 --- a/hive/test/sentry_hive_impl_test.dart +++ b/hive/test/sentry_hive_impl_test.dart @@ -9,6 +9,7 @@ import 'package:sentry/src/sentry_tracer.dart'; import 'package:sentry_hive/src/sentry_box.dart'; import 'package:sentry_hive/src/sentry_hive_impl.dart'; import 'package:sentry_hive/src/sentry_lazy_box.dart'; +import 'package:sentry_hive/src/version.dart'; import 'package:test/test.dart'; import 'mocks/mocks.mocks.dart'; @@ -45,10 +46,11 @@ void main() { setUp(() async { fixture = Fixture(); - await fixture.setUp(); when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + + await fixture.setUp(); }); tearDown(() async { @@ -113,11 +115,12 @@ void main() { setUp(() async { fixture = Fixture(); - await fixture.setUp(injectMockHive: true); when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); when(fixture.mockHive.close()).thenAnswer((_) async => {}); + + await fixture.setUp(injectMockHive: true); }); test('throwing boxExists adds error span', () async { @@ -270,6 +273,40 @@ void main() { ); }); }); + + group('integrations', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + + await fixture.setUp(); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('adds integration', () { + expect( + fixture.options.sdk.integrations.contains('SentryHiveTracing'), + true, + ); + }); + + test('adds package', () { + expect( + fixture.options.sdk.packages.any( + (element) => + element.name == packageName && element.version == sdkVersion, + ), + true, + ); + }); + }); } class Fixture { diff --git a/scripts/bump-version.sh b/scripts/bump-version.sh index 30ddf659dd..d3e8fae081 100755 --- a/scripts/bump-version.sh +++ b/scripts/bump-version.sh @@ -10,7 +10,7 @@ NEW_VERSION="${2}" echo "Current version: ${OLD_VERSION}" echo "Bumping version: ${NEW_VERSION}" -for pkg in {dart,flutter,logging,dio,file,sqflite}; do +for pkg in {dart,flutter,logging,dio,file,sqflite,drift,hive}; do # Bump version in pubspec.yaml perl -pi -e "s/^version: .*/version: $NEW_VERSION/" $pkg/pubspec.yaml # Bump sentry dependency version in pubspec.yaml From 137698e359651d124827f3af0c992debf5640ce5 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 15 Nov 2023 15:25:12 +0000 Subject: [PATCH 074/166] release: 7.13.1 --- CHANGELOG.md | 2 +- dart/lib/src/version.dart | 2 +- dart/pubspec.yaml | 2 +- dio/lib/src/version.dart | 2 +- dio/pubspec.yaml | 4 ++-- drift/lib/src/version.dart | 2 +- drift/pubspec.yaml | 4 ++-- file/lib/src/version.dart | 2 +- file/pubspec.yaml | 4 ++-- flutter/example/pubspec.yaml | 2 +- flutter/lib/src/version.dart | 2 +- flutter/pubspec.yaml | 4 ++-- hive/lib/src/version.dart | 2 +- hive/pubspec.yaml | 4 ++-- logging/lib/src/version.dart | 2 +- logging/pubspec.yaml | 4 ++-- sqflite/lib/src/version.dart | 2 +- sqflite/pubspec.yaml | 4 ++-- 18 files changed, 25 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3600c5e78d..20779133ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 7.13.1 ### Fixes diff --git a/dart/lib/src/version.dart b/dart/lib/src/version.dart index 5432b1a4fd..ae1db0d901 100644 --- a/dart/lib/src/version.dart +++ b/dart/lib/src/version.dart @@ -9,7 +9,7 @@ library version; /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.0'; +const String sdkVersion = '7.13.1'; String sdkName(bool isWeb) => isWeb ? _browserSdkName : _ioSdkName; diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index 7c548d2529..4dc923be94 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry -version: 7.13.0 +version: 7.13.1 description: > A crash reporting library for Dart that sends crash reports to Sentry.io. This library supports Dart VM and Web. For Flutter consider sentry_flutter instead. diff --git a/dio/lib/src/version.dart b/dio/lib/src/version.dart index ec97ca52c4..5d8e41f2aa 100644 --- a/dio/lib/src/version.dart +++ b/dio/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.0'; +const String sdkVersion = '7.13.1'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_dio'; diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index 2fa8bb15b4..4fd89221bb 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_dio description: An integration which adds support for performance tracing for the Dio package. -version: 7.13.0 +version: 7.13.1 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: dio: ^5.0.0 - sentry: 7.13.0 + sentry: 7.13.1 dev_dependencies: meta: ^1.3.0 diff --git a/drift/lib/src/version.dart b/drift/lib/src/version.dart index 42f7bd4ad9..39be251dbf 100644 --- a/drift/lib/src/version.dart +++ b/drift/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.0'; +const String sdkVersion = '7.13.1'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_drift'; diff --git a/drift/pubspec.yaml b/drift/pubspec.yaml index abcecf2ca1..7f474b73e7 100644 --- a/drift/pubspec.yaml +++ b/drift/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_drift description: An integration which adds support for performance tracing for the drift package. -version: 7.12.0 +version: 7.13.1 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' dependencies: - sentry: 7.12.0 + sentry: 7.13.1 meta: ^1.3.0 drift: ^2.13.0 diff --git a/file/lib/src/version.dart b/file/lib/src/version.dart index ed8f9e61b6..da534425a9 100644 --- a/file/lib/src/version.dart +++ b/file/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.0'; +const String sdkVersion = '7.13.1'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_file'; diff --git a/file/pubspec.yaml b/file/pubspec.yaml index 1e28c84418..d1cb6a6036 100644 --- a/file/pubspec.yaml +++ b/file/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_file description: An integration which adds support for performance tracing for dart.io.File. -version: 7.13.0 +version: 7.13.1 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: sdk: '>=2.19.0 <4.0.0' dependencies: - sentry: 7.13.0 + sentry: 7.13.1 meta: ^1.3.0 dev_dependencies: diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index d7605b6d4a..aa5c959aa3 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_flutter_example description: Demonstrates how to use the sentry_flutter plugin. -version: 7.13.0 +version: 7.13.1 publish_to: 'none' # Remove this line if you wish to publish to pub.dev diff --git a/flutter/lib/src/version.dart b/flutter/lib/src/version.dart index 637ac3c2e9..8dfdd16262 100644 --- a/flutter/lib/src/version.dart +++ b/flutter/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.0'; +const String sdkVersion = '7.13.1'; /// The default SDK name reported to Sentry.io in the submitted events. const String sdkName = 'sentry.dart.flutter'; diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 435c4e0d82..c6880608ca 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry_flutter -version: 7.13.0 +version: 7.13.1 description: Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supported by Sentry with native SDKs. homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart @@ -15,7 +15,7 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - sentry: 7.13.0 + sentry: 7.13.1 package_info_plus: '>=1.0.0 <5.0.0' meta: ^1.3.0 ffi: ^2.0.0 diff --git a/hive/lib/src/version.dart b/hive/lib/src/version.dart index 30f3add162..00e8950582 100644 --- a/hive/lib/src/version.dart +++ b/hive/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.0'; +const String sdkVersion = '7.13.1'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_hive'; diff --git a/hive/pubspec.yaml b/hive/pubspec.yaml index 9e1e79f2b5..0a53ab3f16 100644 --- a/hive/pubspec.yaml +++ b/hive/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_hive description: An integration which adds support for performance tracing for the hive package. -version: 7.10.1 +version: 7.13.1 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -9,7 +9,7 @@ environment: sdk: '>=2.17.0 <4.0.0' dependencies: - sentry: 7.10.1 + sentry: 7.13.1 hive: ^2.2.3 meta: ^1.3.0 diff --git a/logging/lib/src/version.dart b/logging/lib/src/version.dart index b197892e5b..9e5b7e8364 100644 --- a/logging/lib/src/version.dart +++ b/logging/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.0'; +const String sdkVersion = '7.13.1'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_logging'; diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index 16c5e9e26c..e8254560c7 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_logging description: An integration which adds support for recording log from the logging package. -version: 7.13.0 +version: 7.13.1 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: logging: ^1.0.0 - sentry: 7.13.0 + sentry: 7.13.1 dev_dependencies: lints: ^3.0.0 diff --git a/sqflite/lib/src/version.dart b/sqflite/lib/src/version.dart index 38b02d10ea..912423e889 100644 --- a/sqflite/lib/src/version.dart +++ b/sqflite/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.0'; +const String sdkVersion = '7.13.1'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_sqflite'; diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index 2e0dfa3a36..e7ca891fec 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_sqflite description: An integration which adds support for performance tracing for the sqflite package. -version: 7.13.0 +version: 7.13.1 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' # matching sqflite dependencies: - sentry: 7.13.0 + sentry: 7.13.1 sqflite: ^2.0.0 sqflite_common: ^2.0.0 meta: ^1.3.0 From 408bdab123f225adb67d6213518f882ad8c3815f Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Thu, 16 Nov 2023 16:40:58 +0000 Subject: [PATCH 075/166] Fix formatting and analyze ci issues (#1733) * Fix analysis * Update readme * run format --- drift/README.md | 10 +++++++- drift/analysis_options.yaml | 1 - drift/lib/src/sentry_query_executor.dart | 1 - .../flutter_enricher_event_processor.dart | 7 +++--- flutter/lib/src/native/cocoa/binding.dart | 23 ++++++++----------- 5 files changed, 22 insertions(+), 20 deletions(-) diff --git a/drift/README.md b/drift/README.md index 4255e1bb76..e6fd9e6d11 100644 --- a/drift/README.md +++ b/drift/README.md @@ -8,6 +8,14 @@ Sentry integration for `drift` package =========== +| package | build | pub | likes | popularity | pub points | +|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| ------- | +| sentry_drift | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-drift/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-drift) | [![pub package](https://img.shields.io/pub/v/sentry_drift.svg)](https://pub.dev/packages/sentry_drift) | [![likes](https://img.shields.io/pub/likes/sentry_drift)](https://pub.dev/packages/sentry_drift/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_drift)](https://pub.dev/packages/sentry_drift/score) | [![pub points](https://img.shields.io/pub/points/sentry_drift)](https://pub.dev/packages/sentry_drift/score) + +Integration for the [`drift`](https://pub.dev/packages/drift) package. + +#### Usage + - Sign up for a Sentry.io account and get a DSN at https://sentry.io. - Follow the installing instructions on [pub.dev](https://pub.dev/packages/sentry/install). @@ -22,7 +30,7 @@ import 'package:drift/native.dart'; import 'package:sentry/sentry.dart'; import 'package:sentry_drift/sentry_drift.dart'; -import '../test/test_database.dart'; +import 'your_database.dart'; Future main() async { // ATTENTION: Change the DSN below with your own to see the events in Sentry. Get one at sentry.io diff --git a/drift/analysis_options.yaml b/drift/analysis_options.yaml index 28ddbe2636..c5f7c0d066 100644 --- a/drift/analysis_options.yaml +++ b/drift/analysis_options.yaml @@ -17,7 +17,6 @@ analyzer: deprecated_member_use_from_same_package: warning # ignore sentry/path on pubspec as we change it on deployment invalid_dependency: ignore - unnecessary_import: ignore exclude: - example/** - test/mocks/mocks.mocks.dart diff --git a/drift/lib/src/sentry_query_executor.dart b/drift/lib/src/sentry_query_executor.dart index aaf453dad7..6f09906970 100644 --- a/drift/lib/src/sentry_query_executor.dart +++ b/drift/lib/src/sentry_query_executor.dart @@ -1,6 +1,5 @@ import 'dart:async'; -import 'package:drift/backends.dart'; import 'package:drift/drift.dart'; import 'package:meta/meta.dart'; import 'package:sentry/sentry.dart'; diff --git a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart index de6b6bab9f..a4d04573a6 100644 --- a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart +++ b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart @@ -139,16 +139,15 @@ class FlutterEnricherEventProcessor implements EventProcessor { return { 'has_render_view': hasRenderView.toString(), if (tempDebugBrightnessOverride != null) - 'debug_brightness_override': describeEnum(tempDebugBrightnessOverride), + 'debug_brightness_override': tempDebugBrightnessOverride.name, if (debugPlatformOverride != null) - 'debug_default_target_platform_override': - describeEnum(debugPlatformOverride), + 'debug_default_target_platform_override': debugPlatformOverride.name, if (initialLifecycleState != null && initialLifecycleState.isNotEmpty) 'initial_lifecycle_state': initialLifecycleState, if (defaultRouteName != null && defaultRouteName.isNotEmpty) 'default_route_name': defaultRouteName, if (currentLifecycle != null) - 'current_lifecycle_state': describeEnum(currentLifecycle), + 'current_lifecycle_state': currentLifecycle.name, // Seems to always return false. // Also always fails in tests. // See https://github.com/flutter/flutter/issues/83919 diff --git a/flutter/lib/src/native/cocoa/binding.dart b/flutter/lib/src/native/cocoa/binding.dart index 0bd2e0437e..646a6bea83 100644 --- a/flutter/lib/src/native/cocoa/binding.dart +++ b/flutter/lib/src/native/cocoa/binding.dart @@ -37603,8 +37603,7 @@ class ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool extends _ObjCBlockBase { ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( SentryCocoa lib, ffi.Pointer< - ffi - .NativeFunction< + ffi.NativeFunction< ffi.Bool Function(ffi.Pointer arg0, ffi.UnsignedLong arg1, ffi.Pointer arg2)>> ptr) @@ -42032,17 +42031,15 @@ class ObjCBlock_bool_ObjCObject_bool extends _ObjCBlockBase { ffi.Pointer arg1)>> ptr) : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>( - _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, false) + .cast(), + ptr.cast()), lib); static ffi.Pointer? _cFuncTrampoline; From 67a02386dcd65239ea1e3797307d41bef811b16d Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Thu, 16 Nov 2023 16:41:54 +0000 Subject: [PATCH 076/166] Add drift and hive as craft registry target (#1731) * Add drift and hive as registry target --- .craft.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.craft.yml b/.craft.yml index 73e213edb7..04d1af925d 100644 --- a/.craft.yml +++ b/.craft.yml @@ -22,6 +22,5 @@ targets: pub:sentry_dio: pub:sentry_file: pub:sentry_sqflite: - # Initial release on pub.dev needed first before uncommenting - # pub:sentry_drift: - # pub:sentry_hive: + pub:sentry_drift: + pub:sentry_hive: From 0caa9119ef06cc11de30d989df86ee884d8263a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 10:11:57 +0100 Subject: [PATCH 077/166] build(deps): bump dart-lang/setup-dart from 1.3.0 to 1.6.0 (#1743) Bumps [dart-lang/setup-dart](https://github.com/dart-lang/setup-dart) from 1.3.0 to 1.6.0. - [Release notes](https://github.com/dart-lang/setup-dart/releases) - [Changelog](https://github.com/dart-lang/setup-dart/blob/main/CHANGELOG.md) - [Commits](https://github.com/dart-lang/setup-dart/compare/v1.3...b64355ae6ca0b5d484f0106a033dd1388965d06d) --- updated-dependencies: - dependency-name: dart-lang/setup-dart dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/hive.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 42b434d30e..09a37140b4 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -41,7 +41,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d # pin@v1 + - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v3 From 9de64255e2261473fd999b263ebc6d354b962c1e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 10:20:46 +0100 Subject: [PATCH 078/166] chore(deps): update Android SDK to v6.34.0 (#1746) * chore: update flutter/scripts/update-android.sh to 6.34.0 * Update CHANGELOG --------- Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor --- CHANGELOG.md | 12 ++++++++++++ flutter/android/build.gradle | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20779133ae..88b6540fff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## Unreleased + +### Fixes + +- Fix SIGSEV, SIGABRT and SIGBUS crashes happening after/around the August Google Play System update, see [#2955](https://github-redirect.dependabot.com/getsentry/sentry-java/issues/2955) for more details (fix provided by Native SDK bump) + +### Dependencies + +- Bump Android SDK from v6.33.1 to v6.34.0 ([#1746](https://github.com/getsentry/sentry-dart/pull/1746)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6340) + - [diff](https://github.com/getsentry/sentry-java/compare/6.33.1...6.34.0) + ## 7.13.1 ### Fixes diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index a532cb03f8..9e956927c8 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -60,7 +60,7 @@ android { } dependencies { - api 'io.sentry:sentry-android:6.33.1' + api 'io.sentry:sentry-android:6.34.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // Required -- JUnit 4 framework From 683fd34f35c964a36534f6df6b3d4cb325f5069c Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 22 Nov 2023 10:44:30 +0100 Subject: [PATCH 079/166] deps: update `package_info_plus` constraints (#1749) * Update constraints * Update CHANGELOG --- CHANGELOG.md | 1 + flutter/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88b6540fff..3ba9c93434 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ ### Dependencies +- Update package-info-plus constraint to include 5.0.1 ([#1749](https://github.com/getsentry/sentry-dart/pull/1749)) - Bump Android SDK from v6.33.1 to v6.34.0 ([#1746](https://github.com/getsentry/sentry-dart/pull/1746)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#6340) - [diff](https://github.com/getsentry/sentry-java/compare/6.33.1...6.34.0) diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index c6880608ca..4e44427a1e 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -16,7 +16,7 @@ dependencies: flutter_web_plugins: sdk: flutter sentry: 7.13.1 - package_info_plus: '>=1.0.0 <5.0.0' + package_info_plus: '>=1.0.0 <=5.0.1' meta: ^1.3.0 ffi: ^2.0.0 From a6940c1a7697cb2a52ff08d0da59519d8d7e4dda Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 22 Nov 2023 10:52:01 +0000 Subject: [PATCH 080/166] release: 7.13.2 --- CHANGELOG.md | 2 +- dart/lib/src/version.dart | 2 +- dart/pubspec.yaml | 2 +- dio/lib/src/version.dart | 2 +- dio/pubspec.yaml | 4 ++-- drift/lib/src/version.dart | 2 +- drift/pubspec.yaml | 4 ++-- file/lib/src/version.dart | 2 +- file/pubspec.yaml | 4 ++-- flutter/example/pubspec.yaml | 2 +- flutter/lib/src/version.dart | 2 +- flutter/pubspec.yaml | 4 ++-- hive/lib/src/version.dart | 2 +- hive/pubspec.yaml | 4 ++-- logging/lib/src/version.dart | 2 +- logging/pubspec.yaml | 4 ++-- sqflite/lib/src/version.dart | 2 +- sqflite/pubspec.yaml | 4 ++-- 18 files changed, 25 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ba9c93434..f7a599a956 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 7.13.2 ### Fixes diff --git a/dart/lib/src/version.dart b/dart/lib/src/version.dart index ae1db0d901..3f3c44b449 100644 --- a/dart/lib/src/version.dart +++ b/dart/lib/src/version.dart @@ -9,7 +9,7 @@ library version; /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.1'; +const String sdkVersion = '7.13.2'; String sdkName(bool isWeb) => isWeb ? _browserSdkName : _ioSdkName; diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index 4dc923be94..e2e2a7c1c6 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry -version: 7.13.1 +version: 7.13.2 description: > A crash reporting library for Dart that sends crash reports to Sentry.io. This library supports Dart VM and Web. For Flutter consider sentry_flutter instead. diff --git a/dio/lib/src/version.dart b/dio/lib/src/version.dart index 5d8e41f2aa..2e88298a45 100644 --- a/dio/lib/src/version.dart +++ b/dio/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.1'; +const String sdkVersion = '7.13.2'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_dio'; diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index 4fd89221bb..b8c55a1147 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_dio description: An integration which adds support for performance tracing for the Dio package. -version: 7.13.1 +version: 7.13.2 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: dio: ^5.0.0 - sentry: 7.13.1 + sentry: 7.13.2 dev_dependencies: meta: ^1.3.0 diff --git a/drift/lib/src/version.dart b/drift/lib/src/version.dart index 39be251dbf..5fe2e65abd 100644 --- a/drift/lib/src/version.dart +++ b/drift/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.1'; +const String sdkVersion = '7.13.2'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_drift'; diff --git a/drift/pubspec.yaml b/drift/pubspec.yaml index 7f474b73e7..7d871c6156 100644 --- a/drift/pubspec.yaml +++ b/drift/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_drift description: An integration which adds support for performance tracing for the drift package. -version: 7.13.1 +version: 7.13.2 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' dependencies: - sentry: 7.13.1 + sentry: 7.13.2 meta: ^1.3.0 drift: ^2.13.0 diff --git a/file/lib/src/version.dart b/file/lib/src/version.dart index da534425a9..a979700d5a 100644 --- a/file/lib/src/version.dart +++ b/file/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.1'; +const String sdkVersion = '7.13.2'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_file'; diff --git a/file/pubspec.yaml b/file/pubspec.yaml index d1cb6a6036..fe9d2fe916 100644 --- a/file/pubspec.yaml +++ b/file/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_file description: An integration which adds support for performance tracing for dart.io.File. -version: 7.13.1 +version: 7.13.2 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: sdk: '>=2.19.0 <4.0.0' dependencies: - sentry: 7.13.1 + sentry: 7.13.2 meta: ^1.3.0 dev_dependencies: diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index aa5c959aa3..fc09a3776e 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_flutter_example description: Demonstrates how to use the sentry_flutter plugin. -version: 7.13.1 +version: 7.13.2 publish_to: 'none' # Remove this line if you wish to publish to pub.dev diff --git a/flutter/lib/src/version.dart b/flutter/lib/src/version.dart index 8dfdd16262..598160e5d9 100644 --- a/flutter/lib/src/version.dart +++ b/flutter/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.1'; +const String sdkVersion = '7.13.2'; /// The default SDK name reported to Sentry.io in the submitted events. const String sdkName = 'sentry.dart.flutter'; diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 4e44427a1e..5c4d529917 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry_flutter -version: 7.13.1 +version: 7.13.2 description: Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supported by Sentry with native SDKs. homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart @@ -15,7 +15,7 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - sentry: 7.13.1 + sentry: 7.13.2 package_info_plus: '>=1.0.0 <=5.0.1' meta: ^1.3.0 ffi: ^2.0.0 diff --git a/hive/lib/src/version.dart b/hive/lib/src/version.dart index 00e8950582..080ff8f0f2 100644 --- a/hive/lib/src/version.dart +++ b/hive/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.1'; +const String sdkVersion = '7.13.2'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_hive'; diff --git a/hive/pubspec.yaml b/hive/pubspec.yaml index 0a53ab3f16..a89e369324 100644 --- a/hive/pubspec.yaml +++ b/hive/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_hive description: An integration which adds support for performance tracing for the hive package. -version: 7.13.1 +version: 7.13.2 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -9,7 +9,7 @@ environment: sdk: '>=2.17.0 <4.0.0' dependencies: - sentry: 7.13.1 + sentry: 7.13.2 hive: ^2.2.3 meta: ^1.3.0 diff --git a/logging/lib/src/version.dart b/logging/lib/src/version.dart index 9e5b7e8364..70c5b7d597 100644 --- a/logging/lib/src/version.dart +++ b/logging/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.1'; +const String sdkVersion = '7.13.2'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_logging'; diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index e8254560c7..4b6145bc85 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_logging description: An integration which adds support for recording log from the logging package. -version: 7.13.1 +version: 7.13.2 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: logging: ^1.0.0 - sentry: 7.13.1 + sentry: 7.13.2 dev_dependencies: lints: ^3.0.0 diff --git a/sqflite/lib/src/version.dart b/sqflite/lib/src/version.dart index 912423e889..3df0f707c4 100644 --- a/sqflite/lib/src/version.dart +++ b/sqflite/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.1'; +const String sdkVersion = '7.13.2'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_sqflite'; diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index e7ca891fec..653adbe3de 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_sqflite description: An integration which adds support for performance tracing for the sqflite package. -version: 7.13.1 +version: 7.13.2 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' # matching sqflite dependencies: - sentry: 7.13.1 + sentry: 7.13.2 sqflite: ^2.0.0 sqflite_common: ^2.0.0 meta: ^1.3.0 From dd08ebb62823412b98e2f2fc9cca581d50fe1670 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Nov 2023 13:54:20 +0100 Subject: [PATCH 081/166] build(deps): bump codecov/codecov-action from 3.1.1 to 3.1.4 (#1742) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.1 to 3.1.4. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v3.1.1...eaaf4bedf32dbdc6b720b63067d99c4d77d6047d) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/hive.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 09a37140b4..7ed624e9d4 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # pin@v3 + - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_hive From 14950f1e7a5fc460a90d4da80bc0a2344443ce38 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Nov 2023 13:54:35 +0100 Subject: [PATCH 082/166] build(deps): bump styfle/cancel-workflow-action from 0.11.0 to 0.12.0 (#1741) Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.11.0 to 0.12.0. - [Release notes](https://github.com/styfle/cancel-workflow-action/releases) - [Commits](https://github.com/styfle/cancel-workflow-action/compare/0.11.0...01ce38bf961b4e243a6342cbade0dbc8ba3f0432) --- updated-dependencies: - dependency-name: styfle/cancel-workflow-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/hive.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 7ed624e9d4..2a924aceb8 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@b173b6ec0100793626c2d9e6b90435061f4fc3e5 # pin@0.11.0 + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 with: access_token: ${{ github.token }} From b6eb97996a07d6df1b2c3e5059deb16cb1de2b7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Nov 2023 13:54:54 +0100 Subject: [PATCH 083/166] build(deps): bump actions/checkout from 3 to 4 (#1740) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/hive.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 2a924aceb8..8302ccab79 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -44,7 +44,7 @@ jobs: - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 with: sdk: ${{ matrix.sdk }} - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Test VM run: | From 6fe4faba54f09e5b62da2cf7d74c3ac0231ceeea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Nov 2023 13:55:26 +0100 Subject: [PATCH 084/166] build(deps): bump VeryGoodOpenSource/very_good_coverage (#1739) Bumps [VeryGoodOpenSource/very_good_coverage](https://github.com/verygoodopensource/very_good_coverage) from 2.1.0 to 2.2.0. - [Release notes](https://github.com/verygoodopensource/very_good_coverage/releases) - [Changelog](https://github.com/VeryGoodOpenSource/very_good_coverage/blob/main/CHANGELOG.md) - [Commits](https://github.com/verygoodopensource/very_good_coverage/compare/e5c91bc7ce9843e87c800b3bcafdfb86fbe28491...3b475421464c564c0714d92ce02742bd81fa9eda) --- updated-dependencies: - dependency-name: VeryGoodOpenSource/very_good_coverage dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/dart.yml | 2 +- .github/workflows/dio.yml | 2 +- .github/workflows/drift.yml | 2 +- .github/workflows/file.yml | 2 +- .github/workflows/flutter.yml | 2 +- .github/workflows/hive.yml | 2 +- .github/workflows/logging.yml | 2 +- .github/workflows/sqflite.yml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 32b805a524..5f61c73903 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -77,7 +77,7 @@ jobs: name: sentry files: ./dart/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 + - uses: VeryGoodOpenSource/very_good_coverage@3b475421464c564c0714d92ce02742bd81fa9eda # pin@v2.2.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: path: "./dart/coverage/lcov.info" diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index 6b011213e0..064c175698 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -60,7 +60,7 @@ jobs: name: sentry_dio files: ./dio/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 + - uses: VeryGoodOpenSource/very_good_coverage@3b475421464c564c0714d92ce02742bd81fa9eda # pin@v2.2.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: path: "./dio/coverage/lcov.info" diff --git a/.github/workflows/drift.yml b/.github/workflows/drift.yml index 3f2285bb7c..a7597909ad 100644 --- a/.github/workflows/drift.yml +++ b/.github/workflows/drift.yml @@ -101,7 +101,7 @@ jobs: file: ./drift/coverage/lcov.info functionalities: "search" # remove after https://github.com/codecov/codecov-action/issues/600 - - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 + - uses: VeryGoodOpenSource/very_good_coverage@3b475421464c564c0714d92ce02742bd81fa9eda # pin@v2.2.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: path: "./drift/coverage/lcov.info" diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index f9f03aa5cf..7fed334c62 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -59,7 +59,7 @@ jobs: name: sentry_file files: ./file/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 + - uses: VeryGoodOpenSource/very_good_coverage@3b475421464c564c0714d92ce02742bd81fa9eda # pin@v2.2.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: path: "./file/coverage/lcov.info" diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 6c48bf4747..d5b5fb3472 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -114,7 +114,7 @@ jobs: file: ./flutter/coverage/lcov.info functionalities: "search" # remove after https://github.com/codecov/codecov-action/issues/600 - - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 + - uses: VeryGoodOpenSource/very_good_coverage@3b475421464c564c0714d92ce02742bd81fa9eda # pin@v2.2.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: path: "./flutter/coverage/lcov.info" diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 8302ccab79..582f4e36ac 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -58,7 +58,7 @@ jobs: name: sentry_hive files: ./hive/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 + - uses: VeryGoodOpenSource/very_good_coverage@3b475421464c564c0714d92ce02742bd81fa9eda # pin@v2.2.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: path: "./hive/coverage/lcov.info" diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index 8529b2db12..b489d1be86 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -60,7 +60,7 @@ jobs: name: sentry_logging files: ./logging/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' + - uses: VeryGoodOpenSource/very_good_coverage@3b475421464c564c0714d92ce02742bd81fa9eda # pin@v2.1.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: path: "./logging/coverage/lcov.info" min_coverage: 90 diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 5da5b7e557..41ab13aba5 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -102,7 +102,7 @@ jobs: file: ./sqflite/coverage/lcov.info functionalities: "search" # remove after https://github.com/codecov/codecov-action/issues/600 - - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 + - uses: VeryGoodOpenSource/very_good_coverage@3b475421464c564c0714d92ce02742bd81fa9eda # pin@v2.2.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: path: "./sqflite/coverage/lcov.info" From a971204e4d646d881cf1f2bf0d3439e50637b4ba Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 23 Nov 2023 13:56:05 +0100 Subject: [PATCH 085/166] chore: update scripts/update-symbol-collector.sh to 1.13.0 (#1737) Co-authored-by: GitHub --- .../flutter_symbol_collector/lib/src/symbol_collector_cli.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart b/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart index 0f4c97d6a6..d89cbaeb84 100644 --- a/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart +++ b/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart @@ -19,7 +19,7 @@ class SymbolCollectorCli { // https://github.com/getsentry/symbol-collector/releases @internal - static const version = '1.12.1'; + static const version = '1.13.0'; @internal late final String cli; From 041d84de0540b1da829433f102c870bac73aec79 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 23 Nov 2023 16:22:40 +0100 Subject: [PATCH 086/166] chore: update scripts/update-symbol-collector.sh to 1.13.0 (#1754) Co-authored-by: GitHub From d4120ac3aa1b3297e224a93b2f9d790adb0e683b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 28 Nov 2023 09:24:04 +0000 Subject: [PATCH 087/166] Add option to opt out of fatal level for automatically collected errors (#1738) --- CHANGELOG.md | 6 +++++ .../src/run_zoned_guarded_integration.dart | 4 +++- dart/lib/src/sentry_isolate.dart | 4 +++- dart/lib/src/sentry_options.dart | 5 ++++ .../run_zoned_guarded_integration_test.dart | 17 ++++++++++++++ dart/test/sentry_isolate_test.dart | 18 +++++++++++++++ .../flutter_error_integration.dart | 4 +++- flutter/lib/src/native/cocoa/binding.dart | 23 +++++++++++-------- .../flutter_error_integration_test.dart | 14 +++++++++++ 9 files changed, 82 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7a599a956..3056915989 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Features + +- Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) + ## 7.13.2 ### Fixes diff --git a/dart/lib/src/run_zoned_guarded_integration.dart b/dart/lib/src/run_zoned_guarded_integration.dart index ba70fc2472..05ef5be2b0 100644 --- a/dart/lib/src/run_zoned_guarded_integration.dart +++ b/dart/lib/src/run_zoned_guarded_integration.dart @@ -50,7 +50,9 @@ class RunZonedGuardedIntegration extends Integration { final event = SentryEvent( throwable: throwableMechanism, - level: SentryLevel.fatal, + level: options.markAutomaticallyCollectedErrorsAsFatal + ? SentryLevel.fatal + : SentryLevel.error, timestamp: hub.options.clock(), ); diff --git a/dart/lib/src/sentry_isolate.dart b/dart/lib/src/sentry_isolate.dart index 898904cd27..0af2978e24 100644 --- a/dart/lib/src/sentry_isolate.dart +++ b/dart/lib/src/sentry_isolate.dart @@ -74,7 +74,9 @@ class SentryIsolate { final throwableMechanism = ThrowableMechanism(mechanism, throwable); final event = SentryEvent( throwable: throwableMechanism, - level: SentryLevel.fatal, + level: hub.options.markAutomaticallyCollectedErrorsAsFatal + ? SentryLevel.fatal + : SentryLevel.error, timestamp: hub.options.clock(), ); diff --git a/dart/lib/src/sentry_options.dart b/dart/lib/src/sentry_options.dart index 27d95fb9f3..7d0d18622a 100644 --- a/dart/lib/src/sentry_options.dart +++ b/dart/lib/src/sentry_options.dart @@ -369,6 +369,11 @@ class SentryOptions { @internal bool automatedTestMode = false; + /// Errors that the SDK automatically collects, for example in + /// [SentryIsolate], have `level` [SentryLevel.fatal] set per default. + /// Settings this to `false` will set the `level` to [SentryLevel.error]. + bool markAutomaticallyCollectedErrorsAsFatal = true; + SentryOptions({this.dsn, PlatformChecker? checker}) { if (checker != null) { platformChecker = checker; diff --git a/dart/test/run_zoned_guarded_integration_test.dart b/dart/test/run_zoned_guarded_integration_test.dart index 7e8045445d..13b102d7da 100644 --- a/dart/test/run_zoned_guarded_integration_test.dart +++ b/dart/test/run_zoned_guarded_integration_test.dart @@ -54,6 +54,23 @@ void main() { expect(onErrorCalled, true); }); + + test('sets level to error instead of fatal', () async { + final exception = StateError('error'); + final stackTrace = StackTrace.current; + + final hub = Hub(fixture.options); + final client = MockSentryClient(); + hub.bindClient(client); + + final sut = fixture.getSut(runner: () async {}); + + fixture.options.markAutomaticallyCollectedErrorsAsFatal = false; + await sut.captureError(hub, fixture.options, exception, stackTrace); + + final capturedEvent = client.captureEventCalls.last.event; + expect(capturedEvent.level, SentryLevel.error); + }); }); } diff --git a/dart/test/sentry_isolate_test.dart b/dart/test/sentry_isolate_test.dart index 1b1939ac2f..7cebc3e5e4 100644 --- a/dart/test/sentry_isolate_test.dart +++ b/dart/test/sentry_isolate_test.dart @@ -1,6 +1,7 @@ @TestOn('vm') import 'package:sentry/src/hub.dart'; +import 'package:sentry/src/protocol/sentry_level.dart'; import 'package:sentry/src/protocol/span_status.dart'; import 'package:sentry/src/sentry_isolate.dart'; import 'package:sentry/src/sentry_options.dart'; @@ -48,6 +49,23 @@ void main() { await span?.finish(); }); + + test('sets level to error instead of fatal', () async { + final exception = StateError('error'); + final stackTrace = StackTrace.current.toString(); + + final hub = Hub(fixture.options); + final client = MockSentryClient(); + hub.bindClient(client); + + fixture.options.markAutomaticallyCollectedErrorsAsFatal = false; + + await SentryIsolate.handleIsolateError( + hub, [exception.toString(), stackTrace]); + + final capturedEvent = client.captureEventCalls.last.event; + expect(capturedEvent.level, SentryLevel.error); + }); }); } diff --git a/flutter/lib/src/integrations/flutter_error_integration.dart b/flutter/lib/src/integrations/flutter_error_integration.dart index a9f10bcc09..3f88b99361 100644 --- a/flutter/lib/src/integrations/flutter_error_integration.dart +++ b/flutter/lib/src/integrations/flutter_error_integration.dart @@ -63,7 +63,9 @@ class FlutterErrorIntegration implements Integration { var event = SentryEvent( throwable: throwableMechanism, - level: SentryLevel.fatal, + level: options.markAutomaticallyCollectedErrorsAsFatal + ? SentryLevel.fatal + : SentryLevel.error, contexts: flutterErrorDetails.isNotEmpty ? (Contexts()..['flutter_error_details'] = flutterErrorDetails) : null, diff --git a/flutter/lib/src/native/cocoa/binding.dart b/flutter/lib/src/native/cocoa/binding.dart index 646a6bea83..0bd2e0437e 100644 --- a/flutter/lib/src/native/cocoa/binding.dart +++ b/flutter/lib/src/native/cocoa/binding.dart @@ -37603,7 +37603,8 @@ class ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool extends _ObjCBlockBase { ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( SentryCocoa lib, ffi.Pointer< - ffi.NativeFunction< + ffi + .NativeFunction< ffi.Bool Function(ffi.Pointer arg0, ffi.UnsignedLong arg1, ffi.Pointer arg2)>> ptr) @@ -42031,15 +42032,17 @@ class ObjCBlock_bool_ObjCObject_bool extends _ObjCBlockBase { ffi.Pointer arg1)>> ptr) : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>( - _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, false) - .cast(), - ptr.cast()), + lib + ._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, + false) + .cast(), + ptr.cast()), lib); static ffi.Pointer? _cFuncTrampoline; diff --git a/flutter/test/integrations/flutter_error_integration_test.dart b/flutter/test/integrations/flutter_error_integration_test.dart index 53446caeda..6c479fdf39 100644 --- a/flutter/test/integrations/flutter_error_integration_test.dart +++ b/flutter/test/integrations/flutter_error_integration_test.dart @@ -246,6 +246,20 @@ void main() { await span?.finish(); }); + + test('captures error with level error', () async { + final exception = StateError('error'); + + fixture.options.markAutomaticallyCollectedErrorsAsFatal = false; + + _reportError(exception: exception); + + final event = verify( + await fixture.hub.captureEvent(captureAny, hint: anyNamed('hint')), + ).captured.first as SentryEvent; + + expect(event.level, SentryLevel.error); + }); }); } From 886fc8c6af1fdf1bd4e4b118869f777fe3481c7b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Nov 2023 13:28:24 +0100 Subject: [PATCH 088/166] build(deps): bump natiginfo/action-detekt-all from 1.23.3 to 1.23.4 (#1758) Bumps [natiginfo/action-detekt-all](https://github.com/natiginfo/action-detekt-all) from 1.23.3 to 1.23.4. - [Release notes](https://github.com/natiginfo/action-detekt-all/releases) - [Commits](https://github.com/natiginfo/action-detekt-all/compare/68eb02dd9f2c2686d5026f5957756064424261a9...1349d3d957cba64d7b6b2752ef874d1e03e402a2) --- updated-dependencies: - dependency-name: natiginfo/action-detekt-all dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/flutter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index d5b5fb3472..df20a20efd 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -202,6 +202,6 @@ jobs: steps: - uses: actions/checkout@v4 # To recreate baseline run: detekt -i flutter/android,flutter/example/android -b flutter/config/detekt-bl.xml -cb - - uses: natiginfo/action-detekt-all@68eb02dd9f2c2686d5026f5957756064424261a9 # pin@1.23.3 + - uses: natiginfo/action-detekt-all@1349d3d957cba64d7b6b2752ef874d1e03e402a2 # pin@1.23.4 with: args: -i flutter/android,flutter/example/android --baseline flutter/config/detekt-bl.xml --jvm-target 1.8 --build-upon-default-config --all-rules From 8fb602f1a48412640bfb16e465a7428be2d74cf5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Nov 2023 14:27:49 +0100 Subject: [PATCH 089/166] chore(deps): update Cocoa SDK to v8.17.0 (#1761) * chore: update flutter/scripts/update-cocoa.sh to 8.17.0 * Apply format --------- Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor --- CHANGELOG.md | 6 ++++++ flutter/ios/sentry_flutter.podspec | 2 +- flutter/lib/src/native/cocoa/binding.dart | 23 ++++++++++------------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3056915989..b00adcfff0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ - Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) +### Dependencies + +- Bump Cocoa SDK from v8.15.2 to v8.17.0 ([#1761](https://github.com/getsentry/sentry-dart/pull/1761)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8170) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.15.2...8.17.0) + ## 7.13.2 ### Fixes diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index a309f686b6..403f5378b5 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.15.2' + s.dependency 'Sentry/HybridSDK', '8.17.0' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' diff --git a/flutter/lib/src/native/cocoa/binding.dart b/flutter/lib/src/native/cocoa/binding.dart index 0bd2e0437e..646a6bea83 100644 --- a/flutter/lib/src/native/cocoa/binding.dart +++ b/flutter/lib/src/native/cocoa/binding.dart @@ -37603,8 +37603,7 @@ class ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool extends _ObjCBlockBase { ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( SentryCocoa lib, ffi.Pointer< - ffi - .NativeFunction< + ffi.NativeFunction< ffi.Bool Function(ffi.Pointer arg0, ffi.UnsignedLong arg1, ffi.Pointer arg2)>> ptr) @@ -42032,17 +42031,15 @@ class ObjCBlock_bool_ObjCObject_bool extends _ObjCBlockBase { ffi.Pointer arg1)>> ptr) : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>( - _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, false) + .cast(), + ptr.cast()), lib); static ffi.Pointer? _cFuncTrampoline; From 9220bb8489e224b3dd0a78070d933f1e5fe62403 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Nov 2023 17:03:54 +0100 Subject: [PATCH 090/166] build(deps): bump subosito/flutter-action from 2.10.0 to 2.12.0 (#1759) Bumps [subosito/flutter-action](https://github.com/subosito/flutter-action) from 2.10.0 to 2.12.0. - [Release notes](https://github.com/subosito/flutter-action/releases) - [Commits](https://github.com/subosito/flutter-action/compare/v2.10.0...2783a3f08e1baf891508463f8c6653c258246225) --- updated-dependencies: - dependency-name: subosito/flutter-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/drift.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/drift.yml b/.github/workflows/drift.yml index a7597909ad..2cf22e8bbd 100644 --- a/.github/workflows/drift.yml +++ b/.github/workflows/drift.yml @@ -78,7 +78,7 @@ jobs: sudo apt install -y network-manager upower if: matrix.os == 'ubuntu-latest' && matrix.target == 'linux' - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 with: channel: ${{ matrix.sdk }} From 3f3ef0be1de5e508cf4723d8ea213dcc1b7751f8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 12:34:25 +0100 Subject: [PATCH 091/166] chore: update metrics/flutter.properties to 3.16.1 (#1760) Co-authored-by: GitHub --- metrics/flutter.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/flutter.properties b/metrics/flutter.properties index 46cc19edb4..49d9615381 100644 --- a/metrics/flutter.properties +++ b/metrics/flutter.properties @@ -1,2 +1,2 @@ -version = 3.13.9 +version = 3.16.1 repo = https://github.com/flutter/flutter From 4829ad36de3c9b0c6cd7c1d030ee2987d7bb7347 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 29 Nov 2023 15:11:59 +0100 Subject: [PATCH 092/166] fix(example): web obfuscation not working (#1766) --- flutter/example/run.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/flutter/example/run.sh b/flutter/example/run.sh index d40bc89df2..025a6f31b4 100755 --- a/flutter/example/run.sh +++ b/flutter/example/run.sh @@ -6,7 +6,10 @@ set -euo pipefail # Or try out the Alpha version of the Sentry Dart Plugin that does it automatically for you, feedback is welcomed. # https://github.com/getsentry/sentry-dart-plugin -export SENTRY_RELEASE=$(date +%Y-%m-%d_%H-%M-%S) +VERSION=$(grep '^version:' pubspec.yaml | awk '{print $2}') +CURRENT_DATE=$(date +%Y-%m-%d_%H-%M-%S) + +export SENTRY_RELEASE="$CURRENT_DATE"@"$VERSION" echo -e "[\033[92mrun\033[0m] $1" @@ -23,7 +26,7 @@ elif [ "$1" == "android" ]; then launchCmd='adb shell am start -n io.sentry.samples.flutter/io.sentry.samples.flutter.MainActivity' echo -e "[\033[92mrun\033[0m] Android app installed" elif [ "$1" == "web" ]; then - flutter build web --dart-define=SENTRY_RELEASE=$SENTRY_RELEASE --source-maps + flutter build web --dart-define=SENTRY_RELEASE="$SENTRY_RELEASE" --source-maps buildDir='./build/web/' port='8132' ls -lah $buildDir From f25f20767a49557d3024ff6d3220ae01dfcab209 Mon Sep 17 00:00:00 2001 From: Stefano Date: Wed, 29 Nov 2023 17:56:32 +0100 Subject: [PATCH 093/166] Add debug_meta to all events (#1756) * load_image_list_integration now appends debug_meta info to all non-transaction events with a stacktrace, instead of checking for Exception existence --- CHANGELOG.md | 5 +++++ .../load_image_list_integration.dart | 21 ++++++++++++++----- .../integrations/load_image_list_test.dart | 7 +------ 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b00adcfff0..11a30dc056 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +### Fixes + +- Add debug_meta to all events ([#1756](https://github.com/getsentry/sentry-dart/pull/1756)) + - Fixes obfuscated stacktraces when `captureMessage` or `captureEvent` is called with `attachStacktrace` option + ### Features - Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) diff --git a/flutter/lib/src/integrations/load_image_list_integration.dart b/flutter/lib/src/integrations/load_image_list_integration.dart index c2a0c98848..8838ae0e4b 100644 --- a/flutter/lib/src/integrations/load_image_list_integration.dart +++ b/flutter/lib/src/integrations/load_image_list_integration.dart @@ -25,14 +25,25 @@ extension _NeedsSymbolication on SentryEvent { if (this is SentryTransaction) { return false; } - if (exceptions?.isNotEmpty == false) { - return false; - } - final frames = exceptions?.first.stackTrace?.frames; + final frames = _getStacktraceFrames(); if (frames == null) { return false; } - return frames.any((frame) => 'native' == frame.platform); + return frames.any((frame) => 'native' == frame?.platform); + } + + List? _getStacktraceFrames() { + if (exceptions?.isNotEmpty == true) { + return exceptions?.first.stackTrace?.frames; + } + if (threads?.isNotEmpty == true) { + var stacktraces = threads?.map((e) => e.stacktrace); + return stacktraces + ?.where((element) => element != null) + .expand((element) => element!.frames) + .toList(); + } + return null; } } diff --git a/flutter/test/integrations/load_image_list_test.dart b/flutter/test/integrations/load_image_list_test.dart index bb78561dae..085bbcd3dc 100644 --- a/flutter/test/integrations/load_image_list_test.dart +++ b/flutter/test/integrations/load_image_list_test.dart @@ -187,12 +187,7 @@ void main() { SentryEvent _getEvent() { final frame = SentryStackFrame(platform: 'native'); final st = SentryStackTrace(frames: [frame]); - final ex = SentryException( - type: 'type', - value: 'value', - stackTrace: st, - ); - return SentryEvent(exceptions: [ex]); + return SentryEvent(threads: [SentryThread(stacktrace: st)]); } class Fixture { From 4b3af28592b0043da0712a8173a8b6bde7724f5c Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Fri, 1 Dec 2023 16:00:32 +0100 Subject: [PATCH 094/166] chore: Update README to include drift and hive (#1735) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor Co-authored-by: Giancarlo Buenaflor Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: getsentry-bot Co-authored-by: Denis Andrašec --- README.md | 18 ++++++++++-------- drift/README.md | 2 +- hive/README.md | 6 +++--- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 8ab372fc5a..1a6d03bc41 100644 --- a/README.md +++ b/README.md @@ -14,18 +14,20 @@ Sentry SDK for Dart and Flutter [![codecov](https://codecov.io/gh/getsentry/sentry-dart/branch/main/graph/badge.svg?token=J0QX0LPmwy)](https://codecov.io/gh/getsentry/sentry-dart) -| package | build | pub | likes | popularity | pub points | -| ------- | ------- | ------- | ------- | ------- | ------- | -| sentry | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-dart/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-dart) | [![pub package](https://img.shields.io/pub/v/sentry.svg)](https://pub.dev/packages/sentry) | [![likes](https://img.shields.io/pub/likes/sentry?logo=dart)](https://pub.dev/packages/sentry/score) | [![popularity](https://img.shields.io/pub/popularity/sentry?logo=dart)](https://pub.dev/packages/sentry/score) | [![pub points](https://img.shields.io/pub/points/sentry?logo=dart)](https://pub.dev/packages/sentry/score) +| package | build | pub | likes | popularity | pub points | +|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------| ------- | ------- | +| sentry | [![build](https://github.com/getsentry/sentry-dart/actions/workflows/dart.yml/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-dart) | [![pub package](https://img.shields.io/pub/v/sentry.svg)](https://pub.dev/packages/sentry) | [![likes](https://img.shields.io/pub/likes/sentry?logo=dart)](https://pub.dev/packages/sentry/score) | [![popularity](https://img.shields.io/pub/popularity/sentry?logo=dart)](https://pub.dev/packages/sentry/score) | [![pub points](https://img.shields.io/pub/points/sentry?logo=dart)](https://pub.dev/packages/sentry/score) | sentry_flutter | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-flutter/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-flutter) | [![pub package](https://img.shields.io/pub/v/sentry_flutter.svg)](https://pub.dev/packages/sentry_flutter) | [![likes](https://img.shields.io/pub/likes/sentry_flutter?logo=dart)](https://pub.dev/packages/sentry_flutter/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_flutter?logo=dart)](https://pub.dev/packages/sentry_flutter/score) | [![pub points](https://img.shields.io/pub/points/sentry_flutter?logo=dart)](https://pub.dev/packages/sentry_flutter/score) -| sentry_logging | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-logging/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Alogging) | [![pub package](https://img.shields.io/pub/v/sentry_logging.svg)](https://pub.dev/packages/sentry_logging) | [![likes](https://img.shields.io/pub/likes/sentry_logging?logo=dart)](https://pub.dev/packages/sentry_logging/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_logging?logo=dart)](https://pub.dev/packages/sentry_logging/score) | [![pub points](https://img.shields.io/pub/points/sentry_logging?logo=dart)](https://pub.dev/packages/sentry_logging/score) -| sentry_dio | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-dio/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-dio) | [![pub package](https://img.shields.io/pub/v/sentry_dio.svg)](https://pub.dev/packages/sentry_dio) | [![likes](https://img.shields.io/pub/likes/sentry_dio?logo=dart)](https://pub.dev/packages/sentry_dio/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_dio?logo=dart)](https://pub.dev/packages/sentry_dio/score) | [![pub points](https://img.shields.io/pub/points/sentry_dio?logo=dart)](https://pub.dev/packages/sentry_dio/score) -| sentry_file | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-file/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-file) | [![pub package](https://img.shields.io/pub/v/sentry_file.svg)](https://pub.dev/packages/sentry_file) | [![likes](https://img.shields.io/pub/likes/sentry_file?logo=dart)](https://pub.dev/packages/sentry_file/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_file?logo=dart)](https://pub.dev/packages/sentry_file/score) | [![pub points](https://img.shields.io/pub/points/sentry_file?logo=dart)](https://pub.dev/packages/sentry_file/score) -| sentry_sqflite | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-sqflite/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-sqflite) | [![pub package](https://img.shields.io/pub/v/sentry_sqflite.svg)](https://pub.dev/packages/sentry_sqflite) | [![likes](https://img.shields.io/pub/likes/sentry_sqflite)](https://pub.dev/packages/sentry_sqflite/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_sqflite)](https://pub.dev/packages/sentry_sqflite/score) | [![pub points](https://img.shields.io/pub/points/sentry_sqflite)](https://pub.dev/packages/sentry_sqflite/score) +| sentry_logging | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-logging/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Alogging) | [![pub package](https://img.shields.io/pub/v/sentry_logging.svg)](https://pub.dev/packages/sentry_logging) | [![likes](https://img.shields.io/pub/likes/sentry_logging?logo=dart)](https://pub.dev/packages/sentry_logging/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_logging?logo=dart)](https://pub.dev/packages/sentry_logging/score) | [![pub points](https://img.shields.io/pub/points/sentry_logging?logo=dart)](https://pub.dev/packages/sentry_logging/score) +| sentry_dio | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-dio/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-dio) | [![pub package](https://img.shields.io/pub/v/sentry_dio.svg)](https://pub.dev/packages/sentry_dio) | [![likes](https://img.shields.io/pub/likes/sentry_dio?logo=dart)](https://pub.dev/packages/sentry_dio/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_dio?logo=dart)](https://pub.dev/packages/sentry_dio/score) | [![pub points](https://img.shields.io/pub/points/sentry_dio?logo=dart)](https://pub.dev/packages/sentry_dio/score) +| sentry_file | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-file/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-file) | [![pub package](https://img.shields.io/pub/v/sentry_file.svg)](https://pub.dev/packages/sentry_file) | [![likes](https://img.shields.io/pub/likes/sentry_file?logo=dart)](https://pub.dev/packages/sentry_file/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_file?logo=dart)](https://pub.dev/packages/sentry_file/score) | [![pub points](https://img.shields.io/pub/points/sentry_file?logo=dart)](https://pub.dev/packages/sentry_file/score) +| sentry_sqflite | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-sqflite/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-sqflite) | [![pub package](https://img.shields.io/pub/v/sentry_sqflite.svg)](https://pub.dev/packages/sentry_sqflite) | [![likes](https://img.shields.io/pub/likes/sentry_sqflite)](https://pub.dev/packages/sentry_sqflite/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_sqflite)](https://pub.dev/packages/sentry_sqflite/score) | [![pub points](https://img.shields.io/pub/points/sentry_sqflite)](https://pub.dev/packages/sentry_sqflite/score) +| sentry_drift | [![build](https://github.com/getsentry/sentry-dart/actions/workflows/drift.yml/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-drift) | [![pub package](https://img.shields.io/pub/v/sentry_drift.svg)](https://pub.dev/packages/sentry_drift) | [![likes](https://img.shields.io/pub/likes/sentry_drift)](https://pub.dev/packages/sentry_drift/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_drift)](https://pub.dev/packages/sentry_drift/score) | [![pub points](https://img.shields.io/pub/points/sentry_drift)](https://pub.dev/packages/sentry_drift/score) +| sentry_hive | [![build](https://github.com/getsentry/sentry-dart/actions/workflows/hive.yml/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-hive) | [![pub package](https://img.shields.io/pub/v/sentry_hive.svg)](https://pub.dev/packages/sentry_hive) | [![likes](https://img.shields.io/pub/likes/sentry_hive)](https://pub.dev/packages/sentry_hive/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_hive)](https://pub.dev/packages/sentry_hive/score) | [![pub points](https://img.shields.io/pub/points/sentry_hive)](https://pub.dev/packages/sentry_hive/score) ##### Usage -For detailed usage, check out the inner [dart](https://github.com/getsentry/sentry-dart/tree/main/dart), [flutter](https://github.com/getsentry/sentry-dart/tree/main/flutter), [logging](https://github.com/getsentry/sentry-dart/tree/main/logging), [dio](https://github.com/getsentry/sentry-dart/tree/main/dio), [file](https://github.com/getsentry/sentry-dart/tree/main/file) and [sqflite](https://github.com/getsentry/sentry-dart/tree/main/sqflite) `README's` or our `Resources` section below. +For detailed usage, check out the inner [dart](https://github.com/getsentry/sentry-dart/tree/main/dart), [flutter](https://github.com/getsentry/sentry-dart/tree/main/flutter), [logging](https://github.com/getsentry/sentry-dart/tree/main/logging), [dio](https://github.com/getsentry/sentry-dart/tree/main/dio), [file](https://github.com/getsentry/sentry-dart/tree/main/file), [sqflite](https://github.com/getsentry/sentry-dart/tree/main/sqflite), [drift](https://github.com/getsentry/sentry-dart/tree/main/drift) and [hive](https://github.com/getsentry/sentry-dart/tree/main/hive) `README's` or our `Resources` section below. #### Blog posts diff --git a/drift/README.md b/drift/README.md index e6fd9e6d11..43d26893e4 100644 --- a/drift/README.md +++ b/drift/README.md @@ -10,7 +10,7 @@ Sentry integration for `drift` package | package | build | pub | likes | popularity | pub points | |-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| ------- | -| sentry_drift | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-drift/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-drift) | [![pub package](https://img.shields.io/pub/v/sentry_drift.svg)](https://pub.dev/packages/sentry_drift) | [![likes](https://img.shields.io/pub/likes/sentry_drift)](https://pub.dev/packages/sentry_drift/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_drift)](https://pub.dev/packages/sentry_drift/score) | [![pub points](https://img.shields.io/pub/points/sentry_drift)](https://pub.dev/packages/sentry_drift/score) +| sentry_drift | [![build](https://github.com/getsentry/sentry-dart/actions/workflows/drift.yml/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-drift) | [![pub package](https://img.shields.io/pub/v/sentry_drift.svg)](https://pub.dev/packages/sentry_drift) | [![likes](https://img.shields.io/pub/likes/sentry_drift)](https://pub.dev/packages/sentry_drift/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_drift)](https://pub.dev/packages/sentry_drift/score) | [![pub points](https://img.shields.io/pub/points/sentry_drift)](https://pub.dev/packages/sentry_drift/score) Integration for the [`drift`](https://pub.dev/packages/drift) package. diff --git a/hive/README.md b/hive/README.md index 593d367100..a5347c31a4 100644 --- a/hive/README.md +++ b/hive/README.md @@ -8,9 +8,9 @@ Sentry integration for `hive` package =========== -| package | build | pub | likes | popularity | pub points | -|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| ------- | -| sentry_hive | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-hive/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-hive) | [![pub package](https://img.shields.io/pub/v/sentry_hive.svg)](https://pub.dev/packages/sentry_hive) | [![likes](https://img.shields.io/pub/likes/sentry_hive)](https://pub.dev/packages/sentry_hive/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_hive)](https://pub.dev/packages/sentry_hive/score) | [![pub points](https://img.shields.io/pub/points/sentry_hive)](https://pub.dev/packages/sentry_hive/score) +| package | build | pub | likes | popularity | pub points | +|-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| ------- | +| sentry_hive | [![build](https://github.com/getsentry/sentry-dart/actions/workflows/hive.yml/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-hive) | [![pub package](https://img.shields.io/pub/v/sentry_hive.svg)](https://pub.dev/packages/sentry_hive) | [![likes](https://img.shields.io/pub/likes/sentry_hive)](https://pub.dev/packages/sentry_hive/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_hive)](https://pub.dev/packages/sentry_hive/score) | [![pub points](https://img.shields.io/pub/points/sentry_hive)](https://pub.dev/packages/sentry_hive/score) Integration for the [`hive`](https://pub.dev/packages/hive) package. From 47664e3c2abb87b18bde99ff91db7ef565ccf9ca Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 5 Dec 2023 13:01:40 +0100 Subject: [PATCH 095/166] chore: update metrics/flutter.properties to 3.16.2 (#1769) Co-authored-by: GitHub --- metrics/flutter.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/flutter.properties b/metrics/flutter.properties index 49d9615381..a0e5a0f324 100644 --- a/metrics/flutter.properties +++ b/metrics/flutter.properties @@ -1,2 +1,2 @@ -version = 3.16.1 +version = 3.16.2 repo = https://github.com/flutter/flutter From 2d74010a6f7e9329b48218a0a8931cf732203bd7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 5 Dec 2023 13:01:59 +0100 Subject: [PATCH 096/166] chore(deps): update Cocoa SDK to v8.17.1 (#1771) * chore: update flutter/scripts/update-cocoa.sh to 8.17.1 * Formatting --------- Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor --- CHANGELOG.md | 6 +++--- flutter/ios/sentry_flutter.podspec | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11a30dc056..9ca2ec553e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,9 +13,9 @@ ### Dependencies -- Bump Cocoa SDK from v8.15.2 to v8.17.0 ([#1761](https://github.com/getsentry/sentry-dart/pull/1761)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8170) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.15.2...8.17.0) +- Bump Cocoa SDK from v8.15.2 to v8.17.1 ([#1761](https://github.com/getsentry/sentry-dart/pull/1761), [#1771](https://github.com/getsentry/sentry-dart/pull/1771)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8171) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.15.2...8.17.1) ## 7.13.2 diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 403f5378b5..9a9f6265a6 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.17.0' + s.dependency 'Sentry/HybridSDK', '8.17.1' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' From d3801f8538ee716bbb90756a87188fd84693cdf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 5 Dec 2023 14:04:42 +0000 Subject: [PATCH 097/166] Add `Hive` breadcrumbs (#1773) --- CHANGELOG.md | 1 + hive/lib/src/sentry_span_helper.dart | 22 +- hive/test/sentry_box_base_test.dart | 272 +++++++++++++++++++++ hive/test/sentry_box_collection_test.dart | 173 ++++++++++++++ hive/test/sentry_hive_impl_test.dart | 278 ++++++++++++++++++++++ hive/test/sentry_lazy_box_test.dart | 121 ++++++++++ 6 files changed, 866 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ca2ec553e..4c983f6680 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ ### Features - Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) +- Add `Hive` breadcrumbs ([#1773](https://github.com/getsentry/sentry-dart/pull/1773)) ### Dependencies diff --git a/hive/lib/src/sentry_span_helper.dart b/hive/lib/src/sentry_span_helper.dart index a1c780ef08..38a67501a4 100644 --- a/hive/lib/src/sentry_span_helper.dart +++ b/hive/lib/src/sentry_span_helper.dart @@ -35,24 +35,44 @@ class SentrySpanHelper { // ignore: invalid_use_of_internal_member span?.origin = _origin; - span?.setData(SentryHiveImpl.dbSystemKey, SentryHiveImpl.dbSystem); + var breadcrumb = Breadcrumb( + message: description, + data: {}, + type: 'query', + ); + span?.setData(SentryHiveImpl.dbSystemKey, SentryHiveImpl.dbSystem); if (dbName != null) { span?.setData(SentryHiveImpl.dbNameKey, dbName); } + breadcrumb.data?[SentryHiveImpl.dbSystemKey] = SentryHiveImpl.dbSystem; + if (dbName != null) { + breadcrumb.data?[SentryHiveImpl.dbNameKey] = dbName; + } + try { final result = await execute(); + span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); + rethrow; } finally { await span?.finish(); + + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } } } diff --git a/hive/test/sentry_box_base_test.dart b/hive/test/sentry_box_base_test.dart index 3caf5e06e5..3821b8b341 100644 --- a/hive/test/sentry_box_base_test.dart +++ b/hive/test/sentry_box_base_test.dart @@ -40,6 +40,23 @@ void main() { expect(span?.throwable, exception); } + void verifyBreadcrumb( + String message, + Breadcrumb? crumb, { + bool checkName = false, + String status = 'ok', + }) { + expect( + crumb?.message, + message, + ); + expect(crumb?.type, 'query'); + if (checkName) { + expect(crumb?.data?[SentryHiveImpl.dbNameKey], Fixture.dbName); + } + expect(crumb?.data?['status'], status); + } + group('adds span', () { late Fixture fixture; @@ -49,6 +66,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); }); tearDown(() async { @@ -131,6 +149,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); when(fixture.mockBox.name).thenReturn(Fixture.dbName); + when(fixture.hub.scope).thenReturn(fixture.scope); }); tearDown(() async { @@ -253,6 +272,254 @@ void main() { verifyErrorSpan('deleteAt', fixture.exception, fixture.getCreatedSpan()); }); }); + + group('adds breadcrumb', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('add adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.add(Person('Joe Dirt')); + + verifyBreadcrumb('add', fixture.getCreatedBreadcrumb()); + }); + + test('addAll adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.addAll([Person('Joe Dirt')]); + + verifyBreadcrumb('addAll', fixture.getCreatedBreadcrumb()); + }); + + test('clear adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.clear(); + + verifyBreadcrumb('clear', fixture.getCreatedBreadcrumb()); + }); + + test('close adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.close(); + + verifyBreadcrumb('close', fixture.getCreatedBreadcrumb()); + }); + + test('compact adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.compact(); + + verifyBreadcrumb('compact', fixture.getCreatedBreadcrumb()); + }); + + test('delete adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.delete('fixture-key'); + + verifyBreadcrumb('delete', fixture.getCreatedBreadcrumb()); + }); + + test('deleteAll adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.deleteAll(['fixture-key']); + + verifyBreadcrumb('deleteAll', fixture.getCreatedBreadcrumb()); + }); + + test('deleteAt adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.add(Person('Joe Dirt')); + await sut.deleteAt(0); + + verifyBreadcrumb('deleteAt', fixture.getCreatedBreadcrumb()); + }); + }); + + group('adds error breadcrumb', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.mockBox.name).thenReturn(Fixture.dbName); + when(fixture.hub.scope).thenReturn(fixture.scope); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('throwing add adds error breadcrumb', () async { + when(fixture.mockBox.add(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.add(Person('Joe Dirt')); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'add', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing addAll adds error breadcrumb', () async { + when(fixture.mockBox.addAll(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.addAll([Person('Joe Dirt')]); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'addAll', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing clear adds error breadcrumb', () async { + when(fixture.mockBox.clear()).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.clear(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'clear', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing close adds error breadcrumb', () async { + when(fixture.mockBox.close()).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.close(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'close', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing compact adds error breadcrumb', () async { + when(fixture.mockBox.compact()).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.compact(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'compact', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing delete adds error breadcrumb', () async { + when(fixture.mockBox.delete(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.delete('fixture-key'); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'delete', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing deleteAll adds error breadcrumb', () async { + when(fixture.mockBox.deleteAll(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + try { + await sut.deleteAll(['fixture-key']); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'deleteAll', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing deleteAt adds error breadcrumb', () async { + when(fixture.mockBox.add(any)).thenAnswer((_) async { + return 1; + }); + when(fixture.mockBox.deleteAt(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + await sut.add(Person('Joe Dirt')); + try { + await sut.deleteAt(0); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'deleteAt', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + }); } class Fixture { @@ -266,6 +533,7 @@ class Fixture { final _context = SentryTransactionContext('name', 'operation'); late final tracer = SentryTracer(_context, hub); + late final scope = Scope(options); Future setUp() async { Hive.init(Directory.systemTemp.path); @@ -294,4 +562,8 @@ class Fixture { SentrySpan? getCreatedSpan() { return tracer.children.last; } + + Breadcrumb? getCreatedBreadcrumb() { + return hub.scope.breadcrumbs.last; + } } diff --git a/hive/test/sentry_box_collection_test.dart b/hive/test/sentry_box_collection_test.dart index 4965896611..f13b95e1c8 100644 --- a/hive/test/sentry_box_collection_test.dart +++ b/hive/test/sentry_box_collection_test.dart @@ -42,6 +42,23 @@ void main() { expect(span?.throwable, exception); } + void verifyBreadcrumb( + String message, + Breadcrumb? crumb, { + bool checkName = false, + String status = 'ok', + }) { + expect( + crumb?.message, + message, + ); + expect(crumb?.type, 'query'); + if (checkName) { + expect(crumb?.data?[SentryHiveImpl.dbNameKey], Fixture.dbName); + } + expect(crumb?.data?['status'], status); + } + group('adds span when calling', () { late Fixture fixture; @@ -51,6 +68,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); }); tearDown(() async { @@ -111,6 +129,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); when(fixture.mockBoxCollection.name).thenReturn(Fixture.dbName); + when(fixture.hub.scope).thenReturn(fixture.scope); }); tearDown(() async { @@ -184,6 +203,155 @@ void main() { ); }); }); + + group('adds breadcrumb when calling', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('open', () async { + await SentryBoxCollection.open( + Fixture.dbName, + {'people'}, + hub: fixture.hub, + ); + + final span = fixture.getCreatedBreadcrumb(); + verifyBreadcrumb('open', span); + }); + + test('openBox', () async { + final sut = await fixture.getSut(); + + await sut.openBox('people'); + + final span = fixture.getCreatedBreadcrumb(); + verifyBreadcrumb('openBox', span); + }); + + test('transaction', () async { + final sut = await fixture.getSut(); + + final people = await sut.openBox('people'); + await sut.transaction( + () async { + print(people.name); + }, + boxNames: ['people'], + ); + final span = fixture.getCreatedBreadcrumb(); + verifyBreadcrumb('transaction', span); + }); + + test('deleteFromDisk', () async { + final sut = await fixture.getSut(); + + await sut.deleteFromDisk(); + + final span = fixture.getCreatedBreadcrumb(); + verifyBreadcrumb('deleteFromDisk', span); + }); + }); + + group('adds error breadcrumb when calling', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.mockBoxCollection.name).thenReturn(Fixture.dbName); + when(fixture.hub.scope).thenReturn(fixture.scope); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + // open is static and cannot be mocked + + test('throwing openBox', () async { + when( + // ignore: inference_failure_on_function_invocation + fixture.mockBoxCollection.openBox( + any, + preload: anyNamed('preload'), + boxCreator: anyNamed('boxCreator'), + ), + ).thenThrow(fixture.exception); + + final sut = await fixture.getSut(injectMock: true); + + try { + // ignore: inference_failure_on_function_invocation + await sut.openBox('people'); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'openBox', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing transaction', () async { + when( + fixture.mockBoxCollection.transaction( + any, + boxNames: anyNamed('boxNames'), + readOnly: anyNamed('readOnly'), + ), + ).thenThrow(fixture.exception); + + final sut = await fixture.getSut(injectMock: true); + + try { + await sut.transaction(() async {}); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'transaction', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing deleteFromDisk', () async { + when(fixture.mockBoxCollection.deleteFromDisk()) + .thenThrow(fixture.exception); + + final sut = await fixture.getSut(injectMock: true); + + try { + await sut.deleteFromDisk(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'deleteFromDisk', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + }); } class Fixture { @@ -197,6 +365,7 @@ class Fixture { final _context = SentryTransactionContext('name', 'operation'); late final tracer = SentryTracer(_context, hub); + late final scope = Scope(options); Future setUp() async { SentryHive.init(Directory.systemTemp.path); @@ -222,4 +391,8 @@ class Fixture { SentrySpan? getCreatedSpan() { return tracer.children.last; } + + Breadcrumb? getCreatedBreadcrumb() { + return hub.scope.breadcrumbs.last; + } } diff --git a/hive/test/sentry_hive_impl_test.dart b/hive/test/sentry_hive_impl_test.dart index df5c8502f9..521415d1ed 100644 --- a/hive/test/sentry_hive_impl_test.dart +++ b/hive/test/sentry_hive_impl_test.dart @@ -41,6 +41,23 @@ void main() { expect(span?.throwable, error); } + void verifyBreadcrumb( + String message, + Breadcrumb? crumb, { + bool checkName = false, + String status = 'ok', + }) { + expect( + crumb?.message, + message, + ); + expect(crumb?.type, 'query'); + if (checkName) { + expect(crumb?.data?[SentryHiveImpl.dbNameKey], Fixture.dbName); + } + expect(crumb?.data?['status'], status); + } + group('adds span', () { late Fixture fixture; @@ -49,6 +66,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); await fixture.setUp(); }); @@ -119,6 +137,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); when(fixture.mockHive.close()).thenAnswer((_) async => {}); + when(fixture.hub.scope).thenReturn(fixture.scope); await fixture.setUp(injectMockHive: true); }); @@ -274,6 +293,259 @@ void main() { }); }); + group('adds breadcrumbs', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); + + await fixture.setUp(); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('boxExists adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.openBox(Fixture.dbName); + await sut.boxExists(Fixture.dbName); + + verifyBreadcrumb('boxExists', fixture.getCreatedBreadcrumb()); + }); + + test('close adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.close(); + + verifyBreadcrumb('close', fixture.getCreatedBreadcrumb()); + }); + + test('deleteBoxFromDisk adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.openBox(Fixture.dbName); + await sut.deleteBoxFromDisk(Fixture.dbName); + + verifyBreadcrumb('deleteBoxFromDisk', fixture.getCreatedBreadcrumb()); + }); + + test('deleteFromDisk adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.deleteFromDisk(); + + verifyBreadcrumb('deleteFromDisk', fixture.getCreatedBreadcrumb()); + }); + + test('openBox adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.openBox(Fixture.dbName); + + verifyBreadcrumb( + 'openBox', + fixture.getCreatedBreadcrumb(), + checkName: true, + ); + }); + + test('openLazyBox adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.openLazyBox(Fixture.dbName); + + verifyBreadcrumb( + 'openLazyBox', + fixture.getCreatedBreadcrumb(), + checkName: true, + ); + }); + }); + + group('adds error breadcrumb', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.mockHive.close()).thenAnswer((_) async => {}); + when(fixture.hub.scope).thenReturn(fixture.scope); + + await fixture.setUp(injectMockHive: true); + }); + + test('throwing boxExists adds error span', () async { + final Box box = MockBox(); + when( + fixture.mockHive.openBox( + any, + encryptionCipher: anyNamed('encryptionCipher'), + keyComparator: anyNamed('keyComparator'), + compactionStrategy: anyNamed('compactionStrategy'), + crashRecovery: anyNamed('crashRecovery'), + path: anyNamed('path'), + bytes: anyNamed('bytes'), + collection: anyNamed('collection'), + encryptionKey: anyNamed('encryptionKey'), + ), + ).thenAnswer((_) => Future(() => box)); + when(fixture.mockHive.boxExists(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + await sut.openBox(Fixture.dbName); + try { + await sut.boxExists(Fixture.dbName); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'boxExists', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing close adds error span', () async { + when(fixture.mockHive.close()).thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + try { + await sut.close(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'close', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing deleteBoxFromDisk adds error span', () async { + final Box box = MockBox(); + when( + fixture.mockHive.openBox( + any, + encryptionCipher: anyNamed('encryptionCipher'), + keyComparator: anyNamed('keyComparator'), + compactionStrategy: anyNamed('compactionStrategy'), + crashRecovery: anyNamed('crashRecovery'), + path: anyNamed('path'), + bytes: anyNamed('bytes'), + collection: anyNamed('collection'), + encryptionKey: anyNamed('encryptionKey'), + ), + ).thenAnswer((_) => Future(() => box)); + when(fixture.mockHive.deleteBoxFromDisk(any)) + .thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + await sut.openBox(Fixture.dbName); + try { + await sut.deleteBoxFromDisk(Fixture.dbName); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'deleteBoxFromDisk', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing deleteFromDisk adds error span', () async { + when(fixture.mockHive.deleteFromDisk()).thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + try { + await sut.deleteFromDisk(); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'deleteFromDisk', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing openBox adds error span', () async { + when( + fixture.mockHive.openBox( + any, + encryptionCipher: anyNamed('encryptionCipher'), + keyComparator: anyNamed('keyComparator'), + compactionStrategy: anyNamed('compactionStrategy'), + crashRecovery: anyNamed('crashRecovery'), + path: anyNamed('path'), + bytes: anyNamed('bytes'), + collection: anyNamed('collection'), + encryptionKey: anyNamed('encryptionKey'), + ), + ).thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + try { + await sut.openBox(Fixture.dbName); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'openBox', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing openLazyBox adds error span', () async { + when( + fixture.mockHive.openLazyBox( + any, + encryptionCipher: anyNamed('encryptionCipher'), + keyComparator: anyNamed('keyComparator'), + compactionStrategy: anyNamed('compactionStrategy'), + crashRecovery: anyNamed('crashRecovery'), + path: anyNamed('path'), + collection: anyNamed('collection'), + encryptionKey: anyNamed('encryptionKey'), + ), + ).thenThrow(fixture.exception); + + final sut = fixture.getSut(); + + try { + await sut.openLazyBox(Fixture.dbName); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'openLazyBox', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + }); + group('integrations', () { late Fixture fixture; @@ -282,6 +554,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); await fixture.setUp(); }); @@ -319,6 +592,7 @@ class Fixture { final _context = SentryTransactionContext('name', 'operation'); late final tracer = SentryTracer(_context, hub); late SentryHiveImpl sut; + late final scope = Scope(options); Future setUp({bool injectMockHive = false}) async { if (injectMockHive) { @@ -344,4 +618,8 @@ class Fixture { SentrySpan? getCreatedSpan() { return tracer.children.last; } + + Breadcrumb? getCreatedBreadcrumb() { + return hub.scope.breadcrumbs.last; + } } diff --git a/hive/test/sentry_lazy_box_test.dart b/hive/test/sentry_lazy_box_test.dart index 263658af8d..291dc3fc20 100644 --- a/hive/test/sentry_lazy_box_test.dart +++ b/hive/test/sentry_lazy_box_test.dart @@ -40,6 +40,23 @@ void main() { expect(span?.throwable, exception); } + void verifyBreadcrumb( + String message, + Breadcrumb? crumb, { + bool checkName = false, + String status = 'ok', + }) { + expect( + crumb?.message, + message, + ); + expect(crumb?.type, 'query'); + if (checkName) { + expect(crumb?.data?[SentryHiveImpl.dbNameKey], Fixture.dbName); + } + expect(crumb?.data?['status'], status); + } + group('adds span', () { late Fixture fixture; @@ -49,6 +66,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); }); tearDown(() async { @@ -84,6 +102,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); when(fixture.mockBox.name).thenReturn(Fixture.dbName); + when(fixture.hub.scope).thenReturn(fixture.scope); }); tearDown(() async { @@ -126,6 +145,103 @@ void main() { verifyErrorSpan('getAt', fixture.exception, fixture.getCreatedSpan()); }); }); + + group('adds breadcrumb', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('get adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.put('fixture-key', Person('John Malkovich')); + await sut.get('fixture-key'); + + verifyBreadcrumb('get', fixture.getCreatedBreadcrumb()); + }); + + test('getAt adds breadcrumb', () async { + final sut = fixture.getSut(); + + await sut.add(Person('John Malkovich')); + await sut.getAt(0); + + verifyBreadcrumb('getAt', fixture.getCreatedBreadcrumb()); + }); + }); + + group('adds error breadcrumbs', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + await fixture.setUp(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.mockBox.name).thenReturn(Fixture.dbName); + when(fixture.hub.scope).thenReturn(fixture.scope); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('throwing get adds error breadcrumbs', () async { + when(fixture.mockBox.add(any)).thenAnswer((_) async { + return 1; + }); + when(fixture.mockBox.get(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + await sut.put('fixture-key', Person('John Malkovich')); + try { + await sut.get('fixture-key'); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'get', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing getAt adds error breadcrumbs', () async { + when(fixture.mockBox.add(any)).thenAnswer((_) async { + return 1; + }); + when(fixture.mockBox.getAt(any)).thenThrow(fixture.exception); + + final sut = fixture.getSut(injectMockBox: true); + + await sut.add(Person('John Malkovich')); + try { + await sut.getAt(0); + } catch (error) { + expect(error, fixture.exception); + } + + verifyBreadcrumb( + 'getAt', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + }); } class Fixture { @@ -139,6 +255,7 @@ class Fixture { final _context = SentryTransactionContext('name', 'operation'); late final tracer = SentryTracer(_context, hub); + late final scope = Scope(options); Future setUp() async { Hive.init(Directory.systemTemp.path); @@ -167,4 +284,8 @@ class Fixture { SentrySpan? getCreatedSpan() { return tracer.children.last; } + + Breadcrumb? getCreatedBreadcrumb() { + return hub.scope.breadcrumbs.last; + } } From 13446e11c3e3097518657339a8fe8f869c8b0e97 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Mon, 11 Dec 2023 16:56:25 +0100 Subject: [PATCH 098/166] improvements(example): fix router navigation issue and add improvements (#1767) * Change http url and add route navigation observer example * Remove comment * Improve sample * Format * Add padding * Fix analyze issues --- flutter/example/lib/auto_close_screen.dart | 47 ++++ flutter/example/lib/main.dart | 277 ++++++++++++++------- 2 files changed, 232 insertions(+), 92 deletions(-) create mode 100644 flutter/example/lib/auto_close_screen.dart diff --git a/flutter/example/lib/auto_close_screen.dart b/flutter/example/lib/auto_close_screen.dart new file mode 100644 index 0000000000..15e8fac1fb --- /dev/null +++ b/flutter/example/lib/auto_close_screen.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; +import 'package:sentry/sentry.dart'; + +/// This screen is only used to demonstrate how route navigation works. +/// Init will create a child span and pop the screen after 3 seconds. +/// Afterwards the transaction should be seen on the performance page. +class AutoCloseScreen extends StatefulWidget { + const AutoCloseScreen({super.key}); + + @override + AutoCloseScreenState createState() => AutoCloseScreenState(); +} + +class AutoCloseScreenState extends State { + static const delayInSeconds = 3; + + @override + void initState() { + super.initState(); + _doComplexOperationThenClose(); + } + + Future _doComplexOperationThenClose() async { + final activeSpan = Sentry.getSpan(); + final childSpan = activeSpan?.startChild('complex operation', + description: 'running a $delayInSeconds seconds operation'); + await Future.delayed(const Duration(seconds: delayInSeconds)); + childSpan?.finish(); + // ignore: use_build_context_synchronously + Navigator.of(context).pop(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Delayed Screen'), + ), + body: const Center( + child: Text( + 'This screen will automatically close in $delayInSeconds seconds...', + textAlign: TextAlign.center, + ), + ), + ); + } +} diff --git a/flutter/example/lib/main.dart b/flutter/example/lib/main.dart index 8ff567b8cb..61c05ab741 100644 --- a/flutter/example/lib/main.dart +++ b/flutter/example/lib/main.dart @@ -18,6 +18,7 @@ import 'package:sqflite/sqflite.dart'; import 'package:universal_platform/universal_platform.dart'; import 'package:feedback/feedback.dart' as feedback; import 'package:provider/provider.dart'; +import 'auto_close_screen.dart'; import 'drift/database.dart'; import 'drift/connection/connection.dart'; import 'user_feedback_dialog.dart'; @@ -30,9 +31,14 @@ import 'package:sentry_hive/sentry_hive.dart'; const String exampleDsn = 'https://e85b375ffb9f43cf8bdf9787768149e0@o447951.ingest.sentry.io/5428562'; +/// This is an exampleUrl that will be used to demonstrate how http requests are captured. +const String exampleUrl = 'https://jsonplaceholder.typicode.com/todos/'; + const _channel = MethodChannel('example.flutter.sentry.io'); var _isIntegrationTest = false; +final GlobalKey navigatorKey = GlobalKey(); + Future main() async { await setupSentry( () => runApp( @@ -100,6 +106,7 @@ class _MyAppState extends State { create: (_) => ThemeProvider(), child: Builder( builder: (context) => MaterialApp( + navigatorKey: navigatorKey, navigatorObservers: [ SentryNavigatorObserver(), ], @@ -112,6 +119,30 @@ class _MyAppState extends State { } } +class TooltipButton extends StatelessWidget { + final String text; + final String buttonTitle; + final void Function()? onPressed; + + const TooltipButton( + {required this.onPressed, + required this.buttonTitle, + required this.text, + Key? key}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Tooltip( + message: text, + child: ElevatedButton( + onPressed: onPressed, + key: key, + child: Text(buttonTitle), + )); + } +} + class MainScaffold extends StatelessWidget { const MainScaffold({ Key? key, @@ -154,77 +185,115 @@ class MainScaffold extends StatelessWidget { child: Column( children: [ if (_isIntegrationTest) const IntegrationTestWidget(), - const Center(child: Text('Trigger an action:\n')), - // For simplicity sake we skip the web set up for now. + const Center(child: Text('Trigger an action.\n')), + const Padding( + padding: EdgeInsets.all(15), //apply padding to all four sides + child: Center( + child: Text( + 'Long press a button to see more information. (hover on web)')), + ), + TooltipButton( + onPressed: () => navigateToAutoCloseScreen(context), + text: + 'Pushes a screen and creates a transaction named \'AutoCloseScreen\' with a child span that finishes after 3 seconds. \nAfter the screen has popped the transaction can then be seen on the performance page.', + buttonTitle: 'Route Navigation Observer', + ), if (!UniversalPlatform.isWeb) - ElevatedButton( - onPressed: () => driftTest(), - child: const Text('drift'), + TooltipButton( + onPressed: driftTest, + text: + 'Executes CRUD operations on an in-memory with Drift and sends the created transaction to Sentry.', + buttonTitle: 'drift', ), - ElevatedButton( - onPressed: () => hiveTest(), - child: const Text('hive'), - ), - ElevatedButton( - onPressed: () => sqfliteTest(), - child: const Text('sqflite'), + if (!UniversalPlatform.isWeb) + TooltipButton( + onPressed: hiveTest, + text: + 'Executes CRUD operations on an in-memory with Hive and sends the created transaction to Sentry.', + buttonTitle: 'hive', + ), + TooltipButton( + onPressed: sqfliteTest, + text: + 'Executes CRUD operations on an in-memory with Hive and sends the created transaction to Sentry.', + buttonTitle: 'sqflite', ), - ElevatedButton( + TooltipButton( onPressed: () => SecondaryScaffold.openSecondaryScaffold(context), - child: const Text('Open another Scaffold'), + text: + 'Demonstrates how the router integration adds a navigation event to the breadcrumbs that can be seen when throwing an exception for example.', + buttonTitle: 'Open another Scaffold', ), - ElevatedButton( - onPressed: () => tryCatch(), - key: const Key('dart_try_catch'), - child: const Text('Dart: try catch'), + const TooltipButton( + onPressed: tryCatch, + key: Key('dart_try_catch'), + text: 'Creates a caught exception and sends it to Sentry.', + buttonTitle: 'Dart: try catch', ), - ElevatedButton( + TooltipButton( onPressed: () => Scaffold.of(context).showBottomSheet( (context) => const Text('Scaffold error'), ), - child: const Text('Flutter error : Scaffold.of()'), + text: + 'Creates an uncaught exception and sends it to Sentry. This demonstrates how our flutter error integration catches unhandled exceptions.', + buttonTitle: 'Flutter error : Scaffold.of()', ), - ElevatedButton( + TooltipButton( // Warning : not captured if a debugger is attached // https://github.com/flutter/flutter/issues/48972 onPressed: () => throw Exception('Throws onPressed'), - child: const Text('Dart: throw onPressed'), + text: + 'Creates an uncaught exception and sends it to Sentry. This demonstrates how our flutter error integration catches unhandled exceptions.', + buttonTitle: 'Dart: throw onPressed', ), - ElevatedButton( + TooltipButton( + // Warning : not captured if a debugger is attached + // https://github.com/flutter/flutter/issues/48972 onPressed: () { - // Only relevant in debug builds - // Warning : not captured if a debugger is attached - // https://github.com/flutter/flutter/issues/48972 assert(false, 'assert failure'); }, - child: const Text('Dart: assert'), + text: + 'Creates an uncaught exception and sends it to Sentry. This demonstrates how our flutter error integration catches unhandled exceptions.', + buttonTitle: 'Dart: assert', ), // Calling the SDK with an appRunner will handle errors from Futures // in SDKs runZonedGuarded onError handler - ElevatedButton( + TooltipButton( onPressed: () async => asyncThrows(), - child: const Text('Dart: async throws'), + text: + 'Creates an async uncaught exception and sends it to Sentry. This demonstrates how our flutter error integration catches unhandled exceptions.', + buttonTitle: 'Dart: async throws', ), - ElevatedButton( + TooltipButton( onPressed: () async => { await Future.microtask( () => throw StateError('Failure in a microtask'), ) }, - child: const Text('Dart: Fail in microtask.'), + text: + 'Creates an uncaught exception in a microtask and sends it to Sentry. This demonstrates how our flutter error integration catches unhandled exceptions.', + buttonTitle: 'Dart: Fail in microtask', ), - ElevatedButton( - onPressed: () async => {await compute(loop, 10)}, - child: const Text('Dart: Fail in compute'), + TooltipButton( + onPressed: () async => { + await compute(loop, 10), + }, + text: + 'Creates an uncaught exception in a compute isolate and sends it to Sentry. This demonstrates how our flutter error integration catches unhandled exceptions.', + buttonTitle: 'Dart: Fail in compute', ), - ElevatedButton( - onPressed: () => Future.delayed( - const Duration(milliseconds: 100), - () => throw Exception('Throws in Future.delayed'), - ), - child: const Text('Throws in Future.delayed'), + TooltipButton( + onPressed: () async => { + await Future.delayed( + const Duration(milliseconds: 100), + () => throw StateError('Failure in a Future.delayed'), + ), + }, + text: + 'Creates an uncaught exception in a Future.delayed and sends it to Sentry. This demonstrates how our flutter error integration catches unhandled exceptions.', + buttonTitle: 'Throws in Future.delayed', ), - ElevatedButton( + TooltipButton( onPressed: () { // modeled after a real exception FlutterError.onError?.call(FlutterErrorDetails( @@ -242,9 +311,11 @@ class MainScaffold extends StatelessWidget { ], )); }, - child: const Text('Capture from FlutterError.onError'), + text: + 'Creates a FlutterError and passes it to FlutterError.onError callback. This demonstrates how our flutter error integration catches unhandled exceptions.', + buttonTitle: 'Capture from FlutterError.onError', ), - ElevatedButton( + TooltipButton( onPressed: () { // Only usable on Flutter >= 3.3 // and needs the following additional setup: @@ -256,41 +327,41 @@ class MainScaffold extends StatelessWidget { StackTrace.current, ); }, - child: const Text('Capture from PlatformDispatcher.onError'), + text: + 'This is only usable on Flutter >= 3.3 and requires additional setup: options.addIntegration(OnErrorIntegration());', + buttonTitle: 'Capture from PlatformDispatcher.onError', ), - ElevatedButton( - key: const Key('view hierarchy'), - onPressed: () => {}, - child: const Visibility( - visible: true, - child: Opacity( - opacity: 0.5, - child: Text('view hierarchy'), - ), - ), - ), - ElevatedButton( + TooltipButton( onPressed: () => makeWebRequest(context), - child: const Text('Dart: Web request'), - ), - ElevatedButton( - onPressed: () => showDialogWithTextAndImage(context), - child: const Text('Flutter: Load assets'), + text: + 'Attaches web request related spans to the transaction and send it to Sentry.', + buttonTitle: 'Dart: Web request', ), - ElevatedButton( + TooltipButton( + onPressed: () => makeWebRequestWithDio(context), key: const Key('dio_web_request'), - onPressed: () async => await makeWebRequestWithDio(context), - child: const Text('Dio: Web request'), + text: + 'Attaches web request related spans to the transaction and send it to Sentry.', + buttonTitle: 'Dio: Web request', ), - ElevatedButton( + + TooltipButton( + onPressed: () => showDialogWithTextAndImage(context), + text: + 'Attaches asset bundle related spans to the transaction and send it to Sentry.', + buttonTitle: 'Flutter: Load assets', + ), + TooltipButton( onPressed: () { // ignore: avoid_print print('A print breadcrumb'); Sentry.captureMessage('A message with a print() Breadcrumb'); }, - child: const Text('Record print() as breadcrumb'), + text: + 'Sends a captureMessage to Sentry with a breadcrumb created by a print() statement.', + buttonTitle: 'Record print() as breadcrumb', ), - ElevatedButton( + TooltipButton( onPressed: () { Sentry.captureMessage( 'This event has an extra tag', @@ -299,10 +370,11 @@ class MainScaffold extends StatelessWidget { }, ); }, - child: - const Text('Capture message with scope with additional tag'), + text: + 'Sends the capture message event with additional Tag to Sentry.', + buttonTitle: 'Capture message with scope with additional tag', ), - ElevatedButton( + TooltipButton( onPressed: () async { final transaction = Sentry.getSpan() ?? Sentry.startTransaction( @@ -347,9 +419,11 @@ class MainScaffold extends StatelessWidget { // findPrimeNumber(1000000); // Uncomment to see it with profiling await transaction.finish(status: const SpanStatus.ok()); }, - child: const Text('Capture transaction'), + text: + 'Creates a custom transaction, adds child spans and send them to Sentry.', + buttonTitle: 'Capture transaction', ), - ElevatedButton( + TooltipButton( onPressed: () { Sentry.captureMessage( 'This message has an attachment', @@ -365,9 +439,10 @@ class MainScaffold extends StatelessWidget { }, ); }, - child: const Text('Capture message with attachment'), + text: 'Sends the capture message with an attachment to Sentry.', + buttonTitle: 'Capture message with attachment', ), - ElevatedButton( + TooltipButton( onPressed: () { feedback.BetterFeedback.of(context) .show((feedback.UserFeedback feedback) { @@ -391,9 +466,11 @@ class MainScaffold extends StatelessWidget { ); }); }, - child: const Text('Capture message with image attachment'), + text: + 'Sends the capture message with an image attachment to Sentry.', + buttonTitle: 'Capture message with image attachment', ), - ElevatedButton( + TooltipButton( onPressed: () async { final id = await Sentry.captureMessage('UserFeedback'); // ignore: use_build_context_synchronously @@ -409,9 +486,11 @@ class MainScaffold extends StatelessWidget { }, ); }, - child: const Text('Capture User Feedback'), + text: + 'Shows a custom user feedback dialog without an ongoing event that captures and sends user feedback data to Sentry.', + buttonTitle: 'Capture User Feedback', ), - ElevatedButton( + TooltipButton( onPressed: () async { await showDialog( context: context, @@ -420,19 +499,31 @@ class MainScaffold extends StatelessWidget { }, ); }, - child: const Text('Show UserFeedback Dialog without event'), + text: '', + buttonTitle: 'Show UserFeedback Dialog without event', ), - ElevatedButton( + TooltipButton( onPressed: () { final log = Logger('Logging'); log.info('My Logging test'); }, - child: const Text('Logging'), + text: + 'Demonstrates the logging integration. log.info() will create an info event send it to Sentry.', + buttonTitle: 'Logging', ), if (UniversalPlatform.isIOS || UniversalPlatform.isMacOS) const CocoaExample(), if (UniversalPlatform.isAndroid) const AndroidExample(), - ], + ].map((widget) { + if (kIsWeb) { + // Add vertical padding to web so the tooltip doesn't obstruct the clicking of the button below. + return Padding( + padding: const EdgeInsets.only(top: 18.0, bottom: 18.0), + child: widget, + ); + } + return widget; + }).toList(), ), ), ); @@ -596,6 +687,16 @@ class AndroidExample extends StatelessWidget { } } +void navigateToAutoCloseScreen(BuildContext context) { + Navigator.push( + context, + MaterialPageRoute( + settings: const RouteSettings(name: 'AutoCloseScreen'), + builder: (context) => const AutoCloseScreen(), + ), + ); +} + Future tryCatch() async { try { throw StateError('try catch'); @@ -769,7 +870,7 @@ Future makeWebRequest(BuildContext context) async { ); // We don't do any exception handling here. // In case of an exception, let it get caught and reported to Sentry - final response = await client.get(Uri.parse('https://flutter.dev/')); + final response = await client.get(Uri.parse(exampleUrl)); await transaction.finish(status: const SpanStatus.ok()); @@ -781,10 +882,6 @@ Future makeWebRequest(BuildContext context) async { // ignore: use_build_context_synchronously await showDialog( context: context, - // gets tracked if using SentryNavigatorObserver - routeSettings: const RouteSettings( - name: 'flutter.dev dialog', - ), builder: (context) { return AlertDialog( title: Text('Response ${response.statusCode}'), @@ -818,7 +915,7 @@ Future makeWebRequestWithDio(BuildContext context) async { ); Response? response; try { - response = await dio.get('https://flutter.dev/'); + response = await dio.get(exampleUrl); span.status = const SpanStatus.ok(); } catch (exception, stackTrace) { span.throwable = exception; @@ -836,10 +933,6 @@ Future makeWebRequestWithDio(BuildContext context) async { // ignore: use_build_context_synchronously await showDialog( context: context, - // gets tracked if using SentryNavigatorObserver - routeSettings: const RouteSettings( - name: 'flutter.dev dialog', - ), builder: (context) { return AlertDialog( title: Text('Response ${response?.statusCode}'), From d5f600b89be5270826f3de928015fdf5a59a9229 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 16:57:14 +0100 Subject: [PATCH 099/166] build(deps): bump actions/setup-java from 3 to 4 (#1772) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/drift.yml | 2 +- .github/workflows/flutter.yml | 2 +- .github/workflows/flutter_test.yml | 2 +- .github/workflows/metrics.yml | 2 +- .github/workflows/min_version_test.yml | 2 +- .github/workflows/sqflite.yml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/drift.yml b/.github/workflows/drift.yml index 2cf22e8bbd..cc4da1177e 100644 --- a/.github/workflows/drift.yml +++ b/.github/workflows/drift.yml @@ -64,7 +64,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 if: ${{ matrix.target == 'android' }} with: java-version: "11" diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index df20a20efd..7b7a4c8f27 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -69,7 +69,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 if: ${{ matrix.target == 'android' }} with: java-version: "11" diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 6a1806189f..3b9e2e3839 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -35,7 +35,7 @@ jobs: - name: checkout uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: distribution: "adopt" java-version: "11" diff --git a/.github/workflows/metrics.yml b/.github/workflows/metrics.yml index 5e461d86eb..c190889723 100644 --- a/.github/workflows/metrics.yml +++ b/.github/workflows/metrics.yml @@ -57,7 +57,7 @@ jobs: with: flutter-version: ${{ steps.conf.outputs.flutter }} - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 if: ${{ matrix.platform == 'android' }} with: java-version: "11" diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index b9116cdc52..c40c015b16 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -28,7 +28,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 with: distribution: "adopt" java-version: "11" diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 41ab13aba5..7943eb0e92 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -65,7 +65,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 if: ${{ matrix.target == 'android' }} with: java-version: "11" From 13c328da2656f30424e80497ae54e90bef1f15f5 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Tue, 12 Dec 2023 11:34:55 +0100 Subject: [PATCH 100/166] docs: add new package release process (#1734) * add docs * Add flutter example step * Add analyze info * Update * Update new-package-release-checklist.md --- docs/new-package-release-checklist.md | 57 +++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 docs/new-package-release-checklist.md diff --git a/docs/new-package-release-checklist.md b/docs/new-package-release-checklist.md new file mode 100644 index 0000000000..0a7cd19821 --- /dev/null +++ b/docs/new-package-release-checklist.md @@ -0,0 +1,57 @@ +# New Package Release Checklist + +This page serves as a checklist of what to do when releasing a new package for the first time. + +## Release Preparation + +- [ ] Make sure the project is set up + - [ ] The package only exports the public API + - [ ] The package contains an example folder + - [ ] The package contains a README.md file + - [ ] CI badges show a status + - [ ] The package contains a CHANGELOG.md file (symlink to the root changelog) + - [ ] The package contains a dartdoc_options.yaml file (symlink to the root file) + - [ ] The package contains a LICENSE (default is `MIT`) + - [ ] The package contains a pubspec.yaml file + - [ ] The package contains a analysis_options.yaml file + +- [ ] Update the [Flutter example](https://github.com/getsentry/sentry-dart/tree/main/flutter/example) to use your new package if applicable + +- [ ] Make sure your new package has a `version.dart` in the `lib/src` folder. + - This is used to set the version and package in the `Hub`. See this [example](https://github.com/getsentry/sentry-dart/blob/8609bd8dd7ea572e5d241a59643c7570e5621bda/sqflite/lib/src/sentry_database.dart#L69). + - The version will be updated to the newest version after triggering the release process. + +- [ ] Create a new workflow called `your-package-name.yml` for building and testing the package. + +- [ ] Excluding `your-package-name.yml`, add the package to the `paths-ignore` section of all package workflow files. + - For examples see `sqflite.yml`, `dio.yml` etc... + +- [ ] Add an entry to [diagram.yml](https://github.com/getsentry/sentry-dart/blob/main/.github/workflows/diagrams.yml) for your package. + +- [ ] In the root `.gitignore` file add the package coverage as ignored. + +The `analyze` workflow will fail in your PR and in the main branch because the package is not released yet and the `pubspec.yaml` is not 'valid' according to the analyzer. +This is expected - it will succeed after the release. +- [ ] Make sure the analyze workflow doesn't have other failures, only the one mentioned above. + +- [ ] **Very important**: add your package to `scripts/bump-version.sh`. + +## Doing the Release + +Do these steps in the **correct order** + +- [ ] Add your package only as a `pub-dev` target in `.craft.yml`. (**not registry**) + - The release process might fail if you add it to the registry at this point. +- [ ] Trigger the release + - [ ] Check that the release bot successfully updated the versions in `version.dart` and `pubspec.yaml` in the release branch. + +## After the first release + +- [ ] Check if package is succesfully released on `pub.dev` +- [ ] Add the package to the Sentry Release Registry + - Instructions on how to do this can be found [here](https://github.com/getsentry/sentry-release-registry#adding-new-sdks) + - [Example PR](https://github.com/getsentry/sentry-release-registry/pull/136) +- [ ] Add an entry to `.craft.yml` for the package in the `registry` section. + - Now all future releases will be added to the registry automatically. +- [ ] Update the repo's `README.md` +- [ ] Prepare and merge [Sentry documentation](https://github.com/getsentry/sentry-docs/) From 9d7e8623dbcfd7498c1cf1bcf5ba4c8b3e99a860 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 13 Dec 2023 17:46:43 +0100 Subject: [PATCH 101/166] fix(ci): compile error in example using flutter beta channel (#1783) * fix ci --- flutter/example/lib/main.dart | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/flutter/example/lib/main.dart b/flutter/example/lib/main.dart index 61c05ab741..4e39b96db2 100644 --- a/flutter/example/lib/main.dart +++ b/flutter/example/lib/main.dart @@ -231,9 +231,8 @@ class MainScaffold extends StatelessWidget { buttonTitle: 'Dart: try catch', ), TooltipButton( - onPressed: () => Scaffold.of(context).showBottomSheet( - (context) => const Text('Scaffold error'), - ), + onPressed: () => Scaffold.of(context) + .showBottomSheet((context) => const Text('Scaffold error')), text: 'Creates an uncaught exception and sends it to Sentry. This demonstrates how our flutter error integration catches unhandled exceptions.', buttonTitle: 'Flutter error : Scaffold.of()', From e5c91717e6bb377edb3b3c59e93f301db3d477e4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 11:34:51 +0100 Subject: [PATCH 102/166] chore(deps): update Cocoa SDK to v8.17.2 (#1787) * chore: update flutter/scripts/update-cocoa.sh to 8.17.2 --------- Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor --- CHANGELOG.md | 6 +++--- flutter/ios/sentry_flutter.podspec | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c983f6680..e476635366 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,9 +14,9 @@ ### Dependencies -- Bump Cocoa SDK from v8.15.2 to v8.17.1 ([#1761](https://github.com/getsentry/sentry-dart/pull/1761), [#1771](https://github.com/getsentry/sentry-dart/pull/1771)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8171) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.15.2...8.17.1) +- Bump Cocoa SDK from v8.15.2 to v8.17.2 ([#1761](https://github.com/getsentry/sentry-dart/pull/1761), [#1771](https://github.com/getsentry/sentry-dart/pull/1771), [#1787](https://github.com/getsentry/sentry-dart/pull/1787)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8172) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.15.2...8.17.2) ## 7.13.2 diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 9a9f6265a6..15edfce6d7 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.17.1' + s.dependency 'Sentry/HybridSDK', '8.17.2' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' From 4b29d6e00433309052c4edd19c448fb33dd371f5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 11:44:56 +0100 Subject: [PATCH 103/166] chore: update flutter/scripts/update-android.sh to 7.0.0 (#1768) Co-authored-by: GitHub Co-authored-by: Giancarlo Buenaflor --- CHANGELOG.md | 3 +++ flutter/android/build.gradle | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e476635366..079380af7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,9 @@ ### Dependencies +- Bump Android SDK from v6.34.0 to v7.0.0 ([#1768](https://github.com/getsentry/sentry-dart/pull/1768)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#700) + - [diff](https://github.com/getsentry/sentry-java/compare/6.34.0...7.0.0) - Bump Cocoa SDK from v8.15.2 to v8.17.2 ([#1761](https://github.com/getsentry/sentry-dart/pull/1761), [#1771](https://github.com/getsentry/sentry-dart/pull/1771), [#1787](https://github.com/getsentry/sentry-dart/pull/1787)) - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8172) - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.15.2...8.17.2) diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index 9e956927c8..859103b80f 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -60,7 +60,7 @@ android { } dependencies { - api 'io.sentry:sentry-android:6.34.0' + api 'io.sentry:sentry-android:7.0.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // Required -- JUnit 4 framework From d914f354fa8ff3e5d0b78a8fe958a11420a81f66 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 18 Dec 2023 13:49:22 +0000 Subject: [PATCH 104/166] release: 7.14.0 --- CHANGELOG.md | 2 +- dart/lib/src/version.dart | 2 +- dart/pubspec.yaml | 2 +- dio/lib/src/version.dart | 2 +- dio/pubspec.yaml | 4 ++-- drift/lib/src/version.dart | 2 +- drift/pubspec.yaml | 4 ++-- file/lib/src/version.dart | 2 +- file/pubspec.yaml | 4 ++-- flutter/example/pubspec.yaml | 2 +- flutter/lib/src/version.dart | 2 +- flutter/pubspec.yaml | 4 ++-- hive/lib/src/version.dart | 2 +- hive/pubspec.yaml | 4 ++-- logging/lib/src/version.dart | 2 +- logging/pubspec.yaml | 4 ++-- sqflite/lib/src/version.dart | 2 +- sqflite/pubspec.yaml | 4 ++-- 18 files changed, 25 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 079380af7d..cc89efe310 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 7.14.0 ### Fixes diff --git a/dart/lib/src/version.dart b/dart/lib/src/version.dart index 3f3c44b449..dc38fd3e11 100644 --- a/dart/lib/src/version.dart +++ b/dart/lib/src/version.dart @@ -9,7 +9,7 @@ library version; /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.2'; +const String sdkVersion = '7.14.0'; String sdkName(bool isWeb) => isWeb ? _browserSdkName : _ioSdkName; diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index e2e2a7c1c6..e3207ffda2 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry -version: 7.13.2 +version: 7.14.0 description: > A crash reporting library for Dart that sends crash reports to Sentry.io. This library supports Dart VM and Web. For Flutter consider sentry_flutter instead. diff --git a/dio/lib/src/version.dart b/dio/lib/src/version.dart index 2e88298a45..9737ee6520 100644 --- a/dio/lib/src/version.dart +++ b/dio/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.2'; +const String sdkVersion = '7.14.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_dio'; diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index b8c55a1147..92e57a96a9 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_dio description: An integration which adds support for performance tracing for the Dio package. -version: 7.13.2 +version: 7.14.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: dio: ^5.0.0 - sentry: 7.13.2 + sentry: 7.14.0 dev_dependencies: meta: ^1.3.0 diff --git a/drift/lib/src/version.dart b/drift/lib/src/version.dart index 5fe2e65abd..621ab96e95 100644 --- a/drift/lib/src/version.dart +++ b/drift/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.2'; +const String sdkVersion = '7.14.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_drift'; diff --git a/drift/pubspec.yaml b/drift/pubspec.yaml index 7d871c6156..df6380ba9d 100644 --- a/drift/pubspec.yaml +++ b/drift/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_drift description: An integration which adds support for performance tracing for the drift package. -version: 7.13.2 +version: 7.14.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' dependencies: - sentry: 7.13.2 + sentry: 7.14.0 meta: ^1.3.0 drift: ^2.13.0 diff --git a/file/lib/src/version.dart b/file/lib/src/version.dart index a979700d5a..6900c8de5d 100644 --- a/file/lib/src/version.dart +++ b/file/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.2'; +const String sdkVersion = '7.14.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_file'; diff --git a/file/pubspec.yaml b/file/pubspec.yaml index fe9d2fe916..273124df8f 100644 --- a/file/pubspec.yaml +++ b/file/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_file description: An integration which adds support for performance tracing for dart.io.File. -version: 7.13.2 +version: 7.14.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: sdk: '>=2.19.0 <4.0.0' dependencies: - sentry: 7.13.2 + sentry: 7.14.0 meta: ^1.3.0 dev_dependencies: diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index fc09a3776e..cdbbbd0e0d 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_flutter_example description: Demonstrates how to use the sentry_flutter plugin. -version: 7.13.2 +version: 7.14.0 publish_to: 'none' # Remove this line if you wish to publish to pub.dev diff --git a/flutter/lib/src/version.dart b/flutter/lib/src/version.dart index 598160e5d9..ff71dd6e87 100644 --- a/flutter/lib/src/version.dart +++ b/flutter/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.2'; +const String sdkVersion = '7.14.0'; /// The default SDK name reported to Sentry.io in the submitted events. const String sdkName = 'sentry.dart.flutter'; diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 5c4d529917..0e321ab82f 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry_flutter -version: 7.13.2 +version: 7.14.0 description: Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supported by Sentry with native SDKs. homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart @@ -15,7 +15,7 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - sentry: 7.13.2 + sentry: 7.14.0 package_info_plus: '>=1.0.0 <=5.0.1' meta: ^1.3.0 ffi: ^2.0.0 diff --git a/hive/lib/src/version.dart b/hive/lib/src/version.dart index 080ff8f0f2..08b6cbe335 100644 --- a/hive/lib/src/version.dart +++ b/hive/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.2'; +const String sdkVersion = '7.14.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_hive'; diff --git a/hive/pubspec.yaml b/hive/pubspec.yaml index a89e369324..1bdad09235 100644 --- a/hive/pubspec.yaml +++ b/hive/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_hive description: An integration which adds support for performance tracing for the hive package. -version: 7.13.2 +version: 7.14.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -9,7 +9,7 @@ environment: sdk: '>=2.17.0 <4.0.0' dependencies: - sentry: 7.13.2 + sentry: 7.14.0 hive: ^2.2.3 meta: ^1.3.0 diff --git a/logging/lib/src/version.dart b/logging/lib/src/version.dart index 70c5b7d597..b1e21478f7 100644 --- a/logging/lib/src/version.dart +++ b/logging/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.2'; +const String sdkVersion = '7.14.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_logging'; diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index 4b6145bc85..02cef6966a 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_logging description: An integration which adds support for recording log from the logging package. -version: 7.13.2 +version: 7.14.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: logging: ^1.0.0 - sentry: 7.13.2 + sentry: 7.14.0 dev_dependencies: lints: ^3.0.0 diff --git a/sqflite/lib/src/version.dart b/sqflite/lib/src/version.dart index 3df0f707c4..9c361f297d 100644 --- a/sqflite/lib/src/version.dart +++ b/sqflite/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.2'; +const String sdkVersion = '7.14.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_sqflite'; diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index 653adbe3de..22188a8d91 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_sqflite description: An integration which adds support for performance tracing for the sqflite package. -version: 7.13.2 +version: 7.14.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' # matching sqflite dependencies: - sentry: 7.13.2 + sentry: 7.14.0 sqflite: ^2.0.0 sqflite_common: ^2.0.0 meta: ^1.3.0 From 117d988b347861588d574fcc789ecbb4f7c8bdb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 18 Dec 2023 15:01:52 +0000 Subject: [PATCH 105/166] Add `ConnectivityIntegration` for web (#1765) --- CHANGELOG.md | 2 + .../connectivity_integration.dart | 36 ++++++++++ .../connectivity/connectivity_provider.dart | 9 +++ .../noop_connectivity_provider.dart | 17 +++++ .../web_connectivity_provider.dart | 32 +++++++++ flutter/lib/src/sentry_flutter.dart | 5 ++ .../connectivity_integration_test.dart | 56 +++++++++++++++ flutter/test/sentry_flutter_options_test.dart | 2 +- flutter/test/sentry_flutter_test.dart | 71 +++++++++++++------ 9 files changed, 206 insertions(+), 24 deletions(-) create mode 100644 flutter/lib/src/integrations/connectivity/connectivity_integration.dart create mode 100644 flutter/lib/src/integrations/connectivity/connectivity_provider.dart create mode 100644 flutter/lib/src/integrations/connectivity/noop_connectivity_provider.dart create mode 100644 flutter/lib/src/integrations/connectivity/web_connectivity_provider.dart create mode 100644 flutter/test/integrations/connectivity_integration_test.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index cc89efe310..8818d3b035 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ - Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) - Add `Hive` breadcrumbs ([#1773](https://github.com/getsentry/sentry-dart/pull/1773)) +- Add `ConnectivityIntegration` for web ([#1765](https://github.com/getsentry/sentry-dart/pull/1765)) + - We only get the info if online/offline on web platform. The added breadcrumb is set to either `wifi` or `none`. ### Dependencies diff --git a/flutter/lib/src/integrations/connectivity/connectivity_integration.dart b/flutter/lib/src/integrations/connectivity/connectivity_integration.dart new file mode 100644 index 0000000000..c8d0b80c86 --- /dev/null +++ b/flutter/lib/src/integrations/connectivity/connectivity_integration.dart @@ -0,0 +1,36 @@ +import 'package:meta/meta.dart'; +import '../../../sentry_flutter.dart'; +import 'connectivity_provider.dart'; + +class ConnectivityIntegration extends Integration { + Hub? _hub; + ConnectivityProvider? _connectivityProvider; + + @override + void call(Hub hub, SentryFlutterOptions options) { + _hub = hub; + _connectivityProvider = ConnectivityProvider(); + _connectivityProvider?.listen((connectivity) { + addBreadcrumb(connectivity); + }); + options.sdk.addIntegration('connectivityIntegration'); + } + + @override + void close() { + _hub = null; + _connectivityProvider?.cancel(); + } + + @internal + @visibleForTesting + void addBreadcrumb(String connectivity) { + _hub?.addBreadcrumb( + Breadcrumb( + category: 'device.connectivity', + level: SentryLevel.info, + type: 'connectivity', + data: {'connectivity': connectivity}), + ); + } +} diff --git a/flutter/lib/src/integrations/connectivity/connectivity_provider.dart b/flutter/lib/src/integrations/connectivity/connectivity_provider.dart new file mode 100644 index 0000000000..30095dda0d --- /dev/null +++ b/flutter/lib/src/integrations/connectivity/connectivity_provider.dart @@ -0,0 +1,9 @@ +import 'noop_connectivity_provider.dart' + if (dart.library.html) 'web_connectivity_provider.dart'; + +abstract class ConnectivityProvider { + factory ConnectivityProvider() => connectivityProvider(); + + void listen(void Function(String connectivity) onChange); + void cancel(); +} diff --git a/flutter/lib/src/integrations/connectivity/noop_connectivity_provider.dart b/flutter/lib/src/integrations/connectivity/noop_connectivity_provider.dart new file mode 100644 index 0000000000..4276448b7a --- /dev/null +++ b/flutter/lib/src/integrations/connectivity/noop_connectivity_provider.dart @@ -0,0 +1,17 @@ +import 'connectivity_provider.dart'; + +ConnectivityProvider connectivityProvider() { + return NoOpConnectivityProvider(); +} + +class NoOpConnectivityProvider implements ConnectivityProvider { + @override + void listen(void Function(String connectivity) onChange) { + // NoOp + } + + @override + void cancel() { + // NoOp + } +} diff --git a/flutter/lib/src/integrations/connectivity/web_connectivity_provider.dart b/flutter/lib/src/integrations/connectivity/web_connectivity_provider.dart new file mode 100644 index 0000000000..34d0e0ab42 --- /dev/null +++ b/flutter/lib/src/integrations/connectivity/web_connectivity_provider.dart @@ -0,0 +1,32 @@ +import 'dart:async'; +import 'dart:html' as html; + +import 'connectivity_provider.dart'; + +ConnectivityProvider connectivityProvider() { + return WebConnectivityProvider(); +} + +class WebConnectivityProvider implements ConnectivityProvider { + StreamSubscription? _onOnlineSub; + StreamSubscription? _onOfflineSub; + + @override + void listen(void Function(String connectivity) onChange) { + _onOnlineSub = html.window.onOnline.listen((_) { + onChange('wifi'); + }); + _onOfflineSub = html.window.onOffline.listen((_) { + onChange('none'); + }); + } + + @override + void cancel() { + _onOnlineSub?.cancel(); + _onOnlineSub = null; + + _onOfflineSub?.cancel(); + _onOfflineSub = null; + } +} diff --git a/flutter/lib/src/sentry_flutter.dart b/flutter/lib/src/sentry_flutter.dart index cef52ee564..62a9043bc9 100644 --- a/flutter/lib/src/sentry_flutter.dart +++ b/flutter/lib/src/sentry_flutter.dart @@ -9,6 +9,7 @@ import '../sentry_flutter.dart'; import 'event_processor/android_platform_exception_event_processor.dart'; import 'event_processor/flutter_exception_event_processor.dart'; import 'event_processor/platform_exception_event_processor.dart'; +import 'integrations/connectivity/connectivity_integration.dart'; import 'integrations/screenshot_integration.dart'; import 'native/factory.dart'; import 'native/native_scope_observer.dart'; @@ -171,6 +172,10 @@ mixin SentryFlutter { integrations.add(ScreenshotIntegration()); } + if (platformChecker.isWeb) { + integrations.add(ConnectivityIntegration()); + } + // works with Skia, CanvasKit and HTML renderer integrations.add(SentryViewHierarchyIntegration()); diff --git a/flutter/test/integrations/connectivity_integration_test.dart b/flutter/test/integrations/connectivity_integration_test.dart new file mode 100644 index 0000000000..2f0781e9ec --- /dev/null +++ b/flutter/test/integrations/connectivity_integration_test.dart @@ -0,0 +1,56 @@ +import 'package:flutter/widgets.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mockito/mockito.dart'; +import 'package:sentry/sentry.dart'; +import 'package:sentry_flutter/src/integrations/connectivity/connectivity_integration.dart'; +import 'package:sentry_flutter/src/sentry_flutter_options.dart'; + +import '../mocks.dart'; +import '../mocks.mocks.dart'; + +void main() { + WidgetsFlutterBinding.ensureInitialized(); + + late Fixture fixture; + + setUp(() { + fixture = Fixture(); + }); + + verifyBreadcrumb(Breadcrumb crumb, String connectivityData) { + expect(crumb.category, 'device.connectivity'); + expect(crumb.type, 'connectivity'); + expect(crumb.level, SentryLevel.info); + expect(crumb.data?['connectivity'], connectivityData); + } + + test('adds integration', () { + final sut = fixture.getSut(); + sut(fixture.hub, fixture.options); + + expect(fixture.options.sdk.integrations.contains('connectivityIntegration'), + true); + }); + + test('$ConnectivityIntegration: addsBreadcrumb', () { + final integration = fixture.getSut(); + integration.call(fixture.hub, fixture.options); + + integration.addBreadcrumb('wifi'); + + final crumb = verify( + fixture.hub.addBreadcrumb(captureAny), + ).captured.first as Breadcrumb; + + verifyBreadcrumb(crumb, 'wifi'); + }); +} + +class Fixture { + final hub = MockHub(); + final options = SentryFlutterOptions(dsn: fakeDsn); + + ConnectivityIntegration getSut() { + return ConnectivityIntegration(); + } +} diff --git a/flutter/test/sentry_flutter_options_test.dart b/flutter/test/sentry_flutter_options_test.dart index a6d871318b..ed4a3ea7f7 100644 --- a/flutter/test/sentry_flutter_options_test.dart +++ b/flutter/test/sentry_flutter_options_test.dart @@ -32,7 +32,7 @@ void main() { expect(options.enableAutoNativeBreadcrumbs, isFalse); }); - testWidgets('useFlutterBreadcrumbTracking', (WidgetTester tester) async { + testWidgets('useNativeBreadcrumbTracking', (WidgetTester tester) async { final options = SentryFlutterOptions(); options.useNativeBreadcrumbTracking(); diff --git a/flutter/test/sentry_flutter_test.dart b/flutter/test/sentry_flutter_test.dart index 87e4f46e84..f01c9a8d3f 100644 --- a/flutter/test/sentry_flutter_test.dart +++ b/flutter/test/sentry_flutter_test.dart @@ -3,6 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:sentry_flutter/src/integrations/connectivity/connectivity_integration.dart'; import 'package:sentry_flutter/src/integrations/integrations.dart'; import 'package:sentry_flutter/src/integrations/screenshot_integration.dart'; import 'package:sentry_flutter/src/profiling.dart'; @@ -23,6 +24,10 @@ final platformAgnosticIntegrations = [ SentryViewHierarchyIntegration, ]; +final webIntegrations = [ + ConnectivityIntegration, +]; + final nonWebIntegrations = [ OnErrorIntegration, ]; @@ -81,14 +86,18 @@ void main() { options: sentryFlutterOptions!, expectedHasNativeScopeObserver: true); testConfiguration( - integrations: integrations, - shouldHaveIntegrations: [ - ...androidIntegrations, - ...nativeIntegrations, - ...platformAgnosticIntegrations, - ...nonWebIntegrations, - ], - shouldNotHaveIntegrations: iOsAndMacOsIntegrations); + integrations: integrations, + shouldHaveIntegrations: [ + ...androidIntegrations, + ...nativeIntegrations, + ...platformAgnosticIntegrations, + ...nonWebIntegrations, + ], + shouldNotHaveIntegrations: [ + ...iOsAndMacOsIntegrations, + ...nonWebIntegrations, + ], + ); integrations .indexWhere((element) => element is WidgetsFlutterBindingIntegration); @@ -138,7 +147,10 @@ void main() { ...platformAgnosticIntegrations, ...nonWebIntegrations, ], - shouldNotHaveIntegrations: androidIntegrations, + shouldNotHaveIntegrations: [ + ...androidIntegrations, + ...nonWebIntegrations, + ], ); testBefore( @@ -179,16 +191,15 @@ void main() { testScopeObserver( options: sentryFlutterOptions!, expectedHasNativeScopeObserver: true); - testConfiguration( - integrations: integrations, - shouldHaveIntegrations: [ - ...iOsAndMacOsIntegrations, - ...nativeIntegrations, - ...platformAgnosticIntegrations, - ...nonWebIntegrations, - ], - shouldNotHaveIntegrations: androidIntegrations, - ); + testConfiguration(integrations: integrations, shouldHaveIntegrations: [ + ...iOsAndMacOsIntegrations, + ...nativeIntegrations, + ...platformAgnosticIntegrations, + ...nonWebIntegrations, + ], shouldNotHaveIntegrations: [ + ...androidIntegrations, + ...nonWebIntegrations, + ]); testBefore( integrations: integrations, @@ -239,6 +250,7 @@ void main() { ...androidIntegrations, ...iOsAndMacOsIntegrations, ...nativeIntegrations, + ...webIntegrations, ], ); @@ -290,6 +302,7 @@ void main() { ...androidIntegrations, ...iOsAndMacOsIntegrations, ...nativeIntegrations, + ...webIntegrations, ], ); @@ -336,7 +349,10 @@ void main() { testConfiguration( integrations: integrations, - shouldHaveIntegrations: platformAgnosticIntegrations, + shouldHaveIntegrations: [ + ...platformAgnosticIntegrations, + ...webIntegrations, + ], shouldNotHaveIntegrations: [ ...androidIntegrations, ...iOsAndMacOsIntegrations, @@ -383,7 +399,10 @@ void main() { testConfiguration( integrations: integrations, - shouldHaveIntegrations: platformAgnosticIntegrations, + shouldHaveIntegrations: [ + ...platformAgnosticIntegrations, + ...webIntegrations, + ], shouldNotHaveIntegrations: [ ...androidIntegrations, ...iOsAndMacOsIntegrations, @@ -427,7 +446,10 @@ void main() { testConfiguration( integrations: integrations, - shouldHaveIntegrations: platformAgnosticIntegrations, + shouldHaveIntegrations: [ + ...platformAgnosticIntegrations, + ...webIntegrations, + ], shouldNotHaveIntegrations: [ ...androidIntegrations, ...iOsAndMacOsIntegrations, @@ -472,7 +494,10 @@ void main() { testConfiguration( integrations: integrations, - shouldHaveIntegrations: platformAgnosticIntegrations, + shouldHaveIntegrations: [ + ...platformAgnosticIntegrations, + ...webIntegrations, + ], shouldNotHaveIntegrations: [ ...androidIntegrations, ...iOsAndMacOsIntegrations, From f27dcdfb4152e5f61f1fdbb80def7a7e07ce5583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 18 Dec 2023 16:33:06 +0000 Subject: [PATCH 106/166] Fix changelog (#1791) --- CHANGELOG.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8818d3b035..facd194bf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## Unreleased + +### Features + +- Add `ConnectivityIntegration` for web ([#1765](https://github.com/getsentry/sentry-dart/pull/1765)) + - We only get the info if online/offline on web platform. The added breadcrumb is set to either `wifi` or `none`. + ## 7.14.0 ### Fixes @@ -11,8 +18,6 @@ - Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) - Add `Hive` breadcrumbs ([#1773](https://github.com/getsentry/sentry-dart/pull/1773)) -- Add `ConnectivityIntegration` for web ([#1765](https://github.com/getsentry/sentry-dart/pull/1765)) - - We only get the info if online/offline on web platform. The added breadcrumb is set to either `wifi` or `none`. ### Dependencies From f649a83206e0638da84b3f21e38132a20a4f7c2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:18:29 +0100 Subject: [PATCH 107/166] build(deps): bump actions/upload-artifact from 3 to 4 (#1789) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/flutter-symbols.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/flutter-symbols.yml b/.github/workflows/flutter-symbols.yml index fba63c6cac..cf4af7c71c 100644 --- a/.github/workflows/flutter-symbols.yml +++ b/.github/workflows/flutter-symbols.yml @@ -51,7 +51,7 @@ jobs: GITHUB_TOKEN: ${{ github.token }} - name: Upload updated status cache of processed files - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: always() with: name: flutter-symbol-collector-database From f275487b349060e5e84df5d00e3c98d0b8a7cc68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 19 Dec 2023 12:35:58 +0000 Subject: [PATCH 108/166] APM for isar (#1726) --- .craft.yml | 2 + .github/workflows/dart.yml | 1 + .github/workflows/diagrams.yml | 4 + .github/workflows/dio.yml | 1 + .github/workflows/drift.yml | 2 + .github/workflows/e2e_dart.yml | 1 + .github/workflows/file.yml | 1 + .github/workflows/flutter.yml | 1 + .github/workflows/hive.yml | 2 + .github/workflows/isar.yml | 116 ++ .github/workflows/logging.yml | 1 + .github/workflows/min_version_test.yml | 1 + .github/workflows/sqflite.yml | 1 + .gitignore | 1 + CHANGELOG.md | 3 + README.md | 3 +- dart/lib/src/sentry_trace_origins.dart | 2 + flutter/example/lib/isar/user.dart | 12 + flutter/example/lib/isar/user.g.dart | 553 ++++++++ flutter/example/lib/main.dart | 45 +- flutter/example/pubspec.yaml | 3 + flutter/example/pubspec_overrides.yaml | 2 + isar/.gitignore | 17 + isar/.metadata | 10 + isar/CHANGELOG.md | 1 + isar/LICENSE | 21 + isar/README.md | 83 ++ isar/analysis_options.yaml | 33 + isar/dartdoc_options.yaml | 1 + isar/example/main.dart | 47 + isar/example/user.dart | 12 + isar/example/user.g.dart | 553 ++++++++ isar/lib/sentry_isar.dart | 4 + isar/lib/src/sentry_isar.dart | 253 ++++ isar/lib/src/sentry_isar_collection.dart | 433 +++++++ isar/lib/src/sentry_span_helper.dart | 65 + isar/lib/src/version.dart | 5 + isar/pubspec.yaml | 28 + isar/pubspec_overrides.yaml | 3 + isar/test/mocks/mocks.dart | 10 + isar/test/mocks/mocks.mocks.dart | 1340 ++++++++++++++++++++ isar/test/person.dart | 11 + isar/test/person.g.dart | 518 ++++++++ isar/test/sentry_isar_collection_test.dart | 476 +++++++ isar/test/sentry_isar_test.dart | 277 ++++ scripts/bump-version.sh | 2 +- 46 files changed, 4954 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/isar.yml create mode 100644 flutter/example/lib/isar/user.dart create mode 100644 flutter/example/lib/isar/user.g.dart create mode 100644 isar/.gitignore create mode 100644 isar/.metadata create mode 120000 isar/CHANGELOG.md create mode 100644 isar/LICENSE create mode 100644 isar/README.md create mode 100644 isar/analysis_options.yaml create mode 120000 isar/dartdoc_options.yaml create mode 100644 isar/example/main.dart create mode 100644 isar/example/user.dart create mode 100644 isar/example/user.g.dart create mode 100644 isar/lib/sentry_isar.dart create mode 100644 isar/lib/src/sentry_isar.dart create mode 100644 isar/lib/src/sentry_isar_collection.dart create mode 100644 isar/lib/src/sentry_span_helper.dart create mode 100644 isar/lib/src/version.dart create mode 100644 isar/pubspec.yaml create mode 100644 isar/pubspec_overrides.yaml create mode 100644 isar/test/mocks/mocks.dart create mode 100644 isar/test/mocks/mocks.mocks.dart create mode 100644 isar/test/person.dart create mode 100644 isar/test/person.g.dart create mode 100644 isar/test/sentry_isar_collection_test.dart create mode 100644 isar/test/sentry_isar_test.dart diff --git a/.craft.yml b/.craft.yml index 04d1af925d..45554efb25 100644 --- a/.craft.yml +++ b/.craft.yml @@ -24,3 +24,5 @@ targets: pub:sentry_sqflite: pub:sentry_drift: pub:sentry_hive: + # Initial release on pub.dev needed first before uncommenting + # pub:sentry_isar: diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 5f61c73903..3d6e4229fd 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -13,6 +13,7 @@ on: - "sqflite/**" - "hive/**" - "drift/**" + - "isar/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/diagrams.yml b/.github/workflows/diagrams.yml index b4f403b78c..a534112e8b 100644 --- a/.github/workflows/diagrams.yml +++ b/.github/workflows/diagrams.yml @@ -47,6 +47,10 @@ jobs: working-directory: ./hive run: lakos . -i "{test/**,example/**}" | dot -Tsvg -o class-diagram.svg + - name: isar + working-directory: ./isar + run: lakos . -i "{test/**,example/**}" | dot -Tsvg -o class-diagram.svg + # Source: https://stackoverflow.com/a/58035262 - name: Extract branch name shell: bash diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index 064c175698..ec7a54eedc 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -13,6 +13,7 @@ on: - "sqflite/**" - "hive/**" - "drift/**" + - "isar/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/drift.yml b/.github/workflows/drift.yml index cc4da1177e..b5e2c630aa 100644 --- a/.github/workflows/drift.yml +++ b/.github/workflows/drift.yml @@ -12,6 +12,8 @@ on: - "dio/**" - "file/**" - "sqflite/**" + - "hive/**" + - "isar/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index 9deb9a3eaf..730d015d8e 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -14,6 +14,7 @@ on: - "sqflite/**" - "hive/**" - "drift/**" + - "isar/**" env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 7fed334c62..56e3750fc9 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -13,6 +13,7 @@ on: - "sqflite/**" - "hive/**" - "drift/**" + - "isar/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 7b7a4c8f27..77e02e4fc7 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -13,6 +13,7 @@ on: - "sqflite/**" - "hive/**" - "drift/**" + - "isar/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 582f4e36ac..4e710d19fa 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -12,6 +12,8 @@ on: - "dio/**" - "file/**" - "sqflite/**" + - "drift/**" + - "isar/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/isar.yml b/.github/workflows/isar.yml new file mode 100644 index 0000000000..2484fa56bf --- /dev/null +++ b/.github/workflows/isar.yml @@ -0,0 +1,116 @@ +name: sentry-isar +on: + push: + branches: + - main + - release/** + pull_request: + paths-ignore: + - "**/*.md" + - "logging/**" + - "flutter/**" + - "dio/**" + - "file/**" + - "sqflite/**" + - "hive/**" + - "drift/**" + +jobs: + cancel-previous-workflow: + runs-on: ubuntu-latest + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + with: + access_token: ${{ github.token }} + + build: + name: ${{ matrix.target }} | ${{ matrix.os }} | ${{ matrix.sdk }} + runs-on: ${{ matrix.os }} + timeout-minutes: 30 + defaults: + run: + shell: bash + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + target: ["ios", "android", "macos", "linux", "windows"] + sdk: ["stable", "beta"] + exclude: + - os: ubuntu-latest + target: ios + - os: ubuntu-latest + target: macos + - os: ubuntu-latest + target: windows + - os: windows-latest + target: ios + - os: windows-latest + target: android + - os: windows-latest + target: macos + - os: windows-latest + target: linux + # macos-latest is taking hours due to limited resources + - os: macos-latest + target: android + - os: macos-latest + target: linux + - os: macos-latest + target: windows + # Bad CPU type in executable + - os: macos-latest + sdk: beta + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-java@v3 + if: ${{ matrix.target == 'android' }} + with: + java-version: "11" + distribution: "adopt" + + # Install required dependencies for Flutter on Linux on Ubuntu + - name: "Setup Linux" + run: | + sudo apt update + sudo apt install -y cmake dbus libblkid-dev libgtk-3-dev liblzma-dev ninja-build pkg-config xvfb + sudo apt install -y network-manager upower + if: matrix.os == 'ubuntu-latest' && matrix.target == 'linux' + + - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + with: + channel: ${{ matrix.sdk }} + + - run: flutter upgrade + + - name: Pub Get + run: | + cd isar + flutter pub get + + - name: Test VM with coverage + run: | + cd isar + flutter test -j 1 --coverage --test-randomize-ordering-seed=random + + - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 + if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' + with: + name: sentry_isar + file: ./isar/coverage/lcov.info + functionalities: "search" # remove after https://github.com/codecov/codecov-action/issues/600 + + - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 + if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' + with: + path: "./isar/coverage/lcov.info" + min_coverage: 55 + + analyze: + uses: ./.github/workflows/analyze.yml + with: + package: isar + sdk: flutter diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index b489d1be86..d4b6d9898c 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -13,6 +13,7 @@ on: - "sqflite/**" - "hive/**" - "drift/**" + - "isar/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index c40c015b16..3d227a1447 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -11,6 +11,7 @@ on: - "sqflite/**" - "hive/**" - "drift/**" + - "isar/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 7943eb0e92..48bcf380b2 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -13,6 +13,7 @@ on: - "file/**" - "hive/**" - "drift/**" + - "isar/**" jobs: cancel-previous-workflow: diff --git a/.gitignore b/.gitignore index 60bf635a0c..1f40d0ebb1 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ flutter/coverage/* sqflite/coverage/* drift/coverage/* hive/coverage/* +isar/coverage/* pubspec.lock Podfile.lock diff --git a/CHANGELOG.md b/CHANGELOG.md index facd194bf6..d9051b9e07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,12 @@ - Add `ConnectivityIntegration` for web ([#1765](https://github.com/getsentry/sentry-dart/pull/1765)) - We only get the info if online/offline on web platform. The added breadcrumb is set to either `wifi` or `none`. +- APM for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) ## 7.14.0 +- Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) + ### Fixes - Add debug_meta to all events ([#1756](https://github.com/getsentry/sentry-dart/pull/1756)) diff --git a/README.md b/README.md index 1a6d03bc41..6159941c4c 100644 --- a/README.md +++ b/README.md @@ -24,10 +24,11 @@ Sentry SDK for Dart and Flutter | sentry_sqflite | [![build](https://github.com/getsentry/sentry-dart/workflows/sentry-sqflite/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-sqflite) | [![pub package](https://img.shields.io/pub/v/sentry_sqflite.svg)](https://pub.dev/packages/sentry_sqflite) | [![likes](https://img.shields.io/pub/likes/sentry_sqflite)](https://pub.dev/packages/sentry_sqflite/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_sqflite)](https://pub.dev/packages/sentry_sqflite/score) | [![pub points](https://img.shields.io/pub/points/sentry_sqflite)](https://pub.dev/packages/sentry_sqflite/score) | sentry_drift | [![build](https://github.com/getsentry/sentry-dart/actions/workflows/drift.yml/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-drift) | [![pub package](https://img.shields.io/pub/v/sentry_drift.svg)](https://pub.dev/packages/sentry_drift) | [![likes](https://img.shields.io/pub/likes/sentry_drift)](https://pub.dev/packages/sentry_drift/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_drift)](https://pub.dev/packages/sentry_drift/score) | [![pub points](https://img.shields.io/pub/points/sentry_drift)](https://pub.dev/packages/sentry_drift/score) | sentry_hive | [![build](https://github.com/getsentry/sentry-dart/actions/workflows/hive.yml/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-hive) | [![pub package](https://img.shields.io/pub/v/sentry_hive.svg)](https://pub.dev/packages/sentry_hive) | [![likes](https://img.shields.io/pub/likes/sentry_hive)](https://pub.dev/packages/sentry_hive/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_hive)](https://pub.dev/packages/sentry_hive/score) | [![pub points](https://img.shields.io/pub/points/sentry_hive)](https://pub.dev/packages/sentry_hive/score) +| sentry_isar | [![build](https://github.com/getsentry/sentry-dart/actions/workflows/isar.yml/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-isar) | [![pub package](https://img.shields.io/pub/v/sentry_isar.svg)](https://pub.dev/packages/sentry_isar) | [![likes](https://img.shields.io/pub/likes/sentry_isar)](https://pub.dev/packages/sentry_isar/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_isar)](https://pub.dev/packages/sentry_isar/score) | [![pub points](https://img.shields.io/pub/points/sentry_isar)](https://pub.dev/packages/sentry_isar/score) ##### Usage -For detailed usage, check out the inner [dart](https://github.com/getsentry/sentry-dart/tree/main/dart), [flutter](https://github.com/getsentry/sentry-dart/tree/main/flutter), [logging](https://github.com/getsentry/sentry-dart/tree/main/logging), [dio](https://github.com/getsentry/sentry-dart/tree/main/dio), [file](https://github.com/getsentry/sentry-dart/tree/main/file), [sqflite](https://github.com/getsentry/sentry-dart/tree/main/sqflite), [drift](https://github.com/getsentry/sentry-dart/tree/main/drift) and [hive](https://github.com/getsentry/sentry-dart/tree/main/hive) `README's` or our `Resources` section below. +For detailed usage, check out the inner [dart](https://github.com/getsentry/sentry-dart/tree/main/dart), [flutter](https://github.com/getsentry/sentry-dart/tree/main/flutter), [logging](https://github.com/getsentry/sentry-dart/tree/main/logging), [dio](https://github.com/getsentry/sentry-dart/tree/main/dio), [file](https://github.com/getsentry/sentry-dart/tree/main/file), [sqflite](https://github.com/getsentry/sentry-dart/tree/main/sqflite), [drift](https://github.com/getsentry/sentry-dart/tree/main/drift), [hive](https://github.com/getsentry/sentry-dart/tree/main/hive) and [isar](https://github.com/getsentry/sentry-dart/tree/main/isar) `README's` or our `Resources` section below. #### Blog posts diff --git a/dart/lib/src/sentry_trace_origins.dart b/dart/lib/src/sentry_trace_origins.dart index 903348aa19..5a7c49b339 100644 --- a/dart/lib/src/sentry_trace_origins.dart +++ b/dart/lib/src/sentry_trace_origins.dart @@ -18,6 +18,8 @@ class SentryTraceOrigins { 'auto.db.sqflite.database_executor'; static const autoDbSqfliteDatabaseFactory = 'auto.db.sqflite.database_factory'; + static const autoDbIsar = 'auto.db.isar'; + static const autoDbIsarCollection = 'auto.db.isar.collection'; static const autoDbHive = 'auto.db.hive'; static const autoDbHiveBoxBase = 'auto.db.hive.box_base'; static const autoDbHiveLazyBox = 'auto.db.hive.lazy_box'; diff --git a/flutter/example/lib/isar/user.dart b/flutter/example/lib/isar/user.dart new file mode 100644 index 0000000000..f255d2389d --- /dev/null +++ b/flutter/example/lib/isar/user.dart @@ -0,0 +1,12 @@ +import 'package:isar/isar.dart'; + +part 'user.g.dart'; + +@collection +class User { + Id id = Isar.autoIncrement; + + String? name; + + int? age; +} diff --git a/flutter/example/lib/isar/user.g.dart b/flutter/example/lib/isar/user.g.dart new file mode 100644 index 0000000000..c4d7ef985f --- /dev/null +++ b/flutter/example/lib/isar/user.g.dart @@ -0,0 +1,553 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'user.dart'; + +// ************************************************************************** +// IsarCollectionGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +extension GetUserCollection on Isar { + IsarCollection get users => this.collection(); +} + +final UserSchema = CollectionSchema( + name: r'User', + id: BigInt.parse("-7838171048429979076").toInt(), + properties: { + r'age': PropertySchema( + id: BigInt.parse("0").toInt(), + name: r'age', + type: IsarType.long, + ), + r'name': PropertySchema( + id: BigInt.parse("1").toInt(), + name: r'name', + type: IsarType.string, + ) + }, + estimateSize: _userEstimateSize, + serialize: _userSerialize, + deserialize: _userDeserialize, + deserializeProp: _userDeserializeProp, + idName: r'id', + indexes: {}, + links: {}, + embeddedSchemas: {}, + getId: _userGetId, + getLinks: _userGetLinks, + attach: _userAttach, + version: '3.1.0', +); + +int _userEstimateSize( + User object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + { + final value = object.name; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + return bytesCount; +} + +void _userSerialize( + User object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeLong(offsets[0], object.age); + writer.writeString(offsets[1], object.name); +} + +User _userDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = User(); + object.age = reader.readLongOrNull(offsets[0]); + object.id = id; + object.name = reader.readStringOrNull(offsets[1]); + return object; +} + +P _userDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readLongOrNull(offset)) as P; + case 1: + return (reader.readStringOrNull(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +Id _userGetId(User object) { + return object.id; +} + +List> _userGetLinks(User object) { + return []; +} + +void _userAttach(IsarCollection col, Id id, User object) { + object.id = id; +} + +extension UserQueryWhereSort on QueryBuilder { + QueryBuilder anyId() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(const IdWhereClause.any()); + }); + } +} + +extension UserQueryWhere on QueryBuilder { + QueryBuilder idEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + )); + }); + } + + QueryBuilder idNotEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + if (query.whereSort == Sort.asc) { + return query + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ) + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ); + } else { + return query + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ) + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ); + } + }); + } + + QueryBuilder idGreaterThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + ); + }); + } + + QueryBuilder idLessThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + ); + }); + } + + QueryBuilder idBetween( + Id lowerId, + Id upperId, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + )); + }); + } +} + +extension UserQueryFilter on QueryBuilder { + QueryBuilder ageIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'age', + )); + }); + } + + QueryBuilder ageIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'age', + )); + }); + } + + QueryBuilder ageEqualTo(int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'age', + value: value, + )); + }); + } + + QueryBuilder ageGreaterThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'age', + value: value, + )); + }); + } + + QueryBuilder ageLessThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'age', + value: value, + )); + }); + } + + QueryBuilder ageBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'age', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder idEqualTo(Id value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idGreaterThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idLessThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idBetween( + Id lower, + Id upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder nameIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'name', + )); + }); + } + + QueryBuilder nameIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'name', + )); + }); + } + + QueryBuilder nameEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'name', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameContains(String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameMatches(String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'name', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: '', + )); + }); + } + + QueryBuilder nameIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'name', + value: '', + )); + }); + } +} + +extension UserQueryObject on QueryBuilder {} + +extension UserQueryLinks on QueryBuilder {} + +extension UserQuerySortBy on QueryBuilder { + QueryBuilder sortByAge() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'age', Sort.asc); + }); + } + + QueryBuilder sortByAgeDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'age', Sort.desc); + }); + } + + QueryBuilder sortByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder sortByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } +} + +extension UserQuerySortThenBy on QueryBuilder { + QueryBuilder thenByAge() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'age', Sort.asc); + }); + } + + QueryBuilder thenByAgeDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'age', Sort.desc); + }); + } + + QueryBuilder thenById() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.asc); + }); + } + + QueryBuilder thenByIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.desc); + }); + } + + QueryBuilder thenByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder thenByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } +} + +extension UserQueryWhereDistinct on QueryBuilder { + QueryBuilder distinctByAge() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'age'); + }); + } + + QueryBuilder distinctByName( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'name', caseSensitive: caseSensitive); + }); + } +} + +extension UserQueryProperty on QueryBuilder { + QueryBuilder idProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'id'); + }); + } + + QueryBuilder ageProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'age'); + }); + } + + QueryBuilder nameProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'name'); + }); + } +} diff --git a/flutter/example/lib/main.dart b/flutter/example/lib/main.dart index 4e39b96db2..4cb5b97942 100644 --- a/flutter/example/lib/main.dart +++ b/flutter/example/lib/main.dart @@ -10,9 +10,9 @@ import 'package:logging/logging.dart'; import 'package:path_provider/path_provider.dart'; import 'package:sentry_drift/sentry_drift.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:sentry_isar/sentry_isar.dart'; import 'package:sentry_sqflite/sentry_sqflite.dart'; import 'package:sqflite/sqflite.dart'; - // import 'package:sqflite_common_ffi/sqflite_ffi.dart'; // import 'package:sqflite_common_ffi_web/sqflite_ffi_web.dart'; import 'package:universal_platform/universal_platform.dart'; @@ -21,6 +21,7 @@ import 'package:provider/provider.dart'; import 'auto_close_screen.dart'; import 'drift/database.dart'; import 'drift/connection/connection.dart'; +import 'isar/user.dart'; import 'user_feedback_dialog.dart'; import 'package:dio/dio.dart'; import 'package:sentry_dio/sentry_dio.dart'; @@ -212,6 +213,13 @@ class MainScaffold extends StatelessWidget { 'Executes CRUD operations on an in-memory with Hive and sends the created transaction to Sentry.', buttonTitle: 'hive', ), + if (!UniversalPlatform.isWeb) + TooltipButton( + onPressed: isarTest, + text: + 'Executes CRUD operations on an in-memory with Isart and sends the created transaction to Sentry.', + buttonTitle: 'isar', + ), TooltipButton( onPressed: sqfliteTest, text: @@ -528,11 +536,38 @@ class MainScaffold extends StatelessWidget { ); } - Future hiveTest() async { - if (kIsWeb) { - return; - } + Future isarTest() async { + final tr = Sentry.startTransaction( + 'isarTest', + 'db', + bindToScope: true, + ); + + final dir = await getApplicationDocumentsDirectory(); + final isar = await SentryIsar.open( + [UserSchema], + directory: dir.path, + ); + + final newUser = User() + ..name = 'Joe Dirt' + ..age = 36; + + await isar.writeTxn(() async { + await isar.users.put(newUser); // insert & update + }); + + final existingUser = await isar.users.get(newUser.id); // get + + await isar.writeTxn(() async { + await isar.users.delete(existingUser!.id); // delete + }); + + await tr.finish(status: const SpanStatus.ok()); + } + + Future hiveTest() async { final tr = Sentry.startTransaction( 'hiveTest', 'db', diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index cdbbbd0e0d..0f279e8e8f 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -19,6 +19,7 @@ dependencies: sentry_file: sentry_hive: sentry_drift: + sentry_isar: universal_platform: ^1.0.0 feedback: ^2.0.0 provider: ^6.0.0 @@ -26,6 +27,7 @@ dependencies: sqflite: any # This gets constrained by `sentry_sqflite` logging: any # This gets constrained by `sentry_logging` drift: any # This gets constrained by `sentry_drift` + isar: any # This gets constrained by `sentry_isar` package_info_plus: ^4.0.0 path_provider: ^2.0.0 #sqflite_common_ffi: ^2.0.0 @@ -42,6 +44,7 @@ dev_dependencies: flutter_test: sdk: flutter test: ^1.21.1 + build_runner: any flutter: uses-material-design: true diff --git a/flutter/example/pubspec_overrides.yaml b/flutter/example/pubspec_overrides.yaml index 4a3bb3c8cc..a392cc626d 100644 --- a/flutter/example/pubspec_overrides.yaml +++ b/flutter/example/pubspec_overrides.yaml @@ -15,3 +15,5 @@ dependency_overrides: path: ../../hive sentry_drift: path: ../../drift + sentry_isar: + path: ../../isar diff --git a/isar/.gitignore b/isar/.gitignore new file mode 100644 index 0000000000..fdd96ceb43 --- /dev/null +++ b/isar/.gitignore @@ -0,0 +1,17 @@ +# Omit committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Downloaded on demand by tests for correct architecture. +libisar.dylib diff --git a/isar/.metadata b/isar/.metadata new file mode 100644 index 0000000000..eea17bc4a0 --- /dev/null +++ b/isar/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "2f708eb8396e362e280fac22cf171c2cb467343c" + channel: "stable" + +project_type: package diff --git a/isar/CHANGELOG.md b/isar/CHANGELOG.md new file mode 120000 index 0000000000..04c99a55ca --- /dev/null +++ b/isar/CHANGELOG.md @@ -0,0 +1 @@ +../CHANGELOG.md \ No newline at end of file diff --git a/isar/LICENSE b/isar/LICENSE new file mode 100644 index 0000000000..2a6964d84d --- /dev/null +++ b/isar/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Sentry + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/isar/README.md b/isar/README.md new file mode 100644 index 0000000000..5405c8e43e --- /dev/null +++ b/isar/README.md @@ -0,0 +1,83 @@ +

+ + + +
+

+ +Sentry integration for `isar` package +=========== + +| package | build | pub | likes | popularity | pub points | +| ------- | ------- | ------- | ------- | ------- | ------- | +| sentry_isar | [![build](https://github.com/getsentry/sentry-dart/actions/workflows/isar.yml/badge.svg?branch=main)](https://github.com/getsentry/sentry-dart/actions?query=workflow%3Asentry-isar) | [![pub package](https://img.shields.io/pub/v/sentry_isar.svg)](https://pub.dev/packages/sentry_isar) | [![likes](https://img.shields.io/pub/likes/sentry_isar)](https://pub.dev/packages/sentry_isar/score) | [![popularity](https://img.shields.io/pub/popularity/sentry_isar)](https://pub.dev/packages/sentry_isar/score) | [![pub points](https://img.shields.io/pub/points/sentry_isar)](https://pub.dev/packages/sentry_isar/score) + +Integration for the [`isar`](https://pub.dev/packages/isar) package. + +#### Usage + +- Sign up for a Sentry.io account and get a DSN at https://sentry.io. + +- Follow the installing instructions on [pub.dev](https://pub.dev/packages/sentry/install). + +- Initialize the Sentry SDK using the DSN issued by Sentry.io. + +- Call... + +```dart +import 'package:path_provider/path_provider.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:sentry_isar/sentry_isar.dart'; + +import 'user.dart'; + +Future main() async { + await SentryFlutter.init( + (options) { + options.dsn = 'https://example@sentry.io/add-your-dsn-here'; + options.tracesSampleRate = 1.0; + }, + // Init your App. + appRunner: () => runApp(MyApp()), + ); +} + +Future runApp() async { + final tr = Sentry.startTransaction( + 'isarTest', + 'db', + bindToScope: true, + ); + + final dir = await getApplicationDocumentsDirectory(); + + final isar = await SentryIsar.open( + [UserSchema], + directory: dir.path, + ); + + final newUser = User() + ..name = 'Joe Dirt' + ..age = 36; + + await isar.writeTxn(() async { + await isar.users.put(newUser); // insert & update + }); + + final existingUser = await isar.users.get(newUser.id); // get + + await isar.writeTxn(() async { + await isar.users.delete(existingUser!.id); // delete + }); + + await tr.finish(status: const SpanStatus.ok()); +} +``` + +#### Resources + +* [![Documentation](https://img.shields.io/badge/documentation-sentry.io-green.svg)](https://docs.sentry.io/platforms/dart/) +* [![Forum](https://img.shields.io/badge/forum-sentry-green.svg)](https://forum.sentry.io/c/sdks) +* [![Discord](https://img.shields.io/discord/621778831602221064)](https://discord.gg/Ww9hbqr) +* [![Stack Overflow](https://img.shields.io/badge/stack%20overflow-sentry-green.svg)](https://stackoverflow.com/questions/tagged/sentry) +* [![Twitter Follow](https://img.shields.io/twitter/follow/getsentry?label=getsentry&style=social)](https://twitter.com/intent/follow?screen_name=getsentry) diff --git a/isar/analysis_options.yaml b/isar/analysis_options.yaml new file mode 100644 index 0000000000..92c8931384 --- /dev/null +++ b/isar/analysis_options.yaml @@ -0,0 +1,33 @@ +include: package:lints/recommended.yaml + +analyzer: + language: + strict-casts: true + strict-inference: true + strict-raw-types: true + errors: + # treat missing required parameters as a warning (not a hint) + missing_required_param: error + # treat missing returns as a warning (not a hint) + missing_return: error + # allow having TODOs in the code + todo: ignore + # allow self-reference to deprecated members (we do this because otherwise we have + # to annotate every member in every test, assert, etc, when we deprecate something) + deprecated_member_use_from_same_package: warning + # ignore sentry/path on pubspec as we change it on deployment + invalid_dependency: ignore + unnecessary_import: ignore + exclude: + - example/** + +linter: + rules: + - prefer_final_locals + - public_member_api_docs + - prefer_single_quotes + - prefer_relative_imports + - unnecessary_brace_in_string_interps + - implementation_imports + - require_trailing_commas + - unawaited_futures diff --git a/isar/dartdoc_options.yaml b/isar/dartdoc_options.yaml new file mode 120000 index 0000000000..7cbb8c0d74 --- /dev/null +++ b/isar/dartdoc_options.yaml @@ -0,0 +1 @@ +../dart/dartdoc_options.yaml \ No newline at end of file diff --git a/isar/example/main.dart b/isar/example/main.dart new file mode 100644 index 0000000000..7c9972b50d --- /dev/null +++ b/isar/example/main.dart @@ -0,0 +1,47 @@ +import 'package:path_provider/path_provider.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:sentry_isar/sentry_isar.dart'; + +import 'user.dart'; + +Future main() async { + // ATTENTION: Change the DSN below with your own to see the events in Sentry. Get one at sentry.io + const dsn = + 'https://e85b375ffb9f43cf8bdf9787768149e0@o447951.ingest.sentry.io/5428562'; + + await SentryFlutter.init( + (options) { + options.dsn = dsn; + options.tracesSampleRate = 1.0; + options.debug = true; + }, + appRunner: runApp, // Init your App. + ); +} + +Future runApp() async { + final tr = Sentry.startTransaction('isar', 'db', bindToScope: true); + + final dir = await getApplicationDocumentsDirectory(); + + final isar = await SentryIsar.open( + [UserSchema], + directory: dir.path, + ); + + final newUser = User() + ..name = 'Joe Dirt' + ..age = 36; + + await isar.writeTxn(() async { + await isar.users.put(newUser); // insert & update + }); + + final existingUser = await isar.users.get(newUser.id); // get + + await isar.writeTxn(() async { + await isar.users.delete(existingUser!.id); // delete + }); + + await tr.finish(status: const SpanStatus.ok()); +} diff --git a/isar/example/user.dart b/isar/example/user.dart new file mode 100644 index 0000000000..f255d2389d --- /dev/null +++ b/isar/example/user.dart @@ -0,0 +1,12 @@ +import 'package:isar/isar.dart'; + +part 'user.g.dart'; + +@collection +class User { + Id id = Isar.autoIncrement; + + String? name; + + int? age; +} diff --git a/isar/example/user.g.dart b/isar/example/user.g.dart new file mode 100644 index 0000000000..370c40860f --- /dev/null +++ b/isar/example/user.g.dart @@ -0,0 +1,553 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'user.dart'; + +// ************************************************************************** +// IsarCollectionGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +extension GetUserCollection on Isar { + IsarCollection get users => this.collection(); +} + +const UserSchema = CollectionSchema( + name: r'User', + id: -7838171048429979076, + properties: { + r'age': PropertySchema( + id: 0, + name: r'age', + type: IsarType.long, + ), + r'name': PropertySchema( + id: 1, + name: r'name', + type: IsarType.string, + ) + }, + estimateSize: _userEstimateSize, + serialize: _userSerialize, + deserialize: _userDeserialize, + deserializeProp: _userDeserializeProp, + idName: r'id', + indexes: {}, + links: {}, + embeddedSchemas: {}, + getId: _userGetId, + getLinks: _userGetLinks, + attach: _userAttach, + version: '3.1.0+1', +); + +int _userEstimateSize( + User object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + { + final value = object.name; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + return bytesCount; +} + +void _userSerialize( + User object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeLong(offsets[0], object.age); + writer.writeString(offsets[1], object.name); +} + +User _userDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = User(); + object.age = reader.readLongOrNull(offsets[0]); + object.id = id; + object.name = reader.readStringOrNull(offsets[1]); + return object; +} + +P _userDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readLongOrNull(offset)) as P; + case 1: + return (reader.readStringOrNull(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +Id _userGetId(User object) { + return object.id; +} + +List> _userGetLinks(User object) { + return []; +} + +void _userAttach(IsarCollection col, Id id, User object) { + object.id = id; +} + +extension UserQueryWhereSort on QueryBuilder { + QueryBuilder anyId() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(const IdWhereClause.any()); + }); + } +} + +extension UserQueryWhere on QueryBuilder { + QueryBuilder idEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + )); + }); + } + + QueryBuilder idNotEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + if (query.whereSort == Sort.asc) { + return query + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ) + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ); + } else { + return query + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ) + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ); + } + }); + } + + QueryBuilder idGreaterThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + ); + }); + } + + QueryBuilder idLessThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + ); + }); + } + + QueryBuilder idBetween( + Id lowerId, + Id upperId, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + )); + }); + } +} + +extension UserQueryFilter on QueryBuilder { + QueryBuilder ageIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'age', + )); + }); + } + + QueryBuilder ageIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'age', + )); + }); + } + + QueryBuilder ageEqualTo(int? value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'age', + value: value, + )); + }); + } + + QueryBuilder ageGreaterThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'age', + value: value, + )); + }); + } + + QueryBuilder ageLessThan( + int? value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'age', + value: value, + )); + }); + } + + QueryBuilder ageBetween( + int? lower, + int? upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'age', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder idEqualTo(Id value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idGreaterThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idLessThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idBetween( + Id lower, + Id upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder nameIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'name', + )); + }); + } + + QueryBuilder nameIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'name', + )); + }); + } + + QueryBuilder nameEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'name', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameContains(String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameMatches(String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'name', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: '', + )); + }); + } + + QueryBuilder nameIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'name', + value: '', + )); + }); + } +} + +extension UserQueryObject on QueryBuilder {} + +extension UserQueryLinks on QueryBuilder {} + +extension UserQuerySortBy on QueryBuilder { + QueryBuilder sortByAge() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'age', Sort.asc); + }); + } + + QueryBuilder sortByAgeDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'age', Sort.desc); + }); + } + + QueryBuilder sortByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder sortByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } +} + +extension UserQuerySortThenBy on QueryBuilder { + QueryBuilder thenByAge() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'age', Sort.asc); + }); + } + + QueryBuilder thenByAgeDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'age', Sort.desc); + }); + } + + QueryBuilder thenById() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.asc); + }); + } + + QueryBuilder thenByIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.desc); + }); + } + + QueryBuilder thenByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder thenByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } +} + +extension UserQueryWhereDistinct on QueryBuilder { + QueryBuilder distinctByAge() { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'age'); + }); + } + + QueryBuilder distinctByName( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'name', caseSensitive: caseSensitive); + }); + } +} + +extension UserQueryProperty on QueryBuilder { + QueryBuilder idProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'id'); + }); + } + + QueryBuilder ageProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'age'); + }); + } + + QueryBuilder nameProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'name'); + }); + } +} diff --git a/isar/lib/sentry_isar.dart b/isar/lib/sentry_isar.dart new file mode 100644 index 0000000000..75e63c47ea --- /dev/null +++ b/isar/lib/sentry_isar.dart @@ -0,0 +1,4 @@ +library sentry_isar; + +export 'src/sentry_isar.dart'; +export 'src/sentry_isar_collection.dart'; diff --git a/isar/lib/src/sentry_isar.dart b/isar/lib/src/sentry_isar.dart new file mode 100644 index 0000000000..e6e174a8eb --- /dev/null +++ b/isar/lib/src/sentry_isar.dart @@ -0,0 +1,253 @@ +import 'package:isar/isar.dart'; +import 'package:meta/meta.dart'; +import 'package:sentry/sentry.dart'; +import 'version.dart'; + +import 'sentry_isar_collection.dart'; +import 'sentry_span_helper.dart'; + +/// A sentry wrapper around the Isar Database +@experimental +class SentryIsar implements Isar { + @internal + // ignore: public_member_api_docs + static const dbOp = 'db'; + + @internal + // ignore: public_member_api_docs + static const dbSystemKey = 'db.system'; + @internal + // ignore: public_member_api_docs + static const dbSystem = 'isar'; + + @internal + // ignore: public_member_api_docs + static const dbNameKey = 'db.name'; + + @internal + // ignore: public_member_api_docs + static const dbCollectionKey = 'db.collection'; + + final Isar _isar; + final Hub _hub; + final _spanHelper = SentrySpanHelper( + // ignore: invalid_use_of_internal_member + SentryTraceOrigins.autoDbIsar, + ); + + /// ctor of SentryIsar + SentryIsar(this._isar, this._hub) { + _spanHelper.setHub(_hub); + + // ignore: invalid_use_of_internal_member + final options = _hub.options; + options.sdk.addIntegration('SentryIsarTracing'); + options.sdk.addPackage(packageName, sdkVersion); + } + + /// Open a new Isar instance, wrapped by SentryIsar + static Future open( + List> schemas, { + required String directory, + String name = Isar.defaultName, + int maxSizeMiB = Isar.defaultMaxSizeMiB, + bool relaxedDurability = true, + CompactCondition? compactOnLaunch, + bool inspector = true, + Hub? hub, + }) async { + final spanHelper = SentrySpanHelper( + // ignore: invalid_use_of_internal_member + SentryTraceOrigins.autoDbIsar, + ); + final hubToUse = hub ?? HubAdapter(); + spanHelper.setHub(hubToUse); + + final isar = await spanHelper.asyncWrapInSpan( + 'open', + () async { + return await Isar.open( + schemas, + directory: directory, + name: name, + maxSizeMiB: maxSizeMiB, + relaxedDurability: relaxedDurability, + compactOnLaunch: compactOnLaunch, + inspector: inspector, + ); + }, + dbName: name, + ); + + return SentryIsar(isar, hubToUse); + } + + /// Open a new Isar instance, wrapped by SentryIsar + static Isar openSync( + List> schemas, { + required String directory, + String name = Isar.defaultName, + int maxSizeMiB = Isar.defaultMaxSizeMiB, + bool relaxedDurability = true, + CompactCondition? compactOnLaunch, + bool inspector = true, + Hub? hub, + }) { + final isar = Isar.openSync( + schemas, + directory: directory, + name: name, + maxSizeMiB: maxSizeMiB, + relaxedDurability: relaxedDurability, + compactOnLaunch: compactOnLaunch, + inspector: inspector, + ); + return SentryIsar(isar, hub ?? HubAdapter()); + } + + @override + void attachCollections(Map> collections) { + _isar.attachCollections(collections); + } + + @override + Future clear() { + return _spanHelper.asyncWrapInSpan( + 'clear', + () { + return _isar.clear(); + }, + dbName: name, + ); + } + + @override + void clearSync() { + _isar.clearSync(); + } + + @override + Future close({bool deleteFromDisk = false}) { + return _spanHelper.asyncWrapInSpan( + 'close', + () { + return _isar.close(deleteFromDisk: deleteFromDisk); + }, + dbName: name, + ); + } + + @override + IsarCollection collection() { + return SentryIsarCollection(_isar.collection(), _hub, name); + } + + @override + Future copyToFile(String targetPath) { + return _spanHelper.asyncWrapInSpan( + 'copyToFile', + () { + return _isar.copyToFile(targetPath); + }, + dbName: name, + ); + } + + @override + String? get directory => _isar.directory; + + @override + IsarCollection? getCollectionByNameInternal(String name) { + final collection = _isar.getCollectionByNameInternal(name); + if (collection != null) { + return SentryIsarCollection(collection, _hub, name); + } else { + return null; + } + } + + @override + Future getSize({ + bool includeIndexes = false, + bool includeLinks = false, + }) { + return _spanHelper.asyncWrapInSpan( + 'getSize', + () { + return _isar.getSize( + includeIndexes: includeIndexes, + includeLinks: includeLinks, + ); + }, + dbName: name, + ); + } + + @override + int getSizeSync({bool includeIndexes = false, bool includeLinks = false}) { + return _isar.getSizeSync( + includeIndexes: includeIndexes, + includeLinks: includeLinks, + ); + } + + @override + bool get isOpen => _isar.isOpen; + + @override + String get name => _isar.name; + + @override + String? get path => _isar.path; + + @override + void requireOpen() { + _isar.requireOpen(); + } + + @override + Future txn(Future Function() callback) { + return _spanHelper.asyncWrapInSpan( + 'txn', + () { + return _isar.txn(callback); + }, + dbName: name, + ); + } + + @override + T txnSync(T Function() callback) { + return _isar.txnSync(callback); + } + + @override + @visibleForTesting + @experimental + Future verify() { + return _spanHelper.asyncWrapInSpan( + 'verify', + () { + // ignore: invalid_use_of_visible_for_testing_member + return _isar.verify(); + }, + dbName: name, + ); + } + + @override + Future writeTxn(Future Function() callback, {bool silent = false}) { + return _spanHelper.asyncWrapInSpan( + 'writeTxn', + () { + return _isar.writeTxn(callback, silent: silent); + }, + dbName: name, + ); + } + + @override + T writeTxnSync(T Function() callback, {bool silent = false}) { + return _isar.writeTxnSync(callback, silent: silent); + } +} diff --git a/isar/lib/src/sentry_isar_collection.dart b/isar/lib/src/sentry_isar_collection.dart new file mode 100644 index 0000000000..3f85242bbe --- /dev/null +++ b/isar/lib/src/sentry_isar_collection.dart @@ -0,0 +1,433 @@ +import 'dart:typed_data'; +import 'package:isar/isar.dart'; +import 'package:meta/meta.dart'; +import 'package:sentry/sentry.dart'; + +import 'sentry_span_helper.dart'; + +/// Sentry wrapper around IsarCollection +@experimental +class SentryIsarCollection implements IsarCollection { + final IsarCollection _isarCollection; + final Hub _hub; + final String _dbName; + + final _spanHelper = SentrySpanHelper( + // ignore: invalid_use_of_internal_member + SentryTraceOrigins.autoDbIsarCollection, + ); + + /// ctor of SentryIsarCollection + SentryIsarCollection(this._isarCollection, this._hub, this._dbName) { + _spanHelper.setHub(_hub); + } + + @override + Query buildQuery({ + List whereClauses = const [], + bool whereDistinct = false, + Sort whereSort = Sort.asc, + FilterOperation? filter, + List sortBy = const [], + List distinctBy = const [], + int? offset, + int? limit, + String? property, + }) { + return _isarCollection.buildQuery( + whereClauses: whereClauses, + whereDistinct: whereDistinct, + whereSort: whereSort, + filter: filter, + sortBy: sortBy, + distinctBy: distinctBy, + offset: offset, + limit: limit, + property: property, + ); + } + + @override + Future clear() { + return _spanHelper.asyncWrapInSpan( + 'clear', + () { + return _isarCollection.clear(); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + void clearSync() { + _isarCollection.clearSync(); + } + + @override + Future count() { + return _spanHelper.asyncWrapInSpan( + 'count', + () { + return _isarCollection.count(); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + int countSync() { + return _isarCollection.countSync(); + } + + @override + Future delete(Id id) { + return _spanHelper.asyncWrapInSpan( + 'delete', + () { + return _isarCollection.delete(id); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + Future deleteAll(List ids) { + return _spanHelper.asyncWrapInSpan( + 'deleteAll', + () { + return _isarCollection.deleteAll(ids); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + Future deleteAllByIndex(String indexName, List keys) { + return _spanHelper.asyncWrapInSpan( + 'deleteAllByIndex', + () { + return _isarCollection.deleteAllByIndex(indexName, keys); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + int deleteAllByIndexSync(String indexName, List keys) { + return _isarCollection.deleteAllByIndexSync(indexName, keys); + } + + @override + int deleteAllSync(List ids) { + return _isarCollection.deleteAllSync(ids); + } + + @override + Future deleteByIndex(String indexName, IndexKey key) { + return _spanHelper.asyncWrapInSpan( + 'deleteByIndex', + () { + return _isarCollection.deleteByIndex(indexName, key); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + bool deleteByIndexSync(String indexName, IndexKey key) { + return _isarCollection.deleteByIndexSync(indexName, key); + } + + @override + bool deleteSync(Id id) { + return _isarCollection.deleteSync(id); + } + + @override + QueryBuilder filter() { + return _isarCollection.filter(); + } + + @override + Future get(Id id) { + return _spanHelper.asyncWrapInSpan( + 'get', + () { + return _isarCollection.get(id); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + Future> getAll(List ids) { + return _spanHelper.asyncWrapInSpan( + 'getAll', + () { + return _isarCollection.getAll(ids); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + Future> getAllByIndex(String indexName, List keys) { + return _spanHelper.asyncWrapInSpan( + 'getAllByIndex', + () { + return _isarCollection.getAllByIndex(indexName, keys); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + List getAllByIndexSync(String indexName, List keys) { + return _isarCollection.getAllByIndexSync(indexName, keys); + } + + @override + List getAllSync(List ids) { + return _isarCollection.getAllSync(ids); + } + + @override + Future getByIndex(String indexName, IndexKey key) { + return _spanHelper.asyncWrapInSpan( + 'getByIndex', + () { + return _isarCollection.getByIndex(indexName, key); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + OBJ? getByIndexSync(String indexName, IndexKey key) { + return _isarCollection.getByIndexSync(indexName, key); + } + + @override + Future getSize({ + bool includeIndexes = false, + bool includeLinks = false, + }) { + return _spanHelper.asyncWrapInSpan( + 'getSize', + () { + return _isarCollection.getSize( + includeIndexes: includeIndexes, + includeLinks: includeLinks, + ); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + int getSizeSync({bool includeIndexes = false, bool includeLinks = false}) { + return _isarCollection.getSizeSync( + includeIndexes: includeIndexes, + includeLinks: includeLinks, + ); + } + + @override + OBJ? getSync(Id id) { + return _isarCollection.getSync(id); + } + + @override + Future importJson(List> json) { + return _spanHelper.asyncWrapInSpan( + 'importJson', + () { + return _isarCollection.importJson(json); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + Future importJsonRaw(Uint8List jsonBytes) { + return _spanHelper.asyncWrapInSpan( + 'importJsonRaw', + () { + return _isarCollection.importJsonRaw(jsonBytes); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + void importJsonRawSync(Uint8List jsonBytes) { + _isarCollection.importJsonRawSync(jsonBytes); + } + + @override + void importJsonSync(List> json) { + _isarCollection.importJsonSync(json); + } + + @override + Isar get isar => _isarCollection.isar; + + @override + String get name => _isarCollection.name; + + @override + Future put(OBJ object) { + return _spanHelper.asyncWrapInSpan( + 'put', + () { + return _isarCollection.put(object); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + Future> putAll(List objects) { + return _spanHelper.asyncWrapInSpan( + 'putAll', + () { + return _isarCollection.putAll(objects); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + Future> putAllByIndex(String indexName, List objects) { + return _spanHelper.asyncWrapInSpan( + 'putAllByIndex', + () { + return _isarCollection.putAllByIndex(indexName, objects); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + List putAllByIndexSync( + String indexName, + List objects, { + bool saveLinks = true, + }) { + return _isarCollection.putAllByIndexSync( + indexName, + objects, + saveLinks: saveLinks, + ); + } + + @override + List putAllSync(List objects, {bool saveLinks = true}) { + return _isarCollection.putAllSync(objects, saveLinks: saveLinks); + } + + @override + Future putByIndex(String indexName, OBJ object) { + return _spanHelper.asyncWrapInSpan( + 'putByIndex', + () { + return _isarCollection.putByIndex(indexName, object); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + Id putByIndexSync(String indexName, OBJ object, {bool saveLinks = true}) { + return _isarCollection.putByIndexSync( + indexName, + object, + saveLinks: saveLinks, + ); + } + + @override + Id putSync(OBJ object, {bool saveLinks = true}) { + return _isarCollection.putSync(object, saveLinks: saveLinks); + } + + @override + CollectionSchema get schema => _isarCollection.schema; + + @override + @visibleForTesting + @experimental + Future verify(List objects) { + return _spanHelper.asyncWrapInSpan( + 'verify', + () { + // ignore: invalid_use_of_visible_for_testing_member + return _isarCollection.verify(objects); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + @visibleForTesting + @experimental + Future verifyLink( + String linkName, + List sourceIds, + List targetIds, + ) { + return _spanHelper.asyncWrapInSpan( + 'verifyLink', + () { + // ignore: invalid_use_of_visible_for_testing_member + return _isarCollection.verifyLink(linkName, sourceIds, targetIds); + }, + dbName: _dbName, + collectionName: name, + ); + } + + @override + Stream watchLazy({bool fireImmediately = false}) { + return _isarCollection.watchLazy(fireImmediately: fireImmediately); + } + + @override + Stream watchObject(Id id, {bool fireImmediately = false}) { + return _isarCollection.watchObject(id, fireImmediately: fireImmediately); + } + + @override + Stream watchObjectLazy(Id id, {bool fireImmediately = false}) { + return _isarCollection.watchObjectLazy( + id, + fireImmediately: fireImmediately, + ); + } + + @override + QueryBuilder where({ + bool distinct = false, + Sort sort = Sort.asc, + }) { + return _isarCollection.where(distinct: distinct, sort: sort); + } +} diff --git a/isar/lib/src/sentry_span_helper.dart b/isar/lib/src/sentry_span_helper.dart new file mode 100644 index 0000000000..69fc6e5c39 --- /dev/null +++ b/isar/lib/src/sentry_span_helper.dart @@ -0,0 +1,65 @@ +// ignore_for_file: invalid_internal_annotation + +import 'package:meta/meta.dart'; +import 'package:sentry/sentry.dart'; +import 'sentry_isar.dart'; + +/// @nodoc +@internal +class SentrySpanHelper { + /// @nodoc + Hub _hub = HubAdapter(); + + /// @nodoc + final String _origin; + + /// @nodoc + SentrySpanHelper(this._origin); + + /// @nodoc + void setHub(Hub hub) { + _hub = hub; + } + + /// @nodoc + @internal + Future asyncWrapInSpan( + String description, + Future Function() execute, { + String? dbName, + String? collectionName, + }) async { + final currentSpan = _hub.getSpan(); + final span = currentSpan?.startChild( + SentryIsar.dbOp, + description: description, + ); + + // ignore: invalid_use_of_internal_member + span?.origin = _origin; + + span?.setData(SentryIsar.dbSystemKey, SentryIsar.dbSystem); + + if (dbName != null) { + span?.setData(SentryIsar.dbNameKey, dbName); + } + + if (collectionName != null) { + span?.setData(SentryIsar.dbCollectionKey, collectionName); + } + + try { + final result = await execute(); + span?.status = SpanStatus.ok(); + + return result; + } catch (exception) { + span?.throwable = exception; + span?.status = SpanStatus.internalError(); + + rethrow; + } finally { + await span?.finish(); + } + } +} diff --git a/isar/lib/src/version.dart b/isar/lib/src/version.dart new file mode 100644 index 0000000000..7c1a7d4031 --- /dev/null +++ b/isar/lib/src/version.dart @@ -0,0 +1,5 @@ +/// The SDK version reported to Sentry.io in the submitted events. +const String sdkVersion = '7.13.1'; + +/// The package name reported to Sentry.io in the submitted events. +const String packageName = 'pub:sentry_isar'; diff --git a/isar/pubspec.yaml b/isar/pubspec.yaml new file mode 100644 index 0000000000..43c0907472 --- /dev/null +++ b/isar/pubspec.yaml @@ -0,0 +1,28 @@ +name: sentry_isar +description: An integration which adds support for performance tracing for the isar package. +version: 7.13.1 +homepage: https://docs.sentry.io/platforms/flutter/ +repository: https://github.com/getsentry/sentry-dart +issue_tracker: https://github.com/getsentry/sentry-dart/issues + +environment: + sdk: '>=2.17.0 <4.0.0' + flutter: '>=3.3.0' + +dependencies: + isar: ^3.1.0 + isar_flutter_libs: ^3.1.0 # contains Isar Core + sentry: 7.12.0 + meta: ^1.3.0 + path: ^1.8.3 + +dev_dependencies: + isar_generator: ^3.1.0 + build_runner: ^2.4.2 + lints: ^3.0.0 + flutter_test: + sdk: flutter + coverage: ^1.3.0 + mockito: ^5.1.0 + yaml: ^3.1.0 # needed for version match (code and pubspec) + path_provider: ^2.1.1 diff --git a/isar/pubspec_overrides.yaml b/isar/pubspec_overrides.yaml new file mode 100644 index 0000000000..16e71d16f0 --- /dev/null +++ b/isar/pubspec_overrides.yaml @@ -0,0 +1,3 @@ +dependency_overrides: + sentry: + path: ../dart diff --git a/isar/test/mocks/mocks.dart b/isar/test/mocks/mocks.dart new file mode 100644 index 0000000000..55f59b6de3 --- /dev/null +++ b/isar/test/mocks/mocks.dart @@ -0,0 +1,10 @@ +import 'package:isar/isar.dart'; +import 'package:mockito/annotations.dart'; +import 'package:sentry/sentry.dart'; + +@GenerateMocks([ + Hub, + Isar, + IsarCollection, +]) +void main() {} diff --git a/isar/test/mocks/mocks.mocks.dart b/isar/test/mocks/mocks.mocks.dart new file mode 100644 index 0000000000..4f7adfed86 --- /dev/null +++ b/isar/test/mocks/mocks.mocks.dart @@ -0,0 +1,1340 @@ +// Mocks generated by Mockito 5.4.2 from annotations +// in sentry_isar/test/mocks/mocks.dart. +// Do not manually edit this file. + +// ignore_for_file: no_leading_underscores_for_library_prefixes, invalid_use_of_internal_member +import 'dart:async' as _i3; +import 'dart:typed_data' as _i7; + +import 'package:isar/isar.dart' as _i4; +import 'package:mockito/mockito.dart' as _i1; +import 'package:mockito/src/dummies.dart' as _i6; +import 'package:sentry/sentry.dart' as _i2; +import 'package:sentry/src/profiling.dart' as _i5; + +// ignore_for_file: type=lint +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: avoid_setters_without_getters +// ignore_for_file: comment_references +// ignore_for_file: implementation_imports +// ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: prefer_const_constructors +// ignore_for_file: unnecessary_parenthesis +// ignore_for_file: camel_case_types +// ignore_for_file: subtype_of_sealed_class + +class _FakeSentryOptions_0 extends _i1.SmartFake implements _i2.SentryOptions { + _FakeSentryOptions_0( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeSentryId_1 extends _i1.SmartFake implements _i2.SentryId { + _FakeSentryId_1( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeScope_2 extends _i1.SmartFake implements _i2.Scope { + _FakeScope_2( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeHub_3 extends _i1.SmartFake implements _i2.Hub { + _FakeHub_3( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeISentrySpan_4 extends _i1.SmartFake implements _i2.ISentrySpan { + _FakeISentrySpan_4( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeFuture_5 extends _i1.SmartFake implements _i3.Future { + _FakeFuture_5( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeIsarCollection_6 extends _i1.SmartFake + implements _i4.IsarCollection { + _FakeIsarCollection_6( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeIsar_7 extends _i1.SmartFake implements _i4.Isar { + _FakeIsar_7( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeCollectionSchema_8 extends _i1.SmartFake + implements _i4.CollectionSchema { + _FakeCollectionSchema_8( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeQueryBuilder_9 extends _i1.SmartFake + implements _i4.QueryBuilder { + _FakeQueryBuilder_9( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeQuery_10 extends _i1.SmartFake implements _i4.Query { + _FakeQuery_10( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +/// A class which mocks [Hub]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockHub extends _i1.Mock implements _i2.Hub { + MockHub() { + _i1.throwOnMissingStub(this); + } + + @override + _i2.SentryOptions get options => (super.noSuchMethod( + Invocation.getter(#options), + returnValue: _FakeSentryOptions_0( + this, + Invocation.getter(#options), + ), + ) as _i2.SentryOptions); + + @override + bool get isEnabled => (super.noSuchMethod( + Invocation.getter(#isEnabled), + returnValue: false, + ) as bool); + + @override + _i2.SentryId get lastEventId => (super.noSuchMethod( + Invocation.getter(#lastEventId), + returnValue: _FakeSentryId_1( + this, + Invocation.getter(#lastEventId), + ), + ) as _i2.SentryId); + + @override + _i2.Scope get scope => (super.noSuchMethod( + Invocation.getter(#scope), + returnValue: _FakeScope_2( + this, + Invocation.getter(#scope), + ), + ) as _i2.Scope); + + @override + set profilerFactory(_i5.SentryProfilerFactory? value) => super.noSuchMethod( + Invocation.setter( + #profilerFactory, + value, + ), + returnValueForMissingStub: null, + ); + + @override + _i3.Future<_i2.SentryId> captureEvent( + _i2.SentryEvent? event, { + dynamic stackTrace, + _i2.Hint? hint, + _i2.ScopeCallback? withScope, + }) => + (super.noSuchMethod( + Invocation.method( + #captureEvent, + [event], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + returnValue: _i3.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureEvent, + [event], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + )), + ) as _i3.Future<_i2.SentryId>); + + @override + _i3.Future<_i2.SentryId> captureException( + dynamic throwable, { + dynamic stackTrace, + _i2.Hint? hint, + _i2.ScopeCallback? withScope, + }) => + (super.noSuchMethod( + Invocation.method( + #captureException, + [throwable], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + returnValue: _i3.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureException, + [throwable], + { + #stackTrace: stackTrace, + #hint: hint, + #withScope: withScope, + }, + ), + )), + ) as _i3.Future<_i2.SentryId>); + + @override + _i3.Future<_i2.SentryId> captureMessage( + String? message, { + _i2.SentryLevel? level, + String? template, + List? params, + _i2.Hint? hint, + _i2.ScopeCallback? withScope, + }) => + (super.noSuchMethod( + Invocation.method( + #captureMessage, + [message], + { + #level: level, + #template: template, + #params: params, + #hint: hint, + #withScope: withScope, + }, + ), + returnValue: _i3.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureMessage, + [message], + { + #level: level, + #template: template, + #params: params, + #hint: hint, + #withScope: withScope, + }, + ), + )), + ) as _i3.Future<_i2.SentryId>); + + @override + _i3.Future captureUserFeedback(_i2.SentryUserFeedback? userFeedback) => + (super.noSuchMethod( + Invocation.method( + #captureUserFeedback, + [userFeedback], + ), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); + + @override + _i3.Future addBreadcrumb( + _i2.Breadcrumb? crumb, { + _i2.Hint? hint, + }) => + (super.noSuchMethod( + Invocation.method( + #addBreadcrumb, + [crumb], + {#hint: hint}, + ), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); + + @override + void bindClient(_i2.SentryClient? client) => super.noSuchMethod( + Invocation.method( + #bindClient, + [client], + ), + returnValueForMissingStub: null, + ); + + @override + _i2.Hub clone() => (super.noSuchMethod( + Invocation.method( + #clone, + [], + ), + returnValue: _FakeHub_3( + this, + Invocation.method( + #clone, + [], + ), + ), + ) as _i2.Hub); + + @override + _i3.Future close() => (super.noSuchMethod( + Invocation.method( + #close, + [], + ), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); + + @override + _i3.FutureOr configureScope(_i2.ScopeCallback? callback) => + (super.noSuchMethod(Invocation.method( + #configureScope, + [callback], + )) as _i3.FutureOr); + + @override + _i2.ISentrySpan startTransaction( + String? name, + String? operation, { + String? description, + DateTime? startTimestamp, + bool? bindToScope, + bool? waitForChildren, + Duration? autoFinishAfter, + bool? trimEnd, + _i2.OnTransactionFinish? onFinish, + Map? customSamplingContext, + }) => + (super.noSuchMethod( + Invocation.method( + #startTransaction, + [ + name, + operation, + ], + { + #description: description, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + #customSamplingContext: customSamplingContext, + }, + ), + returnValue: _FakeISentrySpan_4( + this, + Invocation.method( + #startTransaction, + [ + name, + operation, + ], + { + #description: description, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + #customSamplingContext: customSamplingContext, + }, + ), + ), + ) as _i2.ISentrySpan); + + @override + _i2.ISentrySpan startTransactionWithContext( + _i2.SentryTransactionContext? transactionContext, { + Map? customSamplingContext, + DateTime? startTimestamp, + bool? bindToScope, + bool? waitForChildren, + Duration? autoFinishAfter, + bool? trimEnd, + _i2.OnTransactionFinish? onFinish, + }) => + (super.noSuchMethod( + Invocation.method( + #startTransactionWithContext, + [transactionContext], + { + #customSamplingContext: customSamplingContext, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + }, + ), + returnValue: _FakeISentrySpan_4( + this, + Invocation.method( + #startTransactionWithContext, + [transactionContext], + { + #customSamplingContext: customSamplingContext, + #startTimestamp: startTimestamp, + #bindToScope: bindToScope, + #waitForChildren: waitForChildren, + #autoFinishAfter: autoFinishAfter, + #trimEnd: trimEnd, + #onFinish: onFinish, + }, + ), + ), + ) as _i2.ISentrySpan); + + @override + _i3.Future<_i2.SentryId> captureTransaction( + _i2.SentryTransaction? transaction, { + _i2.SentryTraceContextHeader? traceContext, + }) => + (super.noSuchMethod( + Invocation.method( + #captureTransaction, + [transaction], + {#traceContext: traceContext}, + ), + returnValue: _i3.Future<_i2.SentryId>.value(_FakeSentryId_1( + this, + Invocation.method( + #captureTransaction, + [transaction], + {#traceContext: traceContext}, + ), + )), + ) as _i3.Future<_i2.SentryId>); + + @override + void setSpanContext( + dynamic throwable, + _i2.ISentrySpan? span, + String? transaction, + ) => + super.noSuchMethod( + Invocation.method( + #setSpanContext, + [ + throwable, + span, + transaction, + ], + ), + returnValueForMissingStub: null, + ); +} + +/// A class which mocks [Isar]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockIsar extends _i1.Mock implements _i4.Isar { + MockIsar() { + _i1.throwOnMissingStub(this); + } + + @override + String get name => (super.noSuchMethod( + Invocation.getter(#name), + returnValue: '', + ) as String); + + @override + bool get isOpen => (super.noSuchMethod( + Invocation.getter(#isOpen), + returnValue: false, + ) as bool); + + @override + void requireOpen() => super.noSuchMethod( + Invocation.method( + #requireOpen, + [], + ), + returnValueForMissingStub: null, + ); + + @override + _i3.Future txn(_i3.Future Function()? callback) => + (super.noSuchMethod( + Invocation.method( + #txn, + [callback], + ), + returnValue: _i6.ifNotNull( + _i6.dummyValueOrNull( + this, + Invocation.method( + #txn, + [callback], + ), + ), + (T v) => _i3.Future.value(v), + ) ?? + _FakeFuture_5( + this, + Invocation.method( + #txn, + [callback], + ), + ), + ) as _i3.Future); + + @override + _i3.Future writeTxn( + _i3.Future Function()? callback, { + bool? silent = false, + }) => + (super.noSuchMethod( + Invocation.method( + #writeTxn, + [callback], + {#silent: silent}, + ), + returnValue: _i6.ifNotNull( + _i6.dummyValueOrNull( + this, + Invocation.method( + #writeTxn, + [callback], + {#silent: silent}, + ), + ), + (T v) => _i3.Future.value(v), + ) ?? + _FakeFuture_5( + this, + Invocation.method( + #writeTxn, + [callback], + {#silent: silent}, + ), + ), + ) as _i3.Future); + + @override + T txnSync(T Function()? callback) => (super.noSuchMethod( + Invocation.method( + #txnSync, + [callback], + ), + returnValue: _i6.dummyValue( + this, + Invocation.method( + #txnSync, + [callback], + ), + ), + ) as T); + + @override + T writeTxnSync( + T Function()? callback, { + bool? silent = false, + }) => + (super.noSuchMethod( + Invocation.method( + #writeTxnSync, + [callback], + {#silent: silent}, + ), + returnValue: _i6.dummyValue( + this, + Invocation.method( + #writeTxnSync, + [callback], + {#silent: silent}, + ), + ), + ) as T); + + @override + void attachCollections(Map>? collections) => + super.noSuchMethod( + Invocation.method( + #attachCollections, + [collections], + ), + returnValueForMissingStub: null, + ); + + @override + _i4.IsarCollection collection() => (super.noSuchMethod( + Invocation.method( + #collection, + [], + ), + returnValue: _FakeIsarCollection_6( + this, + Invocation.method( + #collection, + [], + ), + ), + ) as _i4.IsarCollection); + + @override + _i4.IsarCollection? getCollectionByNameInternal(String? name) => + (super.noSuchMethod(Invocation.method( + #getCollectionByNameInternal, + [name], + )) as _i4.IsarCollection?); + + @override + _i3.Future clear() => (super.noSuchMethod( + Invocation.method( + #clear, + [], + ), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); + + @override + void clearSync() => super.noSuchMethod( + Invocation.method( + #clearSync, + [], + ), + returnValueForMissingStub: null, + ); + + @override + _i3.Future getSize({ + bool? includeIndexes = false, + bool? includeLinks = false, + }) => + (super.noSuchMethod( + Invocation.method( + #getSize, + [], + { + #includeIndexes: includeIndexes, + #includeLinks: includeLinks, + }, + ), + returnValue: _i3.Future.value(0), + ) as _i3.Future); + + @override + int getSizeSync({ + bool? includeIndexes = false, + bool? includeLinks = false, + }) => + (super.noSuchMethod( + Invocation.method( + #getSizeSync, + [], + { + #includeIndexes: includeIndexes, + #includeLinks: includeLinks, + }, + ), + returnValue: 0, + ) as int); + + @override + _i3.Future copyToFile(String? targetPath) => (super.noSuchMethod( + Invocation.method( + #copyToFile, + [targetPath], + ), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); + + @override + _i3.Future close({bool? deleteFromDisk = false}) => (super.noSuchMethod( + Invocation.method( + #close, + [], + {#deleteFromDisk: deleteFromDisk}, + ), + returnValue: _i3.Future.value(false), + ) as _i3.Future); + + @override + _i3.Future verify() => (super.noSuchMethod( + Invocation.method( + #verify, + [], + ), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); +} + +/// A class which mocks [IsarCollection]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockIsarCollection extends _i1.Mock + implements _i4.IsarCollection { + MockIsarCollection() { + _i1.throwOnMissingStub(this); + } + + @override + _i4.Isar get isar => (super.noSuchMethod( + Invocation.getter(#isar), + returnValue: _FakeIsar_7( + this, + Invocation.getter(#isar), + ), + ) as _i4.Isar); + + @override + _i4.CollectionSchema get schema => (super.noSuchMethod( + Invocation.getter(#schema), + returnValue: _FakeCollectionSchema_8( + this, + Invocation.getter(#schema), + ), + ) as _i4.CollectionSchema); + + @override + String get name => (super.noSuchMethod( + Invocation.getter(#name), + returnValue: '', + ) as String); + + @override + _i3.Future get(int? id) => (super.noSuchMethod( + Invocation.method( + #get, + [id], + ), + returnValue: _i3.Future.value(), + ) as _i3.Future); + + @override + OBJ? getSync(int? id) => (super.noSuchMethod(Invocation.method( + #getSync, + [id], + )) as OBJ?); + + @override + _i3.Future> getAll(List? ids) => (super.noSuchMethod( + Invocation.method( + #getAll, + [ids], + ), + returnValue: _i3.Future>.value([]), + ) as _i3.Future>); + + @override + List getAllSync(List? ids) => (super.noSuchMethod( + Invocation.method( + #getAllSync, + [ids], + ), + returnValue: [], + ) as List); + + @override + _i3.Future getByIndex( + String? indexName, + List? key, + ) => + (super.noSuchMethod( + Invocation.method( + #getByIndex, + [ + indexName, + key, + ], + ), + returnValue: _i3.Future.value(), + ) as _i3.Future); + + @override + OBJ? getByIndexSync( + String? indexName, + List? key, + ) => + (super.noSuchMethod(Invocation.method( + #getByIndexSync, + [ + indexName, + key, + ], + )) as OBJ?); + + @override + _i3.Future> getAllByIndex( + String? indexName, + List>? keys, + ) => + (super.noSuchMethod( + Invocation.method( + #getAllByIndex, + [ + indexName, + keys, + ], + ), + returnValue: _i3.Future>.value([]), + ) as _i3.Future>); + + @override + List getAllByIndexSync( + String? indexName, + List>? keys, + ) => + (super.noSuchMethod( + Invocation.method( + #getAllByIndexSync, + [ + indexName, + keys, + ], + ), + returnValue: [], + ) as List); + + @override + _i3.Future put(OBJ? object) => (super.noSuchMethod( + Invocation.method( + #put, + [object], + ), + returnValue: _i3.Future.value(0), + ) as _i3.Future); + + @override + int putSync( + OBJ? object, { + bool? saveLinks = true, + }) => + (super.noSuchMethod( + Invocation.method( + #putSync, + [object], + {#saveLinks: saveLinks}, + ), + returnValue: 0, + ) as int); + + @override + _i3.Future> putAll(List? objects) => (super.noSuchMethod( + Invocation.method( + #putAll, + [objects], + ), + returnValue: _i3.Future>.value([]), + ) as _i3.Future>); + + @override + List putAllSync( + List? objects, { + bool? saveLinks = true, + }) => + (super.noSuchMethod( + Invocation.method( + #putAllSync, + [objects], + {#saveLinks: saveLinks}, + ), + returnValue: [], + ) as List); + + @override + _i3.Future putByIndex( + String? indexName, + OBJ? object, + ) => + (super.noSuchMethod( + Invocation.method( + #putByIndex, + [ + indexName, + object, + ], + ), + returnValue: _i3.Future.value(0), + ) as _i3.Future); + + @override + int putByIndexSync( + String? indexName, + OBJ? object, { + bool? saveLinks = true, + }) => + (super.noSuchMethod( + Invocation.method( + #putByIndexSync, + [ + indexName, + object, + ], + {#saveLinks: saveLinks}, + ), + returnValue: 0, + ) as int); + + @override + _i3.Future> putAllByIndex( + String? indexName, + List? objects, + ) => + (super.noSuchMethod( + Invocation.method( + #putAllByIndex, + [ + indexName, + objects, + ], + ), + returnValue: _i3.Future>.value([]), + ) as _i3.Future>); + + @override + List putAllByIndexSync( + String? indexName, + List? objects, { + bool? saveLinks = true, + }) => + (super.noSuchMethod( + Invocation.method( + #putAllByIndexSync, + [ + indexName, + objects, + ], + {#saveLinks: saveLinks}, + ), + returnValue: [], + ) as List); + + @override + _i3.Future delete(int? id) => (super.noSuchMethod( + Invocation.method( + #delete, + [id], + ), + returnValue: _i3.Future.value(false), + ) as _i3.Future); + + @override + bool deleteSync(int? id) => (super.noSuchMethod( + Invocation.method( + #deleteSync, + [id], + ), + returnValue: false, + ) as bool); + + @override + _i3.Future deleteAll(List? ids) => (super.noSuchMethod( + Invocation.method( + #deleteAll, + [ids], + ), + returnValue: _i3.Future.value(0), + ) as _i3.Future); + + @override + int deleteAllSync(List? ids) => (super.noSuchMethod( + Invocation.method( + #deleteAllSync, + [ids], + ), + returnValue: 0, + ) as int); + + @override + _i3.Future deleteByIndex( + String? indexName, + List? key, + ) => + (super.noSuchMethod( + Invocation.method( + #deleteByIndex, + [ + indexName, + key, + ], + ), + returnValue: _i3.Future.value(false), + ) as _i3.Future); + + @override + bool deleteByIndexSync( + String? indexName, + List? key, + ) => + (super.noSuchMethod( + Invocation.method( + #deleteByIndexSync, + [ + indexName, + key, + ], + ), + returnValue: false, + ) as bool); + + @override + _i3.Future deleteAllByIndex( + String? indexName, + List>? keys, + ) => + (super.noSuchMethod( + Invocation.method( + #deleteAllByIndex, + [ + indexName, + keys, + ], + ), + returnValue: _i3.Future.value(0), + ) as _i3.Future); + + @override + int deleteAllByIndexSync( + String? indexName, + List>? keys, + ) => + (super.noSuchMethod( + Invocation.method( + #deleteAllByIndexSync, + [ + indexName, + keys, + ], + ), + returnValue: 0, + ) as int); + + @override + _i3.Future clear() => (super.noSuchMethod( + Invocation.method( + #clear, + [], + ), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); + + @override + void clearSync() => super.noSuchMethod( + Invocation.method( + #clearSync, + [], + ), + returnValueForMissingStub: null, + ); + + @override + _i3.Future importJsonRaw(_i7.Uint8List? jsonBytes) => + (super.noSuchMethod( + Invocation.method( + #importJsonRaw, + [jsonBytes], + ), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); + + @override + void importJsonRawSync(_i7.Uint8List? jsonBytes) => super.noSuchMethod( + Invocation.method( + #importJsonRawSync, + [jsonBytes], + ), + returnValueForMissingStub: null, + ); + + @override + _i3.Future importJson(List>? json) => + (super.noSuchMethod( + Invocation.method( + #importJson, + [json], + ), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); + + @override + void importJsonSync(List>? json) => super.noSuchMethod( + Invocation.method( + #importJsonSync, + [json], + ), + returnValueForMissingStub: null, + ); + + @override + _i4.QueryBuilder where({ + bool? distinct = false, + _i4.Sort? sort = _i4.Sort.asc, + }) => + (super.noSuchMethod( + Invocation.method( + #where, + [], + { + #distinct: distinct, + #sort: sort, + }, + ), + returnValue: _FakeQueryBuilder_9( + this, + Invocation.method( + #where, + [], + { + #distinct: distinct, + #sort: sort, + }, + ), + ), + ) as _i4.QueryBuilder); + + @override + _i4.QueryBuilder filter() => + (super.noSuchMethod( + Invocation.method( + #filter, + [], + ), + returnValue: _FakeQueryBuilder_9( + this, + Invocation.method( + #filter, + [], + ), + ), + ) as _i4.QueryBuilder); + + @override + _i4.Query buildQuery({ + List<_i4.WhereClause>? whereClauses = const [], + bool? whereDistinct = false, + _i4.Sort? whereSort = _i4.Sort.asc, + _i4.FilterOperation? filter, + List<_i4.SortProperty>? sortBy = const [], + List<_i4.DistinctProperty>? distinctBy = const [], + int? offset, + int? limit, + String? property, + }) => + (super.noSuchMethod( + Invocation.method( + #buildQuery, + [], + { + #whereClauses: whereClauses, + #whereDistinct: whereDistinct, + #whereSort: whereSort, + #filter: filter, + #sortBy: sortBy, + #distinctBy: distinctBy, + #offset: offset, + #limit: limit, + #property: property, + }, + ), + returnValue: _FakeQuery_10( + this, + Invocation.method( + #buildQuery, + [], + { + #whereClauses: whereClauses, + #whereDistinct: whereDistinct, + #whereSort: whereSort, + #filter: filter, + #sortBy: sortBy, + #distinctBy: distinctBy, + #offset: offset, + #limit: limit, + #property: property, + }, + ), + ), + ) as _i4.Query); + + @override + _i3.Future count() => (super.noSuchMethod( + Invocation.method( + #count, + [], + ), + returnValue: _i3.Future.value(0), + ) as _i3.Future); + + @override + int countSync() => (super.noSuchMethod( + Invocation.method( + #countSync, + [], + ), + returnValue: 0, + ) as int); + + @override + _i3.Future getSize({ + bool? includeIndexes = false, + bool? includeLinks = false, + }) => + (super.noSuchMethod( + Invocation.method( + #getSize, + [], + { + #includeIndexes: includeIndexes, + #includeLinks: includeLinks, + }, + ), + returnValue: _i3.Future.value(0), + ) as _i3.Future); + + @override + int getSizeSync({ + bool? includeIndexes = false, + bool? includeLinks = false, + }) => + (super.noSuchMethod( + Invocation.method( + #getSizeSync, + [], + { + #includeIndexes: includeIndexes, + #includeLinks: includeLinks, + }, + ), + returnValue: 0, + ) as int); + + @override + _i3.Stream watchLazy({bool? fireImmediately = false}) => + (super.noSuchMethod( + Invocation.method( + #watchLazy, + [], + {#fireImmediately: fireImmediately}, + ), + returnValue: _i3.Stream.empty(), + ) as _i3.Stream); + + @override + _i3.Stream watchObject( + int? id, { + bool? fireImmediately = false, + }) => + (super.noSuchMethod( + Invocation.method( + #watchObject, + [id], + {#fireImmediately: fireImmediately}, + ), + returnValue: _i3.Stream.empty(), + ) as _i3.Stream); + + @override + _i3.Stream watchObjectLazy( + int? id, { + bool? fireImmediately = false, + }) => + (super.noSuchMethod( + Invocation.method( + #watchObjectLazy, + [id], + {#fireImmediately: fireImmediately}, + ), + returnValue: _i3.Stream.empty(), + ) as _i3.Stream); + + @override + _i3.Future verify(List? objects) => (super.noSuchMethod( + Invocation.method( + #verify, + [objects], + ), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); + + @override + _i3.Future verifyLink( + String? linkName, + List? sourceIds, + List? targetIds, + ) => + (super.noSuchMethod( + Invocation.method( + #verifyLink, + [ + linkName, + sourceIds, + targetIds, + ], + ), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); +} diff --git a/isar/test/person.dart b/isar/test/person.dart new file mode 100644 index 0000000000..385ae69e04 --- /dev/null +++ b/isar/test/person.dart @@ -0,0 +1,11 @@ +import 'package:isar/isar.dart'; + +part 'person.g.dart'; + +@collection +class Person { + Id id = Isar.autoIncrement; + + @Index() + String? name; +} diff --git a/isar/test/person.g.dart b/isar/test/person.g.dart new file mode 100644 index 0000000000..cbd85e6fe5 --- /dev/null +++ b/isar/test/person.g.dart @@ -0,0 +1,518 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'person.dart'; + +// ************************************************************************** +// IsarCollectionGenerator +// ************************************************************************** + +// coverage:ignore-file +// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types + +extension GetPersonCollection on Isar { + IsarCollection get persons => this.collection(); +} + +const PersonSchema = CollectionSchema( + name: r'Person', + id: 7854610480646705599, + properties: { + r'name': PropertySchema( + id: 0, + name: r'name', + type: IsarType.string, + ) + }, + estimateSize: _personEstimateSize, + serialize: _personSerialize, + deserialize: _personDeserialize, + deserializeProp: _personDeserializeProp, + idName: r'id', + indexes: { + r'name': IndexSchema( + id: 879695947855722453, + name: r'name', + unique: false, + replace: false, + properties: [ + IndexPropertySchema( + name: r'name', + type: IndexType.hash, + caseSensitive: true, + ) + ], + ) + }, + links: {}, + embeddedSchemas: {}, + getId: _personGetId, + getLinks: _personGetLinks, + attach: _personAttach, + version: '3.1.0+1', +); + +int _personEstimateSize( + Person object, + List offsets, + Map> allOffsets, +) { + var bytesCount = offsets.last; + { + final value = object.name; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } + return bytesCount; +} + +void _personSerialize( + Person object, + IsarWriter writer, + List offsets, + Map> allOffsets, +) { + writer.writeString(offsets[0], object.name); +} + +Person _personDeserialize( + Id id, + IsarReader reader, + List offsets, + Map> allOffsets, +) { + final object = Person(); + object.id = id; + object.name = reader.readStringOrNull(offsets[0]); + return object; +} + +P _personDeserializeProp

( + IsarReader reader, + int propertyId, + int offset, + Map> allOffsets, +) { + switch (propertyId) { + case 0: + return (reader.readStringOrNull(offset)) as P; + default: + throw IsarError('Unknown property with id $propertyId'); + } +} + +Id _personGetId(Person object) { + return object.id; +} + +List> _personGetLinks(Person object) { + return []; +} + +void _personAttach(IsarCollection col, Id id, Person object) { + object.id = id; +} + +extension PersonQueryWhereSort on QueryBuilder { + QueryBuilder anyId() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(const IdWhereClause.any()); + }); + } +} + +extension PersonQueryWhere on QueryBuilder { + QueryBuilder idEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: id, + upper: id, + )); + }); + } + + QueryBuilder idNotEqualTo(Id id) { + return QueryBuilder.apply(this, (query) { + if (query.whereSort == Sort.asc) { + return query + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ) + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ); + } else { + return query + .addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: false), + ) + .addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: false), + ); + } + }); + } + + QueryBuilder idGreaterThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.greaterThan(lower: id, includeLower: include), + ); + }); + } + + QueryBuilder idLessThan(Id id, + {bool include = false}) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause( + IdWhereClause.lessThan(upper: id, includeUpper: include), + ); + }); + } + + QueryBuilder idBetween( + Id lowerId, + Id upperId, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IdWhereClause.between( + lower: lowerId, + includeLower: includeLower, + upper: upperId, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder nameIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IndexWhereClause.equalTo( + indexName: r'name', + value: [null], + )); + }); + } + + QueryBuilder nameIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IndexWhereClause.between( + indexName: r'name', + lower: [null], + includeLower: false, + upper: [], + )); + }); + } + + QueryBuilder nameEqualTo(String? name) { + return QueryBuilder.apply(this, (query) { + return query.addWhereClause(IndexWhereClause.equalTo( + indexName: r'name', + value: [name], + )); + }); + } + + QueryBuilder nameNotEqualTo(String? name) { + return QueryBuilder.apply(this, (query) { + if (query.whereSort == Sort.asc) { + return query + .addWhereClause(IndexWhereClause.between( + indexName: r'name', + lower: [], + upper: [name], + includeUpper: false, + )) + .addWhereClause(IndexWhereClause.between( + indexName: r'name', + lower: [name], + includeLower: false, + upper: [], + )); + } else { + return query + .addWhereClause(IndexWhereClause.between( + indexName: r'name', + lower: [name], + includeLower: false, + upper: [], + )) + .addWhereClause(IndexWhereClause.between( + indexName: r'name', + lower: [], + upper: [name], + includeUpper: false, + )); + } + }); + } +} + +extension PersonQueryFilter on QueryBuilder { + QueryBuilder idEqualTo(Id value) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idGreaterThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idLessThan( + Id value, { + bool include = false, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'id', + value: value, + )); + }); + } + + QueryBuilder idBetween( + Id lower, + Id upper, { + bool includeLower = true, + bool includeUpper = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'id', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + )); + }); + } + + QueryBuilder nameIsNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNull( + property: r'name', + )); + }); + } + + QueryBuilder nameIsNotNull() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(const FilterCondition.isNotNull( + property: r'name', + )); + }); + } + + QueryBuilder nameEqualTo( + String? value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameGreaterThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameLessThan( + String? value, { + bool include = false, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.lessThan( + include: include, + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameBetween( + String? lower, + String? upper, { + bool includeLower = true, + bool includeUpper = true, + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.between( + property: r'name', + lower: lower, + includeLower: includeLower, + upper: upper, + includeUpper: includeUpper, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameStartsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.startsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameEndsWith( + String value, { + bool caseSensitive = true, + }) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.endsWith( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameContains(String value, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.contains( + property: r'name', + value: value, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameMatches( + String pattern, + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.matches( + property: r'name', + wildcard: pattern, + caseSensitive: caseSensitive, + )); + }); + } + + QueryBuilder nameIsEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.equalTo( + property: r'name', + value: '', + )); + }); + } + + QueryBuilder nameIsNotEmpty() { + return QueryBuilder.apply(this, (query) { + return query.addFilterCondition(FilterCondition.greaterThan( + property: r'name', + value: '', + )); + }); + } +} + +extension PersonQueryObject on QueryBuilder {} + +extension PersonQueryLinks on QueryBuilder {} + +extension PersonQuerySortBy on QueryBuilder { + QueryBuilder sortByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder sortByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } +} + +extension PersonQuerySortThenBy on QueryBuilder { + QueryBuilder thenById() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.asc); + }); + } + + QueryBuilder thenByIdDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'id', Sort.desc); + }); + } + + QueryBuilder thenByName() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.asc); + }); + } + + QueryBuilder thenByNameDesc() { + return QueryBuilder.apply(this, (query) { + return query.addSortBy(r'name', Sort.desc); + }); + } +} + +extension PersonQueryWhereDistinct on QueryBuilder { + QueryBuilder distinctByName( + {bool caseSensitive = true}) { + return QueryBuilder.apply(this, (query) { + return query.addDistinctBy(r'name', caseSensitive: caseSensitive); + }); + } +} + +extension PersonQueryProperty on QueryBuilder { + QueryBuilder idProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'id'); + }); + } + + QueryBuilder nameProperty() { + return QueryBuilder.apply(this, (query) { + return query.addPropertyName(r'name'); + }); + } +} diff --git a/isar/test/sentry_isar_collection_test.dart b/isar/test/sentry_isar_collection_test.dart new file mode 100644 index 0000000000..c3286a2971 --- /dev/null +++ b/isar/test/sentry_isar_collection_test.dart @@ -0,0 +1,476 @@ +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:isar/isar.dart'; +import 'package:mockito/mockito.dart'; +import 'package:sentry/sentry.dart'; +import 'package:sentry_isar/sentry_isar.dart'; +import 'package:sentry_isar/src/sentry_isar.dart'; + +import 'package:sentry/src/sentry_tracer.dart'; + +import 'mocks/mocks.mocks.dart'; +import 'person.dart'; + +void main() { + void verifySpan( + String description, + SentrySpan? span, + ) { + expect(span?.context.operation, SentryIsar.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.ok()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbIsarCollection); + expect(span?.data[SentryIsar.dbNameKey], Fixture.dbName); + expect(span?.data[SentryIsar.dbCollectionKey], 'Person'); + } + + void verifyErrorSpan(String description, SentrySpan? span, Exception error) { + expect(span?.context.operation, SentryIsar.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.internalError()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbIsarCollection); + expect(span?.throwable, error); + } + + group('add spans', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + + await fixture.setUp(); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('clear adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().clear(); + }); + final span = fixture.getCreatedSpan(); + verifySpan('clear', span); + }); + + test('count adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().count(); + }); + final span = fixture.getCreatedSpan(); + verifySpan('count', span); + }); + + test('delete adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().delete(0); + }); + final span = fixture.getCreatedSpan(); + verifySpan('delete', span); + }); + + test('deleteAll adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().deleteAll([0]); + }); + final span = fixture.getCreatedSpan(); + verifySpan('deleteAll', span); + }); + + test('deleteAllByIndex adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().putByIndex('name', Person()..name = 'Joe'); + await fixture.getSut().deleteAllByIndex('name', []); + }); + final span = fixture.getCreatedSpan(); + verifySpan('deleteAllByIndex', span); + }); + + test('deleteByIndex adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().putByIndex('name', Person()..name = 'Joe'); + await fixture.getSut().deleteByIndex('name', []); + }); + final span = fixture.getCreatedSpan(); + verifySpan('deleteByIndex', span); + }); + + test('get adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().get(1); + }); + final span = fixture.getCreatedSpan(); + verifySpan('get', span); + }); + + test('getAll adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().getAll([1]); + }); + final span = fixture.getCreatedSpan(); + verifySpan('getAll', span); + }); + + test('getAllByIndex adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().getAllByIndex('name', []); + }); + final span = fixture.getCreatedSpan(); + verifySpan('getAllByIndex', span); + }); + + test('getByIndex adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().getByIndex('name', []); + }); + final span = fixture.getCreatedSpan(); + verifySpan('getByIndex', span); + }); + + test('getSize adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().getSize(); + }); + final span = fixture.getCreatedSpan(); + verifySpan('getSize', span); + }); + + test('importJson adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().importJson([]); + }); + final span = fixture.getCreatedSpan(); + verifySpan('importJson', span); + }); + + test('importJsonRaw adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + final query = fixture.getSut().buildQuery(); + Uint8List jsonRaw = Uint8List.fromList([]); + await query.exportJsonRaw((raw) { + jsonRaw = Uint8List.fromList(raw); + }); + await fixture.getSut().importJsonRaw(jsonRaw); + }); + final span = fixture.getCreatedSpan(); + verifySpan('importJsonRaw', span); + }); + + test('put adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().put(Person()); + }); + final span = fixture.getCreatedSpan(); + verifySpan('put', span); + }); + + test('putAll adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().putAll([Person()]); + }); + final span = fixture.getCreatedSpan(); + verifySpan('putAll', span); + }); + + test('putAllByIndex adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().putAllByIndex('name', [Person()]); + }); + final span = fixture.getCreatedSpan(); + verifySpan('putAllByIndex', span); + }); + + test('putByIndex adds span', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().putByIndex('name', Person()); + }); + final span = fixture.getCreatedSpan(); + verifySpan('putByIndex', span); + }); + }); + + group('add error spans', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.isarCollection.name).thenReturn(Fixture.dbCollection); + + await fixture.setUp(); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('throwing clear adds error span', () async { + when(fixture.isarCollection.clear()).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).clear(); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('clear', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing count adds error span', () async { + when(fixture.isarCollection.count()).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).count(); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('count', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing delete adds error span', () async { + when(fixture.isarCollection.delete(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).delete(0); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('delete', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing deleteAll adds error span', () async { + when(fixture.isarCollection.deleteAll(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).deleteAll([0]); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('deleteAll', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing deleteAllByIndex adds error span', () async { + when(fixture.isarCollection.deleteAllByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).deleteAllByIndex('name', []); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan( + 'deleteAllByIndex', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + + test('throwing deleteByIndex adds error span', () async { + when(fixture.isarCollection.deleteByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).deleteByIndex('name', []); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan( + 'deleteByIndex', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + + test('throwing get adds error span', () async { + when(fixture.isarCollection.get(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).get(1); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('get', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing getAll adds error span', () async { + when(fixture.isarCollection.getAll(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).getAll([1]); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('getAll', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing getAllByIndex adds error span', () async { + when(fixture.isarCollection.getAllByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).getAllByIndex('name', []); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan( + 'getAllByIndex', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + + test('throwing getByIndex adds error span', () async { + when(fixture.isarCollection.getByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).getByIndex('name', []); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan( + 'getByIndex', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + + test('throwing getSize adds error span', () async { + when(fixture.isarCollection.getSize()).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).getSize(); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('getSize', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing importJson adds error span', () async { + when(fixture.isarCollection.importJson(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).importJson([]); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan( + 'importJson', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + + test('throwing importJsonRaw adds error span', () async { + when(fixture.isarCollection.importJsonRaw(any)) + .thenThrow(fixture.exception); + try { + await fixture + .getSut(injectMock: true) + .importJsonRaw(Uint8List.fromList([])); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan( + 'importJsonRaw', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + + test('throwing put adds error span', () async { + when(fixture.isarCollection.put(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).put(Person()); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('put', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing putAll adds error span', () async { + when(fixture.isarCollection.putAll(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).putAll([Person()]); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('putAll', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing putAllByIndex adds error span', () async { + when(fixture.isarCollection.putAllByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture + .getSut(injectMock: true) + .putAllByIndex('name', [Person()]); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan( + 'putAllByIndex', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + + test('throwing putByIndex adds error span', () async { + when(fixture.isarCollection.putByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).putByIndex('name', Person()); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan( + 'putByIndex', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + }); +} + +class Fixture { + final options = SentryOptions(); + final hub = MockHub(); + final isarCollection = MockIsarCollection(); + + static final dbName = 'people-isar'; + static final dbCollection = 'Person'; + final exception = Exception('fixture-exception'); + + final _context = SentryTransactionContext('name', 'operation'); + late final tracer = SentryTracer(_context, hub); + late Isar sentryIsar; + + Future setUp() async { + // Make sure to use flutter test -j 1 to avoid tests running in parallel. This would break the automatic download. + await Isar.initializeIsarCore(download: true); + sentryIsar = await SentryIsar.open( + [PersonSchema], + directory: Directory.systemTemp.path, + name: dbName, + hub: hub, + ); + } + + Future tearDown() async { + try { + // ignore: invalid_use_of_protected_member + sentryIsar.requireOpen(); + await sentryIsar.close(); + } catch (_) { + // Don't close multiple times + } + } + + IsarCollection getSut({bool injectMock = false}) { + if (injectMock) { + return SentryIsarCollection(isarCollection, hub, sentryIsar.name); + } else { + return sentryIsar.collection(); + } + } + + SentrySpan? getCreatedSpan() { + return tracer.children.last; + } +} diff --git a/isar/test/sentry_isar_test.dart b/isar/test/sentry_isar_test.dart new file mode 100644 index 0000000000..70cc23c832 --- /dev/null +++ b/isar/test/sentry_isar_test.dart @@ -0,0 +1,277 @@ +@TestOn('vm') + +import 'dart:io'; + +import 'package:flutter_test/flutter_test.dart'; +import 'package:isar/isar.dart'; +import 'package:mockito/mockito.dart'; +import 'package:sentry/sentry.dart'; +import 'package:sentry_isar/src/sentry_isar.dart'; + +import 'package:sentry/src/sentry_tracer.dart'; +import 'package:sentry_isar/src/version.dart'; + +import 'mocks/mocks.mocks.dart'; +import 'person.dart'; + +void main() { + void verifySpan( + String description, + SentrySpan? span, { + bool checkName = false, + }) { + expect(span?.context.operation, SentryIsar.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.ok()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbIsar); + if (checkName) { + expect(span?.data[SentryIsar.dbNameKey], Fixture.dbName); + } + } + + void verifyErrorSpan(String description, SentrySpan? span, Exception error) { + expect(span?.context.operation, SentryIsar.dbOp); + expect(span?.context.description, description); + expect(span?.status, SpanStatus.internalError()); + // ignore: invalid_use_of_internal_member + expect(span?.origin, SentryTraceOrigins.autoDbIsar); + expect(span?.throwable, error); + } + + group('add spans', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + + await fixture.setUp(); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('open adds span', () async { + final span = fixture.getCreatedSpan(); + verifySpan('open', span, checkName: true); + }); + + test('clear adds span', () async { + await fixture.sut.writeTxn(() async { + await fixture.sut.clear(); + }); + final span = fixture.getCreatedSpan(); + verifySpan('clear', span, checkName: true); + }); + + test('close adds span', () async { + await fixture.sut.close(); + final span = fixture.getCreatedSpan(); + verifySpan('close', span, checkName: true); + }); + + test('copyToFile adds span', () async { + await fixture.sut.copyToFile(fixture.copyPath); + final span = fixture.getCreatedSpan(); + verifySpan('copyToFile', span, checkName: true); + }); + + test('getSize adds span', () async { + await fixture.sut.getSize(); + final span = fixture.getCreatedSpan(); + verifySpan('getSize', span, checkName: true); + }); + + test('txn adds span', () async { + await fixture.sut.txn(() async {}); + final span = fixture.getCreatedSpan(); + verifySpan('txn', span, checkName: true); + }); + + test('writeTxn adds span', () async { + await fixture.sut.writeTxn(() async {}); + final span = fixture.getCreatedSpan(); + verifySpan('writeTxn', span, checkName: true); + }); + }); + + group('add error spans', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.isar.close()).thenAnswer((_) async { + return true; + }); + when(fixture.isar.name).thenReturn(Fixture.dbName); + + await fixture.setUp(injectMock: true); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('throwing close adds error span', () async { + when(fixture.isar.close()).thenThrow(fixture.exception); + try { + await fixture.sut.close(); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('close', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing clear adds error span', () async { + when(fixture.isar.clear()).thenThrow(fixture.exception); + try { + await fixture.sut.clear(); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('clear', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing copyToFile adds error span', () async { + when(fixture.isar.copyToFile(any)).thenThrow(fixture.exception); + try { + await fixture.sut.copyToFile(fixture.copyPath); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan( + 'copyToFile', + fixture.getCreatedSpan(), + fixture.exception, + ); + }); + + test('throwing getSize adds error span', () async { + when(fixture.isar.getSize()).thenThrow(fixture.exception); + try { + await fixture.sut.getSize(); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('getSize', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing txn adds error span', () async { + param() async {} + when(fixture.isar.txn(param)).thenThrow(fixture.exception); + try { + await fixture.sut.txn(param); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('txn', fixture.getCreatedSpan(), fixture.exception); + }); + + test('throwing writeTxn adds error span', () async { + param() async {} + when(fixture.isar.writeTxn(param)).thenThrow(fixture.exception); + try { + await fixture.sut.writeTxn(param); + } catch (error) { + expect(error, fixture.exception); + } + verifyErrorSpan('writeTxn', fixture.getCreatedSpan(), fixture.exception); + }); + }); + + group('integrations', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + + await fixture.setUp(); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('adds integration', () { + expect( + fixture.options.sdk.integrations.contains('SentryIsarTracing'), + true, + ); + }); + + test('adds package', () { + expect( + fixture.options.sdk.packages.any( + (element) => + element.name == packageName && element.version == sdkVersion, + ), + true, + ); + }); + }); +} + +class Fixture { + final options = SentryOptions(); + final hub = MockHub(); + final isar = MockIsar(); + + static final dbName = 'people-isar'; + final exception = Exception('fixture-exception'); + final copyPath = '${Directory.systemTemp.path}/copy'; + + final _context = SentryTransactionContext('name', 'operation'); + late final tracer = SentryTracer(_context, hub); + late Isar sut; + + Future setUp({bool injectMock = false}) async { + if (injectMock) { + sut = SentryIsar(isar, hub); + } else { + // Make sure to use flutter test -j 1 to avoid tests running in parallel. This would break the automatic download. + await Isar.initializeIsarCore(download: true); + sut = await SentryIsar.open( + [PersonSchema], + directory: Directory.systemTemp.path, + name: dbName, + hub: hub, + ); + } + await deleteCopyPath(); + } + + Future tearDown() async { + try { + // ignore: invalid_use_of_protected_member + sut.requireOpen(); + await sut.close(); + } catch (_) { + // Don't close multiple times + } + } + + Isar getSut() { + return sut; + } + + SentrySpan? getCreatedSpan() { + return tracer.children.last; + } + + Future deleteCopyPath() async { + final file = File(copyPath); + if (await file.exists()) { + await file.delete(recursive: true); + } + } +} diff --git a/scripts/bump-version.sh b/scripts/bump-version.sh index d3e8fae081..dedd3e1b66 100755 --- a/scripts/bump-version.sh +++ b/scripts/bump-version.sh @@ -10,7 +10,7 @@ NEW_VERSION="${2}" echo "Current version: ${OLD_VERSION}" echo "Bumping version: ${NEW_VERSION}" -for pkg in {dart,flutter,logging,dio,file,sqflite,drift,hive}; do +for pkg in {dart,flutter,logging,dio,file,sqflite,drift,hive,isar}; do # Bump version in pubspec.yaml perl -pi -e "s/^version: .*/version: $NEW_VERSION/" $pkg/pubspec.yaml # Bump sentry dependency version in pubspec.yaml From 3ad66e4789a5212fa687083e41baaaecb74bac9c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 12:18:23 +0100 Subject: [PATCH 109/166] Bump flutter_lints from 2.0.3 to 3.0.0 in /flutter (#1698) * Bump flutter_lints from 2.0.3 to 3.0.0 in /flutter Bumps [flutter_lints](https://github.com/flutter/packages/tree/main/packages) from 2.0.3 to 3.0.0. - [Release notes](https://github.com/flutter/packages/releases) - [Commits](https://github.com/flutter/packages/commits/pigeon-v3.0.0/packages) --- updated-dependencies: - dependency-name: flutter_lints dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Satisfy analyzer * Satisfy dart analyzer --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- flutter/lib/sentry_flutter.dart | 4 +++- flutter/lib/src/flutter_sentry_attachment.dart | 6 ++---- flutter/lib/src/navigation/sentry_navigator_observer.dart | 6 ++---- flutter/lib/src/screenshot/sentry_screenshot_widget.dart | 3 +-- flutter/lib/src/sentry_flutter_options.dart | 3 +-- .../user_interaction/sentry_user_interaction_widget.dart | 4 ++-- flutter/pubspec.yaml | 2 +- .../sentry_user_interaction_widget_test.dart | 6 +++--- flutter/test/view_hierarchy/sentry_tree_walker_test.dart | 2 +- .../view_hierarchy/view_hierarchy_event_processor_test.dart | 2 +- 10 files changed, 17 insertions(+), 21 deletions(-) diff --git a/flutter/lib/sentry_flutter.dart b/flutter/lib/sentry_flutter.dart index c30ca1f5ad..6760e99efb 100644 --- a/flutter/lib/sentry_flutter.dart +++ b/flutter/lib/sentry_flutter.dart @@ -1,5 +1,7 @@ -// ignore: invalid_export_of_internal_element /// A Flutter client for Sentry.io crash reporting. +library sentry_flutter; + +// ignore: invalid_export_of_internal_element export 'package:sentry/sentry.dart'; export 'src/integrations/load_release_integration.dart'; diff --git a/flutter/lib/src/flutter_sentry_attachment.dart b/flutter/lib/src/flutter_sentry_attachment.dart index 83b75c20bd..2e8d57927a 100644 --- a/flutter/lib/src/flutter_sentry_attachment.dart +++ b/flutter/lib/src/flutter_sentry_attachment.dart @@ -16,8 +16,8 @@ class FlutterSentryAttachment extends SentryAttachment { String? filename, AssetBundle? bundle, String? type, - String? contentType, - bool? addToTransactions, + super.contentType, + super.addToTransactions, }) : super.fromLoader( loader: () async { final data = await (bundle ?? rootBundle).load(key); @@ -28,7 +28,5 @@ class FlutterSentryAttachment extends SentryAttachment { ? Uri.parse(key).pathSegments.last : 'unknown'), attachmentType: type, - contentType: contentType, - addToTransactions: addToTransactions, ); } diff --git a/flutter/lib/src/navigation/sentry_navigator_observer.dart b/flutter/lib/src/navigation/sentry_navigator_observer.dart index bfe1c0c6a2..6893d47aca 100644 --- a/flutter/lib/src/navigation/sentry_navigator_observer.dart +++ b/flutter/lib/src/navigation/sentry_navigator_observer.dart @@ -283,14 +283,12 @@ class RouteObserverBreadcrumb extends Breadcrumb { dynamic fromArgs, String? to, dynamic toArgs, - SentryLevel? level, - DateTime? timestamp, + super.level, + super.timestamp, Map? data, }) : super( category: _navigationKey, type: _navigationKey, - level: level, - timestamp: timestamp, data: { 'state': navigationType, if (from != null) 'from': from, diff --git a/flutter/lib/src/screenshot/sentry_screenshot_widget.dart b/flutter/lib/src/screenshot/sentry_screenshot_widget.dart index b11b511bb3..b7273b8979 100644 --- a/flutter/lib/src/screenshot/sentry_screenshot_widget.dart +++ b/flutter/lib/src/screenshot/sentry_screenshot_widget.dart @@ -22,8 +22,7 @@ final sentryScreenshotWidgetGlobalKey = /// - You can only have one [SentryScreenshotWidget] widget in your widget tree at all /// times. class SentryScreenshotWidget extends StatefulWidget { - const SentryScreenshotWidget({Key? key, required this.child}) - : super(key: key); + const SentryScreenshotWidget({super.key, required this.child}); final Widget child; diff --git a/flutter/lib/src/sentry_flutter_options.dart b/flutter/lib/src/sentry_flutter_options.dart index 1a71a0d37e..3806397465 100644 --- a/flutter/lib/src/sentry_flutter_options.dart +++ b/flutter/lib/src/sentry_flutter_options.dart @@ -10,8 +10,7 @@ import 'screenshot/sentry_screenshot_quality.dart'; /// Note that some of these options require native Sentry integration, which is /// not available on all platforms. class SentryFlutterOptions extends SentryOptions { - SentryFlutterOptions({String? dsn, PlatformChecker? checker}) - : super(dsn: dsn, checker: checker) { + SentryFlutterOptions({super.dsn, super.checker}) { enableBreadcrumbTrackingForCurrentPlatform(); } diff --git a/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart b/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart index f98a919065..94d364899e 100644 --- a/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart +++ b/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart @@ -234,10 +234,10 @@ Element? _clickTrackerElement; /// [SentryUserInteractionWidget] as a child of [SentryScreenshotWidget]. class SentryUserInteractionWidget extends StatefulWidget { SentryUserInteractionWidget({ - Key? key, + super.key, required this.child, @internal Hub? hub, - }) : super(key: key) { + }) { _hub = hub ?? HubAdapter(); if (_options?.enableUserInteractionTracing ?? false) { diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 0e321ab82f..d06f95e31e 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -26,7 +26,7 @@ dev_dependencies: sdk: flutter mockito: ^5.1.0 yaml: ^3.1.0 # needed for version match (code and pubspec) - flutter_lints: ^2.0.0 + flutter_lints: ^3.0.0 collection: ^1.16.0 remove_from_coverage: ^2.0.0 flutter_localizations: diff --git a/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart b/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart index 02d1022157..a814bd0b54 100644 --- a/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart +++ b/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart @@ -327,7 +327,7 @@ class Fixture { } class MyApp extends StatelessWidget { - const MyApp({Key? key}) : super(key: key); + const MyApp({super.key}); @override Widget build(BuildContext context) { @@ -340,7 +340,7 @@ class MyApp extends StatelessWidget { } class Page1 extends StatelessWidget { - const Page1({Key? key}) : super(key: key); + const Page1({super.key}); @override Widget build(BuildContext context) { @@ -416,7 +416,7 @@ class Page1 extends StatelessWidget { } class Page2 extends StatelessWidget { - const Page2({Key? key}) : super(key: key); + const Page2({super.key}); @override Widget build(BuildContext context) { diff --git a/flutter/test/view_hierarchy/sentry_tree_walker_test.dart b/flutter/test/view_hierarchy/sentry_tree_walker_test.dart index c2048c3492..52d775529b 100644 --- a/flutter/test/view_hierarchy/sentry_tree_walker_test.dart +++ b/flutter/test/view_hierarchy/sentry_tree_walker_test.dart @@ -172,7 +172,7 @@ bool _findWidget( } class MyApp extends StatelessWidget { - const MyApp({Key? key}) : super(key: key); + const MyApp({super.key}); @override Widget build(BuildContext context) { diff --git a/flutter/test/view_hierarchy/view_hierarchy_event_processor_test.dart b/flutter/test/view_hierarchy/view_hierarchy_event_processor_test.dart index 537b2cd9c4..6900ba5589 100644 --- a/flutter/test/view_hierarchy/view_hierarchy_event_processor_test.dart +++ b/flutter/test/view_hierarchy/view_hierarchy_event_processor_test.dart @@ -107,7 +107,7 @@ class Fixture { } class MyApp extends StatelessWidget { - const MyApp({Key? key}) : super(key: key); + const MyApp({super.key}); @override Widget build(BuildContext context) { From 011829598b3e6eaa26f901a3fedccfd0de06cb87 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 13:08:41 +0100 Subject: [PATCH 110/166] chore: update metrics/flutter.properties to 3.16.5 (#1793) Co-authored-by: GitHub --- metrics/flutter.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/flutter.properties b/metrics/flutter.properties index a0e5a0f324..8ec4606076 100644 --- a/metrics/flutter.properties +++ b/metrics/flutter.properties @@ -1,2 +1,2 @@ -version = 3.16.2 +version = 3.16.5 repo = https://github.com/flutter/flutter From bc2976867b4472f1f1135d60b70bcca7d4d4eb39 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 13:37:12 +0100 Subject: [PATCH 111/166] Bump lints from 2.1.1 to 3.0.0 in /dart (#1695) * Bump lints from 2.1.1 to 3.0.0 in /dart Bumps [lints](https://github.com/dart-lang/lints) from 2.1.1 to 3.0.0. - [Release notes](https://github.com/dart-lang/lints/releases) - [Changelog](https://github.com/dart-lang/lints/blob/main/CHANGELOG.md) - [Commits](https://github.com/dart-lang/lints/compare/v2.1.1...v3.0.0) --- updated-dependencies: - dependency-name: lints dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * update --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: GIancarlo Buenaflor --- dart/lib/sentry.dart | 2 ++ dart/lib/src/protocol/sentry_transaction.dart | 35 +++++++------------ .../io_sentry_attachment.dart | 6 ++-- dart/lib/src/sentry_transaction_context.dart | 15 +++----- dart/lib/src/utils/sample_rate_format.dart | 1 + dart/pubspec.yaml | 2 +- 6 files changed, 23 insertions(+), 38 deletions(-) diff --git a/dart/lib/sentry.dart b/dart/lib/sentry.dart index 9d06bb7e2a..987e1f014a 100644 --- a/dart/lib/sentry.dart +++ b/dart/lib/sentry.dart @@ -3,6 +3,8 @@ // found in the LICENSE file. /// A pure Dart client for Sentry.io crash reporting. +library sentry_dart; + export 'src/run_zoned_guarded_integration.dart'; export 'src/hub.dart'; // useful for tests diff --git a/dart/lib/src/protocol/sentry_transaction.dart b/dart/lib/src/protocol/sentry_transaction.dart index 986169ce46..e00fa23355 100644 --- a/dart/lib/src/protocol/sentry_transaction.dart +++ b/dart/lib/src/protocol/sentry_transaction.dart @@ -17,45 +17,34 @@ class SentryTransaction extends SentryEvent { SentryTransaction( this.tracer, { - SentryId? eventId, + super.eventId, DateTime? timestamp, - String? platform, - String? serverName, - String? release, - String? dist, - String? environment, + super.platform, + super.serverName, + super.release, + super.dist, + super.environment, String? transaction, dynamic throwable, Map? tags, @Deprecated( 'Additional Data is deprecated in favor of structured [Contexts] and should be avoided when possible') Map? extra, - SentryUser? user, - Contexts? contexts, - List? breadcrumbs, - SdkVersion? sdk, - SentryRequest? request, + super.user, + super.contexts, + super.breadcrumbs, + super.sdk, + super.request, String? type, Map? measurements, SentryTransactionInfo? transactionInfo, }) : super( - eventId: eventId, timestamp: timestamp ?? tracer.endTimestamp, - platform: platform, - serverName: serverName, - release: release, - dist: dist, - environment: environment, transaction: transaction ?? tracer.name, throwable: throwable ?? tracer.throwable, tags: tags ?? tracer.tags, // ignore: deprecated_member_use_from_same_package extra: extra ?? tracer.data, - user: user, - contexts: contexts, - breadcrumbs: breadcrumbs, - sdk: sdk, - request: request, type: _type, ) { startTimestamp = tracer.startTimestamp; @@ -64,7 +53,7 @@ class SentryTransaction extends SentryEvent { spans = tracer.children; this.measurements = measurements ?? {}; - this.contexts.trace = spanContext.toTraceContext( + contexts.trace = spanContext.toTraceContext( sampled: tracer.samplingDecision?.sampled, status: tracer.status, ); diff --git a/dart/lib/src/sentry_attachment/io_sentry_attachment.dart b/dart/lib/src/sentry_attachment/io_sentry_attachment.dart index a1e2585556..ae07b51508 100644 --- a/dart/lib/src/sentry_attachment/io_sentry_attachment.dart +++ b/dart/lib/src/sentry_attachment/io_sentry_attachment.dart @@ -24,12 +24,10 @@ class IoSentryAttachment extends SentryAttachment { IoSentryAttachment.fromFile( File file, { String? filename, - String? attachmentType, - String? contentType, + super.attachmentType, + super.contentType, }) : super.fromLoader( loader: () => file.readAsBytes(), filename: filename ?? file.uri.pathSegments.last, - attachmentType: attachmentType, - contentType: contentType, ); } diff --git a/dart/lib/src/sentry_transaction_context.dart b/dart/lib/src/sentry_transaction_context.dart index 66024459f5..32ab0324b7 100644 --- a/dart/lib/src/sentry_transaction_context.dart +++ b/dart/lib/src/sentry_transaction_context.dart @@ -15,21 +15,16 @@ class SentryTransactionContext extends SentrySpanContext { SentryTransactionContext( this.name, String operation, { - String? description, + super.description, this.parentSamplingDecision, - SentryId? traceId, - SpanId? spanId, - SpanId? parentSpanId, + super.traceId, + super.spanId, + super.parentSpanId, this.transactionNameSource, this.samplingDecision, - String? origin, + super.origin, }) : super( operation: operation, - description: description, - traceId: traceId, - spanId: spanId, - parentSpanId: parentSpanId, - origin: origin, ); factory SentryTransactionContext.fromSentryTrace( diff --git a/dart/lib/src/utils/sample_rate_format.dart b/dart/lib/src/utils/sample_rate_format.dart index 4abb79edd8..e69163f30b 100644 --- a/dart/lib/src/utils/sample_rate_format.dart +++ b/dart/lib/src/utils/sample_rate_format.dart @@ -1,3 +1,4 @@ +// ignore: dangling_library_doc_comments /// Code ported & adapted from `intl` package /// https://pub.dev/packages/intl /// diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index e3207ffda2..2580a618d3 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -20,7 +20,7 @@ dependencies: dev_dependencies: build_runner: ^2.4.2 mockito: ^5.1.0 - lints: ^2.0.0 + lints: ^3.0.0 test: ^1.21.1 yaml: ^3.1.0 # needed for version match (code and pubspec) collection: ^1.16.0 From 7ea39312b849fbdd14d0f2e50e957624a562b45d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 15:35:56 +0100 Subject: [PATCH 112/166] build(deps): bump reactivecircus/android-emulator-runner (#1779) Bumps [reactivecircus/android-emulator-runner](https://github.com/reactivecircus/android-emulator-runner) from 2.28.0 to 2.29.0. - [Release notes](https://github.com/reactivecircus/android-emulator-runner/releases) - [Changelog](https://github.com/ReactiveCircus/android-emulator-runner/blob/main/CHANGELOG.md) - [Commits](https://github.com/reactivecircus/android-emulator-runner/compare/d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b...99a4aac18b4df9b3af66c4a1f04c1f23fa10c270) --- updated-dependencies: - dependency-name: reactivecircus/android-emulator-runner dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/flutter_test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 3b9e2e3839..29b05e9821 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -64,7 +64,7 @@ jobs: - name: create AVD and generate snapshot for caching if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b #pin@v2.28.0 + uses: reactivecircus/android-emulator-runner@99a4aac18b4df9b3af66c4a1f04c1f23fa10c270 #pin@v2.29.0 with: working-directory: ./flutter/example api-level: 31 @@ -81,7 +81,7 @@ jobs: run: flutter build apk --debug - name: launch android emulator & run android native test - uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b #pin@v2.28.0 + uses: reactivecircus/android-emulator-runner@99a4aac18b4df9b3af66c4a1f04c1f23fa10c270 #pin@v2.29.0 with: working-directory: ./flutter/example/android api-level: 31 @@ -94,7 +94,7 @@ jobs: script: ./gradlew testDebugUnitTest - name: launch android emulator & run android integration test - uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b #pin@v2.28.0 + uses: reactivecircus/android-emulator-runner@99a4aac18b4df9b3af66c4a1f04c1f23fa10c270 #pin@v2.29.0 with: working-directory: ./flutter/example api-level: 31 From 4be7ec8d5b7076810f84142eb7f6b3b09f562f26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 12:06:49 +0100 Subject: [PATCH 113/166] build(deps): bump subosito/flutter-action from 2.10.0 to 2.12.0 (#1796) Bumps [subosito/flutter-action](https://github.com/subosito/flutter-action) from 2.10.0 to 2.12.0. - [Release notes](https://github.com/subosito/flutter-action/releases) - [Commits](https://github.com/subosito/flutter-action/compare/v2.10.0...2783a3f08e1baf891508463f8c6653c258246225) --- updated-dependencies: - dependency-name: subosito/flutter-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/isar.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/isar.yml b/.github/workflows/isar.yml index 2484fa56bf..cad3e861c3 100644 --- a/.github/workflows/isar.yml +++ b/.github/workflows/isar.yml @@ -80,7 +80,7 @@ jobs: sudo apt install -y network-manager upower if: matrix.os == 'ubuntu-latest' && matrix.target == 'linux' - - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa # pin@v2.10.0 + - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 with: channel: ${{ matrix.sdk }} From be08ed1118c3890fabac3197bcc4e9650145c8a8 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 27 Dec 2023 12:12:14 +0100 Subject: [PATCH 114/166] feat: spotlight support (#1786) * Implement spotlight support (screenshots are currently disabled and removed from the envelope) --- CHANGELOG.md | 2 + dart/lib/sentry.dart | 2 + dart/lib/src/sentry_client.dart | 4 + dart/lib/src/sentry_options.dart | 7 + dart/lib/src/spotlight.dart | 21 +++ dart/lib/src/transport/http_transport.dart | 135 +++--------------- .../http_transport_request_handler.dart | 98 +++++++++++++ .../transport/spotlight_http_transport.dart | 52 +++++++ dart/lib/src/utils/transport_utils.dart | 30 ++++ dart/test/environment_test.dart | 4 +- dart/test/sentry_client_test.dart | 9 ++ dart/test/sentry_options_test.dart | 6 + .../spotlight_http_transport_test.dart | 70 +++++++++ 13 files changed, 322 insertions(+), 118 deletions(-) create mode 100644 dart/lib/src/spotlight.dart create mode 100644 dart/lib/src/transport/http_transport_request_handler.dart create mode 100644 dart/lib/src/transport/spotlight_http_transport.dart create mode 100644 dart/lib/src/utils/transport_utils.dart create mode 100644 dart/test/transport/spotlight_http_transport_test.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index d9051b9e07..71483dab8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### Features +- Add [Spotlight](https://spotlightjs.com/about/) support ([#1786](https://github.com/getsentry/sentry-dart/pull/1786)) + - Set `options.spotlight = Spotlight(enabled: true)` to enable Spotlight - Add `ConnectivityIntegration` for web ([#1765](https://github.com/getsentry/sentry-dart/pull/1765)) - We only get the info if online/offline on web platform. The added breadcrumb is set to either `wifi` or `none`. - APM for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) diff --git a/dart/lib/sentry.dart b/dart/lib/sentry.dart index 987e1f014a..5419aa45b8 100644 --- a/dart/lib/sentry.dart +++ b/dart/lib/sentry.dart @@ -50,3 +50,5 @@ export 'src/utils/http_header_utils.dart'; export 'src/sentry_trace_origins.dart'; // ignore: invalid_export_of_internal_element export 'src/utils.dart'; +// spotlight debugging +export 'src/spotlight.dart'; diff --git a/dart/lib/src/sentry_client.dart b/dart/lib/src/sentry_client.dart index 62d2072b85..709bda104f 100644 --- a/dart/lib/src/sentry_client.dart +++ b/dart/lib/src/sentry_client.dart @@ -16,6 +16,7 @@ import 'sentry_options.dart'; import 'sentry_stack_trace_factory.dart'; import 'transport/http_transport.dart'; import 'transport/noop_transport.dart'; +import 'transport/spotlight_http_transport.dart'; import 'utils/isolate_utils.dart'; import 'version.dart'; import 'sentry_envelope.dart'; @@ -49,6 +50,9 @@ class SentryClient { final rateLimiter = RateLimiter(options); options.transport = HttpTransport(options, rateLimiter); } + if (options.spotlight.enabled) { + options.transport = SpotlightHttpTransport(options, options.transport); + } return SentryClient._(options); } diff --git a/dart/lib/src/sentry_options.dart b/dart/lib/src/sentry_options.dart index 7d0d18622a..918a5d5758 100644 --- a/dart/lib/src/sentry_options.dart +++ b/dart/lib/src/sentry_options.dart @@ -374,6 +374,13 @@ class SentryOptions { /// Settings this to `false` will set the `level` to [SentryLevel.error]. bool markAutomaticallyCollectedErrorsAsFatal = true; + /// The Spotlight configuration. + /// Disabled by default. + /// ```dart + /// spotlight = Spotlight(enabled: true) + /// ``` + Spotlight spotlight = Spotlight(enabled: false); + SentryOptions({this.dsn, PlatformChecker? checker}) { if (checker != null) { platformChecker = checker; diff --git a/dart/lib/src/spotlight.dart b/dart/lib/src/spotlight.dart new file mode 100644 index 0000000000..b106ed3547 --- /dev/null +++ b/dart/lib/src/spotlight.dart @@ -0,0 +1,21 @@ +import 'platform_checker.dart'; + +/// Spotlight configuration class. +class Spotlight { + /// Whether to enable Spotlight for local development. + bool enabled; + + /// The Spotlight Sidecar URL. + /// Defaults to http://10.0.2.2:8969/stream due to Emulator on Android. + /// Otherwise defaults to http://localhost:8969/stream. + String url; + + Spotlight({required this.enabled, String? url}) + : url = url ?? _defaultSpotlightUrl(); +} + +String _defaultSpotlightUrl() { + return (PlatformChecker().platform.isAndroid + ? 'http://10.0.2.2:8969/stream' + : 'http://localhost:8969/stream'); +} diff --git a/dart/lib/src/transport/http_transport.dart b/dart/lib/src/transport/http_transport.dart index acf0e6cf64..90dd8949ce 100644 --- a/dart/lib/src/transport/http_transport.dart +++ b/dart/lib/src/transport/http_transport.dart @@ -2,11 +2,9 @@ import 'dart:async'; import 'dart:convert'; import 'package:http/http.dart'; +import '../utils/transport_utils.dart'; +import 'http_transport_request_handler.dart'; -import '../client_reports/client_report_recorder.dart'; -import '../client_reports/discard_reason.dart'; -import 'data_category.dart'; -import 'noop_encode.dart' if (dart.library.io) 'encode.dart'; import '../noop_client.dart'; import '../protocol.dart'; import '../sentry_options.dart'; @@ -18,15 +16,9 @@ import 'rate_limiter.dart'; class HttpTransport implements Transport { final SentryOptions _options; - final Dsn _dsn; - final RateLimiter _rateLimiter; - final ClientReportRecorder _recorder; - - late _CredentialBuilder _credentialBuilder; - - final Map _headers; + final HttpTransportRequestHandler _requestHandler; factory HttpTransport(SentryOptions options, RateLimiter rateLimiter) { if (options.httpClient is NoOpClient) { @@ -37,17 +29,8 @@ class HttpTransport implements Transport { } HttpTransport._(this._options, this._rateLimiter) - : _dsn = Dsn.parse(_options.dsn!), - _recorder = _options.recorder, - _headers = _buildHeaders( - _options.platformChecker.isWeb, - _options.sentryClientName, - ) { - _credentialBuilder = _CredentialBuilder( - _dsn, - _options.sentryClientName, - ); - } + : _requestHandler = HttpTransportRequestHandler( + _options, Dsn.parse(_options.dsn!).postUri); @override Future send(SentryEnvelope envelope) async { @@ -57,63 +40,31 @@ class HttpTransport implements Transport { } filteredEnvelope.header.sentAt = _options.clock(); - final streamedRequest = await _createStreamedRequest(filteredEnvelope); + final streamedRequest = + await _requestHandler.createRequest(filteredEnvelope); + final response = await _options.httpClient .send(streamedRequest) .then(Response.fromStream); _updateRetryAfterLimits(response); - if (response.statusCode != 200) { - // body guard to not log the error as it has performance impact to allocate - // the body String. - if (_options.debug) { - _options.logger( - SentryLevel.error, - 'API returned an error, statusCode = ${response.statusCode}, ' - 'body = ${response.body}', - ); - } - - if (response.statusCode >= 400 && response.statusCode != 429) { - _recorder.recordLostEvent( - DiscardReason.networkError, DataCategory.error); - } - - return SentryId.empty(); - } else { - _options.logger( - SentryLevel.debug, - 'Envelope ${envelope.header.eventId ?? "--"} was sent successfully.', - ); - } + TransportUtils.logResponse(_options, envelope, response, target: 'Sentry'); - final eventId = json.decode(response.body)['id']; - if (eventId == null) { - return null; + if (response.statusCode == 200) { + return _parseEventId(response); } - return SentryId.fromId(eventId); + return SentryId.empty(); } - Future _createStreamedRequest( - SentryEnvelope envelope) async { - final streamedRequest = StreamedRequest('POST', _dsn.postUri); - - if (_options.compressPayload) { - final compressionSink = compressInSink(streamedRequest.sink, _headers); - envelope - .envelopeStream(_options) - .listen(compressionSink.add) - .onDone(compressionSink.close); - } else { - envelope - .envelopeStream(_options) - .listen(streamedRequest.sink.add) - .onDone(streamedRequest.sink.close); + SentryId? _parseEventId(Response response) { + try { + final eventId = json.decode(response.body)['id']; + return eventId != null ? SentryId.fromId(eventId) : null; + } catch (e) { + _options.logger(SentryLevel.error, 'Error parsing response: $e'); + return null; } - streamedRequest.headers.addAll(_credentialBuilder.configure(_headers)); - - return streamedRequest; } void _updateRetryAfterLimits(Response response) { @@ -131,51 +82,3 @@ class HttpTransport implements Transport { sentryRateLimitHeader, retryAfterHeader, response.statusCode); } } - -class _CredentialBuilder { - final String _authHeader; - - _CredentialBuilder._(String authHeader) : _authHeader = authHeader; - - factory _CredentialBuilder(Dsn dsn, String sdkIdentifier) { - final authHeader = _buildAuthHeader( - publicKey: dsn.publicKey, - secretKey: dsn.secretKey, - sdkIdentifier: sdkIdentifier, - ); - - return _CredentialBuilder._(authHeader); - } - - static String _buildAuthHeader({ - required String publicKey, - String? secretKey, - required String sdkIdentifier, - }) { - var header = 'Sentry sentry_version=7, sentry_client=$sdkIdentifier, ' - 'sentry_key=$publicKey'; - - if (secretKey != null) { - header += ', sentry_secret=$secretKey'; - } - - return header; - } - - Map configure(Map headers) { - return headers - ..addAll( - {'X-Sentry-Auth': _authHeader}, - ); - } -} - -Map _buildHeaders(bool isWeb, String sdkIdentifier) { - final headers = {'Content-Type': 'application/x-sentry-envelope'}; - // NOTE(lejard_h) overriding user agent on VM and Flutter not sure why - // for web it use browser user agent - if (!isWeb) { - headers['User-Agent'] = sdkIdentifier; - } - return headers; -} diff --git a/dart/lib/src/transport/http_transport_request_handler.dart b/dart/lib/src/transport/http_transport_request_handler.dart new file mode 100644 index 0000000000..4aa50898c5 --- /dev/null +++ b/dart/lib/src/transport/http_transport_request_handler.dart @@ -0,0 +1,98 @@ +import 'dart:async'; + +import 'package:http/http.dart'; +import 'package:meta/meta.dart'; + +import 'noop_encode.dart' if (dart.library.io) 'encode.dart'; +import '../protocol.dart'; +import '../sentry_options.dart'; +import '../sentry_envelope.dart'; + +@internal +class HttpTransportRequestHandler { + final SentryOptions _options; + final Dsn _dsn; + final Map _headers; + final Uri _requestUri; + late _CredentialBuilder _credentialBuilder; + + HttpTransportRequestHandler(this._options, this._requestUri) + : _dsn = Dsn.parse(_options.dsn!), + _headers = _buildHeaders( + _options.platformChecker.isWeb, + _options.sentryClientName, + ) { + _credentialBuilder = _CredentialBuilder( + _dsn, + _options.sentryClientName, + ); + } + + Future createRequest(SentryEnvelope envelope) async { + final streamedRequest = StreamedRequest('POST', _requestUri); + + if (_options.compressPayload) { + final compressionSink = compressInSink(streamedRequest.sink, _headers); + envelope + .envelopeStream(_options) + .listen(compressionSink.add) + .onDone(compressionSink.close); + } else { + envelope + .envelopeStream(_options) + .listen(streamedRequest.sink.add) + .onDone(streamedRequest.sink.close); + } + + streamedRequest.headers.addAll(_credentialBuilder.configure(_headers)); + return streamedRequest; + } +} + +Map _buildHeaders(bool isWeb, String sdkIdentifier) { + final headers = {'Content-Type': 'application/x-sentry-envelope'}; + // NOTE(lejard_h) overriding user agent on VM and Flutter not sure why + // for web it use browser user agent + if (!isWeb) { + headers['User-Agent'] = sdkIdentifier; + } + return headers; +} + +class _CredentialBuilder { + final String _authHeader; + + _CredentialBuilder._(String authHeader) : _authHeader = authHeader; + + factory _CredentialBuilder(Dsn dsn, String sdkIdentifier) { + final authHeader = _buildAuthHeader( + publicKey: dsn.publicKey, + secretKey: dsn.secretKey, + sdkIdentifier: sdkIdentifier, + ); + + return _CredentialBuilder._(authHeader); + } + + static String _buildAuthHeader({ + required String publicKey, + String? secretKey, + required String sdkIdentifier, + }) { + var header = 'Sentry sentry_version=7, sentry_client=$sdkIdentifier, ' + 'sentry_key=$publicKey'; + + if (secretKey != null) { + header += ', sentry_secret=$secretKey'; + } + + return header; + } + + Map configure(Map headers) { + return headers + ..addAll( + {'X-Sentry-Auth': _authHeader}, + ); + } +} diff --git a/dart/lib/src/transport/spotlight_http_transport.dart b/dart/lib/src/transport/spotlight_http_transport.dart new file mode 100644 index 0000000000..f51e77d478 --- /dev/null +++ b/dart/lib/src/transport/spotlight_http_transport.dart @@ -0,0 +1,52 @@ +import 'package:http/http.dart'; +import '../utils/transport_utils.dart'; +import 'http_transport_request_handler.dart'; + +import '../../sentry.dart'; +import '../noop_client.dart'; + +/// Spotlight HTTP transport decorator that sends Sentry envelopes to both Sentry and Spotlight. +class SpotlightHttpTransport extends Transport { + final SentryOptions _options; + final Transport _transport; + final HttpTransportRequestHandler _requestHandler; + + factory SpotlightHttpTransport(SentryOptions options, Transport transport) { + if (options.httpClient is NoOpClient) { + options.httpClient = Client(); + } + return SpotlightHttpTransport._(options, transport); + } + + SpotlightHttpTransport._(this._options, this._transport) + : _requestHandler = HttpTransportRequestHandler( + _options, Uri.parse(_options.spotlight.url)); + + @override + Future send(SentryEnvelope envelope) async { + try { + await _sendToSpotlight(envelope); + } catch (e) { + _options.logger( + SentryLevel.warning, 'Failed to send envelope to Spotlight: $e'); + } + return _transport.send(envelope); + } + + Future _sendToSpotlight(SentryEnvelope envelope) async { + envelope.header.sentAt = _options.clock(); + + // Screenshots do not work currently https://github.com/getsentry/spotlight/issues/274 + envelope.items + .removeWhere((element) => element.header.contentType == 'image/png'); + + final spotlightRequest = await _requestHandler.createRequest(envelope); + + final response = await _options.httpClient + .send(spotlightRequest) + .then(Response.fromStream); + + TransportUtils.logResponse(_options, envelope, response, + target: 'Spotlight'); + } +} diff --git a/dart/lib/src/utils/transport_utils.dart b/dart/lib/src/utils/transport_utils.dart new file mode 100644 index 0000000000..388db8e8d5 --- /dev/null +++ b/dart/lib/src/utils/transport_utils.dart @@ -0,0 +1,30 @@ +import 'package:http/http.dart'; + +import '../../sentry_io.dart'; +import '../client_reports/discard_reason.dart'; +import '../transport/data_category.dart'; + +class TransportUtils { + static void logResponse( + SentryOptions options, SentryEnvelope envelope, Response response, + {required String target}) { + if (response.statusCode != 200) { + if (options.debug) { + options.logger( + SentryLevel.error, + 'Error, statusCode = ${response.statusCode}, body = ${response.body}', + ); + } + + if (response.statusCode >= 400 && response.statusCode != 429) { + options.recorder + .recordLostEvent(DiscardReason.networkError, DataCategory.error); + } + } else { + options.logger( + SentryLevel.debug, + 'Envelope ${envelope.header.eventId ?? "--"} was sent successfully to $target.', + ); + } + } +} diff --git a/dart/test/environment_test.dart b/dart/test/environment_test.dart index e4bf97fea7..b16225d1dd 100644 --- a/dart/test/environment_test.dart +++ b/dart/test/environment_test.dart @@ -39,7 +39,7 @@ void main() { test('SentryOptions are overriden by environment', () async { final options = SentryOptions(); options.environmentVariables = MockEnvironmentVariables( - dsn: 'foo-bar', + dsn: fakeDsn, environment: 'staging', release: 'release-9.8.7', dist: 'bar', @@ -51,7 +51,7 @@ void main() { options: options, ); - expect(options.dsn, 'foo-bar'); + expect(options.dsn, fakeDsn); expect(options.environment, 'staging'); expect(options.release, 'release-9.8.7'); expect(options.dist, 'bar'); diff --git a/dart/test/sentry_client_test.dart b/dart/test/sentry_client_test.dart index cdbbd73950..63c83a321f 100644 --- a/dart/test/sentry_client_test.dart +++ b/dart/test/sentry_client_test.dart @@ -12,6 +12,7 @@ import 'package:sentry/src/sentry_item_type.dart'; import 'package:sentry/src/sentry_stack_trace_factory.dart'; import 'package:sentry/src/sentry_tracer.dart'; import 'package:sentry/src/transport/data_category.dart'; +import 'package:sentry/src/transport/spotlight_http_transport.dart'; import 'package:test/test.dart'; import 'mocks.dart'; @@ -1706,6 +1707,14 @@ void main() { expect(capturedEnvelope.header.dsn, fixture.options.dsn); }); + + test('Spotlight enabled should set transport to SpotlightHttpTransport', + () async { + fixture.options.spotlight = Spotlight(enabled: true); + fixture.getSut(); + + expect(fixture.options.transport is SpotlightHttpTransport, true); + }); }); } diff --git a/dart/test/sentry_options_test.dart b/dart/test/sentry_options_test.dart index f6dec29e90..e921c87b32 100644 --- a/dart/test/sentry_options_test.dart +++ b/dart/test/sentry_options_test.dart @@ -127,4 +127,10 @@ void main() { expect(options.isTracingEnabled(), false); }); + + test('Spotlight is disabled by default', () { + final options = SentryOptions(dsn: fakeDsn); + + expect(options.spotlight.enabled, false); + }); } diff --git a/dart/test/transport/spotlight_http_transport_test.dart b/dart/test/transport/spotlight_http_transport_test.dart new file mode 100644 index 0000000000..b23f1fd87f --- /dev/null +++ b/dart/test/transport/spotlight_http_transport_test.dart @@ -0,0 +1,70 @@ +import 'package:http/http.dart' as http; +import 'package:http/testing.dart'; +import 'package:sentry/sentry.dart'; +import 'package:sentry/src/transport/http_transport.dart'; +import 'package:sentry/src/transport/rate_limiter.dart'; +import 'package:sentry/src/transport/spotlight_http_transport.dart'; +import 'package:test/expect.dart'; +import 'package:test/scaffolding.dart'; + +import '../mocks.dart'; +import '../mocks/mock_client_report_recorder.dart'; + +void main() { + group('send to Sentry', () { + late Fixture fixture; + + setUp(() { + fixture = Fixture(); + }); + + test('send event to Sentry even if Spotlight fails', () async { + List? body; + + final httpMock = MockClient((http.Request request) async { + body = request.bodyBytes; + if (request.url.toString() == fixture.options.spotlight.url) { + return http.Response('{}', 500); + } + return http.Response('{}', 200); + }); + + fixture.options.compressPayload = false; + final mockRateLimiter = MockRateLimiter(); + final sut = fixture.getSut(httpMock, mockRateLimiter); + + final sentryEvent = SentryEvent(); + final envelope = SentryEnvelope.fromEvent( + sentryEvent, + fixture.options.sdk, + dsn: fixture.options.dsn, + ); + await sut.send(envelope); + + final envelopeData = []; + await envelope + .envelopeStream(fixture.options) + .forEach(envelopeData.addAll); + + expect(body, envelopeData); + }); + }); +} + +class Fixture { + final options = SentryOptions( + dsn: 'https://public:secret@sentry.example.com/1', + ); + + late var clientReportRecorder = MockClientReportRecorder(); + + Transport getSut(http.Client client, RateLimiter rateLimiter) { + options.httpClient = client; + options.recorder = clientReportRecorder; + options.clock = () { + return DateTime.utc(2019); + }; + final httpTransport = HttpTransport(options, rateLimiter); + return SpotlightHttpTransport(options, httpTransport); + } +} From 33ed16d14ca2c2de08d112d2870ce79993c6c8e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 12:13:39 +0100 Subject: [PATCH 115/166] build(deps): bump VeryGoodOpenSource/very_good_coverage (#1795) Bumps [VeryGoodOpenSource/very_good_coverage](https://github.com/verygoodopensource/very_good_coverage) from 2.1.0 to 2.2.0. - [Release notes](https://github.com/verygoodopensource/very_good_coverage/releases) - [Changelog](https://github.com/VeryGoodOpenSource/very_good_coverage/blob/main/CHANGELOG.md) - [Commits](https://github.com/verygoodopensource/very_good_coverage/compare/v2.1.0...3b475421464c564c0714d92ce02742bd81fa9eda) --- updated-dependencies: - dependency-name: VeryGoodOpenSource/very_good_coverage dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/isar.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/isar.yml b/.github/workflows/isar.yml index cad3e861c3..4b0ae60121 100644 --- a/.github/workflows/isar.yml +++ b/.github/workflows/isar.yml @@ -103,7 +103,7 @@ jobs: file: ./isar/coverage/lcov.info functionalities: "search" # remove after https://github.com/codecov/codecov-action/issues/600 - - uses: VeryGoodOpenSource/very_good_coverage@e5c91bc7ce9843e87c800b3bcafdfb86fbe28491 # pin@v2.1.0 + - uses: VeryGoodOpenSource/very_good_coverage@3b475421464c564c0714d92ce02742bd81fa9eda # pin@v2.2.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: path: "./isar/coverage/lcov.info" From 730365e15633a21afed127dc0f7d36dfe68f68fe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 12:22:36 +0100 Subject: [PATCH 116/166] build(deps): bump actions/setup-java from 3 to 4 (#1797) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/isar.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/isar.yml b/.github/workflows/isar.yml index 4b0ae60121..b57722fb50 100644 --- a/.github/workflows/isar.yml +++ b/.github/workflows/isar.yml @@ -66,7 +66,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: actions/setup-java@v3 + - uses: actions/setup-java@v4 if: ${{ matrix.target == 'android' }} with: java-version: "11" From 404d19fe32b509c84d6654aff8432e5b225939e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Wed, 27 Dec 2023 15:56:19 +0000 Subject: [PATCH 117/166] Update Path Filters (#1763) --- .github/workflows/dart.yml | 14 +++++--------- .github/workflows/dio.yml | 15 ++++++--------- .github/workflows/drift.yml | 15 ++++++--------- .github/workflows/e2e_dart.yml | 16 ++++++---------- .github/workflows/file.yml | 14 ++++++-------- .github/workflows/flutter.yml | 15 ++++++--------- .github/workflows/flutter_test.yml | 9 ++++++--- .github/workflows/hive.yml | 15 ++++++--------- .github/workflows/isar.yml | 15 ++++++--------- .github/workflows/logging.yml | 15 ++++++--------- .github/workflows/min_version_test.yml | 14 +++++++------- .github/workflows/sqflite.yml | 15 ++++++--------- 12 files changed, 72 insertions(+), 100 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 3d6e4229fd..779cf5ea90 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -5,15 +5,11 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "logging/**" - - "dio/**" - - "file/**" - - "sqflite/**" - - "hive/**" - - "drift/**" - - "isar/**" + paths: + - "!**/*.md" + - "!**/class-diagram.svg" + - ".github/workflows/dart.yml" + - "dart/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index ec7a54eedc..c85ab43a1a 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -5,15 +5,12 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "logging/**" - - "flutter/**" - - "file/**" - - "sqflite/**" - - "hive/**" - - "drift/**" - - "isar/**" + paths: + - "!**/*.md" + - "!**/class-diagram.svg" + - ".github/workflows/dio.yml" + - "dart/**" + - "dio/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/drift.yml b/.github/workflows/drift.yml index b5e2c630aa..f13f6d22f6 100644 --- a/.github/workflows/drift.yml +++ b/.github/workflows/drift.yml @@ -5,15 +5,12 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "logging/**" - - "flutter/**" - - "dio/**" - - "file/**" - - "sqflite/**" - - "hive/**" - - "isar/**" + paths: + - "!**/*.md" + - "!**/class-diagram.svg" + - ".github/workflows/drift.yml" + - "dart/**" + - "drift/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index 730d015d8e..2d66eaf9e2 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -5,16 +5,12 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "logging/**" - - "dio/**" - - "flutter/**" - - "file/**" - - "sqflite/**" - - "hive/**" - - "drift/**" - - "isar/**" + paths: + - "!**/*.md" + - "!**/class-diagram.svg" + - ".github/workflows/e2e_dart.yml" + - "dart/**" + - "e2e_test/**" env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 56e3750fc9..322c24b22e 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -5,15 +5,13 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "logging/**" + paths: + - "!**/*.md" + - "!**/class-diagram.svg" + - ".github/workflows/file.yml" + - "dart/**" - "flutter/**" - - "dio/**" - - "sqflite/**" - - "hive/**" - - "drift/**" - - "isar/**" + - "file/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 77e02e4fc7..e21b884a01 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -5,15 +5,12 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "logging/**" - - "dio/**" - - "file/**" - - "sqflite/**" - - "hive/**" - - "drift/**" - - "isar/**" + paths: + - ".github/workflows/flutter.yml" + - "!**/*.md" + - "!**/class-diagram.svg" + - "dart/**" + - "flutter/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 29b05e9821..d1ce043f54 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -5,9 +5,12 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "file/**" + paths: + - "!**/*.md" + - "!**/class-diagram.svg" + - ".github/workflows/flutter_test.yml" + - "dart/**" + - "flutter/**" env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 4e710d19fa..1ff1a8483e 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -5,15 +5,12 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "logging/**" - - "flutter/**" - - "dio/**" - - "file/**" - - "sqflite/**" - - "drift/**" - - "isar/**" + paths: + - "!**/*.md" + - "!**/class-diagram.svg" + - ".github/workflows/hive.yml" + - "dart/**" + - "hive/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/isar.yml b/.github/workflows/isar.yml index b57722fb50..4e090f6307 100644 --- a/.github/workflows/isar.yml +++ b/.github/workflows/isar.yml @@ -5,15 +5,12 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "logging/**" - - "flutter/**" - - "dio/**" - - "file/**" - - "sqflite/**" - - "hive/**" - - "drift/**" + paths: + - "!**/*.md" + - "!**/class-diagram.svg" + - ".github/workflows/isar.yml" + - "dart/**" + - "isar/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index d4b6d9898c..d6af6538bd 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -5,15 +5,12 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "dio/**" - - "flutter/**" - - "file/**" - - "sqflite/**" - - "hive/**" - - "drift/**" - - "isar/**" + paths: + - "!**/*.md" + - "!**/class-diagram.svg" + - ".github/workflows/logging.yml" + - "dart/**" + - "logging/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index 3d227a1447..6b08e3ca95 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -5,13 +5,13 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "file/**" - - "sqflite/**" - - "hive/**" - - "drift/**" - - "isar/**" + paths: + - "!**/*.md" + - "!**/class-diagram.svg" + - ".github/workflows/min_version_test.yml" + - "dart/**" + - "flutter/**" + - "min_version_test/**" jobs: cancel-previous-workflow: diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 48bcf380b2..1168c4561e 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -5,15 +5,12 @@ on: - main - release/** pull_request: - paths-ignore: - - "**/*.md" - - "logging/**" - - "flutter/**" - - "dio/**" - - "file/**" - - "hive/**" - - "drift/**" - - "isar/**" + paths: + - "!**/*.md" + - "!**/class-diagram.svg" + - ".github/workflows/logging.yml" + - "dart/**" + - "sqflite/**" jobs: cancel-previous-workflow: From bde5f6b1cb1762d9a377a5c57399a5bd1d9b06b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Uek=C3=B6tter?= Date: Wed, 3 Jan 2024 11:58:40 +0100 Subject: [PATCH 118/166] Add app flavor to `flutter_context` (#1799) * Add app flavor * fix changelog --- CHANGELOG.md | 1 + .../event_processor/flutter_enricher_event_processor.dart | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71483dab8e..55773a0b75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Add `ConnectivityIntegration` for web ([#1765](https://github.com/getsentry/sentry-dart/pull/1765)) - We only get the info if online/offline on web platform. The added breadcrumb is set to either `wifi` or `none`. - APM for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) +- Starting with Flutter 3.16, Sentry adds the [`appFlavor`](https://api.flutter.dev/flutter/services/appFlavor-constant.html) to the `flutter_context` ([#1799](https://github.com/getsentry/sentry-dart/pull/1799)) ## 7.14.0 diff --git a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart index a4d04573a6..615c7a4974 100644 --- a/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart +++ b/flutter/lib/src/event_processor/flutter_enricher_event_processor.dart @@ -153,6 +153,7 @@ class FlutterEnricherEventProcessor implements EventProcessor { // See https://github.com/flutter/flutter/issues/83919 // 'window_is_visible': _window.viewConfiguration.visible, if (renderer != null) 'renderer': renderer, + if (_appFlavor != null) 'appFlavor': _appFlavor!, }; } @@ -266,3 +267,10 @@ class FlutterEnricherEventProcessor implements EventProcessor { return null; } } + +/// Copied from https://api.flutter.dev/flutter/services/appFlavor-constant.html +/// As soon as Flutter 3.16 is the minimal supported version of Sentry, this +/// can be replaced with the property from the link above. +const String? _appFlavor = String.fromEnvironment('FLUTTER_APP_FLAVOR') != '' + ? String.fromEnvironment('FLUTTER_APP_FLAVOR') + : null; From ca7f531d8ef46d53d71b084884c27cae425de945 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 12:01:13 +0100 Subject: [PATCH 119/166] chore(deps): update Android SDK to v7.1.0 (#1788) * chore: update flutter/scripts/update-android.sh to 7.1.0 * Fix app start * format --------- Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor --- CHANGELOG.md | 6 ++++++ flutter/android/build.gradle | 2 +- .../main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt | 7 ++++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 55773a0b75..8154a73e70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,12 @@ - APM for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) - Starting with Flutter 3.16, Sentry adds the [`appFlavor`](https://api.flutter.dev/flutter/services/appFlavor-constant.html) to the `flutter_context` ([#1799](https://github.com/getsentry/sentry-dart/pull/1799)) +### Dependencies + +- Bump Android SDK from v7.0.0 to v7.1.0 ([#1788](https://github.com/getsentry/sentry-dart/pull/1788)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#710) + - [diff](https://github.com/getsentry/sentry-java/compare/7.0.0...7.1.0) + ## 7.14.0 - Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index 859103b80f..e594b017ea 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -60,7 +60,7 @@ android { } dependencies { - api 'io.sentry:sentry-android:7.0.0' + api 'io.sentry:sentry-android:7.1.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // Required -- JUnit 4 framework diff --git a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt index 2ae6a673cb..b908ff823f 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt @@ -19,11 +19,11 @@ import io.sentry.SentryEvent import io.sentry.SentryLevel import io.sentry.SentryOptions import io.sentry.android.core.ActivityFramesTracker -import io.sentry.android.core.AppStartState import io.sentry.android.core.BuildConfig.VERSION_NAME import io.sentry.android.core.LoadClass import io.sentry.android.core.SentryAndroid import io.sentry.android.core.SentryAndroidOptions +import io.sentry.android.core.performance.AppStartMetrics import io.sentry.protocol.DebugImage import io.sentry.protocol.SdkVersion import io.sentry.protocol.SentryId @@ -140,8 +140,9 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { result.success(null) return } - val appStartTime = AppStartState.getInstance().appStartTime - val isColdStart = AppStartState.getInstance().isColdStart + + val appStartTime = AppStartMetrics.getInstance().appStartTimeSpan.startTimestamp + val isColdStart = AppStartMetrics.getInstance().appStartType == AppStartMetrics.AppStartType.COLD if (appStartTime == null) { Log.w("Sentry", "App start won't be sent due to missing appStartTime") From f12d09db045001829805941d7d2f050867de7409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 8 Jan 2024 10:14:47 +0000 Subject: [PATCH 120/166] Add isar breadcrumbs (#1800) --- CHANGELOG.md | 1 + isar/lib/src/sentry_span_helper.dart | 18 + isar/pubspec.yaml | 4 +- isar/test/sentry_isar_collection_test.dart | 452 +++++++++++++++++++++ isar/test/sentry_isar_test.dart | 229 ++++++++++- 5 files changed, 687 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8154a73e70..a099b054d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Add `ConnectivityIntegration` for web ([#1765](https://github.com/getsentry/sentry-dart/pull/1765)) - We only get the info if online/offline on web platform. The added breadcrumb is set to either `wifi` or `none`. - APM for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) +- Add isar breadcrumbs ([#1800](https://github.com/getsentry/sentry-dart/pull/1800)) - Starting with Flutter 3.16, Sentry adds the [`appFlavor`](https://api.flutter.dev/flutter/services/appFlavor-constant.html) to the `flutter_context` ([#1799](https://github.com/getsentry/sentry-dart/pull/1799)) ### Dependencies diff --git a/isar/lib/src/sentry_span_helper.dart b/isar/lib/src/sentry_span_helper.dart index 69fc6e5c39..ec1823c7ca 100644 --- a/isar/lib/src/sentry_span_helper.dart +++ b/isar/lib/src/sentry_span_helper.dart @@ -38,28 +38,46 @@ class SentrySpanHelper { // ignore: invalid_use_of_internal_member span?.origin = _origin; + var breadcrumb = Breadcrumb( + message: description, + data: {}, + type: 'query', + ); + span?.setData(SentryIsar.dbSystemKey, SentryIsar.dbSystem); if (dbName != null) { span?.setData(SentryIsar.dbNameKey, dbName); + breadcrumb.data?[SentryIsar.dbNameKey] = dbName; } if (collectionName != null) { span?.setData(SentryIsar.dbCollectionKey, collectionName); + breadcrumb.data?[SentryIsar.dbCollectionKey] = collectionName; } try { final result = await execute(); + span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; return result; } catch (exception) { span?.throwable = exception; span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); + rethrow; } finally { await span?.finish(); + + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); } } } diff --git a/isar/pubspec.yaml b/isar/pubspec.yaml index 43c0907472..df066786f8 100644 --- a/isar/pubspec.yaml +++ b/isar/pubspec.yaml @@ -12,13 +12,13 @@ environment: dependencies: isar: ^3.1.0 isar_flutter_libs: ^3.1.0 # contains Isar Core - sentry: 7.12.0 + sentry: 7.14.0 meta: ^1.3.0 path: ^1.8.3 dev_dependencies: isar_generator: ^3.1.0 - build_runner: ^2.4.2 + build_runner: ^2.4.6 lints: ^3.0.0 flutter_test: sdk: flutter diff --git a/isar/test/sentry_isar_collection_test.dart b/isar/test/sentry_isar_collection_test.dart index c3286a2971..de55ac5989 100644 --- a/isar/test/sentry_isar_collection_test.dart +++ b/isar/test/sentry_isar_collection_test.dart @@ -36,6 +36,22 @@ void main() { expect(span?.throwable, error); } + void verifyBreadcrumb( + String message, + Breadcrumb? crumb, { + String status = 'ok', + }) { + expect( + crumb?.message, + message, + ); + expect(crumb?.type, 'query'); + expect(crumb?.data?['status'], status); + if (status != 'ok') { + expect(crumb?.level, SentryLevel.warning); + } + } + group('add spans', () { late Fixture fixture; @@ -44,6 +60,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); await fixture.setUp(); }); @@ -204,6 +221,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); when(fixture.isarCollection.name).thenReturn(Fixture.dbCollection); await fixture.setUp(); @@ -426,6 +444,435 @@ void main() { ); }); }); + + group('add breadcrumbs', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); + + await fixture.setUp(); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('clear adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().clear(); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('clear', breadcrumb); + }); + + test('count adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().count(); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('count', breadcrumb); + }); + + test('delete adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().delete(0); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('delete', breadcrumb); + }); + + test('deleteAll adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().deleteAll([0]); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('deleteAll', breadcrumb); + }); + + test('deleteAllByIndex adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().putByIndex('name', Person()..name = 'Joe'); + await fixture.getSut().deleteAllByIndex('name', []); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[2]; + verifyBreadcrumb('deleteAllByIndex', breadcrumb); + }); + + test('deleteByIndex adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().putByIndex('name', Person()..name = 'Joe'); + await fixture.getSut().deleteByIndex('name', []); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[2]; + verifyBreadcrumb('deleteByIndex', breadcrumb); + }); + + test('get adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().get(1); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('get', breadcrumb); + }); + + test('getAll adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().getAll([1]); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('getAll', breadcrumb); + }); + + test('getAllByIndex adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().getAllByIndex('name', []); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('getAllByIndex', breadcrumb); + }); + + test('getByIndex adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().getByIndex('name', []); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('getByIndex', breadcrumb); + }); + + test('getSize adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().getSize(); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('getSize', breadcrumb); + }); + + test('importJson adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().importJson([]); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('importJson', breadcrumb); + }); + + test('importJsonRaw adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + final query = fixture.getSut().buildQuery(); + Uint8List jsonRaw = Uint8List.fromList([]); + await query.exportJsonRaw((raw) { + jsonRaw = Uint8List.fromList(raw); + }); + await fixture.getSut().importJsonRaw(jsonRaw); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('importJsonRaw', breadcrumb); + }); + + test('put adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().put(Person()); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('put', breadcrumb); + }); + + test('putAll adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().putAll([Person()]); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('putAll', breadcrumb); + }); + + test('putAllByIndex adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().putAllByIndex('name', [Person()]); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('putAllByIndex', breadcrumb); + }); + + test('putByIndex adds breadcrumb', () async { + await fixture.sentryIsar.writeTxn(() async { + await fixture.getSut().putByIndex('name', Person()); + }); + final breadcrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('putByIndex', breadcrumb); + }); + }); + + group('add error breadcrumbs', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); + when(fixture.isarCollection.name).thenReturn(Fixture.dbCollection); + + await fixture.setUp(); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('throwing clear adds error breadcrumb', () async { + when(fixture.isarCollection.clear()).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).clear(); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'clear', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing count adds error breadcrumb', () async { + when(fixture.isarCollection.count()).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).count(); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'count', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing delete adds error breadcrumb', () async { + when(fixture.isarCollection.delete(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).delete(0); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'delete', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing deleteAll adds error breadcrumb', () async { + when(fixture.isarCollection.deleteAll(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).deleteAll([0]); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'deleteAll', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing deleteAllByIndex adds error breadcrumb', () async { + when(fixture.isarCollection.deleteAllByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).deleteAllByIndex('name', []); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'deleteAllByIndex', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing deleteByIndex adds error breadcrumb', () async { + when(fixture.isarCollection.deleteByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).deleteByIndex('name', []); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'deleteByIndex', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing get adds error breadcrumb', () async { + when(fixture.isarCollection.get(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).get(1); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'get', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing getAll adds error breadcrumb', () async { + when(fixture.isarCollection.getAll(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).getAll([1]); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'getAll', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing getAllByIndex adds error breadcrumb', () async { + when(fixture.isarCollection.getAllByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).getAllByIndex('name', []); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'getAllByIndex', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing getByIndex adds error breadcrumb', () async { + when(fixture.isarCollection.getByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).getByIndex('name', []); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'getByIndex', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing getSize adds error breadcrumb', () async { + when(fixture.isarCollection.getSize()).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).getSize(); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'getSize', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing importJson adds error breadcrumb', () async { + when(fixture.isarCollection.importJson(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).importJson([]); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'importJson', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing importJsonRaw adds error breadcrumb', () async { + when(fixture.isarCollection.importJsonRaw(any)) + .thenThrow(fixture.exception); + try { + await fixture + .getSut(injectMock: true) + .importJsonRaw(Uint8List.fromList([])); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'importJsonRaw', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing put adds error breadcrumb', () async { + when(fixture.isarCollection.put(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).put(Person()); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'put', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing putAll adds error breadcrumb', () async { + when(fixture.isarCollection.putAll(any)).thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).putAll([Person()]); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'putAll', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing putAllByIndex adds error breadcrumb', () async { + when(fixture.isarCollection.putAllByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture + .getSut(injectMock: true) + .putAllByIndex('name', [Person()]); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'putAllByIndex', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing putByIndex adds error breadcrumb', () async { + when(fixture.isarCollection.putByIndex(any, any)) + .thenThrow(fixture.exception); + try { + await fixture.getSut(injectMock: true).putByIndex('name', Person()); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'putByIndex', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + }); } class Fixture { @@ -440,6 +887,7 @@ class Fixture { final _context = SentryTransactionContext('name', 'operation'); late final tracer = SentryTracer(_context, hub); late Isar sentryIsar; + late final scope = Scope(options); Future setUp() async { // Make sure to use flutter test -j 1 to avoid tests running in parallel. This would break the automatic download. @@ -473,4 +921,8 @@ class Fixture { SentrySpan? getCreatedSpan() { return tracer.children.last; } + + Breadcrumb? getCreatedBreadcrumb() { + return hub.scope.breadcrumbs.last; + } } diff --git a/isar/test/sentry_isar_test.dart b/isar/test/sentry_isar_test.dart index 70cc23c832..222226fa53 100644 --- a/isar/test/sentry_isar_test.dart +++ b/isar/test/sentry_isar_test.dart @@ -15,19 +15,13 @@ import 'mocks/mocks.mocks.dart'; import 'person.dart'; void main() { - void verifySpan( - String description, - SentrySpan? span, { - bool checkName = false, - }) { + void verifySpan(String description, SentrySpan? span) { expect(span?.context.operation, SentryIsar.dbOp); expect(span?.context.description, description); expect(span?.status, SpanStatus.ok()); // ignore: invalid_use_of_internal_member expect(span?.origin, SentryTraceOrigins.autoDbIsar); - if (checkName) { - expect(span?.data[SentryIsar.dbNameKey], Fixture.dbName); - } + expect(span?.data[SentryIsar.dbNameKey], Fixture.dbName); } void verifyErrorSpan(String description, SentrySpan? span, Exception error) { @@ -39,6 +33,23 @@ void main() { expect(span?.throwable, error); } + void verifyBreadcrumb( + String message, + Breadcrumb? crumb, { + String status = 'ok', + }) { + expect( + crumb?.message, + message, + ); + expect(crumb?.type, 'query'); + expect(crumb?.data?[SentryIsar.dbNameKey], Fixture.dbName); + expect(crumb?.data?['status'], status); + if (status != 'ok') { + expect(crumb?.level, SentryLevel.warning); + } + } + group('add spans', () { late Fixture fixture; @@ -47,6 +58,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); await fixture.setUp(); }); @@ -57,7 +69,7 @@ void main() { test('open adds span', () async { final span = fixture.getCreatedSpan(); - verifySpan('open', span, checkName: true); + verifySpan('open', span); }); test('clear adds span', () async { @@ -65,37 +77,37 @@ void main() { await fixture.sut.clear(); }); final span = fixture.getCreatedSpan(); - verifySpan('clear', span, checkName: true); + verifySpan('clear', span); }); test('close adds span', () async { await fixture.sut.close(); final span = fixture.getCreatedSpan(); - verifySpan('close', span, checkName: true); + verifySpan('close', span); }); test('copyToFile adds span', () async { await fixture.sut.copyToFile(fixture.copyPath); final span = fixture.getCreatedSpan(); - verifySpan('copyToFile', span, checkName: true); + verifySpan('copyToFile', span); }); test('getSize adds span', () async { await fixture.sut.getSize(); final span = fixture.getCreatedSpan(); - verifySpan('getSize', span, checkName: true); + verifySpan('getSize', span); }); test('txn adds span', () async { await fixture.sut.txn(() async {}); final span = fixture.getCreatedSpan(); - verifySpan('txn', span, checkName: true); + verifySpan('txn', span); }); test('writeTxn adds span', () async { await fixture.sut.writeTxn(() async {}); final span = fixture.getCreatedSpan(); - verifySpan('writeTxn', span, checkName: true); + verifySpan('writeTxn', span); }); }); @@ -107,6 +119,8 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); + when(fixture.isar.close()).thenAnswer((_) async { return true; }); @@ -186,6 +200,185 @@ void main() { }); }); + group('adds breadcrumbs', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); + + await fixture.setUp(); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('open adds breadcrumb', () async { + final breadcrumb = fixture.getCreatedBreadcrumb(); + verifyBreadcrumb('open', breadcrumb); + }); + + test('clear adds breadcrumb', () async { + await fixture.sut.writeTxn(() async { + await fixture.sut.clear(); + }); + + // order: open, clear, writeTxn + + final openCrumb = fixture.hub.scope.breadcrumbs[0]; + verifyBreadcrumb('open', openCrumb); + + final clearCrumb = fixture.hub.scope.breadcrumbs[1]; + verifyBreadcrumb('clear', clearCrumb); + + final writeTxnCrumb = fixture.hub.scope.breadcrumbs[2]; + verifyBreadcrumb('writeTxn', writeTxnCrumb); + }); + + test('close adds breadcrumb', () async { + await fixture.sut.close(); + final breadcrumb = fixture.getCreatedBreadcrumb(); + verifyBreadcrumb('close', breadcrumb); + }); + + test('copyToFile adds breadcrumb', () async { + await fixture.sut.copyToFile(fixture.copyPath); + final breadcrumb = fixture.getCreatedBreadcrumb(); + verifyBreadcrumb('copyToFile', breadcrumb); + }); + + test('getSize adds breadcrumb', () async { + await fixture.sut.getSize(); + final breadcrumb = fixture.getCreatedBreadcrumb(); + verifyBreadcrumb('getSize', breadcrumb); + }); + + test('txn adds breadcrumb', () async { + await fixture.sut.txn(() async {}); + final breadcrumb = fixture.getCreatedBreadcrumb(); + verifyBreadcrumb('txn', breadcrumb); + }); + + test('writeTxn adds breadcrumb', () async { + await fixture.sut.writeTxn(() async {}); + final breadcrumb = fixture.getCreatedBreadcrumb(); + verifyBreadcrumb('writeTxn', breadcrumb); + }); + }); + + group('add error breadcrumbs', () { + late Fixture fixture; + + setUp(() async { + fixture = Fixture(); + + when(fixture.hub.options).thenReturn(fixture.options); + when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); + + when(fixture.isar.close()).thenAnswer((_) async { + return true; + }); + when(fixture.isar.name).thenReturn(Fixture.dbName); + + await fixture.setUp(injectMock: true); + }); + + tearDown(() async { + await fixture.tearDown(); + }); + + test('throwing close adds error breadcrumb', () async { + when(fixture.isar.close()).thenThrow(fixture.exception); + try { + await fixture.sut.close(); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'close', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing clear adds error breadcrumb', () async { + when(fixture.isar.clear()).thenThrow(fixture.exception); + try { + await fixture.sut.clear(); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'clear', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing copyToFile adds error breadcrumb', () async { + when(fixture.isar.copyToFile(any)).thenThrow(fixture.exception); + try { + await fixture.sut.copyToFile(fixture.copyPath); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'copyToFile', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing getSize adds error breadcrumb', () async { + when(fixture.isar.getSize()).thenThrow(fixture.exception); + try { + await fixture.sut.getSize(); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'getSize', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing txn adds error breadcrumb', () async { + param() async {} + when(fixture.isar.txn(param)).thenThrow(fixture.exception); + try { + await fixture.sut.txn(param); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'txn', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + + test('throwing writeTxn adds error breadcrumb', () async { + param() async {} + when(fixture.isar.writeTxn(param)).thenThrow(fixture.exception); + try { + await fixture.sut.writeTxn(param); + } catch (error) { + expect(error, fixture.exception); + } + verifyBreadcrumb( + 'writeTxn', + fixture.getCreatedBreadcrumb(), + status: 'internal_error', + ); + }); + }); + group('integrations', () { late Fixture fixture; @@ -194,6 +387,7 @@ void main() { when(fixture.hub.options).thenReturn(fixture.options); when(fixture.hub.getSpan()).thenReturn(fixture.tracer); + when(fixture.hub.scope).thenReturn(fixture.scope); await fixture.setUp(); }); @@ -233,6 +427,7 @@ class Fixture { final _context = SentryTransactionContext('name', 'operation'); late final tracer = SentryTracer(_context, hub); late Isar sut; + late final scope = Scope(options); Future setUp({bool injectMock = false}) async { if (injectMock) { @@ -268,6 +463,10 @@ class Fixture { return tracer.children.last; } + Breadcrumb? getCreatedBreadcrumb() { + return hub.scope.breadcrumbs.last; + } + Future deleteCopyPath() async { final file = File(copyPath); if (await file.exists()) { From 1cdcacf02367fc5937faac0a53973741676d7e40 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 12:43:48 +0100 Subject: [PATCH 121/166] chore: update flutter/scripts/update-cocoa.sh to 8.18.0 (#1803) Co-authored-by: GitHub --- CHANGELOG.md | 3 +++ flutter/ios/sentry_flutter.podspec | 2 +- flutter/lib/src/native/cocoa/binding.dart | 32 ++++++++++++++--------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a099b054d8..864bc01d69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,9 @@ - Bump Android SDK from v7.0.0 to v7.1.0 ([#1788](https://github.com/getsentry/sentry-dart/pull/1788)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#710) - [diff](https://github.com/getsentry/sentry-java/compare/7.0.0...7.1.0) +- Bump Cocoa SDK from v8.17.2 to v8.18.0 ([#1803](https://github.com/getsentry/sentry-dart/pull/1803)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8180) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.17.2...8.18.0) ## 7.14.0 diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 15edfce6d7..1dc2c0fa06 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.17.2' + s.dependency 'Sentry/HybridSDK', '8.18.0' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' diff --git a/flutter/lib/src/native/cocoa/binding.dart b/flutter/lib/src/native/cocoa/binding.dart index 646a6bea83..d614c12b1b 100644 --- a/flutter/lib/src/native/cocoa/binding.dart +++ b/flutter/lib/src/native/cocoa/binding.dart @@ -37603,7 +37603,8 @@ class ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool extends _ObjCBlockBase { ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( SentryCocoa lib, ffi.Pointer< - ffi.NativeFunction< + ffi + .NativeFunction< ffi.Bool Function(ffi.Pointer arg0, ffi.UnsignedLong arg1, ffi.Pointer arg2)>> ptr) @@ -42031,15 +42032,17 @@ class ObjCBlock_bool_ObjCObject_bool extends _ObjCBlockBase { ffi.Pointer arg1)>> ptr) : this._( - lib._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>( - _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, false) - .cast(), - ptr.cast()), + lib + ._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, + false) + .cast(), + ptr.cast()), lib); static ffi.Pointer? _cFuncTrampoline; @@ -70495,15 +70498,18 @@ class PrivateSentrySDKOnly extends NSObject { /// Collect a profiler session data associated with the given @c SentryId. /// This also discards the profiler. - static NSDictionary collectProfileBetween_and_forTrace_(SentryCocoa _lib, - int startSystemTime, int endSystemTime, SentryId? traceId) { + static NSMutableDictionary collectProfileBetween_and_forTrace_( + SentryCocoa _lib, + int startSystemTime, + int endSystemTime, + SentryId? traceId) { final _ret = _lib._objc_msgSend_1059( _lib._class_PrivateSentrySDKOnly1, _lib._sel_collectProfileBetween_and_forTrace_1, startSystemTime, endSystemTime, traceId?._id ?? ffi.nullptr); - return NSDictionary._(_ret, _lib, retain: true, release: true); + return NSMutableDictionary._(_ret, _lib, retain: true, release: true); } /// Discard profiler session data associated with the given @c SentryId. From d0312c9616494d7365a21482a4564461e3bbd14d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 9 Jan 2024 10:10:06 +0000 Subject: [PATCH 122/166] Add `beforeScreenshotCallback` to `SentryFlutterOptions` (#1805) --- CHANGELOG.md | 1 + .../screenshot_event_processor.dart | 26 ++++++ flutter/lib/src/native/cocoa/binding.dart | 23 +++-- flutter/lib/src/sentry_flutter_options.dart | 17 +++- .../screenshot_event_processor_test.dart | 88 ++++++++++++++++++- 5 files changed, 139 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 864bc01d69..f822c59ae8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - APM for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) - Add isar breadcrumbs ([#1800](https://github.com/getsentry/sentry-dart/pull/1800)) - Starting with Flutter 3.16, Sentry adds the [`appFlavor`](https://api.flutter.dev/flutter/services/appFlavor-constant.html) to the `flutter_context` ([#1799](https://github.com/getsentry/sentry-dart/pull/1799)) +- Add beforeScreenshotCallback to SentryFlutterOptions ([#1805](https://github.com/getsentry/sentry-dart/pull/1805)) ### Dependencies diff --git a/flutter/lib/src/event_processor/screenshot_event_processor.dart b/flutter/lib/src/event_processor/screenshot_event_processor.dart index 263722fdad..48e0a4c4d6 100644 --- a/flutter/lib/src/event_processor/screenshot_event_processor.dart +++ b/flutter/lib/src/event_processor/screenshot_event_processor.dart @@ -30,6 +30,32 @@ class ScreenshotEventProcessor implements EventProcessor { _hasSentryScreenshotWidget) { return event; } + final beforeScreenshot = _options.beforeScreenshot; + if (beforeScreenshot != null) { + try { + final result = beforeScreenshot(event, hint: hint); + bool takeScreenshot; + if (result is Future) { + takeScreenshot = await result; + } else { + takeScreenshot = result; + } + if (!takeScreenshot) { + return event; + } + } catch (exception, stackTrace) { + _options.logger( + SentryLevel.error, + 'The beforeScreenshot callback threw an exception', + exception: exception, + stackTrace: stackTrace, + ); + // ignore: invalid_use_of_internal_member + if (_options.automatedTestMode) { + rethrow; + } + } + } final renderer = _options.rendererWrapper.getRenderer(); diff --git a/flutter/lib/src/native/cocoa/binding.dart b/flutter/lib/src/native/cocoa/binding.dart index d614c12b1b..41350a3a2c 100644 --- a/flutter/lib/src/native/cocoa/binding.dart +++ b/flutter/lib/src/native/cocoa/binding.dart @@ -37603,8 +37603,7 @@ class ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool extends _ObjCBlockBase { ObjCBlock_bool_ObjCObject_ffiUnsignedLong_bool.fromFunctionPointer( SentryCocoa lib, ffi.Pointer< - ffi - .NativeFunction< + ffi.NativeFunction< ffi.Bool Function(ffi.Pointer arg0, ffi.UnsignedLong arg1, ffi.Pointer arg2)>> ptr) @@ -42032,17 +42031,15 @@ class ObjCBlock_bool_ObjCObject_bool extends _ObjCBlockBase { ffi.Pointer arg1)>> ptr) : this._( - lib - ._newBlock1( - _cFuncTrampoline ??= ffi.Pointer.fromFunction< - ffi.Bool Function( - ffi.Pointer<_ObjCBlock> block, - ffi.Pointer arg0, - ffi.Pointer arg1)>( - _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, - false) - .cast(), - ptr.cast()), + lib._newBlock1( + _cFuncTrampoline ??= ffi.Pointer.fromFunction< + ffi.Bool Function( + ffi.Pointer<_ObjCBlock> block, + ffi.Pointer arg0, + ffi.Pointer arg1)>( + _ObjCBlock_bool_ObjCObject_bool_fnPtrTrampoline, false) + .cast(), + ptr.cast()), lib); static ffi.Pointer? _cFuncTrampoline; diff --git a/flutter/lib/src/sentry_flutter_options.dart b/flutter/lib/src/sentry_flutter_options.dart index 3806397465..ee722f8e9e 100644 --- a/flutter/lib/src/sentry_flutter_options.dart +++ b/flutter/lib/src/sentry_flutter_options.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:meta/meta.dart'; import 'package:sentry/sentry.dart'; import 'package:flutter/widgets.dart'; @@ -5,8 +7,9 @@ import 'package:flutter/widgets.dart'; import 'binding_wrapper.dart'; import 'renderer/renderer.dart'; import 'screenshot/sentry_screenshot_quality.dart'; +import 'event_processor/screenshot_event_processor.dart'; -/// This class adds options which are only availble in a Flutter environment. +/// This class adds options which are only available in a Flutter environment. /// Note that some of these options require native Sentry integration, which is /// not available on all platforms. class SentryFlutterOptions extends SentryOptions { @@ -169,6 +172,11 @@ class SentryFlutterOptions extends SentryOptions { /// Only attach a screenshot when the app is resumed. bool attachScreenshotOnlyWhenResumed = false; + /// Sets a callback which is executed before capturing screenshots. Only + /// relevant if `attachScreenshot` is set to true. When false is returned + /// from the function, no screenshot will be attached. + BeforeScreenshotCallback? beforeScreenshot; + /// Enable or disable automatic breadcrumbs for User interactions Using [Listener] /// /// Requires adding the [SentryUserInteractionWidget] to the widget tree. @@ -289,3 +297,10 @@ class SentryFlutterOptions extends SentryOptions { /// The [navigatorKey] is used to add information of the currently used locale to the contexts. GlobalKey? navigatorKey; } + +/// Callback being executed in [ScreenshotEventProcessor], deciding if a +/// screenshot should be recorded and attached. +typedef BeforeScreenshotCallback = FutureOr Function( + SentryEvent event, { + Hint? hint, +}); diff --git a/flutter/test/event_processor/screenshot_event_processor_test.dart b/flutter/test/event_processor/screenshot_event_processor_test.dart index e0ed2eb182..4beeea3ef3 100644 --- a/flutter/test/event_processor/screenshot_event_processor_test.dart +++ b/flutter/test/event_processor/screenshot_event_processor_test.dart @@ -14,6 +14,9 @@ void main() { TestWidgetsFlutterBinding.ensureInitialized(); late Fixture fixture; + late SentryEvent event; + late Hint hint; + setUp(() { fixture = Fixture(); }); @@ -34,8 +37,8 @@ void main() { textDirection: TextDirection.ltr))); final throwable = Exception(); - final event = SentryEvent(throwable: throwable); - final hint = Hint(); + event = SentryEvent(throwable: throwable); + hint = Hint(); await sut.apply(event, hint: hint); expect(hint.screenshot != null, added); @@ -91,6 +94,87 @@ void main() { await _addScreenshotAttachment(tester, null, added: true, isWeb: false, expectedMaxWidthOrHeight: widthOrHeight); }); + + group('beforeScreenshot', () { + testWidgets('does add screenshot if beforeScreenshot returns true', + (tester) async { + fixture.options.beforeScreenshot = (SentryEvent event, {Hint? hint}) { + return true; + }; + await _addScreenshotAttachment(tester, FlutterRenderer.canvasKit, + added: true, isWeb: false); + }); + + testWidgets('does add screenshot if async beforeScreenshot returns true', + (tester) async { + fixture.options.beforeScreenshot = + (SentryEvent event, {Hint? hint}) async { + await Future.delayed(Duration(milliseconds: 1)); + return true; + }; + await _addScreenshotAttachment(tester, FlutterRenderer.canvasKit, + added: true, isWeb: false); + }); + + testWidgets('does not add screenshot if beforeScreenshot returns false', + (tester) async { + fixture.options.beforeScreenshot = (SentryEvent event, {Hint? hint}) { + return false; + }; + await _addScreenshotAttachment(tester, FlutterRenderer.canvasKit, + added: false, isWeb: false); + }); + + testWidgets( + 'does not add screenshot if async beforeScreenshot returns false', + (tester) async { + fixture.options.beforeScreenshot = + (SentryEvent event, {Hint? hint}) async { + await Future.delayed(Duration(milliseconds: 1)); + return false; + }; + await _addScreenshotAttachment(tester, FlutterRenderer.canvasKit, + added: false, isWeb: false); + }); + + testWidgets('does add screenshot if beforeScreenshot throws', + (tester) async { + fixture.options.beforeScreenshot = (SentryEvent event, {Hint? hint}) { + throw Error(); + }; + await _addScreenshotAttachment(tester, FlutterRenderer.canvasKit, + added: true, isWeb: false); + }); + + testWidgets('does add screenshot if async beforeScreenshot throws', + (tester) async { + fixture.options.beforeScreenshot = + (SentryEvent event, {Hint? hint}) async { + await Future.delayed(Duration(milliseconds: 1)); + throw Error(); + }; + await _addScreenshotAttachment(tester, FlutterRenderer.canvasKit, + added: true, isWeb: false); + }); + + testWidgets('passes event & hint to beforeScreenshot callback', + (tester) async { + SentryEvent? beforeScreenshotEvent; + Hint? beforeScreenshotHint; + + fixture.options.beforeScreenshot = (SentryEvent event, {Hint? hint}) { + beforeScreenshotEvent = event; + beforeScreenshotHint = hint; + return true; + }; + + await _addScreenshotAttachment(tester, FlutterRenderer.canvasKit, + added: true, isWeb: false); + + expect(beforeScreenshotEvent, event); + expect(beforeScreenshotHint, hint); + }); + }); } class Fixture { From 92562b3ddcfddb3573653eb00bd135912ae84b5e Mon Sep 17 00:00:00 2001 From: Oleg Magomedov <69794332+smart7even@users.noreply.github.com> Date: Mon, 15 Jan 2024 12:29:55 +0300 Subject: [PATCH 123/166] fix typo in docs (#1816) --- flutter/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flutter/README.md b/flutter/README.md index ed8b2d2007..41e835aea8 100644 --- a/flutter/README.md +++ b/flutter/README.md @@ -99,7 +99,7 @@ runApp( ); ``` -This adds performance tracing for all `AssetBundle` usages, where the `AssetBundle` is accessed with `DefaultAssetBunlde.of(context)`. +This adds performance tracing for all `AssetBundle` usages, where the `AssetBundle` is accessed with `DefaultAssetBundle.of(context)`. This includes all of Flutters internal access of `AssetBundle`s, like `Image.asset` for example. ##### Tracking HTTP events From 24b6e601e2c8a3bc70ac06d1d0293067d3df5351 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 15 Jan 2024 12:17:38 +0100 Subject: [PATCH 124/166] chore: update metrics/flutter.properties to 3.16.7 (#1814) Co-authored-by: GitHub --- metrics/flutter.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metrics/flutter.properties b/metrics/flutter.properties index 8ec4606076..d423be6b0c 100644 --- a/metrics/flutter.properties +++ b/metrics/flutter.properties @@ -1,2 +1,2 @@ -version = 3.16.5 +version = 3.16.7 repo = https://github.com/flutter/flutter From 552c543f85f4895866773acf3782c5f53b2e539f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Wed, 17 Jan 2024 09:01:28 +0000 Subject: [PATCH 125/166] Add support for `readTransaction` in `sqflite` (#1819) --- CHANGELOG.md | 3 +- sqflite/lib/src/sentry_database.dart | 93 +++++++++++++++++++++++++- sqflite/test/sentry_database_test.dart | 42 ++++++++++++ 3 files changed, 134 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f822c59ae8..fd7f354246 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,8 @@ - Add isar breadcrumbs ([#1800](https://github.com/getsentry/sentry-dart/pull/1800)) - Starting with Flutter 3.16, Sentry adds the [`appFlavor`](https://api.flutter.dev/flutter/services/appFlavor-constant.html) to the `flutter_context` ([#1799](https://github.com/getsentry/sentry-dart/pull/1799)) - Add beforeScreenshotCallback to SentryFlutterOptions ([#1805](https://github.com/getsentry/sentry-dart/pull/1805)) - +- Add support for `readTransaction` in `sqflite` ([#1819](https://github.com/getsentry/sentry-dart/pull/1819)) + ### Dependencies - Bump Android SDK from v7.0.0 to v7.1.0 ([#1788](https://github.com/getsentry/sentry-dart/pull/1788)) diff --git a/sqflite/lib/src/sentry_database.dart b/sqflite/lib/src/sentry_database.dart index fafcad06d9..23ac1dae63 100644 --- a/sqflite/lib/src/sentry_database.dart +++ b/sqflite/lib/src/sentry_database.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:meta/meta.dart'; import 'package:sentry/sentry.dart'; import 'package:sqflite/sqflite.dart'; @@ -32,7 +34,10 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { // ignore: public_member_api_docs static const dbSqlQueryOp = 'db.sql.query'; - static const _dbSqlOp = 'db.sql.transaction'; + static const _dbSqlTransactionOp = 'db.sql.transaction'; + + static const _dbSqlReadTransactionOp = 'db.sql.read_transaction'; + @internal // ignore: public_member_api_docs static const dbSystemKey = 'db.system'; @@ -143,7 +148,7 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { final currentSpan = _hub.getSpan(); final description = 'Transaction DB: ${_database.path}'; final span = currentSpan?.startChild( - _dbSqlOp, + _dbSqlTransactionOp, description: description, ); // ignore: invalid_use_of_internal_member @@ -152,7 +157,7 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { var breadcrumb = Breadcrumb( message: description, - category: _dbSqlOp, + category: _dbSqlTransactionOp, data: {}, type: 'query', ); @@ -196,4 +201,86 @@ class SentryDatabase extends SentryDatabaseExecutor implements Database { } }); } + + @override + // ignore: override_on_non_overriding_member, public_member_api_docs + Future readTransaction(Future Function(Transaction txn) action) { + return Future(() async { + final currentSpan = _hub.getSpan(); + final description = 'Transaction DB: ${_database.path}'; + final span = currentSpan?.startChild( + _dbSqlReadTransactionOp, + description: description, + ); + // ignore: invalid_use_of_internal_member + span?.origin = SentryTraceOrigins.autoDbSqfliteDatabase; + setDatabaseAttributeData(span, dbName); + + var breadcrumb = Breadcrumb( + message: description, + category: _dbSqlReadTransactionOp, + data: {}, + type: 'query', + ); + setDatabaseAttributeOnBreadcrumb(breadcrumb, dbName); + + Future newAction(Transaction txn) async { + final executor = SentryDatabaseExecutor( + txn, + parentSpan: span, + hub: _hub, + dbName: dbName, + ); + final sentrySqfliteTransaction = + SentrySqfliteTransaction(executor, hub: _hub, dbName: dbName); + + return await action(sentrySqfliteTransaction); + } + + try { + final futureOrResult = _resolvedReadTransaction(newAction); + T result; + + if (futureOrResult is Future) { + result = await futureOrResult; + } else { + result = futureOrResult; + } + + span?.status = SpanStatus.ok(); + breadcrumb.data?['status'] = 'ok'; + + return result; + } catch (exception) { + span?.throwable = exception; + span?.status = SpanStatus.internalError(); + breadcrumb.data?['status'] = 'internal_error'; + breadcrumb = breadcrumb.copyWith( + level: SentryLevel.warning, + ); + + rethrow; + } finally { + await span?.finish(); + + // ignore: invalid_use_of_internal_member + await _hub.scope.addBreadcrumb(breadcrumb); + } + }); + } + + FutureOr _resolvedReadTransaction( + Future Function(Transaction txn) action, + ) async { + try { + // ignore: return_of_invalid_type + final result = await (_database as dynamic).readTransaction(action); + // Await and cast, as directly returning the future resulted in a runtime error. + return result as T; + } on NoSuchMethodError catch (_) { + // The `readTransaction` does not exists on sqflite version < 2.5.0+2. + // Fallback to transaction instead. + return _database.transaction(action); + } + } } diff --git a/sqflite/test/sentry_database_test.dart b/sqflite/test/sentry_database_test.dart index ad1a07b360..492da311df 100644 --- a/sqflite/test/sentry_database_test.dart +++ b/sqflite/test/sentry_database_test.dart @@ -107,6 +107,27 @@ void main() { await db.close(); }); + test('creates readTransaction span', () async { + final db = await fixture.getSut(); + + await db.readTransaction((txn) async { + expect(txn is SentrySqfliteTransaction, true); + }); + final span = fixture.tracer.children.last; + expect(span.context.operation, 'db.sql.read_transaction'); + expect(span.context.description, 'Transaction DB: $inMemoryDatabasePath'); + expect(span.status, SpanStatus.ok()); + expect(span.data[SentryDatabase.dbSystemKey], SentryDatabase.dbSystem); + expect(span.data[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect( + span.origin, + // ignore: invalid_use_of_internal_member + SentryTraceOrigins.autoDbSqfliteDatabase, + ); + + await db.close(); + }); + test('creates transaction breadcrumb', () async { final db = await fixture.getSut(); @@ -128,6 +149,27 @@ void main() { await db.close(); }); + test('creates readTransaction breadcrumb', () async { + final db = await fixture.getSut(); + + await db.readTransaction((txn) async { + expect(txn is SentrySqfliteTransaction, true); + }); + + final breadcrumb = fixture.hub.scope.breadcrumbs.first; + expect(breadcrumb.message, 'Transaction DB: $inMemoryDatabasePath'); + expect(breadcrumb.category, 'db.sql.read_transaction'); + expect(breadcrumb.data?['status'], 'ok'); + expect( + breadcrumb.data?[SentryDatabase.dbSystemKey], + SentryDatabase.dbSystem, + ); + expect(breadcrumb.data?[SentryDatabase.dbNameKey], inMemoryDatabasePath); + expect(breadcrumb.type, 'query'); + + await db.close(); + }); + test('creates transaction children run by the transaction', () async { final db = await fixture.getSut(); From d68bee781fa063972c3b0e8341c49be33f593441 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Mon, 22 Jan 2024 13:54:19 -0500 Subject: [PATCH 126/166] ci: disable some tests temporarily (#1835) --- .github/workflows/dart.yml | 3 ++- .github/workflows/flutter_test.yml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 779cf5ea90..2eedf96de9 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -31,7 +31,8 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest, macos-latest] + # TODO: exclude windows for now, because of failing tests in the new image runner + os: [ubuntu-latest, macos-latest] sdk: [stable, beta] exclude: - os: windows-latest diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index d1ce043f54..33990219b3 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -120,7 +120,8 @@ jobs: fail-fast: false matrix: sdk: ["stable", "beta"] - target: ["ios", "macos"] + # TODO: remove ios for now, will be fixed in v8 + target: ["macos"] steps: - name: checkout uses: actions/checkout@v4 From 7551d2930b29d9a29747d4786134d2614a84594e Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Mon, 22 Jan 2024 19:17:46 +0000 Subject: [PATCH 127/166] release: 7.15.0 --- CHANGELOG.md | 2 +- dart/lib/src/version.dart | 2 +- dart/pubspec.yaml | 2 +- dio/lib/src/version.dart | 2 +- dio/pubspec.yaml | 4 ++-- drift/lib/src/version.dart | 2 +- drift/pubspec.yaml | 4 ++-- file/lib/src/version.dart | 2 +- file/pubspec.yaml | 4 ++-- flutter/example/pubspec.yaml | 2 +- flutter/lib/src/version.dart | 2 +- flutter/pubspec.yaml | 4 ++-- hive/lib/src/version.dart | 2 +- hive/pubspec.yaml | 4 ++-- isar/lib/src/version.dart | 2 +- isar/pubspec.yaml | 4 ++-- logging/lib/src/version.dart | 2 +- logging/pubspec.yaml | 4 ++-- sqflite/lib/src/version.dart | 2 +- sqflite/pubspec.yaml | 4 ++-- 20 files changed, 28 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd7f354246..e073b7b29f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 7.15.0 ### Features diff --git a/dart/lib/src/version.dart b/dart/lib/src/version.dart index dc38fd3e11..cd68dd9443 100644 --- a/dart/lib/src/version.dart +++ b/dart/lib/src/version.dart @@ -9,7 +9,7 @@ library version; /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.14.0'; +const String sdkVersion = '7.15.0'; String sdkName(bool isWeb) => isWeb ? _browserSdkName : _ioSdkName; diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index 2580a618d3..e4668ad96d 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry -version: 7.14.0 +version: 7.15.0 description: > A crash reporting library for Dart that sends crash reports to Sentry.io. This library supports Dart VM and Web. For Flutter consider sentry_flutter instead. diff --git a/dio/lib/src/version.dart b/dio/lib/src/version.dart index 9737ee6520..a0d410b5dd 100644 --- a/dio/lib/src/version.dart +++ b/dio/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.14.0'; +const String sdkVersion = '7.15.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_dio'; diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index 92e57a96a9..abd613d381 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_dio description: An integration which adds support for performance tracing for the Dio package. -version: 7.14.0 +version: 7.15.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: dio: ^5.0.0 - sentry: 7.14.0 + sentry: 7.15.0 dev_dependencies: meta: ^1.3.0 diff --git a/drift/lib/src/version.dart b/drift/lib/src/version.dart index 621ab96e95..0a1bc2ce4d 100644 --- a/drift/lib/src/version.dart +++ b/drift/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.14.0'; +const String sdkVersion = '7.15.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_drift'; diff --git a/drift/pubspec.yaml b/drift/pubspec.yaml index df6380ba9d..af1d524c8b 100644 --- a/drift/pubspec.yaml +++ b/drift/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_drift description: An integration which adds support for performance tracing for the drift package. -version: 7.14.0 +version: 7.15.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' dependencies: - sentry: 7.14.0 + sentry: 7.15.0 meta: ^1.3.0 drift: ^2.13.0 diff --git a/file/lib/src/version.dart b/file/lib/src/version.dart index 6900c8de5d..27f4d170a5 100644 --- a/file/lib/src/version.dart +++ b/file/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.14.0'; +const String sdkVersion = '7.15.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_file'; diff --git a/file/pubspec.yaml b/file/pubspec.yaml index 273124df8f..60c56c6248 100644 --- a/file/pubspec.yaml +++ b/file/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_file description: An integration which adds support for performance tracing for dart.io.File. -version: 7.14.0 +version: 7.15.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: sdk: '>=2.19.0 <4.0.0' dependencies: - sentry: 7.14.0 + sentry: 7.15.0 meta: ^1.3.0 dev_dependencies: diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index 0f279e8e8f..bb021595c1 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_flutter_example description: Demonstrates how to use the sentry_flutter plugin. -version: 7.14.0 +version: 7.15.0 publish_to: 'none' # Remove this line if you wish to publish to pub.dev diff --git a/flutter/lib/src/version.dart b/flutter/lib/src/version.dart index ff71dd6e87..dd50a348fd 100644 --- a/flutter/lib/src/version.dart +++ b/flutter/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.14.0'; +const String sdkVersion = '7.15.0'; /// The default SDK name reported to Sentry.io in the submitted events. const String sdkName = 'sentry.dart.flutter'; diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index d06f95e31e..c41ef8d6b0 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry_flutter -version: 7.14.0 +version: 7.15.0 description: Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supported by Sentry with native SDKs. homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart @@ -15,7 +15,7 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - sentry: 7.14.0 + sentry: 7.15.0 package_info_plus: '>=1.0.0 <=5.0.1' meta: ^1.3.0 ffi: ^2.0.0 diff --git a/hive/lib/src/version.dart b/hive/lib/src/version.dart index 08b6cbe335..b775854f98 100644 --- a/hive/lib/src/version.dart +++ b/hive/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.14.0'; +const String sdkVersion = '7.15.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_hive'; diff --git a/hive/pubspec.yaml b/hive/pubspec.yaml index 1bdad09235..4a8ac02d4e 100644 --- a/hive/pubspec.yaml +++ b/hive/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_hive description: An integration which adds support for performance tracing for the hive package. -version: 7.14.0 +version: 7.15.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -9,7 +9,7 @@ environment: sdk: '>=2.17.0 <4.0.0' dependencies: - sentry: 7.14.0 + sentry: 7.15.0 hive: ^2.2.3 meta: ^1.3.0 diff --git a/isar/lib/src/version.dart b/isar/lib/src/version.dart index 7c1a7d4031..8d8ef99293 100644 --- a/isar/lib/src/version.dart +++ b/isar/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.13.1'; +const String sdkVersion = '7.15.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_isar'; diff --git a/isar/pubspec.yaml b/isar/pubspec.yaml index df066786f8..f618fe7543 100644 --- a/isar/pubspec.yaml +++ b/isar/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_isar description: An integration which adds support for performance tracing for the isar package. -version: 7.13.1 +version: 7.15.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -12,7 +12,7 @@ environment: dependencies: isar: ^3.1.0 isar_flutter_libs: ^3.1.0 # contains Isar Core - sentry: 7.14.0 + sentry: 7.15.0 meta: ^1.3.0 path: ^1.8.3 diff --git a/logging/lib/src/version.dart b/logging/lib/src/version.dart index b1e21478f7..45fd9a81a7 100644 --- a/logging/lib/src/version.dart +++ b/logging/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.14.0'; +const String sdkVersion = '7.15.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_logging'; diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index 02cef6966a..71de51c471 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_logging description: An integration which adds support for recording log from the logging package. -version: 7.14.0 +version: 7.15.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: logging: ^1.0.0 - sentry: 7.14.0 + sentry: 7.15.0 dev_dependencies: lints: ^3.0.0 diff --git a/sqflite/lib/src/version.dart b/sqflite/lib/src/version.dart index 9c361f297d..e0f78f9f60 100644 --- a/sqflite/lib/src/version.dart +++ b/sqflite/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.14.0'; +const String sdkVersion = '7.15.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_sqflite'; diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index 22188a8d91..d3e48214b3 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_sqflite description: An integration which adds support for performance tracing for the sqflite package. -version: 7.14.0 +version: 7.15.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' # matching sqflite dependencies: - sentry: 7.14.0 + sentry: 7.15.0 sqflite: ^2.0.0 sqflite_common: ^2.0.0 meta: ^1.3.0 From 270031a1b1eeaa94c3225fc05854352ce4786027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Tue, 23 Jan 2024 13:11:49 +0000 Subject: [PATCH 128/166] Accept `Map` in `Hint` class (#1807) --- CHANGELOG.md | 11 +++++++++++ dart/lib/src/hint.dart | 18 ++++++++++-------- dart/test/hint_test.dart | 17 +++++++++++++++++ 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e073b7b29f..fc9e7352bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## Unreleased + +### Features + +- Accept `Map` in `Hint` class ([#1807](https://github.com/getsentry/sentry-dart/pull/1807)) + - Please check if everything works as expected when using `Hint` + - Factory constructor `Hint.withMap(Map map)` now takes `Map` instead of `Map` + - Method `hint.addAll(Map keysAndValues)` now takes `Map` instead of `Map` + - Method `set(String key, dynamic value)` now takes value of `dynamic` instead of `Object` + - Method `hint.get(String key)` now returns `dynamic` instead of `Object?` + ## 7.15.0 ### Features diff --git a/dart/lib/src/hint.dart b/dart/lib/src/hint.dart index 87620d7ba1..aaa614518c 100644 --- a/dart/lib/src/hint.dart +++ b/dart/lib/src/hint.dart @@ -40,7 +40,7 @@ import 'sentry_attachment/sentry_attachment.dart'; /// }; /// ``` class Hint { - final Map _internalStorage = {}; + final Map _internalStorage = {}; final List attachments = []; @@ -62,7 +62,7 @@ class Hint { return hint; } - factory Hint.withMap(Map map) { + factory Hint.withMap(Map map) { final hint = Hint(); hint.addAll(map); return hint; @@ -80,17 +80,19 @@ class Hint { return hint; } - // Objects + // Key/Value Storage - void addAll(Map keysAndValues) { - _internalStorage.addAll(keysAndValues); + void addAll(Map keysAndValues) { + final withoutNullValues = + keysAndValues.map((key, value) => MapEntry(key, value ?? "null")); + _internalStorage.addAll(withoutNullValues); } - void set(String key, Object value) { - _internalStorage[key] = value; + void set(String key, dynamic value) { + _internalStorage[key] = value ?? "null"; } - Object? get(String key) { + dynamic get(String key) { return _internalStorage[key]; } diff --git a/dart/test/hint_test.dart b/dart/test/hint_test.dart index d46a022405..04c09a28a0 100644 --- a/dart/test/hint_test.dart +++ b/dart/test/hint_test.dart @@ -82,6 +82,23 @@ void main() { expect(sut.screenshot, attachment); expect(sut.viewHierarchy, attachment); }); + + test('Hint init with map null fallback', () { + final hint = Hint.withMap({'fixture-key': null}); + expect("null", hint.get("fixture-key")); + }); + + test('Hint addAll with map null fallback', () { + final hint = Hint(); + hint.addAll({'fixture-key': null}); + expect("null", hint.get("fixture-key")); + }); + + test('Hint set with null value fallback', () { + final hint = Hint(); + hint.set("fixture-key", null); + expect("null", hint.get("fixture-key")); + }); } class Fixture { From f770c4cf27cf7af52784b27085d7efce09f70004 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 10:05:54 -0500 Subject: [PATCH 129/166] build(deps): bump actions/cache from 3 to 4 (#1833) Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/flutter_test.yml | 2 +- .github/workflows/metrics.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 33990219b3..9a5b583420 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -57,7 +57,7 @@ jobs: uses: gradle/gradle-build-action@v2 - name: AVD cache - uses: actions/cache@v3 + uses: actions/cache@v4 id: avd-cache with: path: | diff --git a/.github/workflows/metrics.yml b/.github/workflows/metrics.yml index c190889723..1e383a93ea 100644 --- a/.github/workflows/metrics.yml +++ b/.github/workflows/metrics.yml @@ -65,7 +65,7 @@ jobs: - run: ./metrics/prepare.sh - - uses: actions/cache@v3 + - uses: actions/cache@v4 id: app-plain-cache with: path: ${{ matrix.appPlain }} From b4b36f589128e047dd1b1e97982328606e1d80e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 15:43:46 -0500 Subject: [PATCH 130/166] build(deps): bump dart-lang/setup-dart from 1.6.0 to 1.6.1 (#1817) Bumps [dart-lang/setup-dart](https://github.com/dart-lang/setup-dart) from 1.6.0 to 1.6.1. - [Release notes](https://github.com/dart-lang/setup-dart/releases) - [Changelog](https://github.com/dart-lang/setup-dart/blob/main/CHANGELOG.md) - [Commits](https://github.com/dart-lang/setup-dart/compare/b64355ae6ca0b5d484f0106a033dd1388965d06d...ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b) --- updated-dependencies: - dependency-name: dart-lang/setup-dart dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/analyze.yml | 2 +- .github/workflows/dart.yml | 2 +- .github/workflows/diagrams.yml | 2 +- .github/workflows/dio.yml | 2 +- .github/workflows/e2e_dart.yml | 2 +- .github/workflows/file.yml | 2 +- .github/workflows/flutter-symbols.yml | 4 ++-- .github/workflows/format-and-fix.yml | 2 +- .github/workflows/hive.yml | 2 +- .github/workflows/logging.yml | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 6218eaa27a..bde8004cec 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -32,7 +32,7 @@ jobs: working-directory: ${{ inputs.package }} steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 + - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 if: ${{ inputs.sdk == 'dart' }} - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 if: ${{ inputs.sdk == 'flutter' }} diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 2eedf96de9..b68c1426ee 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 + - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/diagrams.yml b/.github/workflows/diagrams.yml index a534112e8b..8b8cee500e 100644 --- a/.github/workflows/diagrams.yml +++ b/.github/workflows/diagrams.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest name: "Create class diagrams of all packages" steps: - - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 + - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 with: sdk: stable diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index c85ab43a1a..8f9fa41dc5 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 + - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index 2d66eaf9e2..8a6953a0aa 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -37,7 +37,7 @@ jobs: matrix: sdk: [stable, beta] steps: - - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 + - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 322c24b22e..3d1431f63b 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -41,7 +41,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 + - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/flutter-symbols.yml b/.github/workflows/flutter-symbols.yml index cf4af7c71c..4462ccccc8 100644 --- a/.github/workflows/flutter-symbols.yml +++ b/.github/workflows/flutter-symbols.yml @@ -21,7 +21,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 + - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 - run: dart pub get @@ -33,7 +33,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 + - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 - run: dart pub get diff --git a/.github/workflows/format-and-fix.yml b/.github/workflows/format-and-fix.yml index 89fc66cede..f7d0ec9cfb 100644 --- a/.github/workflows/format-and-fix.yml +++ b/.github/workflows/format-and-fix.yml @@ -30,7 +30,7 @@ jobs: working-directory: ${{ matrix.package.name }} steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 + - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 if: ${{ matrix.package.sdk == 'dart' }} - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 if: ${{ matrix.package.sdk == 'flutter' }} diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 1ff1a8483e..15bef1ecdb 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 + - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index d6af6538bd..4e39833caa 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d # pin@v1 + - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 From 4477d2eb1051cec2f698e56dcaba09b1f87e2227 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 15:44:04 -0500 Subject: [PATCH 131/166] chore(deps): update Flutter SDK (metrics) to v3.16.8 (#1825) * chore: update metrics/flutter.properties to 3.16.8 * update path --------- Co-authored-by: GitHub Co-authored-by: Giancarlo Buenaflor --- .github/workflows/flutter.yml | 1 + metrics/flutter.properties | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index e21b884a01..8847114974 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -11,6 +11,7 @@ on: - "!**/class-diagram.svg" - "dart/**" - "flutter/**" + - "metrics/flutter.properties" jobs: cancel-previous-workflow: diff --git a/metrics/flutter.properties b/metrics/flutter.properties index d423be6b0c..8a0f53ceea 100644 --- a/metrics/flutter.properties +++ b/metrics/flutter.properties @@ -1,2 +1,2 @@ -version = 3.16.7 +version = 3.16.8 repo = https://github.com/flutter/flutter From 2f0d4155e6da1ce20cb783aa4a0638b5cf277ce5 Mon Sep 17 00:00:00 2001 From: Igor Khramtsov Date: Wed, 24 Jan 2024 18:31:44 +0400 Subject: [PATCH 132/166] feat: tracing without performance for dio (#1837) * feat: tracing without performance for dio * chore: update CHANGELOG.md --- CHANGELOG.md | 1 + dio/lib/src/tracing_client_adapter.dart | 31 +++++++++++++++---- dio/test/tracing_client_adapter_test.dart | 37 ++++++++++++++++++----- 3 files changed, 56 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc9e7352bd..c4509dcbf5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Features +- Tracing without performance for Dio integration ([#1837](https://github.com/getsentry/sentry-dart/pull/1837)) - Accept `Map` in `Hint` class ([#1807](https://github.com/getsentry/sentry-dart/pull/1807)) - Please check if everything works as expected when using `Hint` - Factory constructor `Hint.withMap(Map map)` now takes `Map` instead of `Map` diff --git a/dio/lib/src/tracing_client_adapter.dart b/dio/lib/src/tracing_client_adapter.dart index 19a003b633..0c8def1442 100644 --- a/dio/lib/src/tracing_client_adapter.dart +++ b/dio/lib/src/tracing_client_adapter.dart @@ -51,12 +51,12 @@ class TracingClientAdapter implements HttpClientAdapter { ResponseBody? response; try { - if (span != null) { - if (containsTargetOrMatchesRegExp( - // ignore: invalid_use_of_internal_member - _hub.options.tracePropagationTargets, - options.uri.toString(), - )) { + if (containsTargetOrMatchesRegExp( + // ignore: invalid_use_of_internal_member + _hub.options.tracePropagationTargets, + options.uri.toString(), + )) { + if (span != null) { addSentryTraceHeaderFromSpan(span, options.headers); addBaggageHeaderFromSpan( span, @@ -64,6 +64,25 @@ class TracingClientAdapter implements HttpClientAdapter { // ignore: invalid_use_of_internal_member logger: _hub.options.logger, ); + } else { + // ignore: invalid_use_of_internal_member + final scope = _hub.scope; + // ignore: invalid_use_of_internal_member + final propagationContext = scope.propagationContext; + + final traceHeader = propagationContext.toSentryTrace(); + addSentryTraceHeader(traceHeader, options.headers); + + final baggage = propagationContext.baggage; + if (baggage != null) { + final baggageHeader = SentryBaggageHeader.fromBaggage(baggage); + addBaggageHeader( + baggageHeader, + options.headers, + // ignore: invalid_use_of_internal_member + logger: _hub.options.logger, + ); + } } } diff --git a/dio/test/tracing_client_adapter_test.dart b/dio/test/tracing_client_adapter_test.dart index b758c5a765..f67ec4c14d 100644 --- a/dio/test/tracing_client_adapter_test.dart +++ b/dio/test/tracing_client_adapter_test.dart @@ -127,25 +127,48 @@ void main() { ); }); - test('captured span do not add headers if NoOp', () async { + test('do not throw if no span bound to the scope', () async { + final sut = fixture.getSut( + client: fixture.getClient(statusCode: 200, reason: 'OK'), + ); + + await sut.get(requestOptions); + }); + + test('set headers from propagationContext when tracing is disabled', + () async { + fixture._options.enableTracing = false; final sut = fixture.getSut( client: fixture.getClient(statusCode: 200, reason: 'OK'), ); - await fixture._hub - .configureScope((scope) => scope.span = NoOpSentrySpan()); + + final propagationContext = fixture._hub.scope.propagationContext; + propagationContext.baggage = SentryBaggage({'foo': 'bar'}); final response = await sut.get(requestOptions); - expect(response.headers['baggage'], null); - expect(response.headers['sentry-trace'], null); + expect( + response.headers['sentry-trace'], + [propagationContext.toSentryTrace().value], + ); + expect(response.headers['baggage'], ['foo=bar']); }); - test('do not throw if no span bound to the scope', () async { + test('set headers from propagationContext when no transaction', () async { final sut = fixture.getSut( client: fixture.getClient(statusCode: 200, reason: 'OK'), ); - await sut.get(requestOptions); + final propagationContext = fixture._hub.scope.propagationContext; + propagationContext.baggage = SentryBaggage({'foo': 'bar'}); + + final response = await sut.get(requestOptions); + + expect( + response.headers['sentry-trace'], + [propagationContext.toSentryTrace().value], + ); + expect(response.headers['baggage'], ['foo=bar']); }); }); } From 920ec411c43151f7d10b9fc46ddfd5d348136599 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 24 Jan 2024 14:07:36 -0500 Subject: [PATCH 133/166] chore: reenable testing sentry-dart on windows (#1838) * enable windows again * test with chrome * test with chrome * reenable windows test --- .github/workflows/dart.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index b68c1426ee..6ce30080f8 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -31,8 +31,7 @@ jobs: strategy: fail-fast: false matrix: - # TODO: exclude windows for now, because of failing tests in the new image runner - os: [ubuntu-latest, macos-latest] + os: [ubuntu-latest, windows-latest, macos-latest] sdk: [stable, beta] exclude: - os: windows-latest From 7e4a1ec92cb05cfd6226a72e9533240aaa97f180 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 24 Jan 2024 15:04:14 -0500 Subject: [PATCH 134/166] chore: add isar to craft (#1843) * add isar * Update Changelog --- .craft.yml | 1 + CHANGELOG.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.craft.yml b/.craft.yml index 45554efb25..ac5e86e3c7 100644 --- a/.craft.yml +++ b/.craft.yml @@ -13,6 +13,7 @@ targets: sqflite: hive: drift: + isar: - name: github - name: registry sdks: diff --git a/CHANGELOG.md b/CHANGELOG.md index c4509dcbf5..29749471f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Features +- APM for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) - Tracing without performance for Dio integration ([#1837](https://github.com/getsentry/sentry-dart/pull/1837)) - Accept `Map` in `Hint` class ([#1807](https://github.com/getsentry/sentry-dart/pull/1807)) - Please check if everything works as expected when using `Hint` @@ -20,7 +21,6 @@ - Set `options.spotlight = Spotlight(enabled: true)` to enable Spotlight - Add `ConnectivityIntegration` for web ([#1765](https://github.com/getsentry/sentry-dart/pull/1765)) - We only get the info if online/offline on web platform. The added breadcrumb is set to either `wifi` or `none`. -- APM for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) - Add isar breadcrumbs ([#1800](https://github.com/getsentry/sentry-dart/pull/1800)) - Starting with Flutter 3.16, Sentry adds the [`appFlavor`](https://api.flutter.dev/flutter/services/appFlavor-constant.html) to the `flutter_context` ([#1799](https://github.com/getsentry/sentry-dart/pull/1799)) - Add beforeScreenshotCallback to SentryFlutterOptions ([#1805](https://github.com/getsentry/sentry-dart/pull/1805)) From bd1b99021721963c751db2b5418473c5cea711f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Jan 2024 11:06:00 -0500 Subject: [PATCH 135/166] chore(deps): update Cocoa SDK to v8.19.0 (#1844) * chore: update flutter/scripts/update-cocoa.sh to 8.19.0 --------- Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor --- CHANGELOG.md | 2 +- flutter/ios/sentry_flutter.podspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29749471f6..b92af634f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ### Features -- APM for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) +- Performance monitoring support for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) - Tracing without performance for Dio integration ([#1837](https://github.com/getsentry/sentry-dart/pull/1837)) - Accept `Map` in `Hint` class ([#1807](https://github.com/getsentry/sentry-dart/pull/1807)) - Please check if everything works as expected when using `Hint` diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 1dc2c0fa06..03220ac7bf 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.18.0' + s.dependency 'Sentry/HybridSDK', '8.19.0' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' From 413323059624e4ad389969782d04f7aa586c419a Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Tue, 30 Jan 2024 09:48:21 +0100 Subject: [PATCH 136/166] feat: Add sentry widget that includes other sentry widgets (#1846) * add sentry widget * Update CHANGELOG.md * Update CHANGELOG.md --- CHANGELOG.md | 3 + flutter/example/lib/main.dart | 10 +-- flutter/lib/sentry_flutter.dart | 1 + .../screenshot/sentry_screenshot_widget.dart | 31 ++++++-- flutter/lib/src/sentry_widget.dart | 23 ++++++ .../sentry_user_interaction_widget.dart | 16 ++-- .../screenshot_event_processor_test.dart | 7 ++ .../sentry_screenshot_widget_test.dart | 79 +++++++++++++++++++ flutter/test/sentry_widget_test.dart | 37 +++++++++ .../sentry_user_interaction_widget_test.dart | 69 ++++++++++++++++ 10 files changed, 258 insertions(+), 18 deletions(-) create mode 100644 flutter/lib/src/sentry_widget.dart create mode 100644 flutter/test/screenshot/sentry_screenshot_widget_test.dart create mode 100644 flutter/test/sentry_widget_test.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index b92af634f9..62207422c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ ### Features +- Add `SentryWidget` ([#1846](https://github.com/getsentry/sentry-dart/pull/1846)) + - Prefer to use `SentryWidget` now instead of `SentryScreenshotWidget` and `SentryUserInteractionWidget` directly +- APM for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) - Performance monitoring support for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) - Tracing without performance for Dio integration ([#1837](https://github.com/getsentry/sentry-dart/pull/1837)) - Accept `Map` in `Hint` class ([#1807](https://github.com/getsentry/sentry-dart/pull/1807)) diff --git a/flutter/example/lib/main.dart b/flutter/example/lib/main.dart index 4cb5b97942..26bbdce6d8 100644 --- a/flutter/example/lib/main.dart +++ b/flutter/example/lib/main.dart @@ -43,12 +43,10 @@ final GlobalKey navigatorKey = GlobalKey(); Future main() async { await setupSentry( () => runApp( - SentryScreenshotWidget( - child: SentryUserInteractionWidget( - child: DefaultAssetBundle( - bundle: SentryAssetBundle(), - child: const MyApp(), - ), + SentryWidget( + child: DefaultAssetBundle( + bundle: SentryAssetBundle(), + child: const MyApp(), ), ), ), diff --git a/flutter/lib/sentry_flutter.dart b/flutter/lib/sentry_flutter.dart index 6760e99efb..0f43bf741b 100644 --- a/flutter/lib/sentry_flutter.dart +++ b/flutter/lib/sentry_flutter.dart @@ -15,3 +15,4 @@ export 'src/screenshot/sentry_screenshot_widget.dart'; export 'src/screenshot/sentry_screenshot_quality.dart'; export 'src/user_interaction/sentry_user_interaction_widget.dart'; export 'src/binding_wrapper.dart'; +export 'src/sentry_widget.dart'; diff --git a/flutter/lib/src/screenshot/sentry_screenshot_widget.dart b/flutter/lib/src/screenshot/sentry_screenshot_widget.dart index b7273b8979..e83d46d0c5 100644 --- a/flutter/lib/src/screenshot/sentry_screenshot_widget.dart +++ b/flutter/lib/src/screenshot/sentry_screenshot_widget.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:meta/meta.dart'; +import '../../sentry_flutter.dart'; + /// Key which is used to identify the [RepaintBoundary] @internal final sentryScreenshotWidgetGlobalKey = @@ -22,20 +24,37 @@ final sentryScreenshotWidgetGlobalKey = /// - You can only have one [SentryScreenshotWidget] widget in your widget tree at all /// times. class SentryScreenshotWidget extends StatefulWidget { - const SentryScreenshotWidget({super.key, required this.child}); - final Widget child; + late final Hub _hub; + + SentryFlutterOptions? get _options => + // ignore: invalid_use_of_internal_member + _hub.options is SentryFlutterOptions + // ignore: invalid_use_of_internal_member + ? _hub.options as SentryFlutterOptions + : null; + + SentryScreenshotWidget({ + super.key, + required this.child, + @internal Hub? hub, + }) : _hub = hub ?? HubAdapter(); @override _SentryScreenshotWidgetState createState() => _SentryScreenshotWidgetState(); } class _SentryScreenshotWidgetState extends State { + SentryFlutterOptions? get _options => widget._options; + @override Widget build(BuildContext context) { - return RepaintBoundary( - key: sentryScreenshotWidgetGlobalKey, - child: widget.child, - ); + if (_options?.attachScreenshot ?? false) { + return RepaintBoundary( + key: sentryScreenshotWidgetGlobalKey, + child: widget.child, + ); + } + return widget.child; } } diff --git a/flutter/lib/src/sentry_widget.dart b/flutter/lib/src/sentry_widget.dart new file mode 100644 index 0000000000..ed390d1ab4 --- /dev/null +++ b/flutter/lib/src/sentry_widget.dart @@ -0,0 +1,23 @@ +import 'package:flutter/cupertino.dart'; +import '../sentry_flutter.dart'; + +/// This widget serves as a wrapper to include Sentry widgets such +/// as [SentryScreenshotWidget] and [SentryUserInteractionWidget]. +class SentryWidget extends StatefulWidget { + final Widget child; + + const SentryWidget({super.key, required this.child}); + + @override + _SentryWidgetState createState() => _SentryWidgetState(); +} + +class _SentryWidgetState extends State { + @override + Widget build(BuildContext context) { + Widget content = widget.child; + content = SentryScreenshotWidget(child: content); + content = SentryUserInteractionWidget(child: content); + return content; + } +} diff --git a/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart b/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart index 94d364899e..45af49b14d 100644 --- a/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart +++ b/flutter/lib/src/user_interaction/sentry_user_interaction_widget.dart @@ -281,12 +281,16 @@ class _SentryUserInteractionWidgetState @override Widget build(BuildContext context) { - return Listener( - behavior: HitTestBehavior.translucent, - onPointerDown: _onPointerDown, - onPointerUp: _onPointerUp, - child: widget.child, - ); + if ((_options?.enableUserInteractionTracing ?? true) || + (_options?.enableUserInteractionBreadcrumbs ?? true)) { + return Listener( + behavior: HitTestBehavior.translucent, + onPointerDown: _onPointerDown, + onPointerUp: _onPointerUp, + child: widget.child, + ); + } + return widget.child; } void _onPointerDown(PointerDownEvent event) { diff --git a/flutter/test/event_processor/screenshot_event_processor_test.dart b/flutter/test/event_processor/screenshot_event_processor_test.dart index 4beeea3ef3..763c0e0ca3 100644 --- a/flutter/test/event_processor/screenshot_event_processor_test.dart +++ b/flutter/test/event_processor/screenshot_event_processor_test.dart @@ -33,6 +33,7 @@ void main() { final sut = fixture.getSut(renderer, isWeb); await tester.pumpWidget(SentryScreenshotWidget( + hub: fixture.hub, child: Text('Catching Pokémon is a snap!', textDirection: TextDirection.ltr))); @@ -178,8 +179,14 @@ void main() { } class Fixture { + late Hub hub; SentryFlutterOptions options = SentryFlutterOptions(dsn: fakeDsn); + Fixture() { + options.attachScreenshot = true; + hub = Hub(options); + } + ScreenshotEventProcessor getSut( FlutterRenderer? flutterRenderer, bool isWeb) { options.rendererWrapper = MockRendererWrapper(flutterRenderer); diff --git a/flutter/test/screenshot/sentry_screenshot_widget_test.dart b/flutter/test/screenshot/sentry_screenshot_widget_test.dart new file mode 100644 index 0000000000..fd4603c794 --- /dev/null +++ b/flutter/test/screenshot/sentry_screenshot_widget_test.dart @@ -0,0 +1,79 @@ +@TestOn('vm') +// ignore_for_file: invalid_use_of_internal_member + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; + +import '../mocks.dart'; + +void main() { + late Fixture fixture; + setUp(() { + fixture = Fixture(); + TestWidgetsFlutterBinding.ensureInitialized(); + }); + + testWidgets( + '$SentryScreenshotWidget does not apply when attachScreenshot is false', + (tester) async { + await tester.pumpWidget( + fixture.getSut( + attachScreenshot: false, + ), + ); + + final widget = find.byType(MyApp); + final repaintBoundaryFinder = find.descendant( + of: widget, + matching: find.byType(RepaintBoundary), + ); + expect(repaintBoundaryFinder, findsNothing); + }, + ); + + testWidgets( + '$SentryScreenshotWidget applies when attachScreenshot is true', + (tester) async { + await tester.pumpWidget( + fixture.getSut( + attachScreenshot: true, + ), + ); + + final widget = find.byType(MyApp); + final repaintBoundaryFinder = find.ancestor( + of: widget, + matching: find.byKey(sentryScreenshotWidgetGlobalKey), + ); + expect(repaintBoundaryFinder, findsOneWidget); + }, + ); +} + +class Fixture { + final _options = SentryFlutterOptions(dsn: fakeDsn); + late Hub hub; + + SentryScreenshotWidget getSut({ + bool attachScreenshot = false, + }) { + _options.attachScreenshot = attachScreenshot; + + hub = Hub(_options); + + return SentryScreenshotWidget( + hub: hub, + child: MaterialApp(home: MyApp()), + ); + } +} + +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return const Text('test'); + } +} diff --git a/flutter/test/sentry_widget_test.dart b/flutter/test/sentry_widget_test.dart new file mode 100644 index 0000000000..a64fded42f --- /dev/null +++ b/flutter/test/sentry_widget_test.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; + +void main() { + group('SentryWidget', () { + const testChild = Text('Test Child'); + + setUp(() async { + TestWidgetsFlutterBinding.ensureInitialized(); + }); + + testWidgets('SentryWidget wraps child with SentryUserInteractionWidget', + (WidgetTester tester) async { + await tester.pumpWidget( + MaterialApp( + home: SentryWidget(child: testChild), + ), + ); + + expect(find.byType(SentryUserInteractionWidget), findsOneWidget); + expect(find.byWidget(testChild), findsOneWidget); + }); + + testWidgets('SentryWidget wraps child with SentryScreenshotWidget', + (WidgetTester tester) async { + await tester.pumpWidget( + MaterialApp( + home: SentryWidget(child: testChild), + ), + ); + + expect(find.byType(SentryScreenshotWidget), findsOneWidget); + expect(find.byWidget(testChild), findsOneWidget); + }); + }); +} diff --git a/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart b/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart index a814bd0b54..0fb73cb930 100644 --- a/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart +++ b/flutter/test/user_interaction/sentry_user_interaction_widget_test.dart @@ -32,6 +32,75 @@ void main() { }, ); + testWidgets( + '$SentryUserInteractionWidget does not apply when enableUserInteractionTracing and enableUserInteractionBreadcrumbs is false', + (tester) async { + await tester.runAsync(() async { + await tester.pumpWidget( + fixture.getSut( + enableUserInteractionTracing: false, + enableUserInteractionBreadcrumbs: false, + ), + ); + final specificChildFinder = find.byType(MyApp); + + expect( + find.ancestor( + of: specificChildFinder, + matching: find.byType(Listener), + ), + findsNothing, + ); + }); + }, + ); + + testWidgets( + '$SentryUserInteractionWidget does apply when enableUserInteractionTracing is true', + (tester) async { + await tester.runAsync(() async { + await tester.pumpWidget( + fixture.getSut( + enableUserInteractionTracing: true, + enableUserInteractionBreadcrumbs: false, + ), + ); + final specificChildFinder = find.byType(MyApp); + + expect( + find.ancestor( + of: specificChildFinder, + matching: find.byType(Listener), + ), + findsOne, + ); + }); + }, + ); + + testWidgets( + '$SentryUserInteractionWidget does apply when enableUserInteractionBreadcrumbs is true', + (tester) async { + await tester.runAsync(() async { + await tester.pumpWidget( + fixture.getSut( + enableUserInteractionTracing: false, + enableUserInteractionBreadcrumbs: true, + ), + ); + final specificChildFinder = find.byType(MyApp); + + expect( + find.ancestor( + of: specificChildFinder, + matching: find.byType(Listener), + ), + findsOne, + ); + }); + }, + ); + group('$SentryUserInteractionWidget crumbs', () { testWidgets('Add crumb for MaterialButton', (tester) async { await tester.runAsync(() async { From e3ef57098845edc69a00ce9b4845b54351beccbf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 09:54:21 +0100 Subject: [PATCH 137/166] build(deps): bump styfle/cancel-workflow-action from 0.12.0 to 0.12.1 (#1849) Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.12.0 to 0.12.1. - [Release notes](https://github.com/styfle/cancel-workflow-action/releases) - [Commits](https://github.com/styfle/cancel-workflow-action/compare/01ce38bf961b4e243a6342cbade0dbc8ba3f0432...85880fa0301c86cca9da44039ee3bb12d3bedbfa) --- updated-dependencies: - dependency-name: styfle/cancel-workflow-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/analyze.yml | 2 +- .github/workflows/dart.yml | 2 +- .github/workflows/dio.yml | 2 +- .github/workflows/drift.yml | 2 +- .github/workflows/e2e_dart.yml | 2 +- .github/workflows/file.yml | 2 +- .github/workflows/flutter.yml | 2 +- .github/workflows/flutter_test.yml | 2 +- .github/workflows/format-and-fix.yml | 2 +- .github/workflows/hive.yml | 2 +- .github/workflows/isar.yml | 2 +- .github/workflows/logging.yml | 2 +- .github/workflows/metrics.yml | 2 +- .github/workflows/min_version_test.yml | 2 +- .github/workflows/sqflite.yml | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index bde8004cec..2db1a28642 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 6ce30080f8..be47e369e6 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index 8f9fa41dc5..f50dc7be62 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/drift.yml b/.github/workflows/drift.yml index f13f6d22f6..ac79f6a039 100644 --- a/.github/workflows/drift.yml +++ b/.github/workflows/drift.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index 8a6953a0aa..bec5e47c95 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 3d1431f63b..51cad38597 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 8847114974..0424e153dc 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 9a5b583420..61af6b0fe6 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/format-and-fix.yml b/.github/workflows/format-and-fix.yml index f7d0ec9cfb..4f6d96f106 100644 --- a/.github/workflows/format-and-fix.yml +++ b/.github/workflows/format-and-fix.yml @@ -6,7 +6,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 15bef1ecdb..f930716063 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/isar.yml b/.github/workflows/isar.yml index 4e090f6307..7ae6bec76e 100644 --- a/.github/workflows/isar.yml +++ b/.github/workflows/isar.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index 4e39833caa..eea78ca9a2 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/metrics.yml b/.github/workflows/metrics.yml index 1e383a93ea..94278a167c 100644 --- a/.github/workflows/metrics.yml +++ b/.github/workflows/metrics.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/min_version_test.yml b/.github/workflows/min_version_test.yml index 6b08e3ca95..c20f06489d 100644 --- a/.github/workflows/min_version_test.yml +++ b/.github/workflows/min_version_test.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 1168c4561e..14b50c944c 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@01ce38bf961b4e243a6342cbade0dbc8ba3f0432 # pin@0.12.0 + uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # pin@0.12.1 with: access_token: ${{ github.token }} From 432757792888cd316a8eefa8a799826a1eb1721e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 09:54:36 +0100 Subject: [PATCH 138/166] build(deps): bump reactivecircus/android-emulator-runner (#1848) Bumps [reactivecircus/android-emulator-runner](https://github.com/reactivecircus/android-emulator-runner) from 2.29.0 to 2.30.1. - [Release notes](https://github.com/reactivecircus/android-emulator-runner/releases) - [Changelog](https://github.com/ReactiveCircus/android-emulator-runner/blob/main/CHANGELOG.md) - [Commits](https://github.com/reactivecircus/android-emulator-runner/compare/99a4aac18b4df9b3af66c4a1f04c1f23fa10c270...6b0df4b0efb23bb0ec63d881db79aefbc976e4b2) --- updated-dependencies: - dependency-name: reactivecircus/android-emulator-runner dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/flutter_test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 61af6b0fe6..391f10d5af 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -67,7 +67,7 @@ jobs: - name: create AVD and generate snapshot for caching if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@99a4aac18b4df9b3af66c4a1f04c1f23fa10c270 #pin@v2.29.0 + uses: reactivecircus/android-emulator-runner@6b0df4b0efb23bb0ec63d881db79aefbc976e4b2 #pin@v2.30.1 with: working-directory: ./flutter/example api-level: 31 @@ -84,7 +84,7 @@ jobs: run: flutter build apk --debug - name: launch android emulator & run android native test - uses: reactivecircus/android-emulator-runner@99a4aac18b4df9b3af66c4a1f04c1f23fa10c270 #pin@v2.29.0 + uses: reactivecircus/android-emulator-runner@6b0df4b0efb23bb0ec63d881db79aefbc976e4b2 #pin@v2.30.1 with: working-directory: ./flutter/example/android api-level: 31 @@ -97,7 +97,7 @@ jobs: script: ./gradlew testDebugUnitTest - name: launch android emulator & run android integration test - uses: reactivecircus/android-emulator-runner@99a4aac18b4df9b3af66c4a1f04c1f23fa10c270 #pin@v2.29.0 + uses: reactivecircus/android-emulator-runner@6b0df4b0efb23bb0ec63d881db79aefbc976e4b2 #pin@v2.30.1 with: working-directory: ./flutter/example api-level: 31 From 21bf0dea9ae6067b147650228bd2c3a1a38e4ee0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 09:54:56 +0100 Subject: [PATCH 139/166] build(deps): bump codecov/codecov-action from 3.1.4 to 3.1.5 (#1850) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.4 to 3.1.5. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/eaaf4bedf32dbdc6b720b63067d99c4d77d6047d...4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/dart.yml | 2 +- .github/workflows/dio.yml | 2 +- .github/workflows/drift.yml | 2 +- .github/workflows/file.yml | 2 +- .github/workflows/flutter.yml | 2 +- .github/workflows/hive.yml | 2 +- .github/workflows/isar.yml | 2 +- .github/workflows/logging.yml | 2 +- .github/workflows/sqflite.yml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index be47e369e6..a8bccd8d82 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -68,7 +68,7 @@ jobs: dart pub get webdev build - - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 + - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index f50dc7be62..f92f029d98 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 + - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_dio diff --git a/.github/workflows/drift.yml b/.github/workflows/drift.yml index ac79f6a039..bbd07f905b 100644 --- a/.github/workflows/drift.yml +++ b/.github/workflows/drift.yml @@ -93,7 +93,7 @@ jobs: cd drift flutter test --coverage --test-randomize-ordering-seed=random - - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 + - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_drift diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 51cad38597..d981a7cac5 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 + - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_file diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 0424e153dc..4443f84e05 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -106,7 +106,7 @@ jobs: flutter test --coverage --test-randomize-ordering-seed=random dart run remove_from_coverage -f coverage/lcov.info -r 'binding.dart' - - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 + - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_flutter diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index f930716063..5893673318 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -51,7 +51,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 + - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_hive diff --git a/.github/workflows/isar.yml b/.github/workflows/isar.yml index 7ae6bec76e..f4038421df 100644 --- a/.github/workflows/isar.yml +++ b/.github/workflows/isar.yml @@ -93,7 +93,7 @@ jobs: cd isar flutter test -j 1 --coverage --test-randomize-ordering-seed=random - - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 + - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_isar diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index eea78ca9a2..9a3fead839 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 + - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_logging diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index 14b50c944c..a94c31475f 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -93,7 +93,7 @@ jobs: cd sqflite flutter test --coverage --test-randomize-ordering-seed=random - - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # pin@v3 + - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_sqflite From fb77dcfabc1246296be034aba3b791e76030ce77 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 10:43:41 +0100 Subject: [PATCH 140/166] chore(deps): update Android SDK to v7.2.0 (#1815) * chore: update flutter/scripts/update-android.sh to 7.2.0 * Update podfile * Update podfile * Update deployment target * update * update --------- Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor --- CHANGELOG.md | 6 +++--- flutter/android/build.gradle | 2 +- flutter/example/ios/Podfile | 8 ++++---- flutter/example/ios/Runner.xcodeproj/project.pbxproj | 6 +++--- flutter/ios/sentry_flutter.podspec | 2 +- min_version_test/ios/Podfile | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62207422c4..572bed3257 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,9 +31,9 @@ ### Dependencies -- Bump Android SDK from v7.0.0 to v7.1.0 ([#1788](https://github.com/getsentry/sentry-dart/pull/1788)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#710) - - [diff](https://github.com/getsentry/sentry-java/compare/7.0.0...7.1.0) +- Bump Android SDK from v7.0.0 to v7.2.0 ([#1788](https://github.com/getsentry/sentry-dart/pull/1788), [#1815](https://github.com/getsentry/sentry-dart/pull/1815)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#720) + - [diff](https://github.com/getsentry/sentry-java/compare/7.0.0...7.2.0) - Bump Cocoa SDK from v8.17.2 to v8.18.0 ([#1803](https://github.com/getsentry/sentry-dart/pull/1803)) - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8180) - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.17.2...8.18.0) diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index e594b017ea..e7f2cf157a 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -60,7 +60,7 @@ android { } dependencies { - api 'io.sentry:sentry-android:7.1.0' + api 'io.sentry:sentry-android:7.2.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // Required -- JUnit 4 framework diff --git a/flutter/example/ios/Podfile b/flutter/example/ios/Podfile index 8d38fc9608..8cb4ddb285 100644 --- a/flutter/example/ios/Podfile +++ b/flutter/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '11.0' +platform :ios, '12.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' @@ -32,19 +32,19 @@ target 'Runner' do use_modular_headers! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - + # Configure test target target 'RunnerTests' do inherit! :search_paths end - + end post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' end end end diff --git a/flutter/example/ios/Runner.xcodeproj/project.pbxproj b/flutter/example/ios/Runner.xcodeproj/project.pbxproj index 29c58327af..58add4db19 100644 --- a/flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -460,7 +460,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -631,7 +631,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -681,7 +681,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 03220ac7bf..b5cf5dd606 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -15,7 +15,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. s.dependency 'Sentry/HybridSDK', '8.19.0' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' - s.ios.deployment_target = '11.0' + s.ios.deployment_target = '12.0' # Flutter 3.7 requires 10.14 s.osx.deployment_target = '10.13' diff --git a/min_version_test/ios/Podfile b/min_version_test/ios/Podfile index 88359b225f..2c068c404b 100644 --- a/min_version_test/ios/Podfile +++ b/min_version_test/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '11.0' +platform :ios, '12.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' From c3e6c820747f2dbb4515a2ed1dcb362eeba83072 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 10:50:09 +0100 Subject: [PATCH 141/166] chore(deps): update Flutter SDK (metrics) to v3.16.9 (#1847) * chore: update metrics/flutter.properties to 3.16.9 * update * update --------- Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor --- flutter/example/ios/Podfile | 4 ++-- flutter/example/ios/Runner.xcodeproj/project.pbxproj | 6 +++--- flutter/ios/sentry_flutter.podspec | 2 +- metrics/flutter.properties | 2 +- min_version_test/ios/Podfile | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/flutter/example/ios/Podfile b/flutter/example/ios/Podfile index 8cb4ddb285..877d653518 100644 --- a/flutter/example/ios/Podfile +++ b/flutter/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '12.0' +platform :ios, '11.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' @@ -44,7 +44,7 @@ post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' end end end diff --git a/flutter/example/ios/Runner.xcodeproj/project.pbxproj b/flutter/example/ios/Runner.xcodeproj/project.pbxproj index 58add4db19..29c58327af 100644 --- a/flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -460,7 +460,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -631,7 +631,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -681,7 +681,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index b5cf5dd606..03220ac7bf 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -15,7 +15,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. s.dependency 'Sentry/HybridSDK', '8.19.0' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' - s.ios.deployment_target = '12.0' + s.ios.deployment_target = '11.0' # Flutter 3.7 requires 10.14 s.osx.deployment_target = '10.13' diff --git a/metrics/flutter.properties b/metrics/flutter.properties index 8a0f53ceea..5b903acb68 100644 --- a/metrics/flutter.properties +++ b/metrics/flutter.properties @@ -1,2 +1,2 @@ -version = 3.16.8 +version = 3.16.9 repo = https://github.com/flutter/flutter diff --git a/min_version_test/ios/Podfile b/min_version_test/ios/Podfile index 2c068c404b..88359b225f 100644 --- a/min_version_test/ios/Podfile +++ b/min_version_test/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '12.0' +# platform :ios, '11.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' From 42b79b3af5b36307519b19032dc77b423bd347ae Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 11:58:19 +0100 Subject: [PATCH 142/166] chore(deps): update Symbol collector CLI to v1.14.0 (#1827) * chore: update scripts/update-symbol-collector.sh to 1.14.0 * update --------- Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor --- CHANGELOG.md | 3 +-- .../flutter_symbol_collector/lib/src/symbol_collector_cli.dart | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 572bed3257..458e511cd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,8 +6,7 @@ - Add `SentryWidget` ([#1846](https://github.com/getsentry/sentry-dart/pull/1846)) - Prefer to use `SentryWidget` now instead of `SentryScreenshotWidget` and `SentryUserInteractionWidget` directly -- APM for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) -- Performance monitoring support for isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) +- Performance monitoring support for Isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) - Tracing without performance for Dio integration ([#1837](https://github.com/getsentry/sentry-dart/pull/1837)) - Accept `Map` in `Hint` class ([#1807](https://github.com/getsentry/sentry-dart/pull/1807)) - Please check if everything works as expected when using `Hint` diff --git a/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart b/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart index d89cbaeb84..1d4e29a66a 100644 --- a/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart +++ b/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart @@ -19,7 +19,7 @@ class SymbolCollectorCli { // https://github.com/getsentry/symbol-collector/releases @internal - static const version = '1.13.0'; + static const version = '1.14.0'; @internal late final String cli; From f2e496dce9b9da13c48049bac16ff033269f44ad Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Tue, 30 Jan 2024 14:39:10 +0100 Subject: [PATCH 143/166] Update CHANGELOG.md (#1845) --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 458e511cd5..dadea3ed77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,12 @@ - Method `hint.addAll(Map keysAndValues)` now takes `Map` instead of `Map` - Method `set(String key, dynamic value)` now takes value of `dynamic` instead of `Object` - Method `hint.get(String key)` now returns `dynamic` instead of `Object?` + +### Dependencies + +- Bump Cocoa SDK from v8.18.0 to v8.19.0 ([#1803](https://github.com/getsentry/sentry-dart/pull/1844)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8190) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.18.0...8.19.0) ## 7.15.0 From 4c78360ef218251d46e8468c8aaf00132482e4a4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 15:29:04 +0100 Subject: [PATCH 144/166] chore: update flutter/scripts/update-android.sh to 7.3.0 (#1852) Co-authored-by: GitHub --- CHANGELOG.md | 3 +++ flutter/android/build.gradle | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dadea3ed77..402c273459 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,9 @@ - Bump Cocoa SDK from v8.18.0 to v8.19.0 ([#1803](https://github.com/getsentry/sentry-dart/pull/1844)) - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8190) - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.18.0...8.19.0) +- Bump Android SDK from v7.2.0 to v7.3.0 ([#1852](https://github.com/getsentry/sentry-dart/pull/1852)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#730) + - [diff](https://github.com/getsentry/sentry-java/compare/7.2.0...7.3.0) ## 7.15.0 diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index e7f2cf157a..5bb8ed8a20 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -60,7 +60,7 @@ android { } dependencies { - api 'io.sentry:sentry-android:7.2.0' + api 'io.sentry:sentry-android:7.3.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" // Required -- JUnit 4 framework From 147ef50f030e4933e0ccd93f70110b4b8ba27109 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 30 Jan 2024 14:30:03 +0000 Subject: [PATCH 145/166] release: 7.16.0 --- CHANGELOG.md | 2 +- dart/lib/src/version.dart | 2 +- dart/pubspec.yaml | 2 +- dio/lib/src/version.dart | 2 +- dio/pubspec.yaml | 4 ++-- drift/lib/src/version.dart | 2 +- drift/pubspec.yaml | 4 ++-- file/lib/src/version.dart | 2 +- file/pubspec.yaml | 4 ++-- flutter/example/pubspec.yaml | 2 +- flutter/lib/src/version.dart | 2 +- flutter/pubspec.yaml | 4 ++-- hive/lib/src/version.dart | 2 +- hive/pubspec.yaml | 4 ++-- isar/lib/src/version.dart | 2 +- isar/pubspec.yaml | 4 ++-- logging/lib/src/version.dart | 2 +- logging/pubspec.yaml | 4 ++-- sqflite/lib/src/version.dart | 2 +- sqflite/pubspec.yaml | 4 ++-- 20 files changed, 28 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 402c273459..ddf41c4811 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## 7.16.0 ### Features diff --git a/dart/lib/src/version.dart b/dart/lib/src/version.dart index cd68dd9443..c29bdd09cb 100644 --- a/dart/lib/src/version.dart +++ b/dart/lib/src/version.dart @@ -9,7 +9,7 @@ library version; /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.15.0'; +const String sdkVersion = '7.16.0'; String sdkName(bool isWeb) => isWeb ? _browserSdkName : _ioSdkName; diff --git a/dart/pubspec.yaml b/dart/pubspec.yaml index e4668ad96d..1cc9bf8c75 100644 --- a/dart/pubspec.yaml +++ b/dart/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry -version: 7.15.0 +version: 7.16.0 description: > A crash reporting library for Dart that sends crash reports to Sentry.io. This library supports Dart VM and Web. For Flutter consider sentry_flutter instead. diff --git a/dio/lib/src/version.dart b/dio/lib/src/version.dart index a0d410b5dd..175e956f04 100644 --- a/dio/lib/src/version.dart +++ b/dio/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.15.0'; +const String sdkVersion = '7.16.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_dio'; diff --git a/dio/pubspec.yaml b/dio/pubspec.yaml index abd613d381..e1f02a0123 100644 --- a/dio/pubspec.yaml +++ b/dio/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_dio description: An integration which adds support for performance tracing for the Dio package. -version: 7.15.0 +version: 7.16.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: dio: ^5.0.0 - sentry: 7.15.0 + sentry: 7.16.0 dev_dependencies: meta: ^1.3.0 diff --git a/drift/lib/src/version.dart b/drift/lib/src/version.dart index 0a1bc2ce4d..2795a157be 100644 --- a/drift/lib/src/version.dart +++ b/drift/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.15.0'; +const String sdkVersion = '7.16.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_drift'; diff --git a/drift/pubspec.yaml b/drift/pubspec.yaml index af1d524c8b..92323b4f63 100644 --- a/drift/pubspec.yaml +++ b/drift/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_drift description: An integration which adds support for performance tracing for the drift package. -version: 7.15.0 +version: 7.16.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' dependencies: - sentry: 7.15.0 + sentry: 7.16.0 meta: ^1.3.0 drift: ^2.13.0 diff --git a/file/lib/src/version.dart b/file/lib/src/version.dart index 27f4d170a5..a2a31b3a5e 100644 --- a/file/lib/src/version.dart +++ b/file/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.15.0'; +const String sdkVersion = '7.16.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_file'; diff --git a/file/pubspec.yaml b/file/pubspec.yaml index 60c56c6248..509e596a13 100644 --- a/file/pubspec.yaml +++ b/file/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_file description: An integration which adds support for performance tracing for dart.io.File. -version: 7.15.0 +version: 7.16.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: sdk: '>=2.19.0 <4.0.0' dependencies: - sentry: 7.15.0 + sentry: 7.16.0 meta: ^1.3.0 dev_dependencies: diff --git a/flutter/example/pubspec.yaml b/flutter/example/pubspec.yaml index bb021595c1..6530b23e99 100644 --- a/flutter/example/pubspec.yaml +++ b/flutter/example/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_flutter_example description: Demonstrates how to use the sentry_flutter plugin. -version: 7.15.0 +version: 7.16.0 publish_to: 'none' # Remove this line if you wish to publish to pub.dev diff --git a/flutter/lib/src/version.dart b/flutter/lib/src/version.dart index dd50a348fd..078ad6a08f 100644 --- a/flutter/lib/src/version.dart +++ b/flutter/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.15.0'; +const String sdkVersion = '7.16.0'; /// The default SDK name reported to Sentry.io in the submitted events. const String sdkName = 'sentry.dart.flutter'; diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index c41ef8d6b0..9757dbd698 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -1,5 +1,5 @@ name: sentry_flutter -version: 7.15.0 +version: 7.16.0 description: Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supported by Sentry with native SDKs. homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart @@ -15,7 +15,7 @@ dependencies: sdk: flutter flutter_web_plugins: sdk: flutter - sentry: 7.15.0 + sentry: 7.16.0 package_info_plus: '>=1.0.0 <=5.0.1' meta: ^1.3.0 ffi: ^2.0.0 diff --git a/hive/lib/src/version.dart b/hive/lib/src/version.dart index b775854f98..ac6247b5a5 100644 --- a/hive/lib/src/version.dart +++ b/hive/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.15.0'; +const String sdkVersion = '7.16.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_hive'; diff --git a/hive/pubspec.yaml b/hive/pubspec.yaml index 4a8ac02d4e..cbcb5b16e6 100644 --- a/hive/pubspec.yaml +++ b/hive/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_hive description: An integration which adds support for performance tracing for the hive package. -version: 7.15.0 +version: 7.16.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -9,7 +9,7 @@ environment: sdk: '>=2.17.0 <4.0.0' dependencies: - sentry: 7.15.0 + sentry: 7.16.0 hive: ^2.2.3 meta: ^1.3.0 diff --git a/isar/lib/src/version.dart b/isar/lib/src/version.dart index 8d8ef99293..0e551e8349 100644 --- a/isar/lib/src/version.dart +++ b/isar/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.15.0'; +const String sdkVersion = '7.16.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_isar'; diff --git a/isar/pubspec.yaml b/isar/pubspec.yaml index f618fe7543..81770c4d52 100644 --- a/isar/pubspec.yaml +++ b/isar/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_isar description: An integration which adds support for performance tracing for the isar package. -version: 7.15.0 +version: 7.16.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -12,7 +12,7 @@ environment: dependencies: isar: ^3.1.0 isar_flutter_libs: ^3.1.0 # contains Isar Core - sentry: 7.15.0 + sentry: 7.16.0 meta: ^1.3.0 path: ^1.8.3 diff --git a/logging/lib/src/version.dart b/logging/lib/src/version.dart index 45fd9a81a7..47dc6b25a2 100644 --- a/logging/lib/src/version.dart +++ b/logging/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.15.0'; +const String sdkVersion = '7.16.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_logging'; diff --git a/logging/pubspec.yaml b/logging/pubspec.yaml index 71de51c471..97e888064b 100644 --- a/logging/pubspec.yaml +++ b/logging/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_logging description: An integration which adds support for recording log from the logging package. -version: 7.15.0 +version: 7.16.0 homepage: https://docs.sentry.io/platforms/dart/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -11,7 +11,7 @@ environment: dependencies: logging: ^1.0.0 - sentry: 7.15.0 + sentry: 7.16.0 dev_dependencies: lints: ^3.0.0 diff --git a/sqflite/lib/src/version.dart b/sqflite/lib/src/version.dart index e0f78f9f60..6982ffcf1f 100644 --- a/sqflite/lib/src/version.dart +++ b/sqflite/lib/src/version.dart @@ -1,5 +1,5 @@ /// The SDK version reported to Sentry.io in the submitted events. -const String sdkVersion = '7.15.0'; +const String sdkVersion = '7.16.0'; /// The package name reported to Sentry.io in the submitted events. const String packageName = 'pub:sentry_sqflite'; diff --git a/sqflite/pubspec.yaml b/sqflite/pubspec.yaml index d3e48214b3..4fae66faf9 100644 --- a/sqflite/pubspec.yaml +++ b/sqflite/pubspec.yaml @@ -1,6 +1,6 @@ name: sentry_sqflite description: An integration which adds support for performance tracing for the sqflite package. -version: 7.15.0 +version: 7.16.0 homepage: https://docs.sentry.io/platforms/flutter/ repository: https://github.com/getsentry/sentry-dart issue_tracker: https://github.com/getsentry/sentry-dart/issues @@ -10,7 +10,7 @@ environment: flutter: '>=3.3.0' # matching sqflite dependencies: - sentry: 7.15.0 + sentry: 7.16.0 sqflite: ^2.0.0 sqflite_common: ^2.0.0 meta: ^1.3.0 From 74e1fdd2ec34816cd8eedefc833dccc7d3baa2c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Wold=C5=99ich?= <31292499+krystofwoldrich@users.noreply.github.com> Date: Mon, 5 Feb 2024 17:00:29 +0100 Subject: [PATCH 146/166] chore(sample): Upgrade SAGP to v4.2.0 in the flutter example app (#1860) --- flutter/example/android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flutter/example/android/build.gradle b/flutter/example/android/build.gradle index e628374358..50bb21eda7 100644 --- a/flutter/example/android/build.gradle +++ b/flutter/example/android/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'io.sentry:sentry-android-gradle-plugin:3.5.0' + classpath 'io.sentry:sentry-android-gradle-plugin:4.2.0' classpath 'com.android.tools.build:gradle:7.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'io.github.howardpang:androidNativeBundle:1.1.3' From 36615c315bd0340da4845965113cfb7d598ebd6c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 17:00:51 +0100 Subject: [PATCH 147/166] build(deps): bump dart-lang/setup-dart from 1.6.1 to 1.6.2 (#1864) Bumps [dart-lang/setup-dart](https://github.com/dart-lang/setup-dart) from 1.6.1 to 1.6.2. - [Release notes](https://github.com/dart-lang/setup-dart/releases) - [Changelog](https://github.com/dart-lang/setup-dart/blob/main/CHANGELOG.md) - [Commits](https://github.com/dart-lang/setup-dart/compare/ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b...fedb1266e91cf51be2fdb382869461a434b920a3) --- updated-dependencies: - dependency-name: dart-lang/setup-dart dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/analyze.yml | 2 +- .github/workflows/dart.yml | 2 +- .github/workflows/diagrams.yml | 2 +- .github/workflows/dio.yml | 2 +- .github/workflows/e2e_dart.yml | 2 +- .github/workflows/file.yml | 2 +- .github/workflows/flutter-symbols.yml | 4 ++-- .github/workflows/format-and-fix.yml | 2 +- .github/workflows/hive.yml | 2 +- .github/workflows/logging.yml | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 2db1a28642..28d192a55a 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -32,7 +32,7 @@ jobs: working-directory: ${{ inputs.package }} steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 if: ${{ inputs.sdk == 'dart' }} - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 if: ${{ inputs.sdk == 'flutter' }} diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index a8bccd8d82..70d3f291d5 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -39,7 +39,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/diagrams.yml b/.github/workflows/diagrams.yml index 8b8cee500e..a7671824cf 100644 --- a/.github/workflows/diagrams.yml +++ b/.github/workflows/diagrams.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest name: "Create class diagrams of all packages" steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: stable diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index f92f029d98..e3a2414077 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index bec5e47c95..64a2644940 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -37,7 +37,7 @@ jobs: matrix: sdk: [stable, beta] steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index d981a7cac5..121d82aa9d 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -41,7 +41,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/flutter-symbols.yml b/.github/workflows/flutter-symbols.yml index 4462ccccc8..e9fccdbbbc 100644 --- a/.github/workflows/flutter-symbols.yml +++ b/.github/workflows/flutter-symbols.yml @@ -21,7 +21,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 - run: dart pub get @@ -33,7 +33,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 - run: dart pub get diff --git a/.github/workflows/format-and-fix.yml b/.github/workflows/format-and-fix.yml index 4f6d96f106..681514d13d 100644 --- a/.github/workflows/format-and-fix.yml +++ b/.github/workflows/format-and-fix.yml @@ -30,7 +30,7 @@ jobs: working-directory: ${{ matrix.package.name }} steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 if: ${{ matrix.package.sdk == 'dart' }} - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 if: ${{ matrix.package.sdk == 'flutter' }} diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 5893673318..389c224daa 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index 9a3fead839..f11a269df9 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 From 1ac008b595f39f8eb8d7c8d67df3f9db827b7c1e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 6 Feb 2024 10:04:32 +0100 Subject: [PATCH 148/166] chore(deps): update Cocoa SDK to v8.20.0 (#1856) * chore: update flutter/scripts/update-cocoa.sh to 8.20.0 * format --------- Co-authored-by: GitHub Co-authored-by: GIancarlo Buenaflor --- CHANGELOG.md | 8 ++++++++ flutter/ios/sentry_flutter.podspec | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ddf41c4811..a3cf574ec4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## Unreleased + +### Dependencies + +- Bump Cocoa SDK from v8.19.0 to v8.20.0 ([#1856](https://github.com/getsentry/sentry-dart/pull/1856)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8200) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.19.0...8.20.0) + ## 7.16.0 ### Features diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index 03220ac7bf..dc89732f1d 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.19.0' + s.dependency 'Sentry/HybridSDK', '8.20.0' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '11.0' From e6dd065c8b3bafc026a4752d488eb0382ba2481a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Feb 2024 10:26:37 +0100 Subject: [PATCH 149/166] build(deps): bump natiginfo/action-detekt-all from 1.23.4 to 1.23.5 (#1862) Bumps [natiginfo/action-detekt-all](https://github.com/natiginfo/action-detekt-all) from 1.23.4 to 1.23.5. - [Release notes](https://github.com/natiginfo/action-detekt-all/releases) - [Commits](https://github.com/natiginfo/action-detekt-all/compare/1349d3d957cba64d7b6b2752ef874d1e03e402a2...60495f27089d3432d83335c1f14e46ba61de5637) --- updated-dependencies: - dependency-name: natiginfo/action-detekt-all dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/flutter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 4443f84e05..80d7f2706b 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -201,6 +201,6 @@ jobs: steps: - uses: actions/checkout@v4 # To recreate baseline run: detekt -i flutter/android,flutter/example/android -b flutter/config/detekt-bl.xml -cb - - uses: natiginfo/action-detekt-all@1349d3d957cba64d7b6b2752ef874d1e03e402a2 # pin@1.23.4 + - uses: natiginfo/action-detekt-all@60495f27089d3432d83335c1f14e46ba61de5637 # pin@1.23.5 with: args: -i flutter/android,flutter/example/android --baseline flutter/config/detekt-bl.xml --jvm-target 1.8 --build-upon-default-config --all-rules From cdd9dbd1a11b15908137ff30bcba6655e7547732 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Feb 2024 10:26:49 +0100 Subject: [PATCH 150/166] build(deps): bump codecov/codecov-action from 3.1.5 to 4.0.1 (#1863) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 3.1.5 to 4.0.1. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0...e0b68c6749509c5f83f984dd99a76a1c1a231044) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/dart.yml | 2 +- .github/workflows/dio.yml | 2 +- .github/workflows/drift.yml | 2 +- .github/workflows/file.yml | 2 +- .github/workflows/flutter.yml | 2 +- .github/workflows/hive.yml | 2 +- .github/workflows/isar.yml | 2 +- .github/workflows/logging.yml | 2 +- .github/workflows/sqflite.yml | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index 70d3f291d5..776d63826c 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -68,7 +68,7 @@ jobs: dart pub get webdev build - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index e3a2414077..29f750381d 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_dio diff --git a/.github/workflows/drift.yml b/.github/workflows/drift.yml index bbd07f905b..b3c8b1dc91 100644 --- a/.github/workflows/drift.yml +++ b/.github/workflows/drift.yml @@ -93,7 +93,7 @@ jobs: cd drift flutter test --coverage --test-randomize-ordering-seed=random - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_drift diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index 121d82aa9d..41c4623324 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_file diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 80d7f2706b..02d9a1f012 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -106,7 +106,7 @@ jobs: flutter test --coverage --test-randomize-ordering-seed=random dart run remove_from_coverage -f coverage/lcov.info -r 'binding.dart' - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_flutter diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 389c224daa..f13e8d1522 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -51,7 +51,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_hive diff --git a/.github/workflows/isar.yml b/.github/workflows/isar.yml index f4038421df..a1e67c3bc8 100644 --- a/.github/workflows/isar.yml +++ b/.github/workflows/isar.yml @@ -93,7 +93,7 @@ jobs: cd isar flutter test -j 1 --coverage --test-randomize-ordering-seed=random - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_isar diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index f11a269df9..6eafdc199a 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_logging diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index a94c31475f..9d3caa78bd 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -93,7 +93,7 @@ jobs: cd sqflite flutter test --coverage --test-randomize-ordering-seed=random - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_sqflite From ba9c106515fc2731497c7e40c2ea0f885336884a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kry=C5=A1tof=20Wold=C5=99ich?= <31292499+krystofwoldrich@users.noreply.github.com> Date: Tue, 6 Feb 2024 21:17:16 +0100 Subject: [PATCH 151/166] chore(android): Remove dead code, cold start bool is now always present (#1861) * chore(android): Remove dead code, cold start bool is now always present * Update CHANGELOG.md --------- Co-authored-by: Giancarlo Buenaflor --- CHANGELOG.md | 4 ++++ .../src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt | 3 --- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3cf574ec4..6ec2a05f5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Fixes + +- Remove dead code, cold start bool is now always present ([#1861](https://github.com/getsentry/sentry-dart/pull/1861)) + ### Dependencies - Bump Cocoa SDK from v8.19.0 to v8.20.0 ([#1856](https://github.com/getsentry/sentry-dart/pull/1856)) diff --git a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt index b908ff823f..ea9ab9d17e 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt @@ -147,9 +147,6 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { if (appStartTime == null) { Log.w("Sentry", "App start won't be sent due to missing appStartTime") result.success(null) - } else if (isColdStart == null) { - Log.w("Sentry", "App start won't be sent due to missing isColdStart") - result.success(null) } else { val appStartTimeMillis = DateUtils.nanosToMillis(appStartTime.nanoTimestamp().toDouble()) val item = mapOf( From ffe46aea1c056bb411a050327d2349bcb673aa0e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 6 Feb 2024 21:17:42 +0100 Subject: [PATCH 152/166] chore: update scripts/update-symbol-collector.sh to 1.15.0 (#1853) Co-authored-by: GitHub --- .../flutter_symbol_collector/lib/src/symbol_collector_cli.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart b/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart index 1d4e29a66a..c3ab23ee83 100644 --- a/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart +++ b/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart @@ -19,7 +19,7 @@ class SymbolCollectorCli { // https://github.com/getsentry/symbol-collector/releases @internal - static const version = '1.14.0'; + static const version = '1.15.0'; @internal late final String cli; From e8ed5a0306881da1b886aca12ca43f372db9d350 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Feb 2024 22:06:39 +0100 Subject: [PATCH 153/166] build(deps): bump gradle/gradle-build-action from 2 to 3 (#1851) * build(deps): bump gradle/gradle-build-action from 2 to 3 Bumps [gradle/gradle-build-action](https://github.com/gradle/gradle-build-action) from 2 to 3. - [Release notes](https://github.com/gradle/gradle-build-action/releases) - [Commits](https://github.com/gradle/gradle-build-action/compare/v2...v3) --- updated-dependencies: - dependency-name: gradle/gradle-build-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Update flutter_test.yml --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Giancarlo Buenaflor --- .github/workflows/flutter_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 391f10d5af..e90485c9a4 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -54,7 +54,7 @@ jobs: run: flutter pub get - name: Gradle cache - uses: gradle/gradle-build-action@v2 + uses: gradle/gradle-build-action@3b1b3b9a2104c2b47fbae53f3938079c00c9bb87 - name: AVD cache uses: actions/cache@v4 From 91ff12ff7ca274d12f116f683bba209ebd06823a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 6 Feb 2024 22:11:05 +0100 Subject: [PATCH 154/166] chore: update scripts/update-symbol-collector.sh to 1.15.0 (#1869) Co-authored-by: GitHub Co-authored-by: Giancarlo Buenaflor From c5e18b859a63704c44f6fae132b788d7498c471f Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Tue, 6 Feb 2024 23:28:35 +0100 Subject: [PATCH 155/166] merge main into release/8.0.0 --- .github/workflows/analyze.yml | 2 +- .github/workflows/dart.yml | 4 +- .github/workflows/diagrams.yml | 2 +- .github/workflows/dio.yml | 4 +- .github/workflows/drift.yml | 2 +- .github/workflows/e2e_dart.yml | 2 +- .github/workflows/file.yml | 4 +- .github/workflows/flutter-symbols.yml | 4 +- .github/workflows/flutter.yml | 4 +- .github/workflows/flutter_test.yml | 2 +- .github/workflows/format-and-fix.yml | 2 +- .github/workflows/hive.yml | 4 +- .github/workflows/isar.yml | 2 +- .github/workflows/logging.yml | 4 +- .github/workflows/sqflite.yml | 2 +- CHANGELOG.md | 70 +++++++++++++++++++ drift/README.md | 2 +- .../kotlin/io/sentry/flutter/SentryFlutter.kt | 9 ++- .../io/sentry/flutter/SentryFlutterPlugin.kt | 4 +- flutter/config/detekt-bl.xml | 3 +- flutter/example/android/build.gradle | 2 +- flutter/ios/sentry_flutter.podspec | 2 +- ...flutter_enricher_event_processor_test.dart | 27 +++++++ hive/README.md | 2 +- isar/README.md | 2 +- .../lib/src/symbol_collector_cli.dart | 2 +- 26 files changed, 132 insertions(+), 37 deletions(-) diff --git a/.github/workflows/analyze.yml b/.github/workflows/analyze.yml index 2db1a28642..28d192a55a 100644 --- a/.github/workflows/analyze.yml +++ b/.github/workflows/analyze.yml @@ -32,7 +32,7 @@ jobs: working-directory: ${{ inputs.package }} steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 if: ${{ inputs.sdk == 'dart' }} - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 if: ${{ inputs.sdk == 'flutter' }} diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index a8bccd8d82..776d63826c 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -39,7 +39,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 @@ -68,7 +68,7 @@ jobs: dart pub get webdev build - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry diff --git a/.github/workflows/diagrams.yml b/.github/workflows/diagrams.yml index 8b8cee500e..a7671824cf 100644 --- a/.github/workflows/diagrams.yml +++ b/.github/workflows/diagrams.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest name: "Create class diagrams of all packages" steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: stable diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index f92f029d98..29f750381d 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_dio diff --git a/.github/workflows/drift.yml b/.github/workflows/drift.yml index bbd07f905b..b3c8b1dc91 100644 --- a/.github/workflows/drift.yml +++ b/.github/workflows/drift.yml @@ -93,7 +93,7 @@ jobs: cd drift flutter test --coverage --test-randomize-ordering-seed=random - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_drift diff --git a/.github/workflows/e2e_dart.yml b/.github/workflows/e2e_dart.yml index bec5e47c95..64a2644940 100644 --- a/.github/workflows/e2e_dart.yml +++ b/.github/workflows/e2e_dart.yml @@ -37,7 +37,7 @@ jobs: matrix: sdk: [stable, beta] steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 diff --git a/.github/workflows/file.yml b/.github/workflows/file.yml index d981a7cac5..41c4623324 100644 --- a/.github/workflows/file.yml +++ b/.github/workflows/file.yml @@ -41,7 +41,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_file diff --git a/.github/workflows/flutter-symbols.yml b/.github/workflows/flutter-symbols.yml index 4462ccccc8..e9fccdbbbc 100644 --- a/.github/workflows/flutter-symbols.yml +++ b/.github/workflows/flutter-symbols.yml @@ -21,7 +21,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 - run: dart pub get @@ -33,7 +33,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 - run: dart pub get diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 4443f84e05..02d9a1f012 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -106,7 +106,7 @@ jobs: flutter test --coverage --test-randomize-ordering-seed=random dart run remove_from_coverage -f coverage/lcov.info -r 'binding.dart' - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_flutter @@ -201,6 +201,6 @@ jobs: steps: - uses: actions/checkout@v4 # To recreate baseline run: detekt -i flutter/android,flutter/example/android -b flutter/config/detekt-bl.xml -cb - - uses: natiginfo/action-detekt-all@1349d3d957cba64d7b6b2752ef874d1e03e402a2 # pin@1.23.4 + - uses: natiginfo/action-detekt-all@60495f27089d3432d83335c1f14e46ba61de5637 # pin@1.23.5 with: args: -i flutter/android,flutter/example/android --baseline flutter/config/detekt-bl.xml --jvm-target 1.8 --build-upon-default-config --all-rules diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 4bbe7a5215..9903988f56 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -54,7 +54,7 @@ jobs: run: flutter pub get - name: Gradle cache - uses: gradle/gradle-build-action@982da8e78c05368c70dac0351bb82647a9e9a5d2 # pin@v2.11.1 + uses: gradle/gradle-build-action@3b1b3b9a2104c2b47fbae53f3938079c00c9bb87 - name: AVD cache uses: actions/cache@v4 diff --git a/.github/workflows/format-and-fix.yml b/.github/workflows/format-and-fix.yml index 4f6d96f106..681514d13d 100644 --- a/.github/workflows/format-and-fix.yml +++ b/.github/workflows/format-and-fix.yml @@ -30,7 +30,7 @@ jobs: working-directory: ${{ matrix.package.name }} steps: - uses: actions/checkout@v4 - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 if: ${{ matrix.package.sdk == 'dart' }} - uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # pin@v2.12.0 if: ${{ matrix.package.sdk == 'flutter' }} diff --git a/.github/workflows/hive.yml b/.github/workflows/hive.yml index 5893673318..f13e8d1522 100644 --- a/.github/workflows/hive.yml +++ b/.github/workflows/hive.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 @@ -51,7 +51,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_hive diff --git a/.github/workflows/isar.yml b/.github/workflows/isar.yml index f4038421df..a1e67c3bc8 100644 --- a/.github/workflows/isar.yml +++ b/.github/workflows/isar.yml @@ -93,7 +93,7 @@ jobs: cd isar flutter test -j 1 --coverage --test-randomize-ordering-seed=random - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_isar diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index 9a3fead839..6eafdc199a 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -40,7 +40,7 @@ jobs: - os: macos-latest sdk: beta steps: - - uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b # pin@v1 + - uses: dart-lang/setup-dart@fedb1266e91cf51be2fdb382869461a434b920a3 # pin@v1 with: sdk: ${{ matrix.sdk }} - uses: actions/checkout@v4 @@ -52,7 +52,7 @@ jobs: dart test -p vm --coverage=coverage --test-randomize-ordering-seed=random --chain-stack-traces dart pub run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: name: sentry_logging diff --git a/.github/workflows/sqflite.yml b/.github/workflows/sqflite.yml index a94c31475f..9d3caa78bd 100644 --- a/.github/workflows/sqflite.yml +++ b/.github/workflows/sqflite.yml @@ -93,7 +93,7 @@ jobs: cd sqflite flutter test --coverage --test-randomize-ordering-seed=random - - uses: codecov/codecov-action@4fe8c5f003fae66aa5ebb77cfd3e7bfbbda0b6b0 # pin@v3 + - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # pin@v3 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: name: sentry_sqflite diff --git a/CHANGELOG.md b/CHANGELOG.md index 262bdd0d7e..771f8b1ed0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,76 @@ ### Dependencies +- Remove dead code, cold start bool is now always present ([#1861](https://github.com/getsentry/sentry-dart/pull/1861)) + +### Dependencies + +- Bump Cocoa SDK from v8.19.0 to v8.20.0 ([#1856](https://github.com/getsentry/sentry-dart/pull/1856)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8200) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.19.0...8.20.0) + +## 7.16.0 + +### Features + +- Add `SentryWidget` ([#1846](https://github.com/getsentry/sentry-dart/pull/1846)) + - Prefer to use `SentryWidget` now instead of `SentryScreenshotWidget` and `SentryUserInteractionWidget` directly +- Performance monitoring support for Isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) +- Tracing without performance for Dio integration ([#1837](https://github.com/getsentry/sentry-dart/pull/1837)) +- Accept `Map` in `Hint` class ([#1807](https://github.com/getsentry/sentry-dart/pull/1807)) + - Please check if everything works as expected when using `Hint` + - Factory constructor `Hint.withMap(Map map)` now takes `Map` instead of `Map` + - Method `hint.addAll(Map keysAndValues)` now takes `Map` instead of `Map` + - Method `set(String key, dynamic value)` now takes value of `dynamic` instead of `Object` + - Method `hint.get(String key)` now returns `dynamic` instead of `Object?` + +### Dependencies + +- Bump Cocoa SDK from v8.18.0 to v8.19.0 ([#1803](https://github.com/getsentry/sentry-dart/pull/1844)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8190) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.18.0...8.19.0) +- Bump Android SDK from v7.2.0 to v7.3.0 ([#1852](https://github.com/getsentry/sentry-dart/pull/1852)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#730) + - [diff](https://github.com/getsentry/sentry-java/compare/7.2.0...7.3.0) + +## 7.15.0 + +### Features + +- Add [Spotlight](https://spotlightjs.com/about/) support ([#1786](https://github.com/getsentry/sentry-dart/pull/1786)) + - Set `options.spotlight = Spotlight(enabled: true)` to enable Spotlight +- Add `ConnectivityIntegration` for web ([#1765](https://github.com/getsentry/sentry-dart/pull/1765)) + - We only get the info if online/offline on web platform. The added breadcrumb is set to either `wifi` or `none`. +- Add isar breadcrumbs ([#1800](https://github.com/getsentry/sentry-dart/pull/1800)) +- Starting with Flutter 3.16, Sentry adds the [`appFlavor`](https://api.flutter.dev/flutter/services/appFlavor-constant.html) to the `flutter_context` ([#1799](https://github.com/getsentry/sentry-dart/pull/1799)) +- Add beforeScreenshotCallback to SentryFlutterOptions ([#1805](https://github.com/getsentry/sentry-dart/pull/1805)) +- Add support for `readTransaction` in `sqflite` ([#1819](https://github.com/getsentry/sentry-dart/pull/1819)) + +### Dependencies + +- Bump Android SDK from v7.0.0 to v7.2.0 ([#1788](https://github.com/getsentry/sentry-dart/pull/1788), [#1815](https://github.com/getsentry/sentry-dart/pull/1815)) + - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#720) + - [diff](https://github.com/getsentry/sentry-java/compare/7.0.0...7.2.0) +- Bump Cocoa SDK from v8.17.2 to v8.18.0 ([#1803](https://github.com/getsentry/sentry-dart/pull/1803)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8180) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.17.2...8.18.0) + +## 7.14.0 + +- Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) + +### Fixes + +- Add debug_meta to all events ([#1756](https://github.com/getsentry/sentry-dart/pull/1756)) + - Fixes obfuscated stacktraces when `captureMessage` or `captureEvent` is called with `attachStacktrace` option + +### Features + +- Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) +- Add `Hive` breadcrumbs ([#1773](https://github.com/getsentry/sentry-dart/pull/1773)) + +### Dependencies + - Bump Android SDK from v6.34.0 to v7.0.0 ([#1768](https://github.com/getsentry/sentry-dart/pull/1768)) - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#700) - [diff](https://github.com/getsentry/sentry-java/compare/6.34.0...7.0.0) diff --git a/drift/README.md b/drift/README.md index 2a572aba02..57b335700a 100644 --- a/drift/README.md +++ b/drift/README.md @@ -79,4 +79,4 @@ Future runApp() async { * [![Discussions](https://img.shields.io/github/discussions/getsentry/sentry-dart.svg)](https://github.com/getsentry/sentry-dart/discussions) * [![Discord Chat](https://img.shields.io/discord/621778831602221064?logo=discord&logoColor=ffffff&color=7389D8)](https://discord.gg/PXa5Apfe7K) * [![Stack Overflow](https://img.shields.io/badge/stack%20overflow-sentry-green.svg)](https://stackoverflow.com/questions/tagged/sentry) -* [![Twitter Follow](https://img.shields.io/twitter/follow/getsentry?label=getsentry&style=social)](https://twitter.com/intent/follow?screen_name=getsentry) \ No newline at end of file +* [![Twitter Follow](https://img.shields.io/twitter/follow/getsentry?label=getsentry&style=social)](https://twitter.com/intent/follow?screen_name=getsentry) diff --git a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt index c06a8b0dc2..ee2c7e423c 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt @@ -16,8 +16,11 @@ class SentryFlutter( options: SentryAndroidOptions, data: Map, ) { + private val nativeSdk: String +) { data.getIfNotNull("dsn") { - options.dsn = it + options.dsn = it + } } data.getIfNotNull("debug") { options.isDebug = it @@ -128,7 +131,3 @@ private fun Map.getIfNotNull( key: String, callback: (T) -> Unit, ) { - (get(key) as? T)?.let { - callback(it) - } -} diff --git a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt index 602253bbb3..de95380946 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt @@ -19,6 +19,7 @@ import io.sentry.SentryEvent import io.sentry.SentryOptions import io.sentry.android.core.ActivityFramesTracker import io.sentry.android.core.InternalSentrySdk +import io.sentry.android.core.BuildConfig.VERSION_NAME import io.sentry.android.core.LoadClass import io.sentry.android.core.SentryAndroid import io.sentry.android.core.SentryAndroidOptions @@ -134,9 +135,6 @@ class SentryFlutterPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { if (appStartTime == null) { Log.w("Sentry", "App start won't be sent due to missing appStartTime") result.success(null) - } else if (isColdStart == null) { - Log.w("Sentry", "App start won't be sent due to missing isColdStart") - result.success(null) } else { val appStartTimeMillis = DateUtils.nanosToMillis(appStartTime.nanoTimestamp().toDouble()) val item = mapOf( diff --git a/flutter/config/detekt-bl.xml b/flutter/config/detekt-bl.xml index bfd59bc97e..bf2e55e08b 100644 --- a/flutter/config/detekt-bl.xml +++ b/flutter/config/detekt-bl.xml @@ -2,8 +2,9 @@ + ComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) CyclomaticComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) - LongMethod:SentryFlutter.kt$SentryFlutter$fun updateOptions( options: SentryAndroidOptions, data: Map<String, Any>, ) + LongMethod:SentryFlutter.kt$SentryFlutter$fun updateOptions(options: SentryAndroidOptions, data: Map<String, Any>) MagicNumber:MainActivity.kt$MainActivity$6_000 TooGenericExceptionCaught:MainActivity.kt$MainActivity$e: Exception TooGenericExceptionThrown:MainActivity.kt$MainActivity$throw Exception("Catch this java exception thrown from Kotlin thread!") diff --git a/flutter/example/android/build.gradle b/flutter/example/android/build.gradle index e628374358..50bb21eda7 100644 --- a/flutter/example/android/build.gradle +++ b/flutter/example/android/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'io.sentry:sentry-android-gradle-plugin:3.5.0' + classpath 'io.sentry:sentry-android-gradle-plugin:4.2.0' classpath 'com.android.tools.build:gradle:7.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'io.github.howardpang:androidNativeBundle:1.1.3' diff --git a/flutter/ios/sentry_flutter.podspec b/flutter/ios/sentry_flutter.podspec index b5cf5dd606..ff0d593ea2 100644 --- a/flutter/ios/sentry_flutter.podspec +++ b/flutter/ios/sentry_flutter.podspec @@ -12,7 +12,7 @@ Sentry SDK for Flutter with support to native through sentry-cocoa. :tag => s.version.to_s } s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' - s.dependency 'Sentry/HybridSDK', '8.19.0' + s.dependency 'Sentry/HybridSDK', '8.20.0' s.ios.dependency 'Flutter' s.osx.dependency 'FlutterMacOS' s.ios.deployment_target = '12.0' diff --git a/flutter/test/event_processor/flutter_enricher_event_processor_test.dart b/flutter/test/event_processor/flutter_enricher_event_processor_test.dart index 892e7ff517..9fa6707367 100644 --- a/flutter/test/event_processor/flutter_enricher_event_processor_test.dart +++ b/flutter/test/event_processor/flutter_enricher_event_processor_test.dart @@ -30,6 +30,33 @@ void main() { // https://pub.dev/packages/test#platform-specific-configuration return; } + + // These two values need to be changed inside the test, + // otherwise the Flutter test framework complains that these + // values are changed outside of a test. + debugBrightnessOverride = Brightness.dark; + debugDefaultTargetPlatformOverride = TargetPlatform.android; + final enricher = fixture.getSut( + binding: () => tester.binding, + ); + + final event = await enricher.apply(SentryEvent(), Hint()); + + debugBrightnessOverride = null; + debugDefaultTargetPlatformOverride = null; + + final flutterContext = event?.contexts['flutter_context']; + expect(flutterContext, isNotNull); + expect(flutterContext, isA>()); + }, skip: !kIsWeb); + + testWidgets('flutter context on web', (WidgetTester tester) async { + if (!kIsWeb) { + // widget tests don't support onPlatform config + // https://pub.dev/packages/test#platform-specific-configuration + return; + } + // These two values need to be changed inside the test, // otherwise the Flutter test framework complains that these // values are changed outside of a test. diff --git a/hive/README.md b/hive/README.md index 14f26d9ce8..b67e9e4f7b 100644 --- a/hive/README.md +++ b/hive/README.md @@ -83,4 +83,4 @@ class Person { * [![Discussions](https://img.shields.io/github/discussions/getsentry/sentry-dart.svg)](https://github.com/getsentry/sentry-dart/discussions) * [![Discord Chat](https://img.shields.io/discord/621778831602221064?logo=discord&logoColor=ffffff&color=7389D8)](https://discord.gg/PXa5Apfe7K) * [![Stack Overflow](https://img.shields.io/badge/stack%20overflow-sentry-green.svg)](https://stackoverflow.com/questions/tagged/sentry) -* [![Twitter Follow](https://img.shields.io/twitter/follow/getsentry?label=getsentry&style=social)](https://twitter.com/intent/follow?screen_name=getsentry) \ No newline at end of file +* [![Twitter Follow](https://img.shields.io/twitter/follow/getsentry?label=getsentry&style=social)](https://twitter.com/intent/follow?screen_name=getsentry) diff --git a/isar/README.md b/isar/README.md index 06fa32dd48..011e8e834f 100644 --- a/isar/README.md +++ b/isar/README.md @@ -81,4 +81,4 @@ Future runApp() async { * [![Discussions](https://img.shields.io/github/discussions/getsentry/sentry-dart.svg)](https://github.com/getsentry/sentry-dart/discussions) * [![Discord Chat](https://img.shields.io/discord/621778831602221064?logo=discord&logoColor=ffffff&color=7389D8)](https://discord.gg/PXa5Apfe7K) * [![Stack Overflow](https://img.shields.io/badge/stack%20overflow-sentry-green.svg)](https://stackoverflow.com/questions/tagged/sentry) -* [![Twitter Follow](https://img.shields.io/twitter/follow/getsentry?label=getsentry&style=social)](https://twitter.com/intent/follow?screen_name=getsentry) \ No newline at end of file +* [![Twitter Follow](https://img.shields.io/twitter/follow/getsentry?label=getsentry&style=social)](https://twitter.com/intent/follow?screen_name=getsentry) diff --git a/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart b/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart index 1d4e29a66a..c3ab23ee83 100644 --- a/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart +++ b/scripts/flutter_symbol_collector/lib/src/symbol_collector_cli.dart @@ -19,7 +19,7 @@ class SymbolCollectorCli { // https://github.com/getsentry/symbol-collector/releases @internal - static const version = '1.14.0'; + static const version = '1.15.0'; @internal late final String cli; From 1cc62d2a5372b01f7404a83f01bc41aa13cae0ac Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Tue, 6 Feb 2024 23:35:12 +0100 Subject: [PATCH 156/166] update --- flutter/config/detekt-bl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flutter/config/detekt-bl.xml b/flutter/config/detekt-bl.xml index bf2e55e08b..7418b9d096 100644 --- a/flutter/config/detekt-bl.xml +++ b/flutter/config/detekt-bl.xml @@ -4,7 +4,7 @@ ComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) CyclomaticComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) - LongMethod:SentryFlutter.kt$SentryFlutter$fun updateOptions(options: SentryAndroidOptions, data: Map<String, Any>) + LongMethod:SentryFlutter.kt$SentryFlutter$fun updateOptions( options: SentryAndroidOptions, data: Map<String, Any>, ) MagicNumber:MainActivity.kt$MainActivity$6_000 TooGenericExceptionCaught:MainActivity.kt$MainActivity$e: Exception TooGenericExceptionThrown:MainActivity.kt$MainActivity$throw Exception("Catch this java exception thrown from Kotlin thread!") From be59865ddbb4ccc546ecb20ee82309b36e30886e Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Tue, 6 Feb 2024 23:37:07 +0100 Subject: [PATCH 157/166] update --- .../src/main/kotlin/io/sentry/flutter/SentryFlutter.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt index ee2c7e423c..dc804c6aae 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt @@ -131,3 +131,7 @@ private fun Map.getIfNotNull( key: String, callback: (T) -> Unit, ) { + (get(key) as? T)?.let { + callback(it) + } +} From beedc6a594ce48678d105ccca3bf17cfdfce348d Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Tue, 6 Feb 2024 23:38:57 +0100 Subject: [PATCH 158/166] update --- CHANGELOG.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 771f8b1ed0..efc6e83e2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,16 @@ - Set ip_address to {{auto}} by default, even if sendDefaultPII is disabled ([#1665](https://github.com/getsentry/sentry-dart/pull/1665)) - Instead use the "Prevent Storing of IP Addresses" option in the "Security & Privacy" project settings on sentry.io +### Fixes + +- Remove dead code, cold start bool is now always present ([#1861](https://github.com/getsentry/sentry-dart/pull/1861)) + +### Dependencies + +- Bump Cocoa SDK from v8.19.0 to v8.20.0 ([#1856](https://github.com/getsentry/sentry-dart/pull/1856)) + - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8200) + - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.19.0...8.20.0) + ## 7.16.0 ### Features @@ -78,16 +88,6 @@ - Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) - Add `Hive` breadcrumbs ([#1773](https://github.com/getsentry/sentry-dart/pull/1773)) -### Dependencies - -- Remove dead code, cold start bool is now always present ([#1861](https://github.com/getsentry/sentry-dart/pull/1861)) - -### Dependencies - -- Bump Cocoa SDK from v8.19.0 to v8.20.0 ([#1856](https://github.com/getsentry/sentry-dart/pull/1856)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8200) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.19.0...8.20.0) - ## 7.16.0 ### Features From 77f76f5a1ccb7cf0d5b6708f6411ff727af53f48 Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Tue, 6 Feb 2024 23:41:55 +0100 Subject: [PATCH 159/166] update --- CHANGELOG.md | 60 ---------------------------------------------------- 1 file changed, 60 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index efc6e83e2e..b70a4c5d13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,66 +88,6 @@ - Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) - Add `Hive` breadcrumbs ([#1773](https://github.com/getsentry/sentry-dart/pull/1773)) -## 7.16.0 - -### Features - -- Add `SentryWidget` ([#1846](https://github.com/getsentry/sentry-dart/pull/1846)) - - Prefer to use `SentryWidget` now instead of `SentryScreenshotWidget` and `SentryUserInteractionWidget` directly -- Performance monitoring support for Isar ([#1726](https://github.com/getsentry/sentry-dart/pull/1726)) -- Tracing without performance for Dio integration ([#1837](https://github.com/getsentry/sentry-dart/pull/1837)) -- Accept `Map` in `Hint` class ([#1807](https://github.com/getsentry/sentry-dart/pull/1807)) - - Please check if everything works as expected when using `Hint` - - Factory constructor `Hint.withMap(Map map)` now takes `Map` instead of `Map` - - Method `hint.addAll(Map keysAndValues)` now takes `Map` instead of `Map` - - Method `set(String key, dynamic value)` now takes value of `dynamic` instead of `Object` - - Method `hint.get(String key)` now returns `dynamic` instead of `Object?` - -### Dependencies - -- Bump Cocoa SDK from v8.18.0 to v8.19.0 ([#1803](https://github.com/getsentry/sentry-dart/pull/1844)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8190) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.18.0...8.19.0) -- Bump Android SDK from v7.2.0 to v7.3.0 ([#1852](https://github.com/getsentry/sentry-dart/pull/1852)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#730) - - [diff](https://github.com/getsentry/sentry-java/compare/7.2.0...7.3.0) - -## 7.15.0 - -### Features - -- Add [Spotlight](https://spotlightjs.com/about/) support ([#1786](https://github.com/getsentry/sentry-dart/pull/1786)) - - Set `options.spotlight = Spotlight(enabled: true)` to enable Spotlight -- Add `ConnectivityIntegration` for web ([#1765](https://github.com/getsentry/sentry-dart/pull/1765)) - - We only get the info if online/offline on web platform. The added breadcrumb is set to either `wifi` or `none`. -- Add isar breadcrumbs ([#1800](https://github.com/getsentry/sentry-dart/pull/1800)) -- Starting with Flutter 3.16, Sentry adds the [`appFlavor`](https://api.flutter.dev/flutter/services/appFlavor-constant.html) to the `flutter_context` ([#1799](https://github.com/getsentry/sentry-dart/pull/1799)) -- Add beforeScreenshotCallback to SentryFlutterOptions ([#1805](https://github.com/getsentry/sentry-dart/pull/1805)) -- Add support for `readTransaction` in `sqflite` ([#1819](https://github.com/getsentry/sentry-dart/pull/1819)) - -### Dependencies - -- Bump Android SDK from v7.0.0 to v7.2.0 ([#1788](https://github.com/getsentry/sentry-dart/pull/1788), [#1815](https://github.com/getsentry/sentry-dart/pull/1815)) - - [changelog](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#720) - - [diff](https://github.com/getsentry/sentry-java/compare/7.0.0...7.2.0) -- Bump Cocoa SDK from v8.17.2 to v8.18.0 ([#1803](https://github.com/getsentry/sentry-dart/pull/1803)) - - [changelog](https://github.com/getsentry/sentry-cocoa/blob/main/CHANGELOG.md#8180) - - [diff](https://github.com/getsentry/sentry-cocoa/compare/8.17.2...8.18.0) - -## 7.14.0 - -- Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) - -### Fixes - -- Add debug_meta to all events ([#1756](https://github.com/getsentry/sentry-dart/pull/1756)) - - Fixes obfuscated stacktraces when `captureMessage` or `captureEvent` is called with `attachStacktrace` option - -### Features - -- Add option to opt out of fatal level for automatically collected errors ([#1738](https://github.com/getsentry/sentry-dart/pull/1738)) -- Add `Hive` breadcrumbs ([#1773](https://github.com/getsentry/sentry-dart/pull/1773)) - ### Dependencies - Bump Android SDK from v6.34.0 to v7.0.0 ([#1768](https://github.com/getsentry/sentry-dart/pull/1768)) From 6f57f1506ef07411d50f2a3154043d32b7c176ad Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 7 Feb 2024 10:55:33 +0100 Subject: [PATCH 160/166] fix: remove Flutter dep from Drift integration (#1867) * Remove Flutter dep * Update CHANGELOG --- CHANGELOG.md | 1 + drift/pubspec.yaml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ec2a05f5e..56777b2fde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Fixes +- Remove Flutter dependency from Drift integration ([#1867](https://github.com/getsentry/sentry-dart/pull/1867)) - Remove dead code, cold start bool is now always present ([#1861](https://github.com/getsentry/sentry-dart/pull/1861)) ### Dependencies diff --git a/drift/pubspec.yaml b/drift/pubspec.yaml index 92323b4f63..93a854043f 100644 --- a/drift/pubspec.yaml +++ b/drift/pubspec.yaml @@ -7,7 +7,6 @@ issue_tracker: https://github.com/getsentry/sentry-dart/issues environment: sdk: '>=2.17.0 <4.0.0' - flutter: '>=3.3.0' dependencies: sentry: 7.16.0 From 8de8e1a5bb09520305740788bd4f5e546d2c8289 Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Wed, 7 Feb 2024 11:04:12 +0100 Subject: [PATCH 161/166] Remove unused import --- .../src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt index de95380946..5aad15a0b3 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutterPlugin.kt @@ -19,7 +19,6 @@ import io.sentry.SentryEvent import io.sentry.SentryOptions import io.sentry.android.core.ActivityFramesTracker import io.sentry.android.core.InternalSentrySdk -import io.sentry.android.core.BuildConfig.VERSION_NAME import io.sentry.android.core.LoadClass import io.sentry.android.core.SentryAndroid import io.sentry.android.core.SentryAndroidOptions From 112ec6570b47bac4155eabab53809b0164239315 Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Wed, 7 Feb 2024 11:05:53 +0100 Subject: [PATCH 162/166] fix --- .../src/main/kotlin/io/sentry/flutter/SentryFlutter.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt index dc804c6aae..c06a8b0dc2 100644 --- a/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt +++ b/flutter/android/src/main/kotlin/io/sentry/flutter/SentryFlutter.kt @@ -16,11 +16,8 @@ class SentryFlutter( options: SentryAndroidOptions, data: Map, ) { - private val nativeSdk: String -) { data.getIfNotNull("dsn") { - options.dsn = it - } + options.dsn = it } data.getIfNotNull("debug") { options.isDebug = it From 41009bec2e08fde11b09497662490a2c254fd50c Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Wed, 7 Feb 2024 11:55:12 +0100 Subject: [PATCH 163/166] fix --- ...flutter_enricher_event_processor_test.dart | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/flutter/test/event_processor/flutter_enricher_event_processor_test.dart b/flutter/test/event_processor/flutter_enricher_event_processor_test.dart index 9fa6707367..892e7ff517 100644 --- a/flutter/test/event_processor/flutter_enricher_event_processor_test.dart +++ b/flutter/test/event_processor/flutter_enricher_event_processor_test.dart @@ -30,33 +30,6 @@ void main() { // https://pub.dev/packages/test#platform-specific-configuration return; } - - // These two values need to be changed inside the test, - // otherwise the Flutter test framework complains that these - // values are changed outside of a test. - debugBrightnessOverride = Brightness.dark; - debugDefaultTargetPlatformOverride = TargetPlatform.android; - final enricher = fixture.getSut( - binding: () => tester.binding, - ); - - final event = await enricher.apply(SentryEvent(), Hint()); - - debugBrightnessOverride = null; - debugDefaultTargetPlatformOverride = null; - - final flutterContext = event?.contexts['flutter_context']; - expect(flutterContext, isNotNull); - expect(flutterContext, isA>()); - }, skip: !kIsWeb); - - testWidgets('flutter context on web', (WidgetTester tester) async { - if (!kIsWeb) { - // widget tests don't support onPlatform config - // https://pub.dev/packages/test#platform-specific-configuration - return; - } - // These two values need to be changed inside the test, // otherwise the Flutter test framework complains that these // values are changed outside of a test. From 51969032bbb20f3f6df4bbb6c34a269239c345a6 Mon Sep 17 00:00:00 2001 From: GIancarlo Buenaflor Date: Wed, 7 Feb 2024 11:58:02 +0100 Subject: [PATCH 164/166] fix --- flutter/config/detekt-bl.xml | 1 - isar/README.md | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/flutter/config/detekt-bl.xml b/flutter/config/detekt-bl.xml index 7418b9d096..bfd59bc97e 100644 --- a/flutter/config/detekt-bl.xml +++ b/flutter/config/detekt-bl.xml @@ -2,7 +2,6 @@ - ComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) CyclomaticComplexMethod:SentryFlutterPlugin.kt$SentryFlutterPlugin$override fun onMethodCall(call: MethodCall, result: Result) LongMethod:SentryFlutter.kt$SentryFlutter$fun updateOptions( options: SentryAndroidOptions, data: Map<String, Any>, ) MagicNumber:MainActivity.kt$MainActivity$6_000 diff --git a/isar/README.md b/isar/README.md index 011e8e834f..06fa32dd48 100644 --- a/isar/README.md +++ b/isar/README.md @@ -81,4 +81,4 @@ Future runApp() async { * [![Discussions](https://img.shields.io/github/discussions/getsentry/sentry-dart.svg)](https://github.com/getsentry/sentry-dart/discussions) * [![Discord Chat](https://img.shields.io/discord/621778831602221064?logo=discord&logoColor=ffffff&color=7389D8)](https://discord.gg/PXa5Apfe7K) * [![Stack Overflow](https://img.shields.io/badge/stack%20overflow-sentry-green.svg)](https://stackoverflow.com/questions/tagged/sentry) -* [![Twitter Follow](https://img.shields.io/twitter/follow/getsentry?label=getsentry&style=social)](https://twitter.com/intent/follow?screen_name=getsentry) +* [![Twitter Follow](https://img.shields.io/twitter/follow/getsentry?label=getsentry&style=social)](https://twitter.com/intent/follow?screen_name=getsentry) \ No newline at end of file From 651ebf5f88c68c4ee1521a27d12ff5df55005934 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 7 Feb 2024 14:07:26 +0100 Subject: [PATCH 165/166] Update flutter_test.yml --- .github/workflows/flutter_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/flutter_test.yml b/.github/workflows/flutter_test.yml index 9903988f56..987897c92b 100644 --- a/.github/workflows/flutter_test.yml +++ b/.github/workflows/flutter_test.yml @@ -54,7 +54,7 @@ jobs: run: flutter pub get - name: Gradle cache - uses: gradle/gradle-build-action@3b1b3b9a2104c2b47fbae53f3938079c00c9bb87 + uses: gradle/gradle-build-action@3b1b3b9a2104c2b47fbae53f3938079c00c9bb87 # pin@v3.0.0 - name: AVD cache uses: actions/cache@v4 From 3a5faf21bdbf6fc8bffd883d2cd2395b7bb4ac4d Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Wed, 7 Feb 2024 14:22:33 +0100 Subject: [PATCH 166/166] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 524f3691e0..875e2beade 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 8.0.0 +## Unreleased ### Breaking Changes