Skip to content

SliverList cannot scroll to the bottom after SliverAppBar gets hidden #169045

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
a1573595 opened this issue May 18, 2025 · 3 comments
Open

SliverList cannot scroll to the bottom after SliverAppBar gets hidden #169045

a1573595 opened this issue May 18, 2025 · 3 comments
Labels
f: scrolling Viewports, list views, slivers, etc. found in release: 3.29 Found to occur in 3.29 found in release: 3.33 Found to occur in 3.33 framework flutter/packages/flutter repository. See also f: labels. has reproducible steps The issue has been confirmed reproducible and is ready to work on P2 Important issues not at the top of the work list team-framework Owned by Framework team triaged-framework Triaged by Framework team workaround available There is a workaround available to overcome the issue

Comments

@a1573595
Copy link

Steps to reproduce

Click the floating button.

Expected results

List scroll to the bottom.

Actual results

The list stops scrolling after the Appbar is hidden.

Code sample

Code sample
import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: HomePage(),
    ));

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
  bool _isAnimating = false;

  late final _scrollController = ScrollController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: NestedScrollView(
        controller: _scrollController,
        headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
          return [
            SliverOverlapAbsorber(
              handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
              sliver: SliverAppBar(
                title: Text("Appbar"),
              ),
            ),
          ];
        },
        body: Builder(
          builder: (context) {
            return CustomScrollView(
              physics: NeverScrollableScrollPhysics(),
              slivers: [
                SliverOverlapInjector(
                  handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
                ),
                SliverList(
                  delegate: SliverChildBuilderDelegate(
                    (BuildContext context, int i) {
                      return ListTile(
                        leading: Icon(Icons.wb_sunny),
                        title: Text("Index: $i"),
                      );
                    },
                    childCount: 50,
                  ),
                ),
              ],
            );
          },
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          _scrollListViewToBottom();
        },
      ),
    );
  }

  @override
  void dispose() {
    _scrollController.dispose();

    super.dispose();
  }

  Future<void> _scrollListViewToBottom() async {
    final scrollController = _scrollController;
    if (_isAnimating) return;
    _isAnimating = true;

    return scrollController
        .animateTo(
          scrollController.position.maxScrollExtent,
          duration: const Duration(milliseconds: 300),
          curve: Curves.easeInOut,
        )
        .then((_) => _isAnimating = false);
  }
}

Screenshots or Video

Screenshots / Video demonstration
2025-05-18.2.41.55.mov

Logs

