The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Failed to build QuranEngine, reference main (e70d80), with Swift 6.1 for Android on 29 May 2025 17:57:21 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.63.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/quran/quran-ios.git
Reference: main
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
From https://github.com/quran/quran-ios
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at e70d80b Use app-image for audio now playing's artwork (#704)
Updating files:  73% (1059/1449)
Updating files:  74% (1073/1449)
Updating files:  75% (1087/1449)
Updating files:  76% (1102/1449)
Updating files:  77% (1116/1449)
Updating files:  78% (1131/1449)
Updating files:  79% (1145/1449)
Updating files:  80% (1160/1449)
Updating files:  81% (1174/1449)
Updating files:  82% (1189/1449)
Updating files:  83% (1203/1449)
Updating files:  84% (1218/1449)
Updating files:  85% (1232/1449)
Updating files:  86% (1247/1449)
Updating files:  87% (1261/1449)
Updating files:  88% (1276/1449)
Updating files:  89% (1290/1449)
Updating files:  90% (1305/1449)
Updating files:  91% (1319/1449)
Updating files:  92% (1334/1449)
Updating files:  93% (1348/1449)
Updating files:  94% (1363/1449)
Updating files:  95% (1377/1449)
Updating files:  96% (1392/1449)
Updating files:  97% (1406/1449)
Updating files:  98% (1421/1449)
Updating files:  99% (1435/1449)
Updating files: 100% (1449/1449)
Updating files: 100% (1449/1449), done.
Cloned https://github.com/quran/quran-ios.git
Revision (git rev-parse @):
e70d80b13ec964210f7e1bc542bd86ee2e85cf43
SUCCESS checkout https://github.com/quran/quran-ios.git at main
========================================
Build
========================================
Selected platform:         android
Swift version:             6.1
Building package at path:  $PWD
https://github.com/quran/quran-ios.git
https://github.com/quran/quran-ios.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
{
  "default_localization" : "en",
  "dependencies" : [
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.4.2",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log"
    },
    {
      "identity" : "swift-collections",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.3",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-collections"
    },
    {
      "identity" : "zip",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.1.1",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/marmelroy/Zip"
    },
    {
      "identity" : "grdb.swift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "6.29.1",
            "upper_bound" : "7.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/groue/GRDB.swift"
    },
    {
      "identity" : "swift-async-algorithms",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.1.0",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-async-algorithms"
    },
    {
      "identity" : "appauth-ios",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.3.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/openid/AppAuth-iOS"
    },
    {
      "identity" : "genericdatasource",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "3.1.3",
            "upper_bound" : "4.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/GenericDataSource/GenericDataSource"
    },
    {
      "identity" : "whatsnewkit",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.3.7",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/SvenTiigi/WhatsNewKit"
    },
    {
      "identity" : "popover",
      "requirement" : {
        "branch" : [
          "master"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/mohamede1945/Popover"
    },
    {
      "identity" : "nvactivityindicatorview",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "5.0.0",
            "upper_bound" : "6.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/ninjaprox/NVActivityIndicatorView"
    },
    {
      "identity" : "swift-snapshot-testing",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.9.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/pointfreeco/swift-snapshot-testing"
    },
    {
      "identity" : "combine-schedulers",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/pointfreeco/combine-schedulers"
    }
  ],
  "manifest_display_name" : "QuranEngine",
  "name" : "QuranEngine",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "15.0"
    }
  ],
  "products" : [
    {
      "name" : "SystemDependencies",
      "targets" : [
        "SystemDependencies"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "SystemDependenciesFake",
      "targets" : [
        "SystemDependenciesFake"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Locking",
      "targets" : [
        "Locking"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Preferences",
      "targets" : [
        "Preferences"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "VLogging",
      "targets" : [
        "VLogging"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Analytics",
      "targets" : [
        "Analytics"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Caching",
      "targets" : [
        "Caching"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Timing",
      "targets" : [
        "Timing"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "WeakSet",
      "targets" : [
        "WeakSet"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Crashing",
      "targets" : [
        "Crashing"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Utilities",
      "targets" : [
        "Utilities"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AppMigrator",
      "targets" : [
        "AppMigrator"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "Localization",
      "targets" : [
        "Localization"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QueuePlayer",
      "targets" : [
        "QueuePlayer"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AsyncUtilitiesForTesting",
      "targets" : [
        "AsyncUtilitiesForTesting"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "OAuthService",
      "targets" : [
        "OAuthService"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "SecurePersistence",
      "targets" : [
        "SecurePersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "OAuthServiceAppAuthImpl",
      "targets" : [
        "OAuthServiceAppAuthImpl"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "OAuthServiceFake",
      "targets" : [
        "OAuthServiceFake"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranKit",
      "targets" : [
        "QuranKit"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranGeometry",
      "targets" : [
        "QuranGeometry"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranAudio",
      "targets" : [
        "QuranAudio"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranText",
      "targets" : [
        "QuranText"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranAnnotations",
      "targets" : [
        "QuranAnnotations"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "ViewConstrainer",
      "targets" : [
        "ViewConstrainer"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "UIx",
      "targets" : [
        "UIx"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "NoorFont",
      "targets" : [
        "NoorFont"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "NoorUI",
      "targets" : [
        "NoorUI"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "PageBookmarkPersistence",
      "targets" : [
        "PageBookmarkPersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "SyncedPageBookmarkPersistence",
      "targets" : [
        "SyncedPageBookmarkPersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "LastPagePersistence",
      "targets" : [
        "LastPagePersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "NotePersistence",
      "targets" : [
        "NotePersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "CoreDataPersistence",
      "targets" : [
        "CoreDataPersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "CoreDataPersistenceTestSupport",
      "targets" : [
        "CoreDataPersistenceTestSupport"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "CoreDataModel",
      "targets" : [
        "CoreDataModel"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "SQLitePersistence",
      "targets" : [
        "SQLitePersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AudioTimingPersistence",
      "targets" : [
        "AudioTimingPersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "WordFramePersistence",
      "targets" : [
        "WordFramePersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "WordTextPersistence",
      "targets" : [
        "WordTextPersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "VerseTextPersistence",
      "targets" : [
        "VerseTextPersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TranslationPersistence",
      "targets" : [
        "TranslationPersistence"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "NetworkSupport",
      "targets" : [
        "NetworkSupport"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "NetworkSupportFake",
      "targets" : [
        "NetworkSupportFake"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "BatchDownloader",
      "targets" : [
        "BatchDownloader"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "BatchDownloaderFake",
      "targets" : [
        "BatchDownloaderFake"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AuthenticationClient",
      "targets" : [
        "AuthenticationClient"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranResources",
      "targets" : [
        "QuranResources"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TestResources",
      "targets" : [
        "TestResources"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "ReciterService",
      "targets" : [
        "ReciterService"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "ReciterServiceFake",
      "targets" : [
        "ReciterServiceFake"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AudioUpdater",
      "targets" : [
        "AudioUpdater"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AudioTimingService",
      "targets" : [
        "AudioTimingService"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranAudioKit",
      "targets" : [
        "QuranAudioKit"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranTextKit",
      "targets" : [
        "QuranTextKit"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TranslationService",
      "targets" : [
        "TranslationService"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TranslationServiceFake",
      "targets" : [
        "TranslationServiceFake"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "WordFrameService",
      "targets" : [
        "WordFrameService"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "WordTextService",
      "targets" : [
        "WordTextService"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "ImageService",
      "targets" : [
        "ImageService"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "ReadingService",
      "targets" : [
        "ReadingService"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AnnotationsService",
      "targets" : [
        "AnnotationsService"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "SettingsService",
      "targets" : [
        "SettingsService"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranProfileService",
      "targets" : [
        "QuranProfileService"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AppDependencies",
      "targets" : [
        "AppDependencies"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "FeaturesSupport",
      "targets" : [
        "FeaturesSupport"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "ReciterListFeature",
      "targets" : [
        "ReciterListFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AyahMenuFeature",
      "targets" : [
        "AyahMenuFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "WhatsNewFeature",
      "targets" : [
        "WhatsNewFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "WordPointerFeature",
      "targets" : [
        "WordPointerFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AppMigrationFeature",
      "targets" : [
        "AppMigrationFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AdvancedAudioOptionsFeature",
      "targets" : [
        "AdvancedAudioOptionsFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AudioBannerFeature",
      "targets" : [
        "AudioBannerFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AudioDownloadsFeature",
      "targets" : [
        "AudioDownloadsFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "MoreMenuFeature",
      "targets" : [
        "MoreMenuFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "NoteEditorFeature",
      "targets" : [
        "NoteEditorFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "BookmarksFeature",
      "targets" : [
        "BookmarksFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranPagesFeature",
      "targets" : [
        "QuranPagesFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranImageFeature",
      "targets" : [
        "QuranImageFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "ReadingSelectorFeature",
      "targets" : [
        "ReadingSelectorFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranTranslationFeature",
      "targets" : [
        "QuranTranslationFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranContentFeature",
      "targets" : [
        "QuranContentFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TranslationsFeature",
      "targets" : [
        "TranslationsFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "NotesFeature",
      "targets" : [
        "NotesFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "TranslationVerseFeature",
      "targets" : [
        "TranslationVerseFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "SearchFeature",
      "targets" : [
        "SearchFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "HomeFeature",
      "targets" : [
        "HomeFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "QuranViewFeature",
      "targets" : [
        "QuranViewFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "SettingsFeature",
      "targets" : [
        "SettingsFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "AppStructureFeature",
      "targets" : [
        "AppStructureFeature"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "WordTextServiceTests",
      "module_type" : "SwiftTarget",
      "name" : "WordTextServiceTests",
      "path" : "Domain/WordTextService/Tests",
      "sources" : [
        "WordTextServiceTests.swift"
      ],
      "target_dependencies" : [
        "WordTextService",
        "TestResources"
      ],
      "type" : "test"
    },
    {
      "c99name" : "WordTextService",
      "module_type" : "SwiftTarget",
      "name" : "WordTextService",
      "path" : "Domain/WordTextService/Sources",
      "product_memberships" : [
        "WordTextService",
        "WordPointerFeature",
        "MoreMenuFeature",
        "TranslationVerseFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "WordTextPreferences.swift",
        "WordTextService.swift"
      ],
      "target_dependencies" : [
        "QuranText",
        "WordTextPersistence",
        "Preferences",
        "Crashing"
      ],
      "type" : "library"
    },
    {
      "c99name" : "WordTextPersistence",
      "module_type" : "SwiftTarget",
      "name" : "WordTextPersistence",
      "path" : "Data/WordTextPersistence",
      "product_memberships" : [
        "WordTextPersistence",
        "WordTextService",
        "WordPointerFeature",
        "MoreMenuFeature",
        "TranslationVerseFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "GRDBWordTextPersistence.swift",
        "WordTextPersistence.swift"
      ],
      "target_dependencies" : [
        "SQLitePersistence",
        "QuranKit"
      ],
      "type" : "library"
    },
    {
      "c99name" : "WordPointerFeature",
      "module_type" : "SwiftTarget",
      "name" : "WordPointerFeature",
      "path" : "Features/WordPointerFeature",
      "product_dependencies" : [
        "Popover_OC"
      ],
      "product_memberships" : [
        "WordPointerFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "WordPointerBuilder.swift",
        "WordPointerViewController.swift",
        "WordPointerViewModel.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "WordTextService",
        "NoorUI"
      ],
      "type" : "library"
    },
    {
      "c99name" : "WordFrameService",
      "module_type" : "SwiftTarget",
      "name" : "WordFrameService",
      "path" : "Domain/WordFrameService",
      "product_memberships" : [
        "QuranAudioKit",
        "QuranTextKit",
        "WordFrameService",
        "ImageService",
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "WordFrame+Extension.swift",
        "WordFrameProcessor.swift"
      ],
      "target_dependencies" : [
        "WordFramePersistence"
      ],
      "type" : "library"
    },
    {
      "c99name" : "WordFramePersistence",
      "module_type" : "SwiftTarget",
      "name" : "WordFramePersistence",
      "path" : "Data/WordFramePersistence",
      "product_memberships" : [
        "WordFramePersistence",
        "QuranAudioKit",
        "QuranTextKit",
        "WordFrameService",
        "ImageService",
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "GRDBWordFramePersistence.swift",
        "WordFramePersistence.swift"
      ],
      "target_dependencies" : [
        "SQLitePersistence",
        "QuranGeometry"
      ],
      "type" : "library"
    },
    {
      "c99name" : "WhatsNewFeature",
      "module_type" : "SwiftTarget",
      "name" : "WhatsNewFeature",
      "path" : "Features/WhatsNewFeature",
      "product_dependencies" : [
        "WhatsNewKit"
      ],
      "product_memberships" : [
        "WhatsNewFeature",
        "AppStructureFeature"
      ],
      "resources" : [
        {
          "path" : "/host/spi-builder-workspace/Features/WhatsNewFeature/whats-new.plist",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "AppWhatsNew.swift",
        "AppWhatsNewController.swift",
        "AppWhatsNewVersionStore.swift"
      ],
      "target_dependencies" : [
        "NoorUI",
        "Analytics"
      ],
      "type" : "library"
    },
    {
      "c99name" : "WeakSet",
      "module_type" : "SwiftTarget",
      "name" : "WeakSet",
      "path" : "Core/WeakSet",
      "product_memberships" : [
        "WeakSet",
        "BatchDownloader",
        "BatchDownloaderFake",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "ReadingService",
        "AnnotationsService",
        "AppDependencies",
        "FeaturesSupport",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "UnsafeWeakSet.swift",
        "WeakSet.swift"
      ],
      "target_dependencies" : [
        "Locking"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ViewConstrainer",
      "module_type" : "SwiftTarget",
      "name" : "ViewConstrainer",
      "path" : "UI/ViewConstrainer",
      "product_memberships" : [
        "ViewConstrainer",
        "UIx",
        "NoorUI",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "GroupConstrainer.swift",
        "SingleConstrainer.swift",
        "UIView+Const.swift",
        "ViewConstrainer.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "VerseTextPersistence",
      "module_type" : "SwiftTarget",
      "name" : "VerseTextPersistence",
      "path" : "Data/VerseTextPersistence",
      "product_memberships" : [
        "VerseTextPersistence",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "DatabaseVersionPersistence.swift",
        "GRDBDatabaseVersionPersistence.swift",
        "GRDBVerseTextPersistence.swift",
        "VerseTextPersistence.swift"
      ],
      "target_dependencies" : [
        "SQLitePersistence",
        "QuranKit"
      ],
      "type" : "library"
    },
    {
      "c99name" : "VLogging",
      "module_type" : "SwiftTarget",
      "name" : "VLogging",
      "path" : "Core/VLogging",
      "product_dependencies" : [
        "Logging"
      ],
      "product_memberships" : [
        "VLogging",
        "Analytics",
        "AppMigrator",
        "OAuthServiceAppAuthImpl",
        "UIx",
        "NoorUI",
        "PageBookmarkPersistence",
        "SyncedPageBookmarkPersistence",
        "LastPagePersistence",
        "NotePersistence",
        "CoreDataPersistence",
        "CoreDataPersistenceTestSupport",
        "CoreDataModel",
        "SQLitePersistence",
        "AudioTimingPersistence",
        "WordFramePersistence",
        "WordTextPersistence",
        "VerseTextPersistence",
        "TranslationPersistence",
        "BatchDownloader",
        "BatchDownloaderFake",
        "AuthenticationClient",
        "ReciterService",
        "ReciterServiceFake",
        "AudioUpdater",
        "AudioTimingService",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "WordFrameService",
        "WordTextService",
        "ImageService",
        "ReadingService",
        "AnnotationsService",
        "SettingsService",
        "QuranProfileService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "Logger.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "UtilitiesTests",
      "module_type" : "SwiftTarget",
      "name" : "UtilitiesTests",
      "path" : "Core/Utilities/Tests",
      "sources" : [
        "AsyncPublisherTests.swift",
        "AsyncThrowingPublisherTests.swift",
        "String+ChunkingTests.swift",
        "String+ExtensionTests.swift"
      ],
      "target_dependencies" : [
        "Utilities",
        "AsyncUtilitiesForTesting"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Utilities",
      "module_type" : "SwiftTarget",
      "name" : "Utilities",
      "path" : "Core/Utilities/Sources",
      "product_memberships" : [
        "SystemDependencies",
        "SystemDependenciesFake",
        "Caching",
        "Utilities",
        "AppMigrator",
        "SecurePersistence",
        "QuranAudio",
        "QuranText",
        "QuranAnnotations",
        "NoorUI",
        "PageBookmarkPersistence",
        "SyncedPageBookmarkPersistence",
        "LastPagePersistence",
        "NotePersistence",
        "CoreDataPersistence",
        "CoreDataPersistenceTestSupport",
        "CoreDataModel",
        "SQLitePersistence",
        "AudioTimingPersistence",
        "WordFramePersistence",
        "WordTextPersistence",
        "VerseTextPersistence",
        "TranslationPersistence",
        "BatchDownloader",
        "BatchDownloaderFake",
        "AuthenticationClient",
        "ReciterService",
        "ReciterServiceFake",
        "AudioUpdater",
        "AudioTimingService",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "WordFrameService",
        "WordTextService",
        "ImageService",
        "ReadingService",
        "AnnotationsService",
        "SettingsService",
        "QuranProfileService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "Extensions/Array+Extension.swift",
        "Extensions/Error+Extension.swift",
        "Extensions/FileManager+Extension.swift",
        "Extensions/Int+Extension.swift",
        "Extensions/Result+Extension.swift",
        "Extensions/Sequence+Extension.swift",
        "Extensions/String+Chunking.swift",
        "Extensions/String+Extension.swift",
        "Extensions/Task+Extension.swift",
        "Extensions/URL+Extension.swift",
        "Features/Address.swift",
        "Features/AsyncInitializer.swift",
        "Features/AsyncPublisher.swift",
        "Features/AsyncThrowingPublisher.swift",
        "Features/Attempt.swift",
        "Features/Locking.swift",
        "Features/MultiPredicateComparer.swift",
        "Features/MulticastContinuation.swift",
        "Features/Pair.swift",
        "Features/RelativeFilePath.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "UIx",
      "module_type" : "SwiftTarget",
      "name" : "UIx",
      "path" : "UI/UIx",
      "product_memberships" : [
        "UIx",
        "NoorUI",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "SwiftUI/CollectionView/CollectionView.swift",
        "SwiftUI/CollectionView/CollectionViewController.swift",
        "SwiftUI/CollectionView/CollectionViewDataSource.swift",
        "SwiftUI/CollectionView/CollectionViewReader.swift",
        "SwiftUI/CollectionView/CollectionViewScroller.swift",
        "SwiftUI/CollectionView/HostingCollectionViewCell.swift",
        "SwiftUI/CollectionView/ListSection.swift",
        "SwiftUI/Epoxy/CollectionViewScrollToItemHelper.swift",
        "SwiftUI/Epoxy/DataIDProviding.swift",
        "SwiftUI/Epoxy/EpoxyIntrinsicContentSizeInvalidator.swift",
        "SwiftUI/Epoxy/EpoxySwiftUIHostingController.swift",
        "SwiftUI/Epoxy/EpoxySwiftUIHostingView.swift",
        "SwiftUI/Epoxy/EpoxySwiftUILayoutMargins.swift",
        "SwiftUI/Epoxy/_Compatibility.swift",
        "SwiftUI/Miscellaneous/AsyncAction.swift",
        "SwiftUI/Miscellaneous/BackgroundHighlightingStyle.swift",
        "SwiftUI/Miscellaneous/CustomButtonStyle.swift",
        "SwiftUI/Miscellaneous/EdgeInsets++.swift",
        "SwiftUI/Miscellaneous/EditController.swift",
        "SwiftUI/Miscellaneous/SwiftUIColor+extension.swift",
        "SwiftUI/Miscellaneous/UIKitNavigator.swift",
        "SwiftUI/Miscellaneous/View+Task.swift",
        "SwiftUI/Miscellaneous/View+URL.swift",
        "SwiftUI/Miscellaneous/View+onSizeChange.swift",
        "SwiftUI/Miscellaneous/WrappingHStack.swift",
        "SwiftUI/Mutate.swift",
        "SwiftUI/SingleChoice/SingleChoiceRow.swift",
        "SwiftUI/SingleChoice/SingleChoiceSelector.swift",
        "SwiftUI/Toast/Toast.swift",
        "SwiftUI/Toast/ToastEnvironmentKey.swift",
        "SwiftUI/Views/AttributedString++.swift",
        "SwiftUI/Views/AutoSizingHostingController.swift",
        "SwiftUI/Views/AutoUpdatingPreferredContentSizeHostingController.swift",
        "SwiftUI/Views/CloseButton.swift",
        "SwiftUI/Views/CocoaNavigationBar.swift",
        "SwiftUI/Views/CocoaNavigationView.swift",
        "SwiftUI/Views/CollectionTracker.swift",
        "SwiftUI/Views/HostingCell.swift",
        "SwiftUI/Views/InvertInDarkModeModifier.swift",
        "SwiftUI/Views/PopoverNavigationController.swift",
        "SwiftUI/Views/PreferredContentSizeMatchesScrollView.swift",
        "SwiftUI/Views/SheetPresentationDetents.swift",
        "SwiftUI/Views/SingleAxisGeometryReader.swift",
        "SwiftUI/Views/StaticViewControllerRepresentable.swift",
        "SwiftUI/Views/TextAlignmentModifier.swift",
        "SwiftUI/Views/TextView.swift",
        "SwiftUI/Views/UIViewControllerReader.swift",
        "SwiftUI/Views/WindowSafeAreaInsetsReaderViewModifier.swift",
        "UIKit/DataSources/DefaultSection.swift",
        "UIKit/DataSources/NSDiffableDataSourceSnapshot++.swift",
        "UIKit/Extensions/CALayer+Extension.swift",
        "UIKit/Extensions/SegmentedControl+Extension.swift",
        "UIKit/Extensions/String+Size.swift",
        "UIKit/Extensions/UIBezierPath+Extension.swift",
        "UIKit/Extensions/UIColor+Extension.swift",
        "UIKit/Extensions/UIImage+Extension.swift",
        "UIKit/Extensions/UITableView+Extension.swift",
        "UIKit/Extensions/UIView+AutoLayout.swift",
        "UIKit/Extensions/UIView+Extension.swift",
        "UIKit/Extensions/UIViewController+Extensions.swift",
        "UIKit/Extensions/UIWIndow+Extensions.swift",
        "UIKit/Miscellaneous/NSDirectionalEdgeInsets++.swift",
        "UIKit/Miscellaneous/PresentationsMonitor.swift",
        "UIKit/Miscellaneous/ScrollViewPageBehavior.swift",
        "UIKit/Popover/PhonePopoverPresenter.swift",
        "UIKit/Popover/PopoverPresenter.swift",
        "UIKit/Views/BackgroundColorButton.swift",
        "UIKit/Views/ByPassTouchesView.swift",
        "UIKit/Views/CircleView.swift",
        "UIKit/Views/CircularView.swift",
        "UIKit/Views/GradientView.swift",
        "UIKit/Views/MagnifyingGlass.swift",
        "UIKit/Views/RoundedShadowView.swift",
        "UIKit/Views/ScrollViewController.swift",
        "UIKit/Views/SearchControllerWithNoCancelButton.swift",
        "UIKit/Views/TwoLineNavigationTitleView.swift"
      ],
      "target_dependencies" : [
        "ViewConstrainer",
        "VLogging"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TranslationsFeature",
      "module_type" : "SwiftTarget",
      "name" : "TranslationsFeature",
      "path" : "Features/TranslationsFeature",
      "product_memberships" : [
        "TranslationsFeature",
        "TranslationVerseFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "TranslationItem.swift",
        "TranslationsListBuilder.swift",
        "TranslationsListView.swift",
        "TranslationsListViewModel.swift",
        "TranslationsViewController.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "TranslationService",
        "NoorUI"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TranslationVerseFeature",
      "module_type" : "SwiftTarget",
      "name" : "TranslationVerseFeature",
      "path" : "Features/TranslationVerseFeature",
      "product_memberships" : [
        "TranslationVerseFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "TranslationVerseBuilder.swift",
        "TranslationVerseView.swift",
        "TranslationVerseViewController.swift",
        "TranslationVerseViewModel.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "MoreMenuFeature",
        "TranslationsFeature",
        "QuranTranslationFeature",
        "QuranTextKit",
        "Caching"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TranslationServiceTests",
      "module_type" : "SwiftTarget",
      "name" : "TranslationServiceTests",
      "path" : "Domain/TranslationService/Tests",
      "sources" : [
        "LocalTranslationsRetrieverTests.swift",
        "SelectedTranslationsPreferencesTests.swift",
        "TranslationDeleterTests.swift",
        "TranslationsDownloaderTests.swift",
        "TranslationsRepositoryTests.swift"
      ],
      "target_dependencies" : [
        "TranslationService",
        "TranslationServiceFake",
        "BatchDownloaderFake"
      ],
      "type" : "test"
    },
    {
      "c99name" : "TranslationServiceFake",
      "module_type" : "SwiftTarget",
      "name" : "TranslationServiceFake",
      "path" : "Domain/TranslationServiceFake",
      "product_memberships" : [
        "TranslationServiceFake"
      ],
      "sources" : [
        "LocalTranslationsFake.swift",
        "TranslationTestData.swift"
      ],
      "target_dependencies" : [
        "TranslationService",
        "SystemDependenciesFake",
        "Utilities",
        "TestResources",
        "AsyncUtilitiesForTesting"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TranslationService",
      "module_type" : "SwiftTarget",
      "name" : "TranslationService",
      "path" : "Domain/TranslationService/Sources",
      "product_dependencies" : [
        "Zip"
      ],
      "product_memberships" : [
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "LocalTranslationsRetriever.swift",
        "SelectedTranslationsPreferences.swift",
        "TranslationDeleter.swift",
        "TranslationNetworkManager.swift",
        "TranslationUnzipper.swift",
        "TranslationsDownloader.swift",
        "TranslationsParser.swift",
        "TranslationsRepository.swift",
        "TranslationsVersionUpdater.swift"
      ],
      "target_dependencies" : [
        "QuranText",
        "TranslationPersistence",
        "VerseTextPersistence",
        "BatchDownloader",
        "Localization",
        "Preferences",
        "SystemDependencies"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TranslationPersistence",
      "module_type" : "SwiftTarget",
      "name" : "TranslationPersistence",
      "path" : "Data/TranslationPersistence",
      "product_memberships" : [
        "TranslationPersistence",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "ActiveTranslationsPersistence.swift",
        "GRDBActiveTranslationsPersistence.swift"
      ],
      "target_dependencies" : [
        "SQLitePersistence",
        "QuranText"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Timing",
      "module_type" : "SwiftTarget",
      "name" : "Timing",
      "path" : "Core/Timing",
      "product_memberships" : [
        "Timing",
        "QueuePlayer",
        "QuranAudioKit",
        "AyahMenuFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "Timer.swift"
      ],
      "target_dependencies" : [
        "Locking"
      ],
      "type" : "library"
    },
    {
      "c99name" : "TestResources",
      "module_type" : "SwiftTarget",
      "name" : "TestResources",
      "path" : "Domain/TestResources",
      "product_memberships" : [
        "TestResources",
        "ReciterServiceFake",
        "TranslationServiceFake"
      ],
      "resources" : [
        {
          "path" : "/host/spi-builder-workspace/Domain/TestResources/test_data",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "TestResources.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "SystemDependenciesFake",
      "module_type" : "SwiftTarget",
      "name" : "SystemDependenciesFake",
      "path" : "Core/SystemDependenciesFake",
      "product_memberships" : [
        "SystemDependenciesFake",
        "CoreDataPersistenceTestSupport",
        "ReciterServiceFake",
        "TranslationServiceFake"
      ],
      "sources" : [
        "AsyncChannelEventObserver.swift",
        "FileSystemFake.swift",
        "KeychainAccessFake.swift",
        "PersistentHistoryTransactionFake.swift",
        "SystemBundleFake.swift",
        "SystemTimeFake.swift",
        "ZipperFake.swift"
      ],
      "target_dependencies" : [
        "SystemDependencies",
        "Utilities"
      ],
      "type" : "library"
    },
    {
      "c99name" : "SystemDependencies",
      "module_type" : "SwiftTarget",
      "name" : "SystemDependencies",
      "path" : "Core/SystemDependencies",
      "product_dependencies" : [
        "Zip",
        "AsyncAlgorithms"
      ],
      "product_memberships" : [
        "SystemDependencies",
        "SystemDependenciesFake",
        "AppMigrator",
        "SecurePersistence",
        "PageBookmarkPersistence",
        "LastPagePersistence",
        "NotePersistence",
        "CoreDataPersistence",
        "CoreDataPersistenceTestSupport",
        "CoreDataModel",
        "BatchDownloader",
        "BatchDownloaderFake",
        "AuthenticationClient",
        "ReciterService",
        "ReciterServiceFake",
        "AudioUpdater",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "ReadingService",
        "AnnotationsService",
        "QuranProfileService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "EventObserver.swift",
        "FileSystem.swift",
        "KeychainAccess.swift",
        "PersistentHistoryTransaction.swift",
        "SystemBundle.swift",
        "SystemTime.swift",
        "Zipper.swift"
      ],
      "target_dependencies" : [
        "Utilities"
      ],
      "type" : "library"
    },
    {
      "c99name" : "SyncedPageBookmarkPersistenceTests",
      "module_type" : "SwiftTarget",
      "name" : "SyncedPageBookmarkPersistenceTests",
      "path" : "Data/SyncedPageBookmarkPersistence/Tests",
      "sources" : [
        "GRDBSyncedPageBookmarkPersistenceTests.swift"
      ],
      "target_dependencies" : [
        "SyncedPageBookmarkPersistence",
        "AsyncUtilitiesForTesting"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SyncedPageBookmarkPersistence",
      "module_type" : "SwiftTarget",
      "name" : "SyncedPageBookmarkPersistence",
      "path" : "Data/SyncedPageBookmarkPersistence/Sources",
      "product_dependencies" : [
        "GRDB"
      ],
      "product_memberships" : [
        "SyncedPageBookmarkPersistence"
      ],
      "sources" : [
        "GRDBSyncedPageBookmarkPersistence.swift",
        "SyncedPageBookmarkPersistence.swift",
        "SyncedPageBookmarkPersistenceModel.swift"
      ],
      "target_dependencies" : [
        "SQLitePersistence"
      ],
      "type" : "library"
    },
    {
      "c99name" : "SettingsService",
      "module_type" : "SwiftTarget",
      "name" : "SettingsService",
      "path" : "Domain/SettingsService",
      "product_memberships" : [
        "SettingsService",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "ReviewPersistence.swift",
        "ReviewService.swift"
      ],
      "target_dependencies" : [
        "Analytics",
        "Preferences",
        "Utilities"
      ],
      "type" : "library"
    },
    {
      "c99name" : "SettingsFeature",
      "module_type" : "SwiftTarget",
      "name" : "SettingsFeature",
      "path" : "Features/SettingsFeature",
      "product_dependencies" : [
        "Zip"
      ],
      "product_memberships" : [
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "ContactUsService.swift",
        "Diagnostics/DiagnosticsBuilder.swift",
        "Diagnostics/DiagnosticsService.swift",
        "Diagnostics/DiagnosticsView.swift",
        "Diagnostics/DiagnosticsViewModel.swift",
        "SettingsBuilder.swift",
        "SettingsRootView.swift",
        "SettingsRootViewModel.swift",
        "UIViewController+Share.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "SettingsService",
        "NoorUI",
        "VLogging",
        "AudioDownloadsFeature",
        "TranslationsFeature",
        "ReadingSelectorFeature",
        "Preferences",
        "QuranProfileService"
      ],
      "type" : "library"
    },
    {
      "c99name" : "SecurePersistence",
      "module_type" : "SwiftTarget",
      "name" : "SecurePersistence",
      "path" : "Core/SecurePersistence",
      "product_memberships" : [
        "SecurePersistence",
        "AuthenticationClient",
        "QuranProfileService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "SecurePersistence.swift"
      ],
      "target_dependencies" : [
        "SystemDependencies"
      ],
      "type" : "library"
    },
    {
      "c99name" : "SearchFeature",
      "module_type" : "SwiftTarget",
      "name" : "SearchFeature",
      "path" : "Features/SearchFeature",
      "product_memberships" : [
        "SearchFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "SearchBuilder.swift",
        "SearchTypes.swift",
        "SearchView.swift",
        "SearchViewController.swift",
        "SearchViewModel.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "QuranTextKit",
        "FeaturesSupport",
        "ReadingService",
        "NoorUI"
      ],
      "type" : "library"
    },
    {
      "c99name" : "SQLitePersistenceTests",
      "module_type" : "SwiftTarget",
      "name" : "SQLitePersistenceTests",
      "path" : "Data/SQLitePersistence/Tests",
      "sources" : [
        "DatabaseConnectionTests.swift"
      ],
      "target_dependencies" : [
        "SQLitePersistence",
        "AsyncUtilitiesForTesting"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SQLitePersistence",
      "module_type" : "SwiftTarget",
      "name" : "SQLitePersistence",
      "path" : "Data/SQLitePersistence/Sources",
      "product_dependencies" : [
        "GRDB"
      ],
      "product_memberships" : [
        "SyncedPageBookmarkPersistence",
        "SQLitePersistence",
        "AudioTimingPersistence",
        "WordFramePersistence",
        "WordTextPersistence",
        "VerseTextPersistence",
        "TranslationPersistence",
        "BatchDownloader",
        "BatchDownloaderFake",
        "AudioUpdater",
        "AudioTimingService",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "WordFrameService",
        "WordTextService",
        "ImageService",
        "ReadingService",
        "AnnotationsService",
        "AppDependencies",
        "FeaturesSupport",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "DatabaseConnection.swift",
        "PersistenceError.swift"
      ],
      "target_dependencies" : [
        "Utilities",
        "VLogging",
        "Localization"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ReciterServiceTests",
      "module_type" : "SwiftTarget",
      "name" : "ReciterServiceTests",
      "path" : "Domain/ReciterService/Tests",
      "sources" : [
        "DownloadedRecitersServiceTests.swift",
        "RecentRecitersServiceTests.swift",
        "ReciterSizeInfoRetrieverTests.swift"
      ],
      "target_dependencies" : [
        "ReciterService",
        "ReciterServiceFake",
        "SystemDependenciesFake"
      ],
      "type" : "test"
    },
    {
      "c99name" : "ReciterServiceFake",
      "module_type" : "SwiftTarget",
      "name" : "ReciterServiceFake",
      "path" : "Domain/ReciterServiceFake",
      "product_memberships" : [
        "ReciterServiceFake"
      ],
      "sources" : [
        "Reciter+Fixture.swift",
        "Reciter+Preparation.swift"
      ],
      "target_dependencies" : [
        "ReciterService",
        "SystemDependenciesFake",
        "TestResources"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ReciterService",
      "module_type" : "SwiftTarget",
      "name" : "ReciterService",
      "path" : "Domain/ReciterService/Sources",
      "product_dependencies" : [
        "Zip",
        "OrderedCollections"
      ],
      "product_memberships" : [
        "ReciterService",
        "ReciterServiceFake",
        "AudioUpdater",
        "QuranAudioKit",
        "ReciterListFeature",
        "AyahMenuFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AudioFileListRetriever.swift",
        "AudioUnzipper.swift",
        "DownloadedRecitersService.swift",
        "RecentRecitersService.swift",
        "Reciter+Localization.swift",
        "ReciterAudioDeleter.swift",
        "ReciterDataRetriever.swift",
        "ReciterPreferences.swift",
        "ReciterSizeInfoRetriever.swift"
      ],
      "target_dependencies" : [
        "Localization",
        "SystemDependencies",
        "Utilities",
        "QuranKit",
        "Preferences",
        "QuranAudio",
        "VLogging",
        "Crashing"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ReciterListFeature",
      "module_type" : "SwiftTarget",
      "name" : "ReciterListFeature",
      "path" : "Features/ReciterListFeature",
      "product_memberships" : [
        "ReciterListFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "ReciterListBuilder.swift",
        "ReciterListView.swift",
        "ReciterListViewController.swift",
        "ReciterListViewModel.swift"
      ],
      "target_dependencies" : [
        "QuranAudio",
        "NoorUI",
        "ReciterService"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ReadingServiceTests",
      "module_type" : "SwiftTarget",
      "name" : "ReadingServiceTests",
      "path" : "Domain/ReadingService/Tests",
      "sources" : [
        "ReadingRemoteResourcesFake.swift",
        "ReadingResourcesServiceTests.swift"
      ],
      "target_dependencies" : [
        "ReadingService",
        "AsyncUtilitiesForTesting",
        "SystemDependenciesFake",
        "BatchDownloaderFake"
      ],
      "type" : "test"
    },
    {
      "c99name" : "ReadingService",
      "module_type" : "SwiftTarget",
      "name" : "ReadingService",
      "path" : "Domain/ReadingService/Sources",
      "product_dependencies" : [
        "CombineSchedulers"
      ],
      "product_memberships" : [
        "ReadingService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "ReadingPreferences.swift",
        "ReadingRemoteResources.swift",
        "ReadingResourceDownloader.swift",
        "ReadingResourcesService.swift"
      ],
      "target_dependencies" : [
        "QuranKit",
        "VLogging",
        "Preferences",
        "BatchDownloader",
        "SystemDependencies"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ReadingSelectorFeature",
      "module_type" : "SwiftTarget",
      "name" : "ReadingSelectorFeature",
      "path" : "Features/ReadingSelectorFeature",
      "product_memberships" : [
        "ReadingSelectorFeature",
        "HomeFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "ReadingSelectorBuilder.swift",
        "ReadingSelectorViewController.swift",
        "ReadingSelectorViewModel.swift",
        "View/Reading+Resources.swift",
        "View/ReadingDetails.swift",
        "View/ReadingImage.swift",
        "View/ReadingImageView.swift",
        "View/ReadingInfo.swift",
        "View/ReadingItem.swift",
        "View/ReadingSelector.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "ReadingService",
        "NoorUI"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranViewFeature",
      "module_type" : "SwiftTarget",
      "name" : "QuranViewFeature",
      "path" : "Features/QuranViewFeature",
      "product_memberships" : [
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "QuranBuilder.swift",
        "QuranInteractor.swift",
        "QuranView.swift",
        "QuranViewController.swift"
      ],
      "target_dependencies" : [
        "AudioBannerFeature",
        "QuranContentFeature",
        "AyahMenuFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "WordPointerFeature",
        "TranslationsFeature",
        "TranslationVerseFeature",
        "FeaturesSupport"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranTranslationFeature",
      "module_type" : "SwiftTarget",
      "name" : "QuranTranslationFeature",
      "path" : "Features/QuranTranslationFeature",
      "product_memberships" : [
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationVerseFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "ContentTranslationBuilder.swift",
        "ContentTranslationView.swift",
        "ContentTranslationViewModel.swift",
        "Translation+UI.swift",
        "TranslationFootnote.swift",
        "TranslationItem+View.swift",
        "TranslationItem.swift",
        "TranslationURL.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "NoorUI",
        "ReadingService",
        "QuranPagesFeature",
        "QuranTextKit"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranTextKitTests",
      "module_type" : "SwiftTarget",
      "name" : "QuranTextKitTests",
      "path" : "Domain/QuranTextKit/Tests",
      "product_dependencies" : [
        "SnapshotTesting"
      ],
      "sources" : [
        "CompositeSearcherTests.swift",
        "Encoding.swift",
        "QuartersDataRetrieverTests.swift",
        "QuranTextDataServiceTests.swift",
        "SearchRecentsServiceTests.swift",
        "ShareableVerseTextRetrieverTests.swift",
        "TestData.swift",
        "TwoPagesUtilsTests.swift"
      ],
      "target_dependencies" : [
        "QuranTextKit",
        "ReadingService",
        "TranslationServiceFake",
        "SystemDependenciesFake",
        "TestResources",
        "QuranResources"
      ],
      "type" : "test"
    },
    {
      "c99name" : "QuranTextKit",
      "module_type" : "SwiftTarget",
      "name" : "QuranTextKit",
      "path" : "Domain/QuranTextKit/Sources",
      "product_memberships" : [
        "QuranAudioKit",
        "QuranTextKit",
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "Localization/QuranKit+Localization.swift",
        "Preferences/FontSizePreferences.swift",
        "Preferences/QuranContentStatePreferences.swift",
        "Search/Recents/SearchRecentsService.swift",
        "Search/Searchers/CompositeSearcher.swift",
        "Search/Searchers/NumberSearcher.swift",
        "Search/Searchers/PersistenceSearcher.swift",
        "Search/Searchers/SearchTerm.swift",
        "Search/Searchers/Searcher.swift",
        "Search/Searchers/SuraSearcher.swift",
        "Search/Searchers/TranslationSearcher.swift",
        "ShareableText/ShareableVerseTextRetriever.swift",
        "TranslationText/QuranTextDataService.swift",
        "TwoPages/TwoPagesUtils.swift"
      ],
      "target_dependencies" : [
        "TranslationService",
        "WordFrameService",
        "QuranKit",
        "VerseTextPersistence"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranText",
      "module_type" : "SwiftTarget",
      "name" : "QuranText",
      "path" : "Model/QuranText",
      "product_memberships" : [
        "QuranText",
        "QuranAnnotations",
        "NoorUI",
        "TranslationPersistence",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "WordTextService",
        "AnnotationsService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "FontSize.swift",
        "QuranMode.swift",
        "SearchResults.swift",
        "TranslatedVerses.swift",
        "Translation+URLs.swift",
        "Translation.swift",
        "WordTextType.swift"
      ],
      "target_dependencies" : [
        "Utilities",
        "QuranKit"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranResources",
      "module_type" : "SwiftTarget",
      "name" : "QuranResources",
      "path" : "Domain/QuranResources",
      "product_memberships" : [
        "QuranResources",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "resources" : [
        {
          "path" : "/host/spi-builder-workspace/Domain/QuranResources/Databases",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "QuranResources.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranProfileService",
      "module_type" : "SwiftTarget",
      "name" : "QuranProfileService",
      "path" : "Domain/QuranProfileService",
      "product_memberships" : [
        "QuranProfileService",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "Sources/QuranProfileService.swift"
      ],
      "target_dependencies" : [
        "AuthenticationClient"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranPagesFeature",
      "module_type" : "SwiftTarget",
      "name" : "QuranPagesFeature",
      "path" : "Features/QuranPagesFeature",
      "product_memberships" : [
        "QuranPagesFeature",
        "QuranImageFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationVerseFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "Page+Localization.swift",
        "PageGeometryActions.swift",
        "QuranPaginationView.swift"
      ],
      "target_dependencies" : [
        "NoorUI",
        "WeakSet",
        "QuranTextKit",
        "Caching"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranKitTests",
      "module_type" : "SwiftTarget",
      "name" : "QuranKitTests",
      "path" : "Model/QuranKit/Tests",
      "sources" : [
        "AyahNumberTests.swift",
        "HizbTests.swift",
        "JuzTests.swift",
        "PageTests.swift",
        "QuarterTests.swift",
        "SuraTests.swift"
      ],
      "target_dependencies" : [
        "QuranKit"
      ],
      "type" : "test"
    },
    {
      "c99name" : "QuranKit",
      "module_type" : "SwiftTarget",
      "name" : "QuranKit",
      "path" : "Model/QuranKit/Sources",
      "product_memberships" : [
        "QuranKit",
        "QuranGeometry",
        "QuranAudio",
        "QuranText",
        "QuranAnnotations",
        "NoorUI",
        "PageBookmarkPersistence",
        "AudioTimingPersistence",
        "WordFramePersistence",
        "WordTextPersistence",
        "VerseTextPersistence",
        "TranslationPersistence",
        "ReciterService",
        "ReciterServiceFake",
        "AudioUpdater",
        "AudioTimingService",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "WordFrameService",
        "WordTextService",
        "ImageService",
        "ReadingService",
        "AnnotationsService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AyahNumber.swift",
        "Hizb.swift",
        "Juz.swift",
        "LastAyahFinder/JuzBasedLastAyahFinder.swift",
        "LastAyahFinder/LastAyahFinder.swift",
        "LastAyahFinder/PageBasedLastAyahFinder.swift",
        "LastAyahFinder/SuraBasedLastAyahFinder.swift",
        "LazyAtomic.swift",
        "Navigatable.swift",
        "Page.swift",
        "Quarter.swift",
        "Quran.swift",
        "QuranGroup.swift",
        "QuranValueStorage.swift",
        "Reading.swift",
        "ReadingInfo/Madani1405QuranReadingInfoRawData.swift",
        "ReadingInfo/Madani1440QuranReadingInfoRawData.swift",
        "ReadingInfo/QuranReadingInfoRawData.swift",
        "Sura.swift",
        "Util.swift",
        "Word.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranImageFeature",
      "module_type" : "SwiftTarget",
      "name" : "QuranImageFeature",
      "path" : "Features/QuranImageFeature",
      "product_memberships" : [
        "QuranImageFeature",
        "QuranContentFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "ContentImageBuilder.swift",
        "ContentImageView.swift",
        "ContentImageViewModel.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "NoorUI",
        "ImageService",
        "ReadingService",
        "QuranPagesFeature",
        "QuranTextKit",
        "Caching"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranGeometry",
      "module_type" : "SwiftTarget",
      "name" : "QuranGeometry",
      "path" : "Model/QuranGeometry",
      "product_memberships" : [
        "QuranGeometry",
        "NoorUI",
        "WordFramePersistence",
        "QuranAudioKit",
        "QuranTextKit",
        "WordFrameService",
        "ImageService",
        "AnnotationsService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AyahNumberLocation.swift",
        "ImagePage.swift",
        "SuraHeaderLocation.swift",
        "WordFrame.swift",
        "WordFrameCollection.swift",
        "WordFrameLine.swift",
        "WordFrameScale.swift"
      ],
      "target_dependencies" : [
        "QuranKit"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranContentFeature",
      "module_type" : "SwiftTarget",
      "name" : "QuranContentFeature",
      "path" : "Features/QuranContentFeature",
      "product_memberships" : [
        "QuranContentFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "ContentBuilder.swift",
        "ContentViewController.swift",
        "ContentViewModel.swift",
        "PagesView.swift",
        "QuranInput.swift"
      ],
      "target_dependencies" : [
        "QuranImageFeature",
        "QuranTranslationFeature"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranAudioKitTests",
      "module_type" : "SwiftTarget",
      "name" : "QuranAudioKitTests",
      "path" : "Domain/QuranAudioKit/Tests",
      "product_dependencies" : [
        "SnapshotTesting"
      ],
      "sources" : [
        "AudioRequest+Extension.swift",
        "GaplessAudioRequestBuilderTests.swift",
        "GappedAudioRequestBuilderTests.swift",
        "QueuePlayerFake.swift",
        "QuranAudioDownloaderTests.swift",
        "QuranAudioPlayerDelegateClosures.swift",
        "QuranAudioPlayerTests.swift"
      ],
      "target_dependencies" : [
        "QuranAudioKit",
        "SystemDependenciesFake",
        "TranslationServiceFake",
        "BatchDownloaderFake",
        "ReciterServiceFake"
      ],
      "type" : "test"
    },
    {
      "c99name" : "QuranAudioKit",
      "module_type" : "SwiftTarget",
      "name" : "QuranAudioKit",
      "path" : "Domain/QuranAudioKit/Sources",
      "product_dependencies" : [
        "Zip"
      ],
      "product_memberships" : [
        "QuranAudioKit",
        "AyahMenuFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AudioPlayer/GaplessAudioRequestBuilder.swift",
        "AudioPlayer/GappedAudioRequestBuilder.swift",
        "AudioPlayer/QuranAudioPlayer.swift",
        "AudioPlayer/QuranAudioRequestBuilder.swift",
        "Dependencies/QueuingPlayer.swift",
        "Downloads/Download+Types.swift",
        "Downloads/QuranAudioDownloader.swift",
        "Preferences/AudioEnd+Localization.swift",
        "Preferences/AudioPreferences.swift",
        "Preferences/PreferencesLastAyahFinder.swift"
      ],
      "target_dependencies" : [
        "BatchDownloader",
        "AudioTimingService",
        "ReciterService",
        "QuranTextKit",
        "QueuePlayer",
        "SystemDependencies"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranAudio",
      "module_type" : "SwiftTarget",
      "name" : "QuranAudio",
      "path" : "Model/QuranAudio",
      "product_memberships" : [
        "QuranAudio",
        "AudioTimingPersistence",
        "ReciterService",
        "ReciterServiceFake",
        "AudioUpdater",
        "AudioTimingService",
        "QuranAudioKit",
        "ReciterListFeature",
        "AyahMenuFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AudioDownloadedSize.swift",
        "AudioEnd.swift",
        "AyahTiming.swift",
        "RangeTiming.swift",
        "Reciter+URLs.swift",
        "Reciter.swift",
        "SuraTiming.swift",
        "Timing.swift"
      ],
      "target_dependencies" : [
        "Utilities",
        "QuranKit"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QuranAnnotations",
      "module_type" : "SwiftTarget",
      "name" : "QuranAnnotations",
      "path" : "Model/QuranAnnotations",
      "product_memberships" : [
        "QuranAnnotations",
        "NoorUI",
        "AnnotationsService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "LastPage.swift",
        "Note.swift",
        "PageBookmark.swift",
        "QuranHighlights.swift"
      ],
      "target_dependencies" : [
        "QuranKit",
        "QuranText"
      ],
      "type" : "library"
    },
    {
      "c99name" : "QueuePlayer",
      "module_type" : "SwiftTarget",
      "name" : "QueuePlayer",
      "path" : "Core/QueuePlayer",
      "product_memberships" : [
        "QueuePlayer",
        "QuranAudioKit",
        "AyahMenuFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AudioInterruptionMonitor.swift",
        "AudioPlayer.swift",
        "AudioPlaying.swift",
        "AudioRequest.swift",
        "NowPlayingUpdater.swift",
        "Player.swift",
        "PlayerItemInfo.swift",
        "QueuePlayer.swift",
        "Runs.swift"
      ],
      "target_dependencies" : [
        "Timing"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Preferences",
      "module_type" : "SwiftTarget",
      "name" : "Preferences",
      "path" : "Core/Preferences",
      "product_memberships" : [
        "Preferences",
        "AppMigrator",
        "NoorUI",
        "ReciterService",
        "ReciterServiceFake",
        "AudioUpdater",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "WordTextService",
        "ReadingService",
        "AnnotationsService",
        "SettingsService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "Preference.swift",
        "PreferenceKey.swift",
        "PreferenceTransformer.swift",
        "Preferences.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "PageBookmarkPersistenceTests",
      "module_type" : "SwiftTarget",
      "name" : "PageBookmarkPersistenceTests",
      "path" : "Data/PageBookmarkPersistence/Tests",
      "sources" : [
        "CoreDataPageBookmarkPersistenceTests.swift"
      ],
      "target_dependencies" : [
        "PageBookmarkPersistence",
        "AsyncUtilitiesForTesting",
        "CoreDataPersistenceTestSupport"
      ],
      "type" : "test"
    },
    {
      "c99name" : "PageBookmarkPersistence",
      "module_type" : "SwiftTarget",
      "name" : "PageBookmarkPersistence",
      "path" : "Data/PageBookmarkPersistence/Sources",
      "product_memberships" : [
        "PageBookmarkPersistence",
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "CoreDataPageBookmarkPersistence.swift",
        "CoreDataPageBookmarkUniquifier.swift",
        "PageBookmarkPersistence.swift",
        "PageBookmarkPersistenceModel.swift"
      ],
      "target_dependencies" : [
        "CoreDataModel",
        "CoreDataPersistence",
        "QuranKit"
      ],
      "type" : "library"
    },
    {
      "c99name" : "OAuthServiceFake",
      "module_type" : "SwiftTarget",
      "name" : "OAuthServiceFake",
      "path" : "Core/OAuthServiceFake",
      "product_memberships" : [
        "OAuthServiceFake"
      ],
      "sources" : [
        "OAuthServiceFake.swift"
      ],
      "target_dependencies" : [
        "OAuthService"
      ],
      "type" : "library"
    },
    {
      "c99name" : "OAuthServiceAppAuthImpl",
      "module_type" : "SwiftTarget",
      "name" : "OAuthServiceAppAuthImpl",
      "path" : "Core/OAuthServiceAppAuthImpl",
      "product_dependencies" : [
        "AppAuth"
      ],
      "product_memberships" : [
        "OAuthServiceAppAuthImpl",
        "AuthenticationClient",
        "QuranProfileService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "OAuthServiceAppAuthImpl.swift"
      ],
      "target_dependencies" : [
        "OAuthService",
        "VLogging"
      ],
      "type" : "library"
    },
    {
      "c99name" : "OAuthService",
      "module_type" : "SwiftTarget",
      "name" : "OAuthService",
      "path" : "Core/OAuthService",
      "product_memberships" : [
        "OAuthService",
        "OAuthServiceAppAuthImpl",
        "OAuthServiceFake",
        "AuthenticationClient",
        "QuranProfileService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "OAuthService.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "NotesFeature",
      "module_type" : "SwiftTarget",
      "name" : "NotesFeature",
      "path" : "Features/NotesFeature",
      "product_memberships" : [
        "NotesFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "NoteItem.swift",
        "NotesBuilder.swift",
        "NotesView.swift",
        "NotesViewController.swift",
        "NotesViewModel.swift"
      ],
      "target_dependencies" : [
        "AnnotationsService",
        "QuranTextKit",
        "AppDependencies",
        "FeaturesSupport",
        "ReadingService",
        "NoorUI"
      ],
      "type" : "library"
    },
    {
      "c99name" : "NotePersistenceTests",
      "module_type" : "SwiftTarget",
      "name" : "NotePersistenceTests",
      "path" : "Data/NotePersistence/Tests",
      "sources" : [
        "CoreDataNotePersistenceTests.swift",
        "CoreDataNoteUniquifierTests.swift"
      ],
      "target_dependencies" : [
        "NotePersistence",
        "AsyncUtilitiesForTesting",
        "CoreDataPersistenceTestSupport"
      ],
      "type" : "test"
    },
    {
      "c99name" : "NotePersistence",
      "module_type" : "SwiftTarget",
      "name" : "NotePersistence",
      "path" : "Data/NotePersistence/Sources",
      "product_memberships" : [
        "NotePersistence",
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "CoreDataNotePersistence.swift",
        "CoreDataNoteUniquifier.swift",
        "NotePersistence.swift",
        "NotePersistenceModel.swift"
      ],
      "target_dependencies" : [
        "CoreDataModel",
        "CoreDataPersistence",
        "SystemDependencies"
      ],
      "type" : "library"
    },
    {
      "c99name" : "NoteEditorFeature",
      "module_type" : "SwiftTarget",
      "name" : "NoteEditorFeature",
      "path" : "Features/NoteEditorFeature",
      "product_memberships" : [
        "NoteEditorFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "NoteEditorBuilder.swift",
        "NoteEditorInteractor.swift",
        "NoteEditorViewController.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "AnnotationsService",
        "NoorUI"
      ],
      "type" : "library"
    },
    {
      "c99name" : "NoorUI",
      "module_type" : "SwiftTarget",
      "name" : "NoorUI",
      "path" : "UI/NoorUI",
      "product_dependencies" : [
        "GenericDataSources"
      ],
      "product_memberships" : [
        "NoorUI",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "BaseControllers/BaseNavigationController.swift",
        "BaseControllers/BaseViewController.swift",
        "BaseControllers/UIViewController+Error.swift",
        "Colors/Color+extension.swift",
        "Components/ActiveRoundedButton.swift",
        "Components/AppStoreDownloadButton.swift",
        "Components/AppearanceModeSelector.swift",
        "Components/ChoicesView.swift",
        "Components/DataUnavailableView.swift",
        "Components/DisclosureIndicator.swift",
        "Components/DropdownButton.swift",
        "Components/ErrorAlertModifier.swift",
        "Components/List/NoorList.swift",
        "Components/List/NoorListItem.swift",
        "Components/List/NoorSection.swift",
        "Components/LoadingView.swift",
        "Components/MultipartText.swift",
        "Components/ThemeStyleSelector.swift",
        "Features/AudioBanner/AudioBannerViewUI.swift",
        "Features/AyahMenu/AyahMenuUI.swift",
        "Features/AyahMenu/AyahMenuView.swift",
        "Features/Content/ContentStatusView.swift",
        "Features/Note/EditableNote.swift",
        "Features/Note/Note.Color++.swift",
        "Features/Note/NoteCircle.swift",
        "Features/Note/NoteEditorView.swift",
        "Features/Note/UIViewController+Note.swift",
        "Features/Quran/AdaptiveImageScrollView.swift",
        "Features/Quran/ImageDecorationsView.swift",
        "Features/Quran/QuranArabicText.swift",
        "Features/Quran/QuranPageFooter.swift",
        "Features/Quran/QuranPageHeader.swift",
        "Features/Quran/QuranPageSeparators.swift",
        "Features/Quran/QuranScrollingViewModifier.swift",
        "Features/Quran/QuranSuraName.swift",
        "Features/Quran/QuranThemedImage.swift",
        "Features/Quran/QuranTranslationReferenceVerse.swift",
        "Features/Quran/QuranTranslationTextChunk.swift",
        "Features/Quran/QuranTranslatorName.swift",
        "Features/Quran/QuranVerseSeparator.swift",
        "Font/FontName++.swift",
        "Font/FontSize++.swift",
        "Formatters/TimeAgo.swift",
        "Images/NoorImage.swift",
        "Images/NoorSystemImage.swift",
        "Miscellaneous/ContentDimension.swift",
        "Miscellaneous/Dimensions.swift",
        "Miscellaneous/ReadableInsetsViewModifier.swift",
        "Miscellaneous/TestResource+Path.swift",
        "Pager/PageViewController.swift",
        "Shapes/Arc.swift",
        "Theme/AppearanceModeViews.swift",
        "Theme/QuranHighlights+Theme.swift",
        "Theme/ThemeService.swift",
        "Theme/ThemeStyleViews.swift"
      ],
      "target_dependencies" : [
        "UIx",
        "Crashing",
        "Localization",
        "Preferences",
        "QuranText",
        "QuranAnnotations",
        "QuranGeometry",
        "NoorFont",
        "VLogging"
      ],
      "type" : "library"
    },
    {
      "c99name" : "NoorFont",
      "module_type" : "SwiftTarget",
      "name" : "NoorFont",
      "path" : "UI/NoorFont",
      "product_memberships" : [
        "NoorFont",
        "NoorUI",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "resources" : [
        {
          "path" : "/host/spi-builder-workspace/UI/NoorFont/Resources/Kitab-Regular.ttf",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/UI/NoorFont/Resources/UthmanicHafs1B Ver13.ttf",
          "rule" : {
            "process" : {
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/UI/NoorFont/Resources/surah_names.ttf",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "FontName.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "NetworkSupportTests",
      "module_type" : "SwiftTarget",
      "name" : "NetworkSupportTests",
      "path" : "Data/NetworkSupport/Tests",
      "sources" : [
        "NetworkManagerTests.swift"
      ],
      "target_dependencies" : [
        "NetworkSupport",
        "Utilities",
        "AsyncUtilitiesForTesting",
        "NetworkSupportFake"
      ],
      "type" : "test"
    },
    {
      "c99name" : "NetworkSupportFake",
      "module_type" : "SwiftTarget",
      "name" : "NetworkSupportFake",
      "path" : "Data/NetworkSupportFake",
      "product_dependencies" : [
        "AsyncAlgorithms"
      ],
      "product_memberships" : [
        "NetworkSupportFake",
        "BatchDownloaderFake"
      ],
      "sources" : [
        "NetworkSessionFake.swift"
      ],
      "target_dependencies" : [
        "NetworkSupport",
        "AsyncUtilitiesForTesting"
      ],
      "type" : "library"
    },
    {
      "c99name" : "NetworkSupport",
      "module_type" : "SwiftTarget",
      "name" : "NetworkSupport",
      "path" : "Data/NetworkSupport/Sources",
      "product_memberships" : [
        "NetworkSupport",
        "NetworkSupportFake",
        "BatchDownloader",
        "BatchDownloaderFake",
        "AudioUpdater",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "ReadingService",
        "AnnotationsService",
        "AppDependencies",
        "FeaturesSupport",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "NetworkError.swift",
        "NetworkManager.swift",
        "NetworkSession.swift"
      ],
      "target_dependencies" : [
        "Crashing",
        "Localization"
      ],
      "type" : "library"
    },
    {
      "c99name" : "MoreMenuFeature",
      "module_type" : "SwiftTarget",
      "name" : "MoreMenuFeature",
      "path" : "Features/MoreMenuFeature",
      "product_memberships" : [
        "MoreMenuFeature",
        "TranslationVerseFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "MoreMenuBuilder.swift",
        "MoreMenuController.swift",
        "MoreMenuModel.swift",
        "MoreMenuViewModel.swift",
        "views/FontSizeStepper.swift",
        "views/MoreMenuDeviceRotation.swift",
        "views/MoreMenuEmpty.swift",
        "views/MoreMenuFontSize.swift",
        "views/MoreMenuModeSelector.swift",
        "views/MoreMenuThemeSettings.swift",
        "views/MoreMenuThemeSettingsViewModel.swift",
        "views/MoreMenuTranslationSelector.swift",
        "views/MoreMenuTwoPages.swift",
        "views/MoreMenuVerticalScrolling.swift",
        "views/MoreMenuView.swift",
        "views/MoreMenuWordPointer.swift",
        "views/MoreMenuWordPointerType.swift"
      ],
      "target_dependencies" : [
        "NoorUI",
        "QuranTextKit",
        "WordTextService"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Locking",
      "module_type" : "SwiftTarget",
      "name" : "Locking",
      "path" : "Core/Locking",
      "product_memberships" : [
        "Locking",
        "Caching",
        "Timing",
        "WeakSet",
        "Crashing",
        "QueuePlayer",
        "NoorUI",
        "PageBookmarkPersistence",
        "LastPagePersistence",
        "NotePersistence",
        "CoreDataPersistence",
        "CoreDataPersistenceTestSupport",
        "CoreDataModel",
        "NetworkSupport",
        "NetworkSupportFake",
        "BatchDownloader",
        "BatchDownloaderFake",
        "ReciterService",
        "ReciterServiceFake",
        "AudioUpdater",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "WordTextService",
        "ReadingService",
        "AnnotationsService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "NSLocking+Extension.swift",
        "Protected.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Localization",
      "module_type" : "SwiftTarget",
      "name" : "Localization",
      "path" : "Core/Localization",
      "product_memberships" : [
        "Localization",
        "NoorUI",
        "SyncedPageBookmarkPersistence",
        "SQLitePersistence",
        "AudioTimingPersistence",
        "WordFramePersistence",
        "WordTextPersistence",
        "VerseTextPersistence",
        "TranslationPersistence",
        "NetworkSupport",
        "NetworkSupportFake",
        "BatchDownloader",
        "BatchDownloaderFake",
        "ReciterService",
        "ReciterServiceFake",
        "AudioUpdater",
        "AudioTimingService",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "WordFrameService",
        "WordTextService",
        "ImageService",
        "ReadingService",
        "AnnotationsService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "resources" : [
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ar.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "ar"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ar.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "ar"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ar.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "ar"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ar.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "ar"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ar.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "ar"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/de.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "de"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/de.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "de"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/de.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "de"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/de.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "de"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/de.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "de"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/en.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "en"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/en.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "en"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/en.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "en"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/en.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "en"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/en.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "en"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/es.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "es"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/es.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "es"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/es.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "es"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/es.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "es"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/es.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "es"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/fa.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "fa"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/fa.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "fa"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/fa.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "fa"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/fa.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "fa"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/fa.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "fa"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/fr.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "fr"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/fr.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "fr"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/fr.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "fr"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/fr.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "fr"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/fr.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "fr"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/kk.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "kk"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/kk.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "kk"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/kk.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "kk"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/kk.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "kk"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/kk.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "kk"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ms.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "ms"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ms.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "ms"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ms.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "ms"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ms.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "ms"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/nl.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "nl"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/nl.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "nl"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/nl.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "nl"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/nl.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "nl"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/nl.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "nl"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/pt.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "pt"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/pt.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "pt"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/pt.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "pt"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/pt.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "pt"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ru.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "ru"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ru.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "ru"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ru.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "ru"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ru.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "ru"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ru.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "ru"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/tr.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "tr"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/tr.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "tr"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/tr.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "tr"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/tr.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "tr"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ug.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "ug"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ug.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "ug"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ug.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "ug"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/ug.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "ug"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/uz.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "uz"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/uz.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "uz"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/uz.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "uz"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/uz.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "uz"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/uz.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "uz"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/vi.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "vi"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/vi.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "vi"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/vi.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "vi"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/vi.lproj/Readers.strings",
          "rule" : {
            "process" : {
              "localization" : "vi"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/vi.lproj/Suras.strings",
          "rule" : {
            "process" : {
              "localization" : "vi"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/zh.lproj/Android.strings",
          "rule" : {
            "process" : {
              "localization" : "zh"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/zh.lproj/Android.stringsdict",
          "rule" : {
            "process" : {
              "localization" : "zh"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Core/Localization/Resources/zh.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "zh"
            }
          }
        }
      ],
      "sources" : [
        "Localizations.swift",
        "NumberFormatter+Extension.swift",
        "resource_bundle.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "LastPagePersistenceTests",
      "module_type" : "SwiftTarget",
      "name" : "LastPagePersistenceTests",
      "path" : "Data/LastPagePersistence/Tests",
      "sources" : [
        "CoreDataLastPagePersistenceTests.swift",
        "CoreDataLastPageUniquifierTests.swift"
      ],
      "target_dependencies" : [
        "LastPagePersistence",
        "AsyncUtilitiesForTesting",
        "CoreDataPersistenceTestSupport"
      ],
      "type" : "test"
    },
    {
      "c99name" : "LastPagePersistence",
      "module_type" : "SwiftTarget",
      "name" : "LastPagePersistence",
      "path" : "Data/LastPagePersistence/Sources",
      "product_memberships" : [
        "LastPagePersistence",
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "CoreDataLastPageOverflowHandler.swift",
        "CoreDataLastPagePersistence.swift",
        "CoreDataLastPageUniquifier.swift",
        "LastPagePersistence.swift",
        "LastPagePersistenceModel.swift"
      ],
      "target_dependencies" : [
        "CoreDataModel",
        "CoreDataPersistence"
      ],
      "type" : "library"
    },
    {
      "c99name" : "ImageServiceTests",
      "module_type" : "SwiftTarget",
      "name" : "ImageServiceTests",
      "path" : "Domain/ImageService/Tests",
      "product_dependencies" : [
        "SnapshotTesting"
      ],
      "sources" : [
        "ImageDataServiceTests.swift",
        "WordFrameTests.swift"
      ],
      "target_dependencies" : [
        "ImageService",
        "ReadingService",
        "TestResources"
      ],
      "type" : "test"
    },
    {
      "c99name" : "ImageService",
      "module_type" : "SwiftTarget",
      "name" : "ImageService",
      "path" : "Domain/ImageService/Sources",
      "product_memberships" : [
        "ImageService",
        "QuranImageFeature",
        "QuranContentFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "ImageDataService.swift"
      ],
      "target_dependencies" : [
        "WordFrameService"
      ],
      "type" : "library"
    },
    {
      "c99name" : "HomeFeature",
      "module_type" : "SwiftTarget",
      "name" : "HomeFeature",
      "path" : "Features/HomeFeature",
      "product_memberships" : [
        "HomeFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "HomeBuilder.swift",
        "HomeView.swift",
        "HomeViewController.swift",
        "HomeViewModel.swift",
        "QuarterItem.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "ReadingSelectorFeature",
        "AnnotationsService",
        "FeaturesSupport"
      ],
      "type" : "library"
    },
    {
      "c99name" : "FeaturesSupport",
      "module_type" : "SwiftTarget",
      "name" : "FeaturesSupport",
      "path" : "Features/FeaturesSupport",
      "product_memberships" : [
        "FeaturesSupport",
        "BookmarksFeature",
        "NotesFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "Analytics.Screen.swift",
        "CommonAnalytics.swift",
        "QuranNavigator.swift"
      ],
      "target_dependencies" : [
        "BatchDownloader",
        "Localization",
        "Analytics",
        "QuranAnnotations",
        "NoorUI"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Crashing",
      "module_type" : "SwiftTarget",
      "name" : "Crashing",
      "path" : "Core/Crashing",
      "product_memberships" : [
        "Crashing",
        "NoorUI",
        "PageBookmarkPersistence",
        "LastPagePersistence",
        "NotePersistence",
        "CoreDataPersistence",
        "CoreDataPersistenceTestSupport",
        "CoreDataModel",
        "NetworkSupport",
        "NetworkSupportFake",
        "BatchDownloader",
        "BatchDownloaderFake",
        "ReciterService",
        "ReciterServiceFake",
        "AudioUpdater",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "WordTextService",
        "ReadingService",
        "AnnotationsService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "Crasher.swift",
        "Global.swift"
      ],
      "target_dependencies" : [
        "Locking"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CoreDataPersistenceTests",
      "module_type" : "SwiftTarget",
      "name" : "CoreDataPersistenceTests",
      "path" : "Data/CoreDataPersistence/Tests",
      "sources" : [
        "CoreDataInsertedEntitiesRetrieverTests.swift",
        "CoreDataPublisherTests.swift",
        "CoreDataStackTests.swift",
        "SimpleCoreDataEntityUniquifierTests.swift"
      ],
      "target_dependencies" : [
        "CoreDataPersistence",
        "AsyncUtilitiesForTesting",
        "CoreDataModel",
        "CoreDataPersistenceTestSupport"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CoreDataPersistenceTestSupport",
      "module_type" : "SwiftTarget",
      "name" : "CoreDataPersistenceTestSupport",
      "path" : "Data/CoreDataPersistenceTestSupport",
      "product_memberships" : [
        "CoreDataPersistenceTestSupport"
      ],
      "sources" : [
        "CoreDataStack+Extensions.swift",
        "LastPage+++.swift",
        "Note+++.swift",
        "PageBookmark+++.swift"
      ],
      "target_dependencies" : [
        "CoreDataPersistence",
        "CoreDataModel",
        "SystemDependenciesFake"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CoreDataPersistence",
      "module_type" : "SwiftTarget",
      "name" : "CoreDataPersistence",
      "path" : "Data/CoreDataPersistence/Sources",
      "product_memberships" : [
        "PageBookmarkPersistence",
        "LastPagePersistence",
        "NotePersistence",
        "CoreDataPersistence",
        "CoreDataPersistenceTestSupport",
        "CoreDataModel",
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "CoreDataPersistentHistoryProcessor.swift",
        "CoreDataPublisher.swift",
        "CoreDataStack.swift",
        "CoreDataTypes.swift",
        "NSManagedObjectContext+Extensions.swift",
        "merging/CoreDataEntityUniquifier.swift",
        "merging/CoreDataInsertedEntitiesRetriever.swift",
        "merging/CoreDataPersistentHistoryTransactionsMerger.swift",
        "merging/SimpleCoreDataEntityUniquifier.swift"
      ],
      "target_dependencies" : [
        "Utilities",
        "VLogging",
        "Crashing",
        "SystemDependencies"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CoreDataModel",
      "module_type" : "SwiftTarget",
      "name" : "CoreDataModel",
      "path" : "Data/CoreDataModel",
      "product_memberships" : [
        "PageBookmarkPersistence",
        "LastPagePersistence",
        "NotePersistence",
        "CoreDataPersistenceTestSupport",
        "CoreDataModel",
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "Resources.swift",
        "Schema.swift"
      ],
      "target_dependencies" : [
        "CoreDataPersistence"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CachingTests",
      "module_type" : "SwiftTarget",
      "name" : "CachingTests",
      "path" : "Core/Caching/Tests",
      "sources" : [
        "CacheTests.swift",
        "OperationCacheableServiceTests.swift",
        "PagesCacheableServiceTests.swift"
      ],
      "target_dependencies" : [
        "Caching",
        "AsyncUtilitiesForTesting"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Caching",
      "module_type" : "SwiftTarget",
      "name" : "Caching",
      "path" : "Core/Caching/Sources",
      "product_memberships" : [
        "Caching",
        "AudioBannerFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationVerseFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "Cache.swift",
        "OperationCacheableService.swift",
        "PagesCacheableService.swift"
      ],
      "target_dependencies" : [
        "Locking",
        "Utilities"
      ],
      "type" : "library"
    },
    {
      "c99name" : "BookmarksFeature",
      "module_type" : "SwiftTarget",
      "name" : "BookmarksFeature",
      "path" : "Features/BookmarksFeature",
      "product_memberships" : [
        "BookmarksFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "BookmarksBuilder.swift",
        "BookmarksView.swift",
        "BookmarksViewController.swift",
        "BookmarksViewModel.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "FeaturesSupport",
        "AnnotationsService",
        "NoorUI",
        "ReadingService"
      ],
      "type" : "library"
    },
    {
      "c99name" : "BatchDownloaderTests",
      "module_type" : "SwiftTarget",
      "name" : "BatchDownloaderTests",
      "path" : "Data/BatchDownloader/Tests",
      "product_dependencies" : [
        "AsyncAlgorithms"
      ],
      "sources" : [
        "DownloadManagerTests.swift",
        "HistoryProgressListener.swift"
      ],
      "target_dependencies" : [
        "BatchDownloader",
        "BatchDownloaderFake"
      ],
      "type" : "test"
    },
    {
      "c99name" : "BatchDownloaderFake",
      "module_type" : "SwiftTarget",
      "name" : "BatchDownloaderFake",
      "path" : "Data/BatchDownloaderFake",
      "product_memberships" : [
        "BatchDownloaderFake"
      ],
      "sources" : [
        "BatchDownloaderFake.swift"
      ],
      "target_dependencies" : [
        "BatchDownloader",
        "NetworkSupportFake"
      ],
      "type" : "library"
    },
    {
      "c99name" : "BatchDownloader",
      "module_type" : "SwiftTarget",
      "name" : "BatchDownloader",
      "path" : "Data/BatchDownloader/Sources",
      "product_memberships" : [
        "BatchDownloader",
        "BatchDownloaderFake",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "ReadingService",
        "AnnotationsService",
        "AppDependencies",
        "FeaturesSupport",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "DownloadProgress.swift",
        "Downloader/DownloadBatchDataController.swift",
        "Downloader/DownloadBatchResponse.swift",
        "Downloader/DownloadManager.swift",
        "Downloader/DownloadSessionDelegate.swift",
        "Downloader/DownloadsObserver.swift",
        "Downloader/DownloadsPersistence.swift",
        "Downloader/GRDBDownloadsPersistence.swift",
        "Entities/Download.swift",
        "Entities/DownloadRequest.swift",
        "Errors/FileSystemError.swift"
      ],
      "target_dependencies" : [
        "SQLitePersistence",
        "Crashing",
        "WeakSet",
        "NetworkSupport",
        "SystemDependencies"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AyahMenuFeature",
      "module_type" : "SwiftTarget",
      "name" : "AyahMenuFeature",
      "path" : "Features/AyahMenuFeature",
      "product_memberships" : [
        "AyahMenuFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AyahMenuBuilder.swift",
        "AyahMenuViewController.swift",
        "AyahMenuViewModel.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "QuranAudioKit",
        "AnnotationsService",
        "NoorUI"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AuthenticationClientTests",
      "module_type" : "SwiftTarget",
      "name" : "AuthenticationClientTests",
      "path" : "Data/AuthenticationClient/Tests",
      "sources" : [
        "AuthenticationClientTests.swift"
      ],
      "target_dependencies" : [
        "AuthenticationClient",
        "AsyncUtilitiesForTesting",
        "SystemDependenciesFake",
        "OAuthServiceFake"
      ],
      "type" : "test"
    },
    {
      "c99name" : "AuthenticationClient",
      "module_type" : "SwiftTarget",
      "name" : "AuthenticationClient",
      "path" : "Data/AuthenticationClient/Sources",
      "product_dependencies" : [
        "AppAuth"
      ],
      "product_memberships" : [
        "AuthenticationClient",
        "QuranProfileService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AuthenticationClient.swift",
        "AuthentincationClientImpl.swift"
      ],
      "target_dependencies" : [
        "OAuthService",
        "VLogging",
        "SystemDependencies",
        "SecurePersistence",
        "OAuthServiceAppAuthImpl"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AudioUpdaterTests",
      "module_type" : "SwiftTarget",
      "name" : "AudioUpdaterTests",
      "path" : "Domain/AudioUpdater/Tests",
      "sources" : [
        "AudioUpdaterTests.swift"
      ],
      "target_dependencies" : [
        "AudioUpdater",
        "NetworkSupportFake",
        "ReciterServiceFake",
        "SystemDependenciesFake"
      ],
      "type" : "test"
    },
    {
      "c99name" : "AudioUpdater",
      "module_type" : "SwiftTarget",
      "name" : "AudioUpdater",
      "path" : "Domain/AudioUpdater/Sources",
      "product_memberships" : [
        "AudioUpdater",
        "AppStructureFeature"
      ],
      "sources" : [
        "AudioUpdate.swift",
        "AudioUpdatePreferences.swift",
        "AudioUpdater.swift",
        "AudioUpdatesNetworkManager.swift",
        "MD5Calculator.swift"
      ],
      "target_dependencies" : [
        "NetworkSupport",
        "Preferences",
        "AudioTimingPersistence",
        "SystemDependencies",
        "VLogging",
        "Crashing",
        "ReciterService"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AudioTimingService",
      "module_type" : "SwiftTarget",
      "name" : "AudioTimingService",
      "path" : "Domain/AudioTimingService",
      "product_memberships" : [
        "AudioTimingService",
        "QuranAudioKit",
        "AyahMenuFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "ReciterTimingRetriever.swift"
      ],
      "target_dependencies" : [
        "AudioTimingPersistence"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AudioTimingPersistence",
      "module_type" : "SwiftTarget",
      "name" : "AudioTimingPersistence",
      "path" : "Data/AudioTimingPersistence",
      "product_memberships" : [
        "AudioTimingPersistence",
        "AudioUpdater",
        "AudioTimingService",
        "QuranAudioKit",
        "AyahMenuFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AyahTimingPersistence.swift",
        "GRDBAyahTimingPersistence.swift"
      ],
      "target_dependencies" : [
        "SQLitePersistence",
        "QuranAudio"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AudioDownloadsFeature",
      "module_type" : "SwiftTarget",
      "name" : "AudioDownloadsFeature",
      "path" : "Features/AudioDownloadsFeature",
      "product_memberships" : [
        "AudioDownloadsFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AudioDownloadItem.swift",
        "AudioDownloadsBuilder.swift",
        "AudioDownloadsView.swift",
        "AudioDownloadsViewController.swift",
        "AudioDownloadsViewModel.swift"
      ],
      "target_dependencies" : [
        "AppDependencies",
        "QuranAudioKit",
        "NoorUI",
        "ReadingService"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AudioBannerFeature",
      "module_type" : "SwiftTarget",
      "name" : "AudioBannerFeature",
      "path" : "Features/AudioBannerFeature",
      "product_memberships" : [
        "AudioBannerFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AudioBannerBuilder.swift",
        "AudioBannerView.swift",
        "AudioBannerViewModel.swift",
        "RemoteCommandsHandler.swift"
      ],
      "target_dependencies" : [
        "Caching",
        "AppDependencies",
        "NoorUI",
        "ReciterListFeature",
        "AdvancedAudioOptionsFeature"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AsyncUtilitiesForTesting",
      "module_type" : "SwiftTarget",
      "name" : "AsyncUtilitiesForTesting",
      "path" : "Core/AsyncUtilitiesForTesting",
      "product_dependencies" : [
        "AsyncAlgorithms"
      ],
      "product_memberships" : [
        "AsyncUtilitiesForTesting",
        "NetworkSupportFake",
        "BatchDownloaderFake",
        "TranslationServiceFake"
      ],
      "sources" : [
        "AsyncAlgorithms++.swift",
        "AsyncAsserts.swift",
        "PublisherCollector.swift",
        "XCTestCase+PromiseKit.swift",
        "XCTestCase+Publisher.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AppStructureFeature",
      "module_type" : "SwiftTarget",
      "name" : "AppStructureFeature",
      "path" : "Features/AppStructureFeature",
      "product_memberships" : [
        "AppStructureFeature"
      ],
      "sources" : [
        "App/AppBuilder.swift",
        "App/AppInteractor.swift",
        "App/AppViewController.swift",
        "Common/TabBuilder.swift",
        "Common/TabInteractor.swift",
        "Common/TabViewController.swift",
        "Launch/LaunchBuilder.swift",
        "Launch/LaunchStartup.swift",
        "Tabs/BookmarksTab.swift",
        "Tabs/HomeTab.swift",
        "Tabs/NotesTab.swift",
        "Tabs/SearchTab.swift",
        "Tabs/SettingsTab.swift"
      ],
      "target_dependencies" : [
        "HomeFeature",
        "BookmarksFeature",
        "NotesFeature",
        "SearchFeature",
        "SettingsFeature",
        "QuranViewFeature",
        "WhatsNewFeature",
        "AudioUpdater",
        "AppMigrationFeature"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AppMigratorTests",
      "module_type" : "SwiftTarget",
      "name" : "AppMigratorTests",
      "path" : "Core/AppMigrator/Tests",
      "sources" : [
        "AppMigratorTests.swift"
      ],
      "target_dependencies" : [
        "AppMigrator",
        "SystemDependenciesFake"
      ],
      "type" : "test"
    },
    {
      "c99name" : "AppMigrator",
      "module_type" : "SwiftTarget",
      "name" : "AppMigrator",
      "path" : "Core/AppMigrator/Sources",
      "product_memberships" : [
        "AppMigrator",
        "AppMigrationFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AppMigrator.swift",
        "AppVersionUpdater.swift"
      ],
      "target_dependencies" : [
        "Preferences",
        "VLogging",
        "SystemDependencies"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AppMigrationFeature",
      "module_type" : "SwiftTarget",
      "name" : "AppMigrationFeature",
      "path" : "Features/AppMigrationFeature",
      "product_dependencies" : [
        "NVActivityIndicatorView"
      ],
      "product_memberships" : [
        "AppMigrationFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "FileSystemMigrator.swift",
        "MigrationViewController.swift",
        "RecitersPathMigrator.swift"
      ],
      "target_dependencies" : [
        "AppMigrator",
        "ReciterService",
        "Utilities",
        "NoorUI"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AppDependencies",
      "module_type" : "SwiftTarget",
      "name" : "AppDependencies",
      "path" : "Features/AppDependencies",
      "product_memberships" : [
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AppDependencies.swift"
      ],
      "target_dependencies" : [
        "NotePersistence",
        "QuranTextKit",
        "Analytics",
        "AnnotationsService",
        "BatchDownloader",
        "LastPagePersistence",
        "ReadingService",
        "QuranResources",
        "AuthenticationClient"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AnnotationsServiceTests",
      "module_type" : "SwiftTarget",
      "name" : "AnnotationsServiceTests",
      "path" : "Domain/AnnotationsService/Tests",
      "sources" : [
        "EmptyTests.swift"
      ],
      "target_dependencies" : [
        "AnnotationsService"
      ],
      "type" : "test"
    },
    {
      "c99name" : "AnnotationsService",
      "module_type" : "SwiftTarget",
      "name" : "AnnotationsService",
      "path" : "Domain/AnnotationsService/Sources",
      "product_memberships" : [
        "AnnotationsService",
        "AppDependencies",
        "AyahMenuFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AnalyticsLibrary+Events.swift",
        "LastPageService.swift",
        "LastPageUpdater.swift",
        "NoteService.swift",
        "PageBookmarkService.swift",
        "QuranHighlightsService.swift"
      ],
      "target_dependencies" : [
        "QuranAnnotations",
        "LastPagePersistence",
        "NotePersistence",
        "PageBookmarkPersistence",
        "Preferences",
        "QuranTextKit",
        "Localization",
        "Analytics"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Analytics",
      "module_type" : "SwiftTarget",
      "name" : "Analytics",
      "path" : "Core/Analytics",
      "product_memberships" : [
        "Analytics",
        "AnnotationsService",
        "SettingsService",
        "AppDependencies",
        "FeaturesSupport",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AnalyticsLibrary.swift"
      ],
      "target_dependencies" : [
        "VLogging"
      ],
      "type" : "library"
    },
    {
      "c99name" : "AllTargetsTests",
      "module_type" : "SwiftTarget",
      "name" : "AllTargetsTests",
      "path" : "AllTargetsTests",
      "sources" : [
        "Empty.swift"
      ],
      "target_dependencies" : [
        "SystemDependencies",
        "SystemDependenciesFake",
        "Locking",
        "Preferences",
        "VLogging",
        "Analytics",
        "Caching",
        "Timing",
        "WeakSet",
        "Crashing",
        "Utilities",
        "AppMigrator",
        "Localization",
        "QueuePlayer",
        "AsyncUtilitiesForTesting",
        "OAuthService",
        "SecurePersistence",
        "OAuthServiceAppAuthImpl",
        "OAuthServiceFake",
        "QuranKit",
        "QuranGeometry",
        "QuranAudio",
        "QuranText",
        "QuranAnnotations",
        "ViewConstrainer",
        "UIx",
        "NoorFont",
        "NoorUI",
        "PageBookmarkPersistence",
        "SyncedPageBookmarkPersistence",
        "LastPagePersistence",
        "NotePersistence",
        "CoreDataPersistence",
        "CoreDataPersistenceTestSupport",
        "CoreDataModel",
        "SQLitePersistence",
        "AudioTimingPersistence",
        "WordFramePersistence",
        "WordTextPersistence",
        "VerseTextPersistence",
        "TranslationPersistence",
        "NetworkSupport",
        "NetworkSupportFake",
        "BatchDownloader",
        "BatchDownloaderFake",
        "AuthenticationClient",
        "QuranResources",
        "TestResources",
        "ReciterService",
        "ReciterServiceFake",
        "AudioUpdater",
        "AudioTimingService",
        "QuranAudioKit",
        "QuranTextKit",
        "TranslationService",
        "TranslationServiceFake",
        "WordFrameService",
        "WordTextService",
        "ImageService",
        "ReadingService",
        "AnnotationsService",
        "SettingsService",
        "QuranProfileService",
        "AppDependencies",
        "FeaturesSupport",
        "ReciterListFeature",
        "AyahMenuFeature",
        "WhatsNewFeature",
        "WordPointerFeature",
        "AppMigrationFeature",
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "AudioDownloadsFeature",
        "MoreMenuFeature",
        "NoteEditorFeature",
        "BookmarksFeature",
        "QuranPagesFeature",
        "QuranImageFeature",
        "ReadingSelectorFeature",
        "QuranTranslationFeature",
        "QuranContentFeature",
        "TranslationsFeature",
        "NotesFeature",
        "TranslationVerseFeature",
        "SearchFeature",
        "HomeFeature",
        "QuranViewFeature",
        "SettingsFeature",
        "AppStructureFeature"
      ],
      "type" : "test"
    },
    {
      "c99name" : "AdvancedAudioOptionsFeature",
      "module_type" : "SwiftTarget",
      "name" : "AdvancedAudioOptionsFeature",
      "path" : "Features/AdvancedAudioOptionsFeature",
      "product_memberships" : [
        "AdvancedAudioOptionsFeature",
        "AudioBannerFeature",
        "QuranViewFeature",
        "AppStructureFeature"
      ],
      "sources" : [
        "AdvancedAudioOptions.swift",
        "AdvancedAudioOptionsBuilder.swift",
        "AdvancedAudioOptionsView.swift",
        "AdvancedAudioOptionsViewModel.swift",
        "AdvancedAudioVersesViewController.swift",
        "Runs++.swift"
      ],
      "target_dependencies" : [
        "ReciterListFeature",
        "QuranAudioKit"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.8"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1
android-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:fe1962677657b2408c217cb5cceb3c09bc1d91486e360cebbc6eee461a5945d8
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.1-latest
Fetching https://github.com/mohamede1945/Popover
[1/336] Fetching popover
Fetched https://github.com/mohamede1945/Popover from cache (0.40s)
Fetching https://github.com/pointfreeco/combine-schedulers
Fetching https://github.com/pointfreeco/swift-snapshot-testing
Fetching https://github.com/ninjaprox/NVActivityIndicatorView
Fetching https://github.com/GenericDataSource/GenericDataSource
Fetching https://github.com/openid/AppAuth-iOS
Fetching https://github.com/SvenTiigi/WhatsNewKit
[1/3656] Fetching whatsnewkit
[2/6066] Fetching whatsnewkit, combine-schedulers
[100/11868] Fetching whatsnewkit, combine-schedulers, nvactivityindicatorview
[2400/13683] Fetching whatsnewkit, combine-schedulers, nvactivityindicatorview, genericdatasource
Fetched https://github.com/pointfreeco/combine-schedulers from cache (1.24s)
[5586/11273] Fetching whatsnewkit, nvactivityindicatorview, genericdatasource
Fetching https://github.com/apple/swift-async-algorithms
[5877/20371] Fetching whatsnewkit, nvactivityindicatorview, genericdatasource, appauth-ios
[10638/33560] Fetching whatsnewkit, nvactivityindicatorview, genericdatasource, appauth-ios, swift-snapshot-testing
[19058/38545] Fetching whatsnewkit, nvactivityindicatorview, genericdatasource, appauth-ios, swift-snapshot-testing, swift-async-algorithms
Fetched https://github.com/apple/swift-async-algorithms from cache (0.64s)
Fetching https://github.com/groue/GRDB.swift
[21427/33560] Fetching whatsnewkit, nvactivityindicatorview, genericdatasource, appauth-ios, swift-snapshot-testing
Fetched https://github.com/GenericDataSource/GenericDataSource from cache (2.07s)
Fetching https://github.com/marmelroy/Zip
[21062/31745] Fetching whatsnewkit, nvactivityindicatorview, appauth-ios, swift-snapshot-testing
Fetched https://github.com/SvenTiigi/WhatsNewKit from cache (2.09s)
Fetching https://github.com/apple/swift-collections
[18066/28089] Fetching nvactivityindicatorview, appauth-ios, swift-snapshot-testing
[21100/139417] Fetching nvactivityindicatorview, appauth-ios, swift-snapshot-testing, grdb.swift
[41450/141406] Fetching nvactivityindicatorview, appauth-ios, swift-snapshot-testing, grdb.swift, zip
Fetched https://github.com/openid/AppAuth-iOS from cache (3.12s)
Fetching https://github.com/apple/swift-log
Fetched https://github.com/ninjaprox/NVActivityIndicatorView from cache (3.14s)
[27028/143097] Fetching swift-snapshot-testing, grdb.swift, zip, swift-collections
Fetched https://github.com/pointfreeco/swift-snapshot-testing from cache (3.21s)
[15418/129908] Fetching grdb.swift, zip, swift-collections
[38332/133744] Fetching grdb.swift, zip, swift-collections, swift-log
Fetched https://github.com/marmelroy/Zip from cache (2.00s)
[51599/131755] Fetching grdb.swift, swift-collections, swift-log
Fetched https://github.com/apple/swift-log from cache (1.13s)
Fetched https://github.com/apple/swift-collections from cache (2.18s)
[32286/111328] Fetching grdb.swift
Fetched https://github.com/groue/GRDB.swift from cache (16.83s)
Computing version for https://github.com/SvenTiigi/WhatsNewKit
Computed https://github.com/SvenTiigi/WhatsNewKit at 1.3.7 (21.29s)
Computing version for https://github.com/GenericDataSource/GenericDataSource
Computed https://github.com/GenericDataSource/GenericDataSource at 3.1.3 (0.89s)
Computing version for https://github.com/apple/swift-async-algorithms
Computed https://github.com/apple/swift-async-algorithms at 0.1.0 (0.97s)
Computing version for https://github.com/marmelroy/Zip
Computed https://github.com/marmelroy/Zip at 2.1.2 (0.64s)
Computing version for https://github.com/groue/GRDB.swift
Computed https://github.com/groue/GRDB.swift at 6.29.3 (0.72s)
Computing version for https://github.com/pointfreeco/combine-schedulers
Computed https://github.com/pointfreeco/combine-schedulers at 1.0.3 (0.66s)
Fetching https://github.com/pointfreeco/xctest-dynamic-overlay
Fetching https://github.com/pointfreeco/swift-concurrency-extras
[1/852] Fetching swift-concurrency-extras
[853/6310] Fetching swift-concurrency-extras, xctest-dynamic-overlay
Fetched https://github.com/pointfreeco/swift-concurrency-extras from cache (1.29s)
Fetched https://github.com/pointfreeco/xctest-dynamic-overlay from cache (1.30s)
Computing version for https://github.com/ninjaprox/NVActivityIndicatorView
Computed https://github.com/ninjaprox/NVActivityIndicatorView at 5.2.0 (1.97s)
Computing version for https://github.com/pointfreeco/swift-concurrency-extras
Computed https://github.com/pointfreeco/swift-concurrency-extras at 1.3.1 (0.74s)
Computing version for https://github.com/apple/swift-collections
Computed https://github.com/apple/swift-collections at 1.2.0 (0.73s)
Computing version for https://github.com/apple/swift-log
Computed https://github.com/apple/swift-log at 1.6.3 (0.54s)
Computing version for https://github.com/pointfreeco/xctest-dynamic-overlay
Computed https://github.com/pointfreeco/xctest-dynamic-overlay at 1.5.2 (0.53s)
Computing version for https://github.com/openid/AppAuth-iOS
Computed https://github.com/openid/AppAuth-iOS at 1.7.6 (0.66s)
Computing version for https://github.com/pointfreeco/swift-snapshot-testing
Computed https://github.com/pointfreeco/swift-snapshot-testing at 1.18.4 (0.65s)
Fetching https://github.com/pointfreeco/swift-custom-dump
Fetching https://github.com/swiftlang/swift-syntax
[1/4581] Fetching swift-custom-dump
Fetched https://github.com/pointfreeco/swift-custom-dump from cache (0.43s)
[1/70452] Fetching swift-syntax
Fetched https://github.com/swiftlang/swift-syntax from cache (5.58s)
Computing version for https://github.com/pointfreeco/swift-custom-dump
Computed https://github.com/pointfreeco/swift-custom-dump at 1.3.3 (6.99s)
Computing version for https://github.com/swiftlang/swift-syntax
Computed https://github.com/swiftlang/swift-syntax at 601.0.1 (0.83s)
Creating working copy for https://github.com/pointfreeco/swift-custom-dump
Working copy of https://github.com/pointfreeco/swift-custom-dump resolved at 1.3.3
Creating working copy for https://github.com/pointfreeco/xctest-dynamic-overlay
Working copy of https://github.com/pointfreeco/xctest-dynamic-overlay resolved at 1.5.2
Creating working copy for https://github.com/apple/swift-collections
Working copy of https://github.com/apple/swift-collections resolved at 1.2.0
Creating working copy for https://github.com/pointfreeco/swift-concurrency-extras
Working copy of https://github.com/pointfreeco/swift-concurrency-extras resolved at 1.3.1
Creating working copy for https://github.com/ninjaprox/NVActivityIndicatorView
Working copy of https://github.com/ninjaprox/NVActivityIndicatorView resolved at 5.2.0
Creating working copy for https://github.com/pointfreeco/combine-schedulers
Working copy of https://github.com/pointfreeco/combine-schedulers resolved at 1.0.3
Creating working copy for https://github.com/apple/swift-async-algorithms
Working copy of https://github.com/apple/swift-async-algorithms resolved at 0.1.0
Creating working copy for https://github.com/mohamede1945/Popover
Working copy of https://github.com/mohamede1945/Popover resolved at master (9641cb3)
Creating working copy for https://github.com/groue/GRDB.swift
Working copy of https://github.com/groue/GRDB.swift resolved at 6.29.3
Creating working copy for https://github.com/GenericDataSource/GenericDataSource
Working copy of https://github.com/GenericDataSource/GenericDataSource resolved at 3.1.3
Creating working copy for https://github.com/marmelroy/Zip
Working copy of https://github.com/marmelroy/Zip resolved at 2.1.2
Creating working copy for https://github.com/SvenTiigi/WhatsNewKit
Working copy of https://github.com/SvenTiigi/WhatsNewKit resolved at 1.3.7
Creating working copy for https://github.com/pointfreeco/swift-snapshot-testing
Working copy of https://github.com/pointfreeco/swift-snapshot-testing resolved at 1.18.4
Creating working copy for https://github.com/apple/swift-log
Working copy of https://github.com/apple/swift-log resolved at 1.6.3
Creating working copy for https://github.com/swiftlang/swift-syntax
Working copy of https://github.com/swiftlang/swift-syntax resolved at 601.0.1
Creating working copy for https://github.com/openid/AppAuth-iOS
Working copy of https://github.com/openid/AppAuth-iOS resolved at 1.7.6
warning: 'spi-builder-workspace': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /host/spi-builder-workspace/UI/UIx/SwiftUI/Epoxy/README.md
warning: 'spi-builder-workspace': found 2 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /host/spi-builder-workspace/UI/NoorUI/Images/Images.xcassets
    /host/spi-builder-workspace/UI/NoorUI/Colors/Colors.xcassets
warning: 'spi-builder-workspace': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /host/spi-builder-workspace/Data/CoreDataModel/Quran.xcdatamodeld
warning: 'spi-builder-workspace': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /host/spi-builder-workspace/Features/AppMigrationFeature/MigrationViewController.xib
Building for debugging...
[0/213] Write sources
[40/213] Copying whats-new.plist
[40/213] Copying Info.plist
[40/213] Copying surah_names.ttf
[40/213] Copying UthmanicHafs1B Ver13.ttf
[40/213] Copying Kitab-Regular.ttf
[40/213] Copying Info.plist
[40/213] Copying Localizable.strings
[40/213] Copying Android.stringsdict
[40/213] Copying Android.strings
[40/213] Copying Suras.strings
[40/213] Copying Readers.strings
[40/213] Copying Localizable.strings
[40/213] Copying Android.stringsdict
[40/213] Copying Android.strings
[40/213] Copying Suras.strings
[40/213] Copying Readers.strings
[40/213] Copying Localizable.strings
[40/213] Copying Android.stringsdict
[61/213] Write sources
[62/213] Copying Readers.strings
[62/213] Write sources
[64/213] Copying Android.stringsdict
[64/213] Copying Localizable.strings
[64/213] Write sources
[64/213] Copying Android.strings
[64/213] Copying Localizable.strings
[64/213] Copying Android.strings
[64/213] Copying Suras.strings
[64/213] Copying Readers.strings
[64/213] Copying Localizable.strings
[64/213] Copying Android.stringsdict
[64/213] Copying Readers.strings
[64/213] Copying Localizable.strings
[64/213] Copying Android.stringsdict
[64/213] Copying Readers.strings
[64/213] Copying Localizable.strings
[64/213] Copying Android.stringsdict
[64/213] Copying Suras.strings
[64/213] Copying Android.strings
[64/213] Copying Info.plist
[64/213] Copying Android.stringsdict
[64/213] Copying Android.strings
[64/213] Copying Suras.strings
[64/213] Copying Readers.strings
[64/213] Copying Localizable.strings
[64/213] Copying Android.stringsdict
[64/213] Copying Android.strings
[64/213] Copying Suras.strings
[64/213] Copying Readers.strings
[64/213] Copying Localizable.strings
[64/213] Copying Android.stringsdict
[64/213] Copying Suras.strings
[64/213] Copying Readers.strings
[64/213] Copying Localizable.strings
[64/213] Copying Android.strings
[64/213] Copying Android.stringsdict
[64/213] Copying Readers.strings
[64/213] Copying Android.strings
[64/213] Copying Suras.strings
[64/213] Copying Android.stringsdict
[64/213] Copying Localizable.strings
[64/213] Copying Android.strings
[64/213] Copying Localizable.strings
[64/213] Copying Suras.strings
[64/213] Copying Localizable.strings
[64/213] Copying Readers.strings
[64/213] Copying Android.stringsdict
[64/213] Copying Android.strings
[64/213] Copying Readers.strings
[64/213] Copying Localizable.strings
[64/213] Copying Suras.strings
[64/213] Copying Android.stringsdict
[64/213] Copying Suras.strings
[64/213] Copying Readers.strings
[64/213] Copying Localizable.strings
[64/213] Copying Android.stringsdict
[64/213] Copying Android.strings
[64/213] Write sources
[64/213] Copying Info.plist
[64/213] Write sources
[64/213] Copying Android.strings
[64/213] Write sources
[64/213] Copying Android.strings
[64/213] Write sources
[148/213] Copying Databases
[149/213] Copying test_data
[149/213] Write sources
[161/213] Copying PrivacyInfo.xcprivacy
[162/213] Copying Info.plist
[163/213] Write sources
[191/213] Copying PrivacyInfo.xcprivacy
In file included from /host/spi-builder-workspace/.build/checkouts/Popover/PopoverView/PopoverView.m:9:
/host/spi-builder-workspace/.build/checkouts/Popover/PopoverView/include/PopoverView.h:9:9: fatal error: 'UIKit/UIKit.h' file not found
    9 | #import <UIKit/UIKit.h>
      |         ^~~~~~~~~~~~~~~
1 error generated.
[192/213] Compiling Popover_OC PopoverView.m
In file included from /host/spi-builder-workspace/.build/checkouts/Popover/PopoverView/PopoverViewCell.m:9:
/host/spi-builder-workspace/.build/checkouts/Popover/PopoverView/PopoverViewCell.h:9:9: fatal error: 'UIKit/UIKit.h' file not found
    9 | #import <UIKit/UIKit.h>
      |         ^~~~~~~~~~~~~~~
1 error generated.
[192/213] Compiling Popover_OC PopoverViewCell.m
[192/213] Compiling AppAuth resource_bundle_accessor.m
In file included from /host/spi-builder-workspace/.build/checkouts/Popover/PopoverView/PopoverAction.m:9:
/host/spi-builder-workspace/.build/checkouts/Popover/PopoverView/include/PopoverAction.h:9:9: fatal error: 'Foundation/Foundation.h' file not found
    9 | #import <Foundation/Foundation.h>
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
[192/213] Compiling Popover_OC PopoverAction.m
[192/213] Compiling Minizip unzip.c
[192/213] Compiling Minizip ioapi.c
[192/213] Compiling Minizip zip.c
[192/213] Write swift-version-24593BA9C3E375BF.txt
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:android-6.1-latest swift build --swift-sdk aarch64-unknown-linux-android24 2>&1
android-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:fe1962677657b2408c217cb5cceb3c09bc1d91486e360cebbc6eee461a5945d8
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:android-6.1-latest
warning: 'spi-builder-workspace': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /host/spi-builder-workspace/UI/UIx/SwiftUI/Epoxy/README.md
warning: 'spi-builder-workspace': found 2 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /host/spi-builder-workspace/UI/NoorUI/Colors/Colors.xcassets
    /host/spi-builder-workspace/UI/NoorUI/Images/Images.xcassets
warning: 'spi-builder-workspace': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /host/spi-builder-workspace/Data/CoreDataModel/Quran.xcdatamodeld
warning: 'spi-builder-workspace': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /host/spi-builder-workspace/Features/AppMigrationFeature/MigrationViewController.xib
[0/1] Planning build
Building for debugging...
[0/21] Write sources
In file included from /host/spi-builder-workspace/.build/checkouts/Popover/PopoverView/PopoverViewCell.m:9:
/host/spi-builder-workspace/.build/checkouts/Popover/PopoverView/PopoverViewCell.h:9:9: fatal error: 'UIKit/UIKit.h' file not found
    9 | #import <UIKit/UIKit.h>
      |         ^~~~~~~~~~~~~~~
1 error generated.
[3/21] Compiling Popover_OC PopoverViewCell.m
[3/21] Compiling Minizip ioapi.c
In file included from /host/spi-builder-workspace/.build/checkouts/Popover/PopoverView/PopoverView.m:9:
/host/spi-builder-workspace/.build/checkouts/Popover/PopoverView/include/PopoverView.h:9:9: fatal error: 'UIKit/UIKit.h' file not found
    9 | #import <UIKit/UIKit.h>
      |         ^~~~~~~~~~~~~~~
1 error generated.
[3/21] Compiling Popover_OC PopoverView.m
[3/21] Compiling Minizip unzip.c
[3/21] Compiling Popover_OC PopoverAction.m
[3/21] Compiling OIDRedirectHTTPHandler.m
[3/21] Compiling Minizip zip.c
[3/21] Write swift-version-24593BA9C3E375BF.txt
BUILD FAILURE 6.1 android