diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..a24ce47 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: [Lakr233] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..65e2d8d --- /dev/null +++ b/.gitignore @@ -0,0 +1,123 @@ +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 +!default.xcworkspace +*.app +*.app/ +*.dSYM +*.dSYM.zip +*.hmap +*.ipa +*.lcov +*.lock +*.log +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +*.pid +*.pid.lock +*.seed +*.swp +*.tgz +*.tsbuildinfo +*.xccheckout +*.xcscmblueprint +*.xcuserstate +*~.nib +.AppleDB +.AppleDesktop +.AppleDouble +.DS_Store +.DocumentRevisions-V100 +.LSOverride +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +._* +.apdisk +.build +.bundle +.cache +.cache/ +.com.apple.timemachine.donotpresent +.dynamodb/ +.env +.env.test +.eslintcache +.fseventsd +.fusebox/ +.grunt +.idea +.lock-wscript +.next +.node_repl_history +.npm +.nuxt +.nyc_output +.parcel-cache +.pnp.* +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ +.serverless/ +.swiftpm +.tern-port +.vscode-test +.vuepress/dist +.yarn-integrity +.yarn/build-state.yml +.yarn/cache +.yarn/unplugged +/*.gcno +Artifacts +Artifacts/ +CI +CI-Pods.tar +Carthage/Build +Carthage/Build/ +DerivedData +DerivedData/ +Icon +Network Trash Folder +Pipeline/Dockers/Buildtime/ +Podfile.lock +Pods/ +Temporary Items +artifacts +artifacts/ +bower_components +build/ +build/Release +coverage +default.profraw +dist +dockerbuild +dockermnt +fastlane/Preview.html +fastlane/report.xml +fastlane/screenshots/**/*.png +fastlane/test_output +iOSInjectionProject/ +jspm_packages/ +lerna-debug.log* +lib-cov +logs +node_modules/ +npm-debug.log* +pids +profile +project.xcworkspace +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json +temp/ +temps/ +web_modules/ +xcuserdata +xcuserdata/ +yarn-debug.log* +yarn-error.log* + diff --git a/Asspp.xcodeproj/project.pbxproj b/Asspp.xcodeproj/project.pbxproj new file mode 100644 index 0000000..5d6f0a7 --- /dev/null +++ b/Asspp.xcodeproj/project.pbxproj @@ -0,0 +1,636 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 501D5DED2C40C18000F1E177 /* InfoPlist.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 501D5DEC2C40C18000F1E177 /* InfoPlist.xcstrings */; }; + 50D0C8B82C40187800538F49 /* Vapor in Frameworks */ = {isa = PBXBuildFile; productRef = 50D0C8B72C40187800538F49 /* Vapor */; }; + 50D0C8BA2C401AD600538F49 /* Installer+TLS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D0C8B92C401AD600538F49 /* Installer+TLS.swift */; }; + 50D0C8BC2C401B3000538F49 /* Installer+App.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D0C8BB2C401B3000538F49 /* Installer+App.swift */; }; + 50D0C8BE2C401B7B00538F49 /* Installer+Pic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D0C8BD2C401B7B00538F49 /* Installer+Pic.swift */; }; + 50D0C8C02C401DE000538F49 /* Installer+Compute.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D0C8BF2C401DE000538F49 /* Installer+Compute.swift */; }; + 50D0C8C22C40253800538F49 /* Installer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D0C8C12C40253800538F49 /* Installer.swift */; }; + 50D44D082C3F91F700CF6A69 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D072C3F91F700CF6A69 /* MainView.swift */; }; + 50D44D0A2C3F91F800CF6A69 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 50D44D092C3F91F800CF6A69 /* Assets.xcassets */; }; + 50D44D162C3F927D00CF6A69 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D152C3F927D00CF6A69 /* main.swift */; }; + 50D44D192C3F92A100CF6A69 /* ApplePackage in Frameworks */ = {isa = PBXBuildFile; productRef = 50D44D182C3F92A100CF6A69 /* ApplePackage */; }; + 50D44D1C2C3F92BB00CF6A69 /* NIO in Frameworks */ = {isa = PBXBuildFile; productRef = 50D44D1B2C3F92BB00CF6A69 /* NIO */; }; + 50D44D1E2C3F92BB00CF6A69 /* NIOHTTP1 in Frameworks */ = {isa = PBXBuildFile; productRef = 50D44D1D2C3F92BB00CF6A69 /* NIOHTTP1 */; }; + 50D44D202C3F92BB00CF6A69 /* NIOTLS in Frameworks */ = {isa = PBXBuildFile; productRef = 50D44D1F2C3F92BB00CF6A69 /* NIOTLS */; }; + 50D44D232C3F92C500CF6A69 /* NIOSSL in Frameworks */ = {isa = PBXBuildFile; productRef = 50D44D222C3F92C500CF6A69 /* NIOSSL */; }; + 50D44D262C3F946100CF6A69 /* AccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D252C3F946100CF6A69 /* AccountView.swift */; }; + 50D44D282C3F946600CF6A69 /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D272C3F946600CF6A69 /* SearchView.swift */; }; + 50D44D2A2C3F946C00CF6A69 /* DownloadView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D292C3F946C00CF6A69 /* DownloadView.swift */; }; + 50D44D2C2C3F947600CF6A69 /* SettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D2B2C3F947600CF6A69 /* SettingView.swift */; }; + 50D44D2E2C3F954400CF6A69 /* WelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D2D2C3F954400CF6A69 /* WelcomeView.swift */; }; + 50D44D302C3F96B900CF6A69 /* PublishedPersist.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D2F2C3F96B900CF6A69 /* PublishedPersist.swift */; }; + 50D44D322C3F9F3500CF6A69 /* AppStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D312C3F9F3500CF6A69 /* AppStore.swift */; }; + 50D44D3A2C3F9F6A00CF6A69 /* AddAccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D392C3F9F6A00CF6A69 /* AddAccountView.swift */; }; + 50D44D3C2C3FA34400CF6A69 /* AccountDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D3B2C3FA34400CF6A69 /* AccountDetailView.swift */; }; + 50D44D3F2C3FA59500CF6A69 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 50D44D3E2C3FA59500CF6A69 /* Kingfisher */; }; + 50D44D412C3FA6CC00CF6A69 /* ArchivePreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D402C3FA6CC00CF6A69 /* ArchivePreviewView.swift */; }; + 50D44D432C3FA6DC00CF6A69 /* StoreView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D422C3FA6DC00CF6A69 /* StoreView.swift */; }; + 50D44D452C3FAC4900CF6A69 /* DownloadManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D442C3FAC4900CF6A69 /* DownloadManager.swift */; }; + 50D44D482C3FAE8000CF6A69 /* Tiercel in Frameworks */ = {isa = PBXBuildFile; productRef = 50D44D472C3FAE8000CF6A69 /* Tiercel */; }; + 50D44D4A2C3FB97A00CF6A69 /* PackageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D492C3FB97A00CF6A69 /* PackageView.swift */; }; + 50D44D4E2C3FC0DD00CF6A69 /* InstallerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D44D4D2C3FC0DD00CF6A69 /* InstallerView.swift */; }; + 50D44D512C3FC85F00CF6A69 /* AnyCodable in Frameworks */ = {isa = PBXBuildFile; productRef = 50D44D502C3FC85F00CF6A69 /* AnyCodable */; }; + 50E28B812C40BA52007891E0 /* ColorfulX in Frameworks */ = {isa = PBXBuildFile; productRef = 50E28B802C40BA52007891E0 /* ColorfulX */; }; + 50E28B832C40BCB3007891E0 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = 50E28B822C40BCB3007891E0 /* Localizable.xcstrings */; }; + 50E6C5682C40CB7500460DB5 /* Certificates in Resources */ = {isa = PBXBuildFile; fileRef = 50E6C5672C40CB7500460DB5 /* Certificates */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 501D5DEC2C40C18000F1E177 /* InfoPlist.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = InfoPlist.xcstrings; sourceTree = ""; }; + 50D0C8B92C401AD600538F49 /* Installer+TLS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Installer+TLS.swift"; sourceTree = ""; }; + 50D0C8BB2C401B3000538F49 /* Installer+App.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Installer+App.swift"; sourceTree = ""; }; + 50D0C8BD2C401B7B00538F49 /* Installer+Pic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Installer+Pic.swift"; sourceTree = ""; }; + 50D0C8BF2C401DE000538F49 /* Installer+Compute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Installer+Compute.swift"; sourceTree = ""; }; + 50D0C8C12C40253800538F49 /* Installer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Installer.swift; sourceTree = ""; }; + 50D44D022C3F91F700CF6A69 /* Asspp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Asspp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 50D44D072C3F91F700CF6A69 /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = ""; }; + 50D44D092C3F91F800CF6A69 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 50D44D152C3F927D00CF6A69 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; + 50D44D252C3F946100CF6A69 /* AccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountView.swift; sourceTree = ""; }; + 50D44D272C3F946600CF6A69 /* SearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = ""; }; + 50D44D292C3F946C00CF6A69 /* DownloadView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadView.swift; sourceTree = ""; }; + 50D44D2B2C3F947600CF6A69 /* SettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingView.swift; sourceTree = ""; }; + 50D44D2D2C3F954400CF6A69 /* WelcomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeView.swift; sourceTree = ""; }; + 50D44D2F2C3F96B900CF6A69 /* PublishedPersist.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PublishedPersist.swift; sourceTree = ""; }; + 50D44D312C3F9F3500CF6A69 /* AppStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppStore.swift; sourceTree = ""; }; + 50D44D392C3F9F6A00CF6A69 /* AddAccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddAccountView.swift; sourceTree = ""; }; + 50D44D3B2C3FA34400CF6A69 /* AccountDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountDetailView.swift; sourceTree = ""; }; + 50D44D402C3FA6CC00CF6A69 /* ArchivePreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArchivePreviewView.swift; sourceTree = ""; }; + 50D44D422C3FA6DC00CF6A69 /* StoreView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreView.swift; sourceTree = ""; }; + 50D44D442C3FAC4900CF6A69 /* DownloadManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadManager.swift; sourceTree = ""; }; + 50D44D492C3FB97A00CF6A69 /* PackageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PackageView.swift; sourceTree = ""; }; + 50D44D4D2C3FC0DD00CF6A69 /* InstallerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstallerView.swift; sourceTree = ""; }; + 50E28B822C40BCB3007891E0 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; + 50E6C5672C40CB7500460DB5 /* Certificates */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Certificates; path = Resources/Certificates; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 50D44CFF2C3F91F700CF6A69 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 50D44D3F2C3FA59500CF6A69 /* Kingfisher in Frameworks */, + 50E28B812C40BA52007891E0 /* ColorfulX in Frameworks */, + 50D44D482C3FAE8000CF6A69 /* Tiercel in Frameworks */, + 50D44D232C3F92C500CF6A69 /* NIOSSL in Frameworks */, + 50D0C8B82C40187800538F49 /* Vapor in Frameworks */, + 50D44D1E2C3F92BB00CF6A69 /* NIOHTTP1 in Frameworks */, + 50D44D512C3FC85F00CF6A69 /* AnyCodable in Frameworks */, + 50D44D192C3F92A100CF6A69 /* ApplePackage in Frameworks */, + 50D44D1C2C3F92BB00CF6A69 /* NIO in Frameworks */, + 50D44D202C3F92BB00CF6A69 /* NIOTLS in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 50D44CF92C3F91F700CF6A69 = { + isa = PBXGroup; + children = ( + 50D44D042C3F91F700CF6A69 /* Asspp */, + 50D44D032C3F91F700CF6A69 /* Products */, + 50D44D172C3F92A100CF6A69 /* Frameworks */, + ); + sourceTree = ""; + }; + 50D44D032C3F91F700CF6A69 /* Products */ = { + isa = PBXGroup; + children = ( + 50D44D022C3F91F700CF6A69 /* Asspp.app */, + ); + name = Products; + sourceTree = ""; + }; + 50D44D042C3F91F700CF6A69 /* Asspp */ = { + isa = PBXGroup; + children = ( + 50D44D152C3F927D00CF6A69 /* main.swift */, + 50D44D092C3F91F800CF6A69 /* Assets.xcassets */, + 50E28B822C40BCB3007891E0 /* Localizable.xcstrings */, + 501D5DEC2C40C18000F1E177 /* InfoPlist.xcstrings */, + 50D44D342C3F9F4800CF6A69 /* Welcome */, + 50D44D332C3F9F4200CF6A69 /* Account */, + 50D44D352C3F9F5300CF6A69 /* Search */, + 50D44D362C3F9F5600CF6A69 /* Download */, + 50D44D372C3F9F5900CF6A69 /* Setting */, + 50D44D382C3F9F5D00CF6A69 /* Extension */, + 50E6C5672C40CB7500460DB5 /* Certificates */, + ); + path = Asspp; + sourceTree = ""; + }; + 50D44D172C3F92A100CF6A69 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + 50D44D332C3F9F4200CF6A69 /* Account */ = { + isa = PBXGroup; + children = ( + 50D44D252C3F946100CF6A69 /* AccountView.swift */, + 50D44D3B2C3FA34400CF6A69 /* AccountDetailView.swift */, + 50D44D392C3F9F6A00CF6A69 /* AddAccountView.swift */, + 50D44D312C3F9F3500CF6A69 /* AppStore.swift */, + ); + path = Account; + sourceTree = ""; + }; + 50D44D342C3F9F4800CF6A69 /* Welcome */ = { + isa = PBXGroup; + children = ( + 50D44D072C3F91F700CF6A69 /* MainView.swift */, + 50D44D2D2C3F954400CF6A69 /* WelcomeView.swift */, + ); + path = Welcome; + sourceTree = ""; + }; + 50D44D352C3F9F5300CF6A69 /* Search */ = { + isa = PBXGroup; + children = ( + 50D44D272C3F946600CF6A69 /* SearchView.swift */, + 50D44D422C3FA6DC00CF6A69 /* StoreView.swift */, + 50D44D402C3FA6CC00CF6A69 /* ArchivePreviewView.swift */, + ); + path = Search; + sourceTree = ""; + }; + 50D44D362C3F9F5600CF6A69 /* Download */ = { + isa = PBXGroup; + children = ( + 50D44D292C3F946C00CF6A69 /* DownloadView.swift */, + 50D44D442C3FAC4900CF6A69 /* DownloadManager.swift */, + 50D44D492C3FB97A00CF6A69 /* PackageView.swift */, + 50D0C8C12C40253800538F49 /* Installer.swift */, + 50D0C8BF2C401DE000538F49 /* Installer+Compute.swift */, + 50D0C8BD2C401B7B00538F49 /* Installer+Pic.swift */, + 50D0C8BB2C401B3000538F49 /* Installer+App.swift */, + 50D0C8B92C401AD600538F49 /* Installer+TLS.swift */, + 50D44D4D2C3FC0DD00CF6A69 /* InstallerView.swift */, + ); + path = Download; + sourceTree = ""; + }; + 50D44D372C3F9F5900CF6A69 /* Setting */ = { + isa = PBXGroup; + children = ( + 50D44D2B2C3F947600CF6A69 /* SettingView.swift */, + ); + path = Setting; + sourceTree = ""; + }; + 50D44D382C3F9F5D00CF6A69 /* Extension */ = { + isa = PBXGroup; + children = ( + 50D44D2F2C3F96B900CF6A69 /* PublishedPersist.swift */, + ); + path = Extension; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 50D44D012C3F91F700CF6A69 /* Asspp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 50D44D102C3F91F800CF6A69 /* Build configuration list for PBXNativeTarget "Asspp" */; + buildPhases = ( + 50D44CFE2C3F91F700CF6A69 /* Sources */, + 50D44CFF2C3F91F700CF6A69 /* Frameworks */, + 50D44D002C3F91F700CF6A69 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Asspp; + packageProductDependencies = ( + 50D44D182C3F92A100CF6A69 /* ApplePackage */, + 50D44D1B2C3F92BB00CF6A69 /* NIO */, + 50D44D1D2C3F92BB00CF6A69 /* NIOHTTP1 */, + 50D44D1F2C3F92BB00CF6A69 /* NIOTLS */, + 50D44D222C3F92C500CF6A69 /* NIOSSL */, + 50D44D3E2C3FA59500CF6A69 /* Kingfisher */, + 50D44D472C3FAE8000CF6A69 /* Tiercel */, + 50D44D502C3FC85F00CF6A69 /* AnyCodable */, + 50D0C8B72C40187800538F49 /* Vapor */, + 50E28B802C40BA52007891E0 /* ColorfulX */, + ); + productName = Asspp; + productReference = 50D44D022C3F91F700CF6A69 /* Asspp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 50D44CFA2C3F91F700CF6A69 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1540; + LastUpgradeCheck = 1540; + TargetAttributes = { + 50D44D012C3F91F700CF6A69 = { + CreatedOnToolsVersion = 15.4; + }; + }; + }; + buildConfigurationList = 50D44CFD2C3F91F700CF6A69 /* Build configuration list for PBXProject "Asspp" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + "zh-Hans", + ); + mainGroup = 50D44CF92C3F91F700CF6A69; + packageReferences = ( + 50D44D1A2C3F92BB00CF6A69 /* XCRemoteSwiftPackageReference "swift-nio" */, + 50D44D212C3F92C500CF6A69 /* XCRemoteSwiftPackageReference "swift-nio-ssl" */, + 50D44D3D2C3FA59500CF6A69 /* XCRemoteSwiftPackageReference "Kingfisher" */, + 50D44D462C3FAE8000CF6A69 /* XCRemoteSwiftPackageReference "Tiercel" */, + 50D44D4F2C3FC85F00CF6A69 /* XCRemoteSwiftPackageReference "AnyCodable" */, + 50D0C8B62C40187800538F49 /* XCRemoteSwiftPackageReference "vapor" */, + 50E28B7F2C40BA52007891E0 /* XCRemoteSwiftPackageReference "ColorfulX" */, + ); + productRefGroup = 50D44D032C3F91F700CF6A69 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 50D44D012C3F91F700CF6A69 /* Asspp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 50D44D002C3F91F700CF6A69 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 50D44D0A2C3F91F800CF6A69 /* Assets.xcassets in Resources */, + 501D5DED2C40C18000F1E177 /* InfoPlist.xcstrings in Resources */, + 50E6C5682C40CB7500460DB5 /* Certificates in Resources */, + 50E28B832C40BCB3007891E0 /* Localizable.xcstrings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 50D44CFE2C3F91F700CF6A69 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 50D44D282C3F946600CF6A69 /* SearchView.swift in Sources */, + 50D44D262C3F946100CF6A69 /* AccountView.swift in Sources */, + 50D0C8BA2C401AD600538F49 /* Installer+TLS.swift in Sources */, + 50D44D3A2C3F9F6A00CF6A69 /* AddAccountView.swift in Sources */, + 50D44D082C3F91F700CF6A69 /* MainView.swift in Sources */, + 50D44D432C3FA6DC00CF6A69 /* StoreView.swift in Sources */, + 50D44D4A2C3FB97A00CF6A69 /* PackageView.swift in Sources */, + 50D44D412C3FA6CC00CF6A69 /* ArchivePreviewView.swift in Sources */, + 50D44D302C3F96B900CF6A69 /* PublishedPersist.swift in Sources */, + 50D44D4E2C3FC0DD00CF6A69 /* InstallerView.swift in Sources */, + 50D0C8BE2C401B7B00538F49 /* Installer+Pic.swift in Sources */, + 50D44D3C2C3FA34400CF6A69 /* AccountDetailView.swift in Sources */, + 50D44D2C2C3F947600CF6A69 /* SettingView.swift in Sources */, + 50D44D162C3F927D00CF6A69 /* main.swift in Sources */, + 50D0C8C02C401DE000538F49 /* Installer+Compute.swift in Sources */, + 50D0C8C22C40253800538F49 /* Installer.swift in Sources */, + 50D44D322C3F9F3500CF6A69 /* AppStore.swift in Sources */, + 50D0C8BC2C401B3000538F49 /* Installer+App.swift in Sources */, + 50D44D2A2C3F946C00CF6A69 /* DownloadView.swift in Sources */, + 50D44D2E2C3F954400CF6A69 /* WelcomeView.swift in Sources */, + 50D44D452C3FAC4900CF6A69 /* DownloadManager.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 50D44D0E2C3F91F800CF6A69 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 50D44D0F2C3F91F800CF6A69 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 50D44D112C3F91F800CF6A69 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = wiki.qaq.Asspp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 50D44D122C3F91F800CF6A69 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = ""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = wiki.qaq.Asspp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 50D44CFD2C3F91F700CF6A69 /* Build configuration list for PBXProject "Asspp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 50D44D0E2C3F91F800CF6A69 /* Debug */, + 50D44D0F2C3F91F800CF6A69 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 50D44D102C3F91F800CF6A69 /* Build configuration list for PBXNativeTarget "Asspp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 50D44D112C3F91F800CF6A69 /* Debug */, + 50D44D122C3F91F800CF6A69 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 50D0C8B62C40187800538F49 /* XCRemoteSwiftPackageReference "vapor" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/vapor/vapor"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 4.102.1; + }; + }; + 50D44D1A2C3F92BB00CF6A69 /* XCRemoteSwiftPackageReference "swift-nio" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/apple/swift-nio.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.68.0; + }; + }; + 50D44D212C3F92C500CF6A69 /* XCRemoteSwiftPackageReference "swift-nio-ssl" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/apple/swift-nio-ssl.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.27.0; + }; + }; + 50D44D3D2C3FA59500CF6A69 /* XCRemoteSwiftPackageReference "Kingfisher" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/onevcat/Kingfisher"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 7.12.0; + }; + }; + 50D44D462C3FAE8000CF6A69 /* XCRemoteSwiftPackageReference "Tiercel" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Danie1s/Tiercel"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.2.5; + }; + }; + 50D44D4F2C3FC85F00CF6A69 /* XCRemoteSwiftPackageReference "AnyCodable" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Flight-School/AnyCodable"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 0.6.7; + }; + }; + 50E28B7F2C40BA52007891E0 /* XCRemoteSwiftPackageReference "ColorfulX" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Lakr233/ColorfulX"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 4.1.4; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 50D0C8B72C40187800538F49 /* Vapor */ = { + isa = XCSwiftPackageProductDependency; + package = 50D0C8B62C40187800538F49 /* XCRemoteSwiftPackageReference "vapor" */; + productName = Vapor; + }; + 50D44D182C3F92A100CF6A69 /* ApplePackage */ = { + isa = XCSwiftPackageProductDependency; + productName = ApplePackage; + }; + 50D44D1B2C3F92BB00CF6A69 /* NIO */ = { + isa = XCSwiftPackageProductDependency; + package = 50D44D1A2C3F92BB00CF6A69 /* XCRemoteSwiftPackageReference "swift-nio" */; + productName = NIO; + }; + 50D44D1D2C3F92BB00CF6A69 /* NIOHTTP1 */ = { + isa = XCSwiftPackageProductDependency; + package = 50D44D1A2C3F92BB00CF6A69 /* XCRemoteSwiftPackageReference "swift-nio" */; + productName = NIOHTTP1; + }; + 50D44D1F2C3F92BB00CF6A69 /* NIOTLS */ = { + isa = XCSwiftPackageProductDependency; + package = 50D44D1A2C3F92BB00CF6A69 /* XCRemoteSwiftPackageReference "swift-nio" */; + productName = NIOTLS; + }; + 50D44D222C3F92C500CF6A69 /* NIOSSL */ = { + isa = XCSwiftPackageProductDependency; + package = 50D44D212C3F92C500CF6A69 /* XCRemoteSwiftPackageReference "swift-nio-ssl" */; + productName = NIOSSL; + }; + 50D44D3E2C3FA59500CF6A69 /* Kingfisher */ = { + isa = XCSwiftPackageProductDependency; + package = 50D44D3D2C3FA59500CF6A69 /* XCRemoteSwiftPackageReference "Kingfisher" */; + productName = Kingfisher; + }; + 50D44D472C3FAE8000CF6A69 /* Tiercel */ = { + isa = XCSwiftPackageProductDependency; + package = 50D44D462C3FAE8000CF6A69 /* XCRemoteSwiftPackageReference "Tiercel" */; + productName = Tiercel; + }; + 50D44D502C3FC85F00CF6A69 /* AnyCodable */ = { + isa = XCSwiftPackageProductDependency; + package = 50D44D4F2C3FC85F00CF6A69 /* XCRemoteSwiftPackageReference "AnyCodable" */; + productName = AnyCodable; + }; + 50E28B802C40BA52007891E0 /* ColorfulX */ = { + isa = XCSwiftPackageProductDependency; + package = 50E28B7F2C40BA52007891E0 /* XCRemoteSwiftPackageReference "ColorfulX" */; + productName = ColorfulX; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 50D44CFA2C3F91F700CF6A69 /* Project object */; +} diff --git a/Asspp.xcworkspace/contents.xcworkspacedata b/Asspp.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..c16aaeb --- /dev/null +++ b/Asspp.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Asspp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Asspp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Asspp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Asspp.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Asspp.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..03b341c --- /dev/null +++ b/Asspp.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,257 @@ +{ + "pins" : [ + { + "identity" : "anycodable", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Flight-School/AnyCodable", + "state" : { + "revision" : "862808b2070cd908cb04f9aafe7de83d35f81b05", + "version" : "0.6.7" + } + }, + { + "identity" : "async-http-client", + "kind" : "remoteSourceControl", + "location" : "https://github.com/swift-server/async-http-client.git", + "state" : { + "revision" : "0ae99db85b2b9d1e79b362bd31fd1ffe492f7c47", + "version" : "1.21.2" + } + }, + { + "identity" : "async-kit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/vapor/async-kit.git", + "state" : { + "revision" : "7ece208cd401687641c88367a00e3ea2b04311f1", + "version" : "1.19.0" + } + }, + { + "identity" : "colorfulx", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Lakr233/ColorfulX", + "state" : { + "revision" : "3463d3b27d0c1b883fbf6c50b85ea002d7fbac5e", + "version" : "4.1.4" + } + }, + { + "identity" : "colorvector", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Lakr233/ColorVector.git", + "state" : { + "revision" : "031ce6ce65c0b347fb192302aa8ec4a17cc1494f", + "version" : "1.0.3" + } + }, + { + "identity" : "console-kit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/vapor/console-kit.git", + "state" : { + "revision" : "9f7932f22ab6f64aafadc14491e694179b7d0f6f", + "version" : "4.14.3" + } + }, + { + "identity" : "kingfisher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/onevcat/Kingfisher", + "state" : { + "revision" : "2ef543ee21d63734e1c004ad6c870255e8716c50", + "version" : "7.12.0" + } + }, + { + "identity" : "multipart-kit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/vapor/multipart-kit.git", + "state" : { + "revision" : "a31236f24bfd2ea2f520a74575881f6731d7ae68", + "version" : "4.7.0" + } + }, + { + "identity" : "routing-kit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/vapor/routing-kit.git", + "state" : { + "revision" : "8c9a227476555c55837e569be71944e02a056b72", + "version" : "4.9.1" + } + }, + { + "identity" : "springinterpolation", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Lakr233/SpringInterpolation.git", + "state" : { + "revision" : "be8721cffc87ec514fa13ba5dab586a2730f51c9", + "version" : "1.1.2" + } + }, + { + "identity" : "swift-algorithms", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-algorithms.git", + "state" : { + "revision" : "f6919dfc309e7f1b56224378b11e28bab5bccc42", + "version" : "1.2.0" + } + }, + { + "identity" : "swift-atomics", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-atomics.git", + "state" : { + "revision" : "cd142fd2f64be2100422d658e7411e39489da985", + "version" : "1.2.0" + } + }, + { + "identity" : "swift-collections", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-collections.git", + "state" : { + "revision" : "3d2dc41a01f9e49d84f0a3925fb858bed64f702d", + "version" : "1.1.2" + } + }, + { + "identity" : "swift-crypto", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-crypto.git", + "state" : { + "revision" : "46072478ca365fe48370993833cb22de9b41567f", + "version" : "3.5.2" + } + }, + { + "identity" : "swift-http-types", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-http-types", + "state" : { + "revision" : "1ddbea1ee34354a6a2532c60f98501c35ae8edfa", + "version" : "1.2.0" + } + }, + { + "identity" : "swift-log", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-log.git", + "state" : { + "revision" : "9cb486020ebf03bfa5b5df985387a14a98744537", + "version" : "1.6.1" + } + }, + { + "identity" : "swift-metrics", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-metrics.git", + "state" : { + "revision" : "e0165b53d49b413dd987526b641e05e246782685", + "version" : "2.5.0" + } + }, + { + "identity" : "swift-nio", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-nio.git", + "state" : { + "revision" : "fc79798d5a150d61361a27ce0c51169b889e23de", + "version" : "2.68.0" + } + }, + { + "identity" : "swift-nio-extras", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-nio-extras.git", + "state" : { + "revision" : "05c36b57453d23ea63785d58a7dbc7b70ba1745e", + "version" : "1.23.0" + } + }, + { + "identity" : "swift-nio-http2", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-nio-http2.git", + "state" : { + "revision" : "a0224f3d20438635dd59c9fcc593520d80d131d0", + "version" : "1.33.0" + } + }, + { + "identity" : "swift-nio-ssl", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-nio-ssl.git", + "state" : { + "revision" : "2b09805797f21c380f7dc9bedaab3157c5508efb", + "version" : "2.27.0" + } + }, + { + "identity" : "swift-nio-transport-services", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-nio-transport-services.git", + "state" : { + "revision" : "38ac8221dd20674682148d6451367f89c2652980", + "version" : "1.21.0" + } + }, + { + "identity" : "swift-numerics", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-numerics.git", + "state" : { + "revision" : "0a5bc04095a675662cf24757cc0640aa2204253b", + "version" : "1.0.2" + } + }, + { + "identity" : "swift-system", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-system.git", + "state" : { + "revision" : "6a9e38e7bd22a3b8ba80bddf395623cf68f57807", + "version" : "1.3.1" + } + }, + { + "identity" : "tiercel", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Danie1s/Tiercel", + "state" : { + "revision" : "203ef077ed3887cb8cb5729446ef018f890a8a9a", + "version" : "3.2.5" + } + }, + { + "identity" : "vapor", + "kind" : "remoteSourceControl", + "location" : "https://github.com/vapor/vapor", + "state" : { + "revision" : "a823735db57b46100b0c61cdfc5a08525b1e7cad", + "version" : "4.102.1" + } + }, + { + "identity" : "websocket-kit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/vapor/websocket-kit.git", + "state" : { + "revision" : "4232d34efa49f633ba61afde365d3896fc7f8740", + "version" : "2.15.0" + } + }, + { + "identity" : "zipfoundation", + "kind" : "remoteSourceControl", + "location" : "https://github.com/weichsel/ZIPFoundation.git", + "state" : { + "revision" : "02b6abe5f6eef7e3cbd5f247c5cc24e246efcfe0", + "version" : "0.9.19" + } + } + ], + "version" : 2 +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..99cdc1b --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 2024 Lakr Aream + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Asspp Copyright (C) 2024 Lakr Aream + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..57e0b52 --- /dev/null +++ b/README.md @@ -0,0 +1,52 @@ +# Asspp + +The App Store for your multi-account eco system. + +[简体中文 🇨🇳](./Resources/i18n/zh-Hans/README.md) + +## 👀 Preview + +![Screenshot](./Resources/Screenshots/Screenshot-0.png) + +## 🌟 Key Features + +- [x] multiple account support +- [x] select App Store region +- [x] search for apps with keywords +- [x] download apps from App Store +- [x] install ipa file on device without jailbroken +- [x] share ipa file +- [x] purchase free apps +- [x] supports TrollStore if you had one + +Due to technical reasons, installer will stop work after 2025/5/20. Please wait for the next update after that. Other features will still work. + +## 📝 Requirements + +You need to figure it out by yourself :) But here are some tech notes: + +- [x] https://dantheman827.github.io/ios-app-signer/ + +## 🚀 Usage + +Download the latest version from [Releases](https://github.com/Lakr233/Asspp/releases). + +## Source Code + +Source code is granted case by case, only requests from my most trusted friends will be considered. Please contact me if you need it. + +## 🧑‍⚖️ License + +[GPLv3](./LICENSE) + +Yes, this is one of the few software programs I publish that is licensed under the GPL. + +## 🥰 Acknowledgements + +- [x] https://github.com/majd/ipatool +- [x] https://github.com/dlevi309/ipatool-ios +- [x] https://get.localhost.direct/ + +--- + +Copyright © 2024 Lakr Aream. All Rights Reserved. \ No newline at end of file diff --git a/Resources/Certificates/localhost.direct/localhost.direct.crt b/Resources/Certificates/localhost.direct/localhost.direct.crt new file mode 100644 index 0000000..29a8534 --- /dev/null +++ b/Resources/Certificates/localhost.direct/localhost.direct.crt @@ -0,0 +1,100 @@ +-----BEGIN CERTIFICATE----- +MIIGaDCCBVCgAwIBAgIMcgWlFk4ihQWQO96fMA0GCSqGSIb3DQEBCwUAMFUxCzAJ +BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSswKQYDVQQDEyJH +bG9iYWxTaWduIEdDQyBSNiBBbHBoYVNTTCBDQSAyMDIzMB4XDTI0MDQxNzE5MTkz +OVoXDTI1MDUxOTE5MTkzOFowHTEbMBkGA1UEAwwSKi5sb2NhbGhvc3QuZGlyZWN0 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl7j/nKHNPbO+9oCQyKOV +sbSe3lJLSUup2Tr/nCBgPUdBJE4ZrrhgLYz49qU9d/tXQG2thywa3bcVMq6Vv7Wl +pzPEJzsGNgAp1e8Z++aN8VoUb46BlsvAOAUEOYcfk3SVfM85orEhBVYswUfunptM +LW75zAO+kLgbgzpAVk6vtgWWEXNMVVdA6hOitNWKbR6s5Qh8wGJ+YmhYMfn+lcxX +e9e8gmPFZ6EegGSu1ZFP9KlSq8X6udSYSOZPccjdLcjbznx4opbRfgfT09O5IZw2 +SSoHvRotDxY/BiPaubmQnhz/xrMoXyJm6TDibYnfPvVQD5946+euP3gS4IfA6C5O +VwIDAQABo4IDbjCCA2owDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwgZkG +CCsGAQUFBwEBBIGMMIGJMEkGCCsGAQUFBzAChj1odHRwOi8vc2VjdXJlLmdsb2Jh +bHNpZ24uY29tL2NhY2VydC9nc2djY3I2YWxwaGFzc2xjYTIwMjMuY3J0MDwGCCsG +AQUFBzABhjBodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9nc2djY3I2YWxwaGFz +c2xjYTIwMjMwVwYDVR0gBFAwTjAIBgZngQwBAgEwQgYKKwYBBAGgMgoBAzA0MDIG +CCsGAQUFBwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5 +LzBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vY3JsLmdsb2JhbHNpZ24uY29tL2dz +Z2NjcjZhbHBoYXNzbGNhMjAyMy5jcmwwLwYDVR0RBCgwJoISKi5sb2NhbGhvc3Qu +ZGlyZWN0ghBsb2NhbGhvc3QuZGlyZWN0MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggr +BgEFBQcDAjAfBgNVHSMEGDAWgBS9BbfzipM8c8t5+g+FEqF3lhiRdDAdBgNVHQ4E +FgQUKI953RG67hpYzTKIgOFfjOhCFHUwggF9BgorBgEEAdZ5AgQCBIIBbQSCAWkB +ZwB2AKLjCuRF772tm3447Udnd1PXgluElNcrXhssxLlQpEfnAAABju2AJRgAAAQD +AEcwRQIhAM6LOxsJZpalFLVL5gxcPVg/esjcs77aMy55RbEsugIcAiA+eXsLDS0l +L2LAVio6ccRujBXv4AVX8+UMEjxTCJOK8gB1ABNK3xq1mEIJeAxv70x6kaQWtyNJ +zlhXat+u2qfCq+AiAAABju2AJUoAAAQDAEYwRAIgafNBrzSDplrC/23Al8N62TGN +df6/I3sFbRdK1WjBrCsCIEXSOPPQrhEEoMZN8ZGRzkY7znL0zWuJsDA2IDj7+mUQ +AHYATnWjJ1yaEMM4W2zU3z9S6x3w4I4bjWnAsfpksWKaOd8AAAGO7YAmKAAABAMA +RzBFAiEA72BBCCM0QbJ1iN6jr9xBf51RNDjI6vV3me/v2m0CjvACICazjNaoB080 +cqeQVF9ROzyHkaYUkb7vpeDd+EZeMhhWMA0GCSqGSIb3DQEBCwUAA4IBAQBBImJh +WM2CJEEALTrfPO4qiTig0jr9GoIhW0Vy31qiIfOchv8yNBTCc01Zd4LKqnpNId7K +a3TmMEyt/kf5PUSVkoVhBlk2wOdbtNvzxmc1VgUteBcng99GQNs4TJ6kOTuz9T0P +ycvgB48A7cjLtQ/bQSYWvJkn46VgYAIofBUrX7Bc4gLCs/XobADO5iLm9vvmvhlM +TigYA6vG4jgSOHnNOyAgus3FVupFA7Xsyo3lxo8BKD2/DkeJykc505i+s3xF6Tn0 +sv7t7GQAukAu/AUiPIvRYYXzFBebx14/nuCjwRvhYt5O/At2dzt+ctNmyfpD/NAa +1cuNyikOi8Y/8hUQ +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFjDCCA3SgAwIBAgIQfx8skC6D0OO2+zvuR4tegDANBgkqhkiG9w0BAQsFADBM +MSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSNjETMBEGA1UEChMKR2xv +YmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0yMzA3MTkwMzQzMjVaFw0y +NjA3MTkwMDAwMDBaMFUxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWdu +IG52LXNhMSswKQYDVQQDEyJHbG9iYWxTaWduIEdDQyBSNiBBbHBoYVNTTCBDQSAy +MDIzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA00Jvk5ADppO0rgDn +j1M14XIb032Aas409JJFAb8cUjipFOth7ySLdaWLe3s63oSs5x3eWwzTpX4BFkzZ +bxT1eoJSHfT2M0wZ5QOPcCIjsr+YB8TAvV2yJSyq+emRrN/FtgCSTaWXSJ5jipW8 +SJ/VAuXPMzuAP2yYpuPcjjQ5GyrssDXgu+FhtYxqyFP7BSvx9jQhh5QV5zhLycua +n8n+J0Uw09WRQK6JGQ5HzDZQinkNel+fZZNRG1gE9Qeh+tHBplrkalB1g85qJkPO +J7SoEvKsmDkajggk/sSq7NPyzFaa/VBGZiRRG+FkxCBniGD5618PQ4trcwHyMojS +FObOHQIDAQABo4IBXzCCAVswDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsG +AQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBS9 +BbfzipM8c8t5+g+FEqF3lhiRdDAfBgNVHSMEGDAWgBSubAWjkxPioufi1xzWx/B/ +yGdToDB7BggrBgEFBQcBAQRvMG0wLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwMi5n +bG9iYWxzaWduLmNvbS9yb290cjYwOwYIKwYBBQUHMAKGL2h0dHA6Ly9zZWN1cmUu +Z2xvYmFsc2lnbi5jb20vY2FjZXJ0L3Jvb3QtcjYuY3J0MDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20vcm9vdC1yNi5jcmwwIQYDVR0g +BBowGDAIBgZngQwBAgEwDAYKKwYBBAGgMgoBAzANBgkqhkiG9w0BAQsFAAOCAgEA +fMkkMo5g4mn1ft4d4xR2kHzYpDukhC1XYPwfSZN3A9nEBadjdKZMH7iuS1vF8uSc +g26/30DRPen2fFRsr662ECyUCR4OfeiiGNdoQvcesM9Xpew3HLQP4qHg+s774hNL +vGRD4aKSKwFqLMrcqCw6tEAfX99tFWsD4jzbC6k8tjSLzEl0fTUlfkJaWpvLVkpg +9et8tD8d51bymCg5J6J6wcXpmsSGnksBobac1+nXmgB7jQC9edU8Z41FFo87BV3k +CtrWWsdkQavObMsXUPl/AO8y/jOuAWz0wyvPnKom+o6W4vKDY6/6XPypNdebOJ6m +jyaILp0quoQvhjx87BzENh5s57AIOyIGpS0sDEChVDPzLEfRsH2FJ8/W5woF0nvs +BTqfYSCqblQbHeDDtCj7Mlf8JfqaMuqcbE4rMSyfeHyCdZQwnc/r9ujnth691AJh +xyYeCM04metJIe7cB6d4dFm+Pd5ervY4x32r0uQ1Q0spy1VjNqUJjussYuXNyMmF +HSuLQQ6PrePmH5lcSMQpYKzPoD/RiNVD/PK0O3vuO5vh3o7oKb1FfzoanDsFFTrw +0aLOdRW/tmLPWVNVlAb8ad+B80YJsL4HXYnQG8wYAFb8LhwSDyT9v+C1C1lcIHE7 +nE0AAp9JSHxDYsma9pi4g0Phg3BgOm2euTRzw7R0SzU= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFUTCCBDmgAwIBAgIQdR4/VknnTLv2nQAmtnyqjDANBgkqhkiG9w0BAQwFADBX +MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEQMA4GA1UE +CxMHUm9vdCBDQTEbMBkGA1UEAxMSR2xvYmFsU2lnbiBSb290IENBMB4XDTE5MDYx +OTAwMDAwMFoXDTI4MDEyODEyMDAwMFowTDEgMB4GA1UECxMXR2xvYmFsU2lnbiBS +b290IENBIC0gUjYxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCVB+hzymb57BTK +ezz3DQjxtEULLIK0SMbrWzyug7hBkjMUpG9/6SrMxrCIa8W2idHGsv8UzlEUIexK +3RtaxtaH7k06FQbtZGYLkoDKRN5zlE7zp4l/T3hjCMgSUG1CZi9NuXkoTVIaihqA +txmBDn7EirxkTCEcQ2jXPTyKxbJm1ZCatzEGxb7ibTIGph75ueuqo7i/voJjUNDw +GInf5A959eqiHyrScC5757yTu21T4kh8jBAHOP9msndhfuDqjDyqtKT285VKEgdt +/Yyyic/QoGF3yFh0sNQjOvddOsqi250J3l1ELZDxgc1Xkvp+vFAEYzTfa5MYvms2 +sjnkrCQ2t/DvthwTV5O23rL44oW3c6K4NapF8uCdNqFvVIrxclZuLojFUUJEFZTu +o8U4lptOTloLR/MGNkl3MLxxN+Wm7CEIdfzmYRY/d9XZkZeECmzUAk10wBTt/Tn7 +g/JeFKEEsAvp/u6P4W4LsgizYWYJarEGOmWWWcDwNf3J2iiNGhGHcIEKqJp1HZ46 +hgUAntuA1iX53AWeJ1lMdjlb6vmlodiDD9H/3zAR+YXPM0j1ym1kFCx6WE/TSwhJ +xZVkGmMOeT31s4zKWK2cQkV5bg6HGVxUsWW2v4yb3BPpDW+4LtxnbsmLEbWEFIoA +GXCDeZGXkdQaJ783HjIH2BRjPChMrwIDAQABo4IBIjCCAR4wDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFK5sBaOTE+Ki5+LXHNbH8H/I +Z1OgMB8GA1UdIwQYMBaAFGB7ZhpFDZfKiVAvfQTNNKj//P1LMD0GCCsGAQUFBwEB +BDEwLzAtBggrBgEFBQcwAYYhaHR0cDovL29jc3AuZ2xvYmFsc2lnbi5jb20vcm9v +dHIxMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20v +cm9vdC5jcmwwRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0dHBz +Oi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMA0GCSqGSIb3DQEBDAUA +A4IBAQDHrE3fEsZgYRw59I03e5wt03B45il4hAHmquLc33pbkGZn6r3GgoKVzvwC +aBgtl6Jp93gZD8G5UjAFLj840jWDhOP7KSX6Q7rGjOsWNFFDJJLDUKQeJpB1PTRu +HqVI15zxiCl/VCP7mbTW7X/pILaFOPO+T0Qj+TUOU37WOjk6wdeyyOFiDhKSwH2Y +VE4YlAo0R10Jo3uNnSCFBgPw7gy1xt1+ajCbnzZYpQNXFy/0Lp9h3JOClE7TGvli +FUazCjxvhHm5YWqulA51wFT2K9LRiiEWw3UJAgTTmxASitVHHLb3erkETk6SCwGv +OG1eD0qLwuSeARZmhw3xFOCvMHeQ +-----END CERTIFICATE----- diff --git a/Resources/Certificates/localhost.direct/localhost.direct.key b/Resources/Certificates/localhost.direct/localhost.direct.key new file mode 100644 index 0000000..78b1a24 --- /dev/null +++ b/Resources/Certificates/localhost.direct/localhost.direct.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCXuP+coc09s772 +gJDIo5WxtJ7eUktJS6nZOv+cIGA9R0EkThmuuGAtjPj2pT13+1dAba2HLBrdtxUy +rpW/taWnM8QnOwY2ACnV7xn75o3xWhRvjoGWy8A4BQQ5hx+TdJV8zzmisSEFVizB +R+6em0wtbvnMA76QuBuDOkBWTq+2BZYRc0xVV0DqE6K01YptHqzlCHzAYn5iaFgx ++f6VzFd717yCY8VnoR6AZK7VkU/0qVKrxfq51JhI5k9xyN0tyNvOfHiiltF+B9PT +07khnDZJKge9Gi0PFj8GI9q5uZCeHP/GsyhfImbpMOJtid8+9VAPn3jr564/eBLg +h8DoLk5XAgMBAAECggEAEFqIcsGd9cCiHL/O21GGmRj25s/H/aaCMEADvThgJzq+ +8sLYUdTdyQsg6rT04zHcPb2UrrU6UBuj1UqsKXXS3SrfQbtC+B8cY0raaiR3uEQV +X9DkdvSPS3p+8hR2etZeJo3PkJG3FXQsbsjqF351v4/urObaa47sqEBnHuZsWhol +jMEfztg5NWHz1r02UuUCPGy/uIn5MBQVcawn1LZuEepUc+El+fdwlFIC/TQj2Zuh +EZUjMTFzaPDKhoXUvNlIi9YqchRsyB72IDJf/XxAKIp1QXqMcIH4c4sgwB7rbLiD +G9xu7B68OTAhUdF0SJnuz3MhLlc0fqD0xRJoC8M5gQKBgQDBtHrPfqw61dDf3ghr +EaCLDknPtmgtcH1tED3e6YfxEaQOnP/O03eigpakMBGbxpcGsSnkAD8KkBbWE9Wp +FXo4xI4D4e4XZ0r7UciChXamxOWwwv5yUbkB+hie1WZSl5pVqc4ZS7p/1D4mDD8Y +fnbXInF+mOtSSNZJ9RL3hTKLuQKBgQDIhChy+3yibuQz4hHwrSEr7yKMYFAR9TSl +7AqjQ/Vw1uhb6dOD8nrcG9zaQhZsprKGpNuyw0Xy0U0skBfnv6nEMbKBNdP3YyQe +/T3xUu7Z2kdRnaF1Vn/+g6bECXJs3FRIioBbA9XFKfRibxuWjPPpXZk5w3YF73nx +SkpF1DlSjwKBgQCB0MNxZbJlJ8B5F6NKpiCSsLu00ckVksrsGbNtPdLWM31gMcWa +Rcxqg9wTIwfZ/whd+sNZQvT8zj4PsHFDhNpJSyjl3zciRh5ROakIGAvBjjlk8fl2 +geBcO9DeOaP+fA15lXhDKaZOXt5bv19VugNJAJNRRYiHt7qtC+pvKbwLOQKBgCP+ +NRSOuAygQy5dAkNlkHLGdjkkgLr4fP7bo/0ykbgzm3oEOweQWyVvivFSs5vFQH6S +0S0BiGjR0TySkPf0m5CwKw6ujuH1VeKKKrhK3r0URYEM/pKFeGxDTYga+gM4eZib +4/Zydcjygv+4WgdoPdBCEOMhhuoB1q3NXA+0zKVZAoGBAIHR7Udk8rzwuno5IGc8 +AgdMhkDojqQaDJdJlAAmmX1IoqJOpyGdws+uUtQ/YnnNqQn2eTTlPxnl5ldtBYmR +iT8XWLi4jIsY0jh6fLCaZwcu4RB0Rrw1N6nsZQFr/PG61ZPa8RJBfAGRE3QWc3WN +L/Q1JdU0auJcvQn78yA/gLVp +-----END PRIVATE KEY----- diff --git a/Resources/Certificates/localhost.direct/localhost.direct.pem b/Resources/Certificates/localhost.direct/localhost.direct.pem new file mode 100644 index 0000000..cd2ca41 --- /dev/null +++ b/Resources/Certificates/localhost.direct/localhost.direct.pem @@ -0,0 +1,118 @@ +Private-Key: (2048 bit, 2 primes) +modulus: + 00:97:b8:ff:9c:a1:cd:3d:b3:be:f6:80:90:c8:a3: + 95:b1:b4:9e:de:52:4b:49:4b:a9:d9:3a:ff:9c:20: + 60:3d:47:41:24:4e:19:ae:b8:60:2d:8c:f8:f6:a5: + 3d:77:fb:57:40:6d:ad:87:2c:1a:dd:b7:15:32:ae: + 95:bf:b5:a5:a7:33:c4:27:3b:06:36:00:29:d5:ef: + 19:fb:e6:8d:f1:5a:14:6f:8e:81:96:cb:c0:38:05: + 04:39:87:1f:93:74:95:7c:cf:39:a2:b1:21:05:56: + 2c:c1:47:ee:9e:9b:4c:2d:6e:f9:cc:03:be:90:b8: + 1b:83:3a:40:56:4e:af:b6:05:96:11:73:4c:55:57: + 40:ea:13:a2:b4:d5:8a:6d:1e:ac:e5:08:7c:c0:62: + 7e:62:68:58:31:f9:fe:95:cc:57:7b:d7:bc:82:63: + c5:67:a1:1e:80:64:ae:d5:91:4f:f4:a9:52:ab:c5: + fa:b9:d4:98:48:e6:4f:71:c8:dd:2d:c8:db:ce:7c: + 78:a2:96:d1:7e:07:d3:d3:d3:b9:21:9c:36:49:2a: + 07:bd:1a:2d:0f:16:3f:06:23:da:b9:b9:90:9e:1c: + ff:c6:b3:28:5f:22:66:e9:30:e2:6d:89:df:3e:f5: + 50:0f:9f:78:eb:e7:ae:3f:78:12:e0:87:c0:e8:2e: + 4e:57 +publicExponent: 65537 (0x10001) +privateExponent: + 10:5a:88:72:c1:9d:f5:c0:a2:1c:bf:ce:db:51:86: + 99:18:f6:e6:cf:c7:fd:a6:82:30:40:03:bd:38:60: + 27:3a:be:f2:c2:d8:51:d4:dd:c9:0b:20:ea:b4:f4: + e3:31:dc:3d:bd:94:ae:b5:3a:50:1b:a3:d5:4a:ac: + 29:75:d2:dd:2a:df:41:bb:42:f8:1f:1c:63:4a:da: + 6a:24:77:b8:44:15:5f:d0:e4:76:f4:8f:4b:7a:7e: + f2:14:76:7a:d6:5e:26:8d:cf:90:91:b7:15:74:2c: + 6e:c8:ea:17:7e:75:bf:8f:ee:ac:e6:da:6b:8e:ec: + a8:40:67:1e:e6:6c:5a:1a:25:8c:c1:1f:ce:d8:39: + 35:61:f3:d6:bd:36:52:e5:02:3c:6c:bf:b8:89:f9: + 30:14:15:71:ac:27:d4:b6:6e:11:ea:54:73:e1:25: + f9:f7:70:94:52:02:fd:34:23:d9:9b:a1:11:95:23: + 31:31:73:68:f0:ca:86:85:d4:bc:d9:48:8b:d6:2a: + 72:14:6c:c8:1e:f6:20:32:5f:fd:7c:40:28:8a:75: + 41:7a:8c:70:81:f8:73:8b:20:c0:1e:eb:6c:b8:83: + 1b:dc:6e:ec:1e:bc:39:30:21:51:d1:74:48:99:ee: + cf:73:21:2e:57:34:7e:a0:f4:c5:12:68:0b:c3:39: + 81 +prime1: + 00:c1:b4:7a:cf:7e:ac:3a:d5:d0:df:de:08:6b:11: + a0:8b:0e:49:cf:b6:68:2d:70:7d:6d:10:3d:de:e9: + 87:f1:11:a4:0e:9c:ff:ce:d3:77:a2:82:96:a4:30: + 11:9b:c6:97:06:b1:29:e4:00:3f:0a:90:16:d6:13: + d5:a9:15:7a:38:c4:8e:03:e1:ee:17:67:4a:fb:51: + c8:82:85:76:a6:c4:e5:b0:c2:fe:72:51:b9:01:fa: + 18:9e:d5:66:52:97:9a:55:a9:ce:19:4b:ba:7f:d4: + 3e:26:0c:3f:18:7e:76:d7:22:71:7e:98:eb:52:48: + d6:49:f5:12:f7:85:32:8b:b9 +prime2: + 00:c8:84:28:72:fb:7c:a2:6e:e4:33:e2:11:f0:ad: + 21:2b:ef:22:8c:60:50:11:f5:34:a5:ec:0a:a3:43: + f5:70:d6:e8:5b:e9:d3:83:f2:7a:dc:1b:dc:da:42: + 16:6c:a6:b2:86:a4:db:b2:c3:45:f2:d1:4d:2c:90: + 17:e7:bf:a9:c4:31:b2:81:35:d3:f7:63:24:1e:fd: + 3d:f1:52:ee:d9:da:47:51:9d:a1:75:56:7f:fe:83: + a6:c4:09:72:6c:dc:54:48:8a:80:5b:03:d5:c5:29: + f4:62:6f:1b:96:8c:f3:e9:5d:99:39:c3:76:05:ef: + 79:f1:4a:4a:45:d4:39:52:8f +exponent1: + 00:81:d0:c3:71:65:b2:65:27:c0:79:17:a3:4a:a6: + 20:92:b0:bb:b4:d1:c9:15:92:ca:ec:19:b3:6d:3d: + d2:d6:33:7d:60:31:c5:9a:45:cc:6a:83:dc:13:23: + 07:d9:ff:08:5d:fa:c3:59:42:f4:fc:ce:3e:0f:b0: + 71:43:84:da:49:4b:28:e5:df:37:22:46:1e:51:39: + a9:08:18:0b:c1:8e:39:64:f1:f9:76:81:e0:5c:3b: + d0:de:39:a3:fe:7c:0d:79:95:78:43:29:a6:4e:5e: + de:5b:bf:5f:55:ba:03:49:00:93:51:45:88:87:b7: + ba:ad:0b:ea:6f:29:bc:0b:39 +exponent2: + 23:fe:35:14:8e:b8:0c:a0:43:2e:5d:02:43:65:90: + 72:c6:76:39:24:80:ba:f8:7c:fe:db:a3:fd:32:91: + b8:33:9b:7a:04:3b:07:90:5b:25:6f:8a:f1:52:b3: + 9b:c5:40:7e:92:d1:2d:01:88:68:d1:d1:3c:92:90: + f7:f4:9b:90:b0:2b:0e:ae:8e:e1:f5:55:e2:8a:2a: + b8:4a:de:bd:14:45:81:0c:fe:92:85:78:6c:43:4d: + 88:1a:fa:03:38:79:98:9b:e3:f6:72:75:c8:f2:82: + ff:b8:5a:07:68:3d:d0:42:10:e3:21:86:ea:01:d6: + ad:cd:5c:0f:b4:cc:a5:59 +coefficient: + 00:81:d1:ed:47:64:f2:bc:f0:ba:7a:39:20:67:3c: + 02:07:4c:86:40:e8:8e:a4:1a:0c:97:49:94:00:26: + 99:7d:48:a2:a2:4e:a7:21:9d:c2:cf:ae:52:d4:3f: + 62:79:cd:a9:09:f6:79:34:e5:3f:19:e5:e6:57:6d: + 05:89:91:89:3f:17:58:b8:b8:8c:8b:18:d2:38:7a: + 7c:b0:9a:67:07:2e:e1:10:74:46:bc:35:37:a9:ec: + 65:01:6b:fc:f1:ba:d5:93:da:f1:12:41:7c:01:91: + 13:74:16:73:75:8d:2f:f4:35:25:d5:34:6a:e2:5c: + bd:09:fb:f3:20:3f:80:b5:69 +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCXuP+coc09s772 +gJDIo5WxtJ7eUktJS6nZOv+cIGA9R0EkThmuuGAtjPj2pT13+1dAba2HLBrdtxUy +rpW/taWnM8QnOwY2ACnV7xn75o3xWhRvjoGWy8A4BQQ5hx+TdJV8zzmisSEFVizB +R+6em0wtbvnMA76QuBuDOkBWTq+2BZYRc0xVV0DqE6K01YptHqzlCHzAYn5iaFgx ++f6VzFd717yCY8VnoR6AZK7VkU/0qVKrxfq51JhI5k9xyN0tyNvOfHiiltF+B9PT +07khnDZJKge9Gi0PFj8GI9q5uZCeHP/GsyhfImbpMOJtid8+9VAPn3jr564/eBLg +h8DoLk5XAgMBAAECggEAEFqIcsGd9cCiHL/O21GGmRj25s/H/aaCMEADvThgJzq+ +8sLYUdTdyQsg6rT04zHcPb2UrrU6UBuj1UqsKXXS3SrfQbtC+B8cY0raaiR3uEQV +X9DkdvSPS3p+8hR2etZeJo3PkJG3FXQsbsjqF351v4/urObaa47sqEBnHuZsWhol +jMEfztg5NWHz1r02UuUCPGy/uIn5MBQVcawn1LZuEepUc+El+fdwlFIC/TQj2Zuh +EZUjMTFzaPDKhoXUvNlIi9YqchRsyB72IDJf/XxAKIp1QXqMcIH4c4sgwB7rbLiD +G9xu7B68OTAhUdF0SJnuz3MhLlc0fqD0xRJoC8M5gQKBgQDBtHrPfqw61dDf3ghr +EaCLDknPtmgtcH1tED3e6YfxEaQOnP/O03eigpakMBGbxpcGsSnkAD8KkBbWE9Wp +FXo4xI4D4e4XZ0r7UciChXamxOWwwv5yUbkB+hie1WZSl5pVqc4ZS7p/1D4mDD8Y +fnbXInF+mOtSSNZJ9RL3hTKLuQKBgQDIhChy+3yibuQz4hHwrSEr7yKMYFAR9TSl +7AqjQ/Vw1uhb6dOD8nrcG9zaQhZsprKGpNuyw0Xy0U0skBfnv6nEMbKBNdP3YyQe +/T3xUu7Z2kdRnaF1Vn/+g6bECXJs3FRIioBbA9XFKfRibxuWjPPpXZk5w3YF73nx +SkpF1DlSjwKBgQCB0MNxZbJlJ8B5F6NKpiCSsLu00ckVksrsGbNtPdLWM31gMcWa +Rcxqg9wTIwfZ/whd+sNZQvT8zj4PsHFDhNpJSyjl3zciRh5ROakIGAvBjjlk8fl2 +geBcO9DeOaP+fA15lXhDKaZOXt5bv19VugNJAJNRRYiHt7qtC+pvKbwLOQKBgCP+ +NRSOuAygQy5dAkNlkHLGdjkkgLr4fP7bo/0ykbgzm3oEOweQWyVvivFSs5vFQH6S +0S0BiGjR0TySkPf0m5CwKw6ujuH1VeKKKrhK3r0URYEM/pKFeGxDTYga+gM4eZib +4/Zydcjygv+4WgdoPdBCEOMhhuoB1q3NXA+0zKVZAoGBAIHR7Udk8rzwuno5IGc8 +AgdMhkDojqQaDJdJlAAmmX1IoqJOpyGdws+uUtQ/YnnNqQn2eTTlPxnl5ldtBYmR +iT8XWLi4jIsY0jh6fLCaZwcu4RB0Rrw1N6nsZQFr/PG61ZPa8RJBfAGRE3QWc3WN +L/Q1JdU0auJcvQn78yA/gLVp +-----END PRIVATE KEY----- diff --git a/Resources/Design/asspp.psd b/Resources/Design/asspp.psd new file mode 100644 index 0000000..2dff507 Binary files /dev/null and b/Resources/Design/asspp.psd differ diff --git a/Resources/Screenshots/Screenshot-0.png b/Resources/Screenshots/Screenshot-0.png new file mode 100644 index 0000000..d27686c Binary files /dev/null and b/Resources/Screenshots/Screenshot-0.png differ diff --git a/Resources/i18n/zh-Hans/README.md b/Resources/i18n/zh-Hans/README.md new file mode 100644 index 0000000..f7fec8d --- /dev/null +++ b/Resources/i18n/zh-Hans/README.md @@ -0,0 +1,46 @@ +# 爱啪啪思道 + +就是有多账号支持的 App Store 辅助工具。不能替代 App Store 但是够你用了。 + +## 👀 预览 + +![截图](../../../Resources/Screenshots/Screenshot-0.png) + +## 🌟 主要功能 + +- [x] 支持多账户 +- [x] 支持指定应用商店的地区 +- [x] 搜索应用 +- [x] 下载应用 +- [x] 安装应用(无需越狱) +- [x] 分享应用安装包 +- [x] 购买免费应用 +- [x] 支持巨魔商店(如果你已经安装的话能省下不少折腾的时间) + +由于技术原因,此构建版本搭载的安装器将在 2025/5/20 后过期。后续等待更新即可。其他功能不受影响 + +## 📝 要求 + +自己折腾吧 :) + +- [x] https://dantheman827.github.io/ios-app-signer/ + +## 🚀 使用方法 + +从 [Releases](https://github.com/Lakr233/Asspp/releases) 下载最新版本。 + +## 🧑‍⚖️ 许可证 + +[GPLv3](./LICENSE) + +是的,这是我为数不多发布的使用 GPL 许可证的软件之一。 + +## 🥰 致谢 + +- [x] https://github.com/majd/ipatool +- [x] https://github.com/dlevi309/ipatool-ios +- [x] https://get.localhost.direct/ + +--- + +版权所有 © 2024 Lakr Aream。保留所有权利。 \ No newline at end of file