gitextract_u_htjb9w/ ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── README.zh.md ├── annotation/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ └── java/ │ └── zlc/ │ └── season/ │ └── butterfly/ │ ├── annotation/ │ │ ├── Annotations.kt │ │ └── EvadeData.kt │ └── module/ │ └── Module.kt ├── build.gradle.kts ├── buildLogic/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ └── src/ │ └── main/ │ └── kotlin/ │ ├── BuildLogicPlugin.kt │ └── zlc/ │ └── season/ │ └── buildlogic/ │ └── base/ │ ├── AndroidExtensions.kt │ ├── BaseExtensions.kt │ └── MavenExtensions.kt ├── butterfly/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── zlc/ │ │ └── season/ │ │ └── butterfly/ │ │ ├── Butterfly.kt │ │ ├── ButterflyCore.kt │ │ ├── DestinationHandler.kt │ │ ├── action/ │ │ │ └── Action.kt │ │ ├── core/ │ │ │ ├── BackStackEntryManager.kt │ │ │ ├── EvadeManager.kt │ │ │ ├── GroupEntryManager.kt │ │ │ ├── InterceptorManager.kt │ │ │ ├── ModuleManager.kt │ │ │ └── NavigatorManager.kt │ │ ├── entities/ │ │ │ ├── BackStackEntry.kt │ │ │ ├── DestinationData.kt │ │ │ ├── EvadeData.kt │ │ │ └── GroupEntry.kt │ │ ├── interceptor/ │ │ │ ├── DefaultInterceptor.kt │ │ │ └── Interceptor.kt │ │ ├── internal/ │ │ │ ├── ButterflyFragment.kt │ │ │ ├── ButterflyHelper.kt │ │ │ ├── LogUtil.kt │ │ │ └── Util.kt │ │ ├── launcher/ │ │ │ ├── DestinationLauncher.kt │ │ │ └── DestinationLauncherManager.kt │ │ └── navigator/ │ │ ├── ActionNavigator.kt │ │ ├── ActivityNavigator.kt │ │ ├── ErrorNavigator.kt │ │ ├── Navigator.kt │ │ └── fragment/ │ │ ├── DialogFragmentNavigator.kt │ │ ├── FragmentHelper.kt │ │ ├── FragmentNavigator.kt │ │ ├── FragmentParamUpdatable.kt │ │ ├── NavigatorContext.kt │ │ ├── backstack/ │ │ │ ├── BackstackNavigator.kt │ │ │ ├── BackstackNavigatorHelper.kt │ │ │ ├── ClearTopBackstackNavigator.kt │ │ │ ├── SingleTopBackstackNavigator.kt │ │ │ └── StandardBackstackNavigator.kt │ │ └── group/ │ │ └── GroupNavigator.kt │ └── test/ │ └── java/ │ └── zlc/ │ └── season/ │ └── butterfly/ │ └── ExampleUnitTest.kt ├── butterfly-compose/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── zlc/ │ │ └── season/ │ │ └── butterfly/ │ │ └── compose/ │ │ ├── ComposeDestination.kt │ │ ├── ComposeNavigator.kt │ │ ├── ComposeViewModel.kt │ │ ├── DestinationViewModelStoreOwner.kt │ │ ├── Utils.kt │ │ └── navigator/ │ │ ├── ComposeBackStackNavigator.kt │ │ ├── ComposeGroupNavigator.kt │ │ └── ComposeNavigatorHelper.kt │ └── test/ │ └── java/ │ └── zlc/ │ └── season/ │ └── butterfly/ │ └── compose/ │ └── ExampleUnitTest.kt ├── compiler/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── java/ │ │ └── zlc/ │ │ └── season/ │ │ └── butterfly/ │ │ └── compiler/ │ │ ├── Entities.kt │ │ ├── ProcessorProvider.kt │ │ ├── generator/ │ │ │ ├── ComposableGenerator.kt │ │ │ └── ModuleClassGenerator.kt │ │ ├── utils/ │ │ │ ├── KspUtils.kt │ │ │ └── Util.kt │ │ └── visitor/ │ │ ├── DestinationAnnotationVisitor.kt │ │ ├── EvadeAnnotationVisitor.kt │ │ └── EvadeImplAnnotationVisitor.kt │ └── resources/ │ └── META-INF/ │ └── services/ │ └── com.google.devtools.ksp.processing.SymbolProcessorProvider ├── gradle/ │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── jitpack.yml ├── plugin/ │ ├── .gitignore │ ├── build.gradle.kts │ └── src/ │ └── main/ │ ├── java/ │ │ └── zlc/ │ │ └── season/ │ │ └── butterfly/ │ │ └── plugin/ │ │ ├── ButterflyPlugin.kt │ │ ├── ModuleClassVisitorFactory.kt │ │ └── Utils.kt │ └── resources/ │ └── META-INF/ │ └── gradle-plugins/ │ └── io.github.ssseasonnn.butterfly.properties ├── samples/ │ ├── app/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── zlc/ │ │ │ └── season/ │ │ │ └── butterflydemo/ │ │ │ ├── ComposeBottomNavigationActivity.kt │ │ │ ├── ComposeDemoActivity.kt │ │ │ ├── DemoApplication.kt │ │ │ ├── DestinationTestActivity.kt │ │ │ ├── EvadeTestActivity.kt │ │ │ ├── FragmentBottomNavigationActivity.kt │ │ │ ├── FragmentDemoActivity.kt │ │ │ ├── Home.kt │ │ │ └── MainActivity.kt │ │ └── res/ │ │ ├── drawable/ │ │ │ ├── ic_dashboard_black_24dp.xml │ │ │ ├── ic_home_black_24dp.xml │ │ │ ├── ic_launcher_background.xml │ │ │ └── ic_notifications_black_24dp.xml │ │ ├── drawable-v24/ │ │ │ └── ic_launcher_foreground.xml │ │ ├── layout/ │ │ │ ├── activity_compose_bottom_navigation.xml │ │ │ ├── activity_compose_demo.xml │ │ │ ├── activity_destination_test.xml │ │ │ ├── activity_evade_test.xml │ │ │ ├── activity_fragment_bottom_navigation.xml │ │ │ ├── activity_fragment_demo.xml │ │ │ └── activity_main.xml │ │ ├── menu/ │ │ │ └── bottom_nav_menu.xml │ │ ├── mipmap-anydpi-v26/ │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ └── xml/ │ │ └── network_security_config.xml │ └── modules/ │ ├── base/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── zlc/ │ │ └── season/ │ │ └── base/ │ │ ├── BaseActivity.kt │ │ ├── BaseFragment.kt │ │ └── Destinations.kt │ ├── compose/ │ │ ├── compose_dashboard/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle.kts │ │ │ ├── consumer-rules.pro │ │ │ ├── proguard-rules.pro │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── zlc/ │ │ │ └── season/ │ │ │ └── compose/ │ │ │ └── dashboard/ │ │ │ ├── DashboardScreen.kt │ │ │ └── DashboardViewModel.kt │ │ ├── compose_home/ │ │ │ ├── .gitignore │ │ │ ├── build.gradle.kts │ │ │ ├── consumer-rules.pro │ │ │ ├── proguard-rules.pro │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── zlc/ │ │ │ └── season/ │ │ │ └── compose/ │ │ │ └── home/ │ │ │ └── HomeScreen.kt │ │ └── compose_notifications/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── zlc/ │ │ └── season/ │ │ └── compose/ │ │ └── notifications/ │ │ ├── NotificationsScreen.kt │ │ └── NotificationsViewModel.kt │ ├── feature1/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── zlc/ │ │ │ └── season/ │ │ │ └── feature1/ │ │ │ ├── AFragment.kt │ │ │ ├── BFragment.kt │ │ │ ├── CFragment.kt │ │ │ ├── TestAction.kt │ │ │ ├── TestActivity.kt │ │ │ ├── TestBottomSheetDialogFragment.kt │ │ │ ├── TestDialogFragment.kt │ │ │ ├── TestFragment.kt │ │ │ └── TestResultActivity.kt │ │ └── res/ │ │ ├── layout/ │ │ │ ├── activity_test.xml │ │ │ ├── activity_test_result.xml │ │ │ ├── dialog_test.xml │ │ │ ├── fragment_common.xml │ │ │ └── fragment_test.xml │ │ └── values/ │ │ ├── colors.xml │ │ └── strings.xml │ ├── feature2/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ └── java/ │ │ └── zlc/ │ │ └── season/ │ │ └── bar/ │ │ ├── Colors.kt │ │ ├── ComposeScreenA.kt │ │ ├── ComposeScreenB.kt │ │ ├── ComposeScreenC.kt │ │ └── ScreenViewModels.kt │ └── normal/ │ ├── dashboard/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── zlc/ │ │ │ └── season/ │ │ │ └── dashboard/ │ │ │ ├── DashboardFragment.kt │ │ │ └── DashboardViewModel.kt │ │ └── res/ │ │ └── layout/ │ │ └── fragment_dashboard.xml │ ├── home/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ ├── consumer-rules.pro │ │ ├── proguard-rules.pro │ │ └── src/ │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── zlc/ │ │ │ └── season/ │ │ │ └── home/ │ │ │ ├── HomeFragment.kt │ │ │ └── HomeImpl.kt │ │ └── res/ │ │ └── layout/ │ │ └── fragment_home.xml │ └── notifications/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── zlc/ │ │ └── season/ │ │ └── notifications/ │ │ ├── NotificationsFragment.kt │ │ └── NotificationsViewModel.kt │ └── res/ │ └── layout/ │ └── fragment_notifications.xml └── settings.gradle.kts