├── AI_Recycle_Helper.xcodeproj ├── project.pbxproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ └── ryan.xcuserdatad │ │ └── UserInterfaceState.xcuserstate └── xcuserdata │ └── ryan.xcuserdatad │ ├── xcdebugger │ └── Breakpoints_v2.xcbkptlist │ └── xcschemes │ └── xcschememanagement.plist ├── AI_Recycle_Helper ├── AIDetect2.mlmodel ├── AIDetectModel.mlmodel ├── AIViewController.swift ├── AiDetectViewController_Remove.swift ├── AppDelegate.swift ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ ├── 100.png │ │ ├── 1024.png │ │ ├── 114.png │ │ ├── 120.png │ │ ├── 128.png │ │ ├── 144.png │ │ ├── 152.png │ │ ├── 16.png │ │ ├── 167.png │ │ ├── 172.png │ │ ├── 180.png │ │ ├── 196.png │ │ ├── 20.png │ │ ├── 216.png │ │ ├── 256.png │ │ ├── 29.png │ │ ├── 32.png │ │ ├── 40.png │ │ ├── 48.png │ │ ├── 50.png │ │ ├── 512.png │ │ ├── 55.png │ │ ├── 57.png │ │ ├── 58.png │ │ ├── 60.png │ │ ├── 64.png │ │ ├── 72.png │ │ ├── 76.png │ │ ├── 80.png │ │ ├── 87.png │ │ ├── 88.png │ │ └── Contents.json │ ├── ButtonBorderColor.colorset │ │ └── Contents.json │ ├── Contents.json │ ├── MainColor.colorset │ │ └── Contents.json │ ├── Medals │ │ ├── Contents.json │ │ ├── bronzeMedal.imageset │ │ │ ├── Contents.json │ │ │ ├── bronzeMedal.png │ │ │ ├── bronzeMedal@2x.png │ │ │ └── bronzeMedal@3x.png │ │ ├── goldMedal.imageset │ │ │ ├── Contents.json │ │ │ ├── goldMedal.png │ │ │ ├── goldMedal@2x.png │ │ │ └── goldMedal@3x.png │ │ └── silverMedal.imageset │ │ │ ├── Contents.json │ │ │ ├── silverMedal.png │ │ │ ├── silverMedal@2x.png │ │ │ └── silverMedal@3x.png │ ├── Q0.imageset │ │ ├── Contents.json │ │ ├── Q0.jpeg │ │ ├── Q0@2x.jpeg │ │ └── Q0@3x.jpeg │ ├── Q1.imageset │ │ ├── Contents.json │ │ ├── Q1.jpg │ │ ├── Q1@2x.jpg │ │ └── Q1@3x.jpg │ ├── Q10.imageset │ │ ├── Contents.json │ │ ├── Q10.jpg │ │ ├── Q10@2x.jpg │ │ └── Q10@3x.jpg │ ├── Q11.imageset │ │ ├── Contents.json │ │ ├── Q11.jpg │ │ ├── Q11@2x.jpg │ │ └── Q11@3x.jpg │ ├── Q12.imageset │ │ ├── Contents.json │ │ ├── How_bad_are_greasy_pizza.jpeg │ │ ├── How_bad_are_greasy_pizza@2x.jpeg │ │ └── How_bad_are_greasy_pizza@3x.jpeg │ ├── Q13.imageset │ │ ├── Contents.json │ │ ├── shredded-paper-uses.jpg.webp.jpeg.jpeg │ │ ├── shredded-paper-uses.jpg.webp.jpeg@2x.jpeg │ │ └── shredded-paper-uses.jpg.webp.jpeg@3x.jpeg │ ├── Q14.imageset │ │ ├── 51N9lRMfrbL._AC_SL1001_.jpg │ │ ├── 51N9lRMfrbL._AC_SL1001_@2x.jpg │ │ ├── 51N9lRMfrbL._AC_SL1001_@3x.jpg │ │ └── Contents.json │ ├── Q15.imageset │ │ ├── Contents.json │ │ ├── j3964_3.jpg │ │ ├── j3964_3@2x.jpg │ │ └── j3964_3@3x.jpg │ ├── Q2.imageset │ │ ├── Contents.json │ │ ├── Q2.jpg │ │ ├── Q2@2x.jpg │ │ └── Q2@3x.jpg │ ├── Q3.imageset │ │ ├── Contents.json │ │ ├── Q3.jpeg │ │ ├── Q3@2x.jpeg │ │ └── Q3@3x.jpeg │ ├── Q4.imageset │ │ ├── Contents.json │ │ ├── Q4.jpeg │ │ ├── Q4@2x.jpeg │ │ └── Q4@3x.jpeg │ ├── Q5.imageset │ │ ├── Contents.json │ │ ├── Q5.jpg │ │ ├── Q5@2x.jpg │ │ └── Q5@3x.jpg │ ├── Q6.imageset │ │ ├── Contents.json │ │ ├── Q6.jpg │ │ ├── Q6@2x.jpg │ │ └── Q6@3x.jpg │ ├── Q7.imageset │ │ ├── Contents.json │ │ ├── Q7.jpg │ │ ├── Q7@2x.jpg │ │ └── Q7@3x.jpg │ ├── Q8.imageset │ │ ├── Contents.json │ │ ├── Q8.jpg │ │ ├── Q8@2x.jpg │ │ └── Q8@3x.jpg │ ├── Q9.imageset │ │ ├── Contents.json │ │ ├── Q9.jpg │ │ ├── Q9@2x.jpg │ │ └── Q9@3x.jpg │ ├── QuizButtonSelectColor.colorset │ │ └── Contents.json │ ├── ReverseMainColor.colorset │ │ └── Contents.json │ ├── cameraImage.imageset │ │ ├── Contents.json │ │ ├── Untitled.png │ │ ├── Untitled@2x.png │ │ └── Untitled@3x.png │ ├── homePage.imageset │ │ ├── Contents.json │ │ ├── homePage-1.png │ │ ├── homePage.png │ │ ├── homePage@2x-1.png │ │ ├── homePage@2x.png │ │ ├── homePage@3x-1.png │ │ ├── homePage@3x-2.png │ │ ├── homePage@3x.png │ │ ├── homePage@3x@2x.png │ │ └── homePage@3x@3x.png │ ├── iconImage.imageset │ │ ├── Contents.json │ │ ├── nature.png │ │ ├── nature@2x.png │ │ └── nature@3x.png │ ├── quizButtonCorrectColor.colorset │ │ └── Contents.json │ ├── quizButtonWrongColor.colorset │ │ └── Contents.json │ └── quizDefaultButtonColor.colorset │ │ └── Contents.json ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── ContentView.swift ├── FinishQuizViewController.swift ├── Garbage Disposal.pdf ├── HintViewController.swift ├── HomeViewController.swift ├── Info.plist ├── MainTabBarController.swift ├── PdfViewController.swift ├── Question.swift ├── Quiz.swift ├── QuizViewController.swift ├── SceneDelegate.swift └── tmpViewController.swift ├── AI_Recycle_HelperTests └── AI_Recycle_HelperTests.swift └── AI_Recycle_HelperUITests ├── AI_Recycle_HelperUITests.swift └── AI_Recycle_HelperUITestsLaunchTests.swift /AI_Recycle_Helper.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 55; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 940F1B552765695F002802D7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 940F1B542765695F002802D7 /* AppDelegate.swift */; }; 11 | 940F1B572765695F002802D7 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 940F1B562765695F002802D7 /* SceneDelegate.swift */; }; 12 | 940F1B5C2765695F002802D7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 940F1B5A2765695F002802D7 /* Main.storyboard */; }; 13 | 940F1B5E27656960002802D7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 940F1B5D27656960002802D7 /* Assets.xcassets */; }; 14 | 940F1B6127656960002802D7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 940F1B5F27656960002802D7 /* LaunchScreen.storyboard */; }; 15 | 940F1B6C27656960002802D7 /* AI_Recycle_HelperTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 940F1B6B27656960002802D7 /* AI_Recycle_HelperTests.swift */; }; 16 | 940F1B7627656960002802D7 /* AI_Recycle_HelperUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 940F1B7527656960002802D7 /* AI_Recycle_HelperUITests.swift */; }; 17 | 940F1B7827656960002802D7 /* AI_Recycle_HelperUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 940F1B7727656960002802D7 /* AI_Recycle_HelperUITestsLaunchTests.swift */; }; 18 | 94712BF327F0D85A001054FD /* MainTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94712BF227F0D85A001054FD /* MainTabBarController.swift */; }; 19 | 947396FD278BB1880059F015 /* QuizViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 947396FC278BB1880059F015 /* QuizViewController.swift */; }; 20 | 947396FF278BB2530059F015 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 947396FE278BB2530059F015 /* HomeViewController.swift */; }; 21 | 94739703278BB8F70059F015 /* Question.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94739702278BB8F70059F015 /* Question.swift */; }; 22 | 94739705278BBCE30059F015 /* Quiz.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94739704278BBCE30059F015 /* Quiz.swift */; }; 23 | 948A09122884DE7100CA0A5B /* AIDetectModel.mlmodel in Sources */ = {isa = PBXBuildFile; fileRef = 948A09112884DE7100CA0A5B /* AIDetectModel.mlmodel */; }; 24 | 948EF7B627D541250006DA7F /* FinishQuizViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 948EF7B527D541250006DA7F /* FinishQuizViewController.swift */; }; 25 | 94A4A98427FA175F0073390C /* AIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94A4A98327FA175F0073390C /* AIViewController.swift */; }; 26 | 94CF151427B9948D008008DC /* HintViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94CF151327B9948D008008DC /* HintViewController.swift */; }; 27 | 94DC670928F3D5A8002F5B32 /* PdfViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94DC670828F3D5A8002F5B32 /* PdfViewController.swift */; }; 28 | 94DC670B28F3D8CF002F5B32 /* Garbage Disposal.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 94DC670A28F3D8CF002F5B32 /* Garbage Disposal.pdf */; }; 29 | /* End PBXBuildFile section */ 30 | 31 | /* Begin PBXContainerItemProxy section */ 32 | 940F1B6827656960002802D7 /* PBXContainerItemProxy */ = { 33 | isa = PBXContainerItemProxy; 34 | containerPortal = 940F1B492765695F002802D7 /* Project object */; 35 | proxyType = 1; 36 | remoteGlobalIDString = 940F1B502765695F002802D7; 37 | remoteInfo = AI_Recycle_Helper; 38 | }; 39 | 940F1B7227656960002802D7 /* PBXContainerItemProxy */ = { 40 | isa = PBXContainerItemProxy; 41 | containerPortal = 940F1B492765695F002802D7 /* Project object */; 42 | proxyType = 1; 43 | remoteGlobalIDString = 940F1B502765695F002802D7; 44 | remoteInfo = AI_Recycle_Helper; 45 | }; 46 | /* End PBXContainerItemProxy section */ 47 | 48 | /* Begin PBXFileReference section */ 49 | 940F1B512765695F002802D7 /* AI_Recycle_Helper.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AI_Recycle_Helper.app; sourceTree = BUILT_PRODUCTS_DIR; }; 50 | 940F1B542765695F002802D7 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 51 | 940F1B562765695F002802D7 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; 52 | 940F1B5B2765695F002802D7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 53 | 940F1B5D27656960002802D7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 54 | 940F1B6027656960002802D7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 55 | 940F1B6227656960002802D7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 56 | 940F1B6727656960002802D7 /* AI_Recycle_HelperTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AI_Recycle_HelperTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 57 | 940F1B6B27656960002802D7 /* AI_Recycle_HelperTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AI_Recycle_HelperTests.swift; sourceTree = ""; }; 58 | 940F1B7127656960002802D7 /* AI_Recycle_HelperUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AI_Recycle_HelperUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 59 | 940F1B7527656960002802D7 /* AI_Recycle_HelperUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AI_Recycle_HelperUITests.swift; sourceTree = ""; }; 60 | 940F1B7727656960002802D7 /* AI_Recycle_HelperUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AI_Recycle_HelperUITestsLaunchTests.swift; sourceTree = ""; }; 61 | 94712BF227F0D85A001054FD /* MainTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabBarController.swift; sourceTree = ""; }; 62 | 947396FC278BB1880059F015 /* QuizViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QuizViewController.swift; sourceTree = ""; }; 63 | 947396FE278BB2530059F015 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = ""; }; 64 | 94739702278BB8F70059F015 /* Question.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Question.swift; sourceTree = ""; }; 65 | 94739704278BBCE30059F015 /* Quiz.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Quiz.swift; sourceTree = ""; }; 66 | 948A09112884DE7100CA0A5B /* AIDetectModel.mlmodel */ = {isa = PBXFileReference; lastKnownFileType = file.mlmodel; path = AIDetectModel.mlmodel; sourceTree = ""; }; 67 | 948EF7B527D541250006DA7F /* FinishQuizViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FinishQuizViewController.swift; sourceTree = ""; }; 68 | 94A4A98327FA175F0073390C /* AIViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AIViewController.swift; sourceTree = ""; }; 69 | 94CF151327B9948D008008DC /* HintViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HintViewController.swift; sourceTree = ""; }; 70 | 94DC670828F3D5A8002F5B32 /* PdfViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PdfViewController.swift; sourceTree = ""; }; 71 | 94DC670A28F3D8CF002F5B32 /* Garbage Disposal.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "Garbage Disposal.pdf"; sourceTree = ""; }; 72 | /* End PBXFileReference section */ 73 | 74 | /* Begin PBXFrameworksBuildPhase section */ 75 | 940F1B4E2765695F002802D7 /* Frameworks */ = { 76 | isa = PBXFrameworksBuildPhase; 77 | buildActionMask = 2147483647; 78 | files = ( 79 | ); 80 | runOnlyForDeploymentPostprocessing = 0; 81 | }; 82 | 940F1B6427656960002802D7 /* Frameworks */ = { 83 | isa = PBXFrameworksBuildPhase; 84 | buildActionMask = 2147483647; 85 | files = ( 86 | ); 87 | runOnlyForDeploymentPostprocessing = 0; 88 | }; 89 | 940F1B6E27656960002802D7 /* Frameworks */ = { 90 | isa = PBXFrameworksBuildPhase; 91 | buildActionMask = 2147483647; 92 | files = ( 93 | ); 94 | runOnlyForDeploymentPostprocessing = 0; 95 | }; 96 | /* End PBXFrameworksBuildPhase section */ 97 | 98 | /* Begin PBXGroup section */ 99 | 940F1B482765695F002802D7 = { 100 | isa = PBXGroup; 101 | children = ( 102 | 940F1B532765695F002802D7 /* AI_Recycle_Helper */, 103 | 940F1B6A27656960002802D7 /* AI_Recycle_HelperTests */, 104 | 940F1B7427656960002802D7 /* AI_Recycle_HelperUITests */, 105 | 940F1B522765695F002802D7 /* Products */, 106 | ); 107 | sourceTree = ""; 108 | }; 109 | 940F1B522765695F002802D7 /* Products */ = { 110 | isa = PBXGroup; 111 | children = ( 112 | 940F1B512765695F002802D7 /* AI_Recycle_Helper.app */, 113 | 940F1B6727656960002802D7 /* AI_Recycle_HelperTests.xctest */, 114 | 940F1B7127656960002802D7 /* AI_Recycle_HelperUITests.xctest */, 115 | ); 116 | name = Products; 117 | sourceTree = ""; 118 | }; 119 | 940F1B532765695F002802D7 /* AI_Recycle_Helper */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | 94DC670A28F3D8CF002F5B32 /* Garbage Disposal.pdf */, 123 | 940F1B542765695F002802D7 /* AppDelegate.swift */, 124 | 940F1B562765695F002802D7 /* SceneDelegate.swift */, 125 | 947396FE278BB2530059F015 /* HomeViewController.swift */, 126 | 947396FC278BB1880059F015 /* QuizViewController.swift */, 127 | 94A4A98327FA175F0073390C /* AIViewController.swift */, 128 | 940F1B5A2765695F002802D7 /* Main.storyboard */, 129 | 94DC670828F3D5A8002F5B32 /* PdfViewController.swift */, 130 | 940F1B5D27656960002802D7 /* Assets.xcassets */, 131 | 940F1B5F27656960002802D7 /* LaunchScreen.storyboard */, 132 | 948A09112884DE7100CA0A5B /* AIDetectModel.mlmodel */, 133 | 940F1B6227656960002802D7 /* Info.plist */, 134 | 94739702278BB8F70059F015 /* Question.swift */, 135 | 94739704278BBCE30059F015 /* Quiz.swift */, 136 | 94CF151327B9948D008008DC /* HintViewController.swift */, 137 | 948EF7B527D541250006DA7F /* FinishQuizViewController.swift */, 138 | 94712BF227F0D85A001054FD /* MainTabBarController.swift */, 139 | ); 140 | path = AI_Recycle_Helper; 141 | sourceTree = ""; 142 | }; 143 | 940F1B6A27656960002802D7 /* AI_Recycle_HelperTests */ = { 144 | isa = PBXGroup; 145 | children = ( 146 | 940F1B6B27656960002802D7 /* AI_Recycle_HelperTests.swift */, 147 | ); 148 | path = AI_Recycle_HelperTests; 149 | sourceTree = ""; 150 | }; 151 | 940F1B7427656960002802D7 /* AI_Recycle_HelperUITests */ = { 152 | isa = PBXGroup; 153 | children = ( 154 | 940F1B7527656960002802D7 /* AI_Recycle_HelperUITests.swift */, 155 | 940F1B7727656960002802D7 /* AI_Recycle_HelperUITestsLaunchTests.swift */, 156 | ); 157 | path = AI_Recycle_HelperUITests; 158 | sourceTree = ""; 159 | }; 160 | /* End PBXGroup section */ 161 | 162 | /* Begin PBXNativeTarget section */ 163 | 940F1B502765695F002802D7 /* AI_Recycle_Helper */ = { 164 | isa = PBXNativeTarget; 165 | buildConfigurationList = 940F1B7B27656960002802D7 /* Build configuration list for PBXNativeTarget "AI_Recycle_Helper" */; 166 | buildPhases = ( 167 | 940F1B4D2765695F002802D7 /* Sources */, 168 | 940F1B4E2765695F002802D7 /* Frameworks */, 169 | 940F1B4F2765695F002802D7 /* Resources */, 170 | ); 171 | buildRules = ( 172 | ); 173 | dependencies = ( 174 | ); 175 | name = AI_Recycle_Helper; 176 | productName = AI_Recycle_Helper; 177 | productReference = 940F1B512765695F002802D7 /* AI_Recycle_Helper.app */; 178 | productType = "com.apple.product-type.application"; 179 | }; 180 | 940F1B6627656960002802D7 /* AI_Recycle_HelperTests */ = { 181 | isa = PBXNativeTarget; 182 | buildConfigurationList = 940F1B7E27656960002802D7 /* Build configuration list for PBXNativeTarget "AI_Recycle_HelperTests" */; 183 | buildPhases = ( 184 | 940F1B6327656960002802D7 /* Sources */, 185 | 940F1B6427656960002802D7 /* Frameworks */, 186 | 940F1B6527656960002802D7 /* Resources */, 187 | ); 188 | buildRules = ( 189 | ); 190 | dependencies = ( 191 | 940F1B6927656960002802D7 /* PBXTargetDependency */, 192 | ); 193 | name = AI_Recycle_HelperTests; 194 | productName = AI_Recycle_HelperTests; 195 | productReference = 940F1B6727656960002802D7 /* AI_Recycle_HelperTests.xctest */; 196 | productType = "com.apple.product-type.bundle.unit-test"; 197 | }; 198 | 940F1B7027656960002802D7 /* AI_Recycle_HelperUITests */ = { 199 | isa = PBXNativeTarget; 200 | buildConfigurationList = 940F1B8127656960002802D7 /* Build configuration list for PBXNativeTarget "AI_Recycle_HelperUITests" */; 201 | buildPhases = ( 202 | 940F1B6D27656960002802D7 /* Sources */, 203 | 940F1B6E27656960002802D7 /* Frameworks */, 204 | 940F1B6F27656960002802D7 /* Resources */, 205 | ); 206 | buildRules = ( 207 | ); 208 | dependencies = ( 209 | 940F1B7327656960002802D7 /* PBXTargetDependency */, 210 | ); 211 | name = AI_Recycle_HelperUITests; 212 | productName = AI_Recycle_HelperUITests; 213 | productReference = 940F1B7127656960002802D7 /* AI_Recycle_HelperUITests.xctest */; 214 | productType = "com.apple.product-type.bundle.ui-testing"; 215 | }; 216 | /* End PBXNativeTarget section */ 217 | 218 | /* Begin PBXProject section */ 219 | 940F1B492765695F002802D7 /* Project object */ = { 220 | isa = PBXProject; 221 | attributes = { 222 | BuildIndependentTargetsInParallel = 1; 223 | LastSwiftUpdateCheck = 1310; 224 | LastUpgradeCheck = 1310; 225 | TargetAttributes = { 226 | 940F1B502765695F002802D7 = { 227 | CreatedOnToolsVersion = 13.1; 228 | }; 229 | 940F1B6627656960002802D7 = { 230 | CreatedOnToolsVersion = 13.1; 231 | TestTargetID = 940F1B502765695F002802D7; 232 | }; 233 | 940F1B7027656960002802D7 = { 234 | CreatedOnToolsVersion = 13.1; 235 | TestTargetID = 940F1B502765695F002802D7; 236 | }; 237 | }; 238 | }; 239 | buildConfigurationList = 940F1B4C2765695F002802D7 /* Build configuration list for PBXProject "AI_Recycle_Helper" */; 240 | compatibilityVersion = "Xcode 13.0"; 241 | developmentRegion = en; 242 | hasScannedForEncodings = 0; 243 | knownRegions = ( 244 | en, 245 | Base, 246 | ); 247 | mainGroup = 940F1B482765695F002802D7; 248 | productRefGroup = 940F1B522765695F002802D7 /* Products */; 249 | projectDirPath = ""; 250 | projectRoot = ""; 251 | targets = ( 252 | 940F1B502765695F002802D7 /* AI_Recycle_Helper */, 253 | 940F1B6627656960002802D7 /* AI_Recycle_HelperTests */, 254 | 940F1B7027656960002802D7 /* AI_Recycle_HelperUITests */, 255 | ); 256 | }; 257 | /* End PBXProject section */ 258 | 259 | /* Begin PBXResourcesBuildPhase section */ 260 | 940F1B4F2765695F002802D7 /* Resources */ = { 261 | isa = PBXResourcesBuildPhase; 262 | buildActionMask = 2147483647; 263 | files = ( 264 | 94DC670B28F3D8CF002F5B32 /* Garbage Disposal.pdf in Resources */, 265 | 940F1B6127656960002802D7 /* LaunchScreen.storyboard in Resources */, 266 | 940F1B5E27656960002802D7 /* Assets.xcassets in Resources */, 267 | 940F1B5C2765695F002802D7 /* Main.storyboard in Resources */, 268 | ); 269 | runOnlyForDeploymentPostprocessing = 0; 270 | }; 271 | 940F1B6527656960002802D7 /* Resources */ = { 272 | isa = PBXResourcesBuildPhase; 273 | buildActionMask = 2147483647; 274 | files = ( 275 | ); 276 | runOnlyForDeploymentPostprocessing = 0; 277 | }; 278 | 940F1B6F27656960002802D7 /* Resources */ = { 279 | isa = PBXResourcesBuildPhase; 280 | buildActionMask = 2147483647; 281 | files = ( 282 | ); 283 | runOnlyForDeploymentPostprocessing = 0; 284 | }; 285 | /* End PBXResourcesBuildPhase section */ 286 | 287 | /* Begin PBXSourcesBuildPhase section */ 288 | 940F1B4D2765695F002802D7 /* Sources */ = { 289 | isa = PBXSourcesBuildPhase; 290 | buildActionMask = 2147483647; 291 | files = ( 292 | 94739705278BBCE30059F015 /* Quiz.swift in Sources */, 293 | 94712BF327F0D85A001054FD /* MainTabBarController.swift in Sources */, 294 | 948EF7B627D541250006DA7F /* FinishQuizViewController.swift in Sources */, 295 | 947396FD278BB1880059F015 /* QuizViewController.swift in Sources */, 296 | 94CF151427B9948D008008DC /* HintViewController.swift in Sources */, 297 | 940F1B552765695F002802D7 /* AppDelegate.swift in Sources */, 298 | 940F1B572765695F002802D7 /* SceneDelegate.swift in Sources */, 299 | 94739703278BB8F70059F015 /* Question.swift in Sources */, 300 | 94A4A98427FA175F0073390C /* AIViewController.swift in Sources */, 301 | 948A09122884DE7100CA0A5B /* AIDetectModel.mlmodel in Sources */, 302 | 947396FF278BB2530059F015 /* HomeViewController.swift in Sources */, 303 | 94DC670928F3D5A8002F5B32 /* PdfViewController.swift in Sources */, 304 | ); 305 | runOnlyForDeploymentPostprocessing = 0; 306 | }; 307 | 940F1B6327656960002802D7 /* Sources */ = { 308 | isa = PBXSourcesBuildPhase; 309 | buildActionMask = 2147483647; 310 | files = ( 311 | 940F1B6C27656960002802D7 /* AI_Recycle_HelperTests.swift in Sources */, 312 | ); 313 | runOnlyForDeploymentPostprocessing = 0; 314 | }; 315 | 940F1B6D27656960002802D7 /* Sources */ = { 316 | isa = PBXSourcesBuildPhase; 317 | buildActionMask = 2147483647; 318 | files = ( 319 | 940F1B7827656960002802D7 /* AI_Recycle_HelperUITestsLaunchTests.swift in Sources */, 320 | 940F1B7627656960002802D7 /* AI_Recycle_HelperUITests.swift in Sources */, 321 | ); 322 | runOnlyForDeploymentPostprocessing = 0; 323 | }; 324 | /* End PBXSourcesBuildPhase section */ 325 | 326 | /* Begin PBXTargetDependency section */ 327 | 940F1B6927656960002802D7 /* PBXTargetDependency */ = { 328 | isa = PBXTargetDependency; 329 | target = 940F1B502765695F002802D7 /* AI_Recycle_Helper */; 330 | targetProxy = 940F1B6827656960002802D7 /* PBXContainerItemProxy */; 331 | }; 332 | 940F1B7327656960002802D7 /* PBXTargetDependency */ = { 333 | isa = PBXTargetDependency; 334 | target = 940F1B502765695F002802D7 /* AI_Recycle_Helper */; 335 | targetProxy = 940F1B7227656960002802D7 /* PBXContainerItemProxy */; 336 | }; 337 | /* End PBXTargetDependency section */ 338 | 339 | /* Begin PBXVariantGroup section */ 340 | 940F1B5A2765695F002802D7 /* Main.storyboard */ = { 341 | isa = PBXVariantGroup; 342 | children = ( 343 | 940F1B5B2765695F002802D7 /* Base */, 344 | ); 345 | name = Main.storyboard; 346 | sourceTree = ""; 347 | }; 348 | 940F1B5F27656960002802D7 /* LaunchScreen.storyboard */ = { 349 | isa = PBXVariantGroup; 350 | children = ( 351 | 940F1B6027656960002802D7 /* Base */, 352 | ); 353 | name = LaunchScreen.storyboard; 354 | sourceTree = ""; 355 | }; 356 | /* End PBXVariantGroup section */ 357 | 358 | /* Begin XCBuildConfiguration section */ 359 | 940F1B7927656960002802D7 /* Debug */ = { 360 | isa = XCBuildConfiguration; 361 | buildSettings = { 362 | ALWAYS_SEARCH_USER_PATHS = NO; 363 | CLANG_ANALYZER_NONNULL = YES; 364 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 365 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; 366 | CLANG_CXX_LIBRARY = "libc++"; 367 | CLANG_ENABLE_MODULES = YES; 368 | CLANG_ENABLE_OBJC_ARC = YES; 369 | CLANG_ENABLE_OBJC_WEAK = YES; 370 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 371 | CLANG_WARN_BOOL_CONVERSION = YES; 372 | CLANG_WARN_COMMA = YES; 373 | CLANG_WARN_CONSTANT_CONVERSION = YES; 374 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 375 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 376 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 377 | CLANG_WARN_EMPTY_BODY = YES; 378 | CLANG_WARN_ENUM_CONVERSION = YES; 379 | CLANG_WARN_INFINITE_RECURSION = YES; 380 | CLANG_WARN_INT_CONVERSION = YES; 381 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 382 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 383 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 384 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 385 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 386 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 387 | CLANG_WARN_STRICT_PROTOTYPES = YES; 388 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 389 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 390 | CLANG_WARN_UNREACHABLE_CODE = YES; 391 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 392 | COPY_PHASE_STRIP = NO; 393 | DEBUG_INFORMATION_FORMAT = dwarf; 394 | ENABLE_STRICT_OBJC_MSGSEND = YES; 395 | ENABLE_TESTABILITY = YES; 396 | GCC_C_LANGUAGE_STANDARD = gnu11; 397 | GCC_DYNAMIC_NO_PIC = NO; 398 | GCC_NO_COMMON_BLOCKS = YES; 399 | GCC_OPTIMIZATION_LEVEL = 0; 400 | GCC_PREPROCESSOR_DEFINITIONS = ( 401 | "DEBUG=1", 402 | "$(inherited)", 403 | ); 404 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 405 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 406 | GCC_WARN_UNDECLARED_SELECTOR = YES; 407 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 408 | GCC_WARN_UNUSED_FUNCTION = YES; 409 | GCC_WARN_UNUSED_VARIABLE = YES; 410 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 411 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 412 | MTL_FAST_MATH = YES; 413 | ONLY_ACTIVE_ARCH = YES; 414 | SDKROOT = iphoneos; 415 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 416 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 417 | }; 418 | name = Debug; 419 | }; 420 | 940F1B7A27656960002802D7 /* Release */ = { 421 | isa = XCBuildConfiguration; 422 | buildSettings = { 423 | ALWAYS_SEARCH_USER_PATHS = NO; 424 | CLANG_ANALYZER_NONNULL = YES; 425 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 426 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; 427 | CLANG_CXX_LIBRARY = "libc++"; 428 | CLANG_ENABLE_MODULES = YES; 429 | CLANG_ENABLE_OBJC_ARC = YES; 430 | CLANG_ENABLE_OBJC_WEAK = YES; 431 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 432 | CLANG_WARN_BOOL_CONVERSION = YES; 433 | CLANG_WARN_COMMA = YES; 434 | CLANG_WARN_CONSTANT_CONVERSION = YES; 435 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 436 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 437 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 438 | CLANG_WARN_EMPTY_BODY = YES; 439 | CLANG_WARN_ENUM_CONVERSION = YES; 440 | CLANG_WARN_INFINITE_RECURSION = YES; 441 | CLANG_WARN_INT_CONVERSION = YES; 442 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 443 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 444 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 445 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 446 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 447 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 448 | CLANG_WARN_STRICT_PROTOTYPES = YES; 449 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 450 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 451 | CLANG_WARN_UNREACHABLE_CODE = YES; 452 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 453 | COPY_PHASE_STRIP = NO; 454 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 455 | ENABLE_NS_ASSERTIONS = NO; 456 | ENABLE_STRICT_OBJC_MSGSEND = YES; 457 | GCC_C_LANGUAGE_STANDARD = gnu11; 458 | GCC_NO_COMMON_BLOCKS = YES; 459 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 460 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 461 | GCC_WARN_UNDECLARED_SELECTOR = YES; 462 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 463 | GCC_WARN_UNUSED_FUNCTION = YES; 464 | GCC_WARN_UNUSED_VARIABLE = YES; 465 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 466 | MTL_ENABLE_DEBUG_INFO = NO; 467 | MTL_FAST_MATH = YES; 468 | SDKROOT = iphoneos; 469 | SWIFT_COMPILATION_MODE = wholemodule; 470 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 471 | VALIDATE_PRODUCT = YES; 472 | }; 473 | name = Release; 474 | }; 475 | 940F1B7C27656960002802D7 /* Debug */ = { 476 | isa = XCBuildConfiguration; 477 | buildSettings = { 478 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 479 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 480 | CODE_SIGN_STYLE = Automatic; 481 | CURRENT_PROJECT_VERSION = 1; 482 | DEVELOPMENT_TEAM = A89VXS433A; 483 | GENERATE_INFOPLIST_FILE = YES; 484 | INFOPLIST_FILE = AI_Recycle_Helper/Info.plist; 485 | INFOPLIST_KEY_CFBundleDisplayName = "Debris!"; 486 | INFOPLIST_KEY_NSCameraUsageDescription = "Debris! needs to access your camera in order to classify the type of garbage"; 487 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 488 | INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; 489 | INFOPLIST_KEY_UIMainStoryboardFile = Main; 490 | INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; 491 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; 492 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 493 | LD_RUNPATH_SEARCH_PATHS = ( 494 | "$(inherited)", 495 | "@executable_path/Frameworks", 496 | ); 497 | MARKETING_VERSION = 1.0; 498 | PRODUCT_BUNDLE_IDENTIFIER = com.rylu.debris; 499 | PRODUCT_NAME = "$(TARGET_NAME)"; 500 | SWIFT_EMIT_LOC_STRINGS = YES; 501 | SWIFT_VERSION = 5.0; 502 | TARGETED_DEVICE_FAMILY = 1; 503 | }; 504 | name = Debug; 505 | }; 506 | 940F1B7D27656960002802D7 /* Release */ = { 507 | isa = XCBuildConfiguration; 508 | buildSettings = { 509 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 510 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 511 | CODE_SIGN_STYLE = Automatic; 512 | CURRENT_PROJECT_VERSION = 1; 513 | DEVELOPMENT_TEAM = A89VXS433A; 514 | GENERATE_INFOPLIST_FILE = YES; 515 | INFOPLIST_FILE = AI_Recycle_Helper/Info.plist; 516 | INFOPLIST_KEY_CFBundleDisplayName = "Debris!"; 517 | INFOPLIST_KEY_NSCameraUsageDescription = "Debris! needs to access your camera in order to classify the type of garbage"; 518 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 519 | INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; 520 | INFOPLIST_KEY_UIMainStoryboardFile = Main; 521 | INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; 522 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; 523 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 524 | LD_RUNPATH_SEARCH_PATHS = ( 525 | "$(inherited)", 526 | "@executable_path/Frameworks", 527 | ); 528 | MARKETING_VERSION = 1.0; 529 | PRODUCT_BUNDLE_IDENTIFIER = com.rylu.debris; 530 | PRODUCT_NAME = "$(TARGET_NAME)"; 531 | SWIFT_EMIT_LOC_STRINGS = YES; 532 | SWIFT_VERSION = 5.0; 533 | TARGETED_DEVICE_FAMILY = 1; 534 | }; 535 | name = Release; 536 | }; 537 | 940F1B7F27656960002802D7 /* Debug */ = { 538 | isa = XCBuildConfiguration; 539 | buildSettings = { 540 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 541 | BUNDLE_LOADER = "$(TEST_HOST)"; 542 | CODE_SIGN_STYLE = Automatic; 543 | CURRENT_PROJECT_VERSION = 1; 544 | DEVELOPMENT_TEAM = A89VXS433A; 545 | GENERATE_INFOPLIST_FILE = YES; 546 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 547 | "LD_MAP_FILE_PATH[arch=*]" = "$(TARGET_TEMP_DIR)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt"; 548 | LD_RUNPATH_SEARCH_PATHS = ( 549 | "$(inherited)", 550 | "@executable_path/Frameworks", 551 | "@loader_path/Frameworks", 552 | ); 553 | MARKETING_VERSION = 1.0; 554 | PRODUCT_BUNDLE_IDENTIFIER = "com.ryanl.AI-Recycle-HelperTests"; 555 | PRODUCT_NAME = "$(TARGET_NAME)"; 556 | SWIFT_EMIT_LOC_STRINGS = NO; 557 | SWIFT_VERSION = 5.0; 558 | TARGETED_DEVICE_FAMILY = "1,2"; 559 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AI_Recycle_Helper.app/AI_Recycle_Helper"; 560 | }; 561 | name = Debug; 562 | }; 563 | 940F1B8027656960002802D7 /* Release */ = { 564 | isa = XCBuildConfiguration; 565 | buildSettings = { 566 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 567 | BUNDLE_LOADER = "$(TEST_HOST)"; 568 | CODE_SIGN_STYLE = Automatic; 569 | CURRENT_PROJECT_VERSION = 1; 570 | DEVELOPMENT_TEAM = A89VXS433A; 571 | GENERATE_INFOPLIST_FILE = YES; 572 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 573 | LD_RUNPATH_SEARCH_PATHS = ( 574 | "$(inherited)", 575 | "@executable_path/Frameworks", 576 | "@loader_path/Frameworks", 577 | ); 578 | MARKETING_VERSION = 1.0; 579 | PRODUCT_BUNDLE_IDENTIFIER = "com.ryanl.AI-Recycle-HelperTests"; 580 | PRODUCT_NAME = "$(TARGET_NAME)"; 581 | SWIFT_EMIT_LOC_STRINGS = NO; 582 | SWIFT_VERSION = 5.0; 583 | TARGETED_DEVICE_FAMILY = "1,2"; 584 | TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AI_Recycle_Helper.app/AI_Recycle_Helper"; 585 | }; 586 | name = Release; 587 | }; 588 | 940F1B8227656960002802D7 /* Debug */ = { 589 | isa = XCBuildConfiguration; 590 | buildSettings = { 591 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 592 | CODE_SIGN_STYLE = Automatic; 593 | CURRENT_PROJECT_VERSION = 1; 594 | DEVELOPMENT_TEAM = A89VXS433A; 595 | GENERATE_INFOPLIST_FILE = YES; 596 | LD_RUNPATH_SEARCH_PATHS = ( 597 | "$(inherited)", 598 | "@executable_path/Frameworks", 599 | "@loader_path/Frameworks", 600 | ); 601 | MARKETING_VERSION = 1.0; 602 | PRODUCT_BUNDLE_IDENTIFIER = "com.ryanl.AI-Recycle-HelperUITests"; 603 | PRODUCT_NAME = "$(TARGET_NAME)"; 604 | SWIFT_EMIT_LOC_STRINGS = NO; 605 | SWIFT_VERSION = 5.0; 606 | TARGETED_DEVICE_FAMILY = "1,2"; 607 | TEST_TARGET_NAME = AI_Recycle_Helper; 608 | }; 609 | name = Debug; 610 | }; 611 | 940F1B8327656960002802D7 /* Release */ = { 612 | isa = XCBuildConfiguration; 613 | buildSettings = { 614 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 615 | CODE_SIGN_STYLE = Automatic; 616 | CURRENT_PROJECT_VERSION = 1; 617 | DEVELOPMENT_TEAM = A89VXS433A; 618 | GENERATE_INFOPLIST_FILE = YES; 619 | LD_RUNPATH_SEARCH_PATHS = ( 620 | "$(inherited)", 621 | "@executable_path/Frameworks", 622 | "@loader_path/Frameworks", 623 | ); 624 | MARKETING_VERSION = 1.0; 625 | PRODUCT_BUNDLE_IDENTIFIER = "com.ryanl.AI-Recycle-HelperUITests"; 626 | PRODUCT_NAME = "$(TARGET_NAME)"; 627 | SWIFT_EMIT_LOC_STRINGS = NO; 628 | SWIFT_VERSION = 5.0; 629 | TARGETED_DEVICE_FAMILY = "1,2"; 630 | TEST_TARGET_NAME = AI_Recycle_Helper; 631 | }; 632 | name = Release; 633 | }; 634 | /* End XCBuildConfiguration section */ 635 | 636 | /* Begin XCConfigurationList section */ 637 | 940F1B4C2765695F002802D7 /* Build configuration list for PBXProject "AI_Recycle_Helper" */ = { 638 | isa = XCConfigurationList; 639 | buildConfigurations = ( 640 | 940F1B7927656960002802D7 /* Debug */, 641 | 940F1B7A27656960002802D7 /* Release */, 642 | ); 643 | defaultConfigurationIsVisible = 0; 644 | defaultConfigurationName = Release; 645 | }; 646 | 940F1B7B27656960002802D7 /* Build configuration list for PBXNativeTarget "AI_Recycle_Helper" */ = { 647 | isa = XCConfigurationList; 648 | buildConfigurations = ( 649 | 940F1B7C27656960002802D7 /* Debug */, 650 | 940F1B7D27656960002802D7 /* Release */, 651 | ); 652 | defaultConfigurationIsVisible = 0; 653 | defaultConfigurationName = Release; 654 | }; 655 | 940F1B7E27656960002802D7 /* Build configuration list for PBXNativeTarget "AI_Recycle_HelperTests" */ = { 656 | isa = XCConfigurationList; 657 | buildConfigurations = ( 658 | 940F1B7F27656960002802D7 /* Debug */, 659 | 940F1B8027656960002802D7 /* Release */, 660 | ); 661 | defaultConfigurationIsVisible = 0; 662 | defaultConfigurationName = Release; 663 | }; 664 | 940F1B8127656960002802D7 /* Build configuration list for PBXNativeTarget "AI_Recycle_HelperUITests" */ = { 665 | isa = XCConfigurationList; 666 | buildConfigurations = ( 667 | 940F1B8227656960002802D7 /* Debug */, 668 | 940F1B8327656960002802D7 /* Release */, 669 | ); 670 | defaultConfigurationIsVisible = 0; 671 | defaultConfigurationName = Release; 672 | }; 673 | /* End XCConfigurationList section */ 674 | }; 675 | rootObject = 940F1B492765695F002802D7 /* Project object */; 676 | } 677 | -------------------------------------------------------------------------------- /AI_Recycle_Helper.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /AI_Recycle_Helper.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /AI_Recycle_Helper.xcodeproj/project.xcworkspace/xcuserdata/ryan.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper.xcodeproj/project.xcworkspace/xcuserdata/ryan.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /AI_Recycle_Helper.xcodeproj/xcuserdata/ryan.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /AI_Recycle_Helper.xcodeproj/xcuserdata/ryan.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | AI_Recycle_Helper.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/AIDetect2.mlmodel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/AIDetect2.mlmodel -------------------------------------------------------------------------------- /AI_Recycle_Helper/AIDetectModel.mlmodel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/AIDetectModel.mlmodel -------------------------------------------------------------------------------- /AI_Recycle_Helper/AIViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AIViewController.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2022-04-03. 6 | // 7 | import UIKit 8 | 9 | 10 | class AIViewController: UIViewController{ 11 | 12 | 13 | @IBOutlet weak var resultText: UILabel! 14 | 15 | @IBOutlet weak var detectImage: UIImageView! 16 | var index = 0 17 | 18 | var results = ["","",""] 19 | var theImage = UIImage() 20 | 21 | override func viewDidLoad() { 22 | super.viewDidLoad() 23 | resultText.text=results[index] 24 | print("the image 3",theImage) 25 | detectImage.image = theImage 26 | defineCatagories() 27 | } 28 | 29 | 30 | @IBAction func lastButtonIsPressed(_ sender: UIButton) { 31 | if (index>0){ 32 | index -= 1 33 | resultText.text=results[index] 34 | } 35 | defineCatagories() 36 | 37 | } 38 | 39 | @IBAction func nextButtonIsPressed(_ sender: UIButton) { 40 | if (index<2){ 41 | index += 1 42 | resultText.text=results[index] 43 | } 44 | defineCatagories() 45 | } 46 | 47 | 48 | var paperBin = ["Paper","Cardboard"] 49 | var glassBin = ["Glass","Ceramics"] 50 | var furniture = ["Table"] 51 | var food = ["Organic"] 52 | var containerBin = ["Metal"] 53 | 54 | func defineCatagories(){ 55 | if self.glassBin.contains(results[index]){ 56 | resultText.text = "Glass: "+results[index] 57 | resultText.textColor = UIColor(red:176.0/255.0, green:176.0/255.0, blue:176.0/255.0, alpha: 1.0) 58 | } 59 | else if(self.containerBin.contains(results[index])){ 60 | resultText.text = "Container: "+results[index] 61 | resultText.textColor = UIColor.blue 62 | } 63 | 64 | else if(self.paperBin.contains(results[index])){ 65 | resultText.text = "Paper: "+results[index] 66 | resultText.textColor = UIColor.orange 67 | } 68 | 69 | else if(self.food.contains(results[index])){ 70 | resultText.text = "Organic: "+results[index] 71 | resultText.textColor = UIColor.green 72 | } 73 | 74 | else if(self.furniture.contains(results[index])){ 75 | resultText.text = "Furniture: "+results[index] 76 | resultText.textColor = UIColor.purple 77 | } 78 | else{ 79 | resultText.text = "Trash: "+results[index] 80 | resultText.textColor = UIColor.label 81 | } 82 | 83 | 84 | } 85 | 86 | 87 | // var animal=["tench, Tinca tinca", "goldfish, Carassius auratus", "great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias", "tiger shark, Galeocerdo cuvieri", "hammerhead, hammerhead shark", "electric ray, crampfish, numbfish, torpedo", "stingray", "cock", "hen", "ostrich, Struthio camelus", "brambling, Fringilla montifringilla", "goldfinch, Carduelis carduelis", "house finch, linnet, Carpodacus mexicanus", "junco, snowbird", "indigo bunting, indigo finch, indigo bird, Passerina cyanea", "robin, American robin, Turdus migratorius", "bulbul", "jay", "magpie", "chickadee", "water ouzel, dipper", "kite", "bald eagle, American eagle, Haliaeetus leucocephalus", "vulture", "great grey owl, great gray owl, Strix nebulosa", "European fire salamander, Salamandra salamandra", "common newt, Triturus vulgaris", "eft", "spotted salamander, Ambystoma maculatum", "axolotl, mud puppy, Ambystoma mexicanum", "bullfrog, Rana catesbeiana", "tree frog, tree-frog", "tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui", "loggerhead, loggerhead turtle, Caretta caretta", "leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea", "mud turtle", "terrapin", "box turtle, box tortoise", "banded gecko", "common iguana, iguana, Iguana iguana", "American chameleon, anole, Anolis carolinensis", "whiptail, whiptail lizard", "agama", "frilled lizard, Chlamydosaurus kingi", "alligator lizard", "Gila monster, Heloderma suspectum", "green lizard, Lacerta viridis", "African chameleon, Chamaeleo chamaeleon", "Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis", "African crocodile, Nile crocodile, Crocodylus niloticus", "American alligator, Alligator mississipiensis", "triceratops", "thunder snake, worm snake, Carphophis amoenus", "ringneck snake, ring-necked snake, ring snake", "hognose snake, puff adder, sand viper", "green snake, grass snake", "king snake, kingsnake", "garter snake, grass snake", "water snake", "vine snake", "night snake, Hypsiglena torquata", "boa constrictor, Constrictor constrictor", "rock python, rock snake, Python sebae", "Indian cobra, Naja naja", "green mamba", "sea snake", "horned viper, cerastes, sand viper, horned asp, Cerastes cornutus", "diamondback, diamondback rattlesnake, Crotalus adamanteus", "sidewinder, horned rattlesnake, Crotalus cerastes", "trilobite", "harvestman, daddy longlegs, Phalangium opilio", "scorpion", "black and gold garden spider, Argiope aurantia", "barn spider, Araneus cavaticus", "garden spider, Aranea diademata", "black widow, Latrodectus mactans", "tarantula", "wolf spider, hunting spider", "tick", "centipede", "black grouse", "ptarmigan", "ruffed grouse, partridge, Bonasa umbellus", "prairie chicken, prairie grouse, prairie fowl", "peacock", "quail", "partridge", "African grey, African gray, Psittacus erithacus", "macaw", "sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita", "lorikeet", "coucal", "bee eater", "hornbill", "hummingbird", "jacamar", "toucan", "drake", "red-breasted merganser, Mergus serrator", "goose", "black swan, Cygnus atratus", "tusker", "echidna, spiny anteater, anteater", "platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus", "wallaby, brush kangaroo", "koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus", "wombat", "jellyfish", "sea anemone, anemone", "brain coral", "flatworm, platyhelminth", "nematode, nematode worm, roundworm", "conch", "snail", "slug", "sea slug, nudibranch", "chiton, coat-of-mail shell, sea cradle, polyplacophore", "chambered nautilus, pearly nautilus, nautilus", "Dungeness crab, Cancer magister", "rock crab, Cancer irroratus", "fiddler crab", "king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica", "American lobster, Northern lobster, Maine lobster, Homarus americanus", "spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish", "crayfish, crawfish, crawdad, crawdaddy", "hermit crab", "isopod", "white stork, Ciconia ciconia", "black stork, Ciconia nigra", "spoonbill", "flamingo", "little blue heron, Egretta caerulea", "American egret, great white heron, Egretta albus", "bittern", "crane", "limpkin, Aramus pictus", "European gallinule, Porphyrio porphyrio", "American coot, marsh hen, mud hen, water hen, Fulica americana", "bustard", "ruddy turnstone, Arenaria interpres", "red-backed sandpiper, dunlin, Erolia alpina", "redshank, Tringa totanus", "dowitcher", "oystercatcher, oyster catcher", "pelican", "king penguin, Aptenodytes patagonica", "albatross, mollymawk", "grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus", "killer whale, killer, orca, grampus, sea wolf, Orcinus orca", "dugong, Dugong dugon", "sea lion", "Chihuahua", "Japanese spaniel", "Maltese dog, Maltese terrier, Maltese", "Pekinese, Pekingese, Peke", "Shih-Tzu", "Blenheim spaniel", "papillon", "toy terrier", "Rhodesian ridgeback", "Afghan hound, Afghan", "basset, basset hound", "beagle", "bloodhound, sleuthhound", "bluetick", "black-and-tan coonhound", "Walker hound, Walker foxhound", "English foxhound", "redbone", "borzoi, Russian wolfhound", "Irish wolfhound", "Italian greyhound", "whippet", "Ibizan hound, Ibizan Podenco", "Norwegian elkhound, elkhound", "otterhound, otter hound", "Saluki, gazelle hound", "Scottish deerhound, deerhound", "Weimaraner", "Staffordshire bullterrier, Staffordshire bull terrier", "American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier", "Bedlington terrier", "Border terrier", "Kerry blue terrier", "Irish terrier", "Norfolk terrier", "Norwich terrier", "Yorkshire terrier", "wire-haired fox terrier", "Lakeland terrier", "Sealyham terrier, Sealyham", "Airedale, Airedale terrier", "cairn, cairn terrier", "Australian terrier", "Dandie Dinmont, Dandie Dinmont terrier", "Boston bull, Boston terrier", "miniature schnauzer", "giant schnauzer", "standard schnauzer", "Scotch terrier, Scottish terrier, Scottie", "Tibetan terrier, chrysanthemum dog", "silky terrier, Sydney silky", "soft-coated wheaten terrier", "West Highland white terrier", "Lhasa, Lhasa apso", "flat-coated retriever", "curly-coated retriever", "golden retriever", "Labrador retriever", "Chesapeake Bay retriever", "German short-haired pointer", "vizsla, Hungarian pointer", "English setter", "Irish setter, red setter", "Gordon setter", "Brittany spaniel", "clumber, clumber spaniel", "English springer, English springer spaniel", "Welsh springer spaniel", "cocker spaniel, English cocker spaniel, cocker", "Sussex spaniel", "Irish water spaniel", "kuvasz", "schipperke", "groenendael", "malinois", "briard", "kelpie", "komondor", "Old English sheepdog, bobtail", "Shetland sheepdog, Shetland sheep dog, Shetland", "collie", "Border collie", "Bouvier des Flandres, Bouviers des Flandres", "Rottweiler", "German shepherd, German shepherd dog, German police dog, alsatian", "Doberman, Doberman pinscher", "miniature pinscher", "Greater Swiss Mountain dog", "Bernese mountain dog", "Appenzeller", "EntleBucher", "boxer", "bull mastiff", "Tibetan mastiff", "French bulldog", "Great Dane", "Saint Bernard, St Bernard", "Eskimo dog, husky", "malamute, malemute, Alaskan malamute", "Siberian husky", "dalmatian, coach dog, carriage dog", "affenpinscher, monkey pinscher, monkey dog", "basenji", "pug, pug-dog", "Leonberg", "Newfoundland, Newfoundland dog", "Great Pyrenees", "Samoyed, Samoyede", "Pomeranian", "chow, chow chow", "keeshond", "Brabancon griffon", "Pembroke, Pembroke Welsh corgi", "Cardigan, Cardigan Welsh corgi", "toy poodle", "miniature poodle", "standard poodle", "Mexican hairless", "timber wolf, grey wolf, gray wolf, Canis lupus", "white wolf, Arctic wolf, Canis lupus tundrarum", "red wolf, maned wolf, Canis rufus, Canis niger", "coyote, prairie wolf, brush wolf, Canis latrans", "dingo, warrigal, warragal, Canis dingo", "dhole, Cuon alpinus", "African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus", "hyena, hyaena", "red fox, Vulpes vulpes", "kit fox, Vulpes macrotis", "Arctic fox, white fox, Alopex lagopus", "grey fox, gray fox, Urocyon cinereoargenteus", "tabby, tabby cat", "tiger cat", "Persian cat", "Siamese cat, Siamese", "Egyptian cat", "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor", "lynx, catamount", "leopard, Panthera pardus", "snow leopard, ounce, Panthera uncia", "jaguar, panther, Panthera onca, Felis onca", "lion, king of beasts, Panthera leo", "tiger, Panthera tigris", "cheetah, chetah, Acinonyx jubatus", "brown bear, bruin, Ursus arctos", "American black bear, black bear, Ursus americanus, Euarctos americanus", "ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus", "sloth bear, Melursus ursinus, Ursus ursinus", "mongoose", "meerkat, mierkat", "tiger beetle", "ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle", "ground beetle, carabid beetle", "long-horned beetle, longicorn, longicorn beetle", "leaf beetle, chrysomelid", "dung beetle", "rhinoceros beetle", "weevil", "fly", "bee", "ant, emmet, pismire", "grasshopper, hopper", "cricket", "walking stick, walkingstick, stick insect", "cockroach, roach", "mantis, mantid", "cicada, cicala", "leafhopper", "lacewing, lacewing fly", "dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", "damselfly", "admiral", "ringlet, ringlet butterfly", "monarch, monarch butterfly, milkweed butterfly, Danaus plexippus", "cabbage butterfly", "sulphur butterfly, sulfur butterfly", "lycaenid, lycaenid butterfly", "starfish, sea star", "sea urchin", "sea cucumber, holothurian", "wood rabbit, cottontail, cottontail rabbit", "hare", "Angora, Angora rabbit", "hamster", "porcupine, hedgehog", "fox squirrel, eastern fox squirrel, Sciurus niger", "marmot", "beaver", "guinea pig, Cavia cobaya", "sorrel", "zebra", "hog, pig, grunter, squealer, Sus scrofa", "wild boar, boar, Sus scrofa", "warthog", "hippopotamus, hippo, river horse, Hippopotamus amphibius", "ox", "water buffalo, water ox, Asiatic buffalo, Bubalus bubalis", "bison", "ram, tup", "bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis", "ibex, Capra ibex", "hartebeest", "impala, Aepyceros melampus", "gazelle", "Arabian camel, dromedary, Camelus dromedarius", "llama", "weasel", "mink", "polecat, fitch, foulmart, foumart, Mustela putorius", "black-footed ferret, ferret, Mustela nigripes", "otter", "skunk, polecat, wood pussy", "badger", "armadillo", "three-toed sloth, ai, Bradypus tridactylus", "orangutan, orang, orangutang, Pongo pygmaeus", "gorilla, Gorilla gorilla", "chimpanzee, chimp, Pan troglodytes", "gibbon, Hylobates lar", "siamang, Hylobates syndactylus, Symphalangus syndactylus", "guenon, guenon monkey", "patas, hussar monkey, Erythrocebus patas", "baboon", "macaque", "langur", "colobus, colobus monkey", "proboscis monkey, Nasalis larvatus", "marmoset", "capuchin, ringtail, Cebus capucinus", "howler monkey, howler", "titi, titi monkey", "spider monkey, Ateles geoffroyi", "squirrel monkey, Saimiri sciureus", "Madagascar cat, ring-tailed lemur, Lemur catta", "indri, indris, Indri indri, Indri brevicaudatus", "Indian elephant, Elephas maximus", "African elephant, Loxodonta africana", "lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens", "giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca", "barracouta, snoek", "eel", "coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch", "rock beauty, Holocanthus tricolor", "anemone fish", "sturgeon", "gar, garfish, garpike, billfish, Lepisosteus osseus", "lionfish", "puffer, pufferfish, blowfish, globefish"] 88 | // var glassBin=["beer bottle","beer glass","coffee mug","red wine","wine bottle","perfume, essence","plate","cup","beaker"] 89 | // var containerBin=["pop bottle, soda bottle","pill bottle"] 90 | // var paperBin=["comic book"] 91 | // var depot=["toilet tissue, toilet paper, bathroom tissue","bath towel","cellular telephone, cellular phone, cellphone, cell, mobile phone","paper towel","nail","worm fence, snake fence, snake-rail fence, Virginia fence","notebook, notebook computer","balloon","space bar","menu","book jacket, dust cover, dust jacket, dust wrapper","teapot"] 92 | // var food=["pizza, pizza pie","meat loaf, meatloaf","hotdog, hot dog, red hot","mashed potato","broccoli","bell pepper","mushroom","banana","pineapple, ananas","strawberry","orange","lemon","jackfruit, jak, jack","custard apple","pomegranate","fig","guacamole", "consomme", "hot pot, hotpot", "trifle", "ice cream, icecream", "ice lolly, lolly, lollipop, popsicle", "French loaf", "bagel, beigel", "pretzel", "cheeseburger", "head cabbage", "cauliflower", "zucchini, courgette", "spaghetti squash", "acorn squash", "butternut squash", "cucumber, cuke", "artichoke, globe artichoke", "cardoon", "Granny Smith", "hay", "carbonara", "chocolate sauce, chocolate syrup", "dough", "potpie", "burrito", "espresso", "eggnog", "alp", "bubble", "cliff, drop, drop-off", "coral reef", "geyser", "lakeside, lakeshore", "promontory, headland, head, foreland", "sandbar, sand bar", "seashore, coast, seacoast, sea-coast", "valley, vale", "volcano", "ballplayer, baseball player", "groom, bridegroom", "scuba diver", "rapeseed", "daisy", "yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", "corn", "acorn", "hip, rose hip, rosehip", "buckeye, horse chestnut, conker", "coral fungus", "agaric", "gyromitra", "stinkhorn, carrion fungus", "earthstar", "hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa", "bolete", "ear, spike, capitulum"] 93 | // var furniture=["desk"] 94 | // 95 | // 96 | // func defineCatagories(){ 97 | // if self.glassBin.contains(results[index]){ 98 | // resultText.text = "Glass: "+results[index] 99 | // resultText.textColor = UIColor(red:176.0/255.0, green:176.0/255.0, blue:176.0/255.0, alpha: 1.0) 100 | // } 101 | // else if(self.containerBin.contains(results[index])){ 102 | // resultText.text = "Container: "+results[index] 103 | // resultText.textColor = UIColor.blue 104 | // } 105 | // 106 | // else if(self.paperBin.contains(results[index])){ 107 | // resultText.text = "Paper: "+results[index] 108 | // resultText.textColor = UIColor.orange 109 | // } 110 | // 111 | // else if(self.food.contains(results[index])){ 112 | // resultText.text = "Organic: "+results[index] 113 | // resultText.textColor = UIColor.green 114 | // } 115 | // 116 | // else if(self.furniture.contains(results[index])){ 117 | // resultText.text = "Furniture: "+results[index] 118 | // resultText.textColor = UIColor.purple 119 | // } 120 | // else if(self.animal.contains(results[index])){ 121 | // resultText.text = "Living Thing: "+results[index] 122 | // resultText.textColor = UIColor.red 123 | // } 124 | // else{ 125 | // resultText.text = "Trash: "+results[index] 126 | // resultText.textColor = UIColor.black 127 | // } 128 | // 129 | // 130 | // } 131 | } 132 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/AiDetectViewController_Remove.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2021-12-11. 6 | // 7 | 8 | 9 | import UIKit 10 | import CoreML 11 | import Vision 12 | import Social 13 | 14 | class AiDetectViewController_Remove: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 15 | 16 | 17 | @IBOutlet weak var myResult: UILabel! 18 | 19 | @IBOutlet weak var nextButton: UIButton! 20 | 21 | var r = ["","","","",""] 22 | 23 | 24 | 25 | var animal=["tench, Tinca tinca", "goldfish, Carassius auratus", "great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias", "tiger shark, Galeocerdo cuvieri", "hammerhead, hammerhead shark", "electric ray, crampfish, numbfish, torpedo", "stingray", "cock", "hen", "ostrich, Struthio camelus", "brambling, Fringilla montifringilla", "goldfinch, Carduelis carduelis", "house finch, linnet, Carpodacus mexicanus", "junco, snowbird", "indigo bunting, indigo finch, indigo bird, Passerina cyanea", "robin, American robin, Turdus migratorius", "bulbul", "jay", "magpie", "chickadee", "water ouzel, dipper", "kite", "bald eagle, American eagle, Haliaeetus leucocephalus", "vulture", "great grey owl, great gray owl, Strix nebulosa", "European fire salamander, Salamandra salamandra", "common newt, Triturus vulgaris", "eft", "spotted salamander, Ambystoma maculatum", "axolotl, mud puppy, Ambystoma mexicanum", "bullfrog, Rana catesbeiana", "tree frog, tree-frog", "tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui", "loggerhead, loggerhead turtle, Caretta caretta", "leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea", "mud turtle", "terrapin", "box turtle, box tortoise", "banded gecko", "common iguana, iguana, Iguana iguana", "American chameleon, anole, Anolis carolinensis", "whiptail, whiptail lizard", "agama", "frilled lizard, Chlamydosaurus kingi", "alligator lizard", "Gila monster, Heloderma suspectum", "green lizard, Lacerta viridis", "African chameleon, Chamaeleo chamaeleon", "Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis", "African crocodile, Nile crocodile, Crocodylus niloticus", "American alligator, Alligator mississipiensis", "triceratops", "thunder snake, worm snake, Carphophis amoenus", "ringneck snake, ring-necked snake, ring snake", "hognose snake, puff adder, sand viper", "green snake, grass snake", "king snake, kingsnake", "garter snake, grass snake", "water snake", "vine snake", "night snake, Hypsiglena torquata", "boa constrictor, Constrictor constrictor", "rock python, rock snake, Python sebae", "Indian cobra, Naja naja", "green mamba", "sea snake", "horned viper, cerastes, sand viper, horned asp, Cerastes cornutus", "diamondback, diamondback rattlesnake, Crotalus adamanteus", "sidewinder, horned rattlesnake, Crotalus cerastes", "trilobite", "harvestman, daddy longlegs, Phalangium opilio", "scorpion", "black and gold garden spider, Argiope aurantia", "barn spider, Araneus cavaticus", "garden spider, Aranea diademata", "black widow, Latrodectus mactans", "tarantula", "wolf spider, hunting spider", "tick", "centipede", "black grouse", "ptarmigan", "ruffed grouse, partridge, Bonasa umbellus", "prairie chicken, prairie grouse, prairie fowl", "peacock", "quail", "partridge", "African grey, African gray, Psittacus erithacus", "macaw", "sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita", "lorikeet", "coucal", "bee eater", "hornbill", "hummingbird", "jacamar", "toucan", "drake", "red-breasted merganser, Mergus serrator", "goose", "black swan, Cygnus atratus", "tusker", "echidna, spiny anteater, anteater", "platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus", "wallaby, brush kangaroo", "koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus", "wombat", "jellyfish", "sea anemone, anemone", "brain coral", "flatworm, platyhelminth", "nematode, nematode worm, roundworm", "conch", "snail", "slug", "sea slug, nudibranch", "chiton, coat-of-mail shell, sea cradle, polyplacophore", "chambered nautilus, pearly nautilus, nautilus", "Dungeness crab, Cancer magister", "rock crab, Cancer irroratus", "fiddler crab", "king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica", "American lobster, Northern lobster, Maine lobster, Homarus americanus", "spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish", "crayfish, crawfish, crawdad, crawdaddy", "hermit crab", "isopod", "white stork, Ciconia ciconia", "black stork, Ciconia nigra", "spoonbill", "flamingo", "little blue heron, Egretta caerulea", "American egret, great white heron, Egretta albus", "bittern", "crane", "limpkin, Aramus pictus", "European gallinule, Porphyrio porphyrio", "American coot, marsh hen, mud hen, water hen, Fulica americana", "bustard", "ruddy turnstone, Arenaria interpres", "red-backed sandpiper, dunlin, Erolia alpina", "redshank, Tringa totanus", "dowitcher", "oystercatcher, oyster catcher", "pelican", "king penguin, Aptenodytes patagonica", "albatross, mollymawk", "grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus", "killer whale, killer, orca, grampus, sea wolf, Orcinus orca", "dugong, Dugong dugon", "sea lion", "Chihuahua", "Japanese spaniel", "Maltese dog, Maltese terrier, Maltese", "Pekinese, Pekingese, Peke", "Shih-Tzu", "Blenheim spaniel", "papillon", "toy terrier", "Rhodesian ridgeback", "Afghan hound, Afghan", "basset, basset hound", "beagle", "bloodhound, sleuthhound", "bluetick", "black-and-tan coonhound", "Walker hound, Walker foxhound", "English foxhound", "redbone", "borzoi, Russian wolfhound", "Irish wolfhound", "Italian greyhound", "whippet", "Ibizan hound, Ibizan Podenco", "Norwegian elkhound, elkhound", "otterhound, otter hound", "Saluki, gazelle hound", "Scottish deerhound, deerhound", "Weimaraner", "Staffordshire bullterrier, Staffordshire bull terrier", "American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier", "Bedlington terrier", "Border terrier", "Kerry blue terrier", "Irish terrier", "Norfolk terrier", "Norwich terrier", "Yorkshire terrier", "wire-haired fox terrier", "Lakeland terrier", "Sealyham terrier, Sealyham", "Airedale, Airedale terrier", "cairn, cairn terrier", "Australian terrier", "Dandie Dinmont, Dandie Dinmont terrier", "Boston bull, Boston terrier", "miniature schnauzer", "giant schnauzer", "standard schnauzer", "Scotch terrier, Scottish terrier, Scottie", "Tibetan terrier, chrysanthemum dog", "silky terrier, Sydney silky", "soft-coated wheaten terrier", "West Highland white terrier", "Lhasa, Lhasa apso", "flat-coated retriever", "curly-coated retriever", "golden retriever", "Labrador retriever", "Chesapeake Bay retriever", "German short-haired pointer", "vizsla, Hungarian pointer", "English setter", "Irish setter, red setter", "Gordon setter", "Brittany spaniel", "clumber, clumber spaniel", "English springer, English springer spaniel", "Welsh springer spaniel", "cocker spaniel, English cocker spaniel, cocker", "Sussex spaniel", "Irish water spaniel", "kuvasz", "schipperke", "groenendael", "malinois", "briard", "kelpie", "komondor", "Old English sheepdog, bobtail", "Shetland sheepdog, Shetland sheep dog, Shetland", "collie", "Border collie", "Bouvier des Flandres, Bouviers des Flandres", "Rottweiler", "German shepherd, German shepherd dog, German police dog, alsatian", "Doberman, Doberman pinscher", "miniature pinscher", "Greater Swiss Mountain dog", "Bernese mountain dog", "Appenzeller", "EntleBucher", "boxer", "bull mastiff", "Tibetan mastiff", "French bulldog", "Great Dane", "Saint Bernard, St Bernard", "Eskimo dog, husky", "malamute, malemute, Alaskan malamute", "Siberian husky", "dalmatian, coach dog, carriage dog", "affenpinscher, monkey pinscher, monkey dog", "basenji", "pug, pug-dog", "Leonberg", "Newfoundland, Newfoundland dog", "Great Pyrenees", "Samoyed, Samoyede", "Pomeranian", "chow, chow chow", "keeshond", "Brabancon griffon", "Pembroke, Pembroke Welsh corgi", "Cardigan, Cardigan Welsh corgi", "toy poodle", "miniature poodle", "standard poodle", "Mexican hairless", "timber wolf, grey wolf, gray wolf, Canis lupus", "white wolf, Arctic wolf, Canis lupus tundrarum", "red wolf, maned wolf, Canis rufus, Canis niger", "coyote, prairie wolf, brush wolf, Canis latrans", "dingo, warrigal, warragal, Canis dingo", "dhole, Cuon alpinus", "African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus", "hyena, hyaena", "red fox, Vulpes vulpes", "kit fox, Vulpes macrotis", "Arctic fox, white fox, Alopex lagopus", "grey fox, gray fox, Urocyon cinereoargenteus", "tabby, tabby cat", "tiger cat", "Persian cat", "Siamese cat, Siamese", "Egyptian cat", "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor", "lynx, catamount", "leopard, Panthera pardus", "snow leopard, ounce, Panthera uncia", "jaguar, panther, Panthera onca, Felis onca", "lion, king of beasts, Panthera leo", "tiger, Panthera tigris", "cheetah, chetah, Acinonyx jubatus", "brown bear, bruin, Ursus arctos", "American black bear, black bear, Ursus americanus, Euarctos americanus", "ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus", "sloth bear, Melursus ursinus, Ursus ursinus", "mongoose", "meerkat, mierkat", "tiger beetle", "ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle", "ground beetle, carabid beetle", "long-horned beetle, longicorn, longicorn beetle", "leaf beetle, chrysomelid", "dung beetle", "rhinoceros beetle", "weevil", "fly", "bee", "ant, emmet, pismire", "grasshopper, hopper", "cricket", "walking stick, walkingstick, stick insect", "cockroach, roach", "mantis, mantid", "cicada, cicala", "leafhopper", "lacewing, lacewing fly", "dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk", "damselfly", "admiral", "ringlet, ringlet butterfly", "monarch, monarch butterfly, milkweed butterfly, Danaus plexippus", "cabbage butterfly", "sulphur butterfly, sulfur butterfly", "lycaenid, lycaenid butterfly", "starfish, sea star", "sea urchin", "sea cucumber, holothurian", "wood rabbit, cottontail, cottontail rabbit", "hare", "Angora, Angora rabbit", "hamster", "porcupine, hedgehog", "fox squirrel, eastern fox squirrel, Sciurus niger", "marmot", "beaver", "guinea pig, Cavia cobaya", "sorrel", "zebra", "hog, pig, grunter, squealer, Sus scrofa", "wild boar, boar, Sus scrofa", "warthog", "hippopotamus, hippo, river horse, Hippopotamus amphibius", "ox", "water buffalo, water ox, Asiatic buffalo, Bubalus bubalis", "bison", "ram, tup", "bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis", "ibex, Capra ibex", "hartebeest", "impala, Aepyceros melampus", "gazelle", "Arabian camel, dromedary, Camelus dromedarius", "llama", "weasel", "mink", "polecat, fitch, foulmart, foumart, Mustela putorius", "black-footed ferret, ferret, Mustela nigripes", "otter", "skunk, polecat, wood pussy", "badger", "armadillo", "three-toed sloth, ai, Bradypus tridactylus", "orangutan, orang, orangutang, Pongo pygmaeus", "gorilla, Gorilla gorilla", "chimpanzee, chimp, Pan troglodytes", "gibbon, Hylobates lar", "siamang, Hylobates syndactylus, Symphalangus syndactylus", "guenon, guenon monkey", "patas, hussar monkey, Erythrocebus patas", "baboon", "macaque", "langur", "colobus, colobus monkey", "proboscis monkey, Nasalis larvatus", "marmoset", "capuchin, ringtail, Cebus capucinus", "howler monkey, howler", "titi, titi monkey", "spider monkey, Ateles geoffroyi", "squirrel monkey, Saimiri sciureus", "Madagascar cat, ring-tailed lemur, Lemur catta", "indri, indris, Indri indri, Indri brevicaudatus", "Indian elephant, Elephas maximus", "African elephant, Loxodonta africana", "lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens", "giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca", "barracouta, snoek", "eel", "coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch", "rock beauty, Holocanthus tricolor", "anemone fish", "sturgeon", "gar, garfish, garpike, billfish, Lepisosteus osseus", "lionfish", "puffer, pufferfish, blowfish, globefish"] 26 | var glassBin=["beer bottle","beer glass","coffee mug","red wine","wine bottle","perfume, essence","plate","cup","beaker"] 27 | var containerBin=["pop bottle, soda bottle","pill bottle"] 28 | var paperBin=["comic book"] 29 | var depot=["toilet tissue, toilet paper, bathroom tissue","bath towel","cellular telephone, cellular phone, cellphone, cell, mobile phone","paper towel","nail","worm fence, snake fence, snake-rail fence, Virginia fence","notebook, notebook computer","balloon","space bar","menu","book jacket, dust cover, dust jacket, dust wrapper","teapot"] 30 | var food=["pizza, pizza pie","meat loaf, meatloaf","hotdog, hot dog, red hot","mashed potato","broccoli","bell pepper","mushroom","banana","pineapple, ananas","strawberry","orange","lemon","jackfruit, jak, jack","custard apple","pomegranate","fig","guacamole", "consomme", "hot pot, hotpot", "trifle", "ice cream, icecream", "ice lolly, lolly, lollipop, popsicle", "French loaf", "bagel, beigel", "pretzel", "cheeseburger", "head cabbage", "cauliflower", "zucchini, courgette", "spaghetti squash", "acorn squash", "butternut squash", "cucumber, cuke", "artichoke, globe artichoke", "cardoon", "Granny Smith", "hay", "carbonara", "chocolate sauce, chocolate syrup", "dough", "potpie", "burrito", "espresso", "eggnog", "alp", "bubble", "cliff, drop, drop-off", "coral reef", "geyser", "lakeside, lakeshore", "promontory, headland, head, foreland", "sandbar, sand bar", "seashore, coast, seacoast, sea-coast", "valley, vale", "volcano", "ballplayer, baseball player", "groom, bridegroom", "scuba diver", "rapeseed", "daisy", "yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum", "corn", "acorn", "hip, rose hip, rosehip", "buckeye, horse chestnut, conker", "coral fungus", "agaric", "gyromitra", "stinkhorn, carrion fungus", "earthstar", "hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa", "bolete", "ear, spike, capitulum"] 31 | var furniture=["desk"] 32 | 33 | @IBOutlet weak var photoImageView: UIImageView! 34 | 35 | var classificationResults : [VNClassificationObservation] = [] 36 | let imagePicker = UIImagePickerController() 37 | 38 | override func viewDidLoad() { 39 | super.viewDidLoad() 40 | myResult.text=" " 41 | imagePicker.delegate = self 42 | self.nextButton.alpha=0 43 | self.view.backgroundColor=UIColor.white 44 | nextButton.titleLabel?.font=UIFont.systemFont(ofSize:30 ,weight: .medium) 45 | } 46 | 47 | func detect(image: CIImage) { 48 | 49 | // Load the ML model through its generated class 50 | guard let model = try? VNCoreMLModel(for: Inceptionv3().model) else { 51 | fatalError("can't load ML model") 52 | } 53 | 54 | let request = VNCoreMLRequest(model: model) { request, error in 55 | guard let results = request.results as? [VNClassificationObservation], 56 | let topResult = results.first 57 | 58 | else { 59 | fatalError("unexpected result type from VNCoreMLRequest") 60 | } 61 | self.nextButton.isEnabled=true 62 | self.nextButton.alpha=1 63 | 64 | 65 | //print("first: \(results[0].identifier)") 66 | //print("sec: \(results[1].identifier)") 67 | //print("third \(results[2].identifier)") 68 | for i in 0...4{ 69 | self.r[i] = results[i].identifier 70 | } 71 | 72 | 73 | self.defineCatagories(nthResult:self.r[0]); 74 | // print(topResult) //results 75 | // print(topResult.identifier) 76 | //print(type(of:results[1])) 77 | // print(type(of:topResult)) 78 | 79 | } 80 | 81 | let handler = VNImageRequestHandler(ciImage: image) 82 | 83 | do { 84 | try handler.perform([request]) 85 | } 86 | catch { 87 | print(error) 88 | } 89 | } 90 | 91 | func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 92 | 93 | if let image = info[.originalImage] as? UIImage { 94 | 95 | self.photoImageView.image = image 96 | self.imagePicker.dismiss(animated: true, completion: nil) 97 | guard let ciImage = CIImage(image: image) else { 98 | fatalError("couldn't convert uiimage to CIImage") 99 | } 100 | self.detect(image: ciImage) 101 | } 102 | } 103 | 104 | 105 | // parameters: nthResult garbagesCatas 106 | func defineCatagories(nthResult:String){ 107 | self.myResult.text=nthResult 108 | if self.glassBin.contains(nthResult){ 109 | DispatchQueue.main.async { 110 | self.navigationItem.title = "Result \(self.count%5+1): Glass" 111 | //self.navigationItem.titleTextAttributes= 112 | //self.navigationController?.navigationBar.barTintColor = UIColor(red:176, green:176, blue:176, alpha: 1) 113 | self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor(red:176.0/255.0, green:176.0/255.0, blue:176.0/255.0, alpha: 1.0)] 114 | //self.navigationController?.navigationBar.isTranslucent = false 115 | } 116 | } 117 | else if self.containerBin.contains(nthResult){ 118 | DispatchQueue.main.async { 119 | self.navigationItem.title = "Result \(self.count%5+1): Container" 120 | //self.navigationController?.navigationBar.barTintColor = UIColor.blue 121 | self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.blue] 122 | //self.navigationController?.navigationBar.isTranslucent = false 123 | } 124 | } 125 | else if self.paperBin.contains(nthResult){ 126 | 127 | DispatchQueue.main.async { 128 | self.navigationItem.title = "Result \(self.count%5+1): Paper" 129 | //self.navigationController?.navigationBar.barTintColor = UIColor.yellow 130 | self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.orange] 131 | //self.navigationController?.navigationBar.isTranslucent = false 132 | } 133 | } 134 | else if self.food.contains(nthResult){ 135 | DispatchQueue.main.async { 136 | self.navigationItem.title = "Result \(self.count%5+1): Food" 137 | //self.navigationController?.navigationBar.barTintColor = UIColor.green 138 | self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.green] 139 | //self.navigationController?.navigationBar.isTranslucent = false 140 | } 141 | }else if self.furniture.contains(nthResult){ 142 | DispatchQueue.main.async { 143 | self.navigationItem.title = "Result \(self.count%5+1): Furniture" 144 | //self.navigationController?.navigationBar.barTintColor = UIColor.green 145 | self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.purple] 146 | //self.navigationController?.navigationBar.isTranslucent = false 147 | } 148 | } 149 | else if self.animal.contains(nthResult){ 150 | DispatchQueue.main.async { 151 | self.navigationItem.title = "Result \(self.count%5+1): Living Thing" 152 | self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.red] 153 | } 154 | } 155 | else{ 156 | DispatchQueue.main.async { 157 | self.navigationItem.title = "Result \(self.count%5+1): Trash" 158 | //self.navigationController?.navigationBar.backgroundColor = UIColor.black 159 | self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor : UIColor.black] 160 | // self.navigationController?.navigationBar.isTranslucent = false 161 | } 162 | } 163 | 164 | } 165 | 166 | 167 | func noResult(){ 168 | var imageView : UIImageView 169 | imageView = UIImageView(frame:CGRect(x: 10, y: 50, width: 100, height: 300)); 170 | imageView.image = UIImage(named:"Q6.jpg") 171 | self.view.addSubview(imageView) 172 | } 173 | 174 | 175 | var count=0 176 | @IBAction func nextButtonPressed(_ sender: UIButton) { 177 | 178 | /* 179 | print("1: \(self.r1).") 180 | print("2: \(self.r2).") 181 | print("3: \(self.r3).") 182 | */ 183 | count+=1 184 | self.defineCatagories(nthResult:self.r[count%5]) 185 | 186 | 187 | 188 | } 189 | 190 | @IBAction func cameraIsTapped(_ sender: UIBarButtonItem) { 191 | openCamers() 192 | // self.view.backgroundColor=UIColor.white 193 | } 194 | 195 | func openCamers(){ 196 | self.imagePicker.sourceType = .camera 197 | self.imagePicker.allowsEditing = false 198 | present(imagePicker, animated: true, completion: nil) 199 | } 200 | } 201 | 202 | fileprivate func convertFromUIImagePickerControllerInfoKey(_ input: UIImagePickerController.InfoKey) -> String { 203 | return input.rawValue 204 | } 205 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2021-12-11. 6 | // 7 | 8 | import UIKit 9 | 10 | @main 11 | class AppDelegate: UIResponder, UIApplicationDelegate { 12 | 13 | 14 | 15 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 16 | // Override point for customization after application launch. 17 | return true 18 | } 19 | 20 | // MARK: UISceneSession Lifecycle 21 | 22 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { 23 | // Called when a new scene session is being created. 24 | // Use this method to select a configuration to create the new scene with. 25 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) 26 | } 27 | 28 | func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { 29 | // Called when the user discards a scene session. 30 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. 31 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return. 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/100.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/1024.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/114.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/120.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/128.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/144.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/152.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/16.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/167.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/172.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/172.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/180.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/196.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/196.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/20.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/216.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/216.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/256.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/29.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/32.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/40.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/48.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/50.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/512.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/55.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/57.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/58.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/60.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/64.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/72.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/76.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/80.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/87.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/88.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "40.png", 5 | "idiom" : "iphone", 6 | "scale" : "2x", 7 | "size" : "20x20" 8 | }, 9 | { 10 | "filename" : "60.png", 11 | "idiom" : "iphone", 12 | "scale" : "3x", 13 | "size" : "20x20" 14 | }, 15 | { 16 | "filename" : "29.png", 17 | "idiom" : "iphone", 18 | "scale" : "1x", 19 | "size" : "29x29" 20 | }, 21 | { 22 | "filename" : "58.png", 23 | "idiom" : "iphone", 24 | "scale" : "2x", 25 | "size" : "29x29" 26 | }, 27 | { 28 | "filename" : "87.png", 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "29x29" 32 | }, 33 | { 34 | "filename" : "80.png", 35 | "idiom" : "iphone", 36 | "scale" : "2x", 37 | "size" : "40x40" 38 | }, 39 | { 40 | "filename" : "120.png", 41 | "idiom" : "iphone", 42 | "scale" : "3x", 43 | "size" : "40x40" 44 | }, 45 | { 46 | "filename" : "57.png", 47 | "idiom" : "iphone", 48 | "scale" : "1x", 49 | "size" : "57x57" 50 | }, 51 | { 52 | "filename" : "114.png", 53 | "idiom" : "iphone", 54 | "scale" : "2x", 55 | "size" : "57x57" 56 | }, 57 | { 58 | "filename" : "120.png", 59 | "idiom" : "iphone", 60 | "scale" : "2x", 61 | "size" : "60x60" 62 | }, 63 | { 64 | "filename" : "180.png", 65 | "idiom" : "iphone", 66 | "scale" : "3x", 67 | "size" : "60x60" 68 | }, 69 | { 70 | "filename" : "20.png", 71 | "idiom" : "ipad", 72 | "scale" : "1x", 73 | "size" : "20x20" 74 | }, 75 | { 76 | "filename" : "40.png", 77 | "idiom" : "ipad", 78 | "scale" : "2x", 79 | "size" : "20x20" 80 | }, 81 | { 82 | "filename" : "29.png", 83 | "idiom" : "ipad", 84 | "scale" : "1x", 85 | "size" : "29x29" 86 | }, 87 | { 88 | "filename" : "58.png", 89 | "idiom" : "ipad", 90 | "scale" : "2x", 91 | "size" : "29x29" 92 | }, 93 | { 94 | "filename" : "40.png", 95 | "idiom" : "ipad", 96 | "scale" : "1x", 97 | "size" : "40x40" 98 | }, 99 | { 100 | "filename" : "80.png", 101 | "idiom" : "ipad", 102 | "scale" : "2x", 103 | "size" : "40x40" 104 | }, 105 | { 106 | "filename" : "50.png", 107 | "idiom" : "ipad", 108 | "scale" : "1x", 109 | "size" : "50x50" 110 | }, 111 | { 112 | "filename" : "100.png", 113 | "idiom" : "ipad", 114 | "scale" : "2x", 115 | "size" : "50x50" 116 | }, 117 | { 118 | "filename" : "72.png", 119 | "idiom" : "ipad", 120 | "scale" : "1x", 121 | "size" : "72x72" 122 | }, 123 | { 124 | "filename" : "144.png", 125 | "idiom" : "ipad", 126 | "scale" : "2x", 127 | "size" : "72x72" 128 | }, 129 | { 130 | "filename" : "76.png", 131 | "idiom" : "ipad", 132 | "scale" : "1x", 133 | "size" : "76x76" 134 | }, 135 | { 136 | "filename" : "152.png", 137 | "idiom" : "ipad", 138 | "scale" : "2x", 139 | "size" : "76x76" 140 | }, 141 | { 142 | "filename" : "167.png", 143 | "idiom" : "ipad", 144 | "scale" : "2x", 145 | "size" : "83.5x83.5" 146 | }, 147 | { 148 | "filename" : "1024.png", 149 | "idiom" : "ios-marketing", 150 | "scale" : "1x", 151 | "size" : "1024x1024" 152 | }, 153 | { 154 | "filename" : "16.png", 155 | "idiom" : "mac", 156 | "scale" : "1x", 157 | "size" : "16x16" 158 | }, 159 | { 160 | "filename" : "32.png", 161 | "idiom" : "mac", 162 | "scale" : "2x", 163 | "size" : "16x16" 164 | }, 165 | { 166 | "filename" : "32.png", 167 | "idiom" : "mac", 168 | "scale" : "1x", 169 | "size" : "32x32" 170 | }, 171 | { 172 | "filename" : "64.png", 173 | "idiom" : "mac", 174 | "scale" : "2x", 175 | "size" : "32x32" 176 | }, 177 | { 178 | "filename" : "128.png", 179 | "idiom" : "mac", 180 | "scale" : "1x", 181 | "size" : "128x128" 182 | }, 183 | { 184 | "filename" : "256.png", 185 | "idiom" : "mac", 186 | "scale" : "2x", 187 | "size" : "128x128" 188 | }, 189 | { 190 | "filename" : "256.png", 191 | "idiom" : "mac", 192 | "scale" : "1x", 193 | "size" : "256x256" 194 | }, 195 | { 196 | "filename" : "512.png", 197 | "idiom" : "mac", 198 | "scale" : "2x", 199 | "size" : "256x256" 200 | }, 201 | { 202 | "filename" : "512.png", 203 | "idiom" : "mac", 204 | "scale" : "1x", 205 | "size" : "512x512" 206 | }, 207 | { 208 | "filename" : "1024.png", 209 | "idiom" : "mac", 210 | "scale" : "2x", 211 | "size" : "512x512" 212 | }, 213 | { 214 | "filename" : "48.png", 215 | "idiom" : "watch", 216 | "role" : "notificationCenter", 217 | "scale" : "2x", 218 | "size" : "24x24", 219 | "subtype" : "38mm" 220 | }, 221 | { 222 | "filename" : "55.png", 223 | "idiom" : "watch", 224 | "role" : "notificationCenter", 225 | "scale" : "2x", 226 | "size" : "27.5x27.5", 227 | "subtype" : "42mm" 228 | }, 229 | { 230 | "filename" : "58.png", 231 | "idiom" : "watch", 232 | "role" : "companionSettings", 233 | "scale" : "2x", 234 | "size" : "29x29" 235 | }, 236 | { 237 | "filename" : "87.png", 238 | "idiom" : "watch", 239 | "role" : "companionSettings", 240 | "scale" : "3x", 241 | "size" : "29x29" 242 | }, 243 | { 244 | "idiom" : "watch", 245 | "role" : "notificationCenter", 246 | "scale" : "2x", 247 | "size" : "33x33", 248 | "subtype" : "45mm" 249 | }, 250 | { 251 | "filename" : "80.png", 252 | "idiom" : "watch", 253 | "role" : "appLauncher", 254 | "scale" : "2x", 255 | "size" : "40x40", 256 | "subtype" : "38mm" 257 | }, 258 | { 259 | "filename" : "88.png", 260 | "idiom" : "watch", 261 | "role" : "appLauncher", 262 | "scale" : "2x", 263 | "size" : "44x44", 264 | "subtype" : "40mm" 265 | }, 266 | { 267 | "idiom" : "watch", 268 | "role" : "appLauncher", 269 | "scale" : "2x", 270 | "size" : "46x46", 271 | "subtype" : "41mm" 272 | }, 273 | { 274 | "filename" : "100.png", 275 | "idiom" : "watch", 276 | "role" : "appLauncher", 277 | "scale" : "2x", 278 | "size" : "50x50", 279 | "subtype" : "44mm" 280 | }, 281 | { 282 | "idiom" : "watch", 283 | "role" : "appLauncher", 284 | "scale" : "2x", 285 | "size" : "51x51", 286 | "subtype" : "45mm" 287 | }, 288 | { 289 | "idiom" : "watch", 290 | "role" : "appLauncher", 291 | "scale" : "2x", 292 | "size" : "54x54", 293 | "subtype" : "49mm" 294 | }, 295 | { 296 | "filename" : "172.png", 297 | "idiom" : "watch", 298 | "role" : "quickLook", 299 | "scale" : "2x", 300 | "size" : "86x86", 301 | "subtype" : "38mm" 302 | }, 303 | { 304 | "filename" : "196.png", 305 | "idiom" : "watch", 306 | "role" : "quickLook", 307 | "scale" : "2x", 308 | "size" : "98x98", 309 | "subtype" : "42mm" 310 | }, 311 | { 312 | "filename" : "216.png", 313 | "idiom" : "watch", 314 | "role" : "quickLook", 315 | "scale" : "2x", 316 | "size" : "108x108", 317 | "subtype" : "44mm" 318 | }, 319 | { 320 | "idiom" : "watch", 321 | "role" : "quickLook", 322 | "scale" : "2x", 323 | "size" : "117x117", 324 | "subtype" : "45mm" 325 | }, 326 | { 327 | "idiom" : "watch", 328 | "role" : "quickLook", 329 | "scale" : "2x", 330 | "size" : "129x129", 331 | "subtype" : "49mm" 332 | }, 333 | { 334 | "filename" : "1024.png", 335 | "idiom" : "watch-marketing", 336 | "scale" : "1x", 337 | "size" : "1024x1024" 338 | } 339 | ], 340 | "info" : { 341 | "author" : "xcode", 342 | "version" : 1 343 | } 344 | } 345 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/ButtonBorderColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "display-p3", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.000", 9 | "green" : "0.000", 10 | "red" : "0.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "light" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "display-p3", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.000", 27 | "green" : "0.000", 28 | "red" : "0.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | }, 33 | { 34 | "appearances" : [ 35 | { 36 | "appearance" : "luminosity", 37 | "value" : "dark" 38 | } 39 | ], 40 | "color" : { 41 | "color-space" : "display-p3", 42 | "components" : { 43 | "alpha" : "1.000", 44 | "blue" : "0.500", 45 | "green" : "0.500", 46 | "red" : "0.494" 47 | } 48 | }, 49 | "idiom" : "universal" 50 | } 51 | ], 52 | "info" : { 53 | "author" : "xcode", 54 | "version" : 1 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/MainColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "1.000", 9 | "green" : "1.000", 10 | "red" : "1.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "light" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "1.000", 27 | "green" : "1.000", 28 | "red" : "1.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | }, 33 | { 34 | "appearances" : [ 35 | { 36 | "appearance" : "luminosity", 37 | "value" : "dark" 38 | } 39 | ], 40 | "color" : { 41 | "color-space" : "extended-gray", 42 | "components" : { 43 | "alpha" : "1.000", 44 | "white" : "0.150" 45 | } 46 | }, 47 | "idiom" : "universal" 48 | } 49 | ], 50 | "info" : { 51 | "author" : "xcode", 52 | "version" : 1 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/bronzeMedal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "bronzeMedal.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "bronzeMedal@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "bronzeMedal@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/bronzeMedal.imageset/bronzeMedal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Medals/bronzeMedal.imageset/bronzeMedal.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/bronzeMedal.imageset/bronzeMedal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Medals/bronzeMedal.imageset/bronzeMedal@2x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/bronzeMedal.imageset/bronzeMedal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Medals/bronzeMedal.imageset/bronzeMedal@3x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/goldMedal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "goldMedal.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "goldMedal@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "goldMedal@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/goldMedal.imageset/goldMedal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Medals/goldMedal.imageset/goldMedal.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/goldMedal.imageset/goldMedal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Medals/goldMedal.imageset/goldMedal@2x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/goldMedal.imageset/goldMedal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Medals/goldMedal.imageset/goldMedal@3x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/silverMedal.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "silverMedal.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "silverMedal@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "silverMedal@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/silverMedal.imageset/silverMedal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Medals/silverMedal.imageset/silverMedal.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/silverMedal.imageset/silverMedal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Medals/silverMedal.imageset/silverMedal@2x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Medals/silverMedal.imageset/silverMedal@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Medals/silverMedal.imageset/silverMedal@3x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q0.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q0.jpeg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q0@2x.jpeg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q0@3x.jpeg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q0.imageset/Q0.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q0.imageset/Q0.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q0.imageset/Q0@2x.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q0.imageset/Q0@2x.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q0.imageset/Q0@3x.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q0.imageset/Q0@3x.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q1.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q1@2x.jpg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q1@3x.jpg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q1.imageset/Q1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q1.imageset/Q1.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q1.imageset/Q1@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q1.imageset/Q1@2x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q1.imageset/Q1@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q1.imageset/Q1@3x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q10.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q10.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q10@2x.jpg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q10@3x.jpg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q10.imageset/Q10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q10.imageset/Q10.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q10.imageset/Q10@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q10.imageset/Q10@2x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q10.imageset/Q10@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q10.imageset/Q10@3x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q11.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q11.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q11@2x.jpg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q11@3x.jpg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q11.imageset/Q11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q11.imageset/Q11.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q11.imageset/Q11@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q11.imageset/Q11@2x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q11.imageset/Q11@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q11.imageset/Q11@3x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q12.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "How_bad_are_greasy_pizza.jpeg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "How_bad_are_greasy_pizza@2x.jpeg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "How_bad_are_greasy_pizza@3x.jpeg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q12.imageset/How_bad_are_greasy_pizza.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q12.imageset/How_bad_are_greasy_pizza.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q12.imageset/How_bad_are_greasy_pizza@2x.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q12.imageset/How_bad_are_greasy_pizza@2x.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q12.imageset/How_bad_are_greasy_pizza@3x.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q12.imageset/How_bad_are_greasy_pizza@3x.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q13.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "shredded-paper-uses.jpg.webp.jpeg.jpeg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "shredded-paper-uses.jpg.webp.jpeg@2x.jpeg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "shredded-paper-uses.jpg.webp.jpeg@3x.jpeg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q13.imageset/shredded-paper-uses.jpg.webp.jpeg.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q13.imageset/shredded-paper-uses.jpg.webp.jpeg.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q13.imageset/shredded-paper-uses.jpg.webp.jpeg@2x.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q13.imageset/shredded-paper-uses.jpg.webp.jpeg@2x.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q13.imageset/shredded-paper-uses.jpg.webp.jpeg@3x.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q13.imageset/shredded-paper-uses.jpg.webp.jpeg@3x.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q14.imageset/51N9lRMfrbL._AC_SL1001_.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q14.imageset/51N9lRMfrbL._AC_SL1001_.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q14.imageset/51N9lRMfrbL._AC_SL1001_@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q14.imageset/51N9lRMfrbL._AC_SL1001_@2x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q14.imageset/51N9lRMfrbL._AC_SL1001_@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q14.imageset/51N9lRMfrbL._AC_SL1001_@3x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q14.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "51N9lRMfrbL._AC_SL1001_.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "51N9lRMfrbL._AC_SL1001_@2x.jpg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "51N9lRMfrbL._AC_SL1001_@3x.jpg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q15.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "j3964_3.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "j3964_3@2x.jpg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "j3964_3@3x.jpg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q15.imageset/j3964_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q15.imageset/j3964_3.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q15.imageset/j3964_3@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q15.imageset/j3964_3@2x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q15.imageset/j3964_3@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q15.imageset/j3964_3@3x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q2.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q2.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q2@2x.jpg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q2@3x.jpg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q2.imageset/Q2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q2.imageset/Q2.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q2.imageset/Q2@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q2.imageset/Q2@2x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q2.imageset/Q2@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q2.imageset/Q2@3x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q3.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q3.jpeg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q3@2x.jpeg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q3@3x.jpeg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q3.imageset/Q3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q3.imageset/Q3.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q3.imageset/Q3@2x.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q3.imageset/Q3@2x.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q3.imageset/Q3@3x.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q3.imageset/Q3@3x.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q4.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q4.jpeg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q4@2x.jpeg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q4@3x.jpeg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q4.imageset/Q4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q4.imageset/Q4.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q4.imageset/Q4@2x.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q4.imageset/Q4@2x.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q4.imageset/Q4@3x.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q4.imageset/Q4@3x.jpeg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q5.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q5.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q5@2x.jpg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q5@3x.jpg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q5.imageset/Q5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q5.imageset/Q5.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q5.imageset/Q5@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q5.imageset/Q5@2x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q5.imageset/Q5@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q5.imageset/Q5@3x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q6.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q6.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q6@2x.jpg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q6@3x.jpg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q6.imageset/Q6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q6.imageset/Q6.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q6.imageset/Q6@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q6.imageset/Q6@2x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q6.imageset/Q6@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q6.imageset/Q6@3x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q7.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q7.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q7@2x.jpg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q7@3x.jpg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q7.imageset/Q7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q7.imageset/Q7.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q7.imageset/Q7@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q7.imageset/Q7@2x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q7.imageset/Q7@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q7.imageset/Q7@3x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q8.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q8.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q8@2x.jpg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q8@3x.jpg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q8.imageset/Q8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q8.imageset/Q8.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q8.imageset/Q8@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q8.imageset/Q8@2x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q8.imageset/Q8@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q8.imageset/Q8@3x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q9.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Q9.jpg", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Q9@2x.jpg", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Q9@3x.jpg", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q9.imageset/Q9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q9.imageset/Q9.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q9.imageset/Q9@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q9.imageset/Q9@2x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/Q9.imageset/Q9@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/Q9.imageset/Q9@3x.jpg -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/QuizButtonSelectColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "display-p3", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "1.000", 9 | "green" : "1.000", 10 | "red" : "1.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "light" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "display-p3", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.992", 27 | "green" : "0.992", 28 | "red" : "0.890" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | }, 33 | { 34 | "appearances" : [ 35 | { 36 | "appearance" : "luminosity", 37 | "value" : "dark" 38 | } 39 | ], 40 | "color" : { 41 | "color-space" : "display-p3", 42 | "components" : { 43 | "alpha" : "1.000", 44 | "blue" : "0.179", 45 | "green" : "0.117", 46 | "red" : "0.000" 47 | } 48 | }, 49 | "idiom" : "universal" 50 | } 51 | ], 52 | "info" : { 53 | "author" : "xcode", 54 | "version" : 1 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/ReverseMainColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "1.000", 9 | "green" : "1.000", 10 | "red" : "1.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "light" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "display-p3", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.150", 27 | "green" : "0.150", 28 | "red" : "0.149" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | }, 33 | { 34 | "appearances" : [ 35 | { 36 | "appearance" : "luminosity", 37 | "value" : "dark" 38 | } 39 | ], 40 | "color" : { 41 | "color-space" : "extended-gray", 42 | "components" : { 43 | "alpha" : "1.000", 44 | "white" : "0.970" 45 | } 46 | }, 47 | "idiom" : "universal" 48 | } 49 | ], 50 | "info" : { 51 | "author" : "xcode", 52 | "version" : 1 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/cameraImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Untitled.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Untitled@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Untitled@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/cameraImage.imageset/Untitled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/cameraImage.imageset/Untitled.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/cameraImage.imageset/Untitled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/cameraImage.imageset/Untitled@2x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/cameraImage.imageset/Untitled@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/cameraImage.imageset/Untitled@3x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/homePage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "homePage.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "appearances" : [ 10 | { 11 | "appearance" : "luminosity", 12 | "value" : "light" 13 | } 14 | ], 15 | "filename" : "homePage-1.png", 16 | "idiom" : "universal", 17 | "scale" : "1x" 18 | }, 19 | { 20 | "appearances" : [ 21 | { 22 | "appearance" : "luminosity", 23 | "value" : "dark" 24 | } 25 | ], 26 | "filename" : "homePage@3x-1.png", 27 | "idiom" : "universal", 28 | "scale" : "1x" 29 | }, 30 | { 31 | "filename" : "homePage@2x.png", 32 | "idiom" : "universal", 33 | "scale" : "2x" 34 | }, 35 | { 36 | "appearances" : [ 37 | { 38 | "appearance" : "luminosity", 39 | "value" : "light" 40 | } 41 | ], 42 | "filename" : "homePage@2x-1.png", 43 | "idiom" : "universal", 44 | "scale" : "2x" 45 | }, 46 | { 47 | "appearances" : [ 48 | { 49 | "appearance" : "luminosity", 50 | "value" : "dark" 51 | } 52 | ], 53 | "filename" : "homePage@3x@2x.png", 54 | "idiom" : "universal", 55 | "scale" : "2x" 56 | }, 57 | { 58 | "filename" : "homePage@3x.png", 59 | "idiom" : "universal", 60 | "scale" : "3x" 61 | }, 62 | { 63 | "appearances" : [ 64 | { 65 | "appearance" : "luminosity", 66 | "value" : "light" 67 | } 68 | ], 69 | "filename" : "homePage@3x-2.png", 70 | "idiom" : "universal", 71 | "scale" : "3x" 72 | }, 73 | { 74 | "appearances" : [ 75 | { 76 | "appearance" : "luminosity", 77 | "value" : "dark" 78 | } 79 | ], 80 | "filename" : "homePage@3x@3x.png", 81 | "idiom" : "universal", 82 | "scale" : "3x" 83 | } 84 | ], 85 | "info" : { 86 | "author" : "xcode", 87 | "version" : 1 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage-1.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@2x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@2x-1.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@2x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@3x-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@3x-1.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@3x-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@3x-2.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@3x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@3x@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@3x@2x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@3x@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/homePage.imageset/homePage@3x@3x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/iconImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "nature.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "nature@2x.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "nature@3x.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/iconImage.imageset/nature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/iconImage.imageset/nature.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/iconImage.imageset/nature@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/iconImage.imageset/nature@2x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/iconImage.imageset/nature@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Assets.xcassets/iconImage.imageset/nature@3x.png -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/quizButtonCorrectColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "1.000", 9 | "green" : "1.000", 10 | "red" : "1.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "light" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "display-p3", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.625", 27 | "green" : "1.000", 28 | "red" : "0.721" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | }, 33 | { 34 | "appearances" : [ 35 | { 36 | "appearance" : "luminosity", 37 | "value" : "dark" 38 | } 39 | ], 40 | "color" : { 41 | "color-space" : "display-p3", 42 | "components" : { 43 | "alpha" : "1.000", 44 | "blue" : "0.000", 45 | "green" : "0.253", 46 | "red" : "0.023" 47 | } 48 | }, 49 | "idiom" : "universal" 50 | } 51 | ], 52 | "info" : { 53 | "author" : "xcode", 54 | "version" : 1 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/quizButtonWrongColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "1.000", 9 | "green" : "1.000", 10 | "red" : "1.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "light" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.886", 27 | "green" : "0.886", 28 | "red" : "1.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | }, 33 | { 34 | "appearances" : [ 35 | { 36 | "appearance" : "luminosity", 37 | "value" : "dark" 38 | } 39 | ], 40 | "color" : { 41 | "color-space" : "display-p3", 42 | "components" : { 43 | "alpha" : "1.000", 44 | "blue" : "0.088", 45 | "green" : "0.000", 46 | "red" : "0.223" 47 | } 48 | }, 49 | "idiom" : "universal" 50 | } 51 | ], 52 | "info" : { 53 | "author" : "xcode", 54 | "version" : 1 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Assets.xcassets/quizDefaultButtonColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "1.000", 9 | "green" : "1.000", 10 | "red" : "1.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "light" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "extended-gray", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "white" : "0.900" 27 | } 28 | }, 29 | "idiom" : "universal" 30 | }, 31 | { 32 | "appearances" : [ 33 | { 34 | "appearance" : "luminosity", 35 | "value" : "dark" 36 | } 37 | ], 38 | "color" : { 39 | "color-space" : "extended-gray", 40 | "components" : { 41 | "alpha" : "1.000", 42 | "white" : "0.200" 43 | } 44 | }, 45 | "idiom" : "universal" 46 | } 47 | ], 48 | "info" : { 49 | "author" : "xcode", 50 | "version" : 1 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2022-03-20. 6 | // 7 | 8 | import SwiftUI 9 | 10 | struct ContentView: View { 11 | 12 | init(){ 13 | UITabBar.appearance().barTintColor = .systemBackground 14 | } 15 | 16 | var body: some View { 17 | TabView{ 18 | Text("Hello World") 19 | .tabItem{ 20 | Image(systemName: "person") 21 | Text("Home") 22 | } 23 | } 24 | TabView{ 25 | Text("") 26 | .tabItem{ 27 | Image(systemName:"pencil") 28 | Text("Quiz") 29 | } 30 | } 31 | } 32 | } 33 | 34 | struct ContentView_Previews: PreviewProvider { 35 | static var previews: some View { 36 | HomeViewController() 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/FinishQuizViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FinishQuizViewController.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2022-03-06. 6 | // 7 | 8 | import UIKit 9 | 10 | class FinishQuizViewController: UIViewController { 11 | //var score=0; 12 | var score:Int?; 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | scoreLabel.text = ("Your score: "+String(score!)+"/100") 16 | //scoreLabel.text = String(format:"%.0f",score); 17 | // Do any additional setup after loading the view. 18 | if (Double(score!)/100 >= 0.8){ 19 | medalImage!.image=#imageLiteral(resourceName: "goldMedal") 20 | }else if (Double(score!)/100 >= 0.6){ 21 | medalImage!.image=#imageLiteral(resourceName: "silverMedal") 22 | }else{ 23 | medalImage!.image=#imageLiteral(resourceName: "bronzeMedal") 24 | } 25 | let largeConfig = UIImage.SymbolConfiguration(pointSize: 30, weight: .bold, scale: .large) 26 | 27 | let largeBoldDoc = UIImage(systemName: "arrow.clockwise", withConfiguration: largeConfig) 28 | 29 | restartIcon.setImage(largeBoldDoc, for: .normal) 30 | 31 | 32 | } 33 | @IBOutlet weak var scoreLabel: UILabel! 34 | 35 | @IBOutlet weak var medalImage: UIImageView! 36 | 37 | @IBOutlet weak var restartIcon: UIButton! 38 | 39 | @IBAction func restartButtonPressed(_ sender: UIButton) { 40 | dismiss(animated: true, completion: nil) 41 | } 42 | 43 | 44 | 45 | } 46 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Garbage Disposal.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abyss219/AI-Recycle-Helper/4e5542524b17ed84ca8b3d73819eb200fc642bfa/AI_Recycle_Helper/Garbage Disposal.pdf -------------------------------------------------------------------------------- /AI_Recycle_Helper/HintViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HintViewController.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2022-02-13. 6 | // 7 | 8 | import UIKit 9 | 10 | class HintViewController: UIViewController { 11 | var hint:String? 12 | @IBOutlet weak var hintText: UILabel! 13 | 14 | @IBOutlet weak var hintView: UIView! 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | hintText.text=hint 18 | hintView.layer.cornerRadius = 25; 19 | hintView.layer.masksToBounds = true; 20 | // Do any additional setup after loading the view. 21 | } 22 | 23 | 24 | 25 | /* 26 | // MARK: - Navigation 27 | 28 | // In a storyboard-based application, you will often want to do a little preparation before navigation 29 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 30 | // Get the new view controller using segue.destination. 31 | // Pass the selected object to the new view controller. 32 | } 33 | */ 34 | 35 | } 36 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/HomeViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HomeViewController.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2022-01-09. 6 | // 7 | 8 | import UIKit 9 | import WebKit 10 | class HomeViewController: UIViewController,WKUIDelegate, WKNavigationDelegate { 11 | 12 | @IBOutlet weak var lastPageButton: UIButton! 13 | 14 | @IBOutlet weak var nextPageButton: UIButton! 15 | @IBOutlet weak var homePageButton: UIButton! 16 | 17 | @IBOutlet weak var webPage: WKWebView! 18 | override func viewDidLoad() { 19 | super.viewDidLoad() 20 | //let myURL = URL(string:"https://recyclebc.ca/category/education/") 21 | webPage.load(URLRequest(url:URL(string:"https://recyclebc.ca/category/education/")!)) 22 | webPage.uiDelegate = self 23 | webPage.navigationDelegate = self 24 | } 25 | 26 | 27 | @IBAction func goToPrevious(_ sender: Any) { 28 | if (webPage.canGoBack){ 29 | webPage.goBack() 30 | } 31 | 32 | 33 | } 34 | 35 | @IBAction func goToNext(_ sender: Any) { 36 | if (webPage.canGoForward){ 37 | webPage.goForward() 38 | } 39 | 40 | } 41 | 42 | 43 | @IBAction func homeButton(_ sender: UIButton) { 44 | viewDidLoad() 45 | } 46 | 47 | 48 | func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? { 49 | 50 | 51 | if let frame = navigationAction.targetFrame, 52 | frame.isMainFrame { 53 | return nil 54 | } 55 | webView.load(navigationAction.request) 56 | return nil 57 | 58 | } 59 | 60 | func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { // triggers when loading is complete 61 | if (webView.canGoForward){ 62 | nextPageButton.tintColor=UIColor(red: 151/255, green: 202/255, blue: 86/255, alpha: 1.0) 63 | }else{ 64 | nextPageButton.tintColor=UIColor(red: 142/255, green: 142/255, blue: 148/255, alpha: 1.0) 65 | } 66 | 67 | if (webView.canGoBack){ 68 | lastPageButton.tintColor=UIColor(red: 151/255, green: 202/255, blue: 86/255, alpha: 1.0) 69 | } 70 | else{ 71 | lastPageButton.tintColor=UIColor(red: 142/255, green: 142/255, blue: 148/255, alpha: 1.0) 72 | } 73 | } 74 | 75 | /* 76 | // MARK: - Navigation 77 | 78 | // In a storyboard-based application, you will often want to do a little preparation before navigation 79 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 80 | // Get the new view controller using segue.destination. 81 | // Pass the selected object to the new view controller. 82 | } 83 | */ 84 | 85 | 86 | 87 | 88 | } 89 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSCameraUsageDescription 6 | Debris! needs to access your camera in order to classify the type of garbage 7 | UIApplicationSceneManifest 8 | 9 | UIApplicationSupportsMultipleScenes 10 | 11 | UISceneConfigurations 12 | 13 | UIWindowSceneSessionRoleApplication 14 | 15 | 16 | UISceneConfigurationName 17 | Default Configuration 18 | UISceneDelegateClassName 19 | $(PRODUCT_MODULE_NAME).SceneDelegate 20 | UISceneStoryboardFile 21 | Main 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/MainTabBarController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainTabBarController.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2022-03-27. 6 | // 7 | 8 | import UIKit 9 | import CoreML 10 | import Vision 11 | import Social 12 | 13 | 14 | class MainTabBarController: UITabBarController, UIImagePickerControllerDelegate, UITabBarControllerDelegate, UINavigationControllerDelegate{ 15 | 16 | var r = ["","",""] 17 | var UIimage = UIImage() 18 | var imagePicker2 = UIImagePickerController() 19 | 20 | var classificationResults : [VNClassificationObservation] = [] 21 | 22 | let button = UIButton.init(type: .custom) 23 | 24 | 25 | 26 | 27 | override func viewDidLoad() { 28 | super.viewDidLoad() 29 | //self.delegate=self 30 | imagePicker2.delegate = self 31 | print("hey") 32 | // Do any additional setup after loading the view. 33 | 34 | 35 | 36 | button.backgroundColor = UIColor(red:176.0/255.0, green:176.0/255.0, blue:176.0/255.0, alpha: 1.0) 37 | button.setImage(UIImage(named: "cameraImage"), for: .normal) 38 | button.layer.cornerRadius = 27.5 39 | //button.layer.borderWidth = 2 40 | button.layer.borderColor = UIColor.black.cgColor 41 | button.clipsToBounds = true 42 | button.contentMode = .scaleAspectFill 43 | button.addTarget(self, 44 | action: #selector(cameraButtonisPress(_:)), 45 | for: .touchUpInside) 46 | 47 | self.view.insertSubview(button, aboveSubview: self.tabBar) 48 | 49 | } 50 | 51 | override func viewDidLayoutSubviews() { 52 | super.viewDidLayoutSubviews() 53 | 54 | // safe place to set the frame of button manually 55 | print(self.view.bounds.height) 56 | 57 | //self.tabBar.center.x - width/2 58 | button.frame = CGRect.init(x: self.tabBar.center.x-27.5, y: self.view.bounds.height*(8/9), width: 55, height: 55) 59 | } 60 | 61 | override func didReceiveMemoryWarning() { 62 | super.didReceiveMemoryWarning() 63 | // Dispose of any resources that can be recreated. 64 | } 65 | /* 66 | func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { 67 | if viewController.tabBarItem.tag == 3 { 68 | print(viewController.tabBarItem.tag) 69 | return false 70 | } else { 71 | return true 72 | } 73 | } 74 | */ 75 | 76 | func detect(image: CIImage) { 77 | print("decting...............") 78 | // Load the ML model through its generated class 79 | guard let model = try? VNCoreMLModel(for: AIDetectModel().model) else { 80 | fatalError("can't load ML model") 81 | } 82 | 83 | let request = VNCoreMLRequest(model: model) { request, error in 84 | guard let results = request.results as? [VNClassificationObservation], 85 | let topResult = results.first 86 | 87 | else { 88 | fatalError("unexpected result type from VNCoreMLRequest") 89 | } 90 | for i in 0..<3{ 91 | self.r[i] = results[i].identifier 92 | 93 | } 94 | print(self.r) 95 | //print("third \(results[2].identifier)") 96 | } 97 | 98 | let handler = VNImageRequestHandler(ciImage: image) 99 | 100 | do { 101 | try handler.perform([request]) 102 | } 103 | catch { 104 | print(error) 105 | } 106 | 107 | performSegue(withIdentifier: "goToAIDetectResult", sender: self) 108 | } 109 | 110 | 111 | 112 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 113 | if segue.identifier == "goToAIDetectResult" { 114 | let destinationVC = segue.destination as! AIViewController 115 | destinationVC.results = r 116 | //print("The image2", UIimage) 117 | destinationVC.theImage = UIimage 118 | 119 | 120 | } 121 | } 122 | 123 | func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 124 | 125 | if let image = info[.originalImage] as? UIImage { 126 | self.UIimage = image 127 | //self.photoImageView.image = image 128 | self.imagePicker2.dismiss(animated: true, completion: nil) 129 | guard let ciImage = CIImage(image: image) else { 130 | fatalError("couldn't convert uiimage to CIImage") 131 | } 132 | self.detect(image: ciImage) 133 | 134 | //print("The image" , image) 135 | } 136 | 137 | } 138 | 139 | 140 | @IBAction func cameraButtonisPress(_ sender:UIButton){ 141 | openCamers() 142 | // print("press") 143 | 144 | } 145 | 146 | override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 147 | if item.tag == 1 { 148 | 149 | // openCamers() 150 | 151 | 152 | // let secondVC = storyboard?.instantiateViewController(identifier: "homeViewController") as! HomeViewController 153 | // 154 | // //secondVC.modalPresentationStyle = .fullScreen 155 | // //secondVC.modalTransitionStyle = .crossDissolve 156 | // self.definesPresentationContext = true 157 | // secondVC.modalPresentationStyle = .currentContext 158 | // present(secondVC, animated: true, completion: nil) 159 | 160 | print(selectedIndex) 161 | print("iam here") 162 | } 163 | 164 | 165 | } 166 | 167 | func openCamers(){ 168 | self.imagePicker2.sourceType = .camera 169 | self.imagePicker2.allowsEditing = false 170 | present(imagePicker2, animated: true, completion: nil) 171 | } 172 | } 173 | 174 | fileprivate func convertFromUIImagePickerControllerInfoKey(_ input: UIImagePickerController.InfoKey) -> String { 175 | return input.rawValue 176 | } 177 | 178 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/PdfViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PdfViewController.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2022-10-09. 6 | // 7 | import PDFKit 8 | import UIKit 9 | 10 | class PdfViewController: UIViewController, PDFViewDelegate { 11 | let pdfView=PDFView() 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | view.addSubview(pdfView) 16 | //link to document 17 | guard let url = Bundle.main.url(forResource:"Garbage Disposal", withExtension: "pdf") else {return} 18 | guard let document = PDFDocument(url: url) else {return} 19 | //to fit the screen size 20 | pdfView.minScaleFactor=4.0 21 | pdfView.minScaleFactor=pdfView.scaleFactorForSizeToFit 22 | pdfView.autoScales=true 23 | pdfView.delegate=self 24 | pdfView.document=document 25 | 26 | } 27 | 28 | override func viewDidLayoutSubviews() { 29 | super.viewDidLayoutSubviews() 30 | pdfView.frame = view.bounds 31 | } 32 | 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Question.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Question.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2022-01-09. 6 | // 7 | 8 | import Foundation 9 | 10 | 11 | struct Question { 12 | let questionText:String; 13 | let options:[String]; 14 | let answers:[Int]; 15 | let hasImage:Bool; 16 | let hint:String; 17 | // Add image and reason 18 | init(questionText:String,options:[String],answers:[Int],hasImage:Bool,hint:String){ 19 | self.options=options 20 | self.answers=answers 21 | self.questionText=questionText 22 | self.hasImage=hasImage 23 | self.hint=hint 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/Quiz.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuestionBank.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2022-01-09. 6 | // 7 | 8 | import Foundation 9 | 10 | 11 | struct Quiz{ 12 | var currentQustionNum=0; //index of questions 13 | var score = 0 14 | var usedQuestion:[Int]=[]; 15 | let questions = [ 16 | Question(questionText:"Styrofoam should be placed in your recycling bin/cart." , options: ["True","False"], answers: [1], hasImage: true, hint: "Styrofoam packaging and film plastics aren't accepted for collection. You can drop them at the Eco-Centre or take them to a Recycle BC drop-off location."), 17 | Question(questionText: "Batteries and small electronics go in your recycling bin/cart.", options: ["True","False"], answers: [1], hasImage: true,hint: "Most importantly, you want to keep electronics and rechargeable batteries out of your recycling and trash bin. This will help to prevent the serious threat of fires caused by sparks or explosions."), 18 | Question(questionText: "Recyclables should be loose and not bagged.", options: ["True","False"], answers: [0], hasImage: true,hint: "Loose materials help machine and recycling staff see items in the bin right away to pull out any non-recyclables as soon as possible."), 19 | Question(questionText: "Old garden hoses and electric cords belong in your recycling bin/cart.", options: ["Yes","No"], answers: [1], hasImage: true,hint: "garden hoses are tanglers, which can cause massive disruption."), 20 | Question(questionText: "All metal is recyclable - just put it in your recycling bin/cart at home. ", options: ["True", "False"], answers: [1], hasImage: true,hint: "In most cases, aluminum and tin can be safely recycled."), 21 | Question(questionText: "Which of the following plastic bottles are recyclable?", options: ["Only shampoo bottle", "Only laundry detergent", "Only dish soap", "Only window cleaner", "All of above"], answers: [4], hasImage: true,hint: "Plastic bottles can be recycled."), 22 | Question(questionText: "You should not…", options: ["Place recycling in plastic bags and then putting them in the recycling bin.","Put recyclable items in the general rubbish bin.","Separate food scraps from pizza boxes before recycling."], answers: [0,1,2], hasImage: true,hint: "Follow recycling instructions."), 23 | Question(questionText: "Which of these materials can be disposed of in your recycling bin or cart?", options: ["Bug Killer","Batteries","Paint","none of the above"], answers: [3], hasImage: true,hint: "1"), 24 | Question(questionText: "Do you know what to do with plastic bags?", options: ["To be recycled, they need to go back to retail","Plastic bags can be recycled in my bin/cart"], answers: [0], hasImage: true,hint: "1"), 25 | Question(questionText: "Paper napkins go in which cart?", options: ["Trash Cart","Recycling Cart"], answers: [0], hasImage: true,hint: "This item is not acceptable for the recycle bin."), 26 | Question(questionText: "Polystyrene goes in which cart?", options: ["Trash Cart","Recycling Cart"], answers: [0], hasImage: true,hint: "Due to the low density of polystyrene foam, polystyrene is not often recyclable. The best way is to reuse it!"), 27 | Question(questionText: "Plastic hangers go in which cart?", options: ["Trash cart","Recycling Cart"], answers: [0], hasImage: true,hint: "They are generally not accepted in recycle bins. However, a local dry cleaner or thrift shop may be a possibility. "), 28 | Question(questionText: "Greasy cardboard goes in which cart?", options: ["Trash cart","Recycling Cart"], answers: [0], hasImage: true,hint: "If you have curbside paper recycling pickup, you may recycle this item."), 29 | Question(questionText: "True or False: Shredded paper can be recycled.", options: ["TRUE","FALSE"], answers: [0], hasImage: true,hint: "In British Columbia, paper shredding is incorporated in curbside recycling programmes. To prevent smaller bits from becoming a mess in your trash can, it is recommended to store shredded paper in a bag."), 30 | Question(questionText: "Shampoo and lotion bottles go in which cart?", options: ["Trash Cart","Recycling Cart"], answers: [1], hasImage: true,hint: "Plastic bottles can be recycled."), 31 | Question(questionText: "Should wrapping paper (foil) be placed in recycling bin?", options: ["Yes","No"], answers: [1], hasImage: true,hint: "This item is not acceptable for the recycle bin. It may be acceptable in your community's recycling or collection programme."), 32 | 33 | 34 | Question(questionText: "Gable-top cartons go in which cart?", options: ["Trash Cart","Recycling Cart"], answers: [1], hasImage: false, hint: "This item can go in your container recycling if you receive curbside recycling collection."), 35 | Question(questionText: "Disposable coffee cups go in which cart?", options: ["Trash Cart","Recycling Cart"], answers: [0], hasImage: false, hint: "This item can go in your container recycling if you receive curbside recycling collection."), 36 | Question(questionText: "Where can I recycle my empty bags and plastic containers for garden chemicals and fertilizers?", options: ["Trash Cart","Recycling Cart"], answers: [1], hasImage: false, hint: "Plastic pails or buckets for fertilizers, road salt, soil, and other garden products are included in a provincial recycling program through Recycle BC. Once these containers are empty and rinsed, they can be placed in many curbside recycling programs across the province. This includes all containers that are 25 litres or less in size."), 37 | Question(questionText: "Plastic bags are not accepted in the recycling bin.", options: ["TRUE","FALSE"], answers: [0], hasImage: false, hint: "Plastic bags and some plastic wraps are recyclable"), 38 | Question(questionText: "Lids & caps should be removed before recycling.", options: ["TRUE","FALSE"], answers: [0], hasImage: false, hint: "Most lids are constructed of a different sort of plastic than the containers. They often have a greater melting point and may disturb the whole batch of plastic that is being recycled. Always remove the lid from any plastic containers before recycling.") 39 | ] 40 | 41 | 42 | 43 | func getScore() -> Int{ 44 | return score; 45 | } 46 | 47 | mutating func checkAns(userAnswer:[String])->Bool { 48 | var flag = true; 49 | var correctChoice = 0; 50 | 51 | for correctAns in questions[currentQustionNum].answers{ 52 | if (userAnswer.contains(questions[currentQustionNum].options[correctAns])){ 53 | correctChoice+=1 54 | //self.score += (10/(questions[currentQustionNum].answers.count)); 55 | }else{ 56 | flag = false 57 | } 58 | } 59 | self.score += correctChoice*10/questions[currentQustionNum].answers.count; 60 | return flag 61 | } 62 | 63 | 64 | 65 | func getQuestionText() ->String{ 66 | return questions[currentQustionNum].questionText 67 | } 68 | 69 | 70 | 71 | 72 | mutating func getQuestion(){ 73 | var nextQuestionNum = Int.random(in: 0.. String{ 84 | return questions[currentQustionNum].hint 85 | } 86 | 87 | } 88 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/QuizViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // QuizViewController.swi 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2022-01-09. 6 | // 7 | 8 | import UIKit 9 | 10 | class QuizViewController: UIViewController { 11 | 12 | @IBOutlet weak var questionText: UILabel! 13 | 14 | @IBOutlet weak var questionImage: UIImageView? 15 | 16 | @IBOutlet weak var questionExp: UILabel! 17 | 18 | @IBOutlet weak var b1: UIButton! 19 | 20 | @IBOutlet weak var b2: UIButton! 21 | 22 | @IBOutlet weak var b3: UIButton! 23 | 24 | @IBOutlet weak var b4: UIButton! 25 | 26 | @IBOutlet weak var b5: UIButton! 27 | 28 | @IBOutlet weak var scoreLabel: UILabel! 29 | 30 | @IBOutlet weak var hintButton: UIButton! 31 | 32 | @IBOutlet weak var progressBar: UIProgressView! 33 | 34 | @IBOutlet weak var questionNumberLabel: UILabel! 35 | 36 | /* 37 | 38 | init(){ 39 | buttonList=[]; 40 | } 41 | 42 | required init?(coder: NSCoder) { 43 | fatalError("init(coder:) has not been implemented") 44 | } 45 | */ 46 | var quiz = Quiz(); 47 | 48 | 49 | 50 | var userSelectList:[String] = [] 51 | 52 | //var questions=["1+2=5","2+6=7","3+1=4"] 53 | override func viewDidLoad() { 54 | super.viewDidLoad(); 55 | updateUI() 56 | //questionImage!.image=#imageLiteral(resourceName: "Q1") 57 | 58 | // Do any additional setup after loading the view. 59 | } 60 | 61 | @IBAction func hintButtonPressed(_ sender: UIButton) { 62 | performSegue(withIdentifier: "goToHint", sender: self) 63 | 64 | } 65 | 66 | 67 | var goToNext = false; 68 | @IBAction func answerButtonIsPressed(_ sender: UIButton) { 69 | 70 | let buttonList=[self.b1,self.b2,self.b3,self.b4,self.b5]; 71 | if (goToNext){ 72 | if (quiz.usedQuestion.count==10){ 73 | performSegue(withIdentifier: "goToFinishView", sender: self) 74 | quiz.score = 0 75 | quiz.usedQuestion=[]; 76 | 77 | updateUI(); 78 | 79 | 80 | }else{ 81 | updateUI(); 82 | } 83 | goToNext = false 84 | }else{ 85 | var x = quiz.checkAns(userAnswer:userSelectList); 86 | scoreLabel.text = ("score: "+String(quiz.getScore())) 87 | if (!x){ 88 | hintButton.alpha=1 89 | hintButton.isEnabled=true 90 | } 91 | 92 | var myquestion=quiz.questions[quiz.currentQustionNum] 93 | for i in 0...(myquestion.options.count-1){ 94 | if myquestion.answers.contains(i) && userSelectList.contains(myquestion.options[i]){ 95 | //green 96 | buttonList[i]?.backgroundColor=UIColor(named:"quizButtonCorrectColor") 97 | buttonList[5-myquestion.options.count+i]?.layer.cornerRadius=35 98 | }else if (!myquestion.answers.contains(i) && !userSelectList.contains(myquestion.options[i])){ 99 | //buttonList[i]?.backgroundColor=UIColor.clear 100 | buttonList[i]?.layer.cornerRadius=35 101 | }else{ 102 | buttonList[i]?.backgroundColor=UIColor(named:"quizButtonWrongColor") 103 | buttonList[i]?.layer.cornerRadius=35 104 | } 105 | 106 | } 107 | 108 | 109 | goToNext = true; 110 | } 111 | } 112 | 113 | 114 | 115 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 116 | if segue.identifier == "goToHint" { 117 | let destinationVC = segue.destination as! HintViewController 118 | destinationVC.hint = quiz.getHint() 119 | 120 | }else if segue.identifier == "goToFinishView"{ 121 | let destinationVC = segue.destination as! FinishQuizViewController 122 | destinationVC.score = quiz.score 123 | } 124 | } 125 | func updateUI(){ 126 | checkFinishView(); 127 | hintButton.alpha=0 128 | hintButton.isEnabled=false 129 | progressBar.progress=Float(quiz.usedQuestion.count)/10.0; 130 | questionNumberLabel.text=("Question "+String(quiz.usedQuestion.count+1)+"/10") 131 | userSelectList = []; 132 | quiz.getQuestion(); 133 | questionText.text = quiz.getQuestionText(); 134 | let questionsOption = quiz.questions[quiz.currentQustionNum].options; 135 | let buttonList=[self.b1,self.b2,self.b3,self.b4,self.b5]; 136 | if (quiz.questions[quiz.currentQustionNum].hasImage == true){ 137 | questionImage!.image = #imageLiteral(resourceName: "Q"+String(quiz.currentQustionNum)) 138 | }else{ 139 | questionImage?.image=nil; 140 | } 141 | 142 | for i in 0...4{ 143 | 144 | buttonList[i]?.isEnabled=false; 145 | buttonList[i]?.backgroundColor=UIColor(named: "quizDefaultButtonColor"); 146 | // buttonList[i]?.setTitleColor(Rever, for:.normal) 147 | buttonList[i]?.isHidden=true; 148 | } 149 | for index in 0...(questionsOption.count-1){ 150 | 151 | buttonList[index]?.setTitle(questionsOption[index], for: .normal); 152 | buttonList[index]?.isEnabled=true; 153 | buttonList[index]?.alpha=1 154 | buttonList[index]?.isHidden=false; 155 | buttonList[index]?.layer.cornerRadius=35 156 | 157 | } 158 | questionText.text = quiz.getQuestionText(); 159 | } 160 | 161 | 162 | /* 163 | var runCount = 0 164 | 165 | Timer.scheduledTimer(withTimeInterval: 1.0, #selector(fireTime) repeats: true) { timer in 166 | runCount += 1 167 | print("timer") 168 | if runCount == 3 { 169 | timer.invalidate() 170 | } 171 | } 172 | 173 | 174 | */ 175 | 176 | 177 | 178 | 179 | 180 | 181 | func checkFinishView(){ 182 | if (quiz.usedQuestion.count==10){ 183 | performSegue(withIdentifier: "goToFinishView", sender: self) 184 | quiz.score = 0 185 | quiz.usedQuestion=[]; 186 | 187 | } 188 | } 189 | 190 | 191 | //Anamation 192 | @IBAction func userSelect(_ sender: UIButton) { 193 | if (!goToNext){ 194 | if userSelectList.contains(sender.currentTitle!){ 195 | userSelectList=userSelectList.filter(){$0 != sender.currentTitle!} 196 | sender.backgroundColor=UIColor(named:"quizDefaultButtonColor") 197 | }else{ 198 | if(userSelectList.count < quiz.questions[quiz.currentQustionNum].answers.count){ 199 | userSelectList.append(sender.currentTitle!) 200 | sender.backgroundColor=UIColor(named: "quizButtonSelectColor") 201 | //sender.setTitleColor(UIColor(red: 255/255, green: 0/255, blue: 0/255, alpha: 1.0),for:.normal) 202 | 203 | } 204 | 205 | } 206 | //print(userSelectList) 207 | } 208 | } 209 | /* 210 | // MARK: - Navigation 211 | 212 | // In a storyboard-based application, you will often want to do a little preparation before navigation 213 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 214 | // Get the new view controller using segue.destination. 215 | // Pass the selected object to the new view controller. 216 | } 217 | */ 218 | 219 | } 220 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/SceneDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SceneDelegate.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2021-12-11. 6 | // 7 | 8 | import UIKit 9 | 10 | class SceneDelegate: UIResponder, UIWindowSceneDelegate { 11 | 12 | var window: UIWindow? 13 | 14 | 15 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 16 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. 17 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. 18 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). 19 | guard let _ = (scene as? UIWindowScene) else { return } 20 | } 21 | 22 | func sceneDidDisconnect(_ scene: UIScene) { 23 | // Called as the scene is being released by the system. 24 | // This occurs shortly after the scene enters the background, or when its session is discarded. 25 | // Release any resources associated with this scene that can be re-created the next time the scene connects. 26 | // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). 27 | } 28 | 29 | func sceneDidBecomeActive(_ scene: UIScene) { 30 | // Called when the scene has moved from an inactive state to an active state. 31 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. 32 | } 33 | 34 | func sceneWillResignActive(_ scene: UIScene) { 35 | // Called when the scene will move from an active state to an inactive state. 36 | // This may occur due to temporary interruptions (ex. an incoming phone call). 37 | } 38 | 39 | func sceneWillEnterForeground(_ scene: UIScene) { 40 | // Called as the scene transitions from the background to the foreground. 41 | // Use this method to undo the changes made on entering the background. 42 | } 43 | 44 | func sceneDidEnterBackground(_ scene: UIScene) { 45 | // Called as the scene transitions from the foreground to the background. 46 | // Use this method to save data, release shared resources, and store enough scene-specific state information 47 | // to restore the scene back to its current state. 48 | } 49 | 50 | 51 | } 52 | 53 | -------------------------------------------------------------------------------- /AI_Recycle_Helper/tmpViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // tmpViewController.swift 3 | // AI_Recycle_Helper 4 | // 5 | // Created by R L on 2022-09-18. 6 | // 7 | 8 | import UIKit 9 | 10 | class tmpViewController: UIViewController { 11 | 12 | override func viewDidLoad() { 13 | super.viewDidLoad() 14 | 15 | // Do any additional setup after loading the view. 16 | } 17 | 18 | 19 | /* 20 | // MARK: - Navigation 21 | 22 | // In a storyboard-based application, you will often want to do a little preparation before navigation 23 | override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 24 | // Get the new view controller using segue.destination. 25 | // Pass the selected object to the new view controller. 26 | } 27 | */ 28 | 29 | } 30 | -------------------------------------------------------------------------------- /AI_Recycle_HelperTests/AI_Recycle_HelperTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AI_Recycle_HelperTests.swift 3 | // AI_Recycle_HelperTests 4 | // 5 | // Created by R L on 2021-12-11. 6 | // 7 | 8 | import XCTest 9 | @testable import AI_Recycle_Helper 10 | 11 | class AI_Recycle_HelperTests: XCTestCase { 12 | 13 | override func setUpWithError() throws { 14 | // Put setup code here. This method is called before the invocation of each test method in the class. 15 | } 16 | 17 | override func tearDownWithError() throws { 18 | // Put teardown code here. This method is called after the invocation of each test method in the class. 19 | } 20 | 21 | func testExample() throws { 22 | // This is an example of a functional test case. 23 | // Use XCTAssert and related functions to verify your tests produce the correct results. 24 | } 25 | 26 | func testPerformanceExample() throws { 27 | // This is an example of a performance test case. 28 | self.measure { 29 | // Put the code you want to measure the time of here. 30 | } 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /AI_Recycle_HelperUITests/AI_Recycle_HelperUITests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AI_Recycle_HelperUITests.swift 3 | // AI_Recycle_HelperUITests 4 | // 5 | // Created by R L on 2021-12-11. 6 | // 7 | 8 | import XCTest 9 | 10 | class AI_Recycle_HelperUITests: XCTestCase { 11 | 12 | override func setUpWithError() throws { 13 | // Put setup code here. This method is called before the invocation of each test method in the class. 14 | 15 | // In UI tests it is usually best to stop immediately when a failure occurs. 16 | continueAfterFailure = false 17 | 18 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 19 | } 20 | 21 | override func tearDownWithError() throws { 22 | // Put teardown code here. This method is called after the invocation of each test method in the class. 23 | } 24 | 25 | func testExample() throws { 26 | // UI tests must launch the application that they test. 27 | let app = XCUIApplication() 28 | app.launch() 29 | 30 | // Use recording to get started writing UI tests. 31 | // Use XCTAssert and related functions to verify your tests produce the correct results. 32 | } 33 | 34 | func testLaunchPerformance() throws { 35 | if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { 36 | // This measures how long it takes to launch your application. 37 | measure(metrics: [XCTApplicationLaunchMetric()]) { 38 | XCUIApplication().launch() 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /AI_Recycle_HelperUITests/AI_Recycle_HelperUITestsLaunchTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AI_Recycle_HelperUITestsLaunchTests.swift 3 | // AI_Recycle_HelperUITests 4 | // 5 | // Created by R L on 2021-12-11. 6 | // 7 | 8 | import XCTest 9 | 10 | class AI_Recycle_HelperUITestsLaunchTests: XCTestCase { 11 | 12 | override class var runsForEachTargetApplicationUIConfiguration: Bool { 13 | true 14 | } 15 | 16 | override func setUpWithError() throws { 17 | continueAfterFailure = false 18 | } 19 | 20 | func testLaunch() throws { 21 | let app = XCUIApplication() 22 | app.launch() 23 | 24 | // Insert steps here to perform after app launch but before taking a screenshot, 25 | // such as logging into a test account or navigating somewhere in the app 26 | 27 | let attachment = XCTAttachment(screenshot: app.screenshot()) 28 | attachment.name = "Launch Screen" 29 | attachment.lifetime = .keepAlways 30 | add(attachment) 31 | } 32 | } 33 | --------------------------------------------------------------------------------