Logs
[  +14 ms] executing: sysctl hw.optional.arm64
[   +5 ms] Exit code 0 from: sysctl hw.optional.arm64
[        ] hw.optional.arm64: 1
[  +10 ms] executing: sw_vers -productName
[  +10 ms] Exit code 0 from: sw_vers -productName
[        ] macOS
[        ] executing: sw_vers -productVersion
[   +9 ms] Exit code 0 from: sw_vers -productVersion
[        ] 15.5
[        ] executing: sw_vers -buildVersion
[   +9 ms] Exit code 0 from: sw_vers -buildVersion
[        ] 24F74
[        ] executing: uname -m
[   +3 ms] Exit code 0 from: uname -m
[        ] arm64
[  +11 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update.
[        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +17 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
[        ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
[        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update.
[        ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
[        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'PubDependencies' is not required, skipping update.
[  +36 ms] executing: which security
[   +5 ms] executing: which openssl
[   +6 ms] executing: security find-identity -p codesigning -v
[  +34 ms]   1) 213128258A4CD015F6A23E8F0E620408B38BB06A "Apple Development: cw@intellianalyze.com (5V42G7R67V)"
                1 valid identities found
[   +1 ms] Developer identity "Apple Development: cw@intellianalyze.com (5V42G7R67V)" selected for iOS code signing
[        ] executing: security find-certificate -c 5V42G7R67V -p
[  +21 ms] -----BEGIN CERTIFICATE-----
           MIIFxjCCBK6gAwIBAgIQbhAGZseDVFQDKQlBqDy/OTANBgkqhkiG9w0BAQsFADB1
           MUQwQgYDVQQDDDtBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9ucyBD
           ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTELMAkGA1UECwwCRzMxEzARBgNVBAoMCkFw
           cGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTI1MDQyMDEyMjkxN1oXDTI2MDQyMDEy
           MjkxNlowgYwxGjAYBgoJkiaJk/IsZAEBDAo3VDZNNEpBOThDMT4wPAYDVQQDDDVB
           cHBsZSBEZXZlbG9wbWVudDogY3dAaW50ZWxsaWFuYWx5emUuY29tICg1VjQyRzdS
           NjdWKTETMBEGA1UECwwKM005Q1VXN1pMTTEMMAoGA1UECgwDQyBXMQswCQYDVQQG
           EwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMIu1rYgkaV8iRt/
           GV2iJ3cckF95EsRPi59hx2t8CCPx9n+qFITOEo+DZ/dQHU+MML+0TIj/+jJa4Iuf
           6SaQ5FdTmLbMJkb0sKLFE3ttlyGT1ZkRDE7IMTq0tKl27Z2z5zJm5yKClv1UsXif
           ffn+9KnfpswzTKEVKDHtduCyEmuzQ5/yroFX+HHpZkQayb322ffp7AcUPcAE43AT
           ocfVH033JDRB5/c7BZF4V24RUSuFBUp9mh2JcsMZvAkXjM1krlSVhz9uvgyB6ZvO
           DumWpRHAEodcMhppYI9JAH8cAKr8RnPuvh/6+7vH3DDqgKTUhvqTPr+w8HNAhNfY
           Jp+rsckCAwEAAaOCAjgwggI0MAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUCf7A
           FZD5r2QKkhK5JihjDJfsp7IwcAYIKwYBBQUHAQEEZDBiMC0GCCsGAQUFBzAChiFo
           dHRwOi8vY2VydHMuYXBwbGUuY29tL3d3ZHJnMy5kZXIwMQYIKwYBBQUHMAGGJWh0
           dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3NwMDMtd3dkcmczMDQwggEeBgNVHSAEggEV
           MIIBETCCAQ0GCSqGSIb3Y2QFATCB/zCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5j
           ZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2Vw
           dGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQg
           Y29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlm
           aWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjA3BggrBgEFBQcCARYraHR0cHM6
           Ly93d3cuYXBwbGUuY29tL2NlcnRpZmljYXRlYXV0aG9yaXR5LzAWBgNVHSUBAf8E
           DDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUcGneBrTCai2zBMgQCdx1WIdqtDUwDgYD
           VR0PAQH/BAQDAgeAMBMGCiqGSIb3Y2QGAQIBAf8EAgUAMBMGCiqGSIb3Y2QGAQwB
           Af8EAgUAMA0GCSqGSIb3DQEBCwUAA4IBAQBBzy/I/VeBzOu+aDs7GFe36Q3b6e90
           fWaMhPCSMIR8yXkgEKgQ/RNNOZahbn9HUgNYlZh7Kd1qWHSg11I+acPCAjOBL19v
           GHx6YnoskVfDRXoC560PqJuOFbab5renzBH6TvmgH7nlCCmXRC6dxD6Zdahwt9MJ
           2OmLxbBMoDQ8fgBmLiHikSib83PW7oHS5hHDlHpd4QlTvPApgW3bRGizIrET+HcJ
           2KeIdrGxDbKVf6g+8/nRKYPErfEabKzvE3vM3jHdY/4Ub+m6oHKtb9v0GeK6BJ/1
           XhCbky7e4pVnd35rUz84G2NCjFlfasI1X/22E/k8ulCoCC6ZuPqAUDvY
           -----END CERTIFICATE-----
[   +1 ms] executing: openssl x509 -subject
[  +48 ms] Creating project foo...
[ +104 ms] executing: [/Users/chien/Flutter/untitled2/] /Users/chien/fvm/versions/3.29.3/bin/cache/dart-sdk/bin/dart pub --suppress-analytics --color
--directory foo get --example
Resolving dependencies in `foo`... 
Downloading packages... 
Got dependencies in `foo`.
[ +939 ms] Generating /Users/chien/Flutter/untitled2/foo/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
[   +4 ms] Wrote 81 files.
[        ] 
           All done!
[        ] You can find general documentation for Flutter at: https://docs.flutter.dev/
           Detailed API documentation is available at: https://api.flutter.dev/
           If you prefer video documentation, consider: https://www.youtube.com/c/flutterdev
           
           In order to run your application, type:
           
             $ cd foo
             $ flutter run
           
           Your application code is in foo/lib/main.dart.
           
[  +82 ms] executing: /usr/bin/plutil -convert xml1 -o - /Applications/Android Studio.app/Contents/Info.plist
[   +7 ms] Exit code 0 from: /usr/bin/plutil -convert xml1 -o - /Applications/Android Studio.app/Contents/Info.plist
[        ] <?xml version="1.0" encoding="UTF-8"?>
           <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
           <plist version="1.0">
           <dict>
                <key>CFBundleDevelopmentRegion</key>
                <string>English</string>
                <key>CFBundleDocumentTypes</key>
                <array>
                        <dict>
                                <key>CFBundleTypeExtensions</key>
                                <array>
                                        <string>ipr</string>
                                </array>
                                <key>CFBundleTypeIconFile</key>
                                <string>studio.icns</string>
                                <key>CFBundleTypeName</key>
                                <string>Android Studio Project File</string>
                                <key>CFBundleTypeRole</key>
                                <string>Editor</string>
                        </dict>
                        <dict>
                                <key>CFBundleTypeExtensions</key>
                                <array>
                                        <string>*</string>
                                </array>
                                <key>CFBundleTypeName</key>
                                <string>All documents</string>
                                <key>CFBundleTypeOSTypes</key>
                                <array>
                                        <string>****</string>
                                </array>
                                <key>CFBundleTypeRole</key>
                                <string>Editor</string>
                                <key>LSTypeIsPackage</key>
                                <false/>
                        </dict>
                </array>
                <key>CFBundleExecutable</key>
                <string>studio</string>
                <key>CFBundleGetInfoString</key>
                <string>Android Studio 2024.3, build AI-243.25659.59.2432.13423653. Copyright JetBrains s.r.o., (c) 2000-2025</string>
                <key>CFBundleIconFile</key>
                <string>studio.icns</string>
                <key>CFBundleIdentifier</key>
                <string>com.google.android.studio</string>
                <key>CFBundleInfoDictionaryVersion</key>
                <string>6.0</string>
                <key>CFBundleName</key>
                <string>Android Studio</string>
                <key>CFBundlePackageType</key>
                <string>APPL</string>
                <key>CFBundleShortVersionString</key>
                <string>2024.3</string>
                <key>CFBundleURLTypes</key>
                <array>
                        <dict>
                                <key>CFBundleTypeRole</key>
                                <string>Editor</string>
                                <key>CFBundleURLName</key>
                                <string>Stacktrace</string>
                                <key>CFBundleURLSchemes</key>
                                <array>
                                        <string>idea</string>
                                </array>
                        </dict>
                </array>
                <key>CFBundleVersion</key>
                <string>AI-243.25659.59.2432.13423653</string>
                <key>LSApplicationCategoryType</key>
                <string>public.app-category.developer-tools</string>
                <key>LSArchitecturePriority</key>
                <array>
                        <string>arm64</string>
                </array>
                <key>LSMinimumSystemVersion</key>
                <string>10.13</string>
                <key>LSRequiresNativeExecution</key>
                <string>YES</string>
                <key>NSAppleEventsUsageDescription</key>
                <string>An application in Android Studio requests the ability to send Apple events.</string>
                <key>NSBluetoothAlwaysUsageDescription</key>
                <string>An application in Android Studio requests access to Bluetooth.</string>
                <key>NSCameraUsageDescription</key>
                <string>An application in Android Studio requests access to the device's camera.</string>
                <key>NSDesktopFolderUsageDescription</key>
                <string>An application in Android Studio requests access to the user's Desktop folder.</string>
                <key>NSDocumentsFolderUsageDescription</key>
                <string>An application in Android Studio requests access to the user's Documents folder.</string>
                <key>NSDownloadsFolderUsageDescription</key>
                <string>An application in Android Studio requests access to the user's Downloads folder.</string>
                <key>NSHighResolutionCapable</key>
                <true/>
                <key>NSLocalNetworkUsageDescription</key>
                <string>Android Studio's features, such as SSH and database connectivity, require permissions for accessing the local network and sending
                broadcast requests.</string>
                <key>NSLocationUsageDescription</key>
                <string>An application in Android Studio requests access to the user's location information.</string>
                <key>NSMicrophoneUsageDescription</key>
                <string>An application in Android Studio requests access to the device's microphone.</string>
                <key>NSNetworkVolumesUsageDescription</key>
                <string>An application in Android Studio requests access to files on a network volume.</string>
                <key>NSRemovableVolumesUsageDescription</key>
                <string>An application in Android Studio requests access to files on a removable volume.</string>
                <key>NSSupportsAutomaticGraphicsSwitching</key>
                <true/>
           </dict>
           </plist>
[  +48 ms] executing: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java -version
[  +57 ms] Exit code 0 from: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java -version
[        ] openjdk version "21.0.6" 2025-01-21
           OpenJDK Runtime Environment (build 21.0.6+-13368085-b895.109)
           OpenJDK 64-Bit Server VM (build 21.0.6+-13368085-b895.109, mixed mode)
[   +1 ms] executing: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java --version
[  +60 ms] Exit code 0 from: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java --version
[        ] openjdk 21.0.6 2025-01-21
           OpenJDK Runtime Environment (build 21.0.6+-13368085-b895.109)
           OpenJDK 64-Bit Server VM (build 21.0.6+-13368085-b895.109, mixed mode)
[   +6 ms] "flutter create" took 1,536ms.
[   +1 ms] Running 1 shutdown hook
[   +1 ms] Shutdown hooks complete
[        ] exiting with code 0

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.29.3, on macOS 15.5 24F74 darwin-arm64, locale zh-Hant-TW) [352ms]
    • Flutter version 3.29.3 on channel stable at /Users/chien/fvm/versions/3.29.3
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ea121f8859 (5 weeks ago), 2025-04-11 19:10:07 +0000
    • Engine revision cf56914b32
    • Dart version 3.7.2
    • DevTools version 2.42.3

[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.1) [1,208ms]
    • Android SDK at /Users/chien/Library/Android/sdk
    • Platform android-35, build-tools 35.0.1
    • ANDROID_HOME = /Users/chien/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
      This JDK is specified in your Flutter configuration.
      To change the current JDK, run: `flutter config --jdk-dir="path/to/jdk"`.
    • Java version OpenJDK Runtime Environment (build 21.0.6+-13368085-b895.109)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 16.3) [735ms]
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 16E140
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web [35ms]
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2024.3) [35ms]
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 21.0.6+-13368085-b895.109)

[✓] IntelliJ IDEA Community Edition (version 2024.3.5) [34ms]
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.99.0) [13ms]
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (3 available) [5.9s]
    • sdk gphone64 arm64 (mobile)     • emulator-5554         • android-arm64  • Android 14 (API 34) (emulator)
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad • darwin         • macOS 15.5 24F74 darwin-arm64
    • Chrome (web)                    • chrome                • web-javascript • Google Chrome 136.0.7103.114

