├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── .gitignore ├── README.md ├── csoextension ├── StringUtility.cs └── csoextension.csproj ├── img ├── cso.png ├── flow.gif ├── issue.png ├── solution.png ├── string.gif ├── string1.png ├── string2.png └── string3.png └── sample └── Xaminals ├── README.md ├── Xaminals.Android ├── Assets │ └── AboutAssets.txt ├── MainActivity.cs ├── Properties │ ├── AndroidManifest.xml │ └── AssemblyInfo.cs ├── Resources │ ├── AboutResources.txt │ ├── drawable │ │ ├── back.png │ │ ├── bear.png │ │ ├── cat.png │ │ ├── dog.png │ │ ├── elephant.png │ │ ├── help.png │ │ ├── info.png │ │ ├── monkey.png │ │ ├── paw.png │ │ ├── photo.jpg │ │ ├── random.png │ │ ├── xamarin_logo.png │ │ └── xamarinstore.jpg │ ├── mipmap-anydpi-v26 │ │ ├── icon.xml │ │ └── icon_round.xml │ ├── mipmap-hdpi │ │ ├── icon.png │ │ └── launcher_foreground.png │ ├── mipmap-mdpi │ │ ├── icon.png │ │ └── launcher_foreground.png │ ├── mipmap-xhdpi │ │ ├── icon.png │ │ └── launcher_foreground.png │ ├── mipmap-xxhdpi │ │ ├── icon.png │ │ └── launcher_foreground.png │ ├── mipmap-xxxhdpi │ │ ├── icon.png │ │ └── launcher_foreground.png │ └── values │ │ ├── colors.xml │ │ └── styles.xml └── Xaminals.Android.csproj ├── Xaminals.UWP ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── 3bar.png │ ├── 3bar@2x.png │ ├── LockScreenLogo.scale-200.png │ ├── SplashScreen.scale-200.png │ ├── Square150x150Logo.scale-200.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── StoreLogo.png │ ├── Wide310x150Logo.scale-200.png │ ├── back.png │ ├── back@2x.png │ ├── bear.png │ ├── bear@2x.png │ ├── cat.png │ ├── cat@2x.png │ ├── dog.png │ ├── dog@2x.png │ ├── elephant.png │ ├── elephant@2x.png │ ├── help.png │ ├── help@2x.png │ ├── info.png │ ├── info@2x.png │ ├── monkey.png │ ├── monkey@2x.png │ ├── paw.png │ ├── paw@2x.png │ ├── photo.jpg │ ├── random.png │ ├── random@2x.png │ ├── xamarin_logo.png │ ├── xamarin_logo@2x.png │ ├── xamarin_logo@3x.png │ └── xamarinstore.jpg ├── MainPage.xaml ├── MainPage.xaml.cs ├── Package.appxmanifest ├── Properties │ ├── AssemblyInfo.cs │ └── Default.rd.xml └── Xaminals.UWP.csproj ├── Xaminals.iOS ├── AppDelegate.cs ├── Assets.xcassets │ └── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon1024.png │ │ ├── Icon120.png │ │ ├── Icon152.png │ │ ├── Icon167.png │ │ ├── Icon180.png │ │ ├── Icon20.png │ │ ├── Icon29.png │ │ ├── Icon40.png │ │ ├── Icon58.png │ │ ├── Icon60.png │ │ ├── Icon76.png │ │ ├── Icon80.png │ │ └── Icon87.png ├── Entitlements.plist ├── Info.plist ├── Main.cs ├── Properties │ └── AssemblyInfo.cs ├── Resources │ ├── 3bar.png │ ├── 3bar@2x.png │ ├── Default-568h@2x.png │ ├── Default-Portrait.png │ ├── Default-Portrait@2x.png │ ├── Default.png │ ├── Default@2x.png │ ├── LaunchScreen.storyboard │ ├── back.png │ ├── back@2x.png │ ├── bear.png │ ├── bear@2x.png │ ├── cat.png │ ├── cat@2x.png │ ├── dog.png │ ├── dog@2x.png │ ├── elephant.png │ ├── elephant@2x.png │ ├── help.png │ ├── help@2x.png │ ├── info.png │ ├── info@2x.png │ ├── monkey.png │ ├── monkey@2x.png │ ├── paw.png │ ├── paw@2x.png │ ├── photo.jpg │ ├── random.png │ ├── random@2x.png │ ├── xamarin_logo.png │ ├── xamarin_logo@2x.png │ ├── xamarin_logo@3x.png │ └── xamarinstore.jpg └── Xaminals.iOS.csproj ├── Xaminals.sln ├── Xaminals ├── App.xaml ├── App.xaml.cs ├── AppShell.xaml ├── AppShell.xaml.cs ├── Controls │ ├── AnimalSearchHandler.cs │ ├── FlyoutFooter.xaml │ ├── FlyoutFooter.xaml.cs │ ├── FlyoutHeader.xaml │ ├── FlyoutHeader.xaml.cs │ └── MonkeySearchHandler.cs ├── Data │ ├── BearData.cs │ ├── CatData.cs │ ├── DogData.cs │ ├── ElephantData.cs │ └── MonkeyData.cs ├── Models │ └── Animal.cs ├── ViewModels │ ├── BearsViewModel.cs │ └── MonkeyDetailViewModel.cs ├── Views │ ├── AboutPage.xaml │ ├── AboutPage.xaml.cs │ ├── BearDetailPage.xaml │ ├── BearDetailPage.xaml.cs │ ├── BearsPage.xaml │ ├── BearsPage.xaml.cs │ ├── CatDetailPage.xaml │ ├── CatDetailPage.xaml.cs │ ├── CatsPage.xaml │ ├── CatsPage.xaml.cs │ ├── DogDetailPage.xaml │ ├── DogDetailPage.xaml.cs │ ├── DogsPage.xaml │ ├── DogsPage.xaml.cs │ ├── ElephantDetailPage.xaml │ ├── ElephantDetailPage.xaml.cs │ ├── ElephantsPage.xaml │ ├── ElephantsPage.xaml.cs │ ├── MonkeyDetailPage.xaml │ ├── MonkeyDetailPage.xaml.cs │ ├── MonkeysPage.xaml │ └── MonkeysPage.xaml.cs └── Xaminals.csproj ├── ascii.cfg └── cso.cfg /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | --- 11 | name: Bug report 12 | about: Create a report to help us improve 13 | title: '' 14 | labels: 'bug' 15 | 16 | 17 | --- 18 | 19 | **Version Used**: 20 | 21 | **Steps to Reproduce**: 22 | 23 | 1. 24 | 2. 25 | 3. 26 | 27 | **Expected Behavior**: 28 | 29 | **Actual Behavior**: 30 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | --- 11 | name: Feature request 12 | about: Suggest an idea for this project 13 | title: '' 14 | labels: enhancement 15 | 16 | --- 17 | 18 | **Is your feature request related to a problem? Please describe.** 19 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 20 | 21 | **Describe the solution you'd like** 22 | A clear and concise description of what you want to happen. 23 | 24 | **Describe alternatives you've considered** 25 | A clear and concise description of any alternative solutions or features you've considered. 26 | 27 | **Additional context** 28 | Add any other context or screenshots about the feature request here. 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /**/*.orig 2 | **/bin/** 3 | **/obj** 4 | **/AppPackages/** 5 | **/.vs/** 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CSharp Obfuscator 2 | CSharp Obfuscator protects your .NET application code through obfuscation transforms, while maintaining debugging abilities for quality assurance testing. This is made possible by the [Roslyn](https://github.com/dotnet/roslyn) open source project. 3 | 4 | ## Features 5 | ### Renaming 6 | Rename obfuscation applies trivial names, as short as a single character, to methods, variables, classes, and fields that allow code readability. 7 | ![obfuscation](img/cso.png?raw=true) 8 | 9 | ### Scrambling Strings 10 | CSharp Obfuscator extracts all strings and puts them in a seperate source file. All strings are serialized and encoded, which blocks the hacker from locating the critical method by searching for keyword strings. For further protection, you can encrypt the strings using your unique key. 11 | 12 | #### Before 13 | ![string1](img/string1.png?raw=true) 14 | 15 | #### After 16 | ![string2](img/string2.png?raw=true) 17 | 18 | #### string file 19 | ![string3](img/string3.png?raw=true) 20 | 21 | #### Encrypt strings with an extension DLL 22 | 23 | - Download [the extension project](https://github.com/nwtsolution/CSharpObfuscator/tree/main/csoextension) 24 | - Implement the encryption in the EncodeStringArray method 25 | - Return the full name of the decryption method that exists in your project/solution 26 | - Build the project and set the file path in the configuration file 27 | 28 | ## Integrate with the existing development cycle 29 | CSharp Obfuscator obfuscates your source code, so you can run full quality assurance tests even after your source code has been obfuscated, ensuring that your code is both tested and protected. It will also update Xamarin XAML files with the obfuscated code. 30 | 31 | ![flow](img/flow.gif?raw=true) 32 | 33 | It can be seamlessly integrated with the exising development cycle when each c# project only targets one framework. If a c# project targets multiple framework, you need obfuscate the project for each framework seperately. 34 | 35 | 36 | ## Versions 37 | 38 | Both free and premium versions are available. Please check [NorWest Solution](https://www.nwtsolution.com/cso.html) for details. 39 | 40 | ## Command Line 41 | 42 | Usage: cso.exe [MSBuild options] [Options] 43 | 44 | MSBuild options: the same options when you use MSBuild.exe to build your solution. 45 | 46 | Options: 47 | -activate:account={account};sn={sn} Activate your license 48 | -deactivate Deactivate your license 49 | -config:{file} A file containing the obfuscation configuration and rules 50 | 51 | ### Obfuscation Configuration File 52 | - A text file that contains the obfuscation configuration and rules. 53 | - Each configuration rule should be on a separate line. 54 | - Any lines starting with a hash symbol (#) will be ignored. 55 | 56 | #### Configuration 57 | 58 | Name | Value | Note 59 | -----|-------|----- 60 | MSBuildPath|path of MSBuild.exe|Specify the path if you have more than one MSBuild.exe installed 61 | Obfuscate|all|By default, all public declarations will not be obfuscated. Use this option to obfuscate all declarations. 62 | UseASCII|true|By default, declarations will be obfuscated with symbol characters. Use this option to obfuscate all declaration with ASCII characters. 63 | Reserve|comma separated word list| Reserved keywords 64 | ASCII|comma separated word list| Use ASCII characters for the matched declaration 65 | Suffix| any letter that is allowed to be used as a declaration name| The suffix of an obfuscated declaration. 66 | Prefix| any letter that is allowed to be used as a declaration name| The prefix of an obfuscated declaration. 67 | Reuse|true|Save the obfuscation result into a file (cso.db). Reuse the file for your next obfuscation. 68 | Extension| path of the extension assembly|Use the extension assembly to encrypt strings. 69 | 70 | #### Rules 71 | 72 | Use rules to skip the obfuscation of matched declarations. Use the following format to define a rule: 73 | 74 | keep {type} {pattern} 75 | 76 | A pattern should be the fullname of a declaration and can use an asterisk (*) as the wildcard, such as 77 | 78 | keep namespace *.Tests 79 | 80 | ##### Available rules 81 | Name | Note 82 | -----|------- 83 | project| skip processing matched projects 84 | file:string| does not extract strings from matched files 85 | namespace| keep declarations within the matched namespace 86 | namespace:name| keep the namespace name only 87 | type| keep declarations within the matched type, it could be a class, enum or interface 88 | type:name| keep the type name only 89 | method| keep declaration within the matched method 90 | method:name| keep the method name only 91 | method:parameter| keep method parameters 92 | property| keep property 93 | variable| keep field variable 94 | enum:value| keep values of an enum 95 | any| comma separated word, does not support wildcard 96 | 97 | 98 | -------------------------------------------------------------------------------- /csoextension/StringUtility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Runtime.Serialization.Formatters.Binary; 4 | 5 | namespace CSharpObfuscator.Extension 6 | { 7 | public static class StringUtility 8 | { 9 | public static string EncodeStringArray(string project, string[] array) 10 | { 11 | //implement your own encryption and encoding 12 | using (var ms = new MemoryStream()) 13 | { 14 | new BinaryFormatter().Serialize(ms, array); 15 | return Convert.ToBase64String(ms.ToArray()); 16 | } 17 | } 18 | public static string GetDecodeToStringArrayMethodName(string project) 19 | { 20 | //the full name of the decoding method in your project 21 | return "CSharpObfuscator.Utility.StringHelpers.DecodeToStringArray"; 22 | } 23 | } 24 | } 25 | 26 | /* 27 | namespace CSharpObfuscator.Utility 28 | { 29 | public static class StringHelpers 30 | { 31 | public static string[] DecodeToStringArray(string content) 32 | { 33 | using (var ms = new MemoryStream(Convert.FromBase64String(content))) 34 | return (string[])new BinaryFormatter().Deserialize(ms); 35 | } 36 | } 37 | } 38 | */ 39 | -------------------------------------------------------------------------------- /csoextension/csoextension.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net472 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /img/cso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/cso.png -------------------------------------------------------------------------------- /img/flow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/flow.gif -------------------------------------------------------------------------------- /img/issue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/issue.png -------------------------------------------------------------------------------- /img/solution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/solution.png -------------------------------------------------------------------------------- /img/string.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/string.gif -------------------------------------------------------------------------------- /img/string1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/string1.png -------------------------------------------------------------------------------- /img/string2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/string2.png -------------------------------------------------------------------------------- /img/string3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/string3.png -------------------------------------------------------------------------------- /sample/Xaminals/README.md: -------------------------------------------------------------------------------- 1 | 2 | # Xamarin Project Sample 3 | 4 | This sample demonstrates how to use CSharp Obfuscator to obfuscate a Xamarin solution. The solution is copied from the [Xamarin.Forms Samples](https://github.com/xamarin/xamarin-forms-samples/tree/master/UserInterface/Xaminals) repository 5 | 6 | ## Steps to obfuscate 7 | 8 | - Insatll the latest version of Visual Studio 2019. 9 | 10 | - Restore referenced packages 11 | 12 | msbuild Xaminals.sln -t:restore -p:Configuration=Debug 13 | 14 | - Build solution 15 | 16 | msbuild Xaminals.sln -t:rebuild -p:Configuration=Debug 17 | 18 | - Obfuscate solution 19 | 20 | cso Xaminals.sln -t:rebuild -p:Configuration=Debug -Config:cso.cfg 21 | 22 | - Check the obfuscation result 23 | 24 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Assets/AboutAssets.txt: -------------------------------------------------------------------------------- 1 | Any raw assets you want to be deployed with your application can be placed in 2 | this directory (and child directories) and given a Build Action of "AndroidAsset". 3 | 4 | These files will be deployed with you package and will be accessible using Android's 5 | AssetManager, like this: 6 | 7 | public class ReadAsset : Activity 8 | { 9 | protected override void OnCreate (Bundle bundle) 10 | { 11 | base.OnCreate (bundle); 12 | 13 | InputStream input = Assets.Open ("my_asset.txt"); 14 | } 15 | } 16 | 17 | Additionally, some Android functions will automatically load asset files: 18 | 19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); 20 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Content.PM; 3 | using Android.Runtime; 4 | using Android.OS; 5 | 6 | namespace Xaminals.Droid 7 | { 8 | [Activity(Label = "Xaminals", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 9 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 10 | { 11 | protected override void OnCreate(Bundle savedInstanceState) 12 | { 13 | base.OnCreate(savedInstanceState); 14 | 15 | Window.SetStatusBarColor(Android.Graphics.Color.Argb(255, 0, 0, 0)); 16 | global::Xamarin.Forms.Forms.Init(this, savedInstanceState); 17 | Xamarin.Essentials.Platform.Init(this, savedInstanceState); 18 | LoadApplication(new App()); 19 | } 20 | 21 | public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) 22 | { 23 | Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); 24 | 25 | base.OnRequestPermissionsResult(requestCode, permissions, grantResults); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | using Android.App; 5 | 6 | // General Information about an assembly is controlled through the following 7 | // set of attributes. Change these attribute values to modify the information 8 | // associated with an assembly. 9 | [assembly: AssemblyTitle("Xaminals.Android")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("Xaminals.Android")] 14 | [assembly: AssemblyCopyright("Copyright © 2014")] 15 | [assembly: AssemblyTrademark("")] 16 | [assembly: AssemblyCulture("")] 17 | [assembly: ComVisible(false)] 18 | 19 | // Version information for an assembly consists of the following four values: 20 | // 21 | // Major Version 22 | // Minor Version 23 | // Build Number 24 | // Revision 25 | // 26 | // You can specify all the values or you can default the Build and Revision Numbers 27 | // by using the '*' as shown below: 28 | // [assembly: AssemblyVersion("1.0.*")] 29 | [assembly: AssemblyVersion("1.0.0.0")] 30 | [assembly: AssemblyFileVersion("1.0.0.0")] 31 | 32 | // Add some common permissions, these can be removed if not needed 33 | [assembly: UsesPermission(Android.Manifest.Permission.Internet)] 34 | [assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)] 35 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/AboutResources.txt: -------------------------------------------------------------------------------- 1 | Images, layout descriptions, binary blobs and string dictionaries can be included 2 | in your application as resource files. Various Android APIs are designed to 3 | operate on the resource IDs instead of dealing with images, strings or binary blobs 4 | directly. 5 | 6 | For example, a sample Android app that contains a user interface layout (main.xml), 7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) 8 | would keep its resources in the "Resources" directory of the application: 9 | 10 | Resources/ 11 | drawable-hdpi/ 12 | icon.png 13 | 14 | drawable-ldpi/ 15 | icon.png 16 | 17 | drawable-mdpi/ 18 | icon.png 19 | 20 | layout/ 21 | main.xml 22 | 23 | values/ 24 | strings.xml 25 | 26 | In order to get the build system to recognize Android resources, set the build action to 27 | "AndroidResource". The native Android APIs do not operate directly with filenames, but 28 | instead operate on resource IDs. When you compile an Android application that uses resources, 29 | the build system will package the resources for distribution and generate a class called 30 | "Resource" that contains the tokens for each one of the resources included. For example, 31 | for the above Resources layout, this is what the Resource class would expose: 32 | 33 | public class Resource { 34 | public class drawable { 35 | public const int icon = 0x123; 36 | } 37 | 38 | public class layout { 39 | public const int main = 0x456; 40 | } 41 | 42 | public class strings { 43 | public const int first_string = 0xabc; 44 | public const int second_string = 0xbcd; 45 | } 46 | } 47 | 48 | You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main 49 | to reference the layout/main.xml file, or Resource.strings.first_string to reference the first 50 | string in the dictionary file values/strings.xml. 51 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/back.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/bear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/bear.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/cat.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/dog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/dog.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/elephant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/elephant.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/help.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/info.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/monkey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/monkey.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/paw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/paw.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/photo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/photo.jpg -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/random.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/random.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/xamarin_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/xamarin_logo.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/drawable/xamarinstore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/xamarinstore.jpg -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-anydpi-v26/icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-anydpi-v26/icon_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-hdpi/icon.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-hdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-hdpi/launcher_foreground.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-mdpi/icon.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-mdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-mdpi/launcher_foreground.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xhdpi/icon.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-xhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-xxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxhdpi/icon.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-xxhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-xxxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxxhdpi/icon.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | #3F51B5 5 | #303F9F 6 | #FF4081 7 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Resources/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 24 | 27 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.Android/Xaminals.Android.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | {DA067342-E7FA-4C40-8809-21401D523D47} 7 | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 8 | {c9e5eea5-ca05-42a1-839b-61506e0a37df} 9 | Library 10 | Xaminals.Droid 11 | Xaminals.Android 12 | True 13 | Resources\Resource.designer.cs 14 | Resource 15 | Properties\AndroidManifest.xml 16 | Resources 17 | Assets 18 | v10.0 19 | Xamarin.Android.Net.AndroidClientHandler 20 | 21 | 22 | 23 | 24 | true 25 | portable 26 | false 27 | bin\Debug 28 | DEBUG; 29 | prompt 30 | 4 31 | None 32 | 33 | 34 | true 35 | pdbonly 36 | true 37 | bin\Release 38 | prompt 39 | 4 40 | true 41 | false 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | {CD4DE9E8-2721-47F3-BA95-999B6F75FF27} 102 | Xaminals 103 | 104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.ApplicationModel; 3 | using Windows.ApplicationModel.Activation; 4 | using Windows.UI.Xaml; 5 | using Windows.UI.Xaml.Controls; 6 | using Windows.UI.Xaml.Navigation; 7 | 8 | namespace Xaminals.UWP 9 | { 10 | /// 11 | /// Provides application-specific behavior to supplement the default Application class. 12 | /// 13 | sealed partial class App : Application 14 | { 15 | /// 16 | /// Initializes the singleton application object. This is the first line of authored code 17 | /// executed, and as such is the logical equivalent of main() or WinMain(). 18 | /// 19 | public App() 20 | { 21 | this.InitializeComponent(); 22 | this.Suspending += OnSuspending; 23 | } 24 | 25 | /// 26 | /// Invoked when the application is launched normally by the end user. Other entry points 27 | /// will be used such as when the application is launched to open a specific file. 28 | /// 29 | /// Details about the launch request and process. 30 | protected override void OnLaunched(LaunchActivatedEventArgs e) 31 | { 32 | Frame rootFrame = Window.Current.Content as Frame; 33 | 34 | // Do not repeat app initialization when the Window already has content, 35 | // just ensure that the window is active 36 | if (rootFrame == null) 37 | { 38 | // Create a Frame to act as the navigation context and navigate to the first page 39 | rootFrame = new Frame(); 40 | 41 | rootFrame.NavigationFailed += OnNavigationFailed; 42 | 43 | Xamarin.Forms.Forms.SetFlags("Shell_UWP_Experimental"); 44 | Xamarin.Forms.Forms.Init(e); 45 | 46 | if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) 47 | { 48 | //TODO: Load state from previously suspended application 49 | } 50 | 51 | // Place the frame in the current Window 52 | Window.Current.Content = rootFrame; 53 | } 54 | 55 | if (e.PrelaunchActivated == false) 56 | { 57 | if (rootFrame.Content == null) 58 | { 59 | // When the navigation stack isn't restored navigate to the first page, 60 | // configuring the new page by passing required information as a navigation 61 | // parameter 62 | rootFrame.Navigate(typeof(MainPage), e.Arguments); 63 | } 64 | // Ensure the current window is active 65 | Window.Current.Activate(); 66 | } 67 | } 68 | 69 | /// 70 | /// Invoked when Navigation to a certain page fails 71 | /// 72 | /// The Frame which failed navigation 73 | /// Details about the navigation failure 74 | void OnNavigationFailed(object sender, NavigationFailedEventArgs e) 75 | { 76 | throw new Exception("Failed to load Page " + e.SourcePageType.FullName); 77 | } 78 | 79 | /// 80 | /// Invoked when application execution is being suspended. Application state is saved 81 | /// without knowing whether the application will be terminated or resumed with the contents 82 | /// of memory still intact. 83 | /// 84 | /// The source of the suspend request. 85 | /// Details about the suspend request. 86 | private void OnSuspending(object sender, SuspendingEventArgs e) 87 | { 88 | var deferral = e.SuspendingOperation.GetDeferral(); 89 | //TODO: Save application state and stop any background activity 90 | deferral.Complete(); 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/3bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/3bar.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/3bar@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/3bar@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/StoreLogo.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/back.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/back@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/bear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/bear.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/bear@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/bear@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/cat.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/cat@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/cat@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/dog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/dog.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/dog@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/dog@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/elephant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/elephant.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/elephant@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/elephant@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/help.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/help@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/help@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/info.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/info@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/info@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/monkey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/monkey.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/monkey@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/monkey@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/paw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/paw.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/paw@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/paw@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/photo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/photo.jpg -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/random.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/random.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/random@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/random@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo@3x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Assets/xamarinstore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/xamarinstore.jpg -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/MainPage.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/MainPage.xaml.cs: -------------------------------------------------------------------------------- 1 | namespace Xaminals.UWP 2 | { 3 | public sealed partial class MainPage 4 | { 5 | public MainPage() 6 | { 7 | this.InitializeComponent(); 8 | this.LoadApplication(new Xaminals.App()); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Package.appxmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | Xaminals.UWP 18 | Dave 19 | Assets\StoreLogo.png 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 34 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Xaminals.UWP")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Xaminals.UWP")] 13 | [assembly: AssemblyCopyright("Copyright © 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.UWP/Xaminals.UWP.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | x86 7 | {73754C6F-1DB5-4BB0-85B3-D85E159C5A57} 8 | AppContainerExe 9 | Properties 10 | Xaminals.UWP 11 | Xaminals.UWP 12 | en-US 13 | UAP 14 | 10.0.18362.0 15 | 10.0.16299.0 16 | 14 17 | 512 18 | {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 19 | true 20 | false 21 | 22 | 23 | true 24 | bin\x86\Debug\ 25 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP 26 | ;2008 27 | full 28 | x86 29 | false 30 | prompt 31 | true 32 | 33 | 34 | bin\x86\Release\ 35 | TRACE;NETFX_CORE;WINDOWS_UWP 36 | true 37 | ;2008 38 | pdbonly 39 | x86 40 | false 41 | prompt 42 | true 43 | true 44 | 45 | 46 | true 47 | bin\ARM\Debug\ 48 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP 49 | ;2008 50 | full 51 | ARM 52 | false 53 | prompt 54 | true 55 | 56 | 57 | bin\ARM\Release\ 58 | TRACE;NETFX_CORE;WINDOWS_UWP 59 | true 60 | ;2008 61 | pdbonly 62 | ARM 63 | false 64 | prompt 65 | true 66 | true 67 | 68 | 69 | true 70 | bin\ARM64\Debug\ 71 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP 72 | ;2008 73 | full 74 | ARM64 75 | false 76 | prompt 77 | true 78 | true 79 | 80 | 81 | bin\ARM64\Release\ 82 | TRACE;NETFX_CORE;WINDOWS_UWP 83 | true 84 | ;2008 85 | pdbonly 86 | ARM64 87 | false 88 | prompt 89 | true 90 | true 91 | 92 | 93 | true 94 | bin\x64\Debug\ 95 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP 96 | ;2008 97 | full 98 | x64 99 | false 100 | prompt 101 | true 102 | 103 | 104 | bin\x64\Release\ 105 | TRACE;NETFX_CORE;WINDOWS_UWP 106 | true 107 | ;2008 108 | pdbonly 109 | x64 110 | false 111 | prompt 112 | true 113 | true 114 | 115 | 116 | PackageReference 117 | 118 | 119 | 120 | App.xaml 121 | 122 | 123 | MainPage.xaml 124 | 125 | 126 | 127 | 128 | 129 | Designer 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | MSBuild:Compile 172 | Designer 173 | 174 | 175 | MSBuild:Compile 176 | Designer 177 | 178 | 179 | 180 | 181 | 6.2.9 182 | 183 | 184 | 1.3.1 185 | 186 | 187 | 5.0.0.1874 188 | 189 | 190 | 191 | 192 | {cd4de9e8-2721-47f3-ba95-999b6f75ff27} 193 | Xaminals 194 | 195 | 196 | 197 | 14.0 198 | 199 | 200 | 207 | 208 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using Foundation; 2 | using UIKit; 3 | 4 | namespace Xaminals.iOS 5 | { 6 | [Register("AppDelegate")] 7 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate 8 | { 9 | public override bool FinishedLaunching(UIApplication app, NSDictionary options) 10 | { 11 | global::Xamarin.Forms.Forms.Init(); 12 | LoadApplication(new App()); 13 | 14 | return base.FinishedLaunching(app, options); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "scale": "2x", 5 | "size": "20x20", 6 | "idiom": "iphone", 7 | "filename": "Icon40.png" 8 | }, 9 | { 10 | "scale": "3x", 11 | "size": "20x20", 12 | "idiom": "iphone", 13 | "filename": "Icon60.png" 14 | }, 15 | { 16 | "scale": "2x", 17 | "size": "29x29", 18 | "idiom": "iphone", 19 | "filename": "Icon58.png" 20 | }, 21 | { 22 | "scale": "3x", 23 | "size": "29x29", 24 | "idiom": "iphone", 25 | "filename": "Icon87.png" 26 | }, 27 | { 28 | "scale": "2x", 29 | "size": "40x40", 30 | "idiom": "iphone", 31 | "filename": "Icon80.png" 32 | }, 33 | { 34 | "scale": "3x", 35 | "size": "40x40", 36 | "idiom": "iphone", 37 | "filename": "Icon120.png" 38 | }, 39 | { 40 | "scale": "2x", 41 | "size": "60x60", 42 | "idiom": "iphone", 43 | "filename": "Icon120.png" 44 | }, 45 | { 46 | "scale": "3x", 47 | "size": "60x60", 48 | "idiom": "iphone", 49 | "filename": "Icon180.png" 50 | }, 51 | { 52 | "scale": "1x", 53 | "size": "20x20", 54 | "idiom": "ipad", 55 | "filename": "Icon20.png" 56 | }, 57 | { 58 | "scale": "2x", 59 | "size": "20x20", 60 | "idiom": "ipad", 61 | "filename": "Icon40.png" 62 | }, 63 | { 64 | "scale": "1x", 65 | "size": "29x29", 66 | "idiom": "ipad", 67 | "filename": "Icon29.png" 68 | }, 69 | { 70 | "scale": "2x", 71 | "size": "29x29", 72 | "idiom": "ipad", 73 | "filename": "Icon58.png" 74 | }, 75 | { 76 | "scale": "1x", 77 | "size": "40x40", 78 | "idiom": "ipad", 79 | "filename": "Icon40.png" 80 | }, 81 | { 82 | "scale": "2x", 83 | "size": "40x40", 84 | "idiom": "ipad", 85 | "filename": "Icon80.png" 86 | }, 87 | { 88 | "scale": "1x", 89 | "size": "76x76", 90 | "idiom": "ipad", 91 | "filename": "Icon76.png" 92 | }, 93 | { 94 | "scale": "2x", 95 | "size": "76x76", 96 | "idiom": "ipad", 97 | "filename": "Icon152.png" 98 | }, 99 | { 100 | "scale": "2x", 101 | "size": "83.5x83.5", 102 | "idiom": "ipad", 103 | "filename": "Icon167.png" 104 | }, 105 | { 106 | "scale": "1x", 107 | "size": "1024x1024", 108 | "idiom": "ios-marketing", 109 | "filename": "Icon1024.png" 110 | } 111 | ], 112 | "properties": {}, 113 | "info": { 114 | "version": 1, 115 | "author": "xcode" 116 | } 117 | } -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIDeviceFamily 6 | 7 | 1 8 | 2 9 | 10 | UISupportedInterfaceOrientations 11 | 12 | UIInterfaceOrientationPortrait 13 | UIInterfaceOrientationLandscapeLeft 14 | UIInterfaceOrientationLandscapeRight 15 | 16 | UISupportedInterfaceOrientations~ipad 17 | 18 | UIInterfaceOrientationPortrait 19 | UIInterfaceOrientationPortraitUpsideDown 20 | UIInterfaceOrientationLandscapeLeft 21 | UIInterfaceOrientationLandscapeRight 22 | 23 | MinimumOSVersion 24 | 8.0 25 | CFBundleDisplayName 26 | Xaminals 27 | CFBundleIdentifier 28 | com.companyname.Xaminals 29 | CFBundleVersion 30 | 1.0 31 | UILaunchStoryboardName 32 | LaunchScreen 33 | CFBundleName 34 | Xaminals 35 | XSAppIconAssets 36 | Assets.xcassets/AppIcon.appiconset 37 | 38 | 39 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace Xaminals.iOS 4 | { 5 | public class Application 6 | { 7 | // This is the main entry point of the application. 8 | static void Main(string[] args) 9 | { 10 | // if you want to use a different Application Delegate class from "AppDelegate" 11 | // you can specify it here. 12 | UIApplication.Main(args, null, "AppDelegate"); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Xaminals.iOS")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Xaminals.iOS")] 13 | [assembly: AssemblyCopyright("Copyright © 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/3bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/3bar.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/3bar@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/3bar@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/Default-568h@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/Default-Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/Default-Portrait.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/Default-Portrait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/Default-Portrait@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/Default.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/Default@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/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 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/back.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/back@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/bear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/bear.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/bear@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/bear@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/cat.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/cat@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/cat@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/dog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/dog.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/dog@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/dog@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/elephant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/elephant.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/elephant@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/elephant@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/help.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/help@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/help@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/info.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/info@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/info@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/monkey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/monkey.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/monkey@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/monkey@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/paw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/paw.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/paw@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/paw@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/photo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/photo.jpg -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/random.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/random.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/random@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/random@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo@2x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo@3x.png -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Resources/xamarinstore.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/xamarinstore.jpg -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals.iOS/Xaminals.iOS.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | iPhoneSimulator 6 | 8.0.30703 7 | 2.0 8 | {2EAAEE32-09F5-4390-9CA5-C67B7CE09BA2} 9 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 10 | {6143fdea-f3c2-4a09-aafa-6e230626515e} 11 | Exe 12 | Xaminals.iOS 13 | Resources 14 | Xaminals.iOS 15 | NSUrlSessionHandler 16 | 17 | 18 | 19 | 20 | true 21 | full 22 | false 23 | bin\iPhoneSimulator\Debug 24 | DEBUG 25 | prompt 26 | 4 27 | false 28 | x86_64 29 | None 30 | true 31 | 32 | 33 | none 34 | true 35 | bin\iPhoneSimulator\Release 36 | prompt 37 | 4 38 | None 39 | x86_64 40 | false 41 | 42 | 43 | true 44 | full 45 | false 46 | bin\iPhone\Debug 47 | DEBUG 48 | prompt 49 | 4 50 | false 51 | ARM64 52 | iPhone Developer 53 | true 54 | Entitlements.plist 55 | 56 | 57 | none 58 | true 59 | bin\iPhone\Release 60 | prompt 61 | 4 62 | ARM64 63 | false 64 | iPhone Developer 65 | Entitlements.plist 66 | 67 | 68 | none 69 | True 70 | bin\iPhone\Ad-Hoc 71 | prompt 72 | 4 73 | False 74 | ARM64 75 | True 76 | Automatic:AdHoc 77 | iPhone Distribution 78 | Entitlements.plist 79 | 80 | 81 | none 82 | True 83 | bin\iPhone\AppStore 84 | prompt 85 | 4 86 | False 87 | ARM64 88 | Automatic:AppStore 89 | iPhone Distribution 90 | Entitlements.plist 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | false 103 | 104 | 105 | false 106 | 107 | 108 | false 109 | 110 | 111 | false 112 | 113 | 114 | false 115 | 116 | 117 | false 118 | 119 | 120 | false 121 | 122 | 123 | false 124 | 125 | 126 | false 127 | 128 | 129 | false 130 | 131 | 132 | false 133 | 134 | 135 | false 136 | 137 | 138 | false 139 | 140 | 141 | false 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | {CD4DE9E8-2721-47F3-BA95-999B6F75FF27} 154 | Xaminals 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/App.xaml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 45 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using Xamarin.Forms; 2 | using Xamarin.Forms.Xaml; 3 | 4 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)] 5 | namespace Xaminals 6 | { 7 | public partial class App : Application 8 | { 9 | public App() 10 | { 11 | InitializeComponent(); 12 | 13 | MainPage = new AppShell(); 14 | } 15 | 16 | protected override void OnStart() 17 | { 18 | // Handle when your app starts 19 | } 20 | 21 | protected override void OnSleep() 22 | { 23 | // Handle when your app sleeps 24 | } 25 | 26 | protected override void OnResume() 27 | { 28 | // Handle when your app resumes 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/AppShell.xaml: -------------------------------------------------------------------------------- 1 |  2 | 12 | 13 | 26 | 34 | 40 | 46 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 85 | 86 | 87 | 88 | 101 | 102 | 103 | 104 | 117 | 118 | 119 | 120 | 135 | 136 | 137 | 154 | 155 | 156 | 173 | 174 | 177 | 180 | 185 | 190 | 191 | 192 | 203 | 208 | 213 | 218 | 219 | 220 | 225 | 226 | 229 | 233 | 234 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/AppShell.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Input; 6 | using Xamarin.Essentials; 7 | using Xamarin.Forms; 8 | using Xaminals.Data; 9 | using Xaminals.Views; 10 | 11 | namespace Xaminals 12 | { 13 | public partial class AppShell : Shell 14 | { 15 | Random rand = new Random(); 16 | Dictionary routes = new Dictionary(); 17 | public Dictionary Routes { get { return routes; } } 18 | 19 | public ICommand HelpCommand => new Command(async (url) => await Launcher.OpenAsync(url)); 20 | public ICommand RandomPageCommand => new Command(async () => await NavigateToRandomPageAsync()); 21 | 22 | public AppShell() 23 | { 24 | InitializeComponent(); 25 | RegisterRoutes(); 26 | BindingContext = this; 27 | } 28 | 29 | void RegisterRoutes() 30 | { 31 | routes.Add("monkeydetails", typeof(MonkeyDetailPage)); 32 | routes.Add("beardetails", typeof(BearDetailPage)); 33 | routes.Add("catdetails", typeof(CatDetailPage)); 34 | routes.Add("dogdetails", typeof(DogDetailPage)); 35 | routes.Add("elephantdetails", typeof(ElephantDetailPage)); 36 | 37 | foreach (var item in routes) 38 | { 39 | Routing.RegisterRoute(item.Key, item.Value); 40 | } 41 | } 42 | 43 | async Task NavigateToRandomPageAsync() 44 | { 45 | string destinationRoute = routes.ElementAt(rand.Next(0, routes.Count)).Key; 46 | string animalName = null; 47 | 48 | switch (destinationRoute) 49 | { 50 | case "monkeydetails": 51 | animalName = MonkeyData.Monkeys.ElementAt(rand.Next(0, MonkeyData.Monkeys.Count)).Name; 52 | break; 53 | case "beardetails": 54 | animalName = BearData.Bears.ElementAt(rand.Next(0, BearData.Bears.Count)).Name; 55 | break; 56 | case "catdetails": 57 | animalName = CatData.Cats.ElementAt(rand.Next(0, CatData.Cats.Count)).Name; 58 | break; 59 | case "dogdetails": 60 | animalName = DogData.Dogs.ElementAt(rand.Next(0, DogData.Dogs.Count)).Name; 61 | break; 62 | case "elephantdetails": 63 | animalName = ElephantData.Elephants.ElementAt(rand.Next(0, ElephantData.Elephants.Count)).Name; 64 | break; 65 | } 66 | 67 | ShellNavigationState state = Shell.Current.CurrentState; 68 | await Shell.Current.GoToAsync($"{state.Location}/{destinationRoute}?name={animalName}"); 69 | Shell.Current.FlyoutIsPresented = false; 70 | } 71 | 72 | //protected override void OnNavigating(ShellNavigatingEventArgs args) 73 | //{ 74 | // base.OnNavigating(args); 75 | 76 | // // Cancel any back navigation 77 | // //if (e.Source == ShellNavigationSource.Pop) 78 | // //{ 79 | // // e.Cancel(); 80 | // //} 81 | //} 82 | 83 | //protected override void OnNavigated(ShellNavigatedEventArgs args) 84 | //{ 85 | // base.OnNavigated(args); 86 | 87 | // // Perform required logic 88 | //} 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Controls/AnimalSearchHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Xamarin.Forms; 6 | using Xaminals.Models; 7 | 8 | namespace Xaminals.Controls 9 | { 10 | public class AnimalSearchHandler : SearchHandler 11 | { 12 | public IList Animals { get; set; } 13 | public Type SelectedItemNavigationTarget { get; set; } 14 | 15 | protected override void OnQueryChanged(string oldValue, string newValue) 16 | { 17 | base.OnQueryChanged(oldValue, newValue); 18 | 19 | if (string.IsNullOrWhiteSpace(newValue)) 20 | { 21 | ItemsSource = null; 22 | } 23 | else 24 | { 25 | ItemsSource = Animals 26 | .Where(animal => animal.Name.ToLower().Contains(newValue.ToLower())) 27 | .ToList(); 28 | } 29 | } 30 | 31 | protected override async void OnItemSelected(object item) 32 | { 33 | base.OnItemSelected(item); 34 | await Task.Delay(1000); 35 | 36 | ShellNavigationState state = (App.Current.MainPage as Shell).CurrentState; 37 | // Note: strings will be URL encoded for navigation (e.g. "Blue Monkey" becomes "Blue%20Monkey"). Therefore, decode at the receiver. 38 | // This works because route names are unique in this application. 39 | await Shell.Current.GoToAsync($"{GetNavigationTarget()}?name={((Animal)item).Name}"); 40 | } 41 | 42 | string GetNavigationTarget() 43 | { 44 | return (Shell.Current as AppShell).Routes.FirstOrDefault(route => route.Value.Equals(SelectedItemNavigationTarget)).Key; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Controls/FlyoutFooter.xaml: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 15 | 16 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Controls/FlyoutFooter.xaml.cs: -------------------------------------------------------------------------------- 1 | using Xamarin.Forms; 2 | 3 | namespace Xaminals.Controls 4 | { 5 | public partial class FlyoutFooter : ContentView 6 | { 7 | public FlyoutFooter() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Controls/FlyoutHeader.xaml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 16 | 17 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Controls/FlyoutHeader.xaml.cs: -------------------------------------------------------------------------------- 1 | using Xamarin.Forms; 2 | 3 | namespace Xaminals.Controls 4 | { 5 | public partial class FlyoutHeader : ContentView 6 | { 7 | public FlyoutHeader() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Controls/MonkeySearchHandler.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using System.Threading.Tasks; 3 | using Xamarin.Forms; 4 | using Xaminals.Data; 5 | using Xaminals.Models; 6 | 7 | namespace Xaminals.Controls 8 | { 9 | public class MonkeySearchHandler : SearchHandler 10 | { 11 | protected override void OnQueryChanged(string oldValue, string newValue) 12 | { 13 | base.OnQueryChanged(oldValue, newValue); 14 | 15 | if (string.IsNullOrWhiteSpace(newValue)) 16 | { 17 | ItemsSource = null; 18 | } 19 | else 20 | { 21 | ItemsSource = MonkeyData.Monkeys 22 | .Where(monkey => monkey.Name.ToLower().Contains(newValue.ToLower())) 23 | .ToList(); 24 | } 25 | } 26 | 27 | protected override async void OnItemSelected(object item) 28 | { 29 | base.OnItemSelected(item); 30 | await Task.Delay(1000); 31 | 32 | // Note: strings will be URL encoded for navigation (e.g. "Blue Monkey" becomes "Blue%20Monkey"). Therefore, decode at the receiver. 33 | // This works because route names are unique in this application. 34 | await Shell.Current.GoToAsync($"monkeydetails?name={((Animal)item).Name}"); 35 | // The full route is shown below. 36 | // await Shell.Current.GoToAsync($"//animals/monkeys/monkeydetails?name={((Animal)item).Name}"); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Data/BearData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Xaminals.Models; 3 | 4 | namespace Xaminals.Data 5 | { 6 | public static class BearData 7 | { 8 | public static IList Bears { get; private set; } 9 | 10 | static BearData() 11 | { 12 | Bears = new List(); 13 | 14 | Bears.Add(new Animal 15 | { 16 | Name = "American Black Bear", 17 | Location = "North America", 18 | Details = "The American black bear is a medium-sized bear native to North America. It is the continent's smallest and most widely distributed bear species. American black bears are omnivores, with their diets varying greatly depending on season and location. They typically live in largely forested areas, but do leave forests in search of food. Sometimes they become attracted to human communities because of the immediate availability of food. The American black bear is the world's most common bear species.", 19 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/0/08/01_Schwarzbär.jpg" 20 | }); 21 | 22 | Bears.Add(new Animal 23 | { 24 | Name = "Asian Black Bear", 25 | Location = "Asia", 26 | Details = "The Asian black bear, also known as the moon bear and the white-chested bear, is a medium-sized bear species native to Asia and largely adapted to arboreal life. It lives in the Himalayas, in the northern parts of the Indian subcontinent, Korea, northeastern China, the Russian Far East, the Honshū and Shikoku islands of Japan, and Taiwan. It is classified as vulnerable by the International Union for Conservation of Nature (IUCN), mostly because of deforestation and hunting for its body parts.", 27 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/Ursus_thibetanus_3_%28Wroclaw_zoo%29.JPG/180px-Ursus_thibetanus_3_%28Wroclaw_zoo%29.JPG" 28 | }); 29 | 30 | Bears.Add(new Animal 31 | { 32 | Name = "Brown Bear", 33 | Location = "Northern Eurasia & North America", 34 | Details = "The brown bear is a bear that is found across much of northern Eurasia and North America. In North America the population of brown bears are often called grizzly bears. It is one of the largest living terrestrial members of the order Carnivora, rivaled in size only by its closest relative, the polar bear, which is much less variable in size and slightly larger on average. The brown bear's principal range includes parts of Russia, Central Asia, China, Canada, the United States, Scandinavia and the Carpathian region, especially Romania, Anatolia and the Caucasus. The brown bear is recognized as a national and state animal in several European countries.", 35 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Kamchatka_Brown_Bear_near_Dvuhyurtochnoe_on_2015-07-23.jpg/320px-Kamchatka_Brown_Bear_near_Dvuhyurtochnoe_on_2015-07-23.jpg" 36 | }); 37 | 38 | Bears.Add(new Animal 39 | { 40 | Name = "Giant Panda", 41 | Location = "China", 42 | Details = "The giant panda, also known as panda bear or simply panda, is a bear native to south central China. It is easily recognized by the large, distinctive black patches around its eyes, over the ears, and across its round body. The name giant panda is sometimes used to distinguish it from the unrelated red panda. Though it belongs to the order Carnivora, the giant panda's diet is over 99% bamboo. Giant pandas in the wild will occasionally eat other grasses, wild tubers, or even meat in the form of birds, rodents, or carrion. In captivity, they may receive honey, eggs, fish, yams, shrub leaves, oranges, or bananas along with specially prepared food.", 43 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Grosser_Panda.JPG/320px-Grosser_Panda.JPG" 44 | }); 45 | 46 | Bears.Add(new Animal 47 | { 48 | Name = "Grizzly-Polar Bear Hybrid", 49 | Location = "Canadian Artic", 50 | Details = "A grizzly–polar bear hybrid is a rare ursid hybrid that has occurred both in captivity and in the wild. In 2006, the occurrence of this hybrid in nature was confirmed by testing the DNA of a unique-looking bear that had been shot near Sachs Harbour, Northwest Territories on Banks Island in the Canadian Arctic. The number of confirmed hybrids has since risen to eight, all of them descending from the same female polar bear.", 51 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Grolar.JPG/276px-Grolar.JPG" 52 | }); 53 | 54 | Bears.Add(new Animal 55 | { 56 | Name = "Sloth Bear", 57 | Location = "Indian Subcontinent", 58 | Details = "The sloth bear is an insectivorous bear species native to the Indian subcontinent. It is listed as Vulnerable on the IUCN Red List, mainly because of habitat loss and degradation. It has also been called labiated bear because of its long lower lip and palate used for sucking insects. Compared to brown and black bears, the sloth bear is lankier, has a long, shaggy fur and a mane around the face, and long, sickle-shaped claws. It evolved from the ancestral brown bear during the Pleistocene and through convergent evolution shares features found in insect-eating mammals.", 59 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Sloth_Bear_Washington_DC.JPG/320px-Sloth_Bear_Washington_DC.JPG" 60 | }); 61 | 62 | Bears.Add(new Animal 63 | { 64 | Name = "Sun Bear", 65 | Location = "Southeast Asia", 66 | Details = "The sun bear is a bear species occurring in tropical forest habitats of Southeast Asia. It is listed as Vulnerable on the IUCN Red List. The global population is thought to have declined by more than 30% over the past three bear generations. Suitable habitat has been dramatically reduced due to the large-scale deforestation that has occurred throughout Southeast Asia over the past three decades. The sun bear is also known as the honey bear, which refers to its voracious appetite for honeycombs and honey.", 67 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a6/Sitting_sun_bear.jpg/319px-Sitting_sun_bear.jpg" 68 | }); 69 | 70 | Bears.Add(new Animal 71 | { 72 | Name = "Polar Bear", 73 | Location = "Artic Circle", 74 | Details = "The polar bear is a hypercarnivorous bear whose native range lies largely within the Arctic Circle, encompassing the Arctic Ocean, its surrounding seas and surrounding land masses. It is a large bear, approximately the same size as the omnivorous Kodiak bear. A boar (adult male) weighs around 350–700 kg (772–1,543 lb), while a sow (adult female) is about half that size. Although it is the sister species of the brown bear, it has evolved to occupy a narrower ecological niche, with many body characteristics adapted for cold temperatures, for moving across snow, ice and open water, and for hunting seals, which make up most of its diet. Although most polar bears are born on land, they spend most of their time on the sea ice. Their scientific name means maritime bear and derives from this fact. Polar bears hunt their preferred food of seals from the edge of sea ice, often living off fat reserves when no sea ice is present. Because of their dependence on the sea ice, polar bears are classified as marine mammals.", 75 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/6/66/Polar_Bear_-_Alaska_%28cropped%29.jpg" 76 | }); 77 | 78 | Bears.Add(new Animal 79 | { 80 | Name = "Spectacled Bear", 81 | Location = "South America", 82 | Details = "The spectacled bear, also known as the Andean bear or Andean short-faced bear and locally as jukumari (Aymara), ukumari (Quechua) or ukuku, is the last remaining short-faced bear. Its closest relatives are the extinct Florida spectacled bear, and the giant short-faced bears of the Middle to Late Pleistocene age. Spectacled bears are the only surviving species of bear native to South America, and the only surviving member of the subfamily Tremarctinae. The species is classified as Vulnerable by the IUCN because of habitat loss.", 83 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Spectacled_Bear_-_Houston_Zoo.jpg/264px-Spectacled_Bear_-_Houston_Zoo.jpg" 84 | }); 85 | 86 | Bears.Add(new Animal 87 | { 88 | Name = "Cave Bear", 89 | Location = "Extinct", 90 | Details = "The cave bear was a species of bear that lived in Europe and Asia during the Pleistocene and became extinct about 24,000 years ago during the Last Glacial Maximum. Both the word cave and the scientific name spelaeus are used because fossils of this species were mostly found in caves. This reflects the views of experts that cave bears may have spent more time in caves than the brown bear, which uses caves only for hibernation.", 91 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Teufelshöhle-Höhlenbär-Dreiviertelprofil.jpg/320px-Teufelshöhle-Höhlenbär-Dreiviertelprofil.jpg" 92 | }); 93 | 94 | Bears.Add(new Animal 95 | { 96 | Name = "Short-faced Bear", 97 | Location = "Extinct", 98 | Details = "The short-faced bears is an extinct bear genus that inhabited North America during the Pleistocene epoch from about 1.8 Mya until 11,000 years ago. It was the most common early North American bear and was most abundant in California. There are two recognized species: Arctodus pristinus and Arctodus simus, with the latter considered to be one of the largest known terrestrial mammalian carnivores that has ever existed. It has been hypothesized that their extinction coincides with the Younger Dryas period of global cooling commencing around 10,900 BC.", 99 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/ArctodusSimusSkeleton.jpg/320px-ArctodusSimusSkeleton.jpg" 100 | }); 101 | 102 | Bears.Add(new Animal 103 | { 104 | Name = "California Grizzly Bear", 105 | Location = "Extinct", 106 | Details = "The California grizzly bear is an extinct subspecies of the grizzly bear, the very large North American brown bear. Grizzly could have meant grizzled (that is, with golden and grey tips of the hair) or fear-inspiring. Nonetheless, after careful study, naturalist George Ord formally classified it in 1815 – not for its hair, but for its character – as Ursus horribilis (terrifying bear). Genetically, North American grizzlies are closely related; in size and coloring, the California grizzly bear was much like the grizzly bear of the southern coast of Alaska. In California, it was particularly admired for its beauty, size and strength. The grizzly became a symbol of the Bear Flag Republic, a moniker that was attached to the short-lived attempt by a group of American settlers to break away from Mexico in 1846. Later, this rebel flag became the basis for the state flag of California, and then California was known as the Bear State.", 107 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/d/de/Monarch_the_bear.jpg" 108 | }); 109 | } 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Data/CatData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Xaminals.Models; 3 | 4 | namespace Xaminals.Data 5 | { 6 | public static class CatData 7 | { 8 | public static IList Cats { get; private set; } 9 | 10 | static CatData() 11 | { 12 | Cats = new List(); 13 | 14 | Cats.Add(new Animal 15 | { 16 | Name = "Abyssinian", 17 | Location = "Ethopia", 18 | Details = "The Abyssinian is a breed of domestic short-haired cat with a distinctive tickedtabby coat, in which individual hairs are banded with different colors. The breed is named for Abyssinia (now called Ethiopia), where it is believed to have originated.", 19 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Gustav_chocolate.jpg/168px-Gustav_chocolate.jpg" 20 | }); 21 | 22 | Cats.Add(new Animal 23 | { 24 | Name = "Arabian Mau", 25 | Location = "Arabian Peninsula", 26 | Details = "The Arabian Mau is a formal breed of domestic cat, originated from the desert cat, a short-haired landrace native to the desert of the Arabian Peninsula. It lives there in the streets and has adapted very well to the extreme climate. The Arabian Mau is recognized as a formal breed by few fancier and breeder organization and cat registry, World Cat Federation (WCF) and Emirates Feline Federation (EFF). Based on one landrace, the Arabian Mau is a natural breed.", 27 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/d/d3/Bex_Arabian_Mau.jpg" 28 | }); 29 | 30 | Cats.Add(new Animal 31 | { 32 | Name = "Bengal", 33 | Location = "Asia", 34 | Details = "The Bengal cat is a domesticated cat breed created from hybrids of domestic cats and the Asian leopard cat – the breed name comes from the taxonomic name. Back-crossing to domestic cats is then done with the goal of creating a healthy, and docile cat with wild-looking, high-contrast coat. Bengals have a wild appearance and may show spots, rosettes, arrowhead markings, or marbling.", 35 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Paintedcats_Red_Star_standing.jpg/187px-Paintedcats_Red_Star_standing.jpg" 36 | }); 37 | 38 | Cats.Add(new Animal 39 | { 40 | Name = "Burmese", 41 | Location = "Thailand", 42 | Details = "The Burmese cat is a breed of domestic cat, originating in Thailand, believed to have its roots near the present Thai-Burma border and developed in the United States and Britain.", 43 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/0/04/Blissandlucky11.jpg" 44 | }); 45 | 46 | Cats.Add(new Animal 47 | { 48 | Name = "Cyprus", 49 | Location = "Cyprus", 50 | Details = "Cyprus cats, also known as Cypriot cats, Saint Helen cats, and Saint Nicholas cats, are a landrace of domestic cat found across the island of Cyprus. A standardized breed is being developed from them; among cat fancier and breeder organizations, it is presently fully recognized by the World Cat Federation (WCF), with breeding regulated by the World Cat Congress (WCC), under the name Aphrodite's Giant; and provisionally by The International Cat Association (TICA) as the Aphrodite. All three organizations permit shorthaired and semi-longhaired versions and no out-crossing to other breeds.", 51 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/CyprusShorthair.jpg/320px-CyprusShorthair.jpg" 52 | }); 53 | 54 | Cats.Add(new Animal 55 | { 56 | Name = "German Rex", 57 | Location = "Germany", 58 | Details = "The German Rex is a medium-sized breed with slender legs of a medium length. The head is round with well-developed cheeks and large, open ears. The eyes are of medium size in colours related to the coat colour. The coat is silky and short with a tendency to curl. The whiskers also curl, though less strongly than in the Cornish Rex. They may be nearly straight. All colours of coat, including white, are allowed. The body development is heavier than in the Cornish Rex - more like the European Shorthairs.", 59 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/c/c7/German_rex_harry_%28cropped%29.jpg" 60 | }); 61 | 62 | Cats.Add(new Animal 63 | { 64 | Name = "Highlander", 65 | Location = "United States", 66 | Details = "The Highlander (also known as the Highlander Shorthair, and originally as the Highland Lynx), is an experimental breed of cat. The unique appearance of the Highlander comes from the deliberate cross between the Desert Lynx and the Jungle Curl breeds, also recently developed. The latter of these has some non-domestic ancestry from two Asian small cat species, the leopard cat and jungle cat, making the Highlander nominally a feline hybrid, though its foundation stock is mostly domestic cat.", 67 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Highlander-7.jpg/293px-Highlander-7.jpg" 68 | }); 69 | 70 | Cats.Add(new Animal 71 | { 72 | Name = "Manx", 73 | Location = "Isle of Man", 74 | Details = "The Manx cat is a breed of domestic cat originating on the Isle of Man, with a naturally occurring mutation that shortens the tail. Many Manx have a small stub of a tail, but Manx cats are best known as being entirely tailless; this is the most distinguishing characteristic of the breed, along with elongated hind legs and a rounded head. Manx cats come in all coat colours and patterns, though all-white specimens are rare, and the coat range of the original stock was more limited. Long-haired variants are sometimes considered a separate breed, the Cymric. Manx are prized as skilled hunters, and thus have often been sought by farmers with rodent problems, and been a preferred ship's cat breed. They are said to be social, tame and active. An old local term for the cats on their home island is stubbin. Manx have been exhibited in cat shows since the 1800s, with the first known breed standard published in 1903.", 75 | ImageUrl = "https://upload.wikimedia.org/wikipedia/en/9/9b/Manx_cat_by_Karen_Weaver.jpg" 76 | }); 77 | 78 | Cats.Add(new Animal 79 | { 80 | Name = "Peterbald", 81 | Location = "Russia", 82 | Details = "The Peterbald is a cat breed of Russian origin. It was created in St Petersburg in 1994 from an experimental breeding by Olga S. Mironova. They resemble Oriental Shorthairs with a hair-losing gene. The breed was accepted for Championship class competition in 2009.", 83 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/c/c7/Peterbald_male_Shango_by_Irina_Polunina.jpg" 84 | }); 85 | 86 | Cats.Add(new Animal 87 | { 88 | Name = "Scottish Fold", 89 | Location = "Scotland", 90 | Details = "The Scottish Fold is a breed of domestic cat with a natural dominant-gene mutation that affects cartilage throughout the body, causing the ears to fold, bending forward and down towards the front of the head, which gives the cat what is often described as an owl-like appearance.", 91 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Adult_Scottish_Fold.jpg/240px-Adult_Scottish_Fold.jpg" 92 | }); 93 | 94 | Cats.Add(new Animal 95 | { 96 | Name = "Sphynx", 97 | Location = "Europe", 98 | Details = "The Sphynx cat is a breed of cat known for its lack of coat (fur). It was developed through selective breeding, starting in the 1960s. The skin should have the texture of chamois, as it has fine hairs, or they may be completely hairless. Whiskers may be present, either whole or broken, or may be totally absent. They also have a narrow, long head, and webbed feet. Their skin is the color that their fur would be, and all the usual cat markings (solid, point, van, tabby, tortie, etc.) may be found on the Sphynx cat's skin. Because they have no coat, they lose more body heat than coated cats. This makes them warm to the touch as well as heat-seeking.", 99 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Sphinx2_July_2006.jpg/180px-Sphinx2_July_2006.jpg" 100 | }); 101 | } 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Data/DogData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Xaminals.Models; 3 | 4 | namespace Xaminals.Data 5 | { 6 | public static class DogData 7 | { 8 | public static IList Dogs { get; private set; } 9 | 10 | static DogData() 11 | { 12 | Dogs = new List(); 13 | 14 | Dogs.Add(new Animal 15 | { 16 | Name = "Afghan Hound", 17 | Location = "Afghanistan", 18 | Details = "The Afghan Hound is a hound that is distinguished by its thick, fine, silky coat and its tail with a ring curl at the end. The breed is selectively bred for its unique features in the cold mountains of Afghanistan. Other names for this breed are Kuchi Hound, Tāzī, Balkh Hound, Baluchi Hound, Barakzai Hound, Shalgar Hound, Kabul Hound, Galanday Hound or sometimes incorrectly African Hound.", 19 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/6/69/Afghane.jpg" 20 | }); 21 | 22 | Dogs.Add(new Animal 23 | { 24 | Name = "Alpine Dachsbracke", 25 | Location = "Austria", 26 | Details = "The Alpine Dachsbracke is a small breed of dog of the scent hound type originating in Austria. The Alpine Dachsbracke was bred to track wounded deer as well as boar, hare, and fox. It is highly efficient at following a trail even after it has gone cold. The Alpine Dachsbracke is very sturdy, and Austria is said to be the country of origin.", 27 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Alpejski_gończy_krótkonożny_g99.jpg/320px-Alpejski_gończy_krótkonożny_g99.jpg" 28 | }); 29 | 30 | Dogs.Add(new Animal 31 | { 32 | Name = "American Bulldog", 33 | Location = "United States", 34 | Details = "The American Bulldog is a breed of utility dog descended from the Old English Bulldog.", 35 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/5/5e/American_Bulldog_600.jpg" 36 | }); 37 | 38 | Dogs.Add(new Animal 39 | { 40 | Name = "Bearded Collie", 41 | Location = "Scotland", 42 | Details = "The Bearded Collie, or Beardie, is a herding breed of dog once used primarily by Scottish shepherds, but now mostly a popular family companion. Bearded Collies have an average weight of 18–27 kilograms (40–60 lb). Males are around 51–56 centimetres (20–22 in) tall at the withers while females are around 51–53 centimetres (20–21 in) tall.", 43 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/9/9c/Bearded_Collie_600.jpg" 44 | }); 45 | 46 | Dogs.Add(new Animal 47 | { 48 | Name = "Boston Terrier", 49 | Location = "United States", 50 | Details = "The Boston Terrier is a breed of dog originating in the United States of America. This American Gentleman was accepted in 1893 by the American Kennel Club as a non-sporting breed. Color and markings are important when distinguishing this breed to the AKC standard. They should be either black, brindle or seal with white markings. Bostons are small and compact with a short tail and erect ears. The AKC says they are highly intelligent and very easily trained. They are friendly and can be stubborn at times. The average life span of a Boston is around 11 to 13 years, though some can live well into their teens.", 51 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Boston-terrier-carlos-de.JPG/320px-Boston-terrier-carlos-de.JPG" 52 | }); 53 | 54 | Dogs.Add(new Animal 55 | { 56 | Name = "Canadian Eskimo", 57 | Location = "Canada", 58 | Details = "The Canadian Eskimo Dog is an Arctic breed of working dog, which is often considered to be one of North America's oldest and rarest remaining purebred indigenous domestic canines. Other names include qimmiq or qimmit. They were brought from Siberia to North America by the Thule people 1,000 years ago, along with the Greenland Dog that is genetically identical.", 59 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/7/79/Spoonsced.jpg" 60 | }); 61 | 62 | Dogs.Add(new Animal 63 | { 64 | Name = "Eurohound", 65 | Location = "Scandinavia", 66 | Details = "A Eurohound (also known as a Eurodog or Scandinavian hound) is a type of dog bred for sled dog racing. The Eurohound is typically crossbred from the Alaskan husky group and any of a number of pointing breeds.", 67 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/9/98/Eurohound.jpg" 68 | }); 69 | 70 | Dogs.Add(new Animal 71 | { 72 | Name = "Irish Terrier", 73 | Location = "Ireland", 74 | Details = "The Irish Terrier is a dog breed from Ireland, one of many breeds of terrier. The Irish Terrier is considered one of the oldest terrier breeds. The Dublin dog show in 1873 was the first to provide a separate class for Irish Terriers. By the 1880s, Irish Terriers were the fourth most popular breed in Ireland and Britain.", 75 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/IrishTerrierSydenhamHillWoods.jpg/180px-IrishTerrierSydenhamHillWoods.jpg" 76 | }); 77 | 78 | Dogs.Add(new Animal 79 | { 80 | Name = "Kerry Beagle", 81 | Location = "Ireland", 82 | Details = "The Kerry Beagle is one of the oldest Irish hound breeds, believed to be descendant from the Old Southern Hound or the Celtic Hounds. It is the only extant scent hound breed native to Ireland.", 83 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/7/75/Kerry_Beagle_from_1915.JPG" 84 | }); 85 | 86 | Dogs.Add(new Animal 87 | { 88 | Name = "Norwegian Buhund", 89 | Location = "Norway", 90 | Details = "The Norwegian Buhund is a breed of dog of the spitz type. It is closely related to the Icelandic Sheepdog and the Jämthund. The Buhund is used as an all purpose farm and herding dog, as well as watch dog and a nanny dog.", 91 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/3/3b/Norwegian_Buhund_600.jpg" 92 | }); 93 | 94 | Dogs.Add(new Animal 95 | { 96 | Name = "Patterdale Terrier", 97 | Location = "England", 98 | Details = "The Patterdale Terrier is a breed of dog descended from the Northern terrier breeds of the early 20th century. The origins of the breed can be traced back to the Lake District, specifically to Ullswater Hunt master Joe Bowman, an early Border Terrier breeder.", 99 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/05078045_Patterdale_Terrier.jpg/320px-05078045_Patterdale_Terrier.jpg" 100 | }); 101 | 102 | Dogs.Add(new Animal 103 | { 104 | Name = "St. Bernard", 105 | Location = "Italy, Switzerland", 106 | Details = "The St. Bernard or St Bernard is a breed of very large working dog from the western Alps in Italy and Switzerland. They were originally bred for rescue by the hospice of the Great St Bernard Pass on the Italian-Swiss border. The hospice, built by and named after Italian monk Bernard of Menthon, acquired its first dogs between 1660 and 1670. The breed has become famous through tales of alpine rescues, as well as for its enormous size.", 107 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Hummel_Vedor_vd_Robandahoeve.jpg/320px-Hummel_Vedor_vd_Robandahoeve.jpg" 108 | }); 109 | } 110 | } 111 | } 112 | 113 | 114 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Data/ElephantData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Xaminals.Models; 3 | 4 | namespace Xaminals.Data 5 | { 6 | public static class ElephantData 7 | { 8 | public static IList Elephants { get; private set; } 9 | 10 | static ElephantData() 11 | { 12 | Elephants = new List(); 13 | 14 | Elephants.Add(new Animal 15 | { 16 | Name = "African Bush Elephant", 17 | Location = "Africa", 18 | Details = "The African bush elephant, also known as the African savanna elephant, is the larger of the two species of African elephants, and the largest living terrestrial animal. These elephants were previously regarded as the same species, but the African forest elephant has been reclassified as L. cyclotis.", 19 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/African_Elephant_%28Loxodonta_africana%29_bull_%2831100819046%29.jpg/320px-African_Elephant_%28Loxodonta_africana%29_bull_%2831100819046%29.jpg" 20 | }); 21 | 22 | Elephants.Add(new Animal 23 | { 24 | Name = "African Forest Elephant", 25 | Location = "Africa", 26 | Details = "The African forest elephant is a forest-dwelling species of elephant found in the Congo Basin. It is the smallest of the three extant species of elephant, but still one of the largest living terrestrial animals. The African forest elephant and the African bush elephan were considered to be one species until genetic studies indicated that they separated an estimated 2–7 million years ago. From an estimated population size of over 2 million prior to the colonization of Africa, the population in 2015 is estimated to be about 100,000 forest elephants, mostly living in the forests of Gabon. Due to a slower birth rate, the forest elephant takes longer to recover from poaching, which caused its population to fall by 65% from 2002 to 2014.", 27 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/6/6a/African_Forest_Elephant.jpg" 28 | }); 29 | 30 | Elephants.Add(new Animal 31 | { 32 | Name = "Desert Elephant", 33 | Location = "Africa", 34 | Details = "Desert elephants, or desert-adapted elephants are not a distinct species of elephant but are African bush elephants that have made their homes in the Namib and Sahara deserts in Africa. It was believed at one time that they were a subspecies of the African bush elephant but this is no longer thought to be the case. Desert-dwelling elephants were once more widespread in Africa than they are now and are currently found only in Namibia and Mali. They tend to migrate from one waterhole to another following traditional routes which depend on the seasonal availability of food and water. They face pressure from poaching and from changes in land use by humans.", 35 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Desert_elephants_in_the_Huab_River.jpg/320px-Desert_elephants_in_the_Huab_River.jpg" 36 | }); 37 | 38 | Elephants.Add(new Animal 39 | { 40 | Name = "Borneo Elephant", 41 | Location = "Asia", 42 | Details = "The Borneo elephant, also called the Borneo pygmy elephant, is a subspecies of Asian elephant that inhabits northeastern Borneo, in Indonesia and Malaysia. Its origin remains the subject of debate. A definitive subspecific classification as Elephas maximus borneensis awaits a detailed range-wide morphometric and genetic study. Since 1986, Elephas maximus has been listed as Endangered on the IUCN Red List as the population has declined by at least 50% over the last three generations, estimated to be 60–75 years. The species is pre-eminently threatened by habitat loss, degradation and fragmentation.", 43 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Elephant_%40_kabini.jpg/180px-Elephant_%40_kabini.jpg" 44 | }); 45 | 46 | Elephants.Add(new Animal 47 | { 48 | Name = "Indian Elephant", 49 | Location = "Asia", 50 | Details = "The Indian elephant is one of three extant recognized subspecies of the Asian elephant and native to mainland Asia. Since 1986, the Asian elephant has been listed as Endangered on the IUCN Red List as the wild population has declined by at least 50% since the 1930s to 1940s, i.e. three elephant generations. The Asian elephant is threatened by habitat loss, degradation and fragmentation.", 51 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Elephas_maximus_%28Bandipur%29.jpg/320px-Elephas_maximus_%28Bandipur%29.jpg" 52 | }); 53 | 54 | Elephants.Add(new Animal 55 | { 56 | Name = "Sri Lankan Elephant", 57 | Location = "Asia", 58 | Details = "The Sri Lankan elephant is one of three recognized subspecies of the Asian elephant, and native to Sri Lanka. Since 1986, Elephas maximus has been listed as endangered by IUCN as the population has declined by at least 50% over the last three generations, estimated to be 60–75 years. The species is primarily threatened by habitat loss, degradation and fragmentation.", 59 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Srilankan_tuskelephant.jpg/213px-Srilankan_tuskelephant.jpg" 60 | }); 61 | 62 | Elephants.Add(new Animal 63 | { 64 | Name = "Sumatran Elephant", 65 | Location = "Asia", 66 | Details = "The Sumatran elephant is one of three recognized subspecies of the Asian elephant, and native to the Indonesia island of Sumatra. In 2011, the Sumatran elephant has been classified as critically endangered by IUCN as the population has declined by at least 80% over the last three generations, estimated to be about 75 years. The subspecies is pre-eminently threatened by habitat loss, degradation and fragmentation, and poaching; over 69% of potential elephant habitat has been lost within the last 25 years. Much of the remaining forest cover is in blocks smaller than 250 km2 (97 sq mi), which are too small to contain viable elephant populations.", 67 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Borobudur-Temple-Park_Elephant-cage-01.jpg/320px-Borobudur-Temple-Park_Elephant-cage-01.jpg" 68 | }); 69 | 70 | Elephants.Add(new Animal 71 | { 72 | Name = "Pygmy Elephant", 73 | Location = "Africa & Asia", 74 | Details = "Pygmy elephants live in both Africa and Asia.The African pygmy elephant is currently considered to be a tiny morph of the African forest elephant. The Borneo elephant, a well-documented variety of elephant, is also calledmpygmy elephant. This elephant, inhabiting tropical rainforest in north Borneo (east Sabah and extreme north Kalimantan), was long thought to be identical to the Asian elephant and descended from a captive population. In 2003, DNA comparison revealed them to be probably a new subspecies.", 75 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/9/93/Borneo-elephant-PLoS_Biology.jpg" 76 | }); 77 | 78 | Elephants.Add(new Animal 79 | { 80 | Name = "Mammoth", 81 | Location = "Extinct", 82 | Details = "A mammoth is any species of the extinct genus Mammuthus, one of the many genera that make up the order of trunked mammals called proboscideans. The various species of mammoth were commonly equipped with long, curved tusks and, in northern species, a covering of long hair. They lived from the Pliocene epoch (from around 5 million years ago) into the Holocene at about 4,000 years ago, and various species existed in Africa, Europe, Asia, and North America. They were members of the family Elephantidae, which also contains the two genera of modern elephants and their ancestors.", 83 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Columbian_mammoth.JPG/320px-Columbian_mammoth.JPG" 84 | }); 85 | 86 | Elephants.Add(new Animal 87 | { 88 | Name = "Mastodon", 89 | Location = "Extinct", 90 | Details = "Mastodons are any species of extinct proboscideans in the genus Mammut, distantly related to elephants, that inhabited North and Central America during the late Miocene or late Pliocene up to their extinction at the end of the Pleistocene 10,000 to 11,000 years ago. Mastodons lived in herds and were predominantly forest-dwelling animals that fed on a mixed diet obtained by browsing and grazing with a seasonal preference for browsing, similar to living elephants.", 91 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Mammut_americanum.jpg/320px-Mammut_americanum.jpg" 92 | }); 93 | 94 | Elephants.Add(new Animal 95 | { 96 | Name = "Dwarf Elephant", 97 | Location = "Extinct", 98 | Details = "Dwarf elephants are prehistoric members of the order Proboscidea which, through the process of allopatric speciation on islands, evolved much smaller body sizes (around 1.5-2.3 metres) in comparison with their immediate ancestors. Dwarf elephants are an example of insular dwarfism, the phenomenon whereby large terrestrial vertebrates (usually mammals) that colonize islands evolve dwarf forms, a phenomenon attributed to adaptation to resource-poor environments and selection for early maturation and reproduction. Some modern populations of Asian elephants have also undergone size reduction on islands to a lesser degree, resulting in populations of pygmy elephants.", 99 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/Elephas_skeleton.JPG/320px-Elephas_skeleton.JPG" 100 | }); 101 | 102 | Elephants.Add(new Animal 103 | { 104 | Name = "Pygmy Mammoth", 105 | Location = "Extinct", 106 | Details = "The pygmy mammoth or Channel Islands mammoth is an extinct species of dwarf elephant descended from the Columbian mammoth of mainland North America. This species became extinct during the Quaternary extinction event in which many megafauna species became extinct due to changing conditions to which the species could not adapt. A case of island or insular dwarfism, from a recent analysis in 2010 it was determined that M. exilis was on average, 1.72 m (5.6 ft) tall at the shoulders and 760 kg (1,680 lb) in weight, in stark contrast to its 4.3 m (14 ft) tall, 9,070 kg (20,000 lb) ancestor. Another estimate gives a shoulder height of 2.02 m (6.6 ft) and a weight of 1,350 kg (2,980 lb).", 107 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/f/f6/Mammuthus_exilis.jpg" 108 | }); 109 | } 110 | } 111 | } 112 | 113 | 114 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Data/MonkeyData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Xaminals.Models; 3 | 4 | namespace Xaminals.Data 5 | { 6 | public static class MonkeyData 7 | { 8 | public static IList Monkeys { get; private set; } 9 | 10 | static MonkeyData() 11 | { 12 | Monkeys = new List(); 13 | 14 | Monkeys.Add(new Animal 15 | { 16 | Name = "Baboon", 17 | Location = "Africa & Asia", 18 | Details = "Baboons are African and Arabian Old World monkeys belonging to the genus Papio, part of the subfamily Cercopithecinae.", 19 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Papio_anubis_%28Serengeti%2C_2009%29.jpg/200px-Papio_anubis_%28Serengeti%2C_2009%29.jpg" 20 | }); 21 | 22 | Monkeys.Add(new Animal 23 | { 24 | Name = "Capuchin Monkey", 25 | Location = "Central & South America", 26 | Details = "The capuchin monkeys are New World monkeys of the subfamily Cebinae. Prior to 2011, the subfamily contained only a single genus, Cebus.", 27 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Capuchin_Costa_Rica.jpg/200px-Capuchin_Costa_Rica.jpg" 28 | }); 29 | 30 | Monkeys.Add(new Animal 31 | { 32 | Name = "Blue Monkey", 33 | Location = "Central and East Africa", 34 | Details = "The blue monkey or diademed monkey is a species of Old World monkey native to Central and East Africa, ranging from the upper Congo River basin east to the East African Rift and south to northern Angola and Zambia", 35 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/BlueMonkey.jpg/220px-BlueMonkey.jpg" 36 | }); 37 | 38 | Monkeys.Add(new Animal 39 | { 40 | Name = "Squirrel Monkey", 41 | Location = "Central & South America", 42 | Details = "The squirrel monkeys are the New World monkeys of the genus Saimiri. They are the only genus in the subfamily Saimirinae. The name of the genus Saimiri is of Tupi origin, and was also used as an English name by early researchers.", 43 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Saimiri_sciureus-1_Luc_Viatour.jpg/220px-Saimiri_sciureus-1_Luc_Viatour.jpg" 44 | }); 45 | 46 | Monkeys.Add(new Animal 47 | { 48 | Name = "Golden Lion Tamarin", 49 | Location = "Brazil", 50 | Details = "The golden lion tamarin also known as the golden marmoset, is a small New World monkey of the family Callitrichidae.", 51 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Golden_lion_tamarin_portrait3.jpg/220px-Golden_lion_tamarin_portrait3.jpg" 52 | }); 53 | 54 | Monkeys.Add(new Animal 55 | { 56 | Name = "Howler Monkey", 57 | Location = "South America", 58 | Details = "Howler monkeys are among the largest of the New World monkeys. Fifteen species are currently recognised. Previously classified in the family Cebidae, they are now placed in the family Atelidae.", 59 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Alouatta_guariba.jpg/200px-Alouatta_guariba.jpg" 60 | }); 61 | 62 | Monkeys.Add(new Animal 63 | { 64 | Name = "Japanese Macaque", 65 | Location = "Japan", 66 | Details = "The Japanese macaque, is a terrestrial Old World monkey species native to Japan. They are also sometimes known as the snow monkey because they live in areas where snow covers the ground for months each", 67 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Macaca_fuscata_fuscata1.jpg/220px-Macaca_fuscata_fuscata1.jpg" 68 | }); 69 | 70 | Monkeys.Add(new Animal 71 | { 72 | Name = "Mandrill", 73 | Location = "Southern Cameroon, Gabon, Equatorial Guinea, and Congo", 74 | Details = "The mandrill is a primate of the Old World monkey family, closely related to the baboons and even more closely to the drill. It is found in southern Cameroon, Gabon, Equatorial Guinea, and Congo.", 75 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Mandrill_at_san_francisco_zoo.jpg/220px-Mandrill_at_san_francisco_zoo.jpg" 76 | }); 77 | 78 | Monkeys.Add(new Animal 79 | { 80 | Name = "Proboscis Monkey", 81 | Location = "Borneo", 82 | Details = "The proboscis monkey or long-nosed monkey, known as the bekantan in Malay, is a reddish-brown arboreal Old World monkey that is endemic to the south-east Asian island of Borneo.", 83 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/Proboscis_Monkey_in_Borneo.jpg/250px-Proboscis_Monkey_in_Borneo.jpg" 84 | }); 85 | 86 | Monkeys.Add(new Animal 87 | { 88 | Name = "Red-shanked Douc", 89 | Location = "Vietnam, Laos", 90 | Details = "The red-shanked douc is a species of Old World monkey, among the most colourful of all primates. This monkey is sometimes called the \"costumed ape\" for its extravagant appearance. From its knees to its ankles it sports maroon-red \"stockings\", and it appears to wear white forearm length gloves. Its attire is finished with black hands and feet. The golden face is framed by a white ruff, which is considerably fluffier in males. The eyelids are a soft powder blue. The tail is white with a triangle of white hair at the base. Males of all ages have a white spot on both sides of the corners of the rump patch, and red and white genitals.", 91 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Portrait_of_a_Douc.jpg/159px-Portrait_of_a_Douc.jpg" 92 | }); 93 | 94 | Monkeys.Add(new Animal 95 | { 96 | Name = "Gray-shanked Douc", 97 | Location = "Vietnam", 98 | Details = "The gray-shanked douc langur is a douc species native to the Vietnamese provinces of Quảng Nam, Quảng Ngãi, Bình Định, Kon Tum, and Gia Lai. The total population is estimated at 550 to 700 individuals. In 2016, Dr Benjamin Rawson, Country Director of Fauna & Flora International - Vietnam Programme, announced a discovery of an additional population of more than 500 individuals found in Central Vietnam, bringing the total population up to approximately 1000 individuals.", 99 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Cuc.Phuong.Primate.Rehab.center.jpg/320px-Cuc.Phuong.Primate.Rehab.center.jpg" 100 | }); 101 | 102 | Monkeys.Add(new Animal 103 | { 104 | Name = "Golden Snub-nosed Monkey", 105 | Location = "China", 106 | Details = "The golden snub-nosed monkey is an Old World monkey in the Colobinae subfamily. It is endemic to a small area in temperate, mountainous forests of central and Southwest China. They inhabit these mountainous forests of Southwestern China at elevations of 1,500-3,400 m above sea level. The Chinese name is Sichuan golden hair monkey. It is also widely referred to as the Sichuan snub-nosed monkey. Of the three species of snub-nosed monkeys in China, the golden snub-nosed monkey is the most widely distributed throughout China.", 107 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Golden_Snub-nosed_Monkeys%2C_Qinling_Mountains_-_China.jpg/165px-Golden_Snub-nosed_Monkeys%2C_Qinling_Mountains_-_China.jpg" 108 | }); 109 | 110 | Monkeys.Add(new Animal 111 | { 112 | Name = "Black Snub-nosed Monkey", 113 | Location = "China", 114 | Details = "The black snub-nosed monkey, also known as the Yunnan snub-nosed monkey, is an endangered species of primate in the family Cercopithecidae. It is endemic to China, where it is known to the locals as the Yunnan golden hair monkey and the black golden hair monkey. It is threatened by habitat loss. It was named after Bishop Félix Biet.", 115 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/5/59/RhinopitecusBieti.jpg/320px-RhinopitecusBieti.jpg" 116 | }); 117 | 118 | Monkeys.Add(new Animal 119 | { 120 | Name = "Tonkin Snub-nosed Monkey", 121 | Location = "Vietnam", 122 | Details = "The Tonkin snub-nosed monkey or Dollman's snub-nosed monkey is a slender-bodied arboreal Old World monkey, endemic to northern Vietnam. It is a black and white monkey with a pink nose and lips and blue patches round the eyes. It is found at altitudes of 200 to 1,200 m (700 to 3,900 ft) on fragmentary patches of forest on craggy limestone areas. First described in 1912, the monkey was rediscovered in 1990 but is exceedingly rare. In 2008, fewer than 250 individuals were thought to exist, and the species was the subject of intense conservation effort. The main threats faced by these monkeys is habitat loss and hunting, and the International Union for Conservation of Nature has rated the species as \"critically endangered\".", 123 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Tonkin_snub-nosed_monkeys_%28Rhinopithecus_avunculus%29.jpg/320px-Tonkin_snub-nosed_monkeys_%28Rhinopithecus_avunculus%29.jpg" 124 | }); 125 | 126 | Monkeys.Add(new Animal 127 | { 128 | Name = "Thomas's Langur", 129 | Location = "Indonesia", 130 | Details = "Thomas's langur is a species of primate in the family Cercopithecidae. It is endemic to North Sumatra, Indonesia. Its natural habitat is subtropical or tropical dry forests. It is threatened by habitat loss. Its native names are reungkah in Acehnese and kedih in Alas.", 131 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Thomas%27s_langur_Presbytis_thomasi.jpg/142px-Thomas%27s_langur_Presbytis_thomasi.jpg" 132 | }); 133 | 134 | Monkeys.Add(new Animal 135 | { 136 | Name = "Purple-faced Langur", 137 | Location = "Sri Lanka", 138 | Details = "The purple-faced langur, also known as the purple-faced leaf monkey, is a species of Old World monkey that is endemic to Sri Lanka. The animal is a long-tailed arboreal species, identified by a mostly brown appearance, dark face (with paler lower face) and a very shy nature. The species was once highly prevalent, found in suburban Colombo and the \"wet zone\" villages (areas with high temperatures and high humidity throughout the year, whilst rain deluges occur during the monsoon seasons), but rapid urbanization has led to a significant decrease in the population level of the monkeys.", 139 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Semnopithèque_blanchâtre_mâle.JPG/192px-Semnopithèque_blanchâtre_mâle.JPG" 140 | }); 141 | 142 | Monkeys.Add(new Animal 143 | { 144 | Name = "Gelada", 145 | Location = "Ethiopia", 146 | Details = "The gelada, sometimes called the bleeding-heart monkey or the gelada baboon, is a species of Old World monkey found only in the Ethiopian Highlands, with large populations in the Semien Mountains. Theropithecus is derived from the Greek root words for \"beast-ape.\" Like its close relatives the baboons, it is largely terrestrial, spending much of its time foraging in grasslands.", 147 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Gelada-Pavian.jpg/320px-Gelada-Pavian.jpg" 148 | }); 149 | } 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Models/Animal.cs: -------------------------------------------------------------------------------- 1 | namespace Xaminals.Models 2 | { 3 | public class Animal 4 | { 5 | public string Name { get; set; } 6 | public string Location { get; set; } 7 | public string Details { get; set; } 8 | public string ImageUrl { get; set; } 9 | 10 | public override string ToString() 11 | { 12 | return Name; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/ViewModels/BearsViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | using System.Linq; 3 | using System.Windows.Input; 4 | using Xamarin.Forms; 5 | using Xaminals.Data; 6 | using Xaminals.Models; 7 | 8 | namespace Xaminals.ViewModels 9 | { 10 | public class BearsViewModel 11 | { 12 | public ObservableCollection SearchResults { get; private set; } 13 | 14 | public ICommand SearchCommand => new Command(SearchItems); 15 | 16 | void SearchItems(string query) 17 | { 18 | if (string.IsNullOrWhiteSpace(query)) 19 | { 20 | SearchResults = null; 21 | } 22 | else 23 | { 24 | var filteredItems = BearData.Bears 25 | .Where(bear => bear.Name.ToLower() 26 | .Contains(query.ToLower())) 27 | .ToList(); 28 | SearchResults = new ObservableCollection(filteredItems); 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/ViewModels/MonkeyDetailViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.ComponentModel; 3 | using System.Linq; 4 | using System.Runtime.CompilerServices; 5 | using Xamarin.Forms; 6 | using Xaminals.Data; 7 | using Xaminals.Models; 8 | 9 | namespace Xaminals.ViewModels 10 | { 11 | [QueryProperty(nameof(MonkeyName), "name")] 12 | public class MonkeyDetailViewModel : INotifyPropertyChanged 13 | { 14 | public string MonkeyName 15 | { 16 | set 17 | { 18 | Animal monkey = MonkeyData.Monkeys.FirstOrDefault(m => m.Name == Uri.UnescapeDataString(value)); 19 | 20 | if (monkey != null) 21 | { 22 | Name = monkey.Name; 23 | Location = monkey.Location; 24 | Details = monkey.Details; 25 | ImageUrl = monkey.ImageUrl; 26 | OnPropertyChanged(nameof(Name)); 27 | OnPropertyChanged(nameof(Location)); 28 | OnPropertyChanged(nameof(Details)); 29 | OnPropertyChanged(nameof(ImageUrl)); 30 | } 31 | } 32 | } 33 | 34 | public string Name { get; set; } 35 | public string Location { get; private set; } 36 | public string Details { get; private set; } 37 | public string ImageUrl { get; private set; } 38 | 39 | #region INotifyPropertyChanged 40 | 41 | public event PropertyChangedEventHandler PropertyChanged; 42 | 43 | void OnPropertyChanged([CallerMemberName] string propertyName = null) 44 | { 45 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 46 | } 47 | 48 | #endregion 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /sample/Xaminals/Xaminals/Views/AboutPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | #96d1ff 8 | #999999 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 23 | 25 | 28 | 29 | 30 | 31 | 32 | 35 | 49 | 68 |