[✓] Network resources [320ms]
    • All expected network resources are available.

• No issues found!
@darshankawar darshankawar added the in triage Presently being triaged by the triage team label May 19, 2025
@darshankawar darshankawar changed the title SliverList cannot scroll to the bottom SliverList cannot scroll to the bottom after SliverAppBar gets hidden May 19, 2025
@darshankawar
Copy link
Member

Thanks for the report. Seeing the same behavior as reported in latest sdk versions.


stable : 3.29.3
master : 3.33.0-1.0.pre.123

@darshankawar darshankawar added framework flutter/packages/flutter repository. See also f: labels. f: scrolling Viewports, list views, slivers, etc. has reproducible steps The issue has been confirmed reproducible and is ready to work on team-framework Owned by Framework team found in release: 3.29 Found to occur in 3.29 found in release: 3.33 Found to occur in 3.33 and removed in triage Presently being triaged by the triage team labels May 19, 2025
@yiiim
Copy link
Member

yiiim commented May 20, 2025

Try this code:

final GlobalKey<NestedScrollViewState> globalKey = GlobalKey();

...

NestedScrollView(
        key: globalKey

...

Future<void> _scrollListViewToBottom() async {
    final scrollController = _scrollController;
    if (_isAnimating) return;
    _isAnimating = true;

    return globalKey.currentState!.innerController
        .animateTo(
          globalKey.currentState!.innerController.position.maxScrollExtent - scrollController.position.maxScrollExtent,
          duration: const Duration(milliseconds: 300),
          curve: Curves.easeInOut,
        )
        .then((_) => _isAnimating = false);
}

@justinmc justinmc added P2 Important issues not at the top of the work list workaround available There is a workaround available to overcome the issue triaged-framework Triaged by Framework team labels May 20, 2025
@faisalansari0367
Copy link
Contributor

Can anyone explain what's the source of this problem I may be able to raise a fix for this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
f: scrolling Viewports, list views, slivers, etc. found in release: 3.29 Found to occur in 3.29 found in release: 3.33 Found to occur in 3.33 framework flutter/packages/flutter repository. See also f: labels. has reproducible steps The issue has been confirmed reproducible and is ready to work on P2 Important issues not at the top of the work list team-framework Owned by Framework team triaged-framework Triaged by Framework team workaround available There is a workaround available to overcome the issue
Projects
None yet
Development

No branches or pull requests

5 participants
